Re: [PATCH v2] MATCH: fold signbit comparison and conditional negate to copysign [PR109843]
Eikansh Gupta <[email protected]>
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <CAKmGkg6SfctN4VpsfayxTfm6xpJnhwdaSc0Uv09=Ce8efZaCPg@mail.gmail.com> |
On Fri, Jul 31, 2026 at 2:33 AM Jakub Jelinek <[email protected]> wrote: > 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 > > I have pushed a fix for both the test cases. Regards, Eikansh