Lines Matching defs:GD
34 llvm::Constant *CodeGenModule::GetAddrOfThunk(GlobalDecl GD,
36 const CXXMethodDecl *MD = cast<CXXMethodDecl>(GD.getDecl());
42 getCXXABI().getMangleContext().mangleCXXDtorThunk(DD, GD.getDtorType(),
48 llvm::Type *Ty = getTypes().GetFunctionTypeForVTable(GD);
49 return GetOrCreateLLVMFunction(Name, Ty, GD, /*ForVTable=*/true);
218 GlobalDecl GD, const ThunkInfo &Thunk) {
219 const CXXMethodDecl *MD = cast<CXXMethodDecl>(GD.getDecl());
226 llvm::Value *Callee = CGM.GetAddrOfFunction(GD, Ty, /*ForVTable=*/true);
287 GlobalDecl GD, const ThunkInfo &Thunk) {
288 const CXXMethodDecl *MD = cast<CXXMethodDecl>(GD.getDecl());
299 CurGD = GD;
340 CGM.getTypes().GetFunctionType(CGM.getTypes().arrangeGlobalDeclaration(GD));
341 llvm::Value *Callee = CGM.GetAddrOfFunction(GD, Ty, /*ForVTable=*/true);
388 void CodeGenVTables::EmitThunk(GlobalDecl GD, const ThunkInfo &Thunk,
391 const CGFunctionInfo &FnInfo = CGM.getTypes().arrangeGlobalDeclaration(GD);
394 llvm::Constant *Entry = CGM.GetAddrOfThunk(GD, Thunk);
405 CGM.getTypes().GetFunctionTypeForVTable(GD)) {
414 Entry = CGM.GetAddrOfThunk(GD, Thunk);
440 GD.getDecl()), ThunkFn);
444 CGM.SetLLVMFunctionAttributesForDefinition(GD.getDecl(), ThunkFn);
453 CodeGenFunction(CGM).GenerateVarArgsThunk(ThunkFn, FnInfo, GD, Thunk);
456 CodeGenFunction(CGM).GenerateThunk(ThunkFn, FnInfo, GD, Thunk);
463 void CodeGenVTables::MaybeEmitThunkAvailableExternally(GlobalDecl GD,
470 const CXXMethodDecl *MD = cast<CXXMethodDecl>(GD.getDecl());
475 EmitThunk(GD, Thunk, /*UseAvailableExternallyLinkage=*/true);
478 void CodeGenVTables::EmitThunks(GlobalDecl GD)
481 cast<CXXMethodDecl>(GD.getDecl())->getCanonicalDecl();
484 if (isa<CXXDestructorDecl>(MD) && GD.getDtorType() == Dtor_Base)
493 EmitThunk(GD, (*ThunkInfoVector)[I],
544 GlobalDecl GD;
551 GD = Component.getFunctionDecl();
554 GD = GlobalDecl(Component.getDestructorDecl(), Dtor_Complete);
557 GD = GlobalDecl(Component.getDestructorDecl(), Dtor_Deleting);
561 if (cast<CXXMethodDecl>(GD.getDecl())->isPure()) {
572 } else if (cast<CXXMethodDecl>(GD.getDecl())->isDeleted()) {
589 MaybeEmitThunkAvailableExternally(GD, Thunk);
590 Init = CGM.GetAddrOfThunk(GD, Thunk);
594 llvm::Type *Ty = CGM.getTypes().GetFunctionTypeForVTable(GD);
596 Init = CGM.GetAddrOfFunction(GD, Ty, /*ForVTable=*/true);