Lines Matching refs:CGM

31 CodeGenVTables::CodeGenVTables(CodeGenModule &CGM)
32 : CGM(CGM), VTContext(CGM.getContext()) {
33 if (CGM.getTarget().getCXXABI().isMicrosoft()) {
37 VFTContext.reset(new MicrosoftVFTableContext(CGM.getContext()));
106 static void setThunkVisibility(CodeGenModule &CGM, const CXXMethodDecl *MD,
108 CGM.setGlobalVisibility(Fn, MD);
110 if (!CGM.getCodeGenOpts().HiddenWeakVTables)
232 llvm::Type *Ty = CGM.getTypes().GetFunctionType(FnInfo);
233 llvm::Value *Callee = CGM.GetAddrOfFunction(GD, Ty, /*ForVTable=*/true);
240 CGM.getModule().getFunctionList().push_back(NewFn);
251 if (CGM.ReturnTypeUsesSRet(FnInfo))
299 CGM.getCXXABI().HasThisReturn(GD) ? ThisType : FPT->getResultType();
308 CGM.getCXXABI().BuildInstanceFunctionParams(*this, ResultType, FunctionArgs);
324 CGM.getCXXABI().EmitInstanceFunctionProlog(*this);
348 CGM.getTypes().GetFunctionType(CGM.getTypes().arrangeGlobalDeclaration(GD));
349 llvm::Value *Callee = CGM.GetAddrOfFunction(GD, Ty, /*ForVTable=*/true);
353 CGM.getTypes().arrangeCXXMethodCall(CallArgs, FPT,
382 CGM.getCXXABI().EmitReturnFromThunk(*this, RV, ResultType);
390 CGM.setFunctionLinkage(GD, Fn);
393 setThunkVisibility(CGM, MD, Thunk, Fn);
399 if (CGM.getTarget().getCXXABI().isMicrosoft()) {
404 const CGFunctionInfo &FnInfo = CGM.getTypes().arrangeGlobalDeclaration(GD);
407 llvm::Constant *Entry = CGM.GetAddrOfThunk(GD, Thunk);
418 CGM.getTypes().GetFunctionTypeForVTable(GD)) {
427 Entry = CGM.GetAddrOfThunk(GD, Thunk);
453 CGM.setFunctionLinkage(GD, ThunkFn);
457 CGM.SetLLVMFunctionAttributesForDefinition(GD.getDecl(), ThunkFn);
466 CodeGenFunction(CGM).GenerateVarArgsThunk(ThunkFn, FnInfo, GD, Thunk);
469 CodeGenFunction(CGM).GenerateThunk(ThunkFn, FnInfo, GD, Thunk);
479 if (!CGM.getCodeGenOpts().OptimizationLevel)
484 if (!CGM.getTypes().isFuncTypeConvertible(
524 llvm::Type *Int8PtrTy = CGM.Int8PtrTy;
527 CGM.getTypes().ConvertType(CGM.getContext().getPointerDiffType());
529 QualType ClassType = CGM.getContext().getTagDeclType(RD);
530 llvm::Constant *RTTI = CGM.GetAddrOfRTTIDescriptor(ClassType);
584 llvm::FunctionType::get(CGM.VoidTy, /*isVarArg=*/false);
585 StringRef PureCallName = CGM.getCXXABI().GetPureVirtualCallName();
586 PureVirtualFn = CGM.CreateRuntimeFunction(Ty, PureCallName);
588 CGM.Int8PtrTy);
594 llvm::FunctionType::get(CGM.VoidTy, /*isVarArg=*/false);
596 CGM.getCXXABI().GetDeletedVirtualCallName();
597 DeletedVirtualFn = CGM.CreateRuntimeFunction(Ty, DeletedCallName);
599 CGM.Int8PtrTy);
609 Init = CGM.GetAddrOfThunk(GD, Thunk);
613 llvm::Type *Ty = CGM.getTypes().GetFunctionTypeForVTable(GD);
615 Init = CGM.GetAddrOfFunction(GD, Ty, /*ForVTable=*/true);
641 CGM.addDeferredVTable(RD);
645 CGM.getCXXABI().getMangleContext().mangleCXXVTable(RD, Out);
650 llvm::ArrayType::get(CGM.Int8PtrTy,
654 CGM.CreateOrReplaceCXXRuntimeVariable(Name, ArrayType,
679 CGM.setTypeVisibility(VTable, RD, CodeGenModule::TVK_ForVTable);
699 CGM.getCXXABI().getMangleContext().
706 llvm::ArrayType::get(CGM.Int8PtrTy, VTLayout->getNumVTableComponents());
718 CGM.CreateOrReplaceCXXRuntimeVariable(Name, ArrayType, Linkage);
719 CGM.setTypeVisibility(VTable, RD, CodeGenModule::TVK_ForConstructionVTable);
837 llvm::GlobalVariable::LinkageTypes Linkage = CGM.getVTableLinkage(RD);
841 CGM.getCXXABI().EmitVirtualInheritanceTables(Linkage, RD);
853 CGM.EmitFundamentalRTTIDescriptors();
883 const CXXMethodDecl *keyFunction = CGM.getContext().getCurrentKeyFunction(RD);
895 static bool shouldEmitVTableAtEndOfTranslationUnit(CodeGenModule &CGM,
904 if (CGM.getCodeGenOpts().OptimizationLevel && !CGM.getLangOpts().AppleKext)
907 return !CGM.getVTables().isVTableExternal(RD);