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

Reply via email to