mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-18 14:30:42 +08:00
re PR c++/35828 ([C++0x] ICE on default template template parameter in template function)
PR c++/35828 * pt.c (tsubst_decl): Don't abort if we didn't change anything in a TEMPLATE_DECL's args. From-SVN: r149351
This commit is contained in:
parent
5e278028ed
commit
438c0fa8a0
@ -1,3 +1,9 @@
|
||||
2009-07-07 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/35828
|
||||
* pt.c (tsubst_decl): Don't abort if we didn't change anything
|
||||
in a TEMPLATE_DECL's args.
|
||||
|
||||
2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
|
||||
|
||||
* semantics.c (finalize_nrv_r): Replace EXPR_LOCUS by
|
||||
|
11
gcc/cp/pt.c
11
gcc/cp/pt.c
@ -8306,8 +8306,7 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain)
|
||||
case TEMPLATE_DECL:
|
||||
{
|
||||
/* We can get here when processing a member function template,
|
||||
member class template, and template template parameter of
|
||||
a template class. */
|
||||
member class template, or template template parameter. */
|
||||
tree decl = DECL_TEMPLATE_RESULT (t);
|
||||
tree spec;
|
||||
tree tmpl_args;
|
||||
@ -8351,10 +8350,10 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain)
|
||||
if (full_args == error_mark_node)
|
||||
return error_mark_node;
|
||||
|
||||
/* tsubst_template_args doesn't copy the vector if
|
||||
nothing changed. But, *something* should have
|
||||
changed. */
|
||||
gcc_assert (full_args != tmpl_args);
|
||||
/* If this is a default template template argument,
|
||||
tsubst might not have changed anything. */
|
||||
if (full_args == tmpl_args)
|
||||
return t;
|
||||
|
||||
hash = hash_tmpl_and_args (t, full_args);
|
||||
spec = retrieve_specialization (t, full_args, hash);
|
||||
|
@ -1,5 +1,8 @@
|
||||
2009-07-07 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/35828
|
||||
* g++.dg/template/defarg12.C: New.
|
||||
|
||||
PR c++/37816
|
||||
* g++.dg/cpp0x/enum7.C: New.
|
||||
|
||||
|
10
gcc/testsuite/g++.dg/template/defarg12.C
Normal file
10
gcc/testsuite/g++.dg/template/defarg12.C
Normal file
@ -0,0 +1,10 @@
|
||||
// PR c++/35828
|
||||
// { dg-options "-std=c++0x" }
|
||||
|
||||
template < typename > struct A ;
|
||||
template < template < typename > class = A >
|
||||
void test ()
|
||||
{
|
||||
test ();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user