summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-03-15 02:23:35 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-03-15 02:23:35 +0000
commitb1a6eab655adce4f84a15afa9092e814b9aaabda (patch)
treefb689c166e6268c70b39e16974cb5fea2a24c70f /test
parentbf34a5ec22389a852f25337eb767e5ad742e6142 (diff)
downloadllvm-b1a6eab655adce4f84a15afa9092e814b9aaabda.tar.gz
llvm-b1a6eab655adce4f84a15afa9092e814b9aaabda.tar.bz2
llvm-b1a6eab655adce4f84a15afa9092e814b9aaabda.tar.xz
PR9450: Make switch optimization in SimplifyCFG not dependent on the ordering
of pointers in an std::map. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127650 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/Transforms/SimplifyCFG/UnreachableEliminate.ll56
1 files changed, 48 insertions, 8 deletions
diff --git a/test/Transforms/SimplifyCFG/UnreachableEliminate.ll b/test/Transforms/SimplifyCFG/UnreachableEliminate.ll
index 7133d9875c..4a692f3622 100644
--- a/test/Transforms/SimplifyCFG/UnreachableEliminate.ll
+++ b/test/Transforms/SimplifyCFG/UnreachableEliminate.ll
@@ -1,33 +1,73 @@
-; RUN: opt < %s -simplifycfg -S | not grep unreachable
+; RUN: opt < %s -simplifycfg -S | FileCheck %s
define void @test1(i1 %C, i1* %BP) {
+; CHECK: @test1
+; CHECK: entry:
+; CHECK-NEXT: ret void
+entry:
br i1 %C, label %T, label %F
-T: ; preds = %0
+T:
store i1 %C, i1* %BP
unreachable
-F: ; preds = %0
+F:
ret void
}
define void @test2() {
+; CHECK: @test2
+; CHECK: entry:
+; CHECK-NEXT: call void @test2()
+; CHECK-NEXT: ret void
+entry:
invoke void @test2( )
to label %N unwind label %U
-U: ; preds = %0
+U:
unreachable
-N: ; preds = %0
+N:
ret void
}
define i32 @test3(i32 %v) {
+; CHECK: @test3
+; CHECK: entry:
+; CHECK-NEXT: [[CMP:%[A-Za-z0-9]+]] = icmp eq i32 %v, 2
+; CHECK-NEXT: select i1 [[CMP]], i32 2, i32 1
+; CHECK-NEXT: ret
+entry:
switch i32 %v, label %default [
i32 1, label %U
i32 2, label %T
]
-default: ; preds = %0
+default:
ret i32 1
-U: ; preds = %0
+U:
unreachable
-T: ; preds = %0
+T:
ret i32 2
}
+; PR9450
+define i32 @test4(i32 %v) {
+; CHECK: entry:
+; CHECK-NEXT: switch i32 %v, label %T [
+; CHECK-NEXT: i32 3, label %V
+; CHECK-NEXT: i32 2, label %U
+; CHECK-NEXT: ]
+
+entry:
+ br label %SWITCH
+V:
+ ret i32 7
+SWITCH:
+ switch i32 %v, label %default [
+ i32 1, label %T
+ i32 2, label %U
+ i32 3, label %V
+ ]
+default:
+ unreachable
+U:
+ ret i32 1
+T:
+ ret i32 2
+}