mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-02 07:17:36 +00:00
update an entry, delete an entry which has been fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82398 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -337,24 +337,22 @@ void foo(int N) {
|
|||||||
for (i = 0; i < N; i++) { X = i; Y = i*4; }
|
for (i = 0; i < N; i++) { X = i; Y = i*4; }
|
||||||
}
|
}
|
||||||
|
|
||||||
produces two identical IV's (after promotion) on PPC/ARM:
|
produces two near identical IV's (after promotion) on PPC/ARM:
|
||||||
|
|
||||||
LBB1_1: @bb.preheader
|
LBB1_2:
|
||||||
mov r3, #0
|
ldr r3, LCPI1_0
|
||||||
mov r2, r3
|
ldr r3, [r3]
|
||||||
mov r1, r3
|
strh r2, [r3]
|
||||||
LBB1_2: @bb
|
ldr r3, LCPI1_1
|
||||||
ldr r12, LCPI1_0
|
ldr r3, [r3]
|
||||||
ldr r12, [r12]
|
strh r1, [r3]
|
||||||
strh r2, [r12]
|
add r1, r1, #4
|
||||||
ldr r12, LCPI1_1
|
add r2, r2, #1 <- [0,+,1]
|
||||||
ldr r12, [r12]
|
sub r0, r0, #1 <- [0,-,1]
|
||||||
strh r3, [r12]
|
cmp r0, #0
|
||||||
add r1, r1, #1 <- [0,+,1]
|
bne LBB1_2
|
||||||
add r3, r3, #4
|
|
||||||
add r2, r2, #1 <- [0,+,1]
|
LSR should reuse the "+" IV for the exit test.
|
||||||
cmp r1, r0
|
|
||||||
bne LBB1_2 @bb
|
|
||||||
|
|
||||||
|
|
||||||
//===---------------------------------------------------------------------===//
|
//===---------------------------------------------------------------------===//
|
||||||
@@ -588,25 +586,6 @@ implementations of ceil/floor/rint.
|
|||||||
|
|
||||||
//===---------------------------------------------------------------------===//
|
//===---------------------------------------------------------------------===//
|
||||||
|
|
||||||
This GCC bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34043
|
|
||||||
contains a testcase that compiles down to:
|
|
||||||
|
|
||||||
%struct.XMM128 = type { <4 x float> }
|
|
||||||
..
|
|
||||||
%src = alloca %struct.XMM128
|
|
||||||
..
|
|
||||||
%tmp6263 = bitcast %struct.XMM128* %src to <2 x i64>*
|
|
||||||
%tmp65 = getelementptr %struct.XMM128* %src, i32 0, i32 0
|
|
||||||
store <2 x i64> %tmp5899, <2 x i64>* %tmp6263, align 16
|
|
||||||
%tmp66 = load <4 x float>* %tmp65, align 16
|
|
||||||
%tmp71 = add <4 x float> %tmp66, %tmp66
|
|
||||||
|
|
||||||
If the mid-level optimizer turned the bitcast of pointer + store of tmp5899
|
|
||||||
into a bitcast of the vector value and a store to the pointer, then the
|
|
||||||
store->load could be easily removed.
|
|
||||||
|
|
||||||
//===---------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
Consider:
|
Consider:
|
||||||
|
|
||||||
int test() {
|
int test() {
|
||||||
|
|||||||
Reference in New Issue
Block a user