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

chenglulu <chenglulu at loongson dot cn> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |chenglulu at loongson dot cn
             Target|                            |x86_64,loongarch64

--- Comment #1 from chenglulu <chenglulu at loongson dot cn> ---
On x86_64:

test.c
```
extern unsigned int step;
extern float sqrtf (float x);
extern void test1 (float);
void
test ()
{
  test1 (0.5 / sqrtf (1. + step));
}
```
# cc1 testf.c -o - -O2 -ffast-math -msse -mfpmath=sse -mrecip  -fdump-tree-all
--param=ranger-debug=all

test.s
```
test:
.LFB0:
        .cfi_startproc
        movss   .LC0(%rip), %xmm0
        jmp     test1
        .cfi_endproc
.LFE0:
        .size   test, .-test
        .section        .rodata.cst4,"aM",@progbits,4
        .align 4
.LC0:
        .long   1056964608
        .ident  "GCC: (GNU) 16.0.0 20250605 (experimental)"
        .section        .note.GNU-stack,"",@progbits
```
In commit r16-1191 and later, the parameters of test1 were incorrectly
optimized to 0.5.

Reply via email to