diff options
author | Dodji Seketeli <dodji@redhat.com> | 2008-11-20 00:00:39 +0000 |
---|---|---|
committer | Dodji Seketeli <dodji@gcc.gnu.org> | 2008-11-20 01:00:39 +0100 |
commit | 8320114a44cb39824d8ba98c3799e4c5f028b750 (patch) | |
tree | 60066da73187e1bcf7c63be185f9e2ae766dfbc9 | |
parent | 3179cf8cf5798dc07552ccd4e6eb38bde77672a8 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/crash85.C | 15 |
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; +} + |