summaryrefslogtreecommitdiffstats
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/crash85.C15
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 73e07d73f9d..fe2eab6fd74 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,11 @@
2008-11-19 Dodji Seketeli <dodji@redhat.com>
+ PR c++/37142
+ * pt.c (coerce_template_template_parm): Use the more robust
+ uses_template_parms instead of dependent_type_p.
+
+2008-11-19 Dodji Seketeli <dodji@redhat.com>
+
PR c++/35405
* pt.c (lookup_template_class): Check pointers before dereferencing
Them.
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 96c510f3d4c..127d37c833d 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -4688,7 +4688,7 @@ coerce_template_template_parm (tree parm,
D<int, C> d;
i.e. the parameter list of TT depends on earlier parameters. */
- if (!dependent_type_p (TREE_TYPE (arg))
+ if (!uses_template_parms (TREE_TYPE (arg))
&& !same_type_p
(tsubst (TREE_TYPE (parm), outer_args, complain, in_decl),
TREE_TYPE (arg)))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9c4ca41bb15..39a10724adc 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -4,6 +4,11 @@
2008-11-19 Dodji Seketeli <dodji@redhat.com>
+ PR c++/37142
+ * g++.dg/template/crash85.C: New test.
+
+2008-11-19 Dodji Seketeli <dodji@redhat.com>
+
PR c++/35405
* g++.dg/template/crash84.C: New test.
diff --git a/gcc/testsuite/g++.dg/template/crash85.C b/gcc/testsuite/g++.dg/template/crash85.C
new file mode 100644
index 00000000000..e0b6ee19881
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/crash85.C
@@ -0,0 +1,15 @@
+// Contributed by Dodji Seketeli <dodji@redhat.com>
+// Origin: PR c++/37142
+// { dg-do compile }
+
+template<typename T, const T a, template <typename U, U u> class W> struct A {};
+
+template<typename T, const T t> struct B {};
+
+int
+main ()
+{
+ A<long, 0, B> a;
+ return 0;
+}
+
OpenPOWER on IntegriCloud