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

            Bug ID: 108293
           Summary: Incorrect assembly emitted for float for BPF target
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dkm at gcc dot gnu.org
  Target Milestone: ---

https://godbolt.org/z/z9WEs3Ksn

The generated code has identical function for b() and d(), which is obviously
wrong.

float f;
float a() { f = 1.0; return 1.0; }
float b() { f = 2.0; return 2.0; }
float c() { f = 2.0; return 3.0; }
float d() { f = 3.0; return 3.0; }

_Z1av:
        lddw    %r0,65
        lddw    %r1,f
        stxw    [%r1+0],%r0
        exit
_Z1bv:
        lddw    %r0,129
        lddw    %r1,f
        stxw    [%r1+0],%r0
        exit
_Z1cv:
        lddw    %r0,f
        lddw    %r1,129
        stxw    [%r0+0],%r1
        lddw    %r0,129
        exit
_Z1dv:
        lddw    %r0,129
        lddw    %r1,f
        stxw    [%r1+0],%r0
        exit

Reply via email to