Lines Matching refs:CGM

64   ItaniumCXXABI(CodeGen::CodeGenModule &CGM,  in ItaniumCXXABI()  argument
67 CGCXXABI(CGM), UseARMMethodPtrABI(UseARMMethodPtrABI), in ItaniumCXXABI()
200 if (!CGM.getCodeGenOpts().AssumeUniqueVTables || in hasUniqueVTablePointer()
206 if (!CGM.shouldEmitRTTI()) in hasUniqueVTablePointer()
211 if (!llvm::GlobalValue::isWeakForLinker(CGM.getVTableLinkage(RD))) in hasUniqueVTablePointer()
219 if (CGM.GetLLVMVisibility(RD->getVisibility()) != in hasUniqueVTablePointer()
334 CGM.setGVProperties(Thunk, GD); in setThunkLinkage()
377 CodeGenModule &CGM,
437 CGM.getItaniumVTableContext().getVTableLayout(RD); in hasAnyUnusedVirtualInlineFunction()
448 StringRef Name = CGM.getMangledName(VtableComponent.getGlobalDecl()); in hasAnyUnusedVirtualInlineFunction()
449 auto *Entry = CGM.GetGlobalValue(Name); in hasAnyUnusedVirtualInlineFunction()
463 CGM.getItaniumVTableContext().getVTableLayout(RD); in isVTableHidden()
483 ARMCXXABI(CodeGen::CodeGenModule &CGM) : in ARMCXXABI() argument
484 ItaniumCXXABI(CGM, /*UseARMMethodPtrABI=*/true, in ARMCXXABI()
504 AppleARM64CXXABI(CodeGen::CodeGenModule &CGM) : ARMCXXABI(CGM) { in AppleARM64CXXABI() argument
514 explicit FuchsiaCXXABI(CodeGen::CodeGenModule &CGM) in FuchsiaCXXABI() argument
515 : ItaniumCXXABI(CGM) {} in FuchsiaCXXABI()
523 explicit WebAssemblyCXXABI(CodeGen::CodeGenModule &CGM) in WebAssemblyCXXABI() argument
524 : ItaniumCXXABI(CGM, /*UseARMMethodPtrABI=*/true, in WebAssemblyCXXABI()
538 explicit XLCXXABI(CodeGen::CodeGenModule &CGM) in XLCXXABI() argument
539 : ItaniumCXXABI(CGM) {} in XLCXXABI()
553 CodeGen::CGCXXABI *CodeGen::CreateItaniumCXXABI(CodeGenModule &CGM) { in CreateItaniumCXXABI() argument
554 switch (CGM.getContext().getCXXABIKind()) { in CreateItaniumCXXABI()
560 return new ARMCXXABI(CGM); in CreateItaniumCXXABI()
563 return new AppleARM64CXXABI(CGM); in CreateItaniumCXXABI()
566 return new FuchsiaCXXABI(CGM); in CreateItaniumCXXABI()
572 return new ItaniumCXXABI(CGM, /*UseARMMethodPtrABI=*/true, in CreateItaniumCXXABI()
576 return new ItaniumCXXABI(CGM, /*UseARMMethodPtrABI=*/true); in CreateItaniumCXXABI()
579 return new WebAssemblyCXXABI(CGM); in CreateItaniumCXXABI()
582 return new XLCXXABI(CGM); in CreateItaniumCXXABI()
585 if (CGM.getContext().getTargetInfo().getTriple().getArch() in CreateItaniumCXXABI()
590 return new ItaniumCXXABI(CGM, /*UseARMMethodPtrABI=*/true); in CreateItaniumCXXABI()
592 return new ItaniumCXXABI(CGM); in CreateItaniumCXXABI()
603 return CGM.PtrDiffTy; in ConvertMemberPointerType()
604 return llvm::StructType::get(CGM.PtrDiffTy, CGM.PtrDiffTy); in ConvertMemberPointerType()
638 llvm::Constant *ptrdiff_1 = llvm::ConstantInt::get(CGM.PtrDiffTy, 1); in EmitLoadOfMemberFunctionPointer()
677 llvm::Type *VTableTy = CGF.CGM.GlobalsInt8PtrTy; in EmitLoadOfMemberFunctionPointer()
679 CGF.CGM.getDynamicOffsetAlignment(ThisAddr.getAlignment(), RD, in EmitLoadOfMemberFunctionPointer()
692 VTableOffset = Builder.CreateZExt(VTableOffset, CGM.PtrDiffTy); in EmitLoadOfMemberFunctionPointer()
700 CGM.HasHiddenLTOVisibility(RD); in EmitLoadOfMemberFunctionPointer()
701 bool ShouldEmitVFEInfo = CGM.getCodeGenOpts().VirtualFunctionElimination && in EmitLoadOfMemberFunctionPointer()
702 CGM.HasHiddenLTOVisibility(RD); in EmitLoadOfMemberFunctionPointer()
704 CGM.getCodeGenOpts().WholeProgramVTables && in EmitLoadOfMemberFunctionPointer()
706 !CGM.AlwaysHasLTOVisibilityPublic(RD); in EmitLoadOfMemberFunctionPointer()
718 CGM.CreateMetadataIdentifierForVirtualMemPtrType(QualType(MPT, 0)); in EmitLoadOfMemberFunctionPointer()
732 CGM.getIntrinsic(llvm::Intrinsic::type_checked_load), in EmitLoadOfMemberFunctionPointer()
733 {VFPAddr, llvm::ConstantInt::get(CGM.Int32Ty, 0), TypeId}); in EmitLoadOfMemberFunctionPointer()
742 llvm::Intrinsic::ID IID = CGM.HasHiddenLTOVisibility(RD) in EmitLoadOfMemberFunctionPointer()
747 Builder.CreateCall(CGM.getIntrinsic(IID), {VFPAddr, TypeId}); in EmitLoadOfMemberFunctionPointer()
750 if (CGM.getItaniumVTableContext().isRelativeLayout()) { in EmitLoadOfMemberFunctionPointer()
752 CGM.getIntrinsic(llvm::Intrinsic::load_relative, in EmitLoadOfMemberFunctionPointer()
778 if (CGM.getCodeGenOpts().SanitizeTrap.has(SanitizerKind::CFIMFCall)) { in EmitLoadOfMemberFunctionPointer()
782 CGM.getLLVMContext(), in EmitLoadOfMemberFunctionPointer()
783 llvm::MDString::get(CGM.getLLVMContext(), "all-vtables")); in EmitLoadOfMemberFunctionPointer()
785 CGM.getIntrinsic(llvm::Intrinsic::type_test), {VTable, AllVtables}); in EmitLoadOfMemberFunctionPointer()
816 for (const CXXRecordDecl *Base : CGM.getMostBaseClasses(RD)) { in EmitLoadOfMemberFunctionPointer()
817 llvm::Metadata *MD = CGM.CreateMetadataIdentifierForType( in EmitLoadOfMemberFunctionPointer()
825 Builder.CreateCall(CGM.getIntrinsic(llvm::Intrinsic::type_test), in EmitLoadOfMemberFunctionPointer()
847 CGM.getCodeGenOpts().PointerAuth.CXXMemberFunctionPointers) { in EmitLoadOfMemberFunctionPointer()
852 CGM.getMemberFunctionPointerAuthInfo(QualType(MPT, 0)); in EmitLoadOfMemberFunctionPointer()
871 assert(MemPtr->getType() == CGM.PtrDiffTy); in EmitMemberDataPointerAddress()
883 const CGPointerAuthInfo &NewAuthInfo, CodeGenModule &CGM) { in pointerAuthResignConstant() argument
894 return CGM.getConstantSignedPointer( in pointerAuthResignConstant()
939 CGM.getMemberFunctionPointerAuthInfo(DstType)) { in EmitMemberPointerConversion()
942 const auto &CurAuthInfo = CGM.getMemberFunctionPointerAuthInfo(SrcType); in EmitMemberPointerConversion()
953 llvm::Constant *Ptrdiff_1 = llvm::ConstantInt::get(CGM.PtrDiffTy, 1); in EmitMemberPointerConversion()
960 llvm::Type *PtrTy = llvm::PointerType::getUnqual(CGM.Int8Ty); in EmitMemberPointerConversion()
1022 QualType SrcType, CodeGenModule &CGM) { in pointerAuthResignMemberFunctionPointer() argument
1029 const auto &NewAuthInfo = CGM.getMemberFunctionPointerAuthInfo(DestType); in pointerAuthResignMemberFunctionPointer()
1030 const auto &CurAuthInfo = CGM.getMemberFunctionPointerAuthInfo(SrcType); in pointerAuthResignMemberFunctionPointer()
1043 cast<llvm::User>(MemFnPtr)->getOperand(0), CurAuthInfo, NewAuthInfo, CGM); in pointerAuthResignMemberFunctionPointer()
1059 src, DstType, E->getSubExpr()->getType(), CGM); in EmitMemberPointerConversion()
1109 return llvm::ConstantInt::get(CGM.PtrDiffTy, -1ULL, /*isSigned=*/true); in EmitNullMemberPointer()
1111 llvm::Constant *Zero = llvm::ConstantInt::get(CGM.PtrDiffTy, 0); in EmitNullMemberPointer()
1122 return llvm::ConstantInt::get(CGM.PtrDiffTy, offset.getQuantity()); in EmitMemberDataPointer()
1134 CodeGenTypes &Types = CGM.getTypes(); in BuildMemberPointer()
1139 uint64_t Index = CGM.getItaniumVTableContext().getMethodVTableIndex(MD); in BuildMemberPointer()
1141 if (CGM.getItaniumVTableContext().isRelativeLayout()) { in BuildMemberPointer()
1174 CGM.getCodeGenOpts().PointerAuth.CXXMemberFunctionPointers; in BuildMemberPointer()
1177 getSignedVirtualMemberFunctionPointer(MD), CGM.PtrDiffTy); in BuildMemberPointer()
1179 MemPtr[0] = llvm::ConstantInt::get(CGM.PtrDiffTy, VTableOffset); in BuildMemberPointer()
1183 CGM.PtrDiffTy, 2 * ThisAdjustment.getQuantity() + !Schema); in BuildMemberPointer()
1189 MemPtr[0] = llvm::ConstantInt::get(CGM.PtrDiffTy, VTableOffset + 1); in BuildMemberPointer()
1190 MemPtr[1] = llvm::ConstantInt::get(CGM.PtrDiffTy, in BuildMemberPointer()
1203 Ty = CGM.PtrDiffTy; in BuildMemberPointer()
1205 llvm::Constant *addr = CGM.getMemberFunctionPointer(MD, Ty); in BuildMemberPointer()
1207 MemPtr[0] = llvm::ConstantExpr::getPtrToInt(addr, CGM.PtrDiffTy); in BuildMemberPointer()
1208 MemPtr[1] = llvm::ConstantInt::get(CGM.PtrDiffTy, in BuildMemberPointer()
1229 return pointerAuthResignMemberFunctionPointer(Src, MPType, SrcType, CGM); in EmitMemberPointer()
1323 assert(MemPtr->getType() == CGM.PtrDiffTy); in EmitMemberPointerIsNotNull()
1356 auto Align = CGM.getContext().getTypeAlignInChars(FI.getReturnType()); in classifyReturnType()
1416 llvm::FunctionType::get(CGM.VoidTy, /*isVarArg=*/false); in emitRethrow()
1418 llvm::FunctionCallee Fn = CGM.CreateRuntimeFunction(FTy, "__cxa_rethrow"); in emitRethrow()
1426 static llvm::FunctionCallee getAllocateExceptionFn(CodeGenModule &CGM) { in getAllocateExceptionFn() argument
1430 llvm::FunctionType::get(CGM.Int8PtrTy, CGM.SizeTy, /*isVarArg=*/false); in getAllocateExceptionFn()
1432 return CGM.CreateRuntimeFunction(FTy, "__cxa_allocate_exception"); in getAllocateExceptionFn()
1435 static llvm::FunctionCallee getThrowFn(CodeGenModule &CGM) { in getThrowFn() argument
1439 llvm::Type *Args[3] = { CGM.Int8PtrTy, CGM.GlobalsInt8PtrTy, CGM.Int8PtrTy }; in getThrowFn()
1441 llvm::FunctionType::get(CGM.VoidTy, Args, /*isVarArg=*/false); in getThrowFn()
1443 return CGM.CreateRuntimeFunction(FTy, "__cxa_throw"); in getThrowFn()
1452 llvm::FunctionCallee AllocExceptionFn = getAllocateExceptionFn(CGM); in emitThrow()
1458 E->getSubExpr(), Address(ExceptionPtr, CGM.Int8Ty, ExnAlign)); in emitThrow()
1461 llvm::Constant *TypeInfo = CGM.GetAddrOfRTTIDescriptor(ThrowType, in emitThrow()
1478 Dtor = CGM.getAddrOfCXXStructor(GlobalDecl(DtorD, Dtor_Complete)); in emitThrow()
1479 Dtor = CGM.getFunctionPointer(Dtor, DtorTy); in emitThrow()
1482 if (!Dtor) Dtor = llvm::Constant::getNullValue(CGM.Int8PtrTy); in emitThrow()
1485 CGF.EmitNoreturnRuntimeCallOrInvoke(getThrowFn(CGM), args); in emitThrow()
1511 return CGF.CGM.CreateRuntimeFunction(FTy, "__dynamic_cast", Attrs); in getItaniumDynamicCastFn()
1517 return CGF.CGM.CreateRuntimeFunction(FTy, "__cxa_bad_cast"); in getBadCastFn()
1576 return CGF.CGM.CreateRuntimeFunction(FTy, "__cxa_bad_typeid"); in getBadTypeidFn()
1596 llvm::Value *Value = CGF.GetVTablePtr(ThisPtr, CGM.GlobalsInt8PtrTy, in EmitTypeid()
1599 if (CGM.getItaniumVTableContext().isRelativeLayout()) { in EmitTypeid()
1602 CGM.getIntrinsic(llvm::Intrinsic::load_relative, {CGM.Int32Ty}), in EmitTypeid()
1603 {Value, llvm::ConstantInt::get(CGM.Int32Ty, -4)}); in EmitTypeid()
1625 CGF.CGM.GetAddrOfRTTIDescriptor(SrcRecordTy.getUnqualifiedType()); in emitDynamicCastCall()
1627 CGF.CGM.GetAddrOfRTTIDescriptor(DestRecordTy.getUnqualifiedType()); in emitDynamicCastCall()
1638 if (CGM.getCodeGenOpts().PointerAuth.CXXVTablePointers) { in emitDynamicCastCall()
1645 CGF.GetVTablePtr(ThisAddr, CGM.Int8PtrTy, SrcDecl, in emitDynamicCastCall()
1735 CGM.DecorateInstructionWithTBAA( in emitExactDynamicCast()
1736 VPtr, CGM.getTBAAVTablePtrAccessInfo(CGF.VoidPtrPtrTy)); in emitExactDynamicCast()
1754 if (CGM.getItaniumVTableContext().isRelativeLayout()) { in emitDynamicCastToVoid()
1761 CGF.Builder.CreateConstInBoundsGEP1_32(CGM.Int32Ty, VTable, -2U); in emitDynamicCastToVoid()
1763 CGM.Int32Ty, OffsetToTop, CharUnits::fromQuantity(4), "offset.to.top"); in emitDynamicCastToVoid()
1796 llvm::Value *VTablePtr = CGF.GetVTablePtr(This, CGM.Int8PtrTy, ClassDecl); in GetVirtualBaseClassOffset()
1798 CGM.getItaniumVTableContext().getVirtualBaseOffsetOffset(ClassDecl, in GetVirtualBaseClassOffset()
1806 if (CGM.getItaniumVTableContext().isRelativeLayout()) { in GetVirtualBaseClassOffset()
1812 CGM.PtrDiffTy, VBaseOffsetPtr, CGF.getPointerAlign(), "vbase.offset"); in GetVirtualBaseClassOffset()
1819 assert(CGM.getTarget().getCXXABI().hasConstructorVariants()); in EmitCXXConstructors()
1823 CGM.EmitGlobal(GlobalDecl(D, Ctor_Base)); in EmitCXXConstructors()
1829 CGM.EmitGlobal(GlobalDecl(D, Ctor_Complete)); in EmitCXXConstructors()
1845 LangAS AS = CGM.GetGlobalVarAddressSpace(nullptr); in buildStructorSignature()
1857 CGM.EmitGlobal(GlobalDecl(D, Dtor_Base)); in EmitCXXDestructors()
1861 CGM.EmitGlobal(GlobalDecl(D, Dtor_Complete)); in EmitCXXDestructors()
1867 CGM.EmitGlobal(GlobalDecl(D, Dtor_Deleting)); in EmitCXXDestructors()
1881 LangAS AS = CGM.GetGlobalVarAddressSpace(nullptr); in addImplicitStructorParams()
1930 LangAS AS = CGM.GetGlobalVarAddressSpace(nullptr); in getImplicitConstructorArgs()
1958 Callee = CGCallee::forDirect(CGM.getAddrOfCXXStructor(GD), GD); in EmitDestructorCall()
1980 static void setVTableSelectiveDLLImportExport(CodeGenModule &CGM, in setVTableSelectiveDLLImportExport() argument
1988 if (CGM.getVTables().isVTableExternal(RD)) { in setVTableSelectiveDLLImportExport()
2001 ItaniumVTableContext &VTContext = CGM.getItaniumVTableContext(); in emitVTableDefinitions()
2003 llvm::GlobalVariable::LinkageTypes Linkage = CGM.getVTableLinkage(RD); in emitVTableDefinitions()
2005 CGM.GetAddrOfRTTIDescriptor(CGM.getContext().getTagDeclType(RD)); in emitVTableDefinitions()
2008 ConstantInitBuilder builder(CGM); in emitVTableDefinitions()
2017 if (CGM.supportsCOMDAT() && VTable->isWeakForLinker()) in emitVTableDefinitions()
2018 VTable->setComdat(CGM.getModule().getOrInsertComdat(VTable->getName())); in emitVTableDefinitions()
2020 if (CGM.getTarget().hasPS4DLLImportExport()) in emitVTableDefinitions()
2021 setVTableSelectiveDLLImportExport(CGM, VTable, RD); in emitVTableDefinitions()
2024 CGM.setGVProperties(VTable, RD); in emitVTableDefinitions()
2043 CGM.getCodeGenOpts().WholeProgramVTables) { in emitVTableDefinitions()
2044 CGM.EmitVTableTypeMetadata(RD, VTable, VTLayout); in emitVTableDefinitions()
2049 assert(CGM.getCodeGenOpts().WholeProgramVTables); in emitVTableDefinitions()
2050 CGM.addCompilerUsedGlobal(VTable); in emitVTableDefinitions()
2088 CGM.getItaniumVTableContext().getVTableLayout(VTableClass); in getVTableAddressPoint()
2092 llvm::ConstantInt::get(CGM.Int32Ty, 0), in getVTableAddressPoint()
2093 llvm::ConstantInt::get(CGM.Int32Ty, AddressPoint.VTableIndex), in getVTableAddressPoint()
2094 llvm::ConstantInt::get(CGM.Int32Ty, AddressPoint.AddressPointIndex), in getVTableAddressPoint()
2100 CGM.getDataLayout().getTypeAllocSize(CGM.getVTableComponentType()); in getVTableAddressPoint()
2118 CGM.getVTables().getSecondaryVirtualPointerIndex(VTableClass, Base); in getVTableAddressPointInStructorWithVTT()
2131 if (auto &Schema = CGF.CGM.getCodeGenOpts().PointerAuth.CXXVTTVTablePointers) { in getVTableAddressPointInStructorWithVTT()
2150 CGM.addDeferredVTable(RD); in getAddrOfVTable()
2157 CGM.getItaniumVTableContext().getVTableLayout(RD); in getAddrOfVTable()
2158 llvm::Type *VTableType = CGM.getVTables().getVTableType(VTLayout); in getAddrOfVTable()
2163 LangAS AS = CGM.GetGlobalVarAddressSpace(nullptr); in getAddrOfVTable()
2164 unsigned PAlign = CGM.getItaniumVTableContext().isRelativeLayout() in getAddrOfVTable()
2166 : CGM.getTarget().getPointerAlign(AS); in getAddrOfVTable()
2168 VTable = CGM.CreateOrReplaceCXXRuntimeVariable( in getAddrOfVTable()
2173 if (CGM.getTarget().hasPS4DLLImportExport()) in getAddrOfVTable()
2174 setVTableSelectiveDLLImportExport(CGM, VTable, RD); in getAddrOfVTable()
2176 CGM.setGVProperties(VTable, RD); in getAddrOfVTable()
2185 llvm::Type *PtrTy = CGM.GlobalsInt8PtrTy; in getVirtualFunctionPointer()
2189 uint64_t VTableIndex = CGM.getItaniumVTableContext().getMethodVTableIndex(GD); in getVirtualFunctionPointer()
2191 auto &Schema = CGM.getCodeGenOpts().PointerAuth.CXXVirtualFunctionPointers; in getVirtualFunctionPointer()
2196 CGM.getContext().getTargetInfo().getPointerWidth(LangAS::Default) / in getVirtualFunctionPointer()
2202 if (CGM.getItaniumVTableContext().isRelativeLayout()) { in getVirtualFunctionPointer()
2204 CGM.getIntrinsic(llvm::Intrinsic::load_relative, {CGM.Int32Ty}), in getVirtualFunctionPointer()
2205 {VTable, llvm::ConstantInt::get(CGM.Int32Ty, 4 * VTableIndex)}); in getVirtualFunctionPointer()
2219 if (CGM.getCodeGenOpts().OptimizationLevel > 0 && in getVirtualFunctionPointer()
2220 CGM.getCodeGenOpts().StrictVTablePointers) { in getVirtualFunctionPointer()
2224 llvm::MDNode::get(CGM.getLLVMContext(), in getVirtualFunctionPointer()
2234 GD = CGM.getItaniumVTableContext().findOriginalMethod(GD.getCanonicalDecl()); in getVirtualFunctionPointer()
2252 &CGM.getTypes().arrangeCXXStructorDeclaration(GD); in EmitVirtualDestructorCall()
2253 llvm::FunctionType *Ty = CGF.CGM.getTypes().GetFunctionType(*FInfo); in EmitVirtualDestructorCall()
2269 CodeGenVTables &VTables = CGM.getVTables(); in emitVirtualInheritanceTables()
2271 VTables.EmitVTTDefinition(VTT, CGM.getVTableLinkage(RD), RD); in emitVirtualInheritanceTables()
2278 if (CGM.getLangOpts().AppleKext) in canSpeculativelyEmitVTableAsBaseClass()
2286 if (CGM.getCodeGenOpts().ForceEmitVTables) in canSpeculativelyEmitVTableAsBaseClass()
2360 if (CGF.CGM.getItaniumVTableContext().isRelativeLayout()) { in performTypeAdjustment()
2424 return std::max(CharUnits::fromQuantity(CGM.SizeSizeInBytes), in getArrayCookieSizeImpl()
2425 CGM.getContext().getPreferredTypeAlignInChars(elementType)); in getArrayCookieSizeImpl()
2456 if (CGM.getLangOpts().Sanitize.has(SanitizerKind::Address) && AS == 0 && in InitializeArrayCookie()
2458 CGM.getCodeGenOpts().SanitizeAddressPoisonCustomArrayCookie)) { in InitializeArrayCookie()
2462 llvm::FunctionType::get(CGM.VoidTy, NumElementsPtr.getType(), false); in InitializeArrayCookie()
2464 CGM.CreateRuntimeFunction(FTy, "__asan_poison_cxx_array_cookie"); in InitializeArrayCookie()
2485 if (!CGM.getLangOpts().Sanitize.has(SanitizerKind::Address) || AS != 0) in readArrayCookieImpl()
2495 CGM.CreateRuntimeFunction(FTy, "__asan_load_cxx_array_cookie"); in readArrayCookieImpl()
2508 return std::max(CharUnits::fromQuantity(2 * CGM.SizeSizeInBytes), in getArrayCookieSizeImpl()
2509 CGM.getContext().getTypeAlignInChars(elementType)); in getArrayCookieSizeImpl()
2552 static llvm::FunctionCallee getGuardAcquireFn(CodeGenModule &CGM, in getGuardAcquireFn() argument
2556 llvm::FunctionType::get(CGM.getTypes().ConvertType(CGM.getContext().IntTy), in getGuardAcquireFn()
2558 return CGM.CreateRuntimeFunction( in getGuardAcquireFn()
2560 llvm::AttributeList::get(CGM.getLLVMContext(), in getGuardAcquireFn()
2565 static llvm::FunctionCallee getGuardReleaseFn(CodeGenModule &CGM, in getGuardReleaseFn() argument
2569 llvm::FunctionType::get(CGM.VoidTy, GuardPtrTy, /*isVarArg=*/false); in getGuardReleaseFn()
2570 return CGM.CreateRuntimeFunction( in getGuardReleaseFn()
2572 llvm::AttributeList::get(CGM.getLLVMContext(), in getGuardReleaseFn()
2577 static llvm::FunctionCallee getGuardAbortFn(CodeGenModule &CGM, in getGuardAbortFn() argument
2581 llvm::FunctionType::get(CGM.VoidTy, GuardPtrTy, /*isVarArg=*/false); in getGuardAbortFn()
2582 return CGM.CreateRuntimeFunction( in getGuardAbortFn()
2584 llvm::AttributeList::get(CGM.getLLVMContext(), in getGuardAbortFn()
2595 CGF.EmitNounwindRuntimeCall(getGuardAbortFn(CGF.CGM, Guard->getType()), in Emit()
2640 CharUnits::fromQuantity(CGM.getDataLayout().getABITypeAlign(guardTy)); in EmitGuardedInit()
2644 CGF.CGM.getLLVMContext(), in EmitGuardedInit()
2645 CGF.CGM.getDataLayout().getDefaultGlobalsAddressSpace()); in EmitGuardedInit()
2649 llvm::GlobalVariable *guard = CGM.getStaticLocalDeclGuardAddress(&D); in EmitGuardedInit()
2661 guard = new llvm::GlobalVariable(CGM.getModule(), guardTy, in EmitGuardedInit()
2677 (CGM.getTarget().getTriple().isOSBinFormatELF() || in EmitGuardedInit()
2678 CGM.getTarget().getTriple().isOSBinFormatWasm())) { in EmitGuardedInit()
2680 } else if (CGM.supportsCOMDAT() && guard->isWeakForLinker()) { in EmitGuardedInit()
2681 guard->setComdat(CGM.getModule().getOrInsertComdat(guard->getName())); in EmitGuardedInit()
2684 CGM.setStaticLocalDeclGuardAddress(&D, guard); in EmitGuardedInit()
2715 Builder.CreateLoad(guardAddr.withElementType(CGM.Int8Ty)); in EmitGuardedInit()
2748 ? Builder.CreateAnd(LI, llvm::ConstantInt::get(CGM.Int8Ty, 1)) in EmitGuardedInit()
2780 = CGF.EmitNounwindRuntimeCall(getGuardAcquireFn(CGM, guardPtrTy), guard); in EmitGuardedInit()
2795 Builder.CreateStore(llvm::ConstantInt::get(CGM.Int8Ty, 1), in EmitGuardedInit()
2796 guardAddr.withElementType(CGM.Int8Ty)); in EmitGuardedInit()
2807 CGF.EmitNounwindRuntimeCall(getGuardReleaseFn(CGM, guardPtrTy), in EmitGuardedInit()
2813 Builder.CreateStore(llvm::ConstantInt::get(CGM.Int8Ty, 1), in EmitGuardedInit()
2814 guardAddr.withElementType(CGM.Int8Ty)); in EmitGuardedInit()
2845 CGF.CGM.CreateRuntimeVariable(CGF.Int8Ty, "__dso_handle"); in emitGlobalDtorWithCXAAtExit()
2855 llvm::FunctionCallee atexit = CGF.CGM.CreateRuntimeFunction(atexitTy, Name); in emitGlobalDtorWithCXAAtExit()
2859 const auto &Context = CGF.CGM.getContext(); in emitGlobalDtorWithCXAAtExit()
2865 dtorCallee = CGF.CGM.getFunctionPointer(dtorCallee, fnType); in emitGlobalDtorWithCXAAtExit()
2878 static llvm::Function *createGlobalInitOrCleanupFn(CodeGen::CodeGenModule &CGM, in createGlobalInitOrCleanupFn() argument
2882 llvm::FunctionType *FTy = llvm::FunctionType::get(CGM.VoidTy, false); in createGlobalInitOrCleanupFn()
2883 llvm::Function *GlobalInitOrCleanupFn = CGM.CreateGlobalInitOrCleanUpFunction( in createGlobalInitOrCleanupFn()
2884 FTy, FnName, CGM.getTypes().arrangeNullaryFunction(), SourceLocation()); in createGlobalInitOrCleanupFn()
2989 if (D.isNoDestroy(CGM.getContext())) in registerGlobalDtor()
2997 if (!CGM.getLangOpts().hasAtExit() && !D.isStaticLocal()) in registerGlobalDtor()
3004 if (CGM.getCodeGenOpts().CXAAtExit || D.getTLSKind()) in registerGlobalDtor()
3009 if (CGM.getLangOpts().AppleKext) { in registerGlobalDtor()
3011 return CGM.AddCXXDtorEntry(dtor, addr); in registerGlobalDtor()
3018 CodeGen::CodeGenModule &CGM) { in isThreadWrapperReplaceable() argument
3023 CGM.getTarget().getTriple().isOSDarwin(); in isThreadWrapperReplaceable()
3030 getThreadLocalWrapperLinkage(const VarDecl *VD, CodeGen::CodeGenModule &CGM) { in getThreadLocalWrapperLinkage() argument
3032 CGM.getLLVMLinkageVarDefinition(VD); in getThreadLocalWrapperLinkage()
3039 if (isThreadWrapperReplaceable(VD, CGM)) in getThreadLocalWrapperLinkage()
3058 if (llvm::Value *V = CGM.getModule().getNamedValue(WrapperName)) in getOrCreateThreadLocalWrapper()
3065 const CGFunctionInfo &FI = CGM.getTypes().arrangeBuiltinFunctionDeclaration( in getOrCreateThreadLocalWrapper()
3068 llvm::FunctionType *FnTy = CGM.getTypes().GetFunctionType(FI); in getOrCreateThreadLocalWrapper()
3070 llvm::Function::Create(FnTy, getThreadLocalWrapperLinkage(VD, CGM), in getOrCreateThreadLocalWrapper()
3071 WrapperName.str(), &CGM.getModule()); in getOrCreateThreadLocalWrapper()
3073 if (CGM.supportsCOMDAT() && Wrapper->isWeakForLinker()) in getOrCreateThreadLocalWrapper()
3074 Wrapper->setComdat(CGM.getModule().getOrInsertComdat(Wrapper->getName())); in getOrCreateThreadLocalWrapper()
3076 CGM.SetLLVMFunctionAttributes(GlobalDecl(), FI, Wrapper, /*IsThunk=*/false); in getOrCreateThreadLocalWrapper()
3080 if (!isThreadWrapperReplaceable(VD, CGM) || in getOrCreateThreadLocalWrapper()
3086 if (isThreadWrapperReplaceable(VD, CGM)) { in getOrCreateThreadLocalWrapper()
3096 CodeGenModule &CGM, ArrayRef<const VarDecl *> CXXThreadLocals, in EmitThreadLocalInitFuncs() argument
3117 llvm::FunctionType::get(CGM.VoidTy, /*isVarArg=*/false); in EmitThreadLocalInitFuncs()
3118 const CGFunctionInfo &FI = CGM.getTypes().arrangeNullaryFunction(); in EmitThreadLocalInitFuncs()
3119 InitFunc = CGM.CreateGlobalInitOrCleanUpFunction(FTy, "__tls_init", FI, in EmitThreadLocalInitFuncs()
3123 CGM.getModule(), CGM.Int8Ty, /*isConstant=*/false, in EmitThreadLocalInitFuncs()
3125 llvm::ConstantInt::get(CGM.Int8Ty, 0), "__tls_guard"); in EmitThreadLocalInitFuncs()
3127 Guard->setThreadLocalMode(CGM.GetDefaultLLVMTLSModel()); in EmitThreadLocalInitFuncs()
3132 CodeGenFunction(CGM).GenerateCXXGlobalInitFunc( in EmitThreadLocalInitFuncs()
3133 InitFunc, OrderedInits, ConstantAddress(Guard, CGM.Int8Ty, GuardAlign)); in EmitThreadLocalInitFuncs()
3135 if (CGM.getTarget().getTriple().isOSDarwin()) { in EmitThreadLocalInitFuncs()
3146 llvm::GlobalValue *GV = CGM.GetGlobalValue(CGM.getMangledName(VD)); in EmitThreadLocalInitFuncs()
3155 cast<llvm::GlobalVariable>(CGM.GetGlobalValue(CGM.getMangledName(VD))); in EmitThreadLocalInitFuncs()
3162 if (isThreadWrapperReplaceable(VD, CGM)) { in EmitThreadLocalInitFuncs()
3173 CGM.SetLLVMFunctionAttributesForDefinition(nullptr, Wrapper); in EmitThreadLocalInitFuncs()
3182 llvm::FunctionType *InitFnTy = llvm::FunctionType::get(CGM.VoidTy, false); in EmitThreadLocalInitFuncs()
3207 InitFnName.str(), &CGM.getModule()); in EmitThreadLocalInitFuncs()
3208 const CGFunctionInfo &FI = CGM.getTypes().arrangeNullaryFunction(); in EmitThreadLocalInitFuncs()
3209 CGM.SetLLVMFunctionAttributes( in EmitThreadLocalInitFuncs()
3216 if (!CGM.getTriple().isOSWindows() || !Init->hasExternalWeakLinkage()) in EmitThreadLocalInitFuncs()
3220 llvm::LLVMContext &Context = CGM.getModule().getContext(); in EmitThreadLocalInitFuncs()
3227 if (CGM.getTriple().isOSAIX() && VD->hasDefinition() && in EmitThreadLocalInitFuncs()
3237 InitFnTy, Var->getLinkage(), InitFnName.str(), &CGM.getModule()); in EmitThreadLocalInitFuncs()
3238 const CGFunctionInfo &FI = CGM.getTypes().arrangeNullaryFunction(); in EmitThreadLocalInitFuncs()
3239 CGM.SetLLVMFunctionAttributes(GlobalDecl(), FI, in EmitThreadLocalInitFuncs()
3244 CGBuilderTy Builder(CGM, Entry); in EmitThreadLocalInitFuncs()
3249 CGBuilderTy Builder(CGM, Entry); in EmitThreadLocalInitFuncs()
3255 if (isThreadWrapperReplaceable(VD, CGM)) { in EmitThreadLocalInitFuncs()
3262 } else if (CGM.getTriple().isOSAIX()) { in EmitThreadLocalInitFuncs()
3290 CharUnits Align = CGM.getContext().getDeclAlign(VD); in EmitThreadLocalInitFuncs()
3301 llvm::Value *Val = CGF.CGM.GetAddrOfGlobalVar(VD); in EmitThreadLocalVarDeclLValue()
3346 CGM.getModule().getNamedValue(ThunkName)))) in getOrCreateVirtualFunctionPointerThunk()
3349 const CGFunctionInfo &FnInfo = CGM.getTypes().arrangeCXXMethodDeclaration(MD); in getOrCreateVirtualFunctionPointerThunk()
3350 llvm::FunctionType *ThunkTy = CGM.getTypes().GetFunctionType(FnInfo); in getOrCreateVirtualFunctionPointerThunk()
3355 llvm::Function::Create(ThunkTy, Linkage, ThunkName, &CGM.getModule()); in getOrCreateVirtualFunctionPointerThunk()
3360 CGM.SetLLVMFunctionAttributes(MD, FnInfo, ThunkFn, /*IsThunk=*/true); in getOrCreateVirtualFunctionPointerThunk()
3361 CGM.SetLLVMFunctionAttributesForDefinition(MD, ThunkFn); in getOrCreateVirtualFunctionPointerThunk()
3369 CodeGenFunction CGF(CGM); in getOrCreateVirtualFunctionPointerThunk()
3389 CGM.getTypes().arrangeCXXMethodCall(CallArgs, FPT, Required, 0); in getOrCreateVirtualFunctionPointerThunk()
3411 CodeGenModule &CGM; // Per-module state. member in __anond94614940311::ItaniumRTTIBuilder
3452 : CGM(ABI.CGM), VMContext(CGM.getModule().getContext()), CXXABI(ABI) {} in ItaniumRTTIBuilder()
3514 CGM.getCXXABI().getMangleContext().mangleCXXRTTIName(Ty, Out); in GetAddrOfTypeName()
3521 auto Align = CGM.getContext().getTypeAlignInChars(CGM.getContext().CharTy); in GetAddrOfTypeName()
3523 llvm::GlobalVariable *GV = CGM.CreateOrReplaceCXXRuntimeVariable( in GetAddrOfTypeName()
3536 CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out); in GetAddrOfExternalRTTIDescriptor()
3539 llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(Name); in GetAddrOfExternalRTTIDescriptor()
3547 CGM.getModule(), CGM.GlobalsInt8PtrTy, in GetAddrOfExternalRTTIDescriptor()
3550 CGM.setGVProperties(GV, RD); in GetAddrOfExternalRTTIDescriptor()
3553 if (CGM.getTarget().hasPS4DLLImportExport()) { in GetAddrOfExternalRTTIDescriptor()
3556 CGM.setDSOLocal(GV); in GetAddrOfExternalRTTIDescriptor()
3714 static bool ShouldUseExternalRTTIDescriptor(CodeGenModule &CGM, in ShouldUseExternalRTTIDescriptor() argument
3716 ASTContext &Context = CGM.getContext(); in ShouldUseExternalRTTIDescriptor()
3737 if (CGM.getTriple().isWindowsGNUEnvironment()) in ShouldUseExternalRTTIDescriptor()
3740 if (CGM.getVTables().isVTableExternal(RD)) { in ShouldUseExternalRTTIDescriptor()
3741 if (CGM.getTarget().hasPS4DLLImportExport()) in ShouldUseExternalRTTIDescriptor()
3744 return IsDLLImport && !CGM.getTriple().isWindowsItaniumEnvironment() in ShouldUseExternalRTTIDescriptor()
3941 if (CGM.getItaniumVTableContext().isRelativeLayout()) in BuildVTablePointer()
3942 VTable = CGM.getModule().getNamedAlias(VTableName); in BuildVTablePointer()
3944 llvm::Type *Ty = llvm::ArrayType::get(CGM.GlobalsInt8PtrTy, 0); in BuildVTablePointer()
3945 VTable = CGM.getModule().getOrInsertGlobal(VTableName, Ty); in BuildVTablePointer()
3948 CGM.setDSOLocal(cast<llvm::GlobalValue>(VTable->stripPointerCasts())); in BuildVTablePointer()
3951 CGM.getTypes().ConvertType(CGM.getContext().getPointerDiffType()); in BuildVTablePointer()
3954 if (CGM.getItaniumVTableContext().isRelativeLayout()) { in BuildVTablePointer()
3957 llvm::Constant *Eight = llvm::ConstantInt::get(CGM.Int32Ty, 8); in BuildVTablePointer()
3959 llvm::ConstantExpr::getInBoundsGetElementPtr(CGM.Int8Ty, VTable, Eight); in BuildVTablePointer()
3962 VTable = llvm::ConstantExpr::getInBoundsGetElementPtr(CGM.GlobalsInt8PtrTy, in BuildVTablePointer()
3966 if (auto &Schema = CGM.getCodeGenOpts().PointerAuth.CXXTypeInfoVTablePointer) in BuildVTablePointer()
3967 VTable = CGM.getConstantSignedPointer(VTable, Schema, nullptr, GlobalDecl(), in BuildVTablePointer()
3975 static llvm::GlobalVariable::LinkageTypes getTypeInfoLinkage(CodeGenModule &CGM, in getTypeInfoLinkage() argument
4003 if (!CGM.getLangOpts().RTTI) in getTypeInfoLinkage()
4010 if (CGM.getTriple().isWindowsItaniumEnvironment()) in getTypeInfoLinkage()
4012 ShouldUseExternalRTTIDescriptor(CGM, Ty)) in getTypeInfoLinkage()
4016 !CGM.getContext() in getTypeInfoLinkage()
4020 return CGM.getVTableLinkage(RD); in getTypeInfoLinkage()
4036 CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out); in BuildTypeInfo()
4038 llvm::GlobalVariable *OldGV = CGM.getModule().getNamedGlobal(Name); in BuildTypeInfo()
4048 ShouldUseExternalRTTIDescriptor(CGM, Ty)) in BuildTypeInfo()
4052 llvm::GlobalVariable::LinkageTypes Linkage = getTypeInfoLinkage(CGM, Ty); in BuildTypeInfo()
4069 if ((CGM.getTriple().isWindowsItaniumEnvironment() && in BuildTypeInfo()
4071 (CGM.shouldMapVisibilityToDLLExport(RD) && in BuildTypeInfo()
4098 TypeNameField = llvm::ConstantExpr::getPtrToInt(TypeName, CGM.Int64Ty); in BuildTypeInfo()
4100 llvm::ConstantInt::get(CGM.Int64Ty, ((uint64_t)1) << 63); in BuildTypeInfo()
4103 llvm::ConstantExpr::getIntToPtr(TypeNameField, CGM.GlobalsInt8PtrTy); in BuildTypeInfo()
4204 CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out); in BuildTypeInfo()
4205 llvm::Module &M = CGM.getModule(); in BuildTypeInfo()
4213 if (CGM.getTarget().hasPS4DLLImportExport() && in BuildTypeInfo()
4230 if (CGM.supportsCOMDAT() && GV->isWeakForLinker()) in BuildTypeInfo()
4233 CharUnits Align = CGM.getContext().toCharUnitsFromBits( in BuildTypeInfo()
4234 CGM.getTarget().getPointerAlign(CGM.GetGlobalVarAddressSpace(nullptr))); in BuildTypeInfo()
4253 CGM.setDSOLocal(TypeName); in BuildTypeInfo()
4256 CGM.setDSOLocal(GV); in BuildTypeInfo()
4261 TypeName->setPartition(CGM.getCodeGenOpts().SymbolPartition); in BuildTypeInfo()
4262 GV->setPartition(CGM.getCodeGenOpts().SymbolPartition); in BuildTypeInfo()
4284 QualType SuperTy = CGM.getContext().getObjCInterfaceType(Super); in BuildObjCObjectTypeInfo()
4368 CGM.getTypes().ConvertType(CGM.getContext().UnsignedIntTy); in BuildVMIClassTypeInfo()
4408 QualType OffsetFlagsTy = CGM.getContext().LongTy; in BuildVMIClassTypeInfo()
4409 const TargetInfo &TI = CGM.getContext().getTargetInfo(); in BuildVMIClassTypeInfo()
4412 OffsetFlagsTy = CGM.getContext().LongLongTy; in BuildVMIClassTypeInfo()
4414 CGM.getTypes().ConvertType(OffsetFlagsTy); in BuildVMIClassTypeInfo()
4432 CGM.getItaniumVTableContext().getVirtualBaseOffsetOffset(RD, BaseDecl); in BuildVMIClassTypeInfo()
4434 const ASTRecordLayout &Layout = CGM.getContext().getASTRecordLayout(RD); in BuildVMIClassTypeInfo()
4486 unsigned Flags = extractPBaseFlags(CGM.getContext(), PointeeTy); in BuildPointerTypeInfo()
4489 CGM.getTypes().ConvertType(CGM.getContext().UnsignedIntTy); in BuildPointerTypeInfo()
4509 unsigned Flags = extractPBaseFlags(CGM.getContext(), PointeeTy); in BuildPointerToMemberTypeInfo()
4516 CGM.getTypes().ConvertType(CGM.getContext().UnsignedIntTy); in BuildPointerToMemberTypeInfo()
4556 RD->hasAttr<DLLExportAttr>() || CGM.shouldMapVisibilityToDLLExport(RD) in EmitFundamentalRTTIDescriptors()
4603 static StructorCodegen getCodegenToUse(CodeGenModule &CGM, in getCodegenToUse() argument
4605 if (!CGM.getCodeGenOpts().CXXCtorDtorAliases) in getCodegenToUse()
4620 llvm::GlobalValue::LinkageTypes Linkage = CGM.getFunctionLinkage(AliasDecl); in getCodegenToUse()
4631 if (CGM.getTarget().getTriple().isOSBinFormatELF() || in getCodegenToUse()
4632 CGM.getTarget().getTriple().isOSBinFormatWasm()) in getCodegenToUse()
4640 static void emitConstructorDestructorAlias(CodeGenModule &CGM, in emitConstructorDestructorAlias() argument
4643 llvm::GlobalValue::LinkageTypes Linkage = CGM.getFunctionLinkage(AliasDecl); in emitConstructorDestructorAlias()
4645 StringRef MangledName = CGM.getMangledName(AliasDecl); in emitConstructorDestructorAlias()
4646 llvm::GlobalValue *Entry = CGM.GetGlobalValue(MangledName); in emitConstructorDestructorAlias()
4650 auto *Aliasee = cast<llvm::GlobalValue>(CGM.GetAddrOfGlobal(TargetDecl)); in emitConstructorDestructorAlias()
4670 CGM.SetCommonAttributes(AliasDecl, Alias); in emitConstructorDestructorAlias()
4678 StructorCodegen CGType = getCodegenToUse(CGM, MD); in emitCXXStructor()
4689 emitConstructorDestructorAlias(CGM, GD, BaseDecl); in emitCXXStructor()
4694 StringRef MangledName = CGM.getMangledName(GD); in emitCXXStructor()
4695 auto *Aliasee = CGM.GetAddrOfGlobal(BaseDecl); in emitCXXStructor()
4696 CGM.addReplacement(MangledName, Aliasee); in emitCXXStructor()
4707 !CGM.TryEmitBaseDestructorAsAlias(DD)) in emitCXXStructor()
4722 llvm::Function *Fn = CGM.codegenCXXStructor(GD); in emitCXXStructor()
4731 llvm::Comdat *C = CGM.getModule().getOrInsertComdat(Out.str()); in emitCXXStructor()
4734 CGM.maybeSetTrivialComdat(*MD, *Fn); in emitCXXStructor()
4738 static llvm::FunctionCallee getBeginCatchFn(CodeGenModule &CGM) { in getBeginCatchFn() argument
4741 CGM.Int8PtrTy, CGM.Int8PtrTy, /*isVarArg=*/false); in getBeginCatchFn()
4743 return CGM.CreateRuntimeFunction(FTy, "__cxa_begin_catch"); in getBeginCatchFn()
4746 static llvm::FunctionCallee getEndCatchFn(CodeGenModule &CGM) { in getEndCatchFn() argument
4749 llvm::FunctionType::get(CGM.VoidTy, /*isVarArg=*/false); in getEndCatchFn()
4751 return CGM.CreateRuntimeFunction(FTy, "__cxa_end_catch"); in getEndCatchFn()
4754 static llvm::FunctionCallee getGetExceptionPtrFn(CodeGenModule &CGM) { in getGetExceptionPtrFn() argument
4757 CGM.Int8PtrTy, CGM.Int8PtrTy, /*isVarArg=*/false); in getGetExceptionPtrFn()
4759 return CGM.CreateRuntimeFunction(FTy, "__cxa_get_exception_ptr"); in getGetExceptionPtrFn()
4781 CGF.EmitNounwindRuntimeCall(getEndCatchFn(CGF.CGM)); in Emit()
4785 CGF.EmitRuntimeCallOrInvoke(getEndCatchFn(CGF.CGM)); in Emit()
4800 CGF.EmitNounwindRuntimeCall(getBeginCatchFn(CGF.CGM), Exn); in CallBeginCatch()
4804 EndMightThrow && !CGF.CGM.getLangOpts().AssumeNothrowExceptionDtor); in CallBeginCatch()
4819 CGF.CGM.getContext().getCanonicalType(CatchParam.getType()); in InitCatchParam()
4844 CGF.CGM.getTargetCodeGenInfo().getSizeOfUnwindException(); in InitCatchParam()
4934 CharUnits caughtExnAlignment = CGF.CGM.getClassPointerAlignment(catchRD); in InitCatchParam()
4954 CGF.EmitNounwindRuntimeCall(getGetExceptionPtrFn(CGF.CGM), Exn); in InitCatchParam()
5030 static llvm::FunctionCallee getClangCallTerminateFn(CodeGenModule &CGM) { in getClangCallTerminateFn() argument
5031 ASTContext &C = CGM.getContext(); in getClangCallTerminateFn()
5032 const CGFunctionInfo &FI = CGM.getTypes().arrangeBuiltinFunctionDeclaration( in getClangCallTerminateFn()
5034 llvm::FunctionType *fnTy = CGM.getTypes().GetFunctionType(FI); in getClangCallTerminateFn()
5035 llvm::FunctionCallee fnRef = CGM.CreateRuntimeFunction( in getClangCallTerminateFn()
5040 CGM.SetLLVMFunctionAttributes(GlobalDecl(), FI, fn, /*IsThunk=*/false); in getClangCallTerminateFn()
5041 CGM.SetLLVMFunctionAttributesForDefinition(nullptr, fn); in getClangCallTerminateFn()
5054 if (CGM.supportsCOMDAT()) in getClangCallTerminateFn()
5055 fn->setComdat(CGM.getModule().getOrInsertComdat(fn->getName())); in getClangCallTerminateFn()
5059 llvm::BasicBlock::Create(CGM.getLLVMContext(), "", fn); in getClangCallTerminateFn()
5060 CGBuilderTy builder(CGM, entry); in getClangCallTerminateFn()
5066 llvm::CallInst *catchCall = builder.CreateCall(getBeginCatchFn(CGM), exn); in getClangCallTerminateFn()
5068 catchCall->setCallingConv(CGM.getRuntimeCC()); in getClangCallTerminateFn()
5071 llvm::CallInst *termCall = builder.CreateCall(CGM.getTerminateFn()); in getClangCallTerminateFn()
5074 termCall->setCallingConv(CGM.getRuntimeCC()); in getClangCallTerminateFn()
5087 assert(CGF.CGM.getLangOpts().CPlusPlus); in emitTerminateForUnexpectedException()
5088 return CGF.EmitNounwindRuntimeCall(getClangCallTerminateFn(CGF.CGM), Exn); in emitTerminateForUnexpectedException()
5090 return CGF.EmitNounwindRuntimeCall(CGF.CGM.getTerminateFn()); in emitTerminateForUnexpectedException()
5096 return {CGF.GetVTablePtr(This, CGM.Int8PtrTy, RD), RD}; in LoadVTablePtr()
5102 cast<CXXMethodDecl>(CGM.getItaniumVTableContext() in getSignedVirtualMemberFunctionPointer()
5106 QualType funcType = CGM.getContext().getMemberPointerType( in getSignedVirtualMemberFunctionPointer()
5108 return CGM.getMemberFunctionPointer(thunk, funcType); in getSignedVirtualMemberFunctionPointer()
5140 llvm::FunctionType::get(CGM.IntTy, {CGM.IntTy, PtrTy}, true); in registerGlobalDtor()
5144 CGM.CreateRuntimeFunction(AtExitTy, "__pt_atexit_np"); in registerGlobalDtor()
5151 llvm::Value *NV = llvm::Constant::getNullValue(CGM.IntTy); in registerGlobalDtor()
5172 llvm::FunctionType *FTy = llvm::FunctionType::get(CGM.VoidTy, false); in emitCXXStermFinalizer()
5180 const CGFunctionInfo &FI = CGM.getTypes().arrangeNullaryFunction(); in emitCXXStermFinalizer()
5181 llvm::Function *StermFinalizer = CGM.CreateGlobalInitOrCleanUpFunction( in emitCXXStermFinalizer()
5184 CodeGenFunction CGF(CGM); in emitCXXStermFinalizer()
5186 CGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, StermFinalizer, FI, in emitCXXStermFinalizer()
5218 CGM.AddCXXPrioritizedStermFinalizerEntry(StermFinalizer, in emitCXXStermFinalizer()
5226 CGM.AddCXXStermFinalizerToGlobalDtor(StermFinalizer, 65535); in emitCXXStermFinalizer()
5228 CGM.AddCXXStermFinalizerEntry(StermFinalizer); in emitCXXStermFinalizer()