From 23ce9945d5efa77c96161443f68e03664705ada3 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Wed, 31 Mar 2021 20:10:31 +0200 Subject: [PATCH] Fix overvactive check in cgraph_node::release_body gcc/ChangeLog: PR lto/99447 * cgraph.c (cgraph_node::release_body): Fix overactive check. --- gcc/cgraph.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/cgraph.c b/gcc/cgraph.c index b77c676a58a9..d7c78d518bc4 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -1860,7 +1860,15 @@ cgraph_node::release_body (bool keep_arguments) lto_free_function_in_decl_state_for_node (this); lto_file_data = NULL; } - gcc_assert (!clones); + if (flag_checking && clones) + { + /* It is invalid to release body before materializing clones except + for thunks that don't really need a body. Verify also that we do + not leak pointers to the call statements. */ + for (cgraph_node *node = clones; node; + node = node->next_sibling_clone) + gcc_assert (node->thunk && !node->callees->call_stmt); + } remove_callees (); remove_all_references (); } -- 2.47.2