https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109934
--- Comment #7 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-12 branch has been updated by Sam James <sja...@gcc.gnu.org>: https://gcc.gnu.org/g:ea7d7818fdc7a49be3d35acd441ce122e8bb477e commit r12-10766-gea7d7818fdc7a49be3d35acd441ce122e8bb477e Author: Aldy Hernandez <al...@redhat.com> Date: Tue May 23 12:34:45 2023 +0200 Remove buggy special case in irange::invert [PR109934]. This patch removes a buggy special case in irange::invert which seems to have been broken for a while, and probably never triggered because the legacy code was handled elsewhere, and the non-legacy code was using an int_range_max of int_range<255> which made it extremely likely for num_ranges == 255. However, with auto-resizing ranges, int_range_max will start off at 3 and can hit this bogus code in the unswitching code. PR tree-optimization/109934 gcc/ChangeLog: * value-range.cc (irange::invert): Remove buggy special case. gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/pr109934.c: New test. (cherry picked from commit 8d5f050dabbf6dd3b992c3b46661848dbcf30d9e)