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
 |