aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraphclones.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2020-11-04 00:19:59 +0100
committerJan Hubicka <jh@suse.cz>2020-11-04 00:19:59 +0100
commitab4664eb73f9401a5ca65d21cdf87d69fe0026dc (patch)
tree60524595ea5de0b47cc7ad19ad96119358147ba2 /gcc/cgraphclones.c
parente7144372e06bf446d1bfb529806a803467ba697a (diff)
downloadgcc-ab4664eb73f9401a5ca65d21cdf87d69fe0026dc.zip
gcc-ab4664eb73f9401a5ca65d21cdf87d69fe0026dc.tar.gz
gcc-ab4664eb73f9401a5ca65d21cdf87d69fe0026dc.tar.bz2
Fix copying of clone_info while reshaping clone tree.
2020-11-04 Jan Hubicka <hubicka@ucw.cz> PR ipa/97695 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Fix ICE with in dumping code. (cgraph_node::remove): Save clone info before releasing it and pass it to unregister. * cgraph.h (symtab_node::unregister): Add clone_info parameter. (cgraph_clone::unregister): Likewise. * cgraphclones.c (cgraph_node::find_replacement): Copy clone info * symtab-clones.cc (clone_infos_t::duplicate): Remove. (clone_info::get_create): Simplify. * symtab.c (symtab_node::unregister): Pass around clone info. * varpool.c (varpool_node::remove): Update.
Diffstat (limited to 'gcc/cgraphclones.c')
-rw-r--r--gcc/cgraphclones.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
index 36ca647..bc59081 100644
--- a/gcc/cgraphclones.c
+++ b/gcc/cgraphclones.c
@@ -648,9 +648,10 @@ cgraph_node::create_virtual_clone (vec<cgraph_edge *> redirect_callers,
}
/* callgraph node being removed from symbol table; see if its entry can be
- replaced by other inline clone. */
+ replaced by other inline clone.
+ INFO is clone info to attach to the new root. */
cgraph_node *
-cgraph_node::find_replacement (void)
+cgraph_node::find_replacement (clone_info *info)
{
cgraph_node *next_inline_clone, *replacement;
@@ -690,7 +691,6 @@ cgraph_node::find_replacement (void)
clones = NULL;
/* Copy clone info. */
- clone_info *info = clone_info::get (this);
if (info)
*clone_info::get_create (next_inline_clone) = *info;