40 lines
		
	
	
		
			618 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			618 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: opt -analyze -scalar-evolution < %s | FileCheck %s
 | |
| 
 | |
| ; ScalarEvolution shouldn't attempt to interpret expressions which have
 | |
| ; undefined results.
 | |
| 
 | |
| define void @foo(i64 %x) {
 | |
| 
 | |
|   %a = udiv i64 %x, 0
 | |
| ; CHECK: -->  (%x /u 0)
 | |
| 
 | |
|   %B = shl i64 %x, 64
 | |
| ; CHECK: -->  %B
 | |
| 
 | |
|   %b = ashr i64 %B, 64
 | |
| ; CHECK: -->  %b
 | |
| 
 | |
|   %c = lshr i64 %x, 64
 | |
| ; CHECK: -->  %c
 | |
| 
 | |
|   %d = shl i64 %x, 64
 | |
| ; CHECK: -->  %d
 | |
| 
 | |
|   %E = shl i64 %x, -1
 | |
| ; CHECK: -->  %E
 | |
| 
 | |
|   %e = ashr i64 %E, -1
 | |
| ; CHECK: -->  %e
 | |
| 
 | |
|   %f = lshr i64 %x, -1
 | |
| ; CHECK: -->  %f
 | |
| 
 | |
|   %g = shl i64 %x, -1
 | |
| ; CHECK: -->  %g
 | |
| 
 | |
|   %h = bitcast i64 undef to i64
 | |
| ; CHECK: -->  undef
 | |
| 
 | |
|   ret void
 | |
| }
 |