[Bug target/51708] SH Target: SHAD / SHLD constant not CSE-ed

olegendo at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Sep 23 17:11:00 GMT 2012


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

Oleg Endo <olegendo at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |olegendo at gcc dot gnu.org

--- Comment #1 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-09-23 17:10:44 UTC ---
Another test case, which is probably easier to write a testsuite case for:

int test00 (int tab[], int i, int j, int tab2[])
{
  return tab[i * 8192 + 4] + tab2[j * 8192 + 8];
}

compiles to (OK):
        mov     #15,r1
        shld    r1,r5
        shld    r1,r6
        add     r5,r4
        add     r6,r7
        mov.l   @(16,r4),r0
        mov.l   @(32,r7),r1
        rts
        add     r1,r0


int test01 (int tab[], int i, int j, int tab2[])
{
  return (tab[i * 8192 + 4] + tab2[j * 8192 + 8]) * 15;
}

complies to (NG):
        mov     #15,r1
        mov     #15,r2
        shld    r1,r5
        shld    r2,r6
        add     r5,r4
        add     r6,r7
        mov.l   @(16,r4),r1
        mov.l   @(32,r7),r2
        add     r2,r1
        mov     r1,r0
        shll2   r0
        shll2   r0
        rts
        sub     r1,r0



More information about the Gcc-bugs mailing list