diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-17 23:12:14 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-17 23:12:14 +0000 |
commit | a510bd8da6561c4ae3cc12a7bd3a9ba0ccf185b5 (patch) | |
tree | 0f2fbe98708e13805e97bc7b12c5a0033f23ce51 /gcc | |
parent | 1bf41320ebc2b9427bda2813998eb2e869d4d0f4 (diff) | |
download | gcc-a510bd8da6561c4ae3cc12a7bd3a9ba0ccf185b5.tar.gz |
* cgraph.c (cgraph_create_virtual_clone): Only check
versionable_function_p when not in wpa and checking is enabled.
* cgrpahunit.c (cgraph_materialize_all_clones): Stabilize after
there are no more functions to materialize.
* lto/lto.c (lto_1_to_1_map): Partition non-inline clones.
(lto_promote_cross_file_statics): Deal with non-inline clones.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159518 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cgraph.c | 5 | ||||
-rw-r--r-- | gcc/cgraphunit.c | 3 | ||||
-rw-r--r-- | gcc/lto/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/lto/lto.c | 7 |
5 files changed, 20 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9a7b3c6c52d..e677aeb94f5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2010-05-17 Jan Hubicka <jh@suse.cz> + * cgraph.c (cgraph_create_virtual_clone): Only check + versionable_function_p when not in wpa and checking is enabled. + * cgraphunit.c (cgraph_materialize_all_clones): Stabilize after + there are no more functions to materialize. + +2010-05-17 Jan Hubicka <jh@suse.cz> + * cgraph.h (struct ipa_replace_map): Add parm_num parameter. * lto-cgraph.c (output_cgraph_opt_summary, input_cgraph_opt_summary): New functions. diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 89e431a7a53..9433301cf77 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -2184,7 +2184,10 @@ cgraph_create_virtual_clone (struct cgraph_node *old_node, size_t i; struct ipa_replace_map *map; - gcc_assert (tree_versionable_function_p (old_decl)); +#ifdef ENABLE_CHECKING + if (!flag_wpa) + gcc_assert (tree_versionable_function_p (old_decl)); +#endif /* Make a new FUNCTION_DECL tree node */ if (!args_to_skip) diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 7618dd00743..c811d497afd 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -2425,9 +2425,8 @@ cgraph_materialize_all_clones (void) } } cgraph_materialize_clone (node); + stabilized = false; } - else - stabilized = false; } } } diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index e5abeb1f11a..b26268a3a96 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,5 +1,10 @@ 2010-05-18 Jan Hubicka <jh@suse.cz> + * lto/lto.c (lto_1_to_1_map): Partition non-inline clones. + (lto_promote_cross_file_statics): Deal with non-inline clones. + +2010-05-18 Jan Hubicka <jh@suse.cz> + * lto.c (lto_materialize_function): Announce function when reading body; allocate_struct_function only when reading body; do not finalize local statics; ggc_collect after reading; diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index ab55c126e9c..adfeae95ce8 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -537,9 +537,8 @@ lto_1_to_1_map (void) for (node = cgraph_nodes; node; node = node->next) { - /* We will get proper partition based on function they are inlined to or - cloned from. */ - if (node->global.inlined_to || node->clone_of) + /* We will get proper partition based on function they are inlined to. */ + if (node->global.inlined_to) continue; /* Nodes without a body do not need partitioning. */ if (!node->analyzed) @@ -721,7 +720,7 @@ lto_promote_cross_file_statics (void) struct cgraph_node *node = csi_node (csi); if (node->local.externally_visible) continue; - if (node->clone_of || node->global.inlined_to) + if (node->global.inlined_to) continue; if (!DECL_EXTERNAL (node->decl) && (referenced_from_other_partition_p (&node->ref_list, set, vset) |