From cb73e4e734e2a3fb8034137806a7c676b5d5f366 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Mon, 28 Oct 2019 12:25:09 +0000 Subject: [PATCH] re PR c/92249 (ICE in c_parser_gimple_compound_statement w/ GIMPLE testcases) 2019-10-28 Richard Biener PR c/92249 * gimple-parser.c (c_parser_parse_gimple_body): Make current_bb the entry block initially to easier recover from errors. (c_parser_gimple_compound_statement): Adjust. From-SVN: r277512 --- gcc/c/ChangeLog | 8 ++++++++ gcc/c/gimple-parser.c | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index e8518f27494..4b0511888b2 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,11 @@ +2019-10-28 Richard Biener + + PR c/92249 + * gimple-parser.c (c_parser_parse_gimple_body): Make + current_bb the entry block initially to easier recover + from errors. + (c_parser_gimple_compound_statement): Adjust. + 2019-10-24 Jakub Jelinek * c-parser.c (c_finish_omp_declare_variant): Use diff --git a/gcc/c/gimple-parser.c b/gcc/c/gimple-parser.c index 3f575992d32..d8588d47462 100644 --- a/gcc/c/gimple-parser.c +++ b/gcc/c/gimple-parser.c @@ -235,6 +235,7 @@ c_parser_parse_gimple_body (c_parser *cparser, char *gimple_pass, /* We have at least cdil_gimple_cfg. */ gimple_register_cfg_hooks (); init_empty_tree_cfg (); + parser.current_bb = ENTRY_BLOCK_PTR_FOR_FN (cfun); /* Initialize the bare loop structure - we are going to only mark headers and leave the rest to fixup. */ set_loops_for_fn (cfun, ggc_cleared_alloc ()); @@ -594,7 +595,7 @@ c_parser_gimple_compound_statement (gimple_parser &parser, gimple_seq *seq) if (last_basic_block_for_fn (cfun) <= index) last_basic_block_for_fn (cfun) = index + 1; n_basic_blocks_for_fn (cfun)++; - if (!parser.current_bb) + if (parser.current_bb->index == ENTRY_BLOCK) parser.push_edge (ENTRY_BLOCK, bb->index, EDGE_FALLTHRU, profile_probability::always ()); -- 2.30.2