mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	With option OptForSize enabled, the Loop Vectorizer is not supposed to create tail loop. The condition checking that was invalid and was not matching to the comment above. Patch by Marianne Mailhot-Sarrasin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240556 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			35 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; This test verifies that the loop vectorizer will NOT produce a tail
 | |
| ; loop with Optimize for size attibute.
 | |
| ; REQUIRES: asserts
 | |
| ; RUN: opt < %s -loop-vectorize -Os -debug -debug-only=loop-vectorize -S 2>&1 | FileCheck %s
 | |
| 
 | |
| ;CHECK-NOT: <2 x i8>
 | |
| ;CHECK-NOT: <4 x i8>
 | |
| ;CHECK: Aborting. A tail loop is required in Os.
 | |
| 
 | |
| target datalayout = "E-m:e-p:32:32-i64:32-f64:32:64-a:0:32-n32-S128"
 | |
| 
 | |
| @tab = common global [32 x i8] zeroinitializer, align 1
 | |
| 
 | |
| ; Function Attrs: nounwind optsize
 | |
| define i32 @foo() #0 {
 | |
| entry:
 | |
|   br label %for.body
 | |
| 
 | |
| for.body:                                         ; preds = %for.body, %entry
 | |
|   %i.08 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
 | |
|   %arrayidx = getelementptr inbounds [32 x i8], [32 x i8]* @tab, i32 0, i32 %i.08
 | |
|   %0 = load i8, i8* %arrayidx, align 1
 | |
|   %cmp1 = icmp eq i8 %0, 0
 | |
|   %. = select i1 %cmp1, i8 2, i8 1
 | |
|   store i8 %., i8* %arrayidx, align 1
 | |
|   %inc = add nsw i32 %i.08, 1
 | |
|   %exitcond = icmp eq i32 %i.08, 202
 | |
|   br i1 %exitcond, label %for.end, label %for.body
 | |
| 
 | |
| for.end:                                          ; preds = %for.body
 | |
|   ret i32 0
 | |
| }
 | |
| 
 | |
| attributes #0 = { nounwind optsize "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
 |