diff options
author | Devang Patel <dpatel@apple.com> | 2008-01-29 02:20:41 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2008-01-29 02:20:41 +0000 |
commit | 0e4d4ee707d106288008353e945221a4dcfa166b (patch) | |
tree | 08e4f86508c0a6fa3108e5a43b32d971f820d21c /lib | |
parent | f9f42e669b14d06c63414e1c1ceff36e621c0ddd (diff) | |
download | external_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.cpp | 34 |
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; } |