31 lines
		
	
	
		
			681 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			681 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: opt < %s -scalar-evolution -licm -loop-unroll -disable-output
 | |
| ; Test triggered an assertion in doFinalization() because loop unroll was deleting
 | |
| ; the inner loop which caused the loop to not get removed from the
 | |
| ; LoopToAliasSetMap.
 | |
| ; Test case taken from test/Transforms/LoopUnroll/unloop.ll.
 | |
| 
 | |
| declare i1 @check() nounwind
 | |
| define void @skiplevelexit() nounwind {
 | |
| entry:
 | |
|   br label %outer
 | |
| 
 | |
| outer:
 | |
|   br label %inner
 | |
| 
 | |
| inner:
 | |
|   %iv = phi i32 [ 0, %outer ], [ %inc, %tail ]
 | |
|   %inc = add i32 %iv, 1
 | |
|   call zeroext i1 @check()
 | |
|   br i1 true, label %outer.backedge, label %tail
 | |
| 
 | |
| tail:
 | |
|   br i1 false, label %inner, label %exit
 | |
| 
 | |
| outer.backedge:
 | |
|   br label %outer
 | |
| 
 | |
| exit:
 | |
|   ret void
 | |
| }
 | |
| 
 |