llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang <details> <summary>Changes</summary> - Update CodeGenTypeCache to use a single union for all pointers in address space zero. - Introduce a UnqualPtrTy in CodeGenTypeCache, and use that (for example instead of llvm::PointerType::getUnqual) in some places. - Drop some redundant bit/pointers casts from ptr to ptr. -- Patch is 35.48 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/65624.diff 13 Files Affected: - (modified) clang/lib/CodeGen/CGAtomic.cpp (+1-2) - (modified) clang/lib/CodeGen/CGBlocks.cpp (+7-13) - (modified) clang/lib/CodeGen/CGBuiltin.cpp (+30-69) - (modified) clang/lib/CodeGen/CGCUDANV.cpp (+3-6) - (modified) clang/lib/CodeGen/CGExpr.cpp (+2-2) - (modified) clang/lib/CodeGen/CGObjCRuntime.cpp (+1-3) - (modified) clang/lib/CodeGen/CGOpenCLRuntime.cpp (+7-9) - (modified) clang/lib/CodeGen/CodeGenModule.cpp (+7-6) - (modified) clang/lib/CodeGen/CodeGenTypeCache.h (+2-5) - (modified) clang/lib/CodeGen/ItaniumCXXABI.cpp (+16-23) - (modified) clang/lib/CodeGen/Targets/PPC.cpp (+1-1) - (modified) clang/lib/CodeGen/Targets/Sparc.cpp (+1-1) - (modified) clang/lib/CodeGen/Targets/X86.cpp (+3-7) <pre> diff --git a/clang/lib/CodeGen/CGAtomic.cpp b/clang/lib/CodeGen/CGAtomic.cpp index 222b0a192c85e20..83ad6739015b8d2 100644 --- a/clang/lib/CodeGen/CGAtomic.cpp +++ b/clang/lib/CodeGen/CGAtomic.cpp @@ -87,8 +87,7 @@ namespace { llvm::Value *StoragePtr = CGF.Builder.CreateConstGEP1_64( CGF.Int8Ty, BitFieldPtr, OffsetInChars.getQuantity()); StoragePtr = CGF.Builder.CreateAddrSpaceCast( - StoragePtr, llvm::PointerType::getUnqual(CGF.getLLVMContext()), - &quot;atomic_bitfield_base&quot;); + StoragePtr, CGF.UnqualPtrTy, &quot;atomic_bitfield_base&quot;); BFI = OrigBFI; BFI.Offset = Offset; BFI.StorageSize = AtomicSizeInBits; diff --git a/clang/lib/CodeGen/CGBlocks.cpp b/clang/lib/CodeGen/CGBlocks.cpp index 4f64012fc1a5c39..aa3e730d28efae5 100644 --- a/clang/lib/CodeGen/CGBlocks.cpp +++ b/clang/lib/CodeGen/CGBlocks.cpp @@ -1189,8 +1189,8 @@ RValue CodeGenFunction::EmitBlockCallExpr(const CallExpr *E, } } else { // Bitcast the block literal to a generic block literal. - BlockPtr = Builder.CreatePointerCast( - BlockPtr, llvm::PointerType::get(GenBlockTy, 0), &quot;block.literal&quot;); + BlockPtr = + Builder.CreatePointerCast(BlockPtr, UnqualPtrTy, &quot;block.literal&quot;); // Get pointer to the block invoke function llvm::Value *FuncPtr = Builder.CreateStructGEP(GenBlockTy, BlockPtr, 3); @@ -1208,12 +1208,6 @@ RValue CodeGenFunction::EmitBlockCallExpr(const CallExpr *E, const CGFunctionInfo &amp;FnInfo = CGM.getTypes().arrangeBlockFunctionCall(Args, FuncTy); - // Cast the function pointer to the right type. - llvm::Type *BlockFTy = CGM.getTypes().GetFunctionType(FnInfo); - - llvm::Type *BlockFTyPtr = llvm::PointerType::getUnqual(BlockFTy); - Func = Builder.CreatePointerCast(Func, BlockFTyPtr); - // Prepare the callee. CGCallee Callee(CGCalleeInfo(), Func); @@ -2589,11 +2583,11 @@ const BlockByrefInfo &amp;CodeGenFunction::getBlockByrefInfo(const VarDecl *D) { SmallVector&lt;llvm::Type *, 8&gt; types; // void *__isa; - types.push_back(Int8PtrTy); + types.push_back(VoidPtrTy); size += getPointerSize(); // void *__forwarding; - types.push_back(llvm::PointerType::getUnqual(byrefType)); + types.push_back(VoidPtrTy); size += getPointerSize(); // int32_t __flags; @@ -2608,11 +2602,11 @@ const BlockByrefInfo &amp;CodeGenFunction::getBlockByrefInfo(const VarDecl *D) { bool hasCopyAndDispose = getContext().BlockRequiresCopying(Ty, D); if (hasCopyAndDispose) { /// void *__copy_helper; - types.push_back(Int8PtrTy); + types.push_back(VoidPtrTy); size += getPointerSize(); /// void *__destroy_helper; - types.push_back(Int8PtrTy); + types.push_back(VoidPtrTy); size += getPointerSize(); } @@ -2621,7 +2615,7 @@ const BlockByrefInfo &amp;CodeGenFunction::getBlockByrefInfo(const VarDecl *D) { if (getContext().getByrefLifetime(Ty, Lifetime, HasByrefExtendedLayout) &amp;&amp; HasByrefExtendedLayout) { /// void *__byref_variable_layout; - types.push_back(Int8PtrTy); + types.push_back(VoidPtrTy); size += CharUnits::fromQuantity(PointerSizeInBytes); } diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 52868ca260290b7..18f2a03c7995233 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -978,9 +978,8 @@ static llvm::Value *EmitX86BitTestIntrinsic(CodeGenFunction &amp;CGF, llvm::IntegerType *IntType = llvm::IntegerType::get( CGF.getLLVMContext(), CGF.getContext().getTypeSize(E-&gt;getArg(1)-&gt;getType())); - llvm::Type *PtrType = llvm::PointerType::getUnqual(CGF.getLLVMContext()); llvm::FunctionType *FTy = - llvm::FunctionType::get(CGF.Int8Ty, {PtrType, IntType}, false); + llvm::FunctionType::get(CGF.Int8Ty, {CGF.UnqualPtrTy, IntType}, false); llvm::InlineAsm *IA = llvm::InlineAsm::get(FTy, Asm, Constraints, /*hasSideEffects=*/true); @@ -1119,7 +1118,7 @@ static llvm::Value *emitPPCLoadReserveIntrinsic(CodeGenFunction &amp;CGF, Constraints += MachineClobbers; } - llvm::Type *PtrType = llvm::PointerType::getUnqual(CGF.getLLVMContext()); + llvm::Type *PtrType = CGF.UnqualPtrTy; llvm::FunctionType *FTy = llvm::FunctionType::get(RetType, {PtrType}, false); llvm::InlineAsm *IA = @@ -4954,8 +4953,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID, // Type of the generic packet parameter. unsigned GenericAS = getContext().getTargetAddressSpace(LangAS::opencl_generic); - llvm::Type *I8PTy = llvm::PointerType::get( - llvm::Type::getInt8Ty(getLLVMContext()), GenericAS); + llvm::Type *I8PTy = llvm::PointerType::get(getLLVMContext(), GenericAS); // Testing which overloaded version we should generate the call for. if (2U == E-&gt;getNumArgs()) { @@ -5100,11 +5098,13 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID, case Builtin::BIto_local: case Builtin::BIto_private: { auto Arg0 = EmitScalarExpr(E-&gt;getArg(0)); - auto NewArgT = llvm::PointerType::get(Int8Ty, - CGM.getContext().getTargetAddressSpace(LangAS::opencl_generic)); - auto NewRetT = llvm::PointerType::get(Int8Ty, - CGM.getContext().getTargetAddressSpace( - E-&gt;getType()-&gt;getPointeeType().getAddressSpace())); + auto NewArgT = llvm::PointerType::get( + getLLVMContext(), + CGM.getContext().getTargetAddressSpace(LangAS::opencl_generic)); + auto NewRetT = llvm::PointerType::get( + getLLVMContext(), + CGM.getContext().getTargetAddressSpace( + E-&gt;getType()-&gt;getPointeeType().getAddressSpace())); auto FTy = llvm::FunctionType::get(NewRetT, {NewArgT}, false); llvm::Value *NewArg; if (Arg0-&gt;getType()-&gt;getPointerAddressSpace() != @@ -7356,13 +7356,9 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( case NEON::BI__builtin_neon_vld1q_x3_v: case NEON::BI__builtin_neon_vld1_x4_v: case NEON::BI__builtin_neon_vld1q_x4_v: { - llvm::Type *PTy = llvm::PointerType::getUnqual(VTy-&gt;getElementType()); - Ops[1] = Builder.CreateBitCast(Ops[1], PTy); - llvm::Type *Tys[2] = { VTy, PTy }; + llvm::Type *Tys[2] = {VTy, UnqualPtrTy}; Function *F = CGM.getIntrinsic(LLVMIntrinsic, Tys); Ops[1] = Builder.CreateCall(F, Ops[1], &quot;vld1xN&quot;); - Ty = llvm::PointerType::getUnqual(Ops[1]-&gt;getType()); - Ops[0] = Builder.CreateBitCast(Ops[0], Ty); return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]); } case NEON::BI__builtin_neon_vld2_v: @@ -7381,8 +7377,6 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( Function *F = CGM.getIntrinsic(LLVMIntrinsic, Tys); Value *Align = getAlignmentValue32(PtrOp1); Ops[1] = Builder.CreateCall(F, {Ops[1], Align}, NameHint); - Ty = llvm::PointerType::getUnqual(Ops[1]-&gt;getType()); - Ops[0] = Builder.CreateBitCast(Ops[0], Ty); return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]); } case NEON::BI__builtin_neon_vld1_dup_v: @@ -7406,8 +7400,6 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( Ops[I] = Builder.CreateBitCast(Ops[I], Ty); Ops.push_back(getAlignmentValue32(PtrOp1)); Ops[1] = Builder.CreateCall(F, ArrayRef(Ops).slice(1), NameHint); - Ty = llvm::PointerType::getUnqual(Ops[1]-&gt;getType()); - Ops[0] = Builder.CreateBitCast(Ops[0], Ty); return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]); } case NEON::BI__builtin_neon_vmovl_v: { @@ -7586,16 +7578,15 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( case NEON::BI__builtin_neon_vst1q_x3_v: case NEON::BI__builtin_neon_vst1_x4_v: case NEON::BI__builtin_neon_vst1q_x4_v: { - llvm::Type *PTy = llvm::PointerType::getUnqual(VTy-&gt;getElementType()); // TODO: Currently in AArch32 mode the pointer operand comes first, whereas // in AArch64 it comes last. We may want to stick to one or another. if (Arch == llvm::Triple::aarch64 || Arch == llvm::Triple::aarch64_be || Arch == llvm::Triple::aarch64_32) { - llvm::Type *Tys[2] = { VTy, PTy }; + llvm::Type *Tys[2] = {VTy, UnqualPtrTy}; std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end()); return EmitNeonCall(CGM.getIntrinsic(LLVMIntrinsic, Tys), Ops, &quot;&quot;); } - llvm::Type *Tys[2] = { PTy, VTy }; + llvm::Type *Tys[2] = {UnqualPtrTy, VTy}; return EmitNeonCall(CGM.getIntrinsic(LLVMIntrinsic, Tys), Ops, &quot;&quot;); } case NEON::BI__builtin_neon_vsubhn_v: { @@ -7617,7 +7608,6 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( } case NEON::BI__builtin_neon_vtrn_v: case NEON::BI__builtin_neon_vtrnq_v: { - Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty)); Ops[1] = Builder.CreateBitCast(Ops[1], Ty); Ops[2] = Builder.CreateBitCast(Ops[2], Ty); Value *SV = nullptr; @@ -7645,7 +7635,6 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( } case NEON::BI__builtin_neon_vuzp_v: case NEON::BI__builtin_neon_vuzpq_v: { - Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty)); Ops[1] = Builder.CreateBitCast(Ops[1], Ty); Ops[2] = Builder.CreateBitCast(Ops[2], Ty); Value *SV = nullptr; @@ -7668,7 +7657,6 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( } case NEON::BI__builtin_neon_vzip_v: case NEON::BI__builtin_neon_vzipq_v: { - Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty)); Ops[1] = Builder.CreateBitCast(Ops[1], Ty); Ops[2] = Builder.CreateBitCast(Ops[2], Ty); Value *SV = nullptr; @@ -8190,12 +8178,11 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID, llvm::Type *RealResTy = ConvertType(Ty); llvm::Type *IntTy = llvm::IntegerType::get(getLLVMContext(), getContext().getTypeSize(Ty)); - llvm::Type *PtrTy = llvm::PointerType::getUnqual(getLLVMContext()); Function *F = CGM.getIntrinsic( BuiltinID == clang::ARM::BI__builtin_arm_ldaex ? Intrinsic::arm_ldaex : Intrinsic::arm_ldrex, - PtrTy); + UnqualPtrTy); CallInst *Val = Builder.CreateCall(F, LoadAddr, &quot;ldrex&quot;); Val-&gt;addParamAttr( 0, Attribute::get(getLLVMContext(), Attribute::ElementType, IntTy)); @@ -10361,13 +10348,12 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID, llvm::Type *RealResTy = ConvertType(Ty); llvm::Type *IntTy = llvm::IntegerType::get(getLLVMContext(), getContext().getTypeSize(Ty)); - llvm::Type *PtrTy = llvm::PointerType::getUnqual(getLLVMContext()); Function *F = CGM.getIntrinsic(BuiltinID == clang::AArch64::BI__builtin_arm_ldaex ? Intrinsic::aarch64_ldaxr : Intrinsic::aarch64_ldxr, - PtrTy); + UnqualPtrTy); CallInst *Val = Builder.CreateCall(F, LoadAddr, &quot;ldxr&quot;); Val-&gt;addParamAttr( 0, Attribute::get(getLLVMContext(), Attribute::ElementType, IntTy)); @@ -10707,8 +10693,6 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID, BuiltinID == AArch64::BI__writex18word || BuiltinID == AArch64::BI__writex18dword || BuiltinID == AArch64::BI__writex18qword) { - llvm::Type *IntTy = ConvertType(E-&gt;getArg(1)-&gt;getType()); - // Read x18 as i8* LLVMContext &amp;Context = CGM.getLLVMContext(); llvm::Metadata *Ops[] = {llvm::MDString::get(Context, &quot;x18&quot;)}; @@ -10717,12 +10701,11 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID, llvm::Function *F = CGM.getIntrinsic(llvm::Intrinsic::read_register, {Int64Ty}); llvm::Value *X18 = Builder.CreateCall(F, Metadata); - X18 = Builder.CreateIntToPtr(X18, llvm::PointerType::get(Int8Ty, 0)); + X18 = Builder.CreateIntToPtr(X18, Int8PtrTy); // Store val at x18 + offset Value *Offset = Builder.CreateZExt(EmitScalarExpr(E-&gt;getArg(0)), Int64Ty); Value *Ptr = Builder.CreateGEP(Int8Ty, X18, Offset); - Ptr = Builder.CreatePointerCast(Ptr, llvm::PointerType::get(IntTy, 0)); Value *Val = EmitScalarExpr(E-&gt;getArg(1)); StoreInst *Store = Builder.CreateAlignedStore(Val, Ptr, CharUnits::One()); return Store; @@ -10742,12 +10725,11 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID, llvm::Function *F = CGM.getIntrinsic(llvm::Intrinsic::read_register, {Int64Ty}); llvm::Value *X18 = Builder.CreateCall(F, Metadata); - X18 = Builder.CreateIntToPtr(X18, llvm::PointerType::get(Int8Ty, 0)); + X18 = Builder.CreateIntToPtr(X18, Int8PtrTy); // Load x18 + offset Value *Offset = Builder.CreateZExt(EmitScalarExpr(E-&gt;getArg(0)), Int64Ty); Value *Ptr = Builder.CreateGEP(Int8Ty, X18, Offset); - Ptr = Builder.CreatePointerCast(Ptr, llvm::PointerType::get(IntTy, 0)); LoadInst *Load = Builder.CreateAlignedLoad(IntTy, Ptr, CharUnits::One()); return Load; } @@ -12413,9 +12395,7 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID, case NEON::BI__builtin_neon_vst1q_lane_v: Ops[1] = Builder.CreateBitCast(Ops[1], Ty); Ops[1] = Builder.CreateExtractElement(Ops[1], Ops[2]); - Ty = llvm::PointerType::getUnqual(Ops[1]-&gt;getType()); - return Builder.CreateAlignedStore(Ops[1], Builder.CreateBitCast(Ops[0], Ty), - PtrOp0.getAlignment()); + return Builder.CreateAlignedStore(Ops[1], Ops[0], PtrOp0.getAlignment()); case NEON::BI__builtin_neon_vstl1_lane_s64: case NEON::BI__builtin_neon_vstl1q_lane_s64: { Ops[1] = Builder.CreateBitCast(Ops[1], Ty); @@ -12427,50 +12407,42 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID, } case NEON::BI__builtin_neon_vld2_v: case NEON::BI__builtin_neon_vld2q_v: { - llvm::Type *PTy = llvm::PointerType::getUnqual(getLLVMContext()); - llvm::Type *Tys[2] = { VTy, PTy }; + llvm::Type *Tys[2] = {VTy, UnqualPtrTy}; Function *F = CGM.getIntrinsic(Intrinsic::aarch64_neon_ld2, Tys); Ops[1] = Builder.CreateCall(F, Ops[1], &quot;vld2&quot;); return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]); } case NEON::BI__builtin_neon_vld3_v: case NEON::BI__builtin_neon_vld3q_v: { - llvm::Type *PTy = llvm::PointerType::getUnqual(getLLVMContext()); - llvm::Type *Tys[2] = { VTy, PTy }; + llvm::Type *Tys[2] = {VTy, UnqualPtrTy}; Function *F = CGM.getIntrinsic(Intrinsic::aarch64_neon_ld3, Tys); Ops[1] = Builder.CreateCall(F, Ops[1], &quot;vld3&quot;); return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]); } case NEON::BI__builtin_neon_vld4_v: case NEON::BI__builtin_neon_vld4q_v: { - llvm::Type *PTy = llvm::PointerType::getUnqual(getLLVMContext()); - llvm::Type *Tys[2] = { VTy, PTy }; + llvm::Type *Tys[2] = {VTy, UnqualPtrTy}; Function *F = CGM.getIntrinsic(Intrinsic::aarch64_neon_ld4, Tys); Ops[1] = Builder.CreateCall(F, Ops[1], &quot;vld4&quot;); - Ops[0] = Builder.CreateBitCast(Ops[0], - llvm::PointerType::getUnqual(Ops[1]-&gt;getType())); return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]); } case NEON::BI__builtin_neon_vld2_dup_v: case NEON::BI__builtin_neon_vld2q_dup_v: { - llvm::Type *PTy = llvm::PointerType::getUnqual(getLLVMContext()); - llvm::Type *Tys[2] = { VTy, PTy }; + llvm::Type *Tys[2] = {VTy, UnqualPtrTy}; Function *F = CGM.getIntrinsic(Intrinsic::aarch64_neon_ld2r, Tys); Ops[1] = Builder.CreateCall(F, Ops[1], &quot;vld2&quot;); return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]); } case NEON::BI__builtin_neon_vld3_dup_v: case NEON::BI__builtin_neon_vld3q_dup_v: { - llvm::Type *PTy = llvm::PointerType::getUnqual(getLLVMContext()); - llvm::Type *Tys[2] = { VTy, PTy }; + llvm::Type *Tys[2] = {VTy, UnqualPtrTy}; Function *F = CGM.getIntrinsic(Intrinsic::aarch64_neon_ld3r, Tys); Ops[1] = Builder.CreateCall(F, Ops[1], &quot;vld3&quot;); return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]); } case NEON::BI__builtin_neon_vld4_dup_v: case NEON::BI__builtin_neon_vld4q_dup_v: { - llvm::Type *PTy = llvm::PointerType::getUnqual(getLLVMContext()); - llvm::Type *Tys[2] = { VTy, PTy }; + llvm::Type *Tys[2] = {VTy, UnqualPtrTy}; Function *F = CGM.getIntrinsic(Intrinsic::aarch64_neon_ld4r, Tys); Ops[1] = Builder.CreateCall(F, Ops[1], &quot;vld4&quot;); return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]); @@ -14716,12 +14688,8 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, BuiltinID == X86::BI__builtin_ia32_movntss) Src = Builder.CreateExtractElement(Src, (uint64_t)0, &quot;extract&quot;); - // Convert the type of the pointer to a pointer to the stored type. - Value *BC = Builder.CreateBitCast( - Ptr, llvm::PointerType::getUnqual(Src-&gt;getType()), &quot;cast&quot;); - // Unaligned nontemporal store of the scalar value. - StoreInst *SI = Builder.CreateDefaultAlignedStore(Src, BC); + StoreInst *SI = Builder.CreateDefaultAlignedStore(Src, Ptr); SI-&gt;setMetadata(llvm::LLVMContext::MD_nontemporal, Node); SI-&gt;setAlignment(llvm::Align(1)); return SI; @@ -15783,8 +15751,8 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, case X86::BI__readfsdword: case X86::BI__readfsqword: { llvm::Type *IntTy = ConvertType(E-&gt;getType()); - Value *Ptr = - Builder.CreateIntToPtr(Ops[0], llvm::PointerType::get(IntTy, 257)); + Value *Ptr = Builder.CreateIntToPtr( + Ops[0], llvm::PointerType::get(getLLVMContext(), 257)); LoadInst *Load = Builder.CreateAlignedLoad( IntTy, Ptr, getContext().getTypeAlignInChars(E-&gt;getType())); Load-&gt;setVolatile(true); @@ -15795,8 +15763,8 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, case X86::BI__readgsdword: case X86::BI__readgsqword: { llvm::Type *IntTy = ConvertType(E-&gt;getType()); - Value *Ptr = - Builder.CreateIntToPtr(Ops[0], llvm::PointerType::get(IntTy, 256)); + Value *Ptr = Builder.CreateIntToPtr( + Ops[0], llvm::PointerType::get(getLLVMContext(), 256)); LoadInst *Load = Builder.CreateAlignedLoad( IntTy, Ptr, getContext().getTypeAlignInChars(E-&gt;getType())); Load-&gt;setVolatile(true); @@ -15810,8 +15778,6 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, for (int i = 0; i &lt; 3; ++i) { Value *Extract = Builder.CreateExtractValue(Call, i + 1); Value *Ptr = Builder.CreateConstGEP1_32(Int8Ty, Ops[2], i * 16); - Ptr = Builder.CreateBitCast( - Ptr, llvm::PointerType::getUnqual(Extract-&gt;getType())); Builder.CreateAlignedStore(Extract, Ptr, Align(1)); } @@ -15826,8 +15792,6 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, for (int i = 0; i &lt; 4; ++i) { Value *Extract = Builder.CreateExtractValue(Call, i + 1); Value *Ptr = Builder.CreateConstGEP1_32(Int8Ty, Ops[3], i * 16); - Ptr = Builder.CreateBitCast( - Ptr, llvm::PointerType::getUnqua... <truncated> </pre> </details> https://github.com/llvm/llvm-project/pull/65624 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits