Commit cb73e4e7 by Richard Biener Committed by Richard Biener

re PR c/92249 (ICE in c_parser_gimple_compound_statement w/ GIMPLE testcases)

2019-10-28  Richard Biener  <rguenther@suse.de>

	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
parent bd7a559a
2019-10-28 Richard Biener <rguenther@suse.de>
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 <jakub@redhat.com> 2019-10-24 Jakub Jelinek <jakub@redhat.com>
* c-parser.c (c_finish_omp_declare_variant): Use * c-parser.c (c_finish_omp_declare_variant): Use
......
...@@ -235,6 +235,7 @@ c_parser_parse_gimple_body (c_parser *cparser, char *gimple_pass, ...@@ -235,6 +235,7 @@ c_parser_parse_gimple_body (c_parser *cparser, char *gimple_pass,
/* We have at least cdil_gimple_cfg. */ /* We have at least cdil_gimple_cfg. */
gimple_register_cfg_hooks (); gimple_register_cfg_hooks ();
init_empty_tree_cfg (); init_empty_tree_cfg ();
parser.current_bb = ENTRY_BLOCK_PTR_FOR_FN (cfun);
/* Initialize the bare loop structure - we are going to only /* Initialize the bare loop structure - we are going to only
mark headers and leave the rest to fixup. */ mark headers and leave the rest to fixup. */
set_loops_for_fn (cfun, ggc_cleared_alloc<struct loops> ()); set_loops_for_fn (cfun, ggc_cleared_alloc<struct loops> ());
...@@ -594,7 +595,7 @@ c_parser_gimple_compound_statement (gimple_parser &parser, gimple_seq *seq) ...@@ -594,7 +595,7 @@ c_parser_gimple_compound_statement (gimple_parser &parser, gimple_seq *seq)
if (last_basic_block_for_fn (cfun) <= index) if (last_basic_block_for_fn (cfun) <= index)
last_basic_block_for_fn (cfun) = index + 1; last_basic_block_for_fn (cfun) = index + 1;
n_basic_blocks_for_fn (cfun)++; 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, parser.push_edge (ENTRY_BLOCK, bb->index, EDGE_FALLTHRU,
profile_probability::always ()); profile_probability::always ());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment