diff options
Diffstat (limited to 'test/Transforms/LowerSwitch/2014-06-11-SwitchDefaultUnreachableOpt.ll')
-rw-r--r-- | test/Transforms/LowerSwitch/2014-06-11-SwitchDefaultUnreachableOpt.ll | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/Transforms/LowerSwitch/2014-06-11-SwitchDefaultUnreachableOpt.ll b/test/Transforms/LowerSwitch/2014-06-11-SwitchDefaultUnreachableOpt.ll new file mode 100644 index 0000000..0f73721 --- /dev/null +++ b/test/Transforms/LowerSwitch/2014-06-11-SwitchDefaultUnreachableOpt.ll @@ -0,0 +1,41 @@ +; RUN: opt < %s -lowerswitch -S | FileCheck %s +; CHECK-NOT: {{.*}}icmp eq{{.*}} +; +;int foo(int a) { +; +; switch (a) { +; case 0: +; return 10; +; case 1: +; return 3; +; default: +; __builtin_unreachable(); +; } +; +;} + +define i32 @foo(i32 %a) nounwind ssp uwtable { + %1 = alloca i32, align 4 + %2 = alloca i32, align 4 + store i32 %a, i32* %2, align 4 + %3 = load i32* %2, align 4 + switch i32 %3, label %6 [ + i32 0, label %4 + i32 1, label %5 + ] + +; <label>:4 + store i32 10, i32* %1 + br label %7 + +; <label>:5 + store i32 3, i32* %1 + br label %7 + +; <label>:6 + unreachable + +; <label>:7 + %8 = load i32* %1 + ret i32 %8 +} |