> Am 23.07.2026 um 18:15 schrieb Jeffrey Law <[email protected]>:
> 
> 
> 
>> On 7/23/2026 2:59 AM, Richard Biener wrote:
>>> On Thu, Jul 23, 2026 at 9:12 AM Eikansh Gupta
>>> <[email protected]> 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]>
>>> ---
>>>  gcc/match.pd                             | 20 +++++++
>>>  gcc/testsuite/gcc.dg/tree-ssa/pr109843.c | 76 ++++++++++++++++++++++++
>>>  2 files changed, 96 insertions(+)
>>>  create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr109843.c
>>> 
>>> diff --git a/gcc/match.pd b/gcc/match.pd
>>> index d1a12c35ed3..59ea0e1cc0c 100644
>>> --- a/gcc/match.pd
>>> +++ b/gcc/match.pd
>>> @@ -9864,6 +9864,26 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
>>>       (abs @0)
>>>       (negate (abs @0))))))
>>> 
>>> +/* (signbit (x) cmp1 0) cmp (signbit (y) cmp2 0) ? y : -y
>>> +   -> copysign (y, +-x).  */
>>> +#if GIMPLE
>>> +(for cmp (eq ne)
>>> + (for icmp1 (eq ne)
>>> +  (for icmp2 (eq ne)
>>> +   (for sign (SIGNBIT)
>> That's an awful a lot of combinations (2*2*2*4)
>> 
>>> +    (simplify
>>> +     (cond (cmp:c (icmp1 (sign @0) integer_zerop)
>> Plus :c here.
>> 
>> I wonder where the pattern request comes from ...
> Probably not spec given Andrea has been tagging things she finds with spec 
> when relevant.
> 
> Are you objecting to the number of patterns this generates, or just noting 
> that it's a bunch?

Just noticed it’s a bunch but without a concrete idea how to reduce 
(canonicalization) or doing it in a pass in some other ways (copy-of-sign 
propagation?).

> 
> jeff
> 
> 

Reply via email to