https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117646

--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrew Pinski <pins...@gcc.gnu.org>:

https://gcc.gnu.org/g:45a3277149d95a51cf9109cab87ee39a7dce73e2

commit r15-5380-g45a3277149d95a51cf9109cab87ee39a7dce73e2
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Sun Nov 17 20:21:58 2024 -0800

    match: Fix the `max<a,b>==0` pattern for pointers [PR117646]

    For pointers I forgot that BIT_IOR_EXPR is not valid so when
    I added the pattern to convert `max<a,b> != 0` (r15-5356), GCC
    would start to ICEing saying pointer types were not valid for
    BIT_IOR_EXPR.
    This fixes the problem by casting to the unsigned type of the
    inner type. There was another way of fixing this to handling it
    as `a == 0 & b == 0` but both match and reassoication (for pointers)
    will then convert it back into the form I am creating here so
    let's just use that form instead.

    Bootstrapped and tested on x86_64-linux-gnu.

            PR tree-optimization/117646

    gcc/ChangeLog:

            * match.pd (`max<a,b>==0`): Add casts to `unsigned type`.

    gcc/testsuite/ChangeLog:

            * gcc.dg/torture/minmaxneeqptr-1.c: New test.

    Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>

Reply via email to