Lines Matching defs:CGM

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