• Home
  • Raw
  • Download

Lines Matching refs:CGM

54   ItaniumCXXABI(CodeGen::CodeGenModule &CGM,  in ItaniumCXXABI()  argument
57 CGCXXABI(CGM), UseARMMethodPtrABI(UseARMMethodPtrABI), in ItaniumCXXABI()
158 unsigned Align = CGM.getContext().getTargetInfo().getExnObjectAlignment(); in getAlignmentOfExnObject()
159 return CGM.getContext().toCharUnitsFromBits(Align); in getAlignmentOfExnObject()
321 CodeGenModule &CGM,
368 CGM.getItaniumVTableContext().getVTableLayout(RD); in hasAnyUsedVirtualInlineFunction()
383 CGM.getItaniumVTableContext().getVTableLayout(RD); in isVTableHidden()
403 ARMCXXABI(CodeGen::CodeGenModule &CGM) : in ARMCXXABI() argument
404 ItaniumCXXABI(CGM, /* UseARMMethodPtrABI = */ true, in ARMCXXABI()
428 iOS64CXXABI(CodeGen::CodeGenModule &CGM) : ARMCXXABI(CGM) {} in iOS64CXXABI() argument
436 explicit WebAssemblyCXXABI(CodeGen::CodeGenModule &CGM) in WebAssemblyCXXABI() argument
437 : ItaniumCXXABI(CGM, /*UseARMMethodPtrABI=*/true, in WebAssemblyCXXABI()
450 CodeGen::CGCXXABI *CodeGen::CreateItaniumCXXABI(CodeGenModule &CGM) { in CreateItaniumCXXABI() argument
451 switch (CGM.getTarget().getCXXABI().getKind()) { in CreateItaniumCXXABI()
457 return new ARMCXXABI(CGM); in CreateItaniumCXXABI()
460 return new iOS64CXXABI(CGM); in CreateItaniumCXXABI()
466 return new ItaniumCXXABI(CGM, /* UseARMMethodPtrABI = */ true, in CreateItaniumCXXABI()
470 return new ItaniumCXXABI(CGM, /* UseARMMethodPtrABI = */ true); in CreateItaniumCXXABI()
473 return new WebAssemblyCXXABI(CGM); in CreateItaniumCXXABI()
476 if (CGM.getContext().getTargetInfo().getTriple().getArch() in CreateItaniumCXXABI()
481 return new ItaniumCXXABI(CGM, /* UseARMMethodPtrABI = */ true, in CreateItaniumCXXABI()
484 return new ItaniumCXXABI(CGM); in CreateItaniumCXXABI()
495 return CGM.PtrDiffTy; in ConvertMemberPointerType()
496 return llvm::StructType::get(CGM.PtrDiffTy, CGM.PtrDiffTy, nullptr); in ConvertMemberPointerType()
530 llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType( in EmitLoadOfMemberFunctionPointer()
531 CGM.getTypes().arrangeCXXMethodType(RD, FPT, /*FD=*/nullptr)); in EmitLoadOfMemberFunctionPointer()
533 llvm::Constant *ptrdiff_1 = llvm::ConstantInt::get(CGM.PtrDiffTy, 1); in EmitLoadOfMemberFunctionPointer()
576 CGF.CGM.getDynamicOffsetAlignment(ThisAddr.getAlignment(), RD, in EmitLoadOfMemberFunctionPointer()
613 assert(MemPtr->getType() == CGM.PtrDiffTy); in EmitMemberDataPointerAddress()
763 return llvm::ConstantInt::get(CGM.PtrDiffTy, -1ULL, /*isSigned=*/true); in EmitNullMemberPointer()
765 llvm::Constant *Zero = llvm::ConstantInt::get(CGM.PtrDiffTy, 0); in EmitNullMemberPointer()
776 return llvm::ConstantInt::get(CGM.PtrDiffTy, offset.getQuantity()); in EmitMemberDataPointer()
789 CodeGenTypes &Types = CGM.getTypes(); in BuildMemberPointer()
794 uint64_t Index = CGM.getItaniumVTableContext().getMethodVTableIndex(MD); in BuildMemberPointer()
808 MemPtr[0] = llvm::ConstantInt::get(CGM.PtrDiffTy, VTableOffset); in BuildMemberPointer()
809 MemPtr[1] = llvm::ConstantInt::get(CGM.PtrDiffTy, in BuildMemberPointer()
816 MemPtr[0] = llvm::ConstantInt::get(CGM.PtrDiffTy, VTableOffset + 1); in BuildMemberPointer()
817 MemPtr[1] = llvm::ConstantInt::get(CGM.PtrDiffTy, in BuildMemberPointer()
830 Ty = CGM.PtrDiffTy; in BuildMemberPointer()
832 llvm::Constant *addr = CGM.GetAddrOfFunction(MD, Ty); in BuildMemberPointer()
834 MemPtr[0] = llvm::ConstantExpr::getPtrToInt(addr, CGM.PtrDiffTy); in BuildMemberPointer()
835 MemPtr[1] = llvm::ConstantInt::get(CGM.PtrDiffTy, in BuildMemberPointer()
946 assert(MemPtr->getType() == CGM.PtrDiffTy); in EmitMemberPointerIsNotNull()
981 auto Align = CGM.getContext().getTypeAlignInChars(FI.getReturnType()); in classifyReturnType()
1042 llvm::FunctionType::get(CGM.VoidTy, /*IsVarArgs=*/false); in emitRethrow()
1044 llvm::Constant *Fn = CGM.CreateRuntimeFunction(FTy, "__cxa_rethrow"); in emitRethrow()
1052 static llvm::Constant *getAllocateExceptionFn(CodeGenModule &CGM) { in getAllocateExceptionFn() argument
1056 llvm::FunctionType::get(CGM.Int8PtrTy, CGM.SizeTy, /*IsVarArgs=*/false); in getAllocateExceptionFn()
1058 return CGM.CreateRuntimeFunction(FTy, "__cxa_allocate_exception"); in getAllocateExceptionFn()
1061 static llvm::Constant *getThrowFn(CodeGenModule &CGM) { in getThrowFn() argument
1065 llvm::Type *Args[3] = { CGM.Int8PtrTy, CGM.Int8PtrTy, CGM.Int8PtrTy }; in getThrowFn()
1067 llvm::FunctionType::get(CGM.VoidTy, Args, /*IsVarArgs=*/false); in getThrowFn()
1069 return CGM.CreateRuntimeFunction(FTy, "__cxa_throw"); in getThrowFn()
1078 llvm::Constant *AllocExceptionFn = getAllocateExceptionFn(CGM); in emitThrow()
1086 llvm::Constant *TypeInfo = CGM.GetAddrOfRTTIDescriptor(ThrowType, in emitThrow()
1096 Dtor = CGM.getAddrOfCXXStructor(DtorD, StructorType::Complete); in emitThrow()
1097 Dtor = llvm::ConstantExpr::getBitCast(Dtor, CGM.Int8PtrTy); in emitThrow()
1100 if (!Dtor) Dtor = llvm::Constant::getNullValue(CGM.Int8PtrTy); in emitThrow()
1103 CGF.EmitNoreturnRuntimeCallOrInvoke(getThrowFn(CGM), args); in emitThrow()
1126 return CGF.CGM.CreateRuntimeFunction(FTy, "__dynamic_cast", Attrs); in getItaniumDynamicCastFn()
1132 return CGF.CGM.CreateRuntimeFunction(FTy, "__cxa_bad_cast"); in getBadCastFn()
1191 return CGF.CGM.CreateRuntimeFunction(FTy, "__cxa_bad_typeid"); in getBadTypeidFn()
1232 CGF.CGM.GetAddrOfRTTIDescriptor(SrcRecordTy.getUnqualifiedType()); in EmitDynamicCastCall()
1234 CGF.CGM.GetAddrOfRTTIDescriptor(DestRecordTy.getUnqualifiedType()); in EmitDynamicCastCall()
1308 llvm::Value *VTablePtr = CGF.GetVTablePtr(This, CGM.Int8PtrTy, ClassDecl); in GetVirtualBaseClassOffset()
1310 CGM.getItaniumVTableContext().getVirtualBaseOffsetOffset(ClassDecl, in GetVirtualBaseClassOffset()
1317 CGM.PtrDiffTy->getPointerTo()); in GetVirtualBaseClassOffset()
1328 assert(CGM.getTarget().getCXXABI().hasConstructorVariants()); in EmitCXXConstructors()
1332 CGM.EmitGlobal(GlobalDecl(D, Ctor_Base)); in EmitCXXConstructors()
1338 CGM.EmitGlobal(GlobalDecl(D, Ctor_Complete)); in EmitCXXConstructors()
1359 CGM.EmitGlobal(GlobalDecl(D, Dtor_Base)); in EmitCXXDestructors()
1363 CGM.EmitGlobal(GlobalDecl(D, Dtor_Complete)); in EmitCXXDestructors()
1369 CGM.EmitGlobal(GlobalDecl(D, Dtor_Deleting)); in EmitCXXDestructors()
1442 Callee = CGM.getAddrOfCXXStructor(DD, getFromDtorType(Type)); in EmitDestructorCall()
1454 ItaniumVTableContext &VTContext = CGM.getItaniumVTableContext(); in emitVTableDefinitions()
1456 llvm::GlobalVariable::LinkageTypes Linkage = CGM.getVTableLinkage(RD); in emitVTableDefinitions()
1458 CGM.GetAddrOfRTTIDescriptor(CGM.getContext().getTagDeclType(RD)); in emitVTableDefinitions()
1469 if (CGM.supportsCOMDAT() && VTable->isWeakForLinker()) in emitVTableDefinitions()
1470 VTable->setComdat(CGM.getModule().getOrInsertComdat(VTable->getName())); in emitVTableDefinitions()
1473 CGM.setGlobalVisibility(VTable, RD); in emitVTableDefinitions()
1478 unsigned PAlign = CGM.getTarget().getPointerAlign(0); in emitVTableDefinitions()
1493 CGM.EmitVTableTypeMetadata(VTable, VTLayout); in emitVTableDefinitions()
1521 uint64_t AddressPoint = CGM.getItaniumVTableContext() in getVTableAddressPoint()
1525 llvm::ConstantInt::get(CGM.Int32Ty, 0), in getVTableAddressPoint()
1526 llvm::ConstantInt::get(CGM.Int32Ty, AddressPoint) in getVTableAddressPoint()
1541 CGM.getVTables().getSecondaryVirtualPointerIndex(VTableClass, Base); in getVTableAddressPointInStructorWithVTT()
1566 CGM.addDeferredVTable(RD); in getAddrOfVTable()
1572 ItaniumVTableContext &VTContext = CGM.getItaniumVTableContext(); in getAddrOfVTable()
1574 CGM.Int8PtrTy, VTContext.getVTableLayout(RD).getNumVTableComponents()); in getAddrOfVTable()
1576 VTable = CGM.CreateOrReplaceCXXRuntimeVariable( in getAddrOfVTable()
1598 uint64_t VTableIndex = CGM.getItaniumVTableContext().getMethodVTableIndex(GD); in getVirtualFunctionPointer()
1602 VTableIndex * CGM.getContext().getTargetInfo().getPointerWidth(0) / 8); in getVirtualFunctionPointer()
1618 const CGFunctionInfo *FInfo = &CGM.getTypes().arrangeCXXStructorDeclaration( in EmitVirtualDestructorCall()
1620 llvm::Type *Ty = CGF.CGM.getTypes().GetFunctionType(*FInfo); in EmitVirtualDestructorCall()
1632 CodeGenVTables &VTables = CGM.getVTables(); in emitVirtualInheritanceTables()
1634 VTables.EmitVTTDefinition(VTT, CGM.getVTableLinkage(RD), RD); in emitVirtualInheritanceTables()
1640 if (CGM.getLangOpts().AppleKext) in canSpeculativelyEmitVTable()
1732 return std::max(CharUnits::fromQuantity(CGM.SizeSizeInBytes), in getArrayCookieSizeImpl()
1733 CGM.getContext().getTypeAlignInChars(elementType)); in getArrayCookieSizeImpl()
1765 if (CGM.getLangOpts().Sanitize.has(SanitizerKind::Address) && AS == 0 && in InitializeArrayCookie()
1768 CGM.getSanitizerMetadata()->disableSanitizerForInstruction(SI); in InitializeArrayCookie()
1770 llvm::FunctionType::get(CGM.VoidTy, NumElementsPtr.getType(), false); in InitializeArrayCookie()
1772 CGM.CreateRuntimeFunction(FTy, "__asan_poison_cxx_array_cookie"); in InitializeArrayCookie()
1793 if (!CGM.getLangOpts().Sanitize.has(SanitizerKind::Address) || AS != 0) in readArrayCookieImpl()
1803 CGM.CreateRuntimeFunction(FTy, "__asan_load_cxx_array_cookie"); in readArrayCookieImpl()
1816 return std::max(CharUnits::fromQuantity(2 * CGM.SizeSizeInBytes), in getArrayCookieSizeImpl()
1817 CGM.getContext().getTypeAlignInChars(elementType)); in getArrayCookieSizeImpl()
1860 static llvm::Constant *getGuardAcquireFn(CodeGenModule &CGM, in getGuardAcquireFn() argument
1864 llvm::FunctionType::get(CGM.getTypes().ConvertType(CGM.getContext().IntTy), in getGuardAcquireFn()
1866 return CGM.CreateRuntimeFunction(FTy, "__cxa_guard_acquire", in getGuardAcquireFn()
1867 llvm::AttributeSet::get(CGM.getLLVMContext(), in getGuardAcquireFn()
1872 static llvm::Constant *getGuardReleaseFn(CodeGenModule &CGM, in getGuardReleaseFn() argument
1876 llvm::FunctionType::get(CGM.VoidTy, GuardPtrTy, /*isVarArg=*/false); in getGuardReleaseFn()
1877 return CGM.CreateRuntimeFunction(FTy, "__cxa_guard_release", in getGuardReleaseFn()
1878 llvm::AttributeSet::get(CGM.getLLVMContext(), in getGuardReleaseFn()
1883 static llvm::Constant *getGuardAbortFn(CodeGenModule &CGM, in getGuardAbortFn() argument
1887 llvm::FunctionType::get(CGM.VoidTy, GuardPtrTy, /*isVarArg=*/false); in getGuardAbortFn()
1888 return CGM.CreateRuntimeFunction(FTy, "__cxa_guard_abort", in getGuardAbortFn()
1889 llvm::AttributeSet::get(CGM.getLLVMContext(), in getGuardAbortFn()
1900 CGF.EmitNounwindRuntimeCall(getGuardAbortFn(CGF.CGM, Guard->getType()), in Emit()
1945 CGM.getDataLayout().getABITypeAlignment(guardTy)); in EmitGuardedInit()
1952 llvm::GlobalVariable *guard = CGM.getStaticLocalDeclGuardAddress(&D); in EmitGuardedInit()
1963 guard = new llvm::GlobalVariable(CGM.getModule(), guardTy, in EmitGuardedInit()
1977 CGM.getTarget().getTriple().isOSBinFormatELF()) { in EmitGuardedInit()
1984 } else if (CGM.supportsCOMDAT() && guard->isWeakForLinker()) { in EmitGuardedInit()
1985 guard->setComdat(CGM.getModule().getOrInsertComdat(guard->getName())); in EmitGuardedInit()
1988 CGM.setStaticLocalDeclGuardAddress(&D, guard); in EmitGuardedInit()
2012 Builder.CreateLoad(Builder.CreateElementBitCast(guardAddr, CGM.Int8Ty)); in EmitGuardedInit()
2045 ? Builder.CreateAnd(LI, llvm::ConstantInt::get(CGM.Int8Ty, 1)) in EmitGuardedInit()
2061 = CGF.EmitNounwindRuntimeCall(getGuardAcquireFn(CGM, guardPtrTy), guard); in EmitGuardedInit()
2082 CGF.EmitNounwindRuntimeCall(getGuardReleaseFn(CGM, guardPtrTy), in EmitGuardedInit()
2114 llvm::Constant *atexit = CGF.CGM.CreateRuntimeFunction(atexitTy, Name); in emitGlobalDtorWithCXAAtExit()
2120 CGF.CGM.CreateRuntimeVariable(CGF.Int8Ty, "__dso_handle"); in emitGlobalDtorWithCXAAtExit()
2136 if (CGM.getCodeGenOpts().CXAAtExit) in registerGlobalDtor()
2140 CGM.ErrorUnsupported(&D, "non-trivial TLS destruction"); in registerGlobalDtor()
2144 if (CGM.getLangOpts().AppleKext) { in registerGlobalDtor()
2146 return CGM.AddCXXDtorEntry(dtor, addr); in registerGlobalDtor()
2153 CodeGen::CodeGenModule &CGM) { in isThreadWrapperReplaceable() argument
2158 CGM.getTarget().getTriple().isOSDarwin(); in isThreadWrapperReplaceable()
2165 getThreadLocalWrapperLinkage(const VarDecl *VD, CodeGen::CodeGenModule &CGM) { in getThreadLocalWrapperLinkage() argument
2167 CGM.getLLVMLinkageVarDefinition(VD, /*isConstant=*/false); in getThreadLocalWrapperLinkage()
2174 if (isThreadWrapperReplaceable(VD, CGM)) in getThreadLocalWrapperLinkage()
2193 if (llvm::Value *V = CGM.getModule().getNamedValue(WrapperName)) in getOrCreateThreadLocalWrapper()
2200 const CGFunctionInfo &FI = CGM.getTypes().arrangeBuiltinFunctionDeclaration( in getOrCreateThreadLocalWrapper()
2203 llvm::FunctionType *FnTy = CGM.getTypes().GetFunctionType(FI); in getOrCreateThreadLocalWrapper()
2205 llvm::Function::Create(FnTy, getThreadLocalWrapperLinkage(VD, CGM), in getOrCreateThreadLocalWrapper()
2206 WrapperName.str(), &CGM.getModule()); in getOrCreateThreadLocalWrapper()
2208 CGM.SetLLVMFunctionAttributes(nullptr, FI, Wrapper); in getOrCreateThreadLocalWrapper()
2211 CGM.SetLLVMFunctionAttributesForDefinition(nullptr, Wrapper); in getOrCreateThreadLocalWrapper()
2214 if (!Wrapper->hasLocalLinkage() && !(isThreadWrapperReplaceable(VD, CGM) && in getOrCreateThreadLocalWrapper()
2219 if (isThreadWrapperReplaceable(VD, CGM)) { in getOrCreateThreadLocalWrapper()
2227 CodeGenModule &CGM, ArrayRef<const VarDecl *> CXXThreadLocals, in EmitThreadLocalInitFuncs() argument
2234 llvm::FunctionType::get(CGM.VoidTy, /*isVarArg=*/false); in EmitThreadLocalInitFuncs()
2235 const CGFunctionInfo &FI = CGM.getTypes().arrangeNullaryFunction(); in EmitThreadLocalInitFuncs()
2236 InitFunc = CGM.CreateGlobalInitOrDestructFunction(FTy, "__tls_init", FI, in EmitThreadLocalInitFuncs()
2240 CGM.getModule(), CGM.Int8Ty, /*isConstant=*/false, in EmitThreadLocalInitFuncs()
2242 llvm::ConstantInt::get(CGM.Int8Ty, 0), "__tls_guard"); in EmitThreadLocalInitFuncs()
2248 CodeGenFunction(CGM) in EmitThreadLocalInitFuncs()
2252 if (CGM.getTarget().getTriple().isOSDarwin()) { in EmitThreadLocalInitFuncs()
2259 cast<llvm::GlobalVariable>(CGM.GetGlobalValue(CGM.getMangledName(VD))); in EmitThreadLocalInitFuncs()
2264 if (isThreadWrapperReplaceable(VD, CGM) && !VD->hasDefinition()) in EmitThreadLocalInitFuncs()
2289 llvm::FunctionType *FnTy = llvm::FunctionType::get(CGM.VoidTy, false); in EmitThreadLocalInitFuncs()
2292 &CGM.getModule()); in EmitThreadLocalInitFuncs()
2293 const CGFunctionInfo &FI = CGM.getTypes().arrangeNullaryFunction(); in EmitThreadLocalInitFuncs()
2294 CGM.SetLLVMFunctionAttributes(nullptr, FI, cast<llvm::Function>(Init)); in EmitThreadLocalInitFuncs()
2301 llvm::LLVMContext &Context = CGM.getModule().getContext(); in EmitThreadLocalInitFuncs()
2303 CGBuilderTy Builder(CGM, Entry); in EmitThreadLocalInitFuncs()
2307 if (isThreadWrapperReplaceable(VD, CGM)) in EmitThreadLocalInitFuncs()
2328 CharUnits Align = CGM.getContext().getDeclAlign(VD); in EmitThreadLocalInitFuncs()
2341 llvm::Value *Val = CGF.CGM.GetAddrOfGlobalVar(VD); in EmitThreadLocalVarDeclLValue()
2345 if (isThreadWrapperReplaceable(VD, CGF.CGM)) in EmitThreadLocalVarDeclLValue()
2380 CodeGenModule &CGM; // Per-module state. member in __anon21d9f5bf0311::ItaniumRTTIBuilder
2421 : CGM(ABI.CGM), VMContext(CGM.getModule().getContext()), CXXABI(ABI) {} in ItaniumRTTIBuilder()
2471 CGM.getCXXABI().getMangleContext().mangleCXXRTTIName(Ty, Out); in GetAddrOfTypeName()
2480 CGM.CreateOrReplaceCXXRuntimeVariable(Name, Init->getType(), Linkage); in GetAddrOfTypeName()
2492 CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out); in GetAddrOfExternalRTTIDescriptor()
2495 llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(Name); in GetAddrOfExternalRTTIDescriptor()
2499 GV = new llvm::GlobalVariable(CGM.getModule(), CGM.Int8PtrTy, in GetAddrOfExternalRTTIDescriptor()
2510 return llvm::ConstantExpr::getBitCast(GV, CGM.Int8PtrTy); in GetAddrOfExternalRTTIDescriptor()
2621 static bool ShouldUseExternalRTTIDescriptor(CodeGenModule &CGM, in ShouldUseExternalRTTIDescriptor() argument
2623 ASTContext &Context = CGM.getContext(); in ShouldUseExternalRTTIDescriptor()
2642 if (CGM.getVTables().isVTableExternal(RD)) in ShouldUseExternalRTTIDescriptor()
2830 CGM.getModule().getOrInsertGlobal(VTableName, CGM.Int8PtrTy); in BuildVTablePointer()
2833 CGM.getTypes().ConvertType(CGM.getContext().getPointerDiffType()); in BuildVTablePointer()
2838 llvm::ConstantExpr::getInBoundsGetElementPtr(CGM.Int8PtrTy, VTable, Two); in BuildVTablePointer()
2839 VTable = llvm::ConstantExpr::getBitCast(VTable, CGM.Int8PtrTy); in BuildVTablePointer()
2846 static llvm::GlobalVariable::LinkageTypes getTypeInfoLinkage(CodeGenModule &CGM, in getTypeInfoLinkage() argument
2868 if (!CGM.getLangOpts().RTTI) { in getTypeInfoLinkage()
2879 llvm::GlobalValue::LinkageTypes LT = CGM.getVTableLinkage(RD); in getTypeInfoLinkage()
2902 CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out); in BuildTypeInfo()
2904 llvm::GlobalVariable *OldGV = CGM.getModule().getNamedGlobal(Name); in BuildTypeInfo()
2909 return llvm::ConstantExpr::getBitCast(OldGV, CGM.Int8PtrTy); in BuildTypeInfo()
2914 if (!Force && (IsStdLib || ShouldUseExternalRTTIDescriptor(CGM, Ty))) in BuildTypeInfo()
2922 Linkage = getTypeInfoLinkage(CGM, Ty); in BuildTypeInfo()
2938 TypeNameField = llvm::ConstantExpr::getPtrToInt(TypeName, CGM.Int64Ty); in BuildTypeInfo()
2940 llvm::ConstantInt::get(CGM.Int64Ty, ((uint64_t)1) << 63); in BuildTypeInfo()
2943 llvm::ConstantExpr::getIntToPtr(TypeNameField, CGM.Int8PtrTy); in BuildTypeInfo()
2945 TypeNameField = llvm::ConstantExpr::getBitCast(TypeName, CGM.Int8PtrTy); in BuildTypeInfo()
3036 llvm::Module &M = CGM.getModule(); in BuildTypeInfo()
3050 if (CGM.supportsCOMDAT() && GV->isWeakForLinker()) in BuildTypeInfo()
3081 return llvm::ConstantExpr::getBitCast(GV, CGM.Int8PtrTy); in BuildTypeInfo()
3116 QualType SuperTy = CGM.getContext().getObjCInterfaceType(Super); in BuildObjCObjectTypeInfo()
3200 CGM.getTypes().ConvertType(CGM.getContext().UnsignedIntTy); in BuildVMIClassTypeInfo()
3218 CGM.getTypes().ConvertType(CGM.getContext().LongTy); in BuildVMIClassTypeInfo()
3253 CGM.getItaniumVTableContext().getVirtualBaseOffsetOffset(RD, BaseDecl); in BuildVMIClassTypeInfo()
3255 const ASTRecordLayout &Layout = CGM.getContext().getASTRecordLayout(RD); in BuildVMIClassTypeInfo()
3277 CGM.getContext().getUnqualifiedArrayType(PointeeTy, Quals); in BuildPointerTypeInfo()
3291 CGM.getTypes().ConvertType(CGM.getContext().UnsignedIntTy); in BuildPointerTypeInfo()
3310 CGM.getContext().getUnqualifiedArrayType(PointeeTy, Quals); in BuildPointerToMemberTypeInfo()
3329 CGM.getTypes().ConvertType(CGM.getContext().UnsignedIntTy); in BuildPointerToMemberTypeInfo()
3410 static StructorCodegen getCodegenToUse(CodeGenModule &CGM, in getCodegenToUse() argument
3412 if (!CGM.getCodeGenOpts().CXXCtorDtorAliases) in getCodegenToUse()
3427 llvm::GlobalValue::LinkageTypes Linkage = CGM.getFunctionLinkage(AliasDecl); in getCodegenToUse()
3438 if (CGM.getTarget().getTriple().isOSBinFormatELF()) in getCodegenToUse()
3446 static void emitConstructorDestructorAlias(CodeGenModule &CGM, in emitConstructorDestructorAlias() argument
3449 llvm::GlobalValue::LinkageTypes Linkage = CGM.getFunctionLinkage(AliasDecl); in emitConstructorDestructorAlias()
3451 StringRef MangledName = CGM.getMangledName(AliasDecl); in emitConstructorDestructorAlias()
3452 llvm::GlobalValue *Entry = CGM.GetGlobalValue(MangledName); in emitConstructorDestructorAlias()
3456 auto *Aliasee = cast<llvm::GlobalValue>(CGM.GetAddrOfGlobal(TargetDecl)); in emitConstructorDestructorAlias()
3473 CGM.setAliasAttributes(cast<NamedDecl>(AliasDecl.getDecl()), Alias); in emitConstructorDestructorAlias()
3481 StructorCodegen CGType = getCodegenToUse(CGM, MD); in emitCXXStructor()
3495 emitConstructorDestructorAlias(CGM, CompleteDecl, BaseDecl); in emitCXXStructor()
3500 StringRef MangledName = CGM.getMangledName(CompleteDecl); in emitCXXStructor()
3501 auto *Aliasee = CGM.GetAddrOfGlobal(BaseDecl); in emitCXXStructor()
3502 CGM.addReplacement(MangledName, Aliasee); in emitCXXStructor()
3512 !CGM.TryEmitBaseDestructorAsAlias(DD)) in emitCXXStructor()
3515 llvm::Function *Fn = CGM.codegenCXXStructor(MD, Type); in emitCXXStructor()
3524 llvm::Comdat *C = CGM.getModule().getOrInsertComdat(Out.str()); in emitCXXStructor()
3527 CGM.maybeSetTrivialComdat(*MD, *Fn); in emitCXXStructor()
3531 static llvm::Constant *getBeginCatchFn(CodeGenModule &CGM) { in getBeginCatchFn() argument
3534 CGM.Int8PtrTy, CGM.Int8PtrTy, /*IsVarArgs=*/false); in getBeginCatchFn()
3536 return CGM.CreateRuntimeFunction(FTy, "__cxa_begin_catch"); in getBeginCatchFn()
3539 static llvm::Constant *getEndCatchFn(CodeGenModule &CGM) { in getEndCatchFn() argument
3542 llvm::FunctionType::get(CGM.VoidTy, /*IsVarArgs=*/false); in getEndCatchFn()
3544 return CGM.CreateRuntimeFunction(FTy, "__cxa_end_catch"); in getEndCatchFn()
3547 static llvm::Constant *getGetExceptionPtrFn(CodeGenModule &CGM) { in getGetExceptionPtrFn() argument
3550 CGM.Int8PtrTy, CGM.Int8PtrTy, /*IsVarArgs=*/false); in getGetExceptionPtrFn()
3552 return CGM.CreateRuntimeFunction(FTy, "__cxa_get_exception_ptr"); in getGetExceptionPtrFn()
3574 CGF.EmitNounwindRuntimeCall(getEndCatchFn(CGF.CGM)); in Emit()
3578 CGF.EmitRuntimeCallOrInvoke(getEndCatchFn(CGF.CGM)); in Emit()
3591 CGF.EmitNounwindRuntimeCall(getBeginCatchFn(CGF.CGM), Exn); in CallBeginCatch()
3608 CGF.CGM.getContext().getCanonicalType(CatchParam.getType()); in InitCatchParam()
3633 CGF.CGM.getTargetCodeGenInfo().getSizeOfUnwindException(); in InitCatchParam()
3726 CharUnits caughtExnAlignment = CGF.CGM.getClassPointerAlignment(catchRD); in InitCatchParam()
3744 CGF.EmitNounwindRuntimeCall(getGetExceptionPtrFn(CGF.CGM), Exn); in InitCatchParam()
3819 static llvm::Constant *getClangCallTerminateFn(CodeGenModule &CGM) { in getClangCallTerminateFn() argument
3821 llvm::FunctionType::get(CGM.VoidTy, CGM.Int8PtrTy, /*IsVarArgs=*/false); in getClangCallTerminateFn()
3823 CGM.CreateRuntimeFunction(fnTy, "__clang_call_terminate"); in getClangCallTerminateFn()
3839 if (CGM.supportsCOMDAT()) in getClangCallTerminateFn()
3840 fn->setComdat(CGM.getModule().getOrInsertComdat(fn->getName())); in getClangCallTerminateFn()
3844 llvm::BasicBlock::Create(CGM.getLLVMContext(), "", fn); in getClangCallTerminateFn()
3845 CGBuilderTy builder(CGM, entry); in getClangCallTerminateFn()
3851 llvm::CallInst *catchCall = builder.CreateCall(getBeginCatchFn(CGM), exn); in getClangCallTerminateFn()
3853 catchCall->setCallingConv(CGM.getRuntimeCC()); in getClangCallTerminateFn()
3856 llvm::CallInst *termCall = builder.CreateCall(CGM.getTerminateFn()); in getClangCallTerminateFn()
3859 termCall->setCallingConv(CGM.getRuntimeCC()); in getClangCallTerminateFn()
3873 assert(CGF.CGM.getLangOpts().CPlusPlus); in emitTerminateForUnexpectedException()
3874 return CGF.EmitNounwindRuntimeCall(getClangCallTerminateFn(CGF.CGM), Exn); in emitTerminateForUnexpectedException()
3876 return CGF.EmitNounwindRuntimeCall(CGF.CGM.getTerminateFn()); in emitTerminateForUnexpectedException()