forked from OSchip/llvm-project
[SROA] Don't falsely report that changes have occured
We would report that the function changed despite creating no new allocas or performing any promotion. This fixes PR27316. llvm-svn: 267507
This commit is contained in:
parent
1aa3cf7d18
commit
30ffc4ce45
|
@ -3920,15 +3920,19 @@ AllocaInst *SROA::rewritePartition(AllocaInst &AI, AllocaSlices &AS,
|
|||
Worklist.insert(NewAI);
|
||||
}
|
||||
} else {
|
||||
// If we can't promote the alloca, iterate on it to check for new
|
||||
// refinements exposed by splitting the current alloca. Don't iterate on an
|
||||
// alloca which didn't actually change and didn't get promoted.
|
||||
if (NewAI != &AI)
|
||||
Worklist.insert(NewAI);
|
||||
|
||||
// Drop any post-promotion work items if promotion didn't happen.
|
||||
while (PostPromotionWorklist.size() > PPWOldSize)
|
||||
PostPromotionWorklist.pop_back();
|
||||
|
||||
// We couldn't promote and we didn't create a new partition, nothing
|
||||
// happened.
|
||||
if (NewAI == &AI)
|
||||
return nullptr;
|
||||
|
||||
// If we can't promote the alloca, iterate on it to check for new
|
||||
// refinements exposed by splitting the current alloca. Don't iterate on an
|
||||
// alloca which didn't actually change and didn't get promoted.
|
||||
Worklist.insert(NewAI);
|
||||
}
|
||||
|
||||
return NewAI;
|
||||
|
|
Loading…
Reference in New Issue