summaryrefslogtreecommitdiffstats
path: root/polly/lib/Analysis/ScopDetection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/Analysis/ScopDetection.cpp')
-rw-r--r--polly/lib/Analysis/ScopDetection.cpp13
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))
OpenPOWER on IntegriCloud