diff options
author | dodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-11-20 00:00:39 +0000 |
---|---|---|
committer | dodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-11-20 00:00:39 +0000 |
commit | c86cd2a438b960fb103f0af0e097bfa3ae833a4b (patch) | |
tree | 60066da73187e1bcf7c63be185f9e2ae766dfbc9 /gcc | |
parent | 70f1c3b70ff771a0e4f615e8e5607bf9400b78e5 (diff) | |
download | ppe42-gcc-c86cd2a438b960fb103f0af0e097bfa3ae833a4b.tar.gz ppe42-gcc-c86cd2a438b960fb103f0af0e097bfa3ae833a4b.zip |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@142025 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-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 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; +} + |