mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
[IR] Deprecate GetElementPtrInst::CreateInBounds without element type
This API is not compatible with opaque pointers, the method accepting an explicit pointer element type should be used instead. Thankfully there were few in-tree users. The BPF case still ends up using the pointer element type for now and needs something like D105407 to avoid doing so.
This commit is contained in:
parent
ba16635997
commit
3cc10c45ba
@ -987,15 +987,15 @@ public:
|
||||
NameStr, InsertAtEnd);
|
||||
}
|
||||
|
||||
/// Create an "inbounds" getelementptr. See the documentation for the
|
||||
/// "inbounds" flag in LangRef.html for details.
|
||||
static GetElementPtrInst *CreateInBounds(Value *Ptr,
|
||||
ArrayRef<Value *> IdxList,
|
||||
const Twine &NameStr = "",
|
||||
Instruction *InsertBefore = nullptr){
|
||||
LLVM_ATTRIBUTE_DEPRECATED(static GetElementPtrInst *CreateInBounds(
|
||||
Value *Ptr, ArrayRef<Value *> IdxList, const Twine &NameStr = "",
|
||||
Instruction *InsertBefore = nullptr),
|
||||
"Use the version with explicit element type instead") {
|
||||
return CreateInBounds(nullptr, Ptr, IdxList, NameStr, InsertBefore);
|
||||
}
|
||||
|
||||
/// Create an "inbounds" getelementptr. See the documentation for the
|
||||
/// "inbounds" flag in LangRef.html for details.
|
||||
static GetElementPtrInst *
|
||||
CreateInBounds(Type *PointeeType, Value *Ptr, ArrayRef<Value *> IdxList,
|
||||
const Twine &NameStr = "",
|
||||
@ -1006,10 +1006,10 @@ public:
|
||||
return GEP;
|
||||
}
|
||||
|
||||
static GetElementPtrInst *CreateInBounds(Value *Ptr,
|
||||
ArrayRef<Value *> IdxList,
|
||||
const Twine &NameStr,
|
||||
BasicBlock *InsertAtEnd) {
|
||||
LLVM_ATTRIBUTE_DEPRECATED(static GetElementPtrInst *CreateInBounds(
|
||||
Value *Ptr, ArrayRef<Value *> IdxList, const Twine &NameStr,
|
||||
BasicBlock *InsertAtEnd),
|
||||
"Use the version with explicit element type instead") {
|
||||
return CreateInBounds(nullptr, Ptr, IdxList, NameStr, InsertAtEnd);
|
||||
}
|
||||
|
||||
|
@ -367,8 +367,9 @@ void BPFAbstractMemberAccess::replaceWithGEP(std::vector<CallInst *> &CallList,
|
||||
IdxList.push_back(Zero);
|
||||
IdxList.push_back(Call->getArgOperand(GEPIndex));
|
||||
|
||||
auto *GEP = GetElementPtrInst::CreateInBounds(Call->getArgOperand(0),
|
||||
IdxList, "", Call);
|
||||
auto *GEP = GetElementPtrInst::CreateInBounds(
|
||||
Call->getArgOperand(0)->getType()->getPointerElementType(),
|
||||
Call->getArgOperand(0), IdxList, "", Call);
|
||||
Call->replaceAllUsesWith(GEP);
|
||||
Call->eraseFromParent();
|
||||
}
|
||||
|
@ -839,9 +839,9 @@ bool VectorCombine::foldSingleElementStore(Instruction &I) {
|
||||
MemoryLocation::get(SI), AA))
|
||||
return false;
|
||||
|
||||
Value *GEP = GetElementPtrInst::CreateInBounds(
|
||||
SI->getPointerOperand(), {ConstantInt::get(Idx->getType(), 0), Idx});
|
||||
Builder.Insert(GEP);
|
||||
Value *GEP = Builder.CreateInBoundsGEP(
|
||||
SI->getValueOperand()->getType(), SI->getPointerOperand(),
|
||||
{ConstantInt::get(Idx->getType(), 0), Idx});
|
||||
StoreInst *NSI = Builder.CreateStore(NewElement, GEP);
|
||||
NSI->copyMetadata(*SI);
|
||||
Align ScalarOpAlignment = computeAlignmentAfterScalarization(
|
||||
|
Loading…
Reference in New Issue
Block a user