summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2008-02-14 23:18:47 +0000
committerDevang Patel <dpatel@apple.com>2008-02-14 23:18:47 +0000
commit2e622e4c2b4276b3d2f761023ffdc4bc6d27445e (patch)
tree2bf21328a81e10aec16a17b30a04509118303324 /llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp
parent5b70a22656e764542b8604c17fdbb40f2fd285ed (diff)
downloadbcm5719-llvm-2e622e4c2b4276b3d2f761023ffdc4bc6d27445e.tar.gz
bcm5719-llvm-2e622e4c2b4276b3d2f761023ffdc4bc6d27445e.zip
If loop header is also loop exiting block then OrigPN is incoming value for B loop header.
Fixes PR 2030. llvm-svn: 47141
Diffstat (limited to 'llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp')
-rw-r--r--llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp b/llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp
index a0bfe4f0822..3aedb93fd17 100644
--- a/llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp
+++ b/llvm/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
OpenPOWER on IntegriCloud