diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c634624000ee..2ef1461ef5b7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-10-15 Richard Guenther + + * tree.c (free_lang_data_in_decl): Clear DECL_INITIAL + for automatic variables again. + 2010-10-15 Joseph Myers * doc/extend.texi (Variable Length): Don't refer to VLAs not diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 208041aa8638..28046701650b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2010-10-15 Richard Guenther + + * g++.dg/lto/20101015-1_0.C: New testcase. + 2010-10-15 Richard Guenther PR testsuite/46021 diff --git a/gcc/testsuite/g++.dg/lto/20101015-1_0.C b/gcc/testsuite/g++.dg/lto/20101015-1_0.C new file mode 100644 index 000000000000..a3b296ee0463 --- /dev/null +++ b/gcc/testsuite/g++.dg/lto/20101015-1_0.C @@ -0,0 +1,31 @@ +// { dg-lto-do assemble } + +class DOMString { }; +class DocumentImpl; +class NodeImpl { +public: + static const DOMString& + mapPrefix(const DOMString &prefix, const DOMString &namespaceURI, short nType); + static DOMString getXmlnsURIString(); +}; +class DOM_Node { +public: + enum NodeType { ATTRIBUTE_NODE = 2 }; +}; +class AttrImpl: public NodeImpl { +public: + AttrImpl(DocumentImpl *ownerDocument, const DOMString &aName); +}; +class AttrNSImpl: public AttrImpl { + AttrNSImpl(DocumentImpl *ownerDoc, const DOMString &namespaceURI, const DOMString &qualifiedName); +}; +AttrNSImpl::AttrNSImpl(DocumentImpl *ownerDoc, + const DOMString &fNamespaceURI, + const DOMString &qualifiedName) + : AttrImpl(ownerDoc, qualifiedName) +{ + DOMString xmlnsURI = NodeImpl::getXmlnsURIString(); + DOMString prefix; + bool xmlnsAlone = false; + const DOMString& URI = xmlnsAlone ? xmlnsURI : mapPrefix(prefix, fNamespaceURI, DOM_Node::ATTRIBUTE_NODE); +} diff --git a/gcc/tree.c b/gcc/tree.c index 8e33ac8ec3ec..c0de77c3fdb9 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)