[Bug middle-end/28283] SuperH: Very unoptimal code generated for 64-bit ints

amylaar at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Thu Jul 6 19:30:00 GMT 2006



------- Comment #3 from amylaar at gcc dot gnu dot org  2006-07-06 19:30 -------
When I disable the offending code (by altering add_cost[DImode] at the right
moment), I get the right result for little endian.  However, compiling for
big endian gives wrong code:

_expand64:
        mov     #0,r5
        mov     r4,r0
        rts     
        mov     r5,r1
        .size   _expand64, .-_expand64
        .ident  "GCC: (GNU) 4.2.0 20060620 (experimental)"

3.4.0 was sane:
_expand64:
        mov     r4,r5
        mov     #0,r4
        mov     r4,r0
        rts
        mov     r5,r1
        .size   _expand64, .-_expand64
        .ident  "GCC: (GNU) 3.4.0 20040113 (experimental)"


-- 

amylaar at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |joern dot rennecke at st dot
                   |                            |com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28283



More information about the Gcc-bugs mailing list