Revert the load slicing done in r190870.
[oota-llvm.git] / test / Transforms / SimplifyCFG / switch_thread.ll
index 5eee2c7a7aeac0d5628e639ebd5ad0dc32f81c3c..93966841a425aa1998fbda6db3d20c14def6f86e 100644 (file)
@@ -1,78 +1,79 @@
-; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | not grep 'call void %DEAD'
+; RUN: opt < %s -simplifycfg -S | \
+; RUN:   not grep "call void @DEAD"
 
 ; Test that we can thread a simple known condition through switch statements.
 
-declare void %foo1()
-declare void %foo2()
-declare void %DEAD()
+declare void @foo1()
 
-void %test1(uint %V) {
-        switch uint %V, label %A [
-                 uint 4, label %T
-                 uint 17, label %Done
-                 uint 1234, label %A
-        ]
+declare void @foo2()
+
+declare void @DEAD()
 
-T:  ;; V == 4 if we get here.
-       call void %foo1()
+define void @test1(i32 %V) {
+        switch i32 %V, label %A [
+                 i32 4, label %T
+                 i32 17, label %Done
+                 i32 1234, label %A
+        ]
+;; V == 4 if we get here.
+T:              ; preds = %0
+        call void @foo1( )
         ;; This switch is always statically determined.
-        switch uint %V, label %A2 [
-                 uint 4, label %B
-                 uint 17, label %C
-                uint 42, label %C
+        switch i32 %V, label %A2 [
+                 i32 4, label %B
+                 i32 17, label %C
+                 i32 42, label %C
         ]
-A2:
-       call void %DEAD()
-       call void %DEAD()
-       %cond2 = seteq uint %V, 4    ;; always false
-       br bool %cond2, label %Done, label %C
-
-A:
-       call void %foo1()
-       %cond = setne uint %V, 4    ;; always true
-       br bool %cond, label %Done, label %C
-
-
-Done:
+A2:             ; preds = %T
+        call void @DEAD( )
+        call void @DEAD( )
+        ;; always true
+        %cond2 = icmp eq i32 %V, 4              ; <i1> [#uses=1]
+        br i1 %cond2, label %Done, label %C
+A:              ; preds = %0, %0
+        call void @foo1( )
+        ;; always true
+        %cond = icmp ne i32 %V, 4               ; <i1> [#uses=1]
+        br i1 %cond, label %Done, label %C
+Done:           ; preds = %B, %A, %A2, %0
+        ret void
+B:              ; preds = %T
+        call void @foo2( )
+        ;; always true
+        %cond3 = icmp eq i32 %V, 4              ; <i1> [#uses=1]
+        br i1 %cond3, label %Done, label %C
+C:              ; preds = %B, %A, %A2, %T, %T
+        call void @DEAD( )
         ret void
-
-B:
-        call void %foo2()
-       %cond3 = seteq uint %V, 4    ;; always true
-       br bool %cond3, label %Done, label %C
-C:
-       call void %DEAD()
-       ret void
 }
 
-void %test2(uint %V) {
-        switch uint %V, label %A [
-                 uint 4, label %T
-                 uint 17, label %D
-                 uint 1234, label %E
+define void @test2(i32 %V) {
+        switch i32 %V, label %A [
+                 i32 4, label %T
+                 i32 17, label %D
+                 i32 1234, label %E
         ]
-
-A:  ;; V != 4, 17, 1234 here.
-       call void %foo1()
+;; V != 4, 17, 1234 here.
+A:              ; preds = %0
+        call void @foo1( )
         ;; This switch is always statically determined.
-        switch uint %V, label %E [
-                 uint 4, label %C
-                 uint 17, label %C
-                uint 42, label %D
+        switch i32 %V, label %E [
+                 i32 4, label %C
+                 i32 17, label %C
+                 i32 42, label %D
         ]
-C:
-       call void %DEAD()  ;; unreacahble.
-       ret void
-T:
-       call void %foo1()
-       call void %foo1()
-       ret void
-
-D:
-       call void %foo1()
-       ret void
-
-E:
+;; unreacahble.
+C:              ; preds = %A, %A
+        call void @DEAD( )
+        ret void
+T:              ; preds = %0
+        call void @foo1( )
+        call void @foo1( )
+        ret void
+D:              ; preds = %A, %0
+        call void @foo1( )
+        ret void
+E:              ; preds = %A, %0
         ret void
 }