Lines Matching refs:CGM
46 CodeGenModule &CGM; member
48 ConstantAggregateBuilderUtils(CodeGenModule &CGM) : CGM(CGM) {} in ConstantAggregateBuilderUtils()
52 CGM.getDataLayout().getABITypeAlign(C->getType())); in getAlignment()
56 return CharUnits::fromQuantity(CGM.getDataLayout().getTypeAllocSize(Ty)); in getSize()
64 llvm::Type *Ty = CGM.CharTy; in getPadding()
71 llvm::Type *Ty = llvm::ArrayType::get(CGM.CharTy, ZeroSize.getQuantity()); in getZeroes()
102 static llvm::Constant *buildFrom(CodeGenModule &CGM,
110 ConstantAggregateBuilder(CodeGenModule &CGM) in ConstantAggregateBuilder() argument
111 : ConstantAggregateBuilderUtils(CGM) {} in ConstantAggregateBuilder()
133 return buildFrom(CGM, Elems, Offsets, CharUnits::Zero(), Size, in build()
185 const ASTContext &Context = CGM.getContext(); in addBits()
186 const uint64_t CharWidth = CGM.getContext().getCharWidth(); in addBits()
206 if (CGM.getDataLayout().isBigEndian()) { in addBits()
222 add(llvm::ConstantInt::get(CGM.getLLVMContext(), BitsThisChar), in addBits()
240 if (CGM.getDataLayout().isBigEndian()) in addBits()
251 add(llvm::ConstantInt::get(CGM.getLLVMContext(), BitsThisChar), in addBits()
266 ToUpdate = llvm::ConstantInt::get(CGM.getLLVMContext(), BitsThisChar); in addBits()
275 if (!CGM.getDataLayout().isBigEndian()) in addBits()
343 CGM.getDataLayout().getStructLayout(ST); in split()
396 EmitArrayConstant(CodeGenModule &CGM, llvm::ArrayType *DesiredType,
402 CodeGenModule &CGM, ArrayRef<llvm::Constant *> Elems, in buildFrom() argument
405 ConstantAggregateBuilderUtils Utils(CGM); in buildFrom()
438 return EmitArrayConstant(CGM, ATy, CommonType, ATy->getNumElements(), in buildFrom()
507 CGM.getLLVMContext(), Packed ? PackedElems : UnpackedElems, Packed); in buildFrom()
549 CGM, ArrayRef(Elems).slice(First, Length), in condense()
561 CodeGenModule &CGM; member in __anon9d6f04f10111::ConstStructBuilder
579 : CGM(Emitter.CGM), Emitter(Emitter), Builder(Builder), in ConstStructBuilder()
600 const ASTContext &Context = CGM.getContext(); in AppendField()
624 CGM.getTypes().convertTypeForLoadStore(Field->getType(), C->getType()); in AppendBitField()
626 C, LoadType, llvm::APInt::getZero(32), CGM.getDataLayout()); in AppendBitField()
633 CGM.getTypes().getCGRecordLayout(Field->getParent()); in AppendBitField()
649 CGM.getContext().toBits(StartOffset) + FieldOffset, in AppendBitField()
660 auto CAT = Emitter.CGM.getContext().getAsConstantArrayType(Type); in EmitDesignatedInitUpdater()
664 CharUnits ElemSize = Emitter.CGM.getContext().getTypeSizeInChars(ElemType); in EmitDesignatedInitUpdater()
665 llvm::Type *ElemTy = Emitter.CGM.getTypes().ConvertTypeForMem(ElemType); in EmitDesignatedInitUpdater()
706 const ASTRecordLayout &Layout = CGM.getContext().getASTRecordLayout(RD); in Build()
740 if (isEmptyFieldForLayout(CGM.getContext(), Field)) { in Build()
741 if (Init->HasSideEffects(CGM.getContext())) in Build()
752 CharUnits Offset = CGM.getContext().toCharUnitsFromBits( in Build()
760 CGM.getTypes().ConvertTypeForMem(Field->getType())); in Build()
809 const ASTRecordLayout &Layout = CGM.getContext().getASTRecordLayout(RD); in Build()
815 CGM.getCXXABI().getVTableAddressPoint(BaseSubobject(CD, Offset), in Build()
817 if (auto Authentication = CGM.getVTablePointerAuthentication(CD)) { in Build()
851 uint64_t OffsetBits = CGM.getContext().toBits(Offset); in Build()
862 isEmptyFieldForLayout(CGM.getContext(), *Field)) in Build()
896 llvm::Type *ValTy = CGM.getTypes().ConvertType(Type); in Finalize()
903 ConstantAggregateBuilder Const(Emitter.CGM); in BuildStruct()
915 ConstantAggregateBuilder Const(Emitter.CGM); in BuildStruct()
941 CodeGenModule &CGM = emitter.CGM; in tryEmitGlobalCompoundLiteral() local
942 CharUnits Align = CGM.getContext().getTypeAlignInChars(E->getType()); in tryEmitGlobalCompoundLiteral()
944 CGM.getAddrOfConstantCompoundLiteralIfEmitted(E)) in tryEmitGlobalCompoundLiteral()
957 CGM.getModule(), C->getType(), in tryEmitGlobalCompoundLiteral()
958 E->getType().isConstantStorage(CGM.getContext(), true, false), in tryEmitGlobalCompoundLiteral()
961 CGM.getContext().getTargetAddressSpace(addressSpace)); in tryEmitGlobalCompoundLiteral()
964 CGM.setAddrOfConstantCompoundLiteral(E, GV); in tryEmitGlobalCompoundLiteral()
969 EmitArrayConstant(CodeGenModule &CGM, llvm::ArrayType *DesiredType, in EmitArrayConstant() argument
1026 llvm::StructType::get(CGM.getLLVMContext(), Types, true); in EmitArrayConstant()
1038 CodeGenModule &CGM; member in __anon9d6f04f10111::ConstExprEmitter
1043 : CGM(emitter.CGM), Emitter(emitter), VMContext(CGM.getLLVMContext()) { in ConstExprEmitter()
1088 unsigned SrcWidth = CGM.getContext().getIntWidth(FromType); in ProduceIntToIntCast()
1089 unsigned DstWidth = CGM.getContext().getIntWidth(DestType); in ProduceIntToIntCast()
1095 return llvm::ConstantInt::get(CGM.getLLVMContext(), A); in ProduceIntToIntCast()
1102 CGM.EmitExplicitCastExprType(ECE, Emitter.CGF); in VisitCastExpr()
1125 unsigned CurSize = CGM.getDataLayout().getTypeAllocSize(C->getType()); in VisitCastExpr()
1126 unsigned TotalSize = CGM.getDataLayout().getTypeAllocSize(destTy); in VisitCastExpr()
1130 llvm::Type *Ty = CGM.CharTy; in VisitCastExpr()
1148 return CGM.getTargetCodeGenInfo().performAddrSpaceCast(CGM, C, srcAS, in VisitCastExpr()
1171 return CGM.GetAddrOfConstantStringFromLiteral(S).getPointer(); in VisitCastExpr()
1175 return CGM.EmitNullConstant(destType); in VisitCastExpr()
1194 return CGM.getCXXABI().EmitMemberPointerConversion(E, C); in VisitCastExpr()
1270 return llvm::ConstantInt::get(CGM.getLLVMContext(), I->getValue()); in VisitIntegerLiteral()
1291 auto *CAT = CGM.getContext().getAsConstantArrayType(ILE->getType()); in EmitArrayInitialization()
1347 llvm::APSInt Value(CGM.getContext().getTypeSize(DestTy), in EmitArrayInitialization()
1355 C = llvm::ConstantInt::get(CGM.getLLVMContext(), Value); in EmitArrayInitialization()
1358 withDestType(CGM.getContext(), Init, EmbedS->getType(), DestTy, in EmitArrayInitialization()
1379 cast<llvm::ArrayType>(CGM.getTypes().ConvertType(ILE->getType())); in EmitArrayInitialization()
1380 return EmitArrayConstant(CGM, Desired, CommonElementType, NumElements, Elts, in EmitArrayInitialization()
1391 return CGM.EmitNullConstant(T); in VisitImplicitValueInitExpr()
1414 ConstantAggregateBuilder Const(CGM); in VisitDesignatedInitUpdateExpr()
1421 llvm::Type *ValTy = CGM.getTypes().ConvertType(destType); in VisitDesignatedInitUpdateExpr()
1440 assert(CGM.getContext().hasSameUnqualifiedType(Ty, Arg->getType()) && in VisitCXXConstructExpr()
1451 return CGM.EmitNullConstant(Ty); in VisitCXXConstructExpr()
1456 return CGM.GetConstantArrayFromStringLiteral(E); in VisitStringLiteral()
1464 CGM.getContext().getObjCEncodingForType(E->getEncodedType(), Str); in VisitObjCEncodeExpr()
1465 const ConstantArrayType *CAT = CGM.getContext().getAsConstantArrayType(T); in VisitObjCEncodeExpr()
1481 return llvm::ConstantInt::get(CGM.getLLVMContext(), -CI->getValue()); in VisitUnaryMinus()
1491 return CGM.getTypes().ConvertType(T); in ConvertType()
1536 RetType = CGM.getContext().getLValueReferenceType(RetType); in tryEmitConstantExpr()
1547 CGM.Error(E->getExprLoc(), in emitAbstract()
1549 C = CGM.EmitNullConstant(destType); in emitAbstract()
1563 CGM.Error(loc, in emitAbstract()
1565 C = CGM.EmitNullConstant(destType); in emitAbstract()
1598 auto global = new llvm::GlobalVariable(CGM.getModule(), CGM.Int8Ty, true, in getCurrentAddrPrivate()
1604 CGM.getContext().getTargetAddressSpace(DestAddressSpace)); in getCurrentAddrPrivate()
1621 CodeGenModule &CGM; member
1639 ReplacePlaceholders(CodeGenModule &CGM, llvm::Constant *base, in ReplacePlaceholders()
1642 : CGM(CGM), Base(base), in ReplacePlaceholders()
1730 IndexValues[i] = llvm::ConstantInt::get(CGM.Int32Ty, Indices[i]); in setLocation()
1751 ReplacePlaceholders(CGM, global, PlaceholderAddresses) in finalize()
1763 static QualType getNonMemoryType(CodeGenModule &CGM, QualType type) { in getNonMemoryType() argument
1765 return CGM.getContext().getQualifiedType(AT->getValueType(), in getNonMemoryType()
1776 QualType Ty = CGM.getContext().getBaseElementType(D.getType()); in tryEmitPrivateForVarInit()
1782 return CGM.EmitNullConstant(D.getType()); in tryEmitPrivateForVarInit()
1792 QualType nonMemoryDestType = getNonMemoryType(CGM, destType); in tryEmitPrivateForVarInit()
1807 auto nonMemoryDestType = getNonMemoryType(CGM, destType); in tryEmitAbstractForMemory()
1815 auto nonMemoryDestType = getNonMemoryType(CGM, destType); in tryEmitAbstractForMemory()
1822 auto nonMemoryDestType = getNonMemoryType(CGM, destType); in tryEmitPrivateForMemory()
1829 auto nonMemoryDestType = getNonMemoryType(CGM, destType); in tryEmitPrivateForMemory()
1860 llvm::ConstantInt::get(CGM.IntPtrTy, Schema.getExtraDiscriminator()); in tryEmitConstantSignedPointer()
1862 llvm::Constant *SignedPointer = CGM.getConstantSignedPointer( in tryEmitConstantSignedPointer()
1871 llvm::Constant *ConstantEmitter::emitForMemory(CodeGenModule &CGM, in emitForMemory() argument
1877 C = emitForMemory(CGM, C, destValueType); in emitForMemory()
1879 uint64_t innerSize = CGM.getContext().getTypeSize(destValueType); in emitForMemory()
1880 uint64_t outerSize = CGM.getContext().getTypeSize(destType); in emitForMemory()
1888 llvm::ArrayType::get(CGM.Int8Ty, (outerSize - innerSize) / 8)) in emitForMemory()
1895 llvm::Type *boolTy = CGM.getTypes().ConvertTypeForMem(destType); in emitForMemory()
1897 llvm::Instruction::ZExt, C, boolTy, CGM.getDataLayout()); in emitForMemory()
1903 ConstantAggregateBuilder Builder(CGM); in emitForMemory()
1904 llvm::Type *LoadStoreTy = CGM.getTypes().convertTypeForLoadStore(destType); in emitForMemory()
1911 CI, LoadStoreTy, CGM.getDataLayout()); in emitForMemory()
1912 if (CGM.getTypes().typeRequiresSplitIntoByteArray(destType, C->getType())) { in emitForMemory()
1915 llvm::Type *DesiredTy = CGM.getTypes().ConvertTypeForMem(destType); in emitForMemory()
1939 Success = E->EvaluateAsLValue(Result, CGM.getContext()); in tryEmitPrivate()
1941 Success = E->EvaluateAsRValue(Result, CGM.getContext(), InConstantContext); in tryEmitPrivate()
1971 CodeGenModule &CGM; member in __anon9d6f04f10b11::ConstantLValueEmitter
1984 : CGM(emitter.CGM), Emitter(emitter), Value(value), DestType(destType), in ConstantLValueEmitter()
2021 return llvm::ConstantInt::get(CGM.Int64Ty, in getOffset()
2030 return llvm::ConstantExpr::getGetElementPtr(CGM.Int8Ty, C, getOffset()); in applyOffset()
2046 auto destTy = CGM.getTypes().ConvertTypeForMem(DestType); in tryEmit()
2083 return CGM.getNullPointer(destPtrTy, DestType); in tryEmitAbsolute()
2089 auto intptrTy = CGM.getDataLayout().getIntPtrType(destPtrTy); in tryEmitAbsolute()
2092 CGM.getDataLayout()); in tryEmitAbsolute()
2107 return CGM.GetWeakRefReference(D).getPointer(); in tryEmitBase()
2113 AuthInfo = CGM.getFunctionPointerAuthInfo(DestType); in tryEmitBase()
2120 C = CGM.getConstantSignedPointer( in tryEmitBase()
2130 return PtrAuthSign(CGM.getRawFunctionPointer(FD)); in tryEmitBase()
2136 return CGM.GetAddrOfGlobalVar(VD); in tryEmitBase()
2139 return CGM.getOrCreateStaticVarDecl( in tryEmitBase()
2140 *VD, CGM.getLLVMLinkageVarDefinition(VD)); in tryEmitBase()
2146 return CGM.GetAddrOfMSGuidDecl(GD); in tryEmitBase()
2149 return CGM.GetAddrOfUnnamedGlobalConstantDecl(GCD); in tryEmitBase()
2152 return CGM.GetAddrOfTemplateParamObject(TPO); in tryEmitBase()
2159 return CGM.GetAddrOfRTTIDescriptor(QualType(TI.getType(), 0)); in tryEmitBase()
2174 ConstantEmitter CompoundLiteralEmitter(CGM, Emitter.CGF); in VisitCompoundLiteralExpr()
2181 return CGM.GetAddrOfConstantStringFromLiteral(E); in VisitStringLiteral()
2186 return CGM.GetAddrOfConstantStringFromObjCEncode(E); in VisitObjCEncodeExpr()
2191 CodeGenModule &CGM) { in emitConstantObjCStringLiteral() argument
2192 auto C = CGM.getObjCRuntime().GenerateConstantString(S); in emitConstantObjCStringLiteral()
2193 return C.withElementType(CGM.getTypes().ConvertTypeForMem(T)); in emitConstantObjCStringLiteral()
2198 return emitConstantObjCStringLiteral(E->getString(), E->getType(), CGM); in VisitObjCStringLiteral()
2206 return emitConstantObjCStringLiteral(SL, E->getType(), CGM); in VisitObjCBoxedExpr()
2211 return CGM.GetAddrOfConstantStringFromLiteral(E->getFunctionName()); in VisitPredefinedExpr()
2225 return CGM.GetFunctionStart( in VisitCallExpr()
2226 E->getArg(0)->getAsBuiltinConstantDeclRef(CGM.getContext())); in VisitCallExpr()
2237 return CGM.getObjCRuntime().GenerateConstantString(Literal); in VisitCallExpr()
2240 return CGM.GetAddrOfConstantCFString(Literal); in VisitCallExpr()
2251 llvm::Constant *SignedPointer = CGM.getConstantSignedPointer( in emitPointerAuthSignConstant()
2258 bool Succeeded = E->EvaluateAsRValue(Result, CGM.getContext()); in emitPointerAuthPointer()
2266 return ConstantEmitter(CGM, Emitter.CGF) in emitPointerAuthPointer()
2271 return E->EvaluateKnownConstInt(CGM.getContext()).getZExtValue(); in emitPointerAuthKey()
2281 llvm::Constant *Pointer = ConstantEmitter(CGM).emitAbstract( in emitPointerAuthDiscriminator()
2283 auto *Extra = cast<llvm::ConstantInt>(ConstantEmitter(CGM).emitAbstract( in emitPointerAuthDiscriminator()
2289 llvm::Constant *Result = ConstantEmitter(CGM).emitAbstract(E, E->getType()); in emitPointerAuthDiscriminator()
2303 return CGM.GetAddrOfGlobalBlock(E, functionName); in VisitBlockExpr()
2310 T = E->getTypeOperand(CGM.getContext()); in VisitCXXTypeidExpr()
2313 return CGM.GetAddrOfRTTIDescriptor(T); in VisitCXXTypeidExpr()
2321 return CGM.GetAddrOfGlobalTemporary(E, Inner); in VisitMaterializeTemporaryExpr()
2331 return llvm::UndefValue::get(CGM.getTypes().ConvertType(DestType)); in tryEmitPrivate()
2337 return llvm::ConstantInt::get(CGM.getLLVMContext(), Value.getInt()); in tryEmitPrivate()
2339 return llvm::ConstantInt::get(CGM.getLLVMContext(), in tryEmitPrivate()
2344 Complex[0] = llvm::ConstantInt::get(CGM.getLLVMContext(), in tryEmitPrivate()
2346 Complex[1] = llvm::ConstantInt::get(CGM.getLLVMContext(), in tryEmitPrivate()
2357 !CGM.getContext().getLangOpts().NativeHalfType && in tryEmitPrivate()
2358 CGM.getContext().getTargetInfo().useFP16ConversionIntrinsics()) in tryEmitPrivate()
2359 return llvm::ConstantInt::get(CGM.getLLVMContext(), in tryEmitPrivate()
2362 return llvm::ConstantFP::get(CGM.getLLVMContext(), Init); in tryEmitPrivate()
2367 Complex[0] = llvm::ConstantFP::get(CGM.getLLVMContext(), in tryEmitPrivate()
2369 Complex[1] = llvm::ConstantFP::get(CGM.getLLVMContext(), in tryEmitPrivate()
2384 Inits[I] = llvm::ConstantInt::get(CGM.getLLVMContext(), Elt.getInt()); in tryEmitPrivate()
2386 Inits[I] = llvm::ConstantFP::get(CGM.getLLVMContext(), Elt.getFloat()); in tryEmitPrivate()
2388 Inits[I] = llvm::UndefValue::get(CGM.getTypes().ConvertType( in tryEmitPrivate()
2403 llvm::Type *ResultType = CGM.getTypes().ConvertType(DestType); in tryEmitPrivate()
2404 LHS = llvm::ConstantExpr::getPtrToInt(LHS, CGM.IntPtrTy); in tryEmitPrivate()
2405 RHS = llvm::ConstantExpr::getPtrToInt(RHS, CGM.IntPtrTy); in tryEmitPrivate()
2417 const ArrayType *ArrayTy = CGM.getContext().getAsArrayType(DestType); in tryEmitPrivate()
2451 cast<llvm::ArrayType>(CGM.getTypes().ConvertType(DestType)); in tryEmitPrivate()
2457 return EmitArrayConstant(CGM, Desired, CommonElementType, NumElements, Elts, in tryEmitPrivate()
2461 return CGM.getCXXABI().EmitMemberPointer(Value, DestType); in tryEmitPrivate()
2501 static llvm::Constant *EmitNullConstantForBase(CodeGenModule &CGM,
2505 static llvm::Constant *EmitNullConstant(CodeGenModule &CGM, in EmitNullConstant() argument
2508 const CGRecordLayout &layout = CGM.getTypes().getCGRecordLayout(record); in EmitNullConstant()
2530 if (isEmptyRecordForLayout(CGM.getContext(), I.getType()) || in EmitNullConstant()
2531 CGM.getContext() in EmitNullConstant()
2539 elements[fieldIndex] = EmitNullConstantForBase(CGM, baseType, base); in EmitNullConstant()
2548 !isEmptyFieldForLayout(CGM.getContext(), Field)) { in EmitNullConstant()
2550 elements[fieldIndex] = CGM.EmitNullConstant(Field->getType()); in EmitNullConstant()
2570 if (isEmptyRecordForLayout(CGM.getContext(), I.getType())) in EmitNullConstant()
2579 elements[fieldIndex] = EmitNullConstantForBase(CGM, baseType, base); in EmitNullConstant()
2593 static llvm::Constant *EmitNullConstantForBase(CodeGenModule &CGM, in EmitNullConstantForBase() argument
2596 const CGRecordLayout &baseLayout = CGM.getTypes().getCGRecordLayout(base); in EmitNullConstantForBase()
2603 return EmitNullConstant(CGM, base, /*asCompleteObject=*/false); in EmitNullConstantForBase()
2606 llvm::Constant *ConstantEmitter::emitNullForMemory(CodeGenModule &CGM, in emitNullForMemory() argument
2608 return emitForMemory(CGM, CGM.EmitNullConstant(T), T); in emitNullForMemory()