//===----------------------------------------------------------------------===//
//
-// LoopPreheaders pass - Insert Pre-header blocks into the CFG for every
-// function in the module. This pass updates dominator information, loop
-// information, and does not add critical edges to the CFG.
+// LoopSimplify pass - Insert Pre-header blocks into the CFG for every function
+// in the module. This pass updates dominator information, loop information,
+// and does not add critical edges to the CFG.
//
-// AU.addRequiredID(LoopPreheadersID);
+// AU.addRequiredID(LoopSimplifyID);
//
-Pass *createLoopPreheaderInsertionPass();
-extern const PassInfo *LoopPreheadersID;
+Pass *createLoopSimplifyPass();
+extern const PassInfo *LoopSimplifyID;
//===----------------------------------------------------------------------===//
//
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequired<LoopInfo>();
- AU.addRequiredID(LoopPreheadersID);
+ AU.addRequiredID(LoopSimplifyID);
AU.setPreservesCFG();
}
};
///
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesCFG();
- AU.addRequiredID(LoopPreheadersID);
+ AU.addRequiredID(LoopSimplifyID);
AU.addRequired<LoopInfo>();
AU.addRequired<DominatorTree>();
AU.addRequired<DominanceFrontier>(); // For scalar promotion (mem2reg)
AU.addPreserved<ImmediateDominators>();
AU.addPreserved<DominatorTree>();
AU.addPreserved<DominanceFrontier>();
- AU.addPreservedID(LoopPreheadersID); // No preheaders deleted.
+
+ // No loop canonicalization guarantees are broken by this pass.
+ AU.addPreservedID(LoopSimplifyID);
}
};
}
// Publically exposed interface to pass...
-const PassInfo *LoopPreheadersID = X.getPassInfo();
-Pass *createLoopPreheaderInsertionPass() { return new LoopSimplify(); }
+const PassInfo *LoopSimplifyID = X.getPassInfo();
+Pass *createLoopSimplifyPass() { return new LoopSimplify(); }
/// runOnFunction - Run down all loops in the CFG (recursively, but we could do