summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2009-03-28 14:48:43 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2009-03-28 14:48:43 +0000
commit6cb239e58edfbd2415d13174a559c947d0d7b488 (patch)
tree6f748522fd5120afcb6df2c0a38d96ddde706e17 /gcc
parentbfe3098e329ffc5e310ac15ed7f4a06d212b18dc (diff)
downloadgcc-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/ChangeLog9
-rw-r--r--gcc/ipa-inline.c2
-rw-r--r--gcc/passes.c1
-rw-r--r--gcc/tree-optimize.c22
-rw-r--r--gcc/tree-pass.h1
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;