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/58219] New: [SH] mov.l insn length is wrong on SH2A


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


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