aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Transforms/Utils/LoopSimplify.cpp
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2011-01-02 13:38:21 +0000
committerDuncan Sands <baldrick@free.fr>2011-01-02 13:38:21 +0000
commit67fb341f8b0a72ca0da8ce53baa3f335c1310a85 (patch)
treebf966b039313a730834bb86d8195289f4569f126 /lib/Transforms/Utils/LoopSimplify.cpp
parent86a582ddfb32816e8f0c3068e0765a1e3a364b50 (diff)
downloadexternal_llvm-67fb341f8b0a72ca0da8ce53baa3f335c1310a85.zip
external_llvm-67fb341f8b0a72ca0da8ce53baa3f335c1310a85.tar.gz
external_llvm-67fb341f8b0a72ca0da8ce53baa3f335c1310a85.tar.bz2
Fix PR8702 by not having LoopSimplify claim to preserve LCSSA form. As described
in the PR, the pass could break LCSSA form when inserting preheaders. It probably would be easy enough to fix this, but since currently we always go into LCSSA form after running this pass, doing so is not urgent. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122695 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/LoopSimplify.cpp')
-rw-r--r--lib/Transforms/Utils/LoopSimplify.cpp27
1 files changed, 12 insertions, 15 deletions
diff --git a/lib/Transforms/Utils/LoopSimplify.cpp b/lib/Transforms/Utils/LoopSimplify.cpp
index f77a583..2e5b113 100644
--- a/lib/Transforms/Utils/LoopSimplify.cpp
+++ b/lib/Transforms/Utils/LoopSimplify.cpp
@@ -91,7 +91,6 @@ namespace {
AU.addPreserved<ScalarEvolution>();
AU.addPreservedID(BreakCriticalEdgesID); // No critical edges added.
AU.addPreserved<DominanceFrontier>();
- AU.addPreservedID(LCSSAID);
}
/// verifyAnalysis() - Verify LoopSimplifyForm's guarantees.
@@ -269,12 +268,11 @@ ReprocessLoop:
PHINode *PN;
for (BasicBlock::iterator I = L->getHeader()->begin();
(PN = dyn_cast<PHINode>(I++)); )
- if (Value *V = SimplifyInstruction(PN, 0, DT))
- if (LI->replacementPreservesLCSSAForm(PN, V)) {
- if (AA) AA->deleteValue(PN);
- PN->replaceAllUsesWith(V);
- PN->eraseFromParent();
- }
+ if (Value *V = SimplifyInstruction(PN, 0, DT)) {
+ if (AA) AA->deleteValue(PN);
+ PN->replaceAllUsesWith(V);
+ PN->eraseFromParent();
+ }
// If this loop has multiple exits and the exits all go to the same
// block, attempt to merge the exits. This helps several passes, such
@@ -450,14 +448,13 @@ static PHINode *FindPHIToPartitionLoops(Loop *L, DominatorTree *DT,
for (BasicBlock::iterator I = L->getHeader()->begin(); isa<PHINode>(I); ) {
PHINode *PN = cast<PHINode>(I);
++I;
- if (Value *V = SimplifyInstruction(PN, 0, DT))
- if (LI->replacementPreservesLCSSAForm(PN, V)) {
- // This is a degenerate PHI already, don't modify it!
- PN->replaceAllUsesWith(V);
- if (AA) AA->deleteValue(PN);
- PN->eraseFromParent();
- continue;
- }
+ if (Value *V = SimplifyInstruction(PN, 0, DT)) {
+ // This is a degenerate PHI already, don't modify it!
+ PN->replaceAllUsesWith(V);
+ if (AA) AA->deleteValue(PN);
+ PN->eraseFromParent();
+ continue;
+ }
// Scan this PHI node looking for a use of the PHI node by itself.
for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i)