reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
32 return llvm::Constant::getNullValue(CGM.getTypes().ConvertType(T)); 37 return CGM.getTypes().ConvertType(CGM.getContext().getPointerDiffType()); 37 return CGM.getTypes().ConvertType(CGM.getContext().getPointerDiffType()); 51 llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType( 52 CGM.getTypes().arrangeCXXMethodType(RD, FPT, /*FD=*/nullptr)); 103 return GetBogusMemberPointer(CGM.getContext().getMemberPointerType( 127 CGM.getContext(), nullptr, MD->getLocation(), 128 &CGM.getContext().Idents.get("this"), MD->getThisType(), 246 return CGM.GetNonVirtualBaseClassOffset(derivedClass, 276 if (CGM.getTarget().getCXXABI().hasConstructorVariants()) 287 CGM.setDLLImportDLLExport(GV, Dtor); 293 return CGM.getLLVMLinkageForDeclarator(Dtor, Linkage,tools/clang/lib/CodeGen/CGCXXABI.h
80 ASTContext &getContext() const { return CGM.getContext(); }
tools/clang/lib/CodeGen/ItaniumCXXABI.cpp283 CGM.setGVProperties(Thunk, GD); 411 CGM.getItaniumVTableContext().getVTableLayout(RD); 422 StringRef Name = CGM.getMangledName(VtableComponent.getGlobalDecl()); 423 auto *Entry = CGM.GetGlobalValue(Name); 437 CGM.getItaniumVTableContext().getVTableLayout(RD); 551 return CGM.PtrDiffTy; 552 return llvm::StructType::get(CGM.PtrDiffTy, CGM.PtrDiffTy); 552 return llvm::StructType::get(CGM.PtrDiffTy, CGM.PtrDiffTy); 586 llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType( 587 CGM.getTypes().arrangeCXXMethodType(RD, FPT, /*FD=*/nullptr)); 589 llvm::Constant *ptrdiff_1 = llvm::ConstantInt::get(CGM.PtrDiffTy, 1); 645 VTableOffset = Builder.CreateZExt(VTableOffset, CGM.PtrDiffTy); 653 CGM.HasHiddenLTOVisibility(RD); 654 bool ShouldEmitVFEInfo = CGM.getCodeGenOpts().VirtualFunctionElimination && 655 CGM.HasHiddenLTOVisibility(RD); 666 CGM.CreateMetadataIdentifierForVirtualMemPtrType(QualType(MPT, 0)); 679 CGM.getIntrinsic(llvm::Intrinsic::type_checked_load), 680 {VFPAddr, llvm::ConstantInt::get(CGM.Int32Ty, 0), TypeId}); 690 CGM.getIntrinsic(llvm::Intrinsic::type_test), 712 if (CGM.getCodeGenOpts().SanitizeTrap.has(SanitizerKind::CFIMFCall)) { 716 CGM.getLLVMContext(), 717 llvm::MDString::get(CGM.getLLVMContext(), "all-vtables")); 719 CGM.getIntrinsic(llvm::Intrinsic::type_test), {VTable, AllVtables}); 752 for (const CXXRecordDecl *Base : CGM.getMostBaseClasses(RD)) { 753 llvm::Metadata *MD = CGM.CreateMetadataIdentifierForType( 761 Builder.CreateCall(CGM.getIntrinsic(llvm::Intrinsic::type_test), 789 assert(MemPtr->getType() == CGM.PtrDiffTy); 939 return llvm::ConstantInt::get(CGM.PtrDiffTy, -1ULL, /*isSigned=*/true); 941 llvm::Constant *Zero = llvm::ConstantInt::get(CGM.PtrDiffTy, 0); 952 return llvm::ConstantInt::get(CGM.PtrDiffTy, offset.getQuantity()); 964 CodeGenTypes &Types = CGM.getTypes(); 969 uint64_t Index = CGM.getItaniumVTableContext().getMethodVTableIndex(MD); 983 MemPtr[0] = llvm::ConstantInt::get(CGM.PtrDiffTy, VTableOffset); 984 MemPtr[1] = llvm::ConstantInt::get(CGM.PtrDiffTy, 991 MemPtr[0] = llvm::ConstantInt::get(CGM.PtrDiffTy, VTableOffset + 1); 992 MemPtr[1] = llvm::ConstantInt::get(CGM.PtrDiffTy, 1005 Ty = CGM.PtrDiffTy; 1007 llvm::Constant *addr = CGM.GetAddrOfFunction(MD, Ty); 1009 MemPtr[0] = llvm::ConstantExpr::getPtrToInt(addr, CGM.PtrDiffTy); 1010 MemPtr[1] = llvm::ConstantInt::get(CGM.PtrDiffTy, 1121 assert(MemPtr->getType() == CGM.PtrDiffTy); 1154 auto Align = CGM.getContext().getTypeAlignInChars(FI.getReturnType()); 1215 llvm::FunctionType::get(CGM.VoidTy, /*isVarArg=*/false); 1217 llvm::FunctionCallee Fn = CGM.CreateRuntimeFunction(FTy, "__cxa_rethrow"); 1251 llvm::FunctionCallee AllocExceptionFn = getAllocateExceptionFn(CGM); 1259 llvm::Constant *TypeInfo = CGM.GetAddrOfRTTIDescriptor(ThrowType, 1269 Dtor = CGM.getAddrOfCXXStructor(GlobalDecl(DtorD, Dtor_Complete)); 1270 Dtor = llvm::ConstantExpr::getBitCast(Dtor, CGM.Int8PtrTy); 1273 if (!Dtor) Dtor = llvm::Constant::getNullValue(CGM.Int8PtrTy); 1276 CGF.EmitNoreturnRuntimeCallOrInvoke(getThrowFn(CGM), args); 1483 llvm::Value *VTablePtr = CGF.GetVTablePtr(This, CGM.Int8PtrTy, ClassDecl); 1485 CGM.getItaniumVTableContext().getVirtualBaseOffsetOffset(ClassDecl, 1492 CGM.PtrDiffTy->getPointerTo()); 1503 assert(CGM.getTarget().getCXXABI().hasConstructorVariants()); 1507 CGM.EmitGlobal(GlobalDecl(D, Ctor_Base)); 1513 CGM.EmitGlobal(GlobalDecl(D, Ctor_Complete)); 1539 CGM.EmitGlobal(GlobalDecl(D, Dtor_Base)); 1543 CGM.EmitGlobal(GlobalDecl(D, Dtor_Complete)); 1549 CGM.EmitGlobal(GlobalDecl(D, Dtor_Deleting)); 1627 Callee = CGCallee::forDirect(CGM.getAddrOfCXXStructor(GD), GD); 1639 ItaniumVTableContext &VTContext = CGM.getItaniumVTableContext(); 1641 llvm::GlobalVariable::LinkageTypes Linkage = CGM.getVTableLinkage(RD); 1643 CGM.GetAddrOfRTTIDescriptor(CGM.getContext().getTagDeclType(RD)); 1643 CGM.GetAddrOfRTTIDescriptor(CGM.getContext().getTagDeclType(RD)); 1646 ConstantInitBuilder Builder(CGM); 1654 if (CGM.supportsCOMDAT() && VTable->isWeakForLinker()) 1655 VTable->setComdat(CGM.getModule().getOrInsertComdat(VTable->getName())); 1658 CGM.setGVProperties(VTable, RD); 1672 CGM.EmitVTableTypeMetadata(RD, VTable, VTLayout); 1702 CGM.getItaniumVTableContext() 1706 llvm::ConstantInt::get(CGM.Int32Ty, 0), 1707 llvm::ConstantInt::get(CGM.Int32Ty, AddressPoint.VTableIndex), 1708 llvm::ConstantInt::get(CGM.Int32Ty, AddressPoint.AddressPointIndex), 1724 CGM.getVTables().getSecondaryVirtualPointerIndex(VTableClass, Base); 1749 CGM.addDeferredVTable(RD); 1756 CGM.getItaniumVTableContext().getVTableLayout(RD); 1757 llvm::Type *VTableType = CGM.getVTables().getVTableType(VTLayout); 1762 unsigned PAlign = CGM.getTarget().getPointerAlign(0); 1764 VTable = CGM.CreateOrReplaceCXXRuntimeVariable( 1769 CGM.setGVProperties(VTable, RD); 1783 uint64_t VTableIndex = CGM.getItaniumVTableContext().getMethodVTableIndex(GD); 1788 VTableIndex * CGM.getContext().getTargetInfo().getPointerWidth(0) / 8); 1803 if (CGM.getCodeGenOpts().OptimizationLevel > 0 && 1804 CGM.getCodeGenOpts().StrictVTablePointers) 1807 llvm::MDNode::get(CGM.getLLVMContext(), 1827 &CGM.getTypes().arrangeCXXStructorDeclaration(GD); 1844 CodeGenVTables &VTables = CGM.getVTables(); 1846 VTables.EmitVTTDefinition(VTT, CGM.getVTableLinkage(RD), RD); 1853 if (CGM.getLangOpts().AppleKext) 1861 if (CGM.getCodeGenOpts().ForceEmitVTables) 1989 return std::max(CharUnits::fromQuantity(CGM.SizeSizeInBytes), 1990 CGM.getContext().getTypeAlignInChars(elementType)); 2022 if (CGM.getLangOpts().Sanitize.has(SanitizerKind::Address) && AS == 0 && 2024 CGM.getCodeGenOpts().SanitizeAddressPoisonCustomArrayCookie)) { 2026 CGM.getSanitizerMetadata()->disableSanitizerForInstruction(SI); 2028 llvm::FunctionType::get(CGM.VoidTy, NumElementsPtr.getType(), false); 2030 CGM.CreateRuntimeFunction(FTy, "__asan_poison_cxx_array_cookie"); 2051 if (!CGM.getLangOpts().Sanitize.has(SanitizerKind::Address) || AS != 0) 2061 CGM.CreateRuntimeFunction(FTy, "__asan_load_cxx_array_cookie"); 2074 return std::max(CharUnits::fromQuantity(2 * CGM.SizeSizeInBytes), 2075 CGM.getContext().getTypeAlignInChars(elementType)); 2206 CGM.getDataLayout().getABITypeAlignment(guardTy)); 2213 llvm::GlobalVariable *guard = CGM.getStaticLocalDeclGuardAddress(&D); 2224 guard = new llvm::GlobalVariable(CGM.getModule(), guardTy, 2239 (CGM.getTarget().getTriple().isOSBinFormatELF() || 2240 CGM.getTarget().getTriple().isOSBinFormatWasm())) { 2247 } else if (CGM.supportsCOMDAT() && guard->isWeakForLinker()) { 2248 guard->setComdat(CGM.getModule().getOrInsertComdat(guard->getName())); 2251 CGM.setStaticLocalDeclGuardAddress(&D, guard); 2275 Builder.CreateLoad(Builder.CreateElementBitCast(guardAddr, CGM.Int8Ty)); 2308 ? Builder.CreateAnd(LI, llvm::ConstantInt::get(CGM.Int8Ty, 1)) 2325 = CGF.EmitNounwindRuntimeCall(getGuardAcquireFn(CGM, guardPtrTy), guard); 2346 CGF.EmitNounwindRuntimeCall(getGuardReleaseFn(CGM, guardPtrTy), 2456 if (D.isNoDestroy(CGM.getContext())) 2463 if (CGM.getCodeGenOpts().CXAAtExit || D.getTLSKind()) 2468 if (CGM.getLangOpts().AppleKext) { 2470 return CGM.AddCXXDtorEntry(dtor, addr); 2517 if (llvm::Value *V = CGM.getModule().getNamedValue(WrapperName)) 2524 const CGFunctionInfo &FI = CGM.getTypes().arrangeBuiltinFunctionDeclaration( 2527 llvm::FunctionType *FnTy = CGM.getTypes().GetFunctionType(FI); 2529 llvm::Function::Create(FnTy, getThreadLocalWrapperLinkage(VD, CGM), 2530 WrapperName.str(), &CGM.getModule()); 2532 CGM.SetLLVMFunctionAttributes(GlobalDecl(), FI, Wrapper); 2536 if (!isThreadWrapperReplaceable(VD, CGM) || 2542 if (isThreadWrapperReplaceable(VD, CGM)) { 2798 : CGM(ABI.CGM), VMContext(CGM.getModule().getContext()), CXXABI(ABI) {} 3959 StructorCodegen CGType = getCodegenToUse(CGM, MD); 3970 emitConstructorDestructorAlias(CGM, GD, BaseDecl); 3975 StringRef MangledName = CGM.getMangledName(GD); 3976 auto *Aliasee = CGM.GetAddrOfGlobal(BaseDecl); 3977 CGM.addReplacement(MangledName, Aliasee); 3988 !CGM.TryEmitBaseDestructorAsAlias(DD)) 4003 llvm::Function *Fn = CGM.codegenCXXStructor(GD); 4012 llvm::Comdat *C = CGM.getModule().getOrInsertComdat(Out.str()); 4015 CGM.maybeSetTrivialComdat(*MD, *Fn); 4372 return {CGF.GetVTablePtr(This, CGM.Int8PtrTy, RD), RD};tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp
231 CGM.getMicrosoftVTableContext().getMethodVFTableLocation(MD); 325 if (auto *VDispMap = CGM.getModule().getNamedGlobal(MangledName)) 328 MicrosoftVTableContext &VTContext = CGM.getMicrosoftVTableContext(); 331 llvm::UndefValue::get(CGM.IntTy)); 332 Map[0] = llvm::ConstantInt::get(CGM.IntTy, 0); 341 Map[SrcVBIndex] = llvm::ConstantInt::get(CGM.IntTy, DstVBIndex * 4); 348 llvm::ArrayType *VDispMapTy = llvm::ArrayType::get(CGM.IntTy, Map.size()); 355 CGM.getModule(), VDispMapTy, /*isConstant=*/true, Linkage, 441 return CGM.getTarget().getPointerWidth(/*AddrSpace=*/0) == 64; 453 CGM.Int8PtrPtrTy, 454 CGM.Int8PtrTy, 455 llvm::ArrayType::get(CGM.Int8Ty, TypeInfoString.size() + 1)}; 457 llvm::StructType::create(CGM.getLLVMContext(), FieldTypes, TDTypeName); 464 return CGM.IntTy; 471 getImageRelativeType(CGM.Int8PtrTy), 472 CGM.IntTy, 473 CGM.IntTy, 474 CGM.IntTy, 475 CGM.IntTy, 476 CGM.IntTy, 480 CGM.getLLVMContext(), FieldTypes, "rtti.BaseClassDescriptor"); 489 CGM.getLLVMContext(), "rtti.ClassHierarchyDescriptor"); 491 CGM.IntTy, 492 CGM.IntTy, 493 CGM.IntTy, 505 CGM.getLLVMContext(), "rtti.CompleteObjectLocator"); 507 CGM.IntTy, 508 CGM.IntTy, 509 CGM.IntTy, 510 getImageRelativeType(CGM.Int8PtrTy), 523 if (llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(Name)) 526 auto *GV = new llvm::GlobalVariable(CGM.getModule(), CGM.Int8Ty, 526 auto *GV = new llvm::GlobalVariable(CGM.getModule(), CGM.Int8Ty, 530 CGM.setDSOLocal(GV); 539 return llvm::Constant::getNullValue(CGM.IntTy); 542 llvm::ConstantExpr::getPtrToInt(getImageBase(), CGM.IntPtrTy); 544 llvm::ConstantExpr::getPtrToInt(PtrVal, CGM.IntPtrTy); 548 return llvm::ConstantExpr::getTrunc(Diff, CGM.IntTy); 557 return llvm::ConstantInt::get(CGM.IntTy, 0); 561 return llvm::Constant::getAllOnesValue(CGM.IntTy); 585 llvm::Value *VBPOffset = llvm::ConstantInt::get(CGM.IntTy, VBPtrOffset), 586 *VBTOffset = llvm::ConstantInt::get(CGM.IntTy, VBTableOffset); 684 CGM.IntTy, // Flags 685 getImageRelativeType(CGM.Int8PtrTy), // TypeDescriptor 686 CGM.IntTy, // NonVirtualAdjustment 687 CGM.IntTy, // OffsetToVBPtr 688 CGM.IntTy, // VBTableIndex 689 CGM.IntTy, // Size 690 getImageRelativeType(CGM.Int8PtrTy) // CopyCtor 693 CGM.getLLVMContext(), FieldTypes, "eh.CatchableType"); 708 CGM.IntTy, // NumEntries 712 llvm::StructType::create(CGM.getLLVMContext(), FieldTypes, CTATypeName); 720 CGM.IntTy, // Flags 721 getImageRelativeType(CGM.Int8PtrTy), // CleanupFn 722 getImageRelativeType(CGM.Int8PtrTy), // ForwardCompat 723 getImageRelativeType(CGM.Int8PtrTy) // CatchableTypeArray 725 ThrowInfoType = llvm::StructType::create(CGM.getLLVMContext(), FieldTypes, 733 llvm::Type *Args[] = {CGM.Int8PtrTy, getThrowInfoType()->getPointerTo()}; 735 llvm::FunctionType::get(CGM.VoidTy, Args, /*isVarArg=*/false); 737 CGM.CreateRuntimeFunction(FTy, "_CxxThrowException"); 739 if (CGM.getTarget().getTriple().getArch() == llvm::Triple::x86) { 807 switch (CGM.getTarget().getTriple().getArch()) { 856 llvm::ConstantPointerNull::get(CGM.Int8PtrTy), 944 emitRTtypeidCall(CGF, llvm::Constant::getNullValue(CGM.VoidPtrTy)); 1027 llvm::Value *VBPtrOffset = llvm::ConstantInt::get(CGM.PtrDiffTy, VBPtrChars); 1031 CGM.getMicrosoftVTableContext().getVBTableIndex(ClassDecl, BaseClassDecl); 1033 llvm::ConstantInt::get(CGM.IntTy, VBTableChars.getQuantity()); 1038 CGF.Builder.CreateSExtOrBitCast(VBPtrToNewBase, CGM.PtrDiffTy); 1088 bool isAArch64 = CGM.getTarget().getTriple().isAArch64(); 1097 CharUnits Align = CGM.getContext().getTypeAlignInChars(FI.getReturnType()); 1190 VBaseOffset, llvm::ConstantInt::get(CGM.PtrDiffTy, ConstantVBaseOffset), 1219 CGM.EmitGlobal(GlobalDecl(D, Ctor_Complete)); 1229 CGM.setGVProperties(Fn, D); 1236 This = CGF.Builder.CreateElementBitCast(This, CGM.Int8Ty, "this.int8"); 1301 CGM.setDLLImportDLLExport(GV, ND); 1316 return CGM.getLLVMLinkageForDeclarator(Dtor, Linkage, 1341 CGM.EmitGlobal(GlobalDecl(D, Dtor_Base)); 1360 CGM.getMicrosoftVTableContext().getMethodVFTableLocation(GD); 1408 CGM.getMicrosoftVTableContext().getMethodVFTableLocation(LookupGD); 1559 MostDerivedArg = llvm::ConstantInt::get(CGM.Int32Ty, Type == Ctor_Complete); 1582 CGCallee Callee = CGCallee::forDirect(CGM.getAddrOfCXXStructor(GD), GD); 1609 if (!CGM.getCodeGenOpts().LTOUnit) 1622 CGM.AddVTableTypeMetadata(VTable, AddressPoint, RD); 1627 CGM.AddVTableTypeMetadata(VTable, AddressPoint, 1646 CGM.AddVTableTypeMetadata(VTable, AddressPoint, DerivedRD); 1651 CGM.AddVTableTypeMetadata(VTable, AddressPoint, RD); 1656 MicrosoftVTableContext &VFTContext = CGM.getMicrosoftVTableContext(); 1672 ConstantInitBuilder Builder(CGM); 1734 MicrosoftVTableContext &VTContext = CGM.getMicrosoftVTableContext(); 1740 CGM.addDeferredVTable(RD); 1777 : CGM.getVTableLinkage(RD); 1785 CGM.getModule().getNamedGlobal(VFTableName)) { 1801 llvm::Type *VTableType = CGM.getVTables().getVTableType(VTLayout); 1806 VTable = new llvm::GlobalVariable(CGM.getModule(), VTableType, 1816 C = CGM.getModule().getOrInsertComdat(VFTableName.str()); 1822 llvm::Value *GEPIndices[] = {llvm::ConstantInt::get(CGM.Int32Ty, 0), 1823 llvm::ConstantInt::get(CGM.Int32Ty, 0), 1824 llvm::ConstantInt::get(CGM.Int32Ty, 1)}; 1834 VFTable = llvm::GlobalAlias::create(CGM.Int8PtrTy, 1837 &CGM.getModule()); 1870 MicrosoftVTableContext &VFTContext = CGM.getMicrosoftVTableContext(); 1889 ML.Index * CGM.getContext().getTargetInfo().getPointerWidth(0) / 8); 1891 if (CGM.getCodeGenOpts().PrepareForLTO) 1916 &CGM.getTypes().arrangeCXXStructorDeclaration(GD); 1950 MicrosoftVTableContext &Context = CGM.getMicrosoftVTableContext(); 1955 llvm::GlobalVariable::LinkageTypes Linkage = CGM.getVTableLinkage(RD); 1977 if (llvm::GlobalValue *GV = CGM.getModule().getNamedValue(ThunkName)) 1982 CGM.getTypes().arrangeUnprototypedMustTailThunk(MD); 1983 llvm::FunctionType *ThunkTy = CGM.getTypes().GetFunctionType(FnInfo); 1986 ThunkName.str(), &CGM.getModule()); 1993 ThunkFn->setComdat(CGM.getModule().getOrInsertComdat(ThunkFn->getName())); 1995 CGM.SetLLVMFunctionAttributes(MD, FnInfo, ThunkFn); 1996 CGM.SetLLVMFunctionAttributesForDefinition(MD, ThunkFn); 2008 CodeGenFunction CGF(CGM); 2056 llvm::ArrayType::get(CGM.IntTy, 1 + VBT.ObjectWithVPtr->getNumVBases()); 2058 assert(!CGM.getModule().getNamedGlobal(Name) && 2061 CGM.getContext().getTypeAlignInChars(CGM.getContext().IntTy); 2061 CGM.getContext().getTypeAlignInChars(CGM.getContext().IntTy); 2062 llvm::GlobalVariable *GV = CGM.CreateOrReplaceCXXRuntimeVariable( 2094 Offsets[0] = llvm::ConstantInt::get(CGM.IntTy, -VBPtrOffset.getQuantity()); 2096 MicrosoftVTableContext &Context = CGM.getMicrosoftVTableContext(); 2111 Offsets[VBIndex] = llvm::ConstantInt::get(CGM.IntTy, Offset.getQuantity()); 2118 llvm::ArrayType::get(CGM.IntTy, Offsets.size()); 2279 if (D.isNoDestroy(CGM.getContext())) 2436 F->setComdat(CGM.getModule().getOrInsertComdat(F->getName())); 2497 new llvm::GlobalVariable(CGM.getModule(), GuardTy, /*isConstant=*/false, 2504 CGM.getModule().getOrInsertComdat(GuardVar->getName())); 2561 Builder.CreateLoad(getInitThreadEpochPtr(CGM)); 2572 CGF.EmitNounwindRuntimeCall(getInitThreadHeaderFn(CGM), 2586 CGF.EmitNounwindRuntimeCall(getInitThreadFooterFn(CGM), 2615 fields.push_back(CGM.VoidPtrTy); // FunctionPointerOrVirtualThunk 2617 fields.push_back(CGM.IntTy); // FieldOffset 2621 fields.push_back(CGM.IntTy); 2623 fields.push_back(CGM.IntTy); 2625 fields.push_back(CGM.IntTy); // VirtualBaseAdjustmentOffset 2629 return llvm::StructType::get(CGM.getLLVMContext(), fields); 2640 fields.push_back(llvm::Constant::getNullValue(CGM.VoidPtrTy)); 2686 CGM.IntTy, NonVirtualBaseAdjustment.getQuantity())); 2692 fields.push_back(llvm::ConstantInt::get(CGM.IntTy, Offs.getQuantity())); 2697 fields.push_back(llvm::ConstantInt::get(CGM.IntTy, VBTableIndex)); 2710 llvm::ConstantInt::get(CGM.IntTy, offset.getQuantity()); 2775 CodeGenTypes &Types = CGM.getTypes(); 2789 Ty = CGM.PtrDiffTy; 2791 FirstField = CGM.GetAddrOfFunction(MD, Ty); 2793 auto &VTableContext = CGM.getMicrosoftVTableContext(); 2808 FirstField = llvm::ConstantExpr::getBitCast(FirstField, CGM.VoidPtrTy); 2884 fields.push_back(llvm::Constant::getNullValue(CGM.VoidPtrTy)); 2946 This = Builder.CreateElementBitCast(This, CGM.Int8Ty); 2951 CGM.Int32Ty->getPointerTo(0)->getPointerTo(This.getAddressSpace())); 2970 VBaseOffs = Builder.CreateBitCast(VBaseOffs, CGM.Int32Ty->getPointerTo(0)); 2981 Base = Builder.CreateElementBitCast(Base, CGM.Int8Ty); 3014 VBPtrOffset = llvm::ConstantInt::get(CGM.IntTy, offs.getQuantity()); 3025 llvm::PHINode *Phi = Builder.CreatePHI(CGM.Int8PtrTy, 2, "memptr.base"); 3192 llvm::ConstantInt::get(CGM.IntTy, SrcOffsetToFirstVBase), 3206 CGM.IntTy, 3207 CGM.computeNonVirtualBaseClassOffset(DerivedClass, PathBegin, PathEnd) 3226 VirtualBaseAdjustmentOffset, llvm::ConstantInt::get(CGM.IntTy, 4)); 3247 CGM.IntTy, 3261 llvm::ConstantInt::get(CGM.IntTy, DstOffsetToFirstVBase), 3316 CGBuilderTy Builder(CGM, CGM.getLLVMContext()); 3316 CGBuilderTy Builder(CGM, CGM.getLLVMContext()); 3331 llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType( 3332 CGM.getTypes().arrangeCXXMethodType(RD, FPT, /*FD=*/nullptr)); 3507 : CGM(ABI.CGM), Context(CGM.getContext()), 3816 if (llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(MangledName)) 3817 return llvm::ConstantExpr::getBitCast(GV, CGM.Int8PtrTy); 3831 getTypeInfoVTable(CGM), // VFPtr 3832 llvm::ConstantPointerNull::get(CGM.Int8PtrTy), // Runtime data 3833 llvm::ConstantDataArray::getString(CGM.getLLVMContext(), TypeInfoString)}; 3837 CGM.getModule(), TypeDescriptorType, /*isConstant=*/false, 3842 Var->setComdat(CGM.getModule().getOrInsertComdat(Var->getName())); 3843 return llvm::ConstantExpr::getBitCast(Var, CGM.Int8PtrTy); 3857 CGM.codegenCXXStructor(GD.getWithCtorType(Ctor_Complete)); 3858 CGM.maybeSetTrivialComdat(*ctor, *Fn); 3875 if (GD.getDtorType() == Dtor_Base && !CGM.TryEmitBaseDestructorAsAlias(dtor)) 3878 llvm::Function *Fn = CGM.codegenCXXStructor(GD); 3880 Fn->setComdat(CGM.getModule().getOrInsertComdat(Fn->getName())); 3894 if (llvm::GlobalValue *GV = CGM.getModule().getNamedValue(ThunkName)) 3898 const CGFunctionInfo &FnInfo = CGM.getTypes().arrangeMSCtorClosure(CD, CT); 3899 llvm::FunctionType *ThunkTy = CGM.getTypes().GetFunctionType(FnInfo); 3903 ThunkTy, getLinkageForRTTI(RecordTy), ThunkName.str(), &CGM.getModule()); 3907 ThunkFn->setComdat(CGM.getModule().getOrInsertComdat(ThunkFn->getName())); 3911 CodeGenFunction CGF(CGM); 3984 CGM.getAddrOfCXXStructor(GlobalDecl(CD, Ctor_Complete)); 3987 const CGFunctionInfo &CalleeInfo = CGM.getTypes().arrangeCXXConstructorCall( 4008 RD ? CGM.getContext().getCopyConstructorForExceptionObject(RD) : nullptr; 4021 if (llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(MangledName)) 4035 CopyCtor = CGM.getAddrOfCXXStructor(GlobalDecl(CD, Ctor_Complete)); 4037 CopyCtor = llvm::ConstantExpr::getBitCast(CopyCtor, CGM.Int8PtrTy); 4039 CopyCtor = llvm::Constant::getNullValue(CGM.Int8PtrTy); 4066 llvm::ConstantInt::get(CGM.IntTy, Flags), // Flags 4068 llvm::ConstantInt::get(CGM.IntTy, NVOffset), // NonVirtualAdjustment 4069 llvm::ConstantInt::get(CGM.IntTy, VBPtrOffset), // OffsetToVBPtr 4070 llvm::ConstantInt::get(CGM.IntTy, VBIndex), // VBTableIndex 4071 llvm::ConstantInt::get(CGM.IntTy, Size), // Size 4076 CGM.getModule(), CTType, /*isConstant=*/true, getLinkageForRTTI(T), 4081 GV->setComdat(CGM.getModule().getOrInsertComdat(GV->getName())); 4118 MicrosoftVTableContext &VTableContext = CGM.getMicrosoftVTableContext(); 4183 llvm::ConstantInt::get(CGM.IntTy, NumEntries), // NumEntries 4194 CGM.getModule(), CTAType, /*isConstant=*/true, getLinkageForRTTI(T), 4199 CTA->setComdat(CGM.getModule().getOrInsertComdat(CTA->getName())); 4227 if (llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(MangledName)) 4243 llvm::Constant *CleanupFn = llvm::Constant::getNullValue(CGM.Int8PtrTy); 4248 CGM.getAddrOfCXXStructor(GlobalDecl(DtorD, Dtor_Complete)), 4249 CGM.Int8PtrTy); 4252 getImageRelativeConstant(llvm::Constant::getNullValue(CGM.Int8PtrTy)); 4254 llvm::ConstantExpr::getBitCast(CTA, CGM.Int8PtrTy)); 4257 llvm::ConstantInt::get(CGM.IntTy, Flags), // Flags 4263 CGM.getModule(), TIType, /*isConstant=*/true, getLinkageForRTTI(T), 4268 GV->setComdat(CGM.getModule().getOrInsertComdat(GV->getName())); 4287 CGF.Builder.CreateBitCast(AI.getPointer(), CGM.Int8PtrTy), 4298 return {CGF.GetVTablePtr(This, CGM.Int8PtrTy, RD), RD};