24 lines
		
	
	
		
			579 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			579 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: llc < %s -mtriple=i386-unknown-linux-gnu | FileCheck %s
 | |
| 
 | |
| @d = global i32 0, align 4
 | |
| 
 | |
| ; Verify the sar happens before ecx is clobbered with the parameter being
 | |
| ; passed to fn3
 | |
| ; CHECK-LABEL: fn4
 | |
| ; CHECK: movb d, %cl
 | |
| ; CHECK: sarl %cl
 | |
| ; CHECK: movl $2, %ecx
 | |
| define i32 @fn4(i32 %i) #0 {
 | |
| entry:
 | |
|   %0 = load i32, i32* @d, align 4
 | |
|   %shr = ashr i32 %i, %0
 | |
|   tail call fastcc void @fn3(i32 2, i32 5, i32 %shr, i32 %i)
 | |
|   %cmp = icmp slt i32 %shr, 1
 | |
|   %. = zext i1 %cmp to i32
 | |
|   ret i32 %.
 | |
| }
 | |
| 
 | |
| declare void @fn3(i32 %p1, i32 %p2, i32 %p3, i32 %p4) #0
 | |
| 
 | |
| attributes #0 = { nounwind }
 |