summaryrefslogtreecommitdiffstats
path: root/llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll')
-rw-r--r--llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll28
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll b/llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll
index 500f3e16c8f..dc24bd1b804 100644
--- a/llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll
+++ b/llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll
@@ -126,3 +126,31 @@ for.cond.0:
ret i32 %init
}
+
+define i32 @f6(i32 %x, i32 %y) {
+; Do the right thing for unreachable code:
+
+; CHECK-LABEL: Classifying expressions for: @f6
+ entry:
+ %c0 = icmp sgt i32 %y, 0
+ %sum = add i32 %x, %y
+ br i1 %c0, label %merge, label %leave_1
+
+ merge:
+ %v0 = phi i32 [ %sum, %entry ], [ %v1, %unreachable ]
+ %c1 = icmp slt i32 %y, 0
+ br i1 %c1, label %leave_0, label %leave_0_cond
+
+leave_0_cond:
+ br label %leave_0
+
+leave_0:
+ %v1 = phi i32 [ %v0, %merge ], [ 0, %leave_0_cond ]
+ ret i32 0
+
+leave_1:
+ ret i32 0
+
+unreachable:
+ br label %merge
+}
OpenPOWER on IntegriCloud