[Bug target/99930] Failure to optimize floating point -abs(x) in nontrivial code at -O2/3
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Oct 20 06:21:46 GMT 2025
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99930
--- Comment #13 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by H.J. Lu <hjl@gcc.gnu.org>:
https://gcc.gnu.org/g:c3b0ecf04f8c14360cc02c737446c029038a95f7
commit r16-4496-gc3b0ecf04f8c14360cc02c737446c029038a95f7
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Sun Oct 19 09:13:52 2025 +0800
x86: Optimize copysign (x, const_double)
After
commit 3f176e1adc6bc9cc2c21222d776b51d9f43cb66b
Author: Tamar Christina <tamar.christina@arm.com>
Date: Thu Nov 9 13:59:39 2023 +0000
middle-end: optimize fneg (fabs (x)) to copysign (x, -1) [PR109154]
fneg (fabs (x)) is expanded to copysign (x, -1). Swap constraints for
operands[1] and operands[2] in copysign<mode>3 pattern to optimize
y = copysign (x, const_double)
instead of
y = copysign (const_double, x)
Simplify
y = copysign (x, positive_const_double)
to
y = ~signbit_mask & x
and
y = copysign (x, negative_const_double)
to
y = signbit_mask | x
gcc/
PR target/99930
PR target/122323
* config/i386/i386-expand.cc (ix86_expand_copysign): Swap
operands[1] with operands[2]. Optimize copysign (x, const_double)
instead of copysign (const_double, x).
* config/i386/i386.md (copysign<mode>3): Swap constraints for
operands[1] and operands[2].
gcc/testsuite/
PR target/99930
PR target/122323
* gcc.target/i386/builtin-copysign-2.c: New test.
* gcc.target/i386/builtin-copysign-3.c: Likewise.
* gcc.target/i386/builtin-copysign-4.c: Likewise.
* gcc.target/i386/builtin-copysign-5.c: Likewise.
* gcc.target/i386/builtin-copysign-6.c: Likewise.
* gcc.target/i386/builtin-copysign-7.c: Likewise.
* gcc.target/i386/builtin-copysign-8a.c: Likewise.
* gcc.target/i386/builtin-copysign-8b.c: Likewise.
* gcc.target/i386/builtin-fabs-1.c: Likewise.
* gcc.target/i386/builtin-fabs-2.c: Likewise.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
More information about the Gcc-bugs
mailing list