diff options
author | Richard Biener <rguenther@suse.de> | 2015-03-10 12:44:01 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2015-03-10 12:44:01 +0000 |
commit | c692785982889bcb1ebe1a0ee354c3e07a515208 (patch) | |
tree | 8e8e530ecc9c745053212daf19f84479986d7dd0 /gcc/tree-inline.c | |
parent | 2e1a9cdb64bb7a064d49f6db0c8cb1d7c91e813a (diff) | |
download | gcc-c692785982889bcb1ebe1a0ee354c3e07a515208.zip gcc-c692785982889bcb1ebe1a0ee354c3e07a515208.tar.gz gcc-c692785982889bcb1ebe1a0ee354c3e07a515208.tar.bz2 |
re PR ipa/44563 (GCC uses a lot of RAM when compiling a large numbers of functions)
2015-03-09 Richard Biener <rguenther@suse.de>
PR middle-end/44563
* tree-inline.c (copy_cfg_body): Skip block mapped to entry/exit
for redirect_all_calls.
From-SVN: r221321
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r-- | gcc/tree-inline.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index d8abe03..259a348 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -2805,7 +2805,9 @@ copy_cfg_body (copy_body_data * id, gcov_type count, int frequency_scale, maybe_move_debug_stmts_to_successors (id, (basic_block) bb->aux); /* Update call edge destinations. This can not be done before loop info is updated, because we may split basic blocks. */ - if (id->transform_call_graph_edges == CB_CGE_DUPLICATE) + if (id->transform_call_graph_edges == CB_CGE_DUPLICATE + && bb->index != ENTRY_BLOCK + && bb->index != EXIT_BLOCK) redirect_all_calls (id, (basic_block)bb->aux); ((basic_block)bb->aux)->aux = NULL; bb->aux = NULL; |