|
@@ -20,9 +20,7 @@
|
|
|
#include "llvm/PassSupport.h"
|
|
|
#include "llvm/ADT/Statistic.h"
|
|
|
#include "llvm/Analysis/AssumptionCache.h"
|
|
|
-#include "llvm/Analysis/CFG.h"
|
|
|
#include "llvm/Analysis/LoopInfo.h"
|
|
|
-#include "llvm/Analysis/LoopIterator.h"
|
|
|
#include "llvm/Analysis/ScalarEvolution.h"
|
|
|
#include "llvm/Analysis/ScalarEvolutionExpander.h"
|
|
|
#include "llvm/Analysis/TargetTransformInfo.h"
|
|
@@ -199,14 +197,8 @@ bool HardwareLoops::TryConvertLoop(Loop *L) {
|
|
|
if (TryConvertLoop(*I))
|
|
|
return true; // Stop search.
|
|
|
|
|
|
- // Bail out if the loop has irreducible control flow.
|
|
|
- LoopBlocksRPO RPOT(L);
|
|
|
- RPOT.perform(LI);
|
|
|
- if (containsIrreducibleCFG<const BasicBlock *>(RPOT, *LI))
|
|
|
- return false;
|
|
|
-
|
|
|
HardwareLoopInfo HWLoopInfo(L);
|
|
|
- if (TTI->isHardwareLoopProfitable(L, *SE, *AC, LibInfo, HWLoopInfo) ||
|
|
|
+ if (TTI->isHardwareLoopProfitable(L, *LI, *SE, *AC, LibInfo, HWLoopInfo) ||
|
|
|
ForceHardwareLoops) {
|
|
|
|
|
|
// Allow overriding of the counter width and loop decrement value.
|