cp:
        * pt.c  (get_template_base): Check type is completable.
testsuite:
        * g++.dg/template/crash20.c: New.

From-SVN: r85050
This commit is contained in:
Nathan Sidwell 2004-07-22 14:57:09 +00:00 committed by Nathan Sidwell
parent 4f5492cdfd
commit 4261159083
4 changed files with 32 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2004-07-22 Nathan Sidwell <nathan@codesourcery.com>
* pt.c (get_template_base): Check type is completable.
2004-07-21 Eric Christopher <echristo@redhat.com>
* decl.c (poplevel): Inline unused variable checking.

View File

@ -9458,6 +9458,10 @@ get_template_base (tree tparms, tree targs, tree parm, tree arg)
my_friendly_assert (IS_AGGR_TYPE_CODE (TREE_CODE (arg)), 92);
arg_binfo = TYPE_BINFO (complete_type (arg));
if (!arg_binfo)
/* The type could not be completed. */
return NULL_TREE;
rval = get_template_base_recursive (tparms, targs,
parm, arg_binfo,
NULL_TREE,

View File

@ -1,3 +1,7 @@
2004-07-22 Nathan Sidwell <nathan@codesourcery.com>
* g++.dg/template/crash20.c: New.
2004-07-22 David Billinghurst (David.Billinghurst@riotinto.com)
* gfortran.dg/g77/970625-2.f Copy from g77.f-torture/execute.

View File

@ -0,0 +1,20 @@
// { dg-do compile }
// Copyright (C) 2004 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 22 Jul 2004 <nathan@codesourcery.com>
// ICE with incompletable type.
class INC;
template <typename T> class B {};
template<typename T> void Foo (B<T> &);
void Foo (INC &);
void Baz (INC *p)
{
Foo (*p);
}