https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111414
--- Comment #4 from CVS 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:ba4c1f2bfc9ec063188b39d0281fae04c57b1416 commit r14-4037-gba4c1f2bfc9ec063188b39d0281fae04c57b1416 Author: Andrew Pinski <apin...@marvell.com> Date: Thu Sep 14 07:39:31 2023 -0700 MATCH: Fix `(1 >> X) != 0` pattern for vector types I had missed that integer_onep can match vector types with uniform constant of `1`. This means the shifter could be an scalar type and then doing a comparison against `0` would be an invalid transformation. This fixes the problem by adding a check for the type of the integer_onep to make sure it is a INTEGRAL_TYPE_P (which does not match a vector type). OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions. PR tree-optimization/111414 gcc/ChangeLog: * match.pd (`(1 >> X) != 0`): Check to see if the integer_onep was an integral type (not a vector type). gcc/testsuite/ChangeLog: * gcc.c-torture/compile/pr111414-1.c: New test.