Author: Nikita Popov Date: 2021-07-17T17:07:46+02:00 New Revision: 5071360eb1cf4a93ab72fd4ba47680a9eda98e39
URL: https://github.com/llvm/llvm-project/commit/5071360eb1cf4a93ab72fd4ba47680a9eda98e39 DIFF: https://github.com/llvm/llvm-project/commit/5071360eb1cf4a93ab72fd4ba47680a9eda98e39.diff LOG: [OpaquePtr] Remove uses of CGF.Builder.CreateConstInBoundsGEP1_64() without type Remove uses of to-be-deprecated API. Added: Modified: clang/lib/CodeGen/CGCXX.cpp clang/lib/CodeGen/CGClass.cpp clang/lib/CodeGen/ItaniumCXXABI.cpp clang/lib/CodeGen/MicrosoftCXXABI.cpp Removed: ################################################################################ diff --git a/clang/lib/CodeGen/CGCXX.cpp b/clang/lib/CodeGen/CGCXX.cpp index 641740c37a68..86f548191d65 100644 --- a/clang/lib/CodeGen/CGCXX.cpp +++ b/clang/lib/CodeGen/CGCXX.cpp @@ -262,7 +262,7 @@ static CGCallee BuildAppleKextVirtualCall(CodeGenFunction &CGF, VTableIndex += VTLayout.getVTableOffset(AddressPoint.VTableIndex) + AddressPoint.AddressPointIndex; llvm::Value *VFuncPtr = - CGF.Builder.CreateConstInBoundsGEP1_64(VTable, VTableIndex, "vfnkxt"); + CGF.Builder.CreateConstInBoundsGEP1_64(Ty, VTable, VTableIndex, "vfnkxt"); llvm::Value *VFunc = CGF.Builder.CreateAlignedLoad( Ty, VFuncPtr, llvm::Align(CGF.PointerAlignInBytes)); CGCallee Callee(GD, VFunc); diff --git a/clang/lib/CodeGen/CGClass.cpp b/clang/lib/CodeGen/CGClass.cpp index 19fae7657669..c998707a883f 100644 --- a/clang/lib/CodeGen/CGClass.cpp +++ b/clang/lib/CodeGen/CGClass.cpp @@ -493,7 +493,7 @@ llvm::Value *CodeGenFunction::GetVTTParameter(GlobalDecl GD, if (CGM.getCXXABI().NeedsVTTParameter(CurGD)) { // A VTT parameter was passed to the constructor, use it. llvm::Value *VTT = LoadCXXVTT(); - return Builder.CreateConstInBoundsGEP1_64(VTT, SubVTTIndex); + return Builder.CreateConstInBoundsGEP1_64(VoidPtrTy, VTT, SubVTTIndex); } else { // We're the complete constructor, so get the VTT by name. llvm::GlobalValue *VTT = CGM.getVTables().GetAddrOfVTT(RD); diff --git a/clang/lib/CodeGen/ItaniumCXXABI.cpp b/clang/lib/CodeGen/ItaniumCXXABI.cpp index 8d355a8efd50..88b189319763 100644 --- a/clang/lib/CodeGen/ItaniumCXXABI.cpp +++ b/clang/lib/CodeGen/ItaniumCXXABI.cpp @@ -1254,7 +1254,7 @@ void ItaniumCXXABI::emitVirtualObjectDelete(CodeGenFunction &CGF, // Track back to entry -2 and pull out the offset there. llvm::Value *OffsetPtr = CGF.Builder.CreateConstInBoundsGEP1_64( - VTable, -2, "complete-offset.ptr"); + CGF.IntPtrTy, VTable, -2, "complete-offset.ptr"); llvm::Value *Offset = CGF.Builder.CreateAlignedLoad(CGF.IntPtrTy, OffsetPtr, CGF.getPointerAlign()); // Apply the offset. @@ -1466,7 +1466,8 @@ llvm::Value *ItaniumCXXABI::EmitTypeid(CodeGenFunction &CGF, Value = CGF.Builder.CreateBitCast(Value, StdTypeInfoPtrTy->getPointerTo()); } else { // Load the type info. - Value = CGF.Builder.CreateConstInBoundsGEP1_64(Value, -1ULL); + Value = + CGF.Builder.CreateConstInBoundsGEP1_64(StdTypeInfoPtrTy, Value, -1ULL); } return CGF.Builder.CreateAlignedLoad(StdTypeInfoPtrTy, Value, CGF.getPointerAlign()); @@ -1547,7 +1548,8 @@ llvm::Value *ItaniumCXXABI::EmitDynamicCastToVoid(CodeGenFunction &CGF, CGF.GetVTablePtr(ThisAddr, PtrDiffLTy->getPointerTo(), ClassDecl); // Get the offset-to-top from the vtable. - OffsetToTop = CGF.Builder.CreateConstInBoundsGEP1_64(VTable, -2ULL); + OffsetToTop = + CGF.Builder.CreateConstInBoundsGEP1_64(PtrDiffLTy, VTable, -2ULL); OffsetToTop = CGF.Builder.CreateAlignedLoad( PtrDiffLTy, OffsetToTop, CGF.getPointerAlign(), "offset.to.top"); } @@ -1872,7 +1874,8 @@ llvm::Value *ItaniumCXXABI::getVTableAddressPointInStructorWithVTT( /// Load the VTT. llvm::Value *VTT = CGF.LoadCXXVTT(); if (VirtualPointerIndex) - VTT = CGF.Builder.CreateConstInBoundsGEP1_64(VTT, VirtualPointerIndex); + VTT = CGF.Builder.CreateConstInBoundsGEP1_64( + CGF.VoidPtrTy, VTT, VirtualPointerIndex); // And load the address point from the VTT. return CGF.Builder.CreateAlignedLoad(CGF.VoidPtrTy, VTT, @@ -1943,9 +1946,10 @@ CGCallee ItaniumCXXABI::getVirtualFunctionPointer(CodeGenFunction &CGF, Address This, llvm::Type *Ty, SourceLocation Loc) { + llvm::Type *TyPtr = Ty->getPointerTo(); auto *MethodDecl = cast<CXXMethodDecl>(GD.getDecl()); llvm::Value *VTable = CGF.GetVTablePtr( - This, Ty->getPointerTo()->getPointerTo(), MethodDecl->getParent()); + This, TyPtr->getPointerTo(), MethodDecl->getParent()); uint64_t VTableIndex = CGM.getItaniumVTableContext().getMethodVTableIndex(GD); llvm::Value *VFunc; @@ -1962,14 +1966,14 @@ CGCallee ItaniumCXXABI::getVirtualFunctionPointer(CodeGenFunction &CGF, llvm::Value *Load = CGF.Builder.CreateCall( CGM.getIntrinsic(llvm::Intrinsic::load_relative, {CGM.Int32Ty}), {VTable, llvm::ConstantInt::get(CGM.Int32Ty, 4 * VTableIndex)}); - VFuncLoad = CGF.Builder.CreateBitCast(Load, Ty->getPointerTo()); + VFuncLoad = CGF.Builder.CreateBitCast(Load, TyPtr); } else { VTable = - CGF.Builder.CreateBitCast(VTable, Ty->getPointerTo()->getPointerTo()); - llvm::Value *VTableSlotPtr = - CGF.Builder.CreateConstInBoundsGEP1_64(VTable, VTableIndex, "vfn"); + CGF.Builder.CreateBitCast(VTable, TyPtr->getPointerTo()); + llvm::Value *VTableSlotPtr = CGF.Builder.CreateConstInBoundsGEP1_64( + TyPtr, VTable, VTableIndex, "vfn"); VFuncLoad = - CGF.Builder.CreateAlignedLoad(Ty->getPointerTo(), VTableSlotPtr, + CGF.Builder.CreateAlignedLoad(TyPtr, VTableSlotPtr, CGF.getPointerAlign()); } @@ -2108,8 +2112,8 @@ static llvm::Value *performTypeAdjustment(CodeGenFunction &CGF, llvm::Value *VTablePtr = CGF.Builder.CreateLoad(VTablePtrPtr); llvm::Value *Offset; - llvm::Value *OffsetPtr = - CGF.Builder.CreateConstInBoundsGEP1_64(VTablePtr, VirtualAdjustment); + llvm::Value *OffsetPtr = CGF.Builder.CreateConstInBoundsGEP1_64( + CGF.Int8Ty, VTablePtr, VirtualAdjustment); if (CGF.CGM.getItaniumVTableContext().isRelativeLayout()) { // Load the adjustment offset from the vtable as a 32-bit int. OffsetPtr = @@ -2138,7 +2142,7 @@ static llvm::Value *performTypeAdjustment(CodeGenFunction &CGF, // In a derived-to-base conversion, the non-virtual adjustment is // applied second. if (NonVirtualAdjustment && IsReturnAdjustment) { - ResultPtr = CGF.Builder.CreateConstInBoundsGEP1_64(ResultPtr, + ResultPtr = CGF.Builder.CreateConstInBoundsGEP1_64(CGF.Int8Ty, ResultPtr, NonVirtualAdjustment); } diff --git a/clang/lib/CodeGen/MicrosoftCXXABI.cpp b/clang/lib/CodeGen/MicrosoftCXXABI.cpp index 68f2828febe2..3f2dd0e7b555 100644 --- a/clang/lib/CodeGen/MicrosoftCXXABI.cpp +++ b/clang/lib/CodeGen/MicrosoftCXXABI.cpp @@ -1951,7 +1951,7 @@ CGCallee MicrosoftCXXABI::getVirtualFunctionPointer(CodeGenFunction &CGF, CGF.EmitTypeMetadataCodeForVCall(getObjectWithVPtr(), VTable, Loc); llvm::Value *VFuncPtr = - Builder.CreateConstInBoundsGEP1_64(VTable, ML.Index, "vfn"); + Builder.CreateConstInBoundsGEP1_64(Ty, VTable, ML.Index, "vfn"); VFunc = Builder.CreateAlignedLoad(Ty, VFuncPtr, CGF.getPointerAlign()); } @@ -2080,14 +2080,14 @@ MicrosoftCXXABI::EmitVirtualMemPtrThunk(const CXXMethodDecl *MD, // Load the vfptr and then callee from the vftable. The callee should have // adjusted 'this' so that the vfptr is at offset zero. + llvm::Type *ThunkPtrTy = ThunkTy->getPointerTo(); llvm::Value *VTable = CGF.GetVTablePtr( - getThisAddress(CGF), ThunkTy->getPointerTo()->getPointerTo(), MD->getParent()); + getThisAddress(CGF), ThunkPtrTy->getPointerTo(), MD->getParent()); - llvm::Value *VFuncPtr = - CGF.Builder.CreateConstInBoundsGEP1_64(VTable, ML.Index, "vfn"); + llvm::Value *VFuncPtr = CGF.Builder.CreateConstInBoundsGEP1_64( + ThunkPtrTy, VTable, ML.Index, "vfn"); llvm::Value *Callee = - CGF.Builder.CreateAlignedLoad(ThunkTy->getPointerTo(), VFuncPtr, - CGF.getPointerAlign()); + CGF.Builder.CreateAlignedLoad(ThunkPtrTy, VFuncPtr, CGF.getPointerAlign()); CGF.EmitMustTailThunk(MD, getThisValue(CGF), {ThunkTy, Callee}); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits