aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>2003-07-24 11:56:33 +0000
committerKriang Lerdsuwanakij <lerdsuwa@gcc.gnu.org>2003-07-24 11:56:33 +0000
commitf60a10e71defb7b9e57ec668dc3710424bffbdc6 (patch)
treeae35b50248530a64ddb4420071d2d78af585dfd2
parent5aaaf0e82c664c022e8ffd2aaa34279978619f83 (diff)
downloadgcc-f60a10e71defb7b9e57ec668dc3710424bffbdc6.zip
gcc-f60a10e71defb7b9e57ec668dc3710424bffbdc6.tar.gz
gcc-f60a10e71defb7b9e57ec668dc3710424bffbdc6.tar.bz2
re PR c++/11513 (ICE in push_template_decl_real cp/pt.c:2755, template member functions)
PR c++/11513 * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): Use current_scope. * g++.dg/template/crash8.C: New test. From-SVN: r69739
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/cp-tree.h2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/crash8.C20
4 files changed, 31 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 3314b35..337b372 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2003-07-24 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/11513
+ * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): Use current_scope.
+
2003-07-23 Mark Mitchell <mark@codesourcery.com>
PR c++/11645
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 15bcea0..8e3fcf7 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -2838,7 +2838,7 @@ struct lang_decl GTY(())
entity with its own template parameter list, and which is not a
full specialization. */
#define PROCESSING_REAL_TEMPLATE_DECL_P() \
- (processing_template_decl > template_class_depth (current_class_type))
+ (processing_template_decl > template_class_depth (current_scope ()))
/* Nonzero if this VAR_DECL or FUNCTION_DECL has already been
instantiated, i.e. its definition has been generated from the
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4881e5a..a362729 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2003-07-24 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/11513
+ * g++.dg/template/crash8.C: New test.
+
2003-07-23 Steven Bosscher <steven@gcc.gnu.org>
PR c/10602
diff --git a/gcc/testsuite/g++.dg/template/crash8.C b/gcc/testsuite/g++.dg/template/crash8.C
new file mode 100644
index 0000000..a6f26b3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/crash8.C
@@ -0,0 +1,20 @@
+// { dg-do compile }
+
+// Origin: David Robinson <drtr@dial.pipex.com>
+
+// PR c++/11513: ICE due to incorrect decision whether the tag is template.
+
+template <typename T>
+struct bar
+{
+ struct foo
+ {
+ int a;
+ };
+
+ template <typename U>
+ int wom(U c)
+ {
+ struct foo b;
+ }
+};