static unsigned int
execute_build_cfg (void)
{
- build_gimple_cfg (gimple_body (current_function_decl));
+ gimple_seq body = gimple_body (current_function_decl);
+
+ build_gimple_cfg (body);
+ gimple_set_body (current_function_decl, NULL);
return 0;
}
if (dsf && (flags & TDF_DETAILS))
dump_eh_tree (file, dsf);
- if (flags & TDF_RAW && !gimple_body (fn))
+ if (flags & TDF_RAW && !gimple_has_body_p (fn))
{
dump_node (fn, TDF_SLIM | flags, file);
return;
{
basic_block bb;
- bb = BASIC_BLOCK (NUM_FIXED_BLOCKS);
+ bb = ENTRY_BLOCK_PTR;
if (bb && bb->loop_father)
print_loop_and_siblings (file, bb->loop_father, 0, verbosity);
}
EXECUTE_IF_SET_IN_BITMAP (blocks, 0, i, bi)
{
- changed |= gimple_purge_dead_eh_edges (BASIC_BLOCK (i));
+ basic_block bb = BASIC_BLOCK (i);
+
+ /* Earlier gimple_purge_dead_eh_edges could have removed
+ this basic block already. */
+ gcc_assert (bb || changed);
+ if (bb != NULL)
+ changed |= gimple_purge_dead_eh_edges (bb);
}
return changed;