On Fri, Jul 24, 2026 at 05:14:11PM -0600, Jeffrey Law wrote:
>
>
> On 7/23/2026 1:11 AM, Eikansh Gupta wrote:
> > Fold (signbit (x) cmp1 0) cmp (signbit (y) cmp2 0) ? y : -y
> > to copysign (y, +-x). The result keeps the magnitude of Y and takes its
> > sign from X (or -X). Emitted as IFN_COPYSIGN when the target supports it.
> >
> > PR tree-optimization/109843
> >
> > gcc/ChangeLog:
> >
> > * match.pd ((signbit (x) cmp 0) cmp (signbit (y) cmp 0) ? y : -y):
> > New simplification to copysign (y, +-x).
> >
> > gcc/testsuite/ChangeLog:
> >
> > * gcc.dg/tree-ssa/pr109843.c: New test.
> >
> > Signed-off-by: Eikansh Gupta <[email protected]>
> OK. Please commit to the trunk.
This test FAILs for me, both on i686-linux and on x86_64-linux too,
on the latter with
RUNTESTFLAGS='--target_board=unix\{-m32,-m64\} tree-ssa.exp=pr109843.c'
PASS: gcc.dg/tree-ssa/pr112472.c (test for excess errors)
PASS: gcc.dg/tree-ssa/pr112472.c scan-tree-dump-not optimized "=
__builtin_copysign"
FAIL: gcc.dg/tree-ssa/pr112472.c scan-tree-dump-not optimized " double "
gcc.dg/tree-ssa/pr112472.c: pattern found 0 times
FAIL: gcc.dg/tree-ssa/pr112472.c scan-tree-dump-times optimized ".COPYSIGN" 1
gcc.dg/tree-ssa/pr112472.c: pattern found 0 times
FAIL: gcc.dg/tree-ssa/pr112472.c scan-tree-dump-times optimized "-1.0e\\+0" 1
gcc.dg/tree-ssa/pr112472.c: pattern found 2 times
FAIL: gcc.dg/tree-ssa/pr112472.c scan-tree-dump-times optimized " ABS_EXPR " 1
during the lower pass __builtin_copysign is lowered to -ABS_EXPR etc.
Jakub