| Index: test/NaCl/X86/ro-jumptable.ll
|
| diff --git a/test/NaCl/X86/ro-jumptable.ll b/test/NaCl/X86/ro-jumptable.ll
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9defc1b88e8899c4c94bd9281e29fa0539cce655
|
| --- /dev/null
|
| +++ b/test/NaCl/X86/ro-jumptable.ll
|
| @@ -0,0 +1,74 @@
|
| +; RUN: llc -mtriple=i386-unknown-nacl -filetype=asm %s -o - \
|
| +; RUN: | FileCheck %s
|
| +
|
| +declare i32 @bar(i32)
|
| +
|
| +; CHECK-LABEL: @foo
|
| +; Check that the jump table for the switch goes in .rodata
|
| +; CHECK: .section .rodata
|
| +; CHECK: .long .LBB0
|
| +define void @foo(i32 %a) {
|
| +entry:
|
| + switch i32 %a, label %sw.epilog [
|
| + i32 3, label %sw.bb
|
| + i32 2, label %sw.bb1
|
| + i32 1, label %sw.bb3
|
| + i32 0, label %sw.bb5
|
| + ]
|
| +
|
| +sw.bb: ; preds = %entry
|
| + %call = call i32 @bar(i32 1)
|
| + br label %sw.bb1
|
| +
|
| +sw.bb1: ; preds = %entry, %sw.bb
|
| + %call2 = call i32 @bar(i32 2)
|
| + br label %sw.bb3
|
| +
|
| +sw.bb3: ; preds = %entry, %sw.bb1
|
| + %call4 = call i32 @bar(i32 3)
|
| + br label %sw.bb5
|
| +
|
| +sw.bb5: ; preds = %entry, %sw.bb3
|
| + %call6 = call i32 @bar(i32 4)
|
| + br label %sw.epilog
|
| +
|
| +sw.epilog: ; preds = %sw.bb5, %entry
|
| + ret void
|
| +}
|
| +
|
| +
|
| +; CHECK: .section .text.foo_linkonce,"axG",@progbits,foo_linkonce,comdat
|
| +; CHECK: @foo_linkonce
|
| +; Check that the jump table for the linkonce_odr function goes into a comdat
|
| +; group uniqued like the function
|
| +; CHECK: .section .rodata.foo_linkonce,"aG",@progbits,foo_linkonce,comdat
|
| +; CHECK: .long .LBB1
|
| +define linkonce_odr void @foo_linkonce(i32 %a) {
|
| +entry:
|
| + switch i32 %a, label %sw.epilog [
|
| + i32 3, label %sw.bb
|
| + i32 2, label %sw.bb1
|
| + i32 1, label %sw.bb3
|
| + i32 0, label %sw.bb5
|
| + ]
|
| +
|
| +sw.bb: ; preds = %entry
|
| + %call = call i32 @bar(i32 1)
|
| + br label %sw.bb1
|
| +
|
| +sw.bb1: ; preds = %entry, %sw.bb
|
| + %call2 = call i32 @bar(i32 2)
|
| + br label %sw.bb3
|
| +
|
| +sw.bb3: ; preds = %entry, %sw.bb1
|
| + %call4 = call i32 @bar(i32 3)
|
| + br label %sw.bb5
|
| +
|
| +sw.bb5: ; preds = %entry, %sw.bb3
|
| + %call6 = call i32 @bar(i32 4)
|
| + br label %sw.epilog
|
| +
|
| +sw.epilog: ; preds = %sw.bb5, %entry
|
| + ret void
|
| +}
|
| +
|
|
|