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
 | 
						|
}
 |