aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2008-01-29 02:20:41 +0000
committerDevang Patel <dpatel@apple.com>2008-01-29 02:20:41 +0000
commit0e4d4ee707d106288008353e945221a4dcfa166b (patch)
tree08e4f86508c0a6fa3108e5a43b32d971f820d21c /lib
parentf9f42e669b14d06c63414e1c1ceff36e621c0ddd (diff)
downloadexternal_llvm-0e4d4ee707d106288008353e945221a4dcfa166b.zip
external_llvm-0e4d4ee707d106288008353e945221a4dcfa166b.tar.gz
external_llvm-0e4d4ee707d106288008353e945221a4dcfa166b.tar.bz2
Filter loops that subtract induction variables.
These loops are not yet handled. Fix PR 1912. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46484 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Transforms/Scalar/LoopIndexSplit.cpp34
1 files changed, 17 insertions, 17 deletions
diff --git a/lib/Transforms/Scalar/LoopIndexSplit.cpp b/lib/Transforms/Scalar/LoopIndexSplit.cpp
index 6698d67..d31a589 100644
--- a/lib/Transforms/Scalar/LoopIndexSplit.cpp
+++ b/lib/Transforms/Scalar/LoopIndexSplit.cpp
@@ -301,23 +301,23 @@ void LoopIndexSplit::findIndVar(Value *V, Loop *L) {
Value *Op0 = I->getOperand(0);
Value *Op1 = I->getOperand(1);
- if (PHINode *PN = dyn_cast<PHINode>(Op0)) {
- if (PN->getParent() == L->getHeader()
- && isa<ConstantInt>(Op1)) {
- IndVar = PN;
- IndVarIncrement = I;
- return;
- }
- }
-
- if (PHINode *PN = dyn_cast<PHINode>(Op1)) {
- if (PN->getParent() == L->getHeader()
- && isa<ConstantInt>(Op0)) {
- IndVar = PN;
- IndVarIncrement = I;
- return;
- }
- }
+ if (PHINode *PN = dyn_cast<PHINode>(Op0))
+ if (PN->getParent() == L->getHeader())
+ if (ConstantInt *CI = dyn_cast<ConstantInt>(Op1))
+ if (CI->isOne()) {
+ IndVar = PN;
+ IndVarIncrement = I;
+ return;
+ }
+
+ if (PHINode *PN = dyn_cast<PHINode>(Op1))
+ if (PN->getParent() == L->getHeader())
+ if (ConstantInt *CI = dyn_cast<ConstantInt>(Op0))
+ if (CI->isOne()) {
+ IndVar = PN;
+ IndVarIncrement = I;
+ return;
+ }
return;
}