mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	LCSSA PHIs may have undef values. The vectorizer updates values that are used by outside users such as PHIs. The bug happened because undefs are not loop values. This patch handles these PHIs. PR14725 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171251 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			30 lines
		
	
	
		
			910 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			910 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: opt < %s  -loop-vectorize -force-vector-width=4 
 | |
| 
 | |
| target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
 | |
| target triple = "x86_64-unknown-linux-gnu"
 | |
| 
 | |
| %type1 = type { %type2 }
 | |
| %type2 = type { [0 x i8*], i8**, i32, i32, i32 }
 | |
| 
 | |
| define void @test() nounwind uwtable align 2 {
 | |
|   br label %for.body.lr.ph.i.i.i
 | |
| 
 | |
| for.body.lr.ph.i.i.i:
 | |
|   br label %for.body.i.i.i
 | |
| 
 | |
| for.body.i.i.i:
 | |
|   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc.i.i.i ], [ 0, %for.body.lr.ph.i.i.i ]
 | |
|   br label %for.inc.i.i.i
 | |
| 
 | |
| for.inc.i.i.i:
 | |
|   %indvars.iv.next = add i64 %indvars.iv, 1
 | |
|   %lftr.wideiv = trunc i64 %indvars.iv.next to i32
 | |
|   %exitcond = icmp ne i32 %lftr.wideiv, undef
 | |
|   br i1 %exitcond, label %for.body.i.i.i, label %for.end.i.i.i
 | |
| 
 | |
| for.end.i.i.i:
 | |
|   %lcssa = phi %type1* [ undef, %for.inc.i.i.i ]
 | |
|   unreachable
 | |
| }
 | |
| 
 |