Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:CGM

40   MicrosoftCXXABI(CodeGenModule &CGM)
41 : CGCXXABI(CGM), BaseClassDescriptorType(nullptr),
157 CGM.getMicrosoftVTableContext().getMethodVFTableLocation(MD);
222 CGM.getContext().IntTy);
299 return CGM.getTarget().getPointerWidth(/*AddressSpace=*/0) == 64;
311 CGM.Int8PtrPtrTy,
312 CGM.Int8PtrTy,
313 llvm::ArrayType::get(CGM.Int8Ty, TypeInfoString.size() + 1)};
315 llvm::StructType::create(CGM.getLLVMContext(), FieldTypes, TDTypeName);
322 return CGM.IntTy;
329 getImageRelativeType(CGM.Int8PtrTy),
330 CGM.IntTy,
331 CGM.IntTy,
332 CGM.IntTy,
333 CGM.IntTy,
334 CGM.IntTy,
338 CGM.getLLVMContext(), FieldTypes, "rtti.BaseClassDescriptor");
347 CGM.getLLVMContext(), "rtti.ClassHierarchyDescriptor");
349 CGM.IntTy,
350 CGM.IntTy,
351 CGM.IntTy,
363 CGM.getLLVMContext(), "rtti.CompleteObjectLocator");
365 CGM.IntTy,
366 CGM.IntTy,
367 CGM.IntTy,
368 getImageRelativeType(CGM.Int8PtrTy),
381 if (llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(Name))
384 return new llvm::GlobalVariable(CGM.getModule(), CGM.Int8Ty,
395 llvm::ConstantExpr::getPtrToInt(getImageBase(), CGM.IntPtrTy);
397 llvm::ConstantExpr::getPtrToInt(PtrVal, CGM.IntPtrTy);
401 return llvm::ConstantExpr::getTrunc(Diff, CGM.IntTy);
410 return llvm::ConstantInt::get(CGM.IntTy, 0);
414 return llvm::Constant::getAllOnesValue(CGM.IntTy);
445 llvm::Value *VBPOffset = llvm::ConstantInt::get(CGM.IntTy, VBPtrOffset),
446 *VBTOffset = llvm::ConstantInt::get(CGM.IntTy, VBTableOffset);
558 switch (CGM.getTarget().getTriple().getArch()) {
626 return CGF.CGM.getCXXABI().GetVirtualBaseClassOffset(
651 !CGM.getContext().getASTRecordLayout(SrcDecl).hasExtendableVFPtr();
660 llvm::Constant *Fn = CGF.CGM.CreateRuntimeFunction(FTy, "__RTtypeid");
666 emitRTtypeidCall(CGF, llvm::Constant::getNullValue(CGM.VoidPtrTy));
685 !CGM.getContext().getASTRecordLayout(SrcDecl).hasExtendableVFPtr();
694 CGF.CGM.GetAddrOfRTTIDescriptor(SrcRecordTy.getUnqualifiedType());
696 CGF.CGM.GetAddrOfRTTIDescriptor(DestRecordTy.getUnqualifiedType());
709 llvm::Constant *Function = CGF.CGM.CreateRuntimeFunction(
729 llvm::Constant *Function = CGF.CGM.CreateRuntimeFunction(
747 llvm::Value *VBPtrOffset = llvm::ConstantInt::get(CGM.PtrDiffTy, VBPtrChars);
751 CGM.getMicrosoftVTableContext().getVBTableIndex(ClassDecl, BaseClassDecl);
753 llvm::ConstantInt::get(CGM.IntTy, VBTableChars.getQuantity());
758 CGF.Builder.CreateSExtOrBitCast(VBPtrToNewBase, CGM.PtrDiffTy);
798 ArgTys.insert(ArgTys.begin() + 1, CGM.getContext().IntTy);
800 ArgTys.push_back(CGM.getContext().IntTy);
867 VBaseOffset, llvm::ConstantInt::get(CGM.Int32Ty, ConstantVBaseOffset),
885 CGM.EmitGlobal(GlobalDecl(D, Ctor_Complete));
891 CGF.Builder.CreateBitCast(getThisValue(CGF), CGM.Int8PtrTy, "this.int8");
892 const ASTRecordLayout &Layout = CGM.getContext().getASTRecordLayout(RD);
899 CGM.getContext().getASTRecordLayout(VBT->BaseWithVPtr);
922 ArgTys.push_back(CGM.getContext().IntTy);
929 CGM.EmitGlobal(GlobalDecl(D, Dtor_Base));
950 CGM.getMicrosoftVTableContext().getMethodVFTableLocation(LookupGD);
962 CGM.getContext().getASTRecordLayout(MD->getParent());
1000 CGM.getMicrosoftVTableContext().getMethodVFTableLocation(LookupGD);
1142 llvm::ConstantInt::get(CGM.Int32Ty, Type == Ctor_Complete);
1159 llvm::Value *Callee = CGM.GetAddrOfCXXDestructor(DD, Type);
1176 MicrosoftVTableContext &VFTContext = CGM.getMicrosoftVTableContext();
1207 !CGM.getContext().getASTRecordLayout(Base.getBase()).hasOwnVFPtr());
1242 MicrosoftVTableContext &VTContext = CGM.getMicrosoftVTableContext();
1248 CGM.addDeferredVTable(RD);
1276 llvm::ArrayType::get(CGM.Int8PtrTy, NumVTableSlots);
1282 VTable = CGM.getModule().getNamedGlobal(VFTableName);
1287 CGM.getModule(), VTableType, /*isConstant=*/true, VTableLinkage,
1296 llvm::Value *GEPIndices[] = {llvm::ConstantInt::get(CGM.IntTy, 0),
1297 llvm::ConstantInt::get(CGM.IntTy, 1)};
1309 VFTableName.str(), VTableGEP, &CGM.getModule());
1323 llvm::GlobalValue::LinkageTypes VFTableLinkage = CGM.getVTableLinkage(RD);
1338 CGM.getModule().getOrInsertComdat(VFTable->getName());
1351 CGM.setGlobalVisibility(VFTable, RD);
1373 CGM.getMicrosoftVTableContext().getMethodVFTableLocation(GD);
1390 &CGM.getTypes().arrangeCXXDestructor(Dtor, Dtor_Deleting);
1391 llvm::Type *Ty = CGF.CGM.getTypes().GetFunctionType(*FInfo);
1416 MicrosoftVTableContext &Context = CGM.getMicrosoftVTableContext();
1421 llvm::GlobalVariable::LinkageTypes Linkage = CGM.getVTableLinkage(RD);
1441 if (llvm::GlobalValue *GV = CGM.getModule().getNamedValue(ThunkName))
1445 const CGFunctionInfo &FnInfo = CGM.getTypes().arrangeGlobalDeclaration(MD);
1446 llvm::FunctionType *ThunkTy = CGM.getTypes().GetFunctionType(FnInfo);
1449 ThunkName.str(), &CGM.getModule());
1456 CGM.SetLLVMFunctionAttributes(MD, FnInfo, ThunkFn);
1457 CGM.SetLLVMFunctionAttributesForDefinition(MD, ThunkFn);
1460 CodeGenFunction CGF(CGM);
1474 CGM.ConstructAttributeList(FnInfo, MD, AttributeList, CallingConv, true);
1520 llvm::ArrayType::get(CGM.IntTy, 1 + VBT.ReusingBase->getNumVBases());
1522 assert(!CGM.getModule().getNamedGlobal(Name) &&
1525 CGM.CreateOrReplaceCXXRuntimeVariable(Name, VBTableType, Linkage);
1545 CGM.getContext().getASTRecordLayout(VBT.BaseWithVPtr);
1547 CGM.getContext().getASTRecordLayout(RD);
1554 Offsets[0] = llvm::ConstantInt::get(CGM.IntTy, -VBPtrOffset.getQuantity());
1556 MicrosoftVTableContext &Context = CGM.getMicrosoftVTableContext();
1571 CGM.IntTy, Offset.getQuantity());
1578 llvm::ArrayType::get(CGM.IntTy, Offsets.size());
1583 CGM.setGlobalVisibility(GV, RD);
1728 CGM.ErrorUnsupported(&D, "dynamic TLS initialization");
1769 new llvm::GlobalVariable(CGM.getModule(), GuardTy, false,
1825 fields.push_back(CGM.VoidPtrTy); // FunctionPointerOrVirtualThunk
1827 fields.push_back(CGM.IntTy); // FieldOffset
1831 fields.push_back(CGM.IntTy);
1833 fields.push_back(CGM.IntTy);
1835 fields.push_back(CGM.IntTy); // VirtualBaseAdjustmentOffset
1839 return llvm::StructType::get(CGM.getLLVMContext(), fields);
1850 fields.push_back(llvm::Constant::getNullValue(CGM.VoidPtrTy));
1896 CGM.IntTy, NonVirtualBaseAdjustment.getQuantity()));
1902 fields.push_back(llvm::ConstantInt::get(CGM.IntTy, Offs.getQuantity()));
1917 llvm::ConstantInt::get(CGM.IntTy, offset.getQuantity());
1953 CodeGenTypes &Types = CGM.getTypes();
1966 Ty = CGM.PtrDiffTy;
1968 FirstField = CGM.GetAddrOfFunction(MD, Ty);
1969 FirstField = llvm::ConstantExpr::getBitCast(FirstField, CGM.VoidPtrTy);
1972 CGM.getMicrosoftVTableContext().getMethodVFTableLocation(MD);
1974 CGM.ErrorUnsupported(MD, "pointer to variadic virtual member function");
1975 FirstField = llvm::Constant::getNullValue(CGM.VoidPtrTy);
1976 } else if (!CGM.getTypes().isFuncTypeConvertible(
1978 CGM
1980 FirstField = llvm::Constant::getNullValue(CGM.VoidPtrTy);
1982 CGM.ErrorUnsupported(MD, "pointer to virtual member function overriding "
1984 FirstField = llvm::Constant::getNullValue(CGM.VoidPtrTy);
1987 FirstField = llvm::ConstantExpr::getBitCast(Thunk, CGM.VoidPtrTy);
2069 fields.push_back(llvm::Constant::getNullValue(CGM.VoidPtrTy));
2131 This = Builder.CreateBitCast(This, CGM.Int8PtrTy);
2135 VBPtr = Builder.CreateBitCast(VBPtr, CGM.Int8PtrTy->getPointerTo(0));
2140 VBaseOffs = Builder.CreateBitCast(VBaseOffs, CGM.Int32Ty->getPointerTo(0));
2150 Base = Builder.CreateBitCast(Base, CGM.Int8PtrTy);
2175 DiagnosticsEngine &Diags = CGF.CGM.getDiags();
2183 VBPtrOffset = llvm::ConstantInt::get(CGM.IntTy, offs.getQuantity());
2194 llvm::PHINode *Phi = Builder.CreatePHI(CGM.Int8PtrTy, 2, "memptr.base");
2323 Adj = llvm::ConstantExpr::getTruncOrBitCast(Adj, CGM.IntTy);
2408 Adj = llvm::ConstantExpr::getTruncOrBitCast(Adj, CGM.IntTy);
2445 CGM.getTypes().GetFunctionType(
2446 CGM.getTypes().arrangeCXXMethodType(RD, FPT));
2484 CGCXXABI *clang::CodeGen::CreateMicrosoftCXXABI(CodeGenModule &CGM) {
2485 return new MicrosoftCXXABI(CGM);
2518 static llvm::GlobalVariable *getTypeInfoVTable(CodeGenModule &CGM) {
2520 if (auto VTable = CGM.getModule().getNamedGlobal(MangledName))
2522 return new llvm::GlobalVariable(CGM.getModule(), CGM.Int8PtrTy,
2613 : CGM(ABI.CGM), Context(CGM.getContext()),
2614 VMContext(CGM.getLLVMContext()), Module(CGM.getModule()), RD(RD),
2615 Linkage(getLinkageForRTTI(CGM.getContext().getTagDeclType(RD))),
2624 CodeGenModule &CGM;
2696 llvm::Value *GEPIndices[] = {llvm::ConstantInt::get(CGM.IntTy, 0),
2697 llvm::ConstantInt::get(CGM.IntTy, 0)};
2707 llvm::ConstantInt::get(CGM.IntTy, 0), // Unknown
2708 llvm::ConstantInt::get(CGM.IntTy, Flags),
2709 llvm::ConstantInt::get(CGM.IntTy, Classes.size()),
2755 auto &VTableContext = CGM.getMicrosoftVTableContext();
2782 llvm::ConstantInt::get(CGM.IntTy, Class.NumBases),
2783 llvm::ConstantInt::get(CGM.IntTy, Class.OffsetInVBase),
2784 llvm::ConstantInt::get(CGM.IntTy, VBPtrOffset),
2785 llvm::ConstantInt::get(CGM.IntTy, OffsetInVBTable),
2786 llvm::ConstantInt::get(CGM.IntTy, Class.Flags),
2824 llvm::ConstantInt::get(CGM.IntTy, ABI.isImageRelative()),
2825 llvm::ConstantInt::get(CGM.IntTy, OffsetToTop),
2826 llvm::ConstantInt::get(CGM.IntTy, VFPtrOffset),
2828 CGM.GetAddrOfRTTIDescriptor(Context.getTypeDeclType(RD))),
2851 if (llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(MangledName))
2852 return llvm::ConstantExpr::getBitCast(GV, CGM.Int8PtrTy);
2862 getTypeInfoVTable(CGM), // VFPtr
2863 llvm::ConstantPointerNull::get(CGM.Int8PtrTy), // Runtime data
2864 llvm::ConstantDataArray::getString(CGM.getLLVMContext(), TypeInfoString)};
2869 CGM.getModule(), TypeDescriptorType, /*Constant=*/false,
2873 CGM.Int8PtrTy);