diff options
author | Martin Liska <mliska@suse.cz> | 2018-06-08 14:33:47 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-06-08 12:33:47 +0000 |
commit | 8b25212d3e960dd130d71330ad6d55b40c5be254 (patch) | |
tree | 5b0cf4f88de2297422b17172c003f1be6bc67986 /gcc/cgraph.c | |
parent | 9fb50ad822bd57786b12a2fc90c61032c519a621 (diff) | |
download | gcc-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.c | 10 |
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--; |