23 lines
		
	
	
		
			686 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			686 B
		
	
	
	
		
			LLVM
		
	
	
	
; RUN: llc -mtriple=x86_64-apple-macosx -o - %s | FileCheck %s
 | 
						|
 | 
						|
; The issue here was a conflict between forming a %rip-relative lea and a
 | 
						|
; FrameIndex lea. The %rip sanity-checks didn't consider that a base register
 | 
						|
; had been set if we'd already matched a FrameIndex, when it has in reality.
 | 
						|
 | 
						|
@var = global i32 0
 | 
						|
 | 
						|
define void @test_frame_rip_conflict() {
 | 
						|
; CHECK-LABEL: test_frame_rip_conflict:
 | 
						|
; CHECK: leaq _var(%rip), [[TMPADDR:%r.*]]
 | 
						|
; CHECK: leaq {{-?[0-9]+}}(%rsp,[[TMPADDR]]),
 | 
						|
  %stackvar = alloca i32
 | 
						|
 | 
						|
  %stackint = ptrtoint i32* %stackvar to i64
 | 
						|
  %addr = add i64 ptrtoint(i32* @var to i64), %stackint
 | 
						|
 | 
						|
  call void @eat_i64(i64 %addr)
 | 
						|
  ret void
 | 
						|
}
 | 
						|
 | 
						|
declare void @eat_i64(i64)
 |