diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-03-28 14:48:43 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-03-28 14:48:43 +0000 |
commit | 6cb239e58edfbd2415d13174a559c947d0d7b488 (patch) | |
tree | 6f748522fd5120afcb6df2c0a38d96ddde706e17 /gcc | |
parent | bfe3098e329ffc5e310ac15ed7f4a06d212b18dc (diff) | |
download | gcc-6cb239e58edfbd2415d13174a559c947d0d7b488.tar.gz |
* tree-pass.h (pass_fixup_cfg): New pass.
* ipa-inline.c (inline_transform): Set
always_inline_functions_inlined/after_inlining.
* tree-optimize.c (execute_fixup_cfg): Do not set them here.
(pass_fixup_cfg): New pass.
* passes.c (init_optimization_passes): Add fixup_cfg.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145191 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/ipa-inline.c | 2 | ||||
-rw-r--r-- | gcc/passes.c | 1 | ||||
-rw-r--r-- | gcc/tree-optimize.c | 22 | ||||
-rw-r--r-- | gcc/tree-pass.h | 1 |
5 files changed, 32 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7e842a0c263..e1fac756fed 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2009-03-28 Jan Hubicka <jh@suse.cz> + + * tree-pass.h (pass_fixup_cfg): New pass. + * ipa-inline.c (inline_transform): Set + always_inline_functions_inlined/after_inlining. + * tree-optimize.c (execute_fixup_cfg): Do not set them here. + (pass_fixup_cfg): New pass. + * passes.c (init_optimization_passes): Add fixup_cfg. + 2009-03-28 Richard Guenther <rguenther@suse.de> PR tree-optimization/38458 diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 94e4576f1ae..5da4b4c700e 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -1755,6 +1755,8 @@ inline_transform (struct cgraph_node *node) todo = optimize_inline_calls (current_function_decl); timevar_pop (TV_INTEGRATION); } + cfun->always_inline_functions_inlined = true; + cfun->after_inlining = true; return todo | execute_fixup_cfg (); } diff --git a/gcc/passes.c b/gcc/passes.c index b77b518ccf8..09094cadf38 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -536,6 +536,7 @@ init_optimization_passes (void) NEXT_PASS (pass_early_local_passes); { struct opt_pass **p = &pass_early_local_passes.pass.sub; + NEXT_PASS (pass_fixup_cfg); NEXT_PASS (pass_tree_profile); NEXT_PASS (pass_cleanup_cfg); NEXT_PASS (pass_init_datastructures); diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c index 2640167face..13a50c00c37 100644 --- a/gcc/tree-optimize.c +++ b/gcc/tree-optimize.c @@ -293,9 +293,6 @@ execute_fixup_cfg (void) gimple_stmt_iterator gsi; int todo = gimple_in_ssa_p (cfun) ? TODO_verify_ssa : 0; - cfun->after_inlining = true; - cfun->always_inline_functions_inlined = true; - if (cfun->eh) FOR_EACH_BB (bb) { @@ -333,6 +330,25 @@ execute_fixup_cfg (void) return todo; } +struct gimple_opt_pass pass_fixup_cfg = +{ + { + GIMPLE_PASS, + NULL, /* name */ + NULL, /* gate */ + execute_fixup_cfg, /* execute */ + NULL, /* sub */ + NULL, /* next */ + 0, /* static_pass_number */ + 0, /* tv_id */ + PROP_cfg, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0 /* todo_flags_finish */ + } +}; + /* Do the actions required to initialize internal data structures used in tree-ssa optimization passes. */ diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index db437a62538..2f4fed815f0 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -309,6 +309,7 @@ extern struct gimple_opt_pass pass_tree_profile; extern struct gimple_opt_pass pass_early_tree_profile; extern struct gimple_opt_pass pass_cleanup_cfg; extern struct gimple_opt_pass pass_referenced_vars; +extern struct gimple_opt_pass pass_fixup_cfg; extern struct gimple_opt_pass pass_sra; extern struct gimple_opt_pass pass_sra_early; extern struct gimple_opt_pass pass_tail_recursion; |