mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-29 07:53:33 +00:00
Fix a really annoying "bug" introduced in r165941. The change from that
revision makes no sense. We cannot use the address space of the *post indexed* type to conclude anything about a *pre indexed* pointer type's size. More importantly, this index can never be over a pointer. We are indexing over arrays and vectors here. Of course, I have no test case here. Neither did the original patch. =/ git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166091 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fda458c2df
commit
020d9d5feb
@ -1785,9 +1785,9 @@ static Value *getNaturalGEPWithType(IRBuilder<> &IRB, const DataLayout &TD,
|
||||
break;
|
||||
if (SequentialType *SeqTy = dyn_cast<SequentialType>(ElementTy)) {
|
||||
ElementTy = SeqTy->getElementType();
|
||||
Indices.push_back(IRB.getInt(APInt(TD.getPointerSizeInBits(
|
||||
ElementTy->isPointerTy() ?
|
||||
cast<PointerType>(ElementTy)->getAddressSpace(): 0), 0)));
|
||||
// Note that we use the default address space as this index is over an
|
||||
// array or a vector, not a pointer.
|
||||
Indices.push_back(IRB.getInt(APInt(TD.getPointerSizeInBits(0), 0)));
|
||||
} else if (StructType *STy = dyn_cast<StructType>(ElementTy)) {
|
||||
if (STy->element_begin() == STy->element_end())
|
||||
break; // Nothing left to descend into.
|
||||
|
Loading…
Reference in New Issue
Block a user