From aba909cbdee7e2f5ab31cb3cd767bfc997d039b6 Mon Sep 17 00:00:00 2001 From: rguenth Date: Mon, 12 Dec 2011 08:37:22 +0000 Subject: [PATCH] 2011-12-12 Richard Guenther PR lto/51262 * tree.c (cp_free_lang_data): No longer clear anonymous names. * g++.dg/opt/pr51262.C: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182221 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/tree.c | 11 ----------- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/opt/pr51262.C | 21 +++++++++++++++++++++ 4 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 gcc/testsuite/g++.dg/opt/pr51262.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 80900305319..1ba9f347a17 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2011-12-12 Richard Guenther + + PR lto/51262 + * tree.c (cp_free_lang_data): No longer clear anonymous names. + 2011-12-09 Jason Merrill PR c++/51151 diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 8d179d8d2a0..7899397cdd8 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -3479,17 +3479,6 @@ cp_free_lang_data (tree t) DECL_EXTERNAL (t) = 1; TREE_STATIC (t) = 0; } - if (CP_AGGREGATE_TYPE_P (t) - && TYPE_NAME (t)) - { - tree name = TYPE_NAME (t); - if (TREE_CODE (name) == TYPE_DECL) - name = DECL_NAME (name); - /* Drop anonymous names. */ - if (name != NULL_TREE - && ANON_AGGRNAME_P (name)) - TYPE_NAME (t) = NULL_TREE; - } if (TREE_CODE (t) == NAMESPACE_DECL) { /* The list of users of a namespace isn't useful for the middle-end diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ba6d3c412fc..1d78adfdb8c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-12-12 Richard Guenther + + PR lto/51262 + * g++.dg/opt/pr51262.C: New testcase. + 2011-12-12 Revital Eres PR rtl-optimization/47013 diff --git a/gcc/testsuite/g++.dg/opt/pr51262.C b/gcc/testsuite/g++.dg/opt/pr51262.C new file mode 100644 index 00000000000..d0e8d781262 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/pr51262.C @@ -0,0 +1,21 @@ +// { dg-do compile } +// { dg-require-effective-target lto } +// { dg-options "-flto -g" } + +template < typename > void * +bar (int *p) +{ + union + { + int *p; + } + u; + u.p = p; + return u.p; +} + +void +foo (int *p) +{ + bar < void >(p); +} -- 2.11.0