re PR c++/37142 (ICE: in dependent_type_p, at cp/pt.c:15585)
authorDodji Seketeli <dodji@redhat.com>
Thu, 20 Nov 2008 00:00:39 +0000 (00:00 +0000)
committerDodji Seketeli <dodji@gcc.gnu.org>
Thu, 20 Nov 2008 00:00:39 +0000 (01:00 +0100)
gcc/testsuite/ChangeLog:
2008-11-19  Dodji Seketeli  <dodji@redhat.com>

PR c++/37142
* g++.dg/template/crash85.C: New test.

gcc/cp/ChangeLog
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.

From-SVN: r142025

gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/template/crash85.C [new file with mode: 0644]

index 73e07d7..fe2eab6 100644 (file)
@@ -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.
index 96c510f..127d37c 100644 (file)
@@ -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)))
index 9c4ca41..39a1072 100644 (file)
@@ -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 (file)
index 0000000..e0b6ee1
--- /dev/null
@@ -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;
+}
+