diff options
Diffstat (limited to 'llvm/test/Transforms/SimplifyCFG/switch_thread.ll')
-rw-r--r-- | llvm/test/Transforms/SimplifyCFG/switch_thread.ll | 124 |
1 files changed, 62 insertions, 62 deletions
diff --git a/llvm/test/Transforms/SimplifyCFG/switch_thread.ll b/llvm/test/Transforms/SimplifyCFG/switch_thread.ll index f1208517268..bf9c90d8924 100644 --- a/llvm/test/Transforms/SimplifyCFG/switch_thread.ll +++ b/llvm/test/Transforms/SimplifyCFG/switch_thread.ll @@ -1,79 +1,79 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | \ ; 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 } |