mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-30 23:20:54 +00:00
[LIR] Re-instate r244880, reverted in r244884, factoring the handling of
AliasAnalysis in LoopIdiomRecognize. The previous commit to LIR, r244879, exposed some scary bug in the loop pass pipeline with an assert failure that showed up on several bots. This patch got reverted as part of getting that revision reverted, but they're actually independent and unrelated. This patch has no functional change and should be completely safe. It is also useful for my current work on the AA infrastructure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244993 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5d09c2f25d
commit
62b7c9cb84
@ -69,6 +69,7 @@ namespace {
|
||||
|
||||
class LoopIdiomRecognize : public LoopPass {
|
||||
Loop *CurLoop;
|
||||
AliasAnalysis *AA;
|
||||
DominatorTree *DT;
|
||||
LoopInfo *LI;
|
||||
ScalarEvolution *SE;
|
||||
@ -188,6 +189,7 @@ bool LoopIdiomRecognize::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
if (Name == "memset" || Name == "memcpy")
|
||||
return false;
|
||||
|
||||
AA = &getAnalysis<AliasAnalysis>();
|
||||
DT = &getAnalysis<DominatorTreeWrapperPass>().getDomTree();
|
||||
LI = &getAnalysis<LoopInfoWrapperPass>().getLoopInfo();
|
||||
SE = &getAnalysis<ScalarEvolution>();
|
||||
@ -505,7 +507,7 @@ bool LoopIdiomRecognize::processLoopStridedStore(
|
||||
Preheader->getTerminator());
|
||||
|
||||
if (mayLoopAccessLocation(BasePtr, MRI_ModRef, CurLoop, BECount, StoreSize,
|
||||
getAnalysis<AliasAnalysis>(), TheStore)) {
|
||||
*AA, TheStore)) {
|
||||
Expander.clear();
|
||||
// If we generated new code for the base pointer, clean up.
|
||||
RecursivelyDeleteTriviallyDeadInstructions(BasePtr, TLI);
|
||||
@ -594,7 +596,7 @@ bool LoopIdiomRecognize::processLoopStoreOfLoopLoad(
|
||||
Preheader->getTerminator());
|
||||
|
||||
if (mayLoopAccessLocation(StoreBasePtr, MRI_ModRef, CurLoop, BECount,
|
||||
StoreSize, getAnalysis<AliasAnalysis>(), SI)) {
|
||||
StoreSize, *AA, SI)) {
|
||||
Expander.clear();
|
||||
// If we generated new code for the base pointer, clean up.
|
||||
RecursivelyDeleteTriviallyDeadInstructions(StoreBasePtr, TLI);
|
||||
@ -608,7 +610,7 @@ bool LoopIdiomRecognize::processLoopStoreOfLoopLoad(
|
||||
Preheader->getTerminator());
|
||||
|
||||
if (mayLoopAccessLocation(LoadBasePtr, MRI_Mod, CurLoop, BECount, StoreSize,
|
||||
getAnalysis<AliasAnalysis>(), SI)) {
|
||||
*AA, SI)) {
|
||||
Expander.clear();
|
||||
// If we generated new code for the base pointer, clean up.
|
||||
RecursivelyDeleteTriviallyDeadInstructions(LoadBasePtr, TLI);
|
||||
|
Loading…
Reference in New Issue
Block a user