This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/36134] GCC creates suboptimal ASM : usage of ADDA.L where LEA could be used



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]