1; RUN: llc < %s -relocation-model static | FileCheck %s 2 3; FIXME: Remove '-relocation-model static' when it is no longer necessary to 4; trigger the separate .rdata section. 5 6target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" 7target triple = "x86_64-pc-windows-msvc19.0.24215" 8 9define void @f(i32 %x) { 10entry: 11 switch i32 %x, label %sw.epilog [ 12 i32 0, label %sw.bb 13 i32 1, label %sw.bb1 14 i32 2, label %sw.bb2 15 i32 3, label %sw.bb3 16 ] 17 18sw.bb: ; preds = %entry 19 tail call void @g(i32 0) #2 20 br label %sw.epilog 21 22sw.bb1: ; preds = %entry 23 tail call void @g(i32 1) #2 24 br label %sw.epilog 25 26sw.bb2: ; preds = %entry 27 tail call void @g(i32 2) #2 28 br label %sw.epilog 29 30sw.bb3: ; preds = %entry 31 tail call void @g(i32 3) #2 32 br label %sw.epilog 33 34sw.epilog: ; preds = %entry, %sw.bb3, %sw.bb2, %sw.bb1, %sw.bb 35 tail call void @g(i32 10) #2 36 ret void 37} 38 39declare void @g(i32) 40 41; CHECK: .text 42; CHECK: f: 43; CHECK: .seh_proc f 44; CHECK: jmpq *.LJTI0_0 45; CHECK: .LBB0_{{.*}}: # %sw.bb 46; CHECK: .LBB0_{{.*}}: # %sw.bb1 47; CHECK: .LBB0_{{.*}}: # %sw.bb2 48; CHECK: .LBB0_{{.*}}: # %sw.bb3 49; CHECK: callq g 50; CHECK: jmp g # TAILCALL 51; CHECK: .section .rdata,"dr" 52; CHECK: .quad .LBB0_ 53; CHECK: .quad .LBB0_ 54; CHECK: .quad .LBB0_ 55; CHECK: .quad .LBB0_ 56; CHECK: .seh_handlerdata 57 58; It's important that we switch back to .text here, not .rdata. 59; CHECK: .text 60; CHECK: .seh_endproc 61