17 lines
		
	
	
		
			624 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			17 lines
		
	
	
		
			624 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: opt < %s -instcombine -S | grep "lshr.*3"
 | |
| ; RUN: opt < %s -instcombine -S | grep "call .*%cond"
 | |
| ; PR2506
 | |
| 
 | |
| ; We can simplify the operand of udiv to '8', but not the operand to the
 | |
| ; call.  If the callee never returns, we can't assume the div is reachable.
 | |
| define i32 @a(i32 %x, i32 %y) {
 | |
| entry:
 | |
|         %tobool = icmp ne i32 %y, 0             ; <i1> [#uses=1]
 | |
|         %cond = select i1 %tobool, i32 8, i32 0         ; <i32> [#uses=2]
 | |
|         %call = call i32 @b( i32 %cond )                ; <i32> [#uses=0]
 | |
|         %div = udiv i32 %x, %cond               ; <i32> [#uses=1]
 | |
|         ret i32 %div
 | |
| }
 | |
| 
 | |
| declare i32 @b(i32)
 |