summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorMax Kazantsev <max.kazantsev@azul.com>2018-11-01 09:42:50 +0000
committerMax Kazantsev <max.kazantsev@azul.com>2018-11-01 09:42:50 +0000
commit46955b58eefc245f862aed31cdec23c1546bd412 (patch)
treee5a48c9fa3952307fa08e03ea160512638b458ab /llvm/lib
parent3608decaa5285e5e2d60fade30b57b82d82c2fff (diff)
downloadbcm5719-llvm-46955b58eefc245f862aed31cdec23c1546bd412.tar.gz
bcm5719-llvm-46955b58eefc245f862aed31cdec23c1546bd412.zip
[NFC] Reorganize code to prepare it for more transforms
llvm-svn: 345820
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
index ed37fc8825d..6cac3787311 100644
--- a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
@@ -41,8 +41,8 @@ using namespace llvm;
#define DEBUG_TYPE "loop-simplifycfg"
-static bool simplifyLoopCFG(Loop &L, DominatorTree &DT, LoopInfo &LI,
- ScalarEvolution &SE, MemorySSAUpdater *MSSAU) {
+static bool mergeBlocksIntoPredecessors(Loop &L, DominatorTree &DT,
+ LoopInfo &LI, MemorySSAUpdater *MSSAU) {
bool Changed = false;
DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Eager);
// Copy blocks into a temporary array to avoid iterator invalidation issues
@@ -63,14 +63,25 @@ static bool simplifyLoopCFG(Loop &L, DominatorTree &DT, LoopInfo &LI,
// Merge Succ into Pred and delete it.
MergeBlockIntoPredecessor(Succ, &DTU, &LI, MSSAU);
- SE.forgetTopmostLoop(&L);
-
Changed = true;
}
return Changed;
}
+static bool simplifyLoopCFG(Loop &L, DominatorTree &DT, LoopInfo &LI,
+ ScalarEvolution &SE, MemorySSAUpdater *MSSAU) {
+ bool Changed = false;
+
+ // Eliminate unconditional branches by merging blocks into their predecessors.
+ Changed |= mergeBlocksIntoPredecessors(L, DT, LI, MSSAU);
+
+ if (Changed)
+ SE.forgetTopmostLoop(&L);
+
+ return Changed;
+}
+
PreservedAnalyses LoopSimplifyCFGPass::run(Loop &L, LoopAnalysisManager &AM,
LoopStandardAnalysisResults &AR,
LPMUpdater &) {
OpenPOWER on IntegriCloud