This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/58219] New: [SH] mov.l insn length is wrong on SH2A
- 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: Thu, 22 Aug 2013 21:56:38 +0000
- Subject: [Bug target/58219] New: [SH] mov.l insn length is wrong on SH2A
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58219
Bug ID: 58219
Summary: [SH] mov.l insn length is wrong on SH2A
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: olegendo at gcc dot gnu.org
Target: sh2a*-*-*
As of rev 201282, when compiling for SH2A mov.l insn lengths are wrongly set to
4 bytes:
int test (int* x)
{
return x[0];
}
void test (int* x, int y)
{
x[0] = y;
}
__Z4testPi:
mov.l @r4,r0 ! 6 movsi_ie/6 [length = 4]
rts/n ! 28 *return_i [length = 4]
__Z4testPii:
.LFB1:
mov.l r5,@r4 ! 7 movsi_ie/9 [length = 4]
rts/n ! 19 *return_i [length = 4]
This makes it impossible for the dbr pass to put mov.l loads/stores into delay
slots (on SH only 2 byte insns can be put into delay slots).