rtti.c (get_tinfo_decl): Avoid caching tinfo_descs when it might change.

cp:
	* rtti.c (get_tinfo_decl): Avoid caching tinfo_descs when it might
	change.
	(create_pseudo_type_info): First parameter is an int.
testsuite:
	* g++.dg/rtti/crash2.C: New.

From-SVN: r101011
This commit is contained in:
Nathan Sidwell 2005-06-16 08:21:00 +00:00 committed by Nathan Sidwell
parent 3d5a109a9c
commit fe93f42f5e
4 changed files with 23 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2005-06-16 Nathan Sidwell <nathan@codesourcery.com>
* rtti.c (get_tinfo_decl): Avoid caching tinfo_descs when it might
change.
(create_pseudo_type_info): First parameter is an int.
2005-06-15 Aldy Hernandez <aldyh@redhat.com>
* typeck.c (build_binary_op): Same.

View File

@ -117,7 +117,7 @@ static tree generic_initializer (tinfo_s *, tree);
static tree ptr_initializer (tinfo_s *, tree);
static tree ptm_initializer (tinfo_s *, tree);
static tree class_initializer (tinfo_s *, tree, tree);
static void create_pseudo_type_info (tinfo_kind, const char *, ...);
static void create_pseudo_type_info (int, const char *, ...);
static tree get_pseudo_ti_init (tree, unsigned);
static unsigned get_pseudo_ti_index (tree);
static void create_tinfo_types (void);
@ -369,8 +369,8 @@ get_tinfo_decl (tree type)
d = IDENTIFIER_GLOBAL_VALUE (name);
if (!d)
{
tinfo_s *ti = VEC_index (tinfo_s, tinfo_descs,
get_pseudo_ti_index (type));
int ix = get_pseudo_ti_index (type);
tinfo_s *ti = VEC_index (tinfo_s, tinfo_descs, ix);
d = build_lang_decl (VAR_DECL, name, ti->type);
SET_DECL_ASSEMBLER_NAME (d, name);
@ -1100,7 +1100,7 @@ get_pseudo_ti_init (tree type, unsigned tk_index)
NULL. */
static void
create_pseudo_type_info (tinfo_kind tk, const char *real_name, ...)
create_pseudo_type_info (int tk, const char *real_name, ...)
{
tinfo_s *ti;
tree pseudo_type;

View File

@ -1,3 +1,7 @@
2005-06-16 Nathan Sidwell <nathan@codesourcery.com>
* g++.dg/rtti/crash2.C: New.
2005-06-15 Joseph S. Myers <joseph@codesourcery.com>
* gcc.dg/noncompile/20040203-3.c: Update expected message.

View File

@ -0,0 +1,9 @@
// Copyright (C) 2005 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 16 Jun 2005 <nathan@codesourcery.com>
// Crash when compiler is optimized
// Origin: Andrew Pinski pinskia@gcc.gnu.org
struct facet { virtual ~facet(); };
struct ctype_base {};
struct ctype : facet, ctype_base {};