[Bug c/97157] New: -Wduplicated-branches: C ICE in hash_operand, at fold-const.c:3768

jim at meyering dot net gcc-bugzilla@gcc.gnu.org
Tue Sep 22 03:16:14 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97157

            Bug ID: 97157
           Summary: -Wduplicated-branches: C ICE in hash_operand, at
                    fold-const.c:3768
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jim at meyering dot net
  Target Milestone: ---

I note that https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95107 is an ICE at the
same file:line, but for fortran. This is for C and causes any tool using
gnulib's quotearg.c to fail to compile.

I built gcc from git today; git desc prints this:
  basepoints/gcc-11-3342-g27edc6c3e29

$ cat quotearg.c
static int f (int x)
{
  switch (9)
    {
    default:
      do
        {
          if (1)
            break;
          else
            if (0)
              switch (1) { default: ; }
        }
      while (1);
    }
  return f (x);
}

$ gcc -Wduplicated-branches -c quotearg.c
quotearg.c: In function ‘f’:
quotearg.c:17:1: internal compiler error: in hash_operand, at fold-const.c:3768
   17 | }
      | ^
0x5e9431 operand_compare::hash_operand(tree_node const*, inchash::hash&,
unsigned int)
        /home/j/w/co/gcc/gcc/fold-const.c:3768
0x85a876 operand_compare::hash_operand(tree_node const*, inchash::hash&,
unsigned int)
        /home/j/w/co/gcc/gcc/fold-const.c:3858
0x85a876 operand_compare::hash_operand(tree_node const*, inchash::hash&,
unsigned int)
        /home/j/w/co/gcc/gcc/fold-const.c:3858
0x6f8997 do_warn_duplicated_branches
        /home/j/w/co/gcc/gcc/c-family/c-warn.c:2768
0x6f8997 do_warn_duplicated_branches_r(tree_node**, int*, void*)
        /home/j/w/co/gcc/gcc/c-family/c-warn.c:2790
0xd68bfa walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
        /home/j/w/co/gcc/gcc/tree.c:12001
0xd68f29 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
        /home/j/w/co/gcc/gcc/tree.c:12106
0xd68d4a walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
        /home/j/w/co/gcc/gcc/tree.c:12336
0xd68f29 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
        /home/j/w/co/gcc/gcc/tree.c:12106
0xd6ad9a walk_tree_without_duplicates_1(tree_node**, tree_node*
(*)(tree_node**, int*, void*), void*, tree_node* (*)(tree_node**, int*,
tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false,
default_hash_traits<tree_node*> >*))
        /home/j/w/co/gcc/gcc/tree.c:12362
0x6cf53d c_genericize(tree_node*)
        /home/j/w/co/gcc/gcc/c-family/c-gimplify.c:537
0x630380 finish_function(unsigned int)
        /home/j/w/co/gcc/gcc/c/c-decl.c:10219
0x68635f c_parser_declaration_or_fndef
        /home/j/w/co/gcc/gcc/c/c-parser.c:2562
0x68d043 c_parser_external_declaration
        /home/j/w/co/gcc/gcc/c/c-parser.c:1777
0x68db39 c_parser_translation_unit
        /home/j/w/co/gcc/gcc/c/c-parser.c:1650
0x68db39 c_parse_file()
        /home/j/w/co/gcc/gcc/c/c-parser.c:21821
0x6d9c2d c_common_parse_file()
        /home/j/w/co/gcc/gcc/c-family/c-opts.c:1188
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.


More information about the Gcc-bugs mailing list