From a2c257107c7cfc5c11c9aa5317e7b72b5fc51eba Mon Sep 17 00:00:00 2001 From: Dodji Seketeli Date: Thu, 20 Nov 2008 00:13:15 +0000 Subject: [PATCH] re PR c++/37142 (ICE: in dependent_type_p, at cp/pt.c:15585) gcc/cp/ChangeLog: 2008-11-19 Dodji Seketeli PR c++/37142 * pt.c (coerce_template_template_parm): Use the more robust uses_template_parms instead of dependent_type_p. gcc/testsuite/ChangeLog/ 2008-11-19 Dodji Seketeli PR c++/37142 * g++.dg/template/crash71.C: New test. From-SVN: r142027 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/pt.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/template/crash71.C | 16 ++++++++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/template/crash71.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ae05bb898e81..172ccf76b9ef 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2008-11-19 Dodji Seketeli + + PR c++/37142 + * pt.c (coerce_template_template_parm): Use the more robust + uses_template_parms instead of dependent_type_p. + 2008-11-14 Jason Merrill PR c++/38030 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 721f02bfe61a..67654df9d910 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -3962,7 +3962,7 @@ coerce_template_template_parms (tree parm_parms, D 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 32d678088356..d699e3d42f12 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-11-19 Dodji Seketeli + + PR c++/37142 + * g++.dg/template/crash71.C: New test. + 2008-11-14 Dodji Seketeli PR c++/27574 diff --git a/gcc/testsuite/g++.dg/template/crash71.C b/gcc/testsuite/g++.dg/template/crash71.C new file mode 100644 index 000000000000..18ef338818be --- /dev/null +++ b/gcc/testsuite/g++.dg/template/crash71.C @@ -0,0 +1,16 @@ +// Contributed by Dodji Seketeli +// Origin: PR c++/37142 +// { dg-do compile } + +template class W> struct A {}; + +template struct B {}; + +int +main () +{ + A a; + return 0; +} + + -- 2.47.2