diff options
author | Jan Hubicka <jh@suse.cz> | 2020-11-04 00:19:59 +0100 |
---|---|---|
committer | Jan Hubicka <jh@suse.cz> | 2020-11-04 00:19:59 +0100 |
commit | ab4664eb73f9401a5ca65d21cdf87d69fe0026dc (patch) | |
tree | 60524595ea5de0b47cc7ad19ad96119358147ba2 /gcc/cgraphclones.c | |
parent | e7144372e06bf446d1bfb529806a803467ba697a (diff) | |
download | gcc-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.c | 6 |
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; |