https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116709

            Bug ID: 116709
           Summary: [SH] fp values ferried through fpul
           Product: gcc
           Version: 14.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: olegendo at gcc dot gnu.org
  Target Milestone: ---

Following example, compiled on sh-elf with -O2 -m4-single

typedef _Complex float tuplef_t;

static inline tuplef_t make_tuplef(float first, float second)
{
  return (tuplef_t){ first, second };
}

tuplef_t get_my_tuplef()
{
    return make_tuplef(12.3f, 15.4f);
}


without LRA:

        mova    .L4,r0
        fmov.s  @r0+,fr1
        fmov.s  @r0+,fr2
        flds    fr1,fpul   <<<<
        fmov    fr2,fr0     
        rts     
        fsts    fpul,fr1   <<<<
.L4:
        .long   1098278502
        .long   1095027917

with -mlra:
get_my_tuplef():
        mova    .L4,r0
        fmov.s  @r0+,fr2
        lds.l   @r0+,fpul    <<<<<
        fmov    fr2,fr0
        rts     
        fsts    fpul,fr1     <<<<<
.L4:
        .long   1095027917
        .long   1098278502

Reply via email to