[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