aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDodji Seketeli <dodji@redhat.com>2008-11-20 00:00:39 +0000
committerDodji Seketeli <dodji@gcc.gnu.org>2008-11-20 01:00:39 +0100
commit8320114a44cb39824d8ba98c3799e4c5f028b750 (patch)
tree60066da73187e1bcf7c63be185f9e2ae766dfbc9
parent3179cf8cf5798dc07552ccd4e6eb38bde77672a8 (diff)
downloadgcc-8320114a44cb39824d8ba98c3799e4c5f028b750.zip
gcc-8320114a44cb39824d8ba98c3799e4c5f028b750.tar.gz
gcc-8320114a44cb39824d8ba98c3799e4c5f028b750.tar.bz2
re PR c++/37142 (ICE: in dependent_type_p, at cp/pt.c:15585)
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
-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 73e07d7..fe2eab6 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 96c510f..127d37c 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 9c4ca41..39a1072 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 0000000..e0b6ee1
--- /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;
+}
+