aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraph.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-06-08 14:33:47 +0200
committerMartin Liska <marxin@gcc.gnu.org>2018-06-08 12:33:47 +0000
commit8b25212d3e960dd130d71330ad6d55b40c5be254 (patch)
tree5b0cf4f88de2297422b17172c003f1be6bc67986 /gcc/cgraph.c
parent9fb50ad822bd57786b12a2fc90c61032c519a621 (diff)
downloadgcc-8b25212d3e960dd130d71330ad6d55b40c5be254.zip
gcc-8b25212d3e960dd130d71330ad6d55b40c5be254.tar.gz
gcc-8b25212d3e960dd130d71330ad6d55b40c5be254.tar.bz2
Make cgraph_edge::uid really unique.
2018-06-08 Martin Liska <mliska@suse.cz> * cgraph.c (symbol_table::create_edge): Always assign a new unique number. (symbol_table::free_edge): Do not recycle numbers. * cgraph.h (cgraph_edge::get): New method. * symbol-summary.h (symtab_removal): Use it. (symtab_duplication): Likewise. (call_summary::hashable_uid): Remove. From-SVN: r261319
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r--gcc/cgraph.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 6c6ecd8..cf6b35a 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -850,13 +850,12 @@ symbol_table::create_edge (cgraph_node *caller, cgraph_node *callee,
free_edges = NEXT_FREE_EDGE (edge);
}
else
- {
- edge = ggc_alloc<cgraph_edge> ();
- edge->uid = edges_max_uid++;
- }
+ edge = ggc_alloc<cgraph_edge> ();
edges_count++;
+ gcc_assert (++edges_max_uid != 0);
+ edge->m_uid = edges_max_uid;
edge->aux = NULL;
edge->caller = caller;
edge->callee = callee;
@@ -1010,14 +1009,11 @@ cgraph_edge::remove_caller (void)
void
symbol_table::free_edge (cgraph_edge *e)
{
- int uid = e->uid;
-
if (e->indirect_info)
ggc_free (e->indirect_info);
/* Clear out the edge so we do not dangle pointers. */
memset (e, 0, sizeof (*e));
- e->uid = uid;
NEXT_FREE_EDGE (e) = free_edges;
free_edges = e;
edges_count--;