aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-10-15 15:17:06 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-10-15 15:17:06 +0000
commit638fd1e51375689b89a78f64bc23d029ae2bafc5 (patch)
tree1eeb48475652f9d1a9f8c8400efc73a75c8937a3 /gcc/tree.c
parentfbdaa0b24c010cd9f380ae6bf3843be87f124f4b (diff)
downloadgcc-638fd1e51375689b89a78f64bc23d029ae2bafc5.zip
gcc-638fd1e51375689b89a78f64bc23d029ae2bafc5.tar.gz
gcc-638fd1e51375689b89a78f64bc23d029ae2bafc5.tar.bz2
tree.c (free_lang_data_in_decl): Clear DECL_INITIAL for automatic variables again.
2010-10-15 Richard Guenther <rguenther@suse.de> * tree.c (free_lang_data_in_decl): Clear DECL_INITIAL for automatic variables again. * g++.dg/lto/20101015-1_0.C: New testcase. From-SVN: r165511
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 8e33ac8..c0de77c 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -4513,8 +4513,9 @@ free_lang_data_in_decl (tree decl)
}
else if (TREE_CODE (decl) == VAR_DECL)
{
- if (DECL_EXTERNAL (decl)
- && (!TREE_STATIC (decl) || !TREE_READONLY (decl)))
+ if ((DECL_EXTERNAL (decl)
+ && (!TREE_STATIC (decl) || !TREE_READONLY (decl)))
+ || (decl_function_context (decl) && !TREE_STATIC (decl)))
DECL_INITIAL (decl) = NULL_TREE;
}
else if (TREE_CODE (decl) == TYPE_DECL)