https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114541
--- Comment #2 from Heiko Eißfeldt <heiko at hexco dot de> --- For this testcase (which ICEs with trunk) ``` /* PR middle-end/114541 */ /* { dg-do compile } */ /* { dg-options "-fgimple" } */ /* { dg-bogus "internal compiler error" } */ void __GIMPLE (ssa,startwith ("dse2")) foo () { int a; __BB(2): if (a_5(D) > 4) goto __BB3&; /* { dg-error "expected ';' before" } */ else goto __BB4; __BB(3): a_2 = 10; goto __BB5; __BB(4): a_3 = 20; goto __BB5; __BB(5): a_1 = __PHI (__BB3: a_2, __BB4: a_3); a_4 = a_1 + 4; return; } ``` I have a patch that avoids the ICE (and a similar one with goto __BB4&). But after fixing the atoi() with strtoul() in c_parser_gimple_parse_bb_spec() the original testcase from the description becomes acceptable in c_parser_gimple_if_stmt() because when __BB# is not detected as a building block number it is considered to be a _label_ (as a fallback). ``` if ((cfun->curr_properties & PROP_cfg) && c_parser_gimple_parse_bb_spec_edge_probability (label, parser, &dest_index, &prob)) parser.push_edge (parser.current_bb->index, dest_index, EDGE_TRUE_VALUE, prob); else t_label = lookup_label_for_goto (loc, label); ``` Later on in c_parser_parse_gimple_body() when constructing CFG, edges and dominance info only building block numbers are expected (i think). So, how should the label case be handled, if at all? This is a bit above my pay grade, so any enlightenment would be welcome.