Lines Matching refs:MD
26 RValue CodeGenFunction::EmitCXXMemberCall(const CXXMethodDecl *MD,
35 assert(MD->isInstance() &&
41 EmitTypeCheck(isa<CXXConstructorDecl>(MD) ? TCK_ConstructorCall
43 CallLoc, This, getContext().getRecordType(MD->getParent()));
48 Args.add(RValue::get(This), MD->getThisType(getContext()));
55 const FunctionProtoType *FPT = MD->getType()->castAs<FunctionProtoType>();
62 Callee, ReturnValue, Args, MD);
94 const CXXMethodDecl *MD) {
117 if (MD->hasAttr<FinalAttr>())
122 if (MD->getParent()->hasAttr<FinalAttr>())
176 const CXXMethodDecl *MD = cast<CXXMethodDecl>(ME->getMemberDecl());
185 MD->getParent()->getLocation());
189 if (MD->isStatic()) {
191 llvm::Value *Callee = CGM.GetAddrOfFunction(MD);
192 return EmitCall(getContext().getPointerType(MD->getType()), Callee,
198 bool CanUseVirtualCall = MD->isVirtual() && !ME->hasQualifier();
202 canDevirtualizeMemberFunctionCalls(getContext(), Base, MD)) {
204 DevirtualizedMethod = MD->getCorrespondingMethodInClass(BestDynamicDecl);
222 // type of MD and has a prefix.
226 MD->getResultType().getCanonicalType())
237 if (MD->isTrivial()) {
238 if (isa<CXXDestructorDecl>(MD)) return RValue::get(0);
239 if (isa<CXXConstructorDecl>(MD) &&
240 cast<CXXConstructorDecl>(MD)->isDefaultConstructor())
243 if (MD->isCopyAssignmentOperator() || MD->isMoveAssignmentOperator()) {
251 if (isa<CXXConstructorDecl>(MD) &&
252 cast<CXXConstructorDecl>(MD)->isCopyOrMoveConstructor()) {
255 EmitSynthesizedCXXCopyCtorCall(cast<CXXConstructorDecl>(MD), This, RHS,
263 const CXXMethodDecl *CalleeDecl = DevirtualizedMethod ? DevirtualizedMethod : MD;
285 if (const CXXDestructorDecl *Dtor = dyn_cast<CXXDestructorDecl>(MD)) {
295 MD->isVirtual() &&
297 Callee = BuildAppleKextVirtualCall(MD, ME->getQualifier(), Ty);
307 dyn_cast<CXXConstructorDecl>(MD)) {
310 Callee = BuildVirtualCall(MD, This, Ty);
313 MD->isVirtual() &&
315 Callee = BuildAppleKextVirtualCall(MD, ME->getQualifier(), Ty);
317 Callee = CGM.GetAddrOfFunction(MD, Ty);
323 return EmitCXXMemberCall(MD, CE->getExprLoc(), Callee, ReturnValue, This,
380 const CXXMethodDecl *MD,
382 assert(MD->isInstance() &&
387 if ((MD->isCopyAssignmentOperator() || MD->isMoveAssignmentOperator()) &&
388 MD->isTrivial()) {
395 llvm::Value *Callee = EmitCXXOperatorMemberCallee(E, MD, This);
396 return EmitCXXMemberCall(MD, E->getExprLoc(), Callee, ReturnValue, This,