diff options
author | Devang Patel <dpatel@apple.com> | 2008-02-14 23:18:47 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2008-02-14 23:18:47 +0000 |
commit | 9b03daa2a3a668e4313e0d869bb10aad5b08262a (patch) | |
tree | ddca8e253b188c8457ffd85b0e34846b00884a5e /lib/Transforms/Scalar/LoopIndexSplit.cpp | |
parent | 5a0e7b41c1b6cb2d9b4d877996c09f0ad7235572 (diff) |
If loop header is also loop exiting block then OrigPN is incoming value for B loop header.
Fixes PR 2030.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47141 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar/LoopIndexSplit.cpp')
-rw-r--r-- | lib/Transforms/Scalar/LoopIndexSplit.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/Transforms/Scalar/LoopIndexSplit.cpp b/lib/Transforms/Scalar/LoopIndexSplit.cpp index a0bfe4f082..3aedb93fd1 100644 --- a/lib/Transforms/Scalar/LoopIndexSplit.cpp +++ b/lib/Transforms/Scalar/LoopIndexSplit.cpp @@ -1465,7 +1465,13 @@ bool LoopIndexSplit::splitLoop(SplitInfo &SD) { PN->addIncoming(SD.B_StartValue, A_ExitingBlock); else { PHINode *OrigPN = cast<PHINode>(InverseMap[PN]); - Value *V2 = OrigPN->getIncomingValueForBlock(A_ExitingBlock); + Value *V2 = NULL; + // If loop header is also loop exiting block then + // OrigPN is incoming value for B loop header. + if (A_ExitingBlock == L->getHeader()) + V2 = OrigPN; + else + V2 = OrigPN->getIncomingValueForBlock(A_ExitingBlock); PN->addIncoming(V2, A_ExitingBlock); } } else |