aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-prop.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2008-08-29 13:31:40 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2008-08-29 11:31:40 +0000
commitc6f7cfc15e7480f86aa3e4d407932f38fd635c89 (patch)
treed057c22936747f4672fd349b48d59df2628ab832 /gcc/ipa-prop.c
parentefd8f7507b3ce6e4cc00c7eac4f011736ca4f14d (diff)
downloadgcc-c6f7cfc15e7480f86aa3e4d407932f38fd635c89.zip
gcc-c6f7cfc15e7480f86aa3e4d407932f38fd635c89.tar.gz
gcc-c6f7cfc15e7480f86aa3e4d407932f38fd635c89.tar.bz2
tree.c (build_function_type_skip_args, [...]): New functions.
* tree.c (build_function_type_skip_args, build_function_decl_skip_args): New functions. * tree.h (build_function_type_skip_args, build_function_decl_skip_args): Declare. * gimple.c (giple_copy_call_skip_args): New function. (giple_copy_call_skip_args): Declare. * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ... (ipcp_node_modifiable_p): ... this one; use tree_versionable_function_p. (ipcp_create_replace_map): Improve debug output. (ipcp_need_redirect_p): Return false when not clonning. (ipcp_update_callgraph): Skip args. (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p; skip args. * cgraphunit.c (cgraph_function_versioning): Add skip_args argument. (save_inline_function_body): Update call of tree_function_versioning. * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes. * tree-inline.c (copy_arguments_for_versioning): Add skip_args argument. (tree_function_versioning): Likewise. * tree-inline.h (tree_function_versioning): Update prototype. From-SVN: r139761
Diffstat (limited to 'gcc/ipa-prop.c')
-rw-r--r--gcc/ipa-prop.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index 506a940..9a31b02 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -1057,6 +1057,10 @@ static void
ipa_edge_removal_hook (struct cgraph_edge *cs,
void *data __attribute__ ((unused)))
{
+ /* During IPA-CP updating we can be called on not-yet analyze clones. */
+ if (VEC_length (ipa_edge_args_t, ipa_edge_args_vector)
+ <= (unsigned)cs->uid)
+ return;
ipa_free_edge_args_substructures (IPA_EDGE_REF (cs));
}