summaryrefslogtreecommitdiff
path: root/gcc/cgraph.c
diff options
context:
space:
mode:
authormarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>2014-10-16 10:47:55 +0000
committermarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>2014-10-16 10:47:55 +0000
commit52200d03c231f0bddbd4bbc5cd3608c6a1dd4598 (patch)
treea924d04dfecfeecfc3dbb2cd245d5482ed23f090 /gcc/cgraph.c
parentfc8021097ec7542658f7b035604de66387c3d50e (diff)
downloadgcc-52200d03c231f0bddbd4bbc5cd3608c6a1dd4598.tar.gz
IPA ICF pass, part 3/5
* Makefile.in: New object files included. * cgraph.c (cgraph_node::dump): New cgraph_node flag icf_merged is printed. (verify_edge_corresponds_to_fndecl): More sensitive verification of nodes that are merged by IPA ICF. * cgraph.h (cgraph_node::num_references): New function. * cgraphunit.c (cgraph_node::expand_thunk): White space fixed. * common.opt: New options ipa-icf, ipa-icf-functions and ipa-icf-variables introduced. * doc/invoke.texi: Documentation of new options introduced. * ipa-icf-gimple.c: New file. * ipa-icf-gimple.h: New file. * ipa-icf.c: New file. * ipa-icf.h: New file. * lto-cgraph.c (lto_output_node): Streaming of icf_merged flag added. (input_overwrite_node): Likewise. * lto-section-in.c: New icf section added. * lto-streamer.h (enum lto_section_type): Likewise. * opts.c (common_handle_option): New option added. * passes.def: New pass included. * timevar.def: Time variable for IPA ICF added. * tree-pass.h: New IPA ICF pass entry point added. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216305 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r--gcc/cgraph.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 02224f376ae..f472ec53159 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -1910,6 +1910,8 @@ cgraph_node::dump (FILE *f)
fprintf (f, " only_called_at_exit");
if (tm_clone)
fprintf (f, " tm_clone");
+ if (icf_merged)
+ fprintf (f, " icf_merged");
if (DECL_STATIC_CONSTRUCTOR (decl))
fprintf (f," static_constructor (priority:%i)", get_init_priority ());
if (DECL_STATIC_DESTRUCTOR (decl))
@@ -2560,6 +2562,7 @@ verify_edge_corresponds_to_fndecl (cgraph_edge *e, tree decl)
if (!node
|| node->body_removed
|| node->in_other_partition
+ || node->icf_merged
|| e->callee->in_other_partition)
return false;