forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			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
 | 
						|
}
 |