diff options
Diffstat (limited to 'llvm/test/Transforms/SimplifyCFG/switch_switch_fold.ll')
-rw-r--r-- | llvm/test/Transforms/SimplifyCFG/switch_switch_fold.ll | 76 |
1 files changed, 37 insertions, 39 deletions
diff --git a/llvm/test/Transforms/SimplifyCFG/switch_switch_fold.ll b/llvm/test/Transforms/SimplifyCFG/switch_switch_fold.ll index 0df40349c1b..7f6f1c94bd4 100644 --- a/llvm/test/Transforms/SimplifyCFG/switch_switch_fold.ll +++ b/llvm/test/Transforms/SimplifyCFG/switch_switch_fold.ll @@ -1,4 +1,3 @@ -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt < %s -simplifycfg -S | FileCheck %s ; Test that a switch going to a switch on the same value can be merged. @@ -13,12 +12,43 @@ declare void @foo3() declare void @foo4() define void @test1(i32 %V) { + switch i32 %V, label %F [ + i32 4, label %T + i32 17, label %T + i32 5, label %T + i32 1234, label %F + ] +T: ; preds = %0, %0, %0 + switch i32 %V, label %F [ + i32 4, label %A + i32 17, label %B + i32 42, label %C + ] +A: ; preds = %T + call void @foo1( ) + ret void +B: ; preds = %F, %F, %T + call void @foo2( ) + ret void +C: ; preds = %T + call void @foo3( ) + ret void +F: ; preds = %F, %T, %0, %0 + switch i32 %V, label %F [ + i32 4, label %B + i32 18, label %B + i32 42, label %D + ] +D: ; preds = %F + call void @foo4( ) + ret void + ; CHECK-LABEL: @test1( -; CHECK-NEXT: switch i32 [[V:%.*]], label [[INFLOOP:%.*]] [ -; CHECK-NEXT: i32 4, label [[A:%.*]] -; CHECK-NEXT: i32 17, label [[B:%.*]] -; CHECK-NEXT: i32 18, label [[B]] -; CHECK-NEXT: i32 42, label [[D:%.*]] +; CHECK-NEXT: switch i32 %V, label %infloop [ +; CHECK-NEXT: i32 4, label %A +; CHECK-NEXT: i32 17, label %B +; CHECK-NEXT: i32 18, label %B +; CHECK-NEXT: i32 42, label %D ; CHECK-NEXT: ] ; CHECK: A: ; CHECK-NEXT: call void @foo1() @@ -30,38 +60,6 @@ define void @test1(i32 %V) { ; CHECK-NEXT: call void @foo4() ; CHECK-NEXT: ret void ; CHECK: infloop: -; CHECK-NEXT: br label [[INFLOOP]] -; - switch i32 %V, label %F [ - i32 4, label %T - i32 17, label %T - i32 5, label %T - i32 1234, label %F - ] -T: ; preds = %0, %0, %0 - switch i32 %V, label %F [ - i32 4, label %A - i32 17, label %B - i32 42, label %C - ] -A: ; preds = %T - call void @foo1( ) - ret void -B: ; preds = %F, %F, %T - call void @foo2( ) - ret void -C: ; preds = %T - call void @foo3( ) - ret void -F: ; preds = %F, %T, %0, %0 - switch i32 %V, label %F [ - i32 4, label %B - i32 18, label %B - i32 42, label %D - ] -D: ; preds = %F - call void @foo4( ) - ret void - +; CHECK-NEXT: br label %infloop } |