diff options
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r-- | gcc/cgraph.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c index b77c676..d7c78d5 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 (); } |