mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-30 16:17:05 +00:00 
			
		
		
		
	Prior to this change, the considered addressing modes may be invalid since the maximum and minimum offsets were not taking into account. This was causing an assertion failure. The added test case exercices that behavior. <rdar://problem/14199725> Assertion failed: (CurScaleCost >= 0 && "Legal addressing mode has an illegal cost!") git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184341 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: opt -loop-reduce %s -S -o - | FileCheck %s
 | |
| target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32"
 | |
| target triple = "i686-pc-win32"
 | |
| 
 | |
| ; <rdar://problem/14199725> Assertion failed: (CurScaleCost >= 0 && "Legal addressing mode has an illegal cost!")
 | |
| ; CHECK: @scalingFactorCrash
 | |
| define void @scalingFactorCrash() {
 | |
|   br i1 undef, label %1, label %24
 | |
| 
 | |
| ; <label>:1                                       ; preds = %0
 | |
|   br i1 undef, label %2, label %24
 | |
| 
 | |
| ; <label>:2                                       ; preds = %1
 | |
|   br i1 undef, label %3, label %24
 | |
| 
 | |
| ; <label>:3                                       ; preds = %2
 | |
|   br i1 undef, label %4, label %24
 | |
| 
 | |
| ; <label>:4                                       ; preds = %3
 | |
|   br i1 undef, label %24, label %6
 | |
| 
 | |
| ; <label>:5                                       ; preds = %6
 | |
|   br i1 undef, label %24, label %7
 | |
| 
 | |
| ; <label>:6                                       ; preds = %6, %4
 | |
|   br i1 undef, label %6, label %5
 | |
| 
 | |
| ; <label>:7                                       ; preds = %9, %5
 | |
|   br label %8
 | |
| 
 | |
| ; <label>:8                                       ; preds = %8, %7
 | |
|   br i1 undef, label %9, label %8
 | |
| 
 | |
| ; <label>:9                                       ; preds = %8
 | |
|   br i1 undef, label %7, label %10
 | |
| 
 | |
| ; <label>:10                                      ; preds = %9
 | |
|   br i1 undef, label %24, label %11
 | |
| 
 | |
| ; <label>:11                                      ; preds = %10
 | |
|   br i1 undef, label %15, label %13
 | |
| 
 | |
| ; <label>:12                                      ; preds = %14
 | |
|   br label %15
 | |
| 
 | |
| ; <label>:13                                      ; preds = %11
 | |
|   br label %14
 | |
| 
 | |
| ; <label>:14                                      ; preds = %14, %13
 | |
|   br i1 undef, label %14, label %12
 | |
| 
 | |
| ; <label>:15                                      ; preds = %12, %11
 | |
|   br i1 undef, label %16, label %24
 | |
| 
 | |
| ; <label>:16                                      ; preds = %16, %15
 | |
|   %17 = phi i32 [ %21, %16 ], [ undef, %15 ]
 | |
|   %18 = sub i32 %17, 1623127498
 | |
|   %19 = getelementptr inbounds i32* undef, i32 %18
 | |
|   store i32 undef, i32* %19, align 4
 | |
|   %20 = add i32 %17, 1623127499
 | |
|   %21 = add i32 %20, -1623127498
 | |
|   %22 = add i32 %21, -542963121
 | |
|   %23 = icmp ult i32 %22, undef
 | |
|   br i1 undef, label %16, label %24
 | |
| 
 | |
| ; <label>:24                                      ; preds = %16, %15, %10, %5, %4, %3, %2, %1, %0
 | |
|   ret void
 | |
| }
 |