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 | 2e622e4c2b4276b3d2f761023ffdc4bc6d27445e (patch) | |
| tree | 2bf21328a81e10aec16a17b30a04509118303324 /llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp | |
| parent | 5b70a22656e764542b8604c17fdbb40f2fd285ed (diff) | |
| download | bcm5719-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.cpp | 8 |
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 |

