mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
generalize the previous transformation to handle indexing into
arrays of structs and other arrays, so long as all the subsequent indexes are constants. This triggers frequently for stuff like: @divisions = internal constant [29 x [2 x i32]] [[2 x i32] zeroinitializer, [2 x i32] [i32 0, i32 1], [2 x i32] [i32 0, i32 2], [2 x i32] [i32 0, i32 1], [2 x i32] zeroinitializer, [2 x i32] [i32 0, i32 1], [2 x i32] [i32 0, i32 1], [2 x i32] [i32 0, i32 2], [2 x i32] [i32 0, i32 2], [2 x i32] zeroinitializer, [2 x i32] zeroinitializer, [2 x i32] zeroinitializer, [2 x i32] [i32 0, i32 2], [2 x i32] [i32 0, i32 1], [2 x i32] zeroinitializer, [2 x i32] [i32 1, i32 0], [2 x i32] [i32 1, i32 1], [2 x i32] [i32 1, i32 1], [2 x i32] [i32 1, i32 2], [2 x i32] [i32 1, i32 1], [2 x i32] [i32 1, i32 0], [2 x i32] [i32 1, i32 2], [2 x i32] [i32 1, i32 2], [2 x i32] [i32 1, i32 0], [2 x i32] [i32 1, i32 0], [2 x i32] [i32 1, i32 0], [2 x i32] [i32 1, i32 1], [2 x i32] [i32 1, i32 2], [2 x i32] [i32 1, i32 2]], align 32 ; <[29 x [2 x i32]]*> [#uses=50] %623 = getelementptr inbounds [29 x [2 x i32]]* @divisions, i64 0, i64 %619, i64 0 ; <i32*> [#uses=1] %684 = icmp eq i32 %683, 999 also for the "my_defs" table in 'gs', etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92444 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -92,3 +92,21 @@ define i1 @test8(i32 %X) {
|
||||
; CHECK-NEXT: %S = icmp ult i32 {{.*}}, 2
|
||||
; CHECK-NEXT: ret i1 %S
|
||||
}
|
||||
|
||||
@GA = internal constant [4 x { i32, i32 } ] [
|
||||
{ i32, i32 } { i32 1, i32 0 },
|
||||
{ i32, i32 } { i32 2, i32 1 },
|
||||
{ i32, i32 } { i32 3, i32 1 },
|
||||
{ i32, i32 } { i32 4, i32 0 }
|
||||
]
|
||||
|
||||
define i1 @test9(i32 %X) {
|
||||
%P = getelementptr [4 x { i32, i32 } ]* @GA, i32 0, i32 %X, i32 1
|
||||
%Q = load i32* %P
|
||||
%R = icmp eq i32 %Q, 1
|
||||
ret i1 %R
|
||||
; CHECK: @test9
|
||||
; CHECK-NEXT: add i32 %X, -1
|
||||
; CHECK-NEXT: %R = icmp ult i32 {{.*}}, 2
|
||||
; CHECK-NEXT: ret i1 %R
|
||||
}
|
||||
|
Reference in New Issue
Block a user