This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/36134] GCC creates suboptimal ASM : usage of ADDA.L where LEA could be used
- From: "gunnar at greyhound-data dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 28 May 2008 16:18:54 -0000
- Subject: [Bug target/36134] GCC creates suboptimal ASM : usage of ADDA.L where LEA could be used
- References: <bug-36134-16150@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #2 from gunnar at greyhound-data dot com 2008-05-28 16:18 -------
(In reply to comment #1)
> It would have been nice to check at least gcc 4.3 (or better current trunk).
>
I've verified with latest source gcc source "version 4.4.0 20080523
(experimental) (GCC)"
The most current GCC source still has the problem
that ADD.L instructions are used for incrementing pointers instead using
shorter LEA instruction.
Code generated by GCC 4.4 for the testcase.
copy_32x4:
link.w %fp,#-12
movem.l #3076,(%sp)
move.l 16(%fp),%d2
lsr.l #4,%d2
move.l 8(%fp),%a3
move.l 12(%fp),%a2
jra .L6
.L7:
move.l (%a2),%a1
subq.l #1,%d2
move.l 4(%a2),%d0
move.l 8(%a2),%d1
move.l 12(%a2),%a0
add.l #16,%a2
move.l %a1,(%a3)
move.l %d0,4(%a3)
move.l %d1,8(%a3)
move.l %a0,12(%a3)
add.l #16,%a3
.L6:
tst.l %d2
jne .L7
movem.l (%sp),#3076
unlk %fp
rts
Regards
Gunnar
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36134