diff options
Diffstat (limited to 'polly/lib/Analysis/ScopDetection.cpp')
-rw-r--r-- | polly/lib/Analysis/ScopDetection.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/polly/lib/Analysis/ScopDetection.cpp b/polly/lib/Analysis/ScopDetection.cpp index 38b7be1d1b0..80e3058de4a 100644 --- a/polly/lib/Analysis/ScopDetection.cpp +++ b/polly/lib/Analysis/ScopDetection.cpp @@ -1184,8 +1184,17 @@ bool ScopDetection::isValidInstruction(Instruction &Inst, if (!OpInst) continue; - if (isErrorBlock(*OpInst->getParent(), Context.CurRegion, LI, DT)) - return false; + if (isErrorBlock(*OpInst->getParent(), Context.CurRegion, LI, DT)) { + auto *PHI = dyn_cast<PHINode>(OpInst); + if (PHI) { + for (User *U : PHI->users()) { + if (!isa<TerminatorInst>(U)) + return false; + } + } else { + return false; + } + } } if (isa<LandingPadInst>(&Inst) || isa<ResumeInst>(&Inst)) |