aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2005-06-02 08:53:48 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2005-06-02 08:53:48 +0000
commitfbd4ef4ccdf895dd2833feee248ad5c0d069f418 (patch)
tree953edcc6ac9eee743e009c18c53b5932a6dcb73b
parentbf8f8254eae6616841fcebe1af3de1d921bd0c24 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/cp/name-lookup.c3
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/pch/local-1.C6
-rw-r--r--gcc/testsuite/g++.dg/pch/local-1.Hs7
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() {}
+ };
+}