26 lines
		
	
	
		
			606 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			606 B
		
	
	
	
		
			LLVM
		
	
	
	
; RUN: opt -analyze -scalar-evolution < %s | FileCheck %s
 | 
						|
 | 
						|
define i1 @main(i16 %a) {
 | 
						|
; CHECK-LABEL: Classifying expressions for: @main
 | 
						|
entry:
 | 
						|
  br label %body
 | 
						|
 | 
						|
body:
 | 
						|
  %dec2 = phi i16 [ %a, %entry ], [ %dec, %cond ]
 | 
						|
  %dec = add i16 %dec2, -1
 | 
						|
  %conv2 = zext i16 %dec2 to i32
 | 
						|
  %conv = zext i16 %dec to i32
 | 
						|
; CHECK:   %conv = zext i16 %dec to i32
 | 
						|
; CHECK-NEXT: -->  {(zext i16 (-1 + %a) to i32),+,65535}<nuw><%body>
 | 
						|
; CHECK-NOT:  -->  {(65535 + (zext i16 %a to i32)),+,65535}<nuw><%body>
 | 
						|
 | 
						|
  br label %cond
 | 
						|
 | 
						|
cond:
 | 
						|
  br i1 false, label %body, label %exit
 | 
						|
 | 
						|
exit:
 | 
						|
  %ret = icmp ne i32 %conv, 0
 | 
						|
  ret i1 %ret
 | 
						|
}
 |