reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/CodeGen/CGCXXABI.cpp
   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.cpp
  283     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};