diff options
Diffstat (limited to 'test/Transforms/LowerSwitch/2014-06-23-PHIlowering.ll')
-rw-r--r-- | test/Transforms/LowerSwitch/2014-06-23-PHIlowering.ll | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/test/Transforms/LowerSwitch/2014-06-23-PHIlowering.ll b/test/Transforms/LowerSwitch/2014-06-23-PHIlowering.ll new file mode 100644 index 0000000..c6cddf6 --- /dev/null +++ b/test/Transforms/LowerSwitch/2014-06-23-PHIlowering.ll @@ -0,0 +1,40 @@ +; RUN: opt < %s -lowerswitch -S | FileCheck %s + +define i32 @test(i32 %arg) #0 { +; CHECK-LABEL: @test +; CHECK: ; <label>:2 +; CHECK-NEXT: %res.0 = phi i32 [ 1, %NodeBlock ], [ 2, %1 ] +; CHECK-NEXT: br label %3 +; CHECK: ; <label>:5 +; CHECK-NEXT: %res.3 = phi i32 [ 0, %NewDefault ], [ %res.2, %4 ] +; 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 + ] + +; <label>:1 + br label %2 + +; <label>:2 + %res.0 = phi i32 [ 1, %0 ], [ 2, %1 ] + br label %3 + +; <label>:3 + %res.1 = phi i32 [ 0, %0 ], [ %res.0, %2 ] + %phitmp = add nsw i32 %res.1, 2 + br label %4 + +; <label>:4 + %res.2 = phi i32 [ 1, %0 ], [ %phitmp, %3 ] + br label %5 + +; <label>:5 + %res.3 = phi i32 [ 0, %0 ], [ %res.2, %4 ] + %6 = add nsw i32 %res.3, 1 + ret i32 %6 +} |