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
This commit is contained in:
Alexandre Oliva 2019-11-20 20:54:31 +00:00 committed by Alexandre Oliva
parent aeebd94c77
commit c013852d61
4 changed files with 9 additions and 15 deletions

View file

@ -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

View file

@ -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);
}

View file

@ -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

View file

@ -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. */