From 669d4c2374c87b24e60b76f9636ee1a1c2743308 Mon Sep 17 00:00:00 2001 From: nathan Date: Thu, 2 Jun 2005 08:53:48 +0000 Subject: [PATCH] cp: PR c++/21151 * name-lookup.c (pushtag): Push local class even in a template. testsuite: PR c++/21151 * g++.dg/pch/local-1.C: New. * g++.dg/pch/local-1.Hs: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100482 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/name-lookup.c | 3 +-- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/g++.dg/pch/local-1.C | 6 ++++++ gcc/testsuite/g++.dg/pch/local-1.Hs | 7 +++++++ 5 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/pch/local-1.C create mode 100644 gcc/testsuite/g++.dg/pch/local-1.Hs diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 36f72dfc998..884d3461987 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2005-06-02 Nathan Sidwell + + PR c++/21151 + * name-lookup.c (pushtag): Push local class even in a template. + 2005-05-31 Nathan Sidwell PR c++/21165 diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index dde4227f790..3197a41077d 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -4698,8 +4698,7 @@ pushtag (tree name, tree type, tag_scope scope) way. (It's otherwise tricky to find a member function definition it's only pointed to from within a local class.) */ if (TYPE_CONTEXT (type) - && TREE_CODE (TYPE_CONTEXT (type)) == FUNCTION_DECL - && !processing_template_decl) + && TREE_CODE (TYPE_CONTEXT (type)) == FUNCTION_DECL) VEC_safe_push (tree, gc, local_classes, type); } if (b->kind == sk_class diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 288242eed45..07ab9b92412 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2005-06-02 Nathan Sidwell + + PR c++/21151 + * g++.dg/pch/local-1.C: New. + * g++.dg/pch/local-1.Hs: New. + 2005-06-01 Diego Novillo PR 14341, PR 21332, PR 20701, PR 21086, PR 21090 diff --git a/gcc/testsuite/g++.dg/pch/local-1.C b/gcc/testsuite/g++.dg/pch/local-1.C new file mode 100644 index 00000000000..75847e5c19b --- /dev/null +++ b/gcc/testsuite/g++.dg/pch/local-1.C @@ -0,0 +1,6 @@ +#include "local-1.H" +int main() +{ + func (); + return 0; +} diff --git a/gcc/testsuite/g++.dg/pch/local-1.Hs b/gcc/testsuite/g++.dg/pch/local-1.Hs new file mode 100644 index 00000000000..56a6c7e4744 --- /dev/null +++ b/gcc/testsuite/g++.dg/pch/local-1.Hs @@ -0,0 +1,7 @@ +template void func() +{ + struct object + { + object() {} + }; +} -- 2.11.0