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/51708] SH Target: SHAD / SHLD constant not CSE-ed


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


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