39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
; RUN: llc < %s -mtriple=x86_64-pc-win32-coreclr | FileCheck %s -check-prefix=WIN_X64
 | 
						|
; RUN: llc < %s -mtriple=x86_64-pc-linux         | FileCheck %s -check-prefix=LINUX
 | 
						|
 | 
						|
%Object = type <{ [0 x i64*]* }>
 | 
						|
 | 
						|
define void @C1(%Object addrspace(1)* %param0) gc "coreclr" {
 | 
						|
entry:
 | 
						|
 | 
						|
; WIN_X64: # %bb.0:
 | 
						|
; WIN_X64:	pushq	%rax
 | 
						|
; LINUX:   # %bb.0:                                 # %entry
 | 
						|
; LINUX:	movq	$0, -8(%rsp)
 | 
						|
 | 
						|
  %this = alloca %Object addrspace(1)*
 | 
						|
  store volatile %Object addrspace(1)* null, %Object addrspace(1)** %this
 | 
						|
  store volatile %Object addrspace(1)* %param0, %Object addrspace(1)** %this
 | 
						|
  br label %0
 | 
						|
 | 
						|
; <label>:0                                       ; preds = %entry
 | 
						|
  %1 = load %Object addrspace(1)*, %Object addrspace(1)** %this, align 8
 | 
						|
 | 
						|
; WIN_X64:	xorl	%r8d, %r8d
 | 
						|
; WIN_X64:	popq	%rax
 | 
						|
; WIN_X64:	jmp	  C2                  # TAILCALL
 | 
						|
; LINUX:	xorl	%edx, %edx
 | 
						|
; LINUX:	jmp	C2                      # TAILCALL
 | 
						|
 | 
						|
  tail call void @C2(%Object addrspace(1)* %1, i32 0, %Object addrspace(1)* null)
 | 
						|
  ret void
 | 
						|
}
 | 
						|
 | 
						|
declare void @C2(%Object addrspace(1)*, i32, %Object addrspace(1)*)
 | 
						|
 | 
						|
; Function Attrs: nounwind
 | 
						|
declare void @llvm.localescape(...) #0
 | 
						|
 | 
						|
attributes #0 = { nounwind }
 | 
						|
 |