Lines Matching refs:CGM
43 CodeGenModule &CGM; member
45 ConstantAggregateBuilderUtils(CodeGenModule &CGM) : CGM(CGM) {} in ConstantAggregateBuilderUtils()
49 CGM.getDataLayout().getABITypeAlignment(C->getType())); in getAlignment()
53 return CharUnits::fromQuantity(CGM.getDataLayout().getTypeAllocSize(Ty)); in getSize()
61 llvm::Type *Ty = CGM.CharTy; in getPadding()
68 llvm::Type *Ty = llvm::ArrayType::get(CGM.CharTy, ZeroSize.getQuantity()); in getZeroes()
99 static llvm::Constant *buildFrom(CodeGenModule &CGM,
107 ConstantAggregateBuilder(CodeGenModule &CGM) in ConstantAggregateBuilder() argument
108 : ConstantAggregateBuilderUtils(CGM) {} in ConstantAggregateBuilder()
130 return buildFrom(CGM, Elems, Offsets, CharUnits::Zero(), Size, in build()
182 const ASTContext &Context = CGM.getContext(); in addBits()
183 const uint64_t CharWidth = CGM.getContext().getCharWidth(); in addBits()
203 if (CGM.getDataLayout().isBigEndian()) { in addBits()
219 add(llvm::ConstantInt::get(CGM.getLLVMContext(), BitsThisChar), in addBits()
237 if (CGM.getDataLayout().isBigEndian()) in addBits()
248 add(llvm::ConstantInt::get(CGM.getLLVMContext(), BitsThisChar), in addBits()
263 ToUpdate = llvm::ConstantInt::get(CGM.getLLVMContext(), BitsThisChar); in addBits()
272 if (!CGM.getDataLayout().isBigEndian()) in addBits()
340 CGM.getDataLayout().getStructLayout(ST); in split()
393 EmitArrayConstant(CodeGenModule &CGM, llvm::ArrayType *DesiredType,
399 CodeGenModule &CGM, ArrayRef<llvm::Constant *> Elems, in buildFrom() argument
402 ConstantAggregateBuilderUtils Utils(CGM); in buildFrom()
435 return EmitArrayConstant(CGM, ATy, CommonType, ATy->getNumElements(), in buildFrom()
493 CGM.getLLVMContext(), Packed ? PackedElems : UnpackedElems, Packed); in buildFrom()
535 CGM, makeArrayRef(Elems).slice(First, Length), in condense()
547 CodeGenModule &CGM; member in __anon411c9adc0111::ConstStructBuilder
564 : CGM(Emitter.CGM), Emitter(Emitter), Builder(Builder), in ConstStructBuilder()
585 const ASTContext &Context = CGM.getContext(); in AppendField()
602 CGM.getTypes().getCGRecordLayout(Field->getParent()); in AppendBitField()
618 CGM.getContext().toBits(StartOffset) + FieldOffset, in AppendBitField()
629 auto CAT = Emitter.CGM.getContext().getAsConstantArrayType(Type); in EmitDesignatedInitUpdater()
633 CharUnits ElemSize = Emitter.CGM.getContext().getTypeSizeInChars(ElemType); in EmitDesignatedInitUpdater()
634 llvm::Type *ElemTy = Emitter.CGM.getTypes().ConvertTypeForMem(ElemType); in EmitDesignatedInitUpdater()
675 const ASTRecordLayout &Layout = CGM.getContext().getASTRecordLayout(RD); in Build()
696 if (Field->isUnnamedBitfield() || Field->isZeroSize(CGM.getContext())) in Build()
713 CharUnits Offset = CGM.getContext().toCharUnitsFromBits( in Build()
721 CGM.getTypes().ConvertTypeForMem(Field->getType())); in Build()
776 const ASTRecordLayout &Layout = CGM.getContext().getASTRecordLayout(RD); in Build()
782 CGM.getCXXABI().getVTableAddressPointForConstExpr( in Build()
812 uint64_t OffsetBits = CGM.getContext().toBits(Offset); in Build()
822 if (Field->isUnnamedBitfield() || Field->isZeroSize(CGM.getContext())) in Build()
855 llvm::Type *ValTy = CGM.getTypes().ConvertType(Type); in Finalize()
862 ConstantAggregateBuilder Const(Emitter.CGM); in BuildStruct()
874 ConstantAggregateBuilder Const(Emitter.CGM); in BuildStruct()
896 static ConstantAddress tryEmitGlobalCompoundLiteral(CodeGenModule &CGM, in tryEmitGlobalCompoundLiteral() argument
899 CharUnits Align = CGM.getContext().getTypeAlignInChars(E->getType()); in tryEmitGlobalCompoundLiteral()
901 CGM.getAddrOfConstantCompoundLiteralIfEmitted(E)) in tryEmitGlobalCompoundLiteral()
906 ConstantEmitter emitter(CGM, CGF); in tryEmitGlobalCompoundLiteral()
915 auto GV = new llvm::GlobalVariable(CGM.getModule(), C->getType(), in tryEmitGlobalCompoundLiteral()
916 CGM.isTypeConstant(E->getType(), true), in tryEmitGlobalCompoundLiteral()
920 CGM.getContext().getTargetAddressSpace(addressSpace)); in tryEmitGlobalCompoundLiteral()
923 CGM.setAddrOfConstantCompoundLiteral(E, GV); in tryEmitGlobalCompoundLiteral()
928 EmitArrayConstant(CodeGenModule &CGM, llvm::ArrayType *DesiredType, in EmitArrayConstant() argument
985 llvm::StructType::get(CGM.getLLVMContext(), Types, true); in EmitArrayConstant()
997 CodeGenModule &CGM; member in __anon411c9adc0111::ConstExprEmitter
1002 : CGM(emitter.CGM), Emitter(emitter), VMContext(CGM.getLLVMContext()) { in ConstExprEmitter()
1044 CGM.EmitExplicitCastExprType(ECE, Emitter.CGF); in VisitCastExpr()
1067 unsigned CurSize = CGM.getDataLayout().getTypeAllocSize(C->getType()); in VisitCastExpr()
1068 unsigned TotalSize = CGM.getDataLayout().getTypeAllocSize(destTy); in VisitCastExpr()
1072 llvm::Type *Ty = CGM.CharTy; in VisitCastExpr()
1090 return CGM.getTargetCodeGenInfo().performAddrSpaceCast(CGM, C, srcAS, in VisitCastExpr()
1114 return CGM.getCXXABI().EmitMemberPointerConversion(E, C); in VisitCastExpr()
1195 auto *CAT = CGM.getContext().getAsConstantArrayType(ILE->getType()); in EmitArrayInitialization()
1235 cast<llvm::ArrayType>(CGM.getTypes().ConvertType(ILE->getType())); in EmitArrayInitialization()
1236 return EmitArrayConstant(CGM, Desired, CommonElementType, NumElements, Elts, in EmitArrayInitialization()
1246 return CGM.EmitNullConstant(T); in VisitImplicitValueInitExpr()
1268 ConstantAggregateBuilder Const(CGM); in VisitDesignatedInitUpdateExpr()
1275 llvm::Type *ValTy = CGM.getTypes().ConvertType(destType); in VisitDesignatedInitUpdateExpr()
1293 assert(CGM.getContext().hasSameUnqualifiedType(Ty, Arg->getType()) && in VisitCXXConstructExpr()
1299 return CGM.EmitNullConstant(Ty); in VisitCXXConstructExpr()
1304 return CGM.GetConstantArrayFromStringLiteral(E); in VisitStringLiteral()
1312 CGM.getContext().getObjCEncodingForType(E->getEncodedType(), Str); in VisitObjCEncodeExpr()
1313 const ConstantArrayType *CAT = CGM.getContext().getAsConstantArrayType(T); in VisitObjCEncodeExpr()
1327 return CGM.getTypes().ConvertType(T); in ConvertType()
1386 CGM.Error(E->getExprLoc(), in emitAbstract()
1388 C = CGM.EmitNullConstant(destType); in emitAbstract()
1400 CGM.Error(loc, in emitAbstract()
1402 C = CGM.EmitNullConstant(destType); in emitAbstract()
1435 auto global = new llvm::GlobalVariable(CGM.getModule(), CGM.Int8Ty, true, in getCurrentAddrPrivate()
1441 CGM.getContext().getTargetAddressSpace(DestAddressSpace)); in getCurrentAddrPrivate()
1458 CodeGenModule &CGM; member
1476 ReplacePlaceholders(CodeGenModule &CGM, llvm::Constant *base, in ReplacePlaceholders()
1479 : CGM(CGM), Base(base), in ReplacePlaceholders()
1567 IndexValues[i] = llvm::ConstantInt::get(CGM.Int32Ty, Indices[i]); in setLocation()
1593 ReplacePlaceholders(CGM, global, PlaceholderAddresses) in finalize()
1605 static QualType getNonMemoryType(CodeGenModule &CGM, QualType type) { in getNonMemoryType() argument
1607 return CGM.getContext().getQualifiedType(AT->getValueType(), in getNonMemoryType()
1618 QualType Ty = CGM.getContext().getBaseElementType(D.getType()); in tryEmitPrivateForVarInit()
1624 return CGM.EmitNullConstant(D.getType()); in tryEmitPrivateForVarInit()
1649 auto nonMemoryDestType = getNonMemoryType(CGM, destType); in tryEmitPrivateForVarInit()
1657 auto nonMemoryDestType = getNonMemoryType(CGM, destType); in tryEmitAbstractForMemory()
1665 auto nonMemoryDestType = getNonMemoryType(CGM, destType); in tryEmitAbstractForMemory()
1672 auto nonMemoryDestType = getNonMemoryType(CGM, destType); in tryEmitPrivateForMemory()
1679 auto nonMemoryDestType = getNonMemoryType(CGM, destType); in tryEmitPrivateForMemory()
1684 llvm::Constant *ConstantEmitter::emitForMemory(CodeGenModule &CGM, in emitForMemory() argument
1690 C = emitForMemory(CGM, C, destValueType); in emitForMemory()
1692 uint64_t innerSize = CGM.getContext().getTypeSize(destValueType); in emitForMemory()
1693 uint64_t outerSize = CGM.getContext().getTypeSize(destType); in emitForMemory()
1701 llvm::ArrayType::get(CGM.Int8Ty, (outerSize - innerSize) / 8)) in emitForMemory()
1708 llvm::Type *boolTy = CGM.getTypes().ConvertTypeForMem(destType); in emitForMemory()
1722 Success = E->EvaluateAsLValue(Result, CGM.getContext()); in tryEmitPrivate()
1724 Success = E->EvaluateAsRValue(Result, CGM.getContext(), InConstantContext); in tryEmitPrivate()
1757 CodeGenModule &CGM; member in __anon411c9adc0a11::ConstantLValueEmitter
1768 : CGM(emitter.CGM), Emitter(emitter), Value(value), DestType(destType) {} in ConstantLValueEmitter()
1797 return llvm::ConstantInt::get(CGM.Int64Ty, in getOffset()
1808 llvm::Type *charPtrTy = CGM.Int8Ty->getPointerTo(AS); in applyOffset()
1810 C = llvm::ConstantExpr::getGetElementPtr(CGM.Int8Ty, C, getOffset()); in applyOffset()
1828 auto destTy = CGM.getTypes().ConvertTypeForMem(DestType); in tryEmit()
1865 return CGM.getNullPointer(destPtrTy, DestType); in tryEmitAbsolute()
1871 auto intptrTy = CGM.getDataLayout().getIntPtrType(destPtrTy); in tryEmitAbsolute()
1888 return CGM.GetWeakRefReference(D).getPointer(); in tryEmitBase()
1891 return CGM.GetAddrOfFunction(FD); in tryEmitBase()
1897 return CGM.GetAddrOfGlobalVar(VD); in tryEmitBase()
1900 return CGM.getOrCreateStaticVarDecl( in tryEmitBase()
1901 *VD, CGM.getLLVMLinkageVarDefinition(VD, /*IsConstant=*/false)); in tryEmitBase()
1907 return CGM.GetAddrOfMSGuidDecl(GD); in tryEmitBase()
1910 return CGM.GetAddrOfTemplateParamObject(TPO); in tryEmitBase()
1918 CGM.getTypes().ConvertType(base.getTypeInfoType())->getPointerTo(); in tryEmitBase()
1920 CGM.GetAddrOfRTTIDescriptor(QualType(TI.getType(), 0)); in tryEmitBase()
1939 return tryEmitGlobalCompoundLiteral(CGM, Emitter.CGF, E); in VisitCompoundLiteralExpr()
1944 return CGM.GetAddrOfConstantStringFromLiteral(E); in VisitStringLiteral()
1949 return CGM.GetAddrOfConstantStringFromObjCEncode(E); in VisitObjCEncodeExpr()
1954 CodeGenModule &CGM) { in emitConstantObjCStringLiteral() argument
1955 auto C = CGM.getObjCRuntime().GenerateConstantString(S); in emitConstantObjCStringLiteral()
1956 return C.getElementBitCast(CGM.getTypes().ConvertTypeForMem(T)); in emitConstantObjCStringLiteral()
1961 return emitConstantObjCStringLiteral(E->getString(), E->getType(), CGM); in VisitObjCStringLiteral()
1969 return emitConstantObjCStringLiteral(SL, E->getType(), CGM); in VisitObjCBoxedExpr()
1974 return CGM.GetAddrOfConstantStringFromLiteral(E->getFunctionName()); in VisitPredefinedExpr()
1982 CGM.getTypes().ConvertType(E->getType())); in VisitAddrLabelExpr()
1995 return CGM.getObjCRuntime().GenerateConstantString(literal); in VisitCallExpr()
1998 return CGM.GetAddrOfConstantCFString(literal); in VisitCallExpr()
2010 return CGM.GetAddrOfGlobalBlock(E, functionName); in VisitBlockExpr()
2017 T = E->getTypeOperand(CGM.getContext()); in VisitCXXTypeidExpr()
2020 return CGM.GetAddrOfRTTIDescriptor(T); in VisitCXXTypeidExpr()
2031 return CGM.GetAddrOfGlobalTemporary(E, Inner); in VisitMaterializeTemporaryExpr()
2040 return llvm::UndefValue::get(CGM.getTypes().ConvertType(DestType)); in tryEmitPrivate()
2044 return llvm::ConstantInt::get(CGM.getLLVMContext(), Value.getInt()); in tryEmitPrivate()
2046 return llvm::ConstantInt::get(CGM.getLLVMContext(), in tryEmitPrivate()
2051 Complex[0] = llvm::ConstantInt::get(CGM.getLLVMContext(), in tryEmitPrivate()
2053 Complex[1] = llvm::ConstantInt::get(CGM.getLLVMContext(), in tryEmitPrivate()
2064 !CGM.getContext().getLangOpts().NativeHalfType && in tryEmitPrivate()
2065 CGM.getContext().getTargetInfo().useFP16ConversionIntrinsics()) in tryEmitPrivate()
2066 return llvm::ConstantInt::get(CGM.getLLVMContext(), in tryEmitPrivate()
2069 return llvm::ConstantFP::get(CGM.getLLVMContext(), Init); in tryEmitPrivate()
2074 Complex[0] = llvm::ConstantFP::get(CGM.getLLVMContext(), in tryEmitPrivate()
2076 Complex[1] = llvm::ConstantFP::get(CGM.getLLVMContext(), in tryEmitPrivate()
2091 Inits[I] = llvm::ConstantInt::get(CGM.getLLVMContext(), Elt.getInt()); in tryEmitPrivate()
2093 Inits[I] = llvm::ConstantFP::get(CGM.getLLVMContext(), Elt.getFloat()); in tryEmitPrivate()
2107 llvm::Type *ResultType = CGM.getTypes().ConvertType(DestType); in tryEmitPrivate()
2108 LHS = llvm::ConstantExpr::getPtrToInt(LHS, CGM.IntPtrTy); in tryEmitPrivate()
2109 RHS = llvm::ConstantExpr::getPtrToInt(RHS, CGM.IntPtrTy); in tryEmitPrivate()
2121 const ArrayType *ArrayTy = CGM.getContext().getAsArrayType(DestType); in tryEmitPrivate()
2155 cast<llvm::ArrayType>(CGM.getTypes().ConvertType(DestType)); in tryEmitPrivate()
2156 return EmitArrayConstant(CGM, Desired, CommonElementType, NumElements, Elts, in tryEmitPrivate()
2160 return CGM.getCXXABI().EmitMemberPointer(Value, DestType); in tryEmitPrivate()
2199 static llvm::Constant *EmitNullConstantForBase(CodeGenModule &CGM,
2203 static llvm::Constant *EmitNullConstant(CodeGenModule &CGM, in EmitNullConstant() argument
2206 const CGRecordLayout &layout = CGM.getTypes().getCGRecordLayout(record); in EmitNullConstant()
2229 CGM.getContext().getASTRecordLayout(base).getNonVirtualSize() in EmitNullConstant()
2235 elements[fieldIndex] = EmitNullConstantForBase(CGM, baseType, base); in EmitNullConstant()
2243 if (!Field->isBitField() && !Field->isZeroSize(CGM.getContext())) { in EmitNullConstant()
2245 elements[fieldIndex] = CGM.EmitNullConstant(Field->getType()); in EmitNullConstant()
2274 elements[fieldIndex] = EmitNullConstantForBase(CGM, baseType, base); in EmitNullConstant()
2288 static llvm::Constant *EmitNullConstantForBase(CodeGenModule &CGM, in EmitNullConstantForBase() argument
2291 const CGRecordLayout &baseLayout = CGM.getTypes().getCGRecordLayout(base); in EmitNullConstantForBase()
2298 return EmitNullConstant(CGM, base, /*asCompleteObject=*/false); in EmitNullConstantForBase()
2301 llvm::Constant *ConstantEmitter::emitNullForMemory(CodeGenModule &CGM, in emitNullForMemory() argument
2303 return emitForMemory(CGM, CGM.EmitNullConstant(T), T); in emitNullForMemory()