29 lines
		
	
	
		
			774 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			774 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: opt < %s -analyze -scalar-evolution \
 | |
| ; RUN:   -scalar-evolution-max-iterations=0 | FileCheck %s
 | |
| ; PR2607
 | |
| 
 | |
| define i32 @_Z1aj(i32 %j) nounwind  {
 | |
| entry:
 | |
| 	icmp sgt i32 0, %j		; <i1>:0 [#uses=1]
 | |
| 	br i1 %0, label %bb.preheader, label %return
 | |
| 
 | |
| bb.preheader:		; preds = %entry
 | |
| 	br label %bb
 | |
| 
 | |
| bb:		; preds = %bb, %bb.preheader
 | |
| 	%i.01 = phi i32 [ %1, %bb ], [ 0, %bb.preheader ]		; <i32> [#uses=1]
 | |
| 	add i32 %i.01, -1		; <i32>:1 [#uses=3]
 | |
| 	icmp sgt i32 %1, %j		; <i1>:2 [#uses=1]
 | |
| 	br i1 %2, label %bb, label %return.loopexit
 | |
| 
 | |
| return.loopexit:		; preds = %bb
 | |
| 	br label %return
 | |
| 
 | |
| return:		; preds = %return.loopexit, %entry
 | |
| 	%i.0.lcssa = phi i32 [ 0, %entry ], [ %1, %return.loopexit ]		; <i32> [#uses=1]
 | |
| 	ret i32 %i.0.lcssa
 | |
| }
 | |
| 
 | |
| ; CHECK: backedge-taken count is (-1 + (-1 * %j))
 | |
| 
 |