From 6cb239e58edfbd2415d13174a559c947d0d7b488 Mon Sep 17 00:00:00 2001 From: hubicka Date: Sat, 28 Mar 2009 14:48:43 +0000 Subject: [PATCH] * 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 --- gcc/ChangeLog | 9 +++++++++ gcc/ipa-inline.c | 2 ++ gcc/passes.c | 1 + gcc/tree-optimize.c | 22 +++++++++++++++++++--- 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 + + * 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 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; -- 2.11.0