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.