summaryrefslogtreecommitdiff
path: root/lib/Analysis/ScalarEvolutionExpander.cpp
diff options
context:
space:
mode:
authorAndrew Trick <atrick@apple.com>2012-05-22 17:39:59 +0000
committerAndrew Trick <atrick@apple.com>2012-05-22 17:39:59 +0000
commit3de8ad8bf9081fcb7ec0600fd2a8d1ce809f556d (patch)
treea49e2f9d56a995a8f8b37c6a4fdcfdf39d3369b3 /lib/Analysis/ScalarEvolutionExpander.cpp
parent5c525b59d5e0036a778d278eeff4832edfd41357 (diff)
downloadllvm-3de8ad8bf9081fcb7ec0600fd2a8d1ce809f556d.tar.gz
llvm-3de8ad8bf9081fcb7ec0600fd2a8d1ce809f556d.tar.bz2
llvm-3de8ad8bf9081fcb7ec0600fd2a8d1ce809f556d.tar.xz
LSR fix: add a missing phi check during IV hoisting.
Fixes PR12898: SCEVExpander crash. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157263 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/ScalarEvolutionExpander.cpp')
-rw-r--r--lib/Analysis/ScalarEvolutionExpander.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/Analysis/ScalarEvolutionExpander.cpp b/lib/Analysis/ScalarEvolutionExpander.cpp
index 69507beeaa..e7fe672ad3 100644
--- a/lib/Analysis/ScalarEvolutionExpander.cpp
+++ b/lib/Analysis/ScalarEvolutionExpander.cpp
@@ -955,7 +955,8 @@ bool SCEVExpander::hoistIVInc(Instruction *IncV, Instruction *InsertPos) {
// InsertPos must itself dominate IncV so that IncV's new position satisfies
// its existing users.
- if (!SE.DT->dominates(InsertPos->getParent(), IncV->getParent()))
+ if (isa<PHINode>(InsertPos)
+ || !SE.DT->dominates(InsertPos->getParent(), IncV->getParent()))
return false;
// Check that the chain of IV operands leading back to Phi can be hoisted.