aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-04-10 08:19:21 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-04-10 08:19:21 +0000
commit26eb69c619a491be1a40413b98d010b2d3ef984a (patch)
tree6b92c821c2ae799a2ab7f42bf9b9d1f1861fa75f /gcc
parentbcc2b4cdc2b3692baa1e2c64c5c520a0dc66bc4b (diff)
downloadgcc-26eb69c619a491be1a40413b98d010b2d3ef984a.zip
gcc-26eb69c619a491be1a40413b98d010b2d3ef984a.tar.gz
gcc-26eb69c619a491be1a40413b98d010b2d3ef984a.tar.bz2
tree-pass.h (tree_lowering_passes): Remove.
2012-04-10 Richard Guenther <rguenther@suse.de> * tree-pass.h (tree_lowering_passes): Remove. * tree-optimize.c (tree_lowering_passes): Remove. * cgraph.c (cgraph_add_new_function): Inline relevant parts of tree_lowering_passes, avoid redundant call of early local passes. * cgraphunit.c (cgraph_lower_function): Fold into ... (cgraph_analyze_function): ... its single caller. Inline relevant parts of tree_lowering_passes. From-SVN: r186268
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/cgraph.c5
-rw-r--r--gcc/cgraphunit.c32
-rw-r--r--gcc/tree-optimize.c20
-rw-r--r--gcc/tree-pass.h2
5 files changed, 30 insertions, 40 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7ad6521..3a1819d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2012-04-10 Richard Guenther <rguenther@suse.de>
+
+ * tree-pass.h (tree_lowering_passes): Remove.
+ * tree-optimize.c (tree_lowering_passes): Remove.
+ * cgraph.c (cgraph_add_new_function): Inline relevant parts
+ of tree_lowering_passes, avoid redundant call of early local
+ passes.
+ * cgraphunit.c (cgraph_lower_function): Fold into ...
+ (cgraph_analyze_function): ... its single caller. Inline
+ relevant parts of tree_lowering_passes.
+
2012-04-09 H.J. Lu <hongjiu.lu@intel.com>
PR other/52777
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index e429a91..8ab8a0b 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -2437,10 +2437,9 @@ cgraph_add_new_function (tree fndecl, bool lowered)
push_cfun (DECL_STRUCT_FUNCTION (fndecl));
current_function_decl = fndecl;
gimple_register_cfg_hooks ();
- tree_lowering_passes (fndecl);
bitmap_obstack_initialize (NULL);
- if (!gimple_in_ssa_p (DECL_STRUCT_FUNCTION (fndecl)))
- execute_pass_list (pass_early_local_passes.pass.sub);
+ execute_pass_list (all_lowering_passes);
+ execute_pass_list (pass_early_local_passes.pass.sub);
bitmap_obstack_release (NULL);
pop_cfun ();
current_function_decl = NULL;
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 9e5820f..70ac1f3 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -313,20 +313,6 @@ cgraph_reset_node (struct cgraph_node *node)
cgraph_node_remove_callees (node);
}
-static void
-cgraph_lower_function (struct cgraph_node *node)
-{
- if (node->lowered)
- return;
-
- if (node->nested)
- lower_nested_functions (node->decl);
- gcc_assert (!node->nested);
-
- tree_lowering_passes (node->decl);
- node->lowered = true;
-}
-
/* DECL has been parsed. Take it, queue it, compile it at the whim of the
logic in effect. If NESTED is true, then our caller cannot stand to have
the garbage collector run at the moment. We would need to either create
@@ -915,7 +901,23 @@ cgraph_analyze_function (struct cgraph_node *node)
gimplify_function_tree (decl);
dump_function (TDI_generic, decl);
- cgraph_lower_function (node);
+ /* Lower the function. */
+ if (!node->lowered)
+ {
+ if (node->nested)
+ lower_nested_functions (node->decl);
+ gcc_assert (!node->nested);
+
+ gimple_register_cfg_hooks ();
+ bitmap_obstack_initialize (NULL);
+ execute_pass_list (all_lowering_passes);
+ free_dominance_info (CDI_POST_DOMINATORS);
+ free_dominance_info (CDI_DOMINATORS);
+ compact_blocks ();
+ bitmap_obstack_release (NULL);
+ node->lowered = true;
+ }
+
pop_cfun ();
}
node->analyzed = true;
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c
index 3d18d20..e59d1ad 100644
--- a/gcc/tree-optimize.c
+++ b/gcc/tree-optimize.c
@@ -366,26 +366,6 @@ struct gimple_opt_pass pass_init_datastructures =
0 /* todo_flags_finish */
}
};
-
-void
-tree_lowering_passes (tree fn)
-{
- tree saved_current_function_decl = current_function_decl;
-
- current_function_decl = fn;
- push_cfun (DECL_STRUCT_FUNCTION (fn));
- gimple_register_cfg_hooks ();
- bitmap_obstack_initialize (NULL);
- execute_pass_list (all_lowering_passes);
- if (optimize && cgraph_global_info_ready)
- execute_pass_list (pass_early_local_passes.pass.sub);
- free_dominance_info (CDI_POST_DOMINATORS);
- free_dominance_info (CDI_DOMINATORS);
- compact_blocks ();
- current_function_decl = saved_current_function_decl;
- bitmap_obstack_release (NULL);
- pop_cfun ();
-}
/* For functions-as-trees languages, this performs all optimization and
compilation for FNDECL. */
diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h
index f849a54..cbb2a87 100644
--- a/gcc/tree-pass.h
+++ b/gcc/tree-pass.h
@@ -349,8 +349,6 @@ struct register_pass_info
enum pass_positioning_ops pos_op; /* how to insert the new pass. */
};
-extern void tree_lowering_passes (tree decl);
-
extern struct gimple_opt_pass pass_mudflap_1;
extern struct gimple_opt_pass pass_mudflap_2;
extern struct gimple_opt_pass pass_lower_cf;