aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>2006-07-21 09:41:16 +0000
committerVolker Reichelt <reichelt@gcc.gnu.org>2006-07-21 09:41:16 +0000
commite488a090e6e7b25ca423628dc5a64bd88d793de3 (patch)
treead3a875291855dd0d32ecabefd96ebf4530646f2
parent79387e574aaf8493e7fa9faef537a98f297061f7 (diff)
downloadgcc-e488a090e6e7b25ca423628dc5a64bd88d793de3.zip
gcc-e488a090e6e7b25ca423628dc5a64bd88d793de3.tar.gz
gcc-e488a090e6e7b25ca423628dc5a64bd88d793de3.tar.bz2
re PR c++/28363 (Default template parameter causes compiler segfault)
PR c++/28363 * semantics.c (check_template_template_default_arg): Simplify error handling. * g++.dg/template/defarg10.C: New test. From-SVN: r115640
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/semantics.c15
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/defarg10.C13
4 files changed, 26 insertions, 13 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 309a060..722334c 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2006-07-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/28363
+ * semantics.c (check_template_template_default_arg): Simplify
+ error handling.
+
2006-07-20 Jason Merrill <jason@redhat.com>
PR c++/28407
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 4577bd3..c739d61 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -2143,19 +2143,8 @@ check_template_template_default_arg (tree argument)
&& TREE_CODE (argument) != UNBOUND_CLASS_TEMPLATE)
{
if (TREE_CODE (argument) == TYPE_DECL)
- {
- tree t = TREE_TYPE (argument);
-
- /* Try to emit a slightly smarter error message if we detect
- that the user is using a template instantiation. */
- if (CLASSTYPE_TEMPLATE_INFO (t)
- && CLASSTYPE_TEMPLATE_INSTANTIATION (t))
- error ("invalid use of type %qT as a default value for a "
- "template template-parameter", t);
- else
- error ("invalid use of %qD as a default value for a template "
- "template-parameter", argument);
- }
+ error ("invalid use of type %qT as a default value for a template "
+ "template-parameter", TREE_TYPE (argument));
else
error ("invalid default argument for a template template parameter");
return error_mark_node;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 414d314..d56ce67 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-07-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/28363
+ * g++.dg/template/defarg10.C: New test.
+
2006-07-20 Paul Brook <paul@codesourcery.com>
PR 27363
diff --git a/gcc/testsuite/g++.dg/template/defarg10.C b/gcc/testsuite/g++.dg/template/defarg10.C
new file mode 100644
index 0000000..281b108
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/defarg10.C
@@ -0,0 +1,13 @@
+// PR c++/28363
+// { dg-do compile }
+
+template<typename T, template<int> class = T> // { dg-error "invalid use of type" }
+struct A;
+
+typedef int I;
+template<template<int> class = I> // { dg-error "invalid use of type" }
+struct B;
+
+struct S;
+template<template<int> class = S> // { dg-error "invalid use of type" }
+struct C;