On 7/7/2026 11:13 AM, Kael Andrew Franco wrote:
>  From cf6e4302cddd979315a58008e77f0c869280318c Mon Sep 17 00:00:00 2001
> From: Kael Andrew Alonzo Franco <[email protected]>
> Date: Tue, 7 Jul 2026 13:09:01 -0400
> Subject: [PATCH] match: Use tree_expr_nonnegative_p for (X / Y) (==,!=) 0 -> X
>   (<,>=) Y [PR125738]
>
> TYPE_UNSIGNED did not cover non-negative X and Y so use 
> tree_expr_nonnegative_p
> to relax condition on optimizations.
> gcc/testsuite/gcc.dg/tree-ssa/pr64130.c fails because match.pd optimize 
> funsigned () before
> evrp pass. Fix this by removing funsigned () and one scan-tree-dump.
>
> Bootstrapped and tested on x86_64-pc-linux-gnu.
>
>       PR tree-optimization/125738
>       PR tree-optimization/64130
>
> gcc/ChangeLog:
>
>       * match.pd: Use tree_expr_nonnegative_p for (X / Y) (==,!=) 0 -> X 
> (<,>=) Y.
>
> gcc/testsuite/ChangeLog:
>
>       * gcc.dg/pr125738.c: New test.
>       * gcc.dg/tree-ssa/pr64130.c: Remove scan-tree-dump [2, 8589934591].
>       (funsigned): Remove.
>       (funsigned2): Rename to funsigned.
So conceptually good.  Throwing it into an LLM did uncover one concern 
worth relaying.

In particular the old code checked TYPE_UNSIGNED, so it'd work for 
vector types.  tree_expr_nonnegative_p always returns false for 
vectors.  So we could end up with a code quality regression here (and 
other places where we've converted to tree_expr_nonnegative_p).

So I think there's a question here.  Do we want tree_expr_nonnegative_p 
to return tree for vector types that  are unsigned.  Conceptually that's 
a good thing, but may have unintended consequences elsewhere.   If no, 
then we probably want to use something like like TYPE_UNSIGNED || 
tree_expr_nonnegative_p in a test rather than in the capture.  I'd tend 
to lean towards the former, but that' s without any real investigation.

A much smaller issue.  I would have at least considered leaving the 
original funsigned test in place and instead checked the dump for the 
optimized form.  It essentially turns into an additional test to this 
patch.   But again, this is small.

Richi, Andrea thoughts?

jeff

Reply via email to