https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105770
Bug ID: 105770 Summary: [13 Regression] ICE in decompose, at wide-int.h:984 Product: gcc Version: 13.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gcc 13.0.0 20220529 snapshot (g:58a40e76ebadce78639644cd3d56e42b68336927) ICEs when compiling the following testcase, reduced from gcc/testsuite/gcc.dg/analyzer/pr103892.c, w/ -O1 -funswitch-loops -fno-tree-forwprop: char argstr; void argstr_get_word (void) { while (argstr) switch (argstr) { case ' ': case '\t': return; } __builtin_unreachable (); } % gcc-13.0.0 -O1 -funswitch-loops -fno-tree-forwprop -c hlkdlkuv.c during GIMPLE pass: unswitch hlkdlkuv.c: In function 'argstr_get_word': hlkdlkuv.c:4:1: internal compiler error: in decompose, at wide-int.h:984 4 | argstr_get_word (void) | ^~~~~~~~~~~~~~~ 0x7e7cea wi::int_traits<generic_wide_int<wide_int_ref_storage<false, false> > >::decompose(long*, unsigned int, generic_wide_int<wide_int_ref_storage<false, false> > const&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220529/work/gcc-13-20220529/gcc/wide-int.h:984 0x7ec593 wi::int_traits<generic_wide_int<wide_int_storage> >::decompose(long*, unsigned int, generic_wide_int<wide_int_storage> const&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220529/work/gcc-13-20220529/gcc/tree.h:3701 0x7ec593 wide_int_ref_storage<true, false>::wide_int_ref_storage<generic_wide_int<wide_int_storage> >(generic_wide_int<wide_int_storage> const&, unsigned int) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220529/work/gcc-13-20220529/gcc/wide-int.h:1034 0x7ec593 generic_wide_int<wide_int_ref_storage<true, false> >::generic_wide_int<generic_wide_int<wide_int_storage> >(generic_wide_int<wide_int_storage> const&, unsigned int) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220529/work/gcc-13-20220529/gcc/wide-int.h:790 0x7ec593 wi::binary_traits<generic_wide_int<wide_int_ref_storage<false, false> >, generic_wide_int<wide_int_storage>, wi::int_traits<generic_wide_int<wide_int_ref_storage<false, false> > >::precision_type, wi::int_traits<generic_wide_int<wide_int_storage> >::precision_type>::result_type wi::bit_and_not<generic_wide_int<wide_int_ref_storage<false, false> >, generic_wide_int<wide_int_storage> >(generic_wide_int<wide_int_ref_storage<false, false> > const&, generic_wide_int<wide_int_storage> const&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220529/work/gcc-13-20220529/gcc/wide-int.h:2343 0x7ec593 generic_simplify_111 /var/tmp/portage/sys-devel/gcc-13.0.0_p20220529/work/build/gcc/generic-match.cc:8192 0x169139f generic_simplify_EQ_EXPR /var/tmp/portage/sys-devel/gcc-13.0.0_p20220529/work/build/gcc/generic-match.cc:56962 0xb44402 fold_binary_loc(unsigned int, tree_code, tree_node*, tree_node*, tree_node*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220529/work/gcc-13-20220529/gcc/fold-const.cc:10902 0xb4cdda fold_build2_loc(unsigned int, tree_code, tree_node*, tree_node*, tree_node*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220529/work/gcc-13-20220529/gcc/fold-const.cc:13854 0x1071bb3 find_unswitching_predicates_for_bb /var/tmp/portage/sys-devel/gcc-13.0.0_p20220529/work/gcc-13-20220529/gcc/tree-ssa-loop-unswitch.cc:537 0x1075b19 init_loop_unswitch_info /var/tmp/portage/sys-devel/gcc-13.0.0_p20220529/work/gcc-13-20220529/gcc/tree-ssa-loop-unswitch.cc:268 0x1075b19 tree_ssa_unswitch_loops(function*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220529/work/gcc-13-20220529/gcc/tree-ssa-loop-unswitch.cc:332