mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
dd916c40a8
This reverts commit r290694. It broke sanitizer tests on Win64. I'll probably bring this back, but the jump tables will just live in .text like they do for MSVC. llvm-svn: 290714
61 lines
1.6 KiB
LLVM
61 lines
1.6 KiB
LLVM
; RUN: llc < %s -relocation-model static | FileCheck %s
|
|
|
|
; FIXME: Remove '-relocation-model static' when it is no longer necessary to
|
|
; trigger the separate .rdata section.
|
|
|
|
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-pc-windows-msvc19.0.24215"
|
|
|
|
define void @f(i32 %x) {
|
|
entry:
|
|
switch i32 %x, label %sw.epilog [
|
|
i32 0, label %sw.bb
|
|
i32 1, label %sw.bb1
|
|
i32 2, label %sw.bb2
|
|
i32 3, label %sw.bb3
|
|
]
|
|
|
|
sw.bb: ; preds = %entry
|
|
tail call void @g(i32 0) #2
|
|
br label %sw.epilog
|
|
|
|
sw.bb1: ; preds = %entry
|
|
tail call void @g(i32 1) #2
|
|
br label %sw.epilog
|
|
|
|
sw.bb2: ; preds = %entry
|
|
tail call void @g(i32 2) #2
|
|
br label %sw.epilog
|
|
|
|
sw.bb3: ; preds = %entry
|
|
tail call void @g(i32 3) #2
|
|
br label %sw.epilog
|
|
|
|
sw.epilog: ; preds = %entry, %sw.bb3, %sw.bb2, %sw.bb1, %sw.bb
|
|
tail call void @g(i32 10) #2
|
|
ret void
|
|
}
|
|
|
|
declare void @g(i32)
|
|
|
|
; CHECK: .text
|
|
; CHECK: f:
|
|
; CHECK: .seh_proc f
|
|
; CHECK: jmpq *.LJTI0_0
|
|
; CHECK: .LBB0_{{.*}}: # %sw.bb
|
|
; CHECK: .LBB0_{{.*}}: # %sw.bb1
|
|
; CHECK: .LBB0_{{.*}}: # %sw.bb2
|
|
; CHECK: .LBB0_{{.*}}: # %sw.bb3
|
|
; CHECK: callq g
|
|
; CHECK: jmp g # TAILCALL
|
|
; CHECK: .section .rdata,"dr"
|
|
; CHECK: .quad .LBB0_
|
|
; CHECK: .quad .LBB0_
|
|
; CHECK: .quad .LBB0_
|
|
; CHECK: .quad .LBB0_
|
|
; CHECK: .seh_handlerdata
|
|
|
|
; It's important that we switch back to .text here, not .rdata.
|
|
; CHECK: .text
|
|
; CHECK: .seh_endproc
|