decl.c (build_ptrmemfunc_type): Allow error_mark_node.

cp:
	* decl.c (build_ptrmemfunc_type): Allow error_mark_node.
testsuite:
	* g++.old-deja/g++.pt/crash60.C: New test.

From-SVN: r37289
This commit is contained in:
Nathan Sidwell 2000-11-07 13:58:21 +00:00 committed by Nathan Sidwell
parent 665d66d647
commit d48ebde10d
4 changed files with 29 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2000-11-07 Nathan Sidwell <nathan@codesourcery.com>
* decl.c (build_ptrmemfunc_type): Allow error_mark_node.
2000-11-05 Joseph S. Myers <jsm28@cam.ac.uk>
* Make-lang.in (c++.distdir): Remove.

View File

@ -9215,6 +9215,9 @@ build_ptrmemfunc_type (type)
tree u;
tree unqualified_variant = NULL_TREE;
if (type == error_mark_node)
return type;
/* If a canonical type already exists for this type, use it. We use
this method instead of type_hash_canon, because it only does a
simple equality check on the list of field members. */

View File

@ -1,3 +1,7 @@
2000-11-07 Nathan Sidwell <nathan@codesourcery.com>
* g++.old-deja/g++.pt/crash60.C: New test.
2000-11-06 Jakub Jelinek <jakub@redhat.com>
* g++.old-deja/g++.other/crash24.C: New test.

View File

@ -0,0 +1,18 @@
// Build don't link:
// Copyright (C) 2000 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 7 Nov 2000 <nathan@codesourcery.com>
// We ICE'd rather than fail to instantiate.
template< typename SID, class SDR >
void k( SID sid, SDR* p,
void (SDR::*)
( typename SID::T ) );
struct E { };
struct S { void f( int ); };
void f()
{
k( E(), (S*)0, &S::f ); // ERROR - no match
}