31 lines
		
	
	
		
			673 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			673 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; REQUIRES: asserts
 | |
| ; RUN: opt < %s -S -Os -debug -debug-only=loop-rotate 2>&1 | FileCheck %s -check-prefix=OS
 | |
| ; RUN: opt < %s -S -Oz -debug -debug-only=loop-rotate 2>&1 | FileCheck %s -check-prefix=OZ
 | |
| 
 | |
| ; Loop should be rotated for -Os but not for -Oz.
 | |
| ; OS: rotating Loop at depth 1
 | |
| ; OZ-NOT: rotating Loop at depth 1
 | |
| 
 | |
| @e = global i32 10
 | |
| 
 | |
| declare void @use(i32)
 | |
| 
 | |
| define void @test() {
 | |
| entry:
 | |
|   %end = load i32, i32* @e
 | |
|   br label %loop
 | |
| 
 | |
| loop:
 | |
|   %n.phi = phi i32 [ %n, %loop.fin ], [ 0, %entry ]
 | |
|   %cond = icmp eq i32 %n.phi, %end
 | |
|   br i1 %cond, label %exit, label %loop.fin
 | |
| 
 | |
| loop.fin:
 | |
|   %n = add i32 %n.phi, 1
 | |
|   call void @use(i32 %n)
 | |
|   br label %loop
 | |
| 
 | |
| exit:
 | |
|   ret void
 | |
| }
 |