diff options
author | Alexandre Oliva <oliva@adacore.com> | 2019-11-20 20:54:31 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2019-11-20 20:54:31 +0000 |
commit | c013852d6138f35314ea14f5772f57a975064d4d (patch) | |
tree | 83fb65f82b6e23672eb2a171f303d5c3f4803fcd /gcc | |
parent | aeebd94c77c45cd60d44b87a00403cbe1edd8e62 (diff) | |
download | gcc-c013852d6138f35314ea14f5772f57a975064d4d.zip gcc-c013852d6138f35314ea14f5772f57a975064d4d.tar.gz gcc-c013852d6138f35314ea14f5772f57a975064d4d.tar.bz2 |
drop attempt to reuse cgraph callees for -fcallgraph-info
The information in cgraph callees is released long before we get to
the point in which -fcallgraph-info edges are dumped, or even
expanded. It doesn't make sense to retain it longer: the edges
created for -fcallgraph-info are much smaller, and they don't even
coexist, so not even peak use grows.
for gcc/ChangeLog
* function.h (CALLEE_FROM_CGRAPH_P): Remove.
* function.c (record_final_call): Record even calls that might
have been in the cgraph.
* toplev.c (dump_final_node_vcg): Skip iteration over cgraph
callees.
From-SVN: r278529
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/function.c | 3 | ||||
-rw-r--r-- | gcc/function.h | 5 | ||||
-rw-r--r-- | gcc/toplev.c | 8 |
4 files changed, 9 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4700de2..31a270a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2019-11-20 Alexandre Oliva <oliva@adacore.com> + + * function.h (CALLEE_FROM_CGRAPH_P): Remove. + * function.c (record_final_call): Record even calls that might + have been in the cgraph. + * toplev.c (dump_final_node_vcg): Skip iteration over cgraph + callees. + 2019-11-20 Janne Blomqvist <jb@gcc.gnu.org> * configure.ac: Use https for gcc.gnu.org diff --git a/gcc/function.c b/gcc/function.c index 1fe956b..2534c92 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -6406,9 +6406,6 @@ rest_of_handle_thread_prologue_and_epilogue (void) void record_final_call (tree callee, location_t location) { - if (!callee || CALLEE_FROM_CGRAPH_P (callee)) - return; - struct callinfo_callee datum = { location, callee }; vec_safe_push (cfun->su->callees, datum); } diff --git a/gcc/function.h b/gcc/function.h index 14794c4..beb5c7d 100644 --- a/gcc/function.h +++ b/gcc/function.h @@ -192,15 +192,12 @@ public: poly_int64 length; }; -/* Describe emitted builtin calls for -fcallgraph-info. Those that - are not builtin are taken from cgraph edges. */ +/* Describe emitted calls for -fcallgraph-info. */ struct GTY(()) callinfo_callee { location_t location; tree decl; }; -#define CALLEE_FROM_CGRAPH_P(T) \ - (!fndecl_built_in_p (T) && !DECL_IS_BUILTIN (T)) /* Describe dynamic allocation for -fcallgraph-info=da. */ struct GTY(()) callinfo_dalloc diff --git a/gcc/toplev.c b/gcc/toplev.c index cfc757d..059046f 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -1093,14 +1093,6 @@ dump_final_node_vcg (FILE *f) dump_final_callee_vcg (f, c->location, c->decl); vec_free (cfun->su->callees); cfun->su->callees = NULL; - - cgraph_node *cnode = cgraph_node::get (current_function_decl); - for (cgraph_edge *e = cnode->callees; e; e = e->next_callee) - if (CALLEE_FROM_CGRAPH_P (e->callee->decl)) - dump_final_callee_vcg (f, gimple_location (e->call_stmt), - e->callee->decl); - for (cgraph_edge *e = cnode->indirect_calls; e; e = e->next_callee) - dump_final_callee_vcg (f, gimple_location (e->call_stmt), NULL); } /* Output stack usage and callgraph info, as requested. */ |