[Bug tree-optimization/120638] Optimization errors caused by frange calculation errors
chenglulu at loongson dot cn
gcc-bugzilla@gcc.gnu.org
Thu Jun 12 08:38:17 GMT 2025
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.
More information about the Gcc-bugs
mailing list