summaryrefslogtreecommitdiff
path: root/test/Transforms/SCCP/pr27712.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Transforms/SCCP/pr27712.ll')
-rw-r--r--test/Transforms/SCCP/pr27712.ll30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/Transforms/SCCP/pr27712.ll b/test/Transforms/SCCP/pr27712.ll
new file mode 100644
index 0000000000000..b41c3981d53ad
--- /dev/null
+++ b/test/Transforms/SCCP/pr27712.ll
@@ -0,0 +1,30 @@
+; RUN: opt -sccp -S < %s | FileCheck %s
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+define i32 @main() {
+entry:
+ br label %lbl_1154
+
+lbl_1154:
+ %b0.0 = phi i32 [ -119, %entry ], [ 0, %lbl_1154 ]
+ %cmp11 = icmp slt i32 %b0.0, 0
+ %shl.op = shl i32 33554432, %b0.0
+ %cmp1445 = icmp ult i32 %shl.op, 33554432
+ %cmp14 = or i1 %cmp11, %cmp1445
+ br i1 %cmp14, label %lbl_1154, label %if.end19
+
+if.end19:
+ br i1 %cmp11, label %if.then22, label %cleanup26
+
+if.then22:
+ tail call void @abort()
+ unreachable
+
+cleanup26:
+ ret i32 %shl.op
+}
+; CHECK-LABEL: define i32 @main(
+; CHECK-NOT: ret i32 undef
+
+declare void @abort()