diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2005-06-02 08:53:48 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2005-06-02 08:53:48 +0000 |
commit | fbd4ef4ccdf895dd2833feee248ad5c0d069f418 (patch) | |
tree | 953edcc6ac9eee743e009c18c53b5932a6dcb73b | |
parent | bf8f8254eae6616841fcebe1af3de1d921bd0c24 (diff) | |
download | gcc-fbd4ef4ccdf895dd2833feee248ad5c0d069f418.zip gcc-fbd4ef4ccdf895dd2833feee248ad5c0d069f418.tar.gz gcc-fbd4ef4ccdf895dd2833feee248ad5c0d069f418.tar.bz2 |
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
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/name-lookup.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/pch/local-1.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/pch/local-1.Hs | 7 |
5 files changed, 25 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 36f72df..884d346 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2005-06-02 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/21151 + * name-lookup.c (pushtag): Push local class even in a template. + 2005-05-31 Nathan Sidwell <nathan@codesourcery.com> PR c++/21165 diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index dde4227..3197a41 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 288242e..07ab9b9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2005-06-02 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/21151 + * g++.dg/pch/local-1.C: New. + * g++.dg/pch/local-1.Hs: New. + 2005-06-01 Diego Novillo <dnovillo@redhat.com> 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 0000000..75847e5 --- /dev/null +++ b/gcc/testsuite/g++.dg/pch/local-1.C @@ -0,0 +1,6 @@ +#include "local-1.H" +int main() +{ + func<int> (); + 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 0000000..56a6c7e --- /dev/null +++ b/gcc/testsuite/g++.dg/pch/local-1.Hs @@ -0,0 +1,7 @@ +template<typename T> void func() +{ + struct object + { + object() {} + }; +} |