From 6d3e7c783b98e5663741152f046f14c934bcf612 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 17 Jul 2021 18:25:31 +0200 Subject: [PATCH] [OpaquePtr] Remove uses of CreateConstGEP1_32() without element type Remove uses of to-be-deprecated API. I've fallen back to calling getPointerElementType() in some cases where the correct type wasn't immediately obvious to me. --- clang/lib/CodeGen/CGBuiltin.cpp | 10 +++++----- clang/lib/CodeGen/CGCUDANV.cpp | 3 ++- clang/lib/CodeGen/CGOpenMPRuntime.cpp | 23 +++++++++++++++-------- clang/lib/CodeGen/CGStmtOpenMP.cpp | 6 ++++-- clang/lib/CodeGen/ItaniumCXXABI.cpp | 3 ++- clang/lib/CodeGen/MicrosoftCXXABI.cpp | 4 ++-- llvm/lib/Target/AArch64/AArch64StackTagging.cpp | 6 +++--- 7 files changed, 33 insertions(+), 22 deletions(-) diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 7896b2a..940c588 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -14769,7 +14769,7 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, for (int i = 0; i < 6; ++i) { Value *Extract = Builder.CreateExtractValue(Call, i + 1); - Value *Ptr = Builder.CreateConstGEP1_32(Ops[2], i * 16); + Value *Ptr = Builder.CreateConstGEP1_32(Int8Ty, Ops[2], i * 16); Ptr = Builder.CreateBitCast( Ptr, llvm::PointerType::getUnqual(Extract->getType())); Builder.CreateAlignedStore(Extract, Ptr, Align(1)); @@ -14785,7 +14785,7 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, for (int i = 0; i < 7; ++i) { Value *Extract = Builder.CreateExtractValue(Call, i + 1); - Value *Ptr = Builder.CreateConstGEP1_32(Ops[3], i * 16); + Value *Ptr = Builder.CreateConstGEP1_32(Int8Ty, Ops[3], i * 16); Ptr = Builder.CreateBitCast( Ptr, llvm::PointerType::getUnqual(Extract->getType())); Builder.CreateAlignedStore(Extract, Ptr, Align(1)); @@ -14873,7 +14873,7 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, Value *InOps[9]; InOps[0] = Ops[2]; for (int i = 0; i != 8; ++i) { - Value *Ptr = Builder.CreateConstGEP1_32(Ops[1], i); + Value *Ptr = Builder.CreateConstGEP1_32(Ty, Ops[1], i); InOps[i + 1] = Builder.CreateAlignedLoad(Ty, Ptr, Align(16)); } @@ -14891,7 +14891,7 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, Builder.SetInsertPoint(NoError); for (int i = 0; i != 8; ++i) { Value *Extract = Builder.CreateExtractValue(Call, i + 1); - Value *Ptr = Builder.CreateConstGEP1_32(Ops[0], i); + Value *Ptr = Builder.CreateConstGEP1_32(Extract->getType(), Ops[0], i); Builder.CreateAlignedStore(Extract, Ptr, Align(16)); } Builder.CreateBr(End); @@ -14900,7 +14900,7 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, for (int i = 0; i != 8; ++i) { Value *Out = Builder.CreateExtractValue(Call, i + 1); Constant *Zero = llvm::Constant::getNullValue(Out->getType()); - Value *Ptr = Builder.CreateConstGEP1_32(Ops[0], i); + Value *Ptr = Builder.CreateConstGEP1_32(Out->getType(), Ops[0], i); Builder.CreateAlignedStore(Zero, Ptr, Align(16)); } Builder.CreateBr(End); diff --git a/clang/lib/CodeGen/CGCUDANV.cpp b/clang/lib/CodeGen/CGCUDANV.cpp index bfd2c16..88030fe 100644 --- a/clang/lib/CodeGen/CGCUDANV.cpp +++ b/clang/lib/CodeGen/CGCUDANV.cpp @@ -326,7 +326,8 @@ void CGNVCUDARuntime::emitDeviceStubBodyNew(CodeGenFunction &CGF, llvm::Value* VarPtr = CGF.GetAddrOfLocalVar(Args[i]).getPointer(); llvm::Value *VoidVarPtr = CGF.Builder.CreatePointerCast(VarPtr, VoidPtrTy); CGF.Builder.CreateDefaultAlignedStore( - VoidVarPtr, CGF.Builder.CreateConstGEP1_32(KernelArgs.getPointer(), i)); + VoidVarPtr, + CGF.Builder.CreateConstGEP1_32(VoidPtrTy, KernelArgs.getPointer(), i)); } llvm::BasicBlock *EndBlock = CGF.createBasicBlock("setup.end"); diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.cpp b/clang/lib/CodeGen/CGOpenMPRuntime.cpp index cc30add..14129cc 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntime.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntime.cpp @@ -743,13 +743,15 @@ static void EmitOMPAggregateInit(CodeGenFunction &CGF, Address DestAddr, if (DRD) { // Shift the address forward by one element. llvm::Value *SrcElementNext = CGF.Builder.CreateConstGEP1_32( - SrcElementPHI, /*Idx0=*/1, "omp.arraycpy.dest.element"); + SrcAddr.getElementType(), SrcElementPHI, /*Idx0=*/1, + "omp.arraycpy.dest.element"); SrcElementPHI->addIncoming(SrcElementNext, CGF.Builder.GetInsertBlock()); } // Shift the address forward by one element. llvm::Value *DestElementNext = CGF.Builder.CreateConstGEP1_32( - DestElementPHI, /*Idx0=*/1, "omp.arraycpy.dest.element"); + DestAddr.getElementType(), DestElementPHI, /*Idx0=*/1, + "omp.arraycpy.dest.element"); // Check whether we've reached the end. llvm::Value *Done = CGF.Builder.CreateICmpEQ(DestElementNext, DestEnd, "omp.arraycpy.done"); @@ -4155,8 +4157,9 @@ getPointerAndSize(CodeGenFunction &CGF, const Expr *E) { dyn_cast(E->IgnoreParenImpCasts())) { LValue UpAddrLVal = CGF.EmitOMPArraySectionExpr(ASE, /*IsLowerBound=*/false); - llvm::Value *UpAddr = - CGF.Builder.CreateConstGEP1_32(UpAddrLVal.getPointer(CGF), /*Idx0=*/1); + Address UpAddrAddress = UpAddrLVal.getAddress(CGF); + llvm::Value *UpAddr = CGF.Builder.CreateConstGEP1_32( + UpAddrAddress.getElementType(), UpAddrAddress.getPointer(), /*Idx0=*/1); llvm::Value *LowIntPtr = CGF.Builder.CreatePtrToInt(Addr, CGF.SizeTy); llvm::Value *UpIntPtr = CGF.Builder.CreatePtrToInt(UpAddr, CGF.SizeTy); SizeVal = CGF.Builder.CreateNUWSub(UpIntPtr, LowIntPtr); @@ -5375,9 +5378,11 @@ static void EmitOMPAggregateReduction( // Shift the address forward by one element. llvm::Value *LHSElementNext = CGF.Builder.CreateConstGEP1_32( - LHSElementPHI, /*Idx0=*/1, "omp.arraycpy.dest.element"); + LHSAddr.getElementType(), LHSElementPHI, /*Idx0=*/1, + "omp.arraycpy.dest.element"); llvm::Value *RHSElementNext = CGF.Builder.CreateConstGEP1_32( - RHSElementPHI, /*Idx0=*/1, "omp.arraycpy.src.element"); + RHSAddr.getElementType(), RHSElementPHI, /*Idx0=*/1, + "omp.arraycpy.src.element"); // Check whether we've reached the end. llvm::Value *Done = CGF.Builder.CreateICmpEQ(LHSElementNext, LHSEnd, "omp.arraycpy.done"); @@ -8728,7 +8733,8 @@ public: CombinedInfo.Mappers.push_back(nullptr); // Size is (addr of {highest+1} element) - (addr of lowest element) llvm::Value *HB = HBAddr.getPointer(); - llvm::Value *HAddr = CGF.Builder.CreateConstGEP1_32(HB, /*Idx0=*/1); + llvm::Value *HAddr = + CGF.Builder.CreateConstGEP1_32(HBAddr.getElementType(), HB, /*Idx0=*/1); llvm::Value *CLAddr = CGF.Builder.CreatePointerCast(LB, CGF.VoidPtrTy); llvm::Value *CHAddr = CGF.Builder.CreatePointerCast(HAddr, CGF.VoidPtrTy); llvm::Value *Diff = CGF.Builder.CreatePtrDiff(CHAddr, CLAddr); @@ -9898,8 +9904,9 @@ void CGOpenMPRuntime::emitUserDefinedMapper(const OMPDeclareMapperDecl *D, // Update the pointer to point to the next element that needs to be mapped, // and check whether we have mapped all elements. + llvm::Type *ElemTy = PtrPHI->getType()->getPointerElementType(); llvm::Value *PtrNext = MapperCGF.Builder.CreateConstGEP1_32( - PtrPHI, /*Idx0=*/1, "omp.arraymap.next"); + ElemTy, PtrPHI, /*Idx0=*/1, "omp.arraymap.next"); PtrPHI->addIncoming(PtrNext, LastBB); llvm::Value *IsDone = MapperCGF.Builder.CreateICmpEQ(PtrNext, PtrEnd, "omp.arraymap.isdone"); diff --git a/clang/lib/CodeGen/CGStmtOpenMP.cpp b/clang/lib/CodeGen/CGStmtOpenMP.cpp index edb584d..58c4171 100644 --- a/clang/lib/CodeGen/CGStmtOpenMP.cpp +++ b/clang/lib/CodeGen/CGStmtOpenMP.cpp @@ -883,9 +883,11 @@ void CodeGenFunction::EmitOMPAggregateAssign( // Shift the address forward by one element. llvm::Value *DestElementNext = Builder.CreateConstGEP1_32( - DestElementPHI, /*Idx0=*/1, "omp.arraycpy.dest.element"); + DestAddr.getElementType(), DestElementPHI, /*Idx0=*/1, + "omp.arraycpy.dest.element"); llvm::Value *SrcElementNext = Builder.CreateConstGEP1_32( - SrcElementPHI, /*Idx0=*/1, "omp.arraycpy.src.element"); + SrcAddr.getElementType(), SrcElementPHI, /*Idx0=*/1, + "omp.arraycpy.src.element"); // Check whether we've reached the end. llvm::Value *Done = Builder.CreateICmpEQ(DestElementNext, DestEnd, "omp.arraycpy.done"); diff --git a/clang/lib/CodeGen/ItaniumCXXABI.cpp b/clang/lib/CodeGen/ItaniumCXXABI.cpp index 88b1893..1c8ffb89 100644 --- a/clang/lib/CodeGen/ItaniumCXXABI.cpp +++ b/clang/lib/CodeGen/ItaniumCXXABI.cpp @@ -4449,7 +4449,8 @@ static void InitCatchParam(CodeGenFunction &CGF, // we have to skip past in order to reach the exception data. unsigned HeaderSize = CGF.CGM.getTargetCodeGenInfo().getSizeOfUnwindException(); - AdjustedExn = CGF.Builder.CreateConstGEP1_32(Exn, HeaderSize); + AdjustedExn = + CGF.Builder.CreateConstGEP1_32(CGF.Int8Ty, Exn, HeaderSize); // However, if we're catching a pointer-to-record type that won't // work, because the personality function might have adjusted diff --git a/clang/lib/CodeGen/MicrosoftCXXABI.cpp b/clang/lib/CodeGen/MicrosoftCXXABI.cpp index 3f2dd0e..a552b0b 100644 --- a/clang/lib/CodeGen/MicrosoftCXXABI.cpp +++ b/clang/lib/CodeGen/MicrosoftCXXABI.cpp @@ -1228,7 +1228,7 @@ void MicrosoftCXXABI::initializeHiddenVirtualInheritanceMembers( llvm::Value *VtorDispPtr = Builder.CreateInBoundsGEP(CGF.Int8Ty, Int8This, VBaseOffset); // vtorDisp is always the 32-bits before the vbase in the class layout. - VtorDispPtr = Builder.CreateConstGEP1_32(VtorDispPtr, -4); + VtorDispPtr = Builder.CreateConstGEP1_32(CGF.Int8Ty, VtorDispPtr, -4); VtorDispPtr = Builder.CreateBitCast( VtorDispPtr, CGF.Int32Ty->getPointerTo(AS), "vtordisp.ptr"); @@ -2227,7 +2227,7 @@ llvm::Value *MicrosoftCXXABI::performThisAdjustment(CodeGenFunction &CGF, // Non-virtual adjustment might result in a pointer outside the allocated // object, e.g. if the final overrider class is laid out after the virtual // base that declares a method in the most derived class. - V = CGF.Builder.CreateConstGEP1_32(V, TA.NonVirtual); + V = CGF.Builder.CreateConstGEP1_32(CGF.Int8Ty, V, TA.NonVirtual); } // Don't need to bitcast back, the call CodeGen will handle this. diff --git a/llvm/lib/Target/AArch64/AArch64StackTagging.cpp b/llvm/lib/Target/AArch64/AArch64StackTagging.cpp index ae6da22..6ff423f 100644 --- a/llvm/lib/Target/AArch64/AArch64StackTagging.cpp +++ b/llvm/lib/Target/AArch64/AArch64StackTagging.cpp @@ -239,7 +239,7 @@ public: << ") zero\n"); Value *Ptr = BasePtr; if (Offset) - Ptr = IRB.CreateConstGEP1_32(Ptr, Offset); + Ptr = IRB.CreateConstGEP1_32(IRB.getInt8Ty(), Ptr, Offset); IRB.CreateCall(SetTagZeroFn, {Ptr, ConstantInt::get(IRB.getInt64Ty(), Size)}); } @@ -249,7 +249,7 @@ public: << ") undef\n"); Value *Ptr = BasePtr; if (Offset) - Ptr = IRB.CreateConstGEP1_32(Ptr, Offset); + Ptr = IRB.CreateConstGEP1_32(IRB.getInt8Ty(), Ptr, Offset); IRB.CreateCall(SetTagFn, {Ptr, ConstantInt::get(IRB.getInt64Ty(), Size)}); } @@ -258,7 +258,7 @@ public: LLVM_DEBUG(dbgs() << " " << *A << "\n " << *B << "\n"); Value *Ptr = BasePtr; if (Offset) - Ptr = IRB.CreateConstGEP1_32(Ptr, Offset); + Ptr = IRB.CreateConstGEP1_32(IRB.getInt8Ty(), Ptr, Offset); IRB.CreateCall(StgpFn, {Ptr, A, B}); } -- 2.7.4