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>