| ; RUN: opt < %s -passes=lowerswitch -S | FileCheck %s |
| |
| define i32 @test(i32 %arg) #0 { |
| ; CHECK-LABEL: @test |
| ; CHECK: 2: |
| ; CHECK-NEXT: %res.0 = phi i32 [ 1, %NodeBlock ], [ 2, %1 ] |
| ; CHECK-NEXT: br label %3 |
| ; CHECK: 5: |
| ; CHECK-NEXT: %res.3 = phi i32 [ %res.2, %4 ], [ 0, %LeafBlock ], [ 0, %LeafBlock1 ] |
| ; CHECK-NEXT: %6 = add nsw i32 %res.3, 1 |
| ; CHECK-NEXT: ret i32 %6 |
| |
| switch i32 %arg, label %5 [ |
| i32 1, label %1 |
| i32 2, label %2 |
| i32 3, label %3 |
| i32 4, label %4 |
| ] |
| |
| 1: |
| br label %2 |
| |
| 2: |
| %res.0 = phi i32 [ 1, %0 ], [ 2, %1 ] |
| br label %3 |
| |
| 3: |
| %res.1 = phi i32 [ 0, %0 ], [ %res.0, %2 ] |
| %phitmp = add nsw i32 %res.1, 2 |
| br label %4 |
| |
| 4: |
| %res.2 = phi i32 [ 1, %0 ], [ %phitmp, %3 ] |
| br label %5 |
| |
| 5: |
| %res.3 = phi i32 [ 0, %0 ], [ %res.2, %4 ] |
| %6 = add nsw i32 %res.3, 1 |
| ret i32 %6 |
| } |