This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/51708] SH Target: SHAD / SHLD constant not CSE-ed
- From: "olegendo at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 23 Sep 2012 17:10:44 +0000
- Subject: [Bug target/51708] SH Target: SHAD / SHLD constant not CSE-ed
- Auto-submitted: auto-generated
- References: <bug-51708-4@http.gcc.gnu.org/bugzilla/>
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