Further conform g++'s __vmi_class_type_info to the C++ ABI specification.

2003-01-14  Jeffrey D. Oldham  <oldham@codesourcery.com>

	Further conform g++'s __vmi_class_type_info to the C++ ABI
	specification.
	* gcc/cp/rtti.c (dfs_class_hint_mark): Do not set hints not
	specified by the specification.
	(class_hint_flags): Likewise.
	* gcc/testsuite/g++.old-deja/g++.abi/vmihint.C (main): Revise
	expected flags per the specification.
	* libstdc++-v3/libsupc++/cxxabi.h
	(__vmi_class_type_info::__flags_masks): Remove enumerations not
	required by the specification.

From-SVN: r61304
This commit is contained in:
Jeffrey D. Oldham 2003-01-14 21:36:20 +00:00 committed by Jeffrey D. Oldham
parent 7365ecf789
commit a7189b490f
6 changed files with 33 additions and 23 deletions

View File

@ -1,3 +1,11 @@
2003-01-14 Jeffrey D. Oldham <oldham@codesourcery.com>
Further conform g++'s __vmi_class_type_info to the C++ ABI
specification.
* rtti.c (dfs_class_hint_mark): Do not set hints not specified by
the specification.
(class_hint_flags): Likewise.
2003-01-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
* config-lang.in: Add semantics.c to gtfiles.

View File

@ -1,5 +1,5 @@
/* RunTime Type Identification
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
Mostly written by Jason Merrill (jason@cygnus.com).
@ -916,8 +916,6 @@ dfs_class_hint_mark (tree binfo, void *data)
*hint |= 1;
SET_CLASSTYPE_MARKED (basetype);
}
if (!TREE_VIA_PUBLIC (binfo) && TYPE_BINFO (basetype) != binfo)
*hint |= 4;
return NULL_TREE;
};
@ -939,18 +937,10 @@ static int
class_hint_flags (tree type)
{
int hint_flags = 0;
int i;
dfs_walk (TYPE_BINFO (type), dfs_class_hint_mark, NULL, &hint_flags);
dfs_walk (TYPE_BINFO (type), dfs_class_hint_unmark, NULL, NULL);
for (i = 0; i < CLASSTYPE_N_BASECLASSES (type); ++i)
{
tree base_binfo = BINFO_BASETYPE (TYPE_BINFO (type), i);
if (TREE_VIA_PUBLIC (base_binfo))
hint_flags |= 0x8;
}
return hint_flags;
}

View File

@ -1,3 +1,10 @@
2003-01-14 Jeffrey D. Oldham <oldham@codesourcery.com>
Further conform g++'s __vmi_class_type_info to the C++ ABI
specification.
* g++.old-deja/g++.abi/vmihint.C (main): Revise expected flags per
the specification.
Tue Jan 14 00:45:03 CET 2003 Jan Hubicka <jh@suse.cz>
* gcc.dg/i386-fpcvt-1.c: New test.

View File

@ -1,5 +1,5 @@
// Test rtti hint flags
// Copyright (C) 2000 Free Software Foundation, Inc.
// Copyright (C) 2000, 2003 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 3 Apr 2000 <nathan@nathan@codesourcery.com>
#include <typeinfo>
@ -43,20 +43,20 @@ int expect (int flags, std::type_info const &info)
int main ()
{
if (! expect (0 | 8, typeid (C1)))
if (! expect (0, typeid (C1)))
return 1;
if (! expect (2 | 8, typeid (D1)))
if (! expect (2, typeid (D1)))
return 2;
if (! expect (1 | 8, typeid (E1)))
if (! expect (1, typeid (E1)))
return 3;
if (! expect (1 | 8, typeid (E2)))
if (! expect (1, typeid (E2)))
return 4;
if (! expect (3 | 8, typeid (F1)))
if (! expect (3, typeid (F1)))
return 5;
if (!expect (4, typeid (P1)))
if (!expect (0, typeid (P1)))
return 6;
if (!expect (12, typeid (P2)))
if (!expect (0, typeid (P2)))
return 7;
return 0;

View File

@ -1,3 +1,11 @@
2003-01-14 Jeffrey D. Oldham <oldham@codesourcery.com>
Further conform g++'s __vmi_class_type_info to the C++ ABI
specification.
* libsupc++/cxxabi.h
(__vmi_class_type_info::__flags_masks): Remove enumerations not
required by the specification.
2003-01-12 Benjamin Kosnik <bkoz@redhat.com>
Renames, namespaces for testsuite utilities.

View File

@ -1,6 +1,6 @@
// new abi support -*- C++ -*-
// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
//
// This file is part of GNU CC.
//
@ -384,9 +384,6 @@ public:
enum __flags_masks {
__non_diamond_repeat_mask = 0x1, /* distinct instance of repeated base */
__diamond_shaped_mask = 0x2, /* diamond shaped multiple inheritance */
non_public_base_mask = 0x4, /* has non-public direct or indirect base */
public_base_mask = 0x8, /* has public base (direct) */
__flags_unknown_mask = 0x10
};