aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2013-08-01 17:41:10 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2013-08-01 15:41:10 +0000
commit12123452e45937b341f187716a2a8343f0908465 (patch)
tree2f02d6eeb6482da3c4542d6a466374959b925ead /gcc/tree.c
parentce852f9c3afff56097da5c352aba32e6191cdd3e (diff)
downloadgcc-12123452e45937b341f187716a2a8343f0908465.zip
gcc-12123452e45937b341f187716a2a8343f0908465.tar.gz
gcc-12123452e45937b341f187716a2a8343f0908465.tar.bz2
cgraph.h (release_function_body): Declare.
* cgraph.h (release_function_body): Declare. * tree.c (free_lang_data_in_decl): Free, parameters and return values of unused delcarations. From-SVN: r201413
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index ab11735..c9f47d2 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -4886,6 +4886,20 @@ free_lang_data_in_decl (tree decl)
if (TREE_CODE (decl) == FUNCTION_DECL)
{
+ struct cgraph_node *node;
+ if (!(node = cgraph_get_node (decl))
+ || (!node->symbol.definition && !node->clones))
+ {
+ if (node)
+ cgraph_release_function_body (node);
+ else
+ {
+ release_function_body (decl);
+ DECL_ARGUMENTS (decl) = NULL;
+ DECL_RESULT (decl) = NULL;
+ DECL_INITIAL (decl) = error_mark_node;
+ }
+ }
if (gimple_has_body_p (decl))
{
tree t;