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