[llvm] 83a87b8 - [IR] Restore vector support for deprecated CreateGEP methods
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 8 09:16:07 PDT 2021
Author: Nikita Popov
Date: 2021-07-08T18:15:56+02:00
New Revision: 83a87b831a11d99d3c986c0c285f4688119e8831
URL: https://github.com/llvm/llvm-project/commit/83a87b831a11d99d3c986c0c285f4688119e8831
DIFF: https://github.com/llvm/llvm-project/commit/83a87b831a11d99d3c986c0c285f4688119e8831.diff
LOG: [IR] Restore vector support for deprecated CreateGEP methods
As pointed out in post-commit review on rG8e22539067d9, it's
necessary to call getScalarType() to support GEPs with a vector
base. Dropping that call was an oversight on my side.
Added:
Modified:
llvm/include/llvm/IR/IRBuilder.h
llvm/include/llvm/IR/Instructions.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/IR/IRBuilder.h b/llvm/include/llvm/IR/IRBuilder.h
index c76ebb06d44a..bd7fa7f0caff 100644
--- a/llvm/include/llvm/IR/IRBuilder.h
+++ b/llvm/include/llvm/IR/IRBuilder.h
@@ -1786,8 +1786,8 @@ class IRBuilderBase {
Value *CreateGEP(Value *Ptr, ArrayRef<Value *> IdxList,
const Twine &Name = "") {
- return CreateGEP(
- Ptr->getType()->getPointerElementType(), Ptr, IdxList, Name);
+ return CreateGEP(Ptr->getType()->getScalarType()->getPointerElementType(),
+ Ptr, IdxList, Name);
}
Value *CreateGEP(Type *Ty, Value *Ptr, ArrayRef<Value *> IdxList,
@@ -1807,7 +1807,8 @@ class IRBuilderBase {
Value *CreateInBoundsGEP(Value *Ptr, ArrayRef<Value *> IdxList,
const Twine &Name = "") {
return CreateInBoundsGEP(
- Ptr->getType()->getPointerElementType(), Ptr, IdxList, Name);
+ Ptr->getType()->getScalarType()->getPointerElementType(), Ptr, IdxList,
+ Name);
}
Value *CreateInBoundsGEP(Type *Ty, Value *Ptr, ArrayRef<Value *> IdxList,
@@ -1826,7 +1827,8 @@ class IRBuilderBase {
}
Value *CreateGEP(Value *Ptr, Value *Idx, const Twine &Name = "") {
- return CreateGEP(Ptr->getType()->getPointerElementType(), Ptr, Idx, Name);
+ return CreateGEP(Ptr->getType()->getScalarType()->getPointerElementType(),
+ Ptr, Idx, Name);
}
Value *CreateGEP(Type *Ty, Value *Ptr, Value *Idx, const Twine &Name = "") {
@@ -1846,7 +1848,8 @@ class IRBuilderBase {
Value *CreateConstGEP1_32(Value *Ptr, unsigned Idx0, const Twine &Name = "") {
return CreateConstGEP1_32(
- Ptr->getType()->getPointerElementType(), Ptr, Idx0, Name);
+ Ptr->getType()->getScalarType()->getPointerElementType(), Ptr, Idx0,
+ Name);
}
Value *CreateConstGEP1_32(Type *Ty, Value *Ptr, unsigned Idx0,
@@ -1907,7 +1910,8 @@ class IRBuilderBase {
Value *CreateConstGEP1_64(Value *Ptr, uint64_t Idx0, const Twine &Name = "") {
return CreateConstGEP1_64(
- Ptr->getType()->getPointerElementType(), Ptr, Idx0, Name);
+ Ptr->getType()->getScalarType()->getPointerElementType(), Ptr, Idx0,
+ Name);
}
Value *CreateConstInBoundsGEP1_64(Type *Ty, Value *Ptr, uint64_t Idx0,
@@ -1923,7 +1927,8 @@ class IRBuilderBase {
Value *CreateConstInBoundsGEP1_64(Value *Ptr, uint64_t Idx0,
const Twine &Name = "") {
return CreateConstInBoundsGEP1_64(
- Ptr->getType()->getPointerElementType(), Ptr, Idx0, Name);
+ Ptr->getType()->getScalarType()->getPointerElementType(), Ptr, Idx0,
+ Name);
}
Value *CreateConstGEP2_64(Type *Ty, Value *Ptr, uint64_t Idx0, uint64_t Idx1,
@@ -1942,7 +1947,8 @@ class IRBuilderBase {
Value *CreateConstGEP2_64(Value *Ptr, uint64_t Idx0, uint64_t Idx1,
const Twine &Name = "") {
return CreateConstGEP2_64(
- Ptr->getType()->getPointerElementType(), Ptr, Idx0, Idx1, Name);
+ Ptr->getType()->getScalarType()->getPointerElementType(), Ptr, Idx0,
+ Idx1, Name);
}
Value *CreateConstInBoundsGEP2_64(Type *Ty, Value *Ptr, uint64_t Idx0,
@@ -1961,7 +1967,8 @@ class IRBuilderBase {
Value *CreateConstInBoundsGEP2_64(Value *Ptr, uint64_t Idx0, uint64_t Idx1,
const Twine &Name = "") {
return CreateConstInBoundsGEP2_64(
- Ptr->getType()->getPointerElementType(), Ptr, Idx0, Idx1, Name);
+ Ptr->getType()->getScalarType()->getPointerElementType(), Ptr, Idx0,
+ Idx1, Name);
}
Value *CreateStructGEP(Type *Ty, Value *Ptr, unsigned Idx,
@@ -1971,7 +1978,8 @@ class IRBuilderBase {
Value *CreateStructGEP(Value *Ptr, unsigned Idx, const Twine &Name = "") {
return CreateConstInBoundsGEP2_32(
- Ptr->getType()->getPointerElementType(), Ptr, 0, Idx, Name);
+ Ptr->getType()->getScalarType()->getPointerElementType(), Ptr, 0, Idx,
+ Name);
}
/// Same as CreateGlobalString, but return a pointer with "i8*" type
diff --git a/llvm/include/llvm/IR/Instructions.h b/llvm/include/llvm/IR/Instructions.h
index e48a14f4b5b4..a5cebf0a4626 100644
--- a/llvm/include/llvm/IR/Instructions.h
+++ b/llvm/include/llvm/IR/Instructions.h
@@ -987,8 +987,9 @@ class GetElementPtrInst : public Instruction {
Value *Ptr, ArrayRef<Value *> IdxList, const Twine &NameStr = "",
Instruction *InsertBefore = nullptr),
"Use the version with explicit element type instead") {
- return CreateInBounds(Ptr->getType()->getPointerElementType(), Ptr, IdxList,
- NameStr, InsertBefore);
+ return CreateInBounds(
+ Ptr->getType()->getScalarType()->getPointerElementType(), Ptr, IdxList,
+ NameStr, InsertBefore);
}
/// Create an "inbounds" getelementptr. See the documentation for the
@@ -1007,8 +1008,9 @@ class GetElementPtrInst : public Instruction {
Value *Ptr, ArrayRef<Value *> IdxList, const Twine &NameStr,
BasicBlock *InsertAtEnd),
"Use the version with explicit element type instead") {
- return CreateInBounds(Ptr->getType()->getPointerElementType(), Ptr, IdxList,
- NameStr, InsertAtEnd);
+ return CreateInBounds(
+ Ptr->getType()->getScalarType()->getPointerElementType(), Ptr, IdxList,
+ NameStr, InsertAtEnd);
}
static GetElementPtrInst *CreateInBounds(Type *PointeeType, Value *Ptr,
More information about the llvm-commits
mailing list