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).