https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113102
--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>: https://gcc.gnu.org/g:d3defa435e9d04d6ab6585ac184989941c7ad51e commit r14-6803-gd3defa435e9d04d6ab6585ac184989941c7ad51e Author: Jakub Jelinek <ja...@redhat.com> Date: Fri Dec 22 12:27:05 2023 +0100 lower-bitint: Fix handle_cast ICE [PR113102] My recent change to use m_data[save_data_cnt] instead of m_data[save_data_cnt + 1] when inside of a loop (m_bb is non-NULL) broke the following testcase. When we create a PHI node on the loop using prepare_data_in_out, both m_data[save_data_cnt{, + 1}] are computed and the fix was right, but there are also cases when we in a loop (m_bb non-NULL) emit a nested cast with too few limbs and then just use constant indexes for all accesses - in that case only m_data[save_data_cnt + 1] is initialized and m_data[save_data_cnt] is NULL. In those cases, we want to use the former. 2023-12-22 Jakub Jelinek <ja...@redhat.com> PR tree-optimization/113102 * gimple-lower-bitint.cc (bitint_large_huge::handle_cast): Only use m_data[save_data_cnt] if it is non-NULL. * gcc.dg/bitint-58.c: New test.