aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@adacore.com>2019-11-20 20:54:31 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2019-11-20 20:54:31 +0000
commitc013852d6138f35314ea14f5772f57a975064d4d (patch)
tree83fb65f82b6e23672eb2a171f303d5c3f4803fcd /gcc
parentaeebd94c77c45cd60d44b87a00403cbe1edd8e62 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/function.c3
-rw-r--r--gcc/function.h5
-rw-r--r--gcc/toplev.c8
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. */