From: Nathan Sidwell Date: Thu, 2 Jun 2005 08:53:48 +0000 (+0000) Subject: re PR c++/21151 (ICE when compiling c++ PCH of class definition within template funct... X-Git-Tag: misc/cutover-cvs2svn~2709 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fbd4ef4ccdf895dd2833feee248ad5c0d069f418;p=thirdparty%2Fgcc.git re PR c++/21151 (ICE when compiling c++ PCH of class definition within template function.) 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. From-SVN: r100482 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 36f72dfc998b..884d34619878 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 dde4227f790e..3197a41077d8 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 288242eed45b..07ab9b92412d 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 000000000000..75847e5c19bd --- /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 000000000000..56a6c7e47440 --- /dev/null +++ b/gcc/testsuite/g++.dg/pch/local-1.Hs @@ -0,0 +1,7 @@ +template void func() +{ + struct object + { + object() {} + }; +}