[NFC] Make LoopSafetyInfo abstract to allow alternative implementations
llvm-svn: 344592
diff --git a/llvm/lib/Analysis/MustExecute.cpp b/llvm/lib/Analysis/MustExecute.cpp
index bce941b..618e2e3 100644
--- a/llvm/lib/Analysis/MustExecute.cpp
+++ b/llvm/lib/Analysis/MustExecute.cpp
@@ -33,20 +33,20 @@
ColorsForNewBlock = ColorsForOldBlock;
}
-bool LoopSafetyInfo::headerMayThrow() const {
+bool SimpleLoopSafetyInfo::headerMayThrow() const {
return HeaderMayThrow;
}
-bool LoopSafetyInfo::blockMayThrow(const BasicBlock *BB) const {
+bool SimpleLoopSafetyInfo::blockMayThrow(const BasicBlock *BB) const {
(void)BB;
return anyBlockMayThrow();
}
-bool LoopSafetyInfo::anyBlockMayThrow() const {
+bool SimpleLoopSafetyInfo::anyBlockMayThrow() const {
return MayThrow;
}
-void LoopSafetyInfo::computeLoopSafetyInfo(const Loop *CurLoop) {
+void SimpleLoopSafetyInfo::computeLoopSafetyInfo(const Loop *CurLoop) {
assert(CurLoop != nullptr && "CurLoop can't be null");
BasicBlock *Header = CurLoop->getHeader();
// Iterate over header and compute safety info.
@@ -200,9 +200,9 @@
/// Returns true if the instruction in a loop is guaranteed to execute at least
/// once.
-bool LoopSafetyInfo::isGuaranteedToExecute(const Instruction &Inst,
- const DominatorTree *DT,
- const Loop *CurLoop) const {
+bool SimpleLoopSafetyInfo::isGuaranteedToExecute(const Instruction &Inst,
+ const DominatorTree *DT,
+ const Loop *CurLoop) const {
// We have to check to make sure that the instruction dominates all
// of the exit blocks. If it doesn't, then there is a path out of the loop
// which does not execute this instruction, so we can't hoist it.
@@ -259,7 +259,7 @@
// TODO: merge these two routines. For the moment, we display the best
// result obtained by *either* implementation. This is a bit unfair since no
// caller actually gets the full power at the moment.
- LoopSafetyInfo LSI;
+ SimpleLoopSafetyInfo LSI;
LSI.computeLoopSafetyInfo(L);
return LSI.isGuaranteedToExecute(I, DT, L) ||
isGuaranteedToExecuteForEveryIteration(&I, L);