aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraph.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2005-06-28 04:20:29 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2005-06-28 02:20:29 +0000
commitd63db217aed8c803f7d8b85910d6c8cfedc2acca (patch)
tree02b6b104f2f54b8af2a5bad55640e994b28ecfb5 /gcc/cgraph.c
parent2aba33dd6f2d9cf16b2c2e25e73071b5e6d4368c (diff)
downloadgcc-d63db217aed8c803f7d8b85910d6c8cfedc2acca.zip
gcc-d63db217aed8c803f7d8b85910d6c8cfedc2acca.tar.gz
gcc-d63db217aed8c803f7d8b85910d6c8cfedc2acca.tar.bz2
cgraph.c (cgraph_remove_node): Do not release function bodies until full cgraph is built.
* cgraph.c (cgraph_remove_node): Do not release function bodies until full cgraph is built. * cgraph.h (cgraph_decide_inlining_incrementally): Add early argument. * cgraphunit.c (cgraph_finalize_function): Update call of cgraph_decide_inlining_incrementally. (initialize_inline_failed): Break out of ... (cgraph_analyze_function): ... here. (rebuild_cgraph_edges): New function. (pass_rebuild_cgraph_edges): New pass. * common.opt (fearly-inlining): New flag. * ipa-inline.c: Include ggc.h (cgraph_clone_inlined_nodes): Avoid re-using of original copy when cgraph is not fully built. (cgraph_decide_inlining_incrementally): Add early mode. (cgraph_early_inlining): New function. (cgraph_gate_early_inlining): Likewise. (pass_early_ipa_inline): New pass. * ipa.c (cgraph_postorder): NULLify aux pointer. * tree-inline.c (expand_call_inline): Avoid warning early. * tree-optimize.c (pass_early_local_passes): New. (execute_cleanup_cfg_pre_ipa): New. (pass_cleanup_cfg): New. (register_dump_files): Fix handling subpasses of IPA pass. (init_tree_optimization_passes): Add early passes. (execute_ipa_pass_list): Fix handling of subpasses of IPA pass. * passes.h (pass_early_tree_profile, pass_rebuild_cgraph_edges, pass_early_ipa_inline): New passes. * tree-profile.c (do_early_tree_profiling, pass_early_tree_profile): New. * invoke.texi: Document early-inlining. From-SVN: r101369
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r--gcc/cgraph.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 68e3ea6..9364832 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -473,7 +473,8 @@ cgraph_remove_node (struct cgraph_node *node)
{
struct cgraph_node *n = *slot;
if (!n->next_clone && !n->global.inlined_to
- && (TREE_ASM_WRITTEN (n->decl) || DECL_EXTERNAL (n->decl)))
+ && (cgraph_global_info_ready
+ && (TREE_ASM_WRITTEN (n->decl) || DECL_EXTERNAL (n->decl))))
kill_body = true;
}