diff options
author | Dan Gohman <gohman@apple.com> | 2010-02-14 03:21:49 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-02-14 03:21:49 +0000 |
commit | 590bfe8641631c136160fed7a9df9fe805938cbe (patch) | |
tree | b231a838136e14f90b29bde2cc24d976d18f0534 | |
parent | 1d826a76f591afea445489b9a5485c345e66bf87 (diff) | |
download | external_llvm-590bfe8641631c136160fed7a9df9fe805938cbe.zip external_llvm-590bfe8641631c136160fed7a9df9fe805938cbe.tar.gz external_llvm-590bfe8641631c136160fed7a9df9fe805938cbe.tar.bz2 |
Actually, this code doesn't have to be quite so conservative in
the no-TLI case. But it should still default to declining the
transformation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96152 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/Scalar/LoopStrengthReduce.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/lib/Transforms/Scalar/LoopStrengthReduce.cpp index 0c65e33..b6ef718 100644 --- a/lib/Transforms/Scalar/LoopStrengthReduce.cpp +++ b/lib/Transforms/Scalar/LoopStrengthReduce.cpp @@ -1503,11 +1503,7 @@ LSRInstance::OptimizeLoopTermCond() { // Conservatively avoid trying to use the post-inc value in non-latch // exits if there may be pre-inc users in intervening blocks. - if (LatchBlock != ExitingBlock) { - // Without target lowering, we won't be able to query about valid reuse. - if (!TLI) - continue; - + if (LatchBlock != ExitingBlock) for (IVUsers::const_iterator UI = IU.begin(), E = IU.end(); UI != E; ++UI) // Test if the use is reachable from the exiting block. This dominator // query is a conservative approximation of reachability. @@ -1535,6 +1531,10 @@ LSRInstance::OptimizeLoopTermCond() { if (D->getValue()->getValue().getMinSignedBits() >= 64 || D->getValue()->getValue().isMinSignedValue()) goto decline_post_inc; + // Without TLI, assume that any stride might be valid, and so any + // use might be shared. + if (!TLI) + goto decline_post_inc; // Check for possible scaled-address reuse. const Type *AccessTy = getAccessType(UI->getUser()); TargetLowering::AddrMode AM; @@ -1546,7 +1546,6 @@ LSRInstance::OptimizeLoopTermCond() { goto decline_post_inc; } } - } DEBUG(dbgs() << " Change loop exiting icmp to use postinc iv: " << *Cond << '\n'); |