Commit a7189b49 by Jeffrey D. Oldham Committed by Jeffrey D. Oldham

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
parent 7365ecf7
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> 2003-01-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
* config-lang.in: Add semantics.c to gtfiles. * config-lang.in: Add semantics.c to gtfiles.
......
/* RunTime Type Identification /* 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. Free Software Foundation, Inc.
Mostly written by Jason Merrill (jason@cygnus.com). Mostly written by Jason Merrill (jason@cygnus.com).
...@@ -916,8 +916,6 @@ dfs_class_hint_mark (tree binfo, void *data) ...@@ -916,8 +916,6 @@ dfs_class_hint_mark (tree binfo, void *data)
*hint |= 1; *hint |= 1;
SET_CLASSTYPE_MARKED (basetype); SET_CLASSTYPE_MARKED (basetype);
} }
if (!TREE_VIA_PUBLIC (binfo) && TYPE_BINFO (basetype) != binfo)
*hint |= 4;
return NULL_TREE; return NULL_TREE;
}; };
...@@ -939,18 +937,10 @@ static int ...@@ -939,18 +937,10 @@ static int
class_hint_flags (tree type) class_hint_flags (tree type)
{ {
int hint_flags = 0; 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_mark, NULL, &hint_flags);
dfs_walk (TYPE_BINFO (type), dfs_class_hint_unmark, NULL, NULL); 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; return hint_flags;
} }
......
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> Tue Jan 14 00:45:03 CET 2003 Jan Hubicka <jh@suse.cz>
* gcc.dg/i386-fpcvt-1.c: New test. * gcc.dg/i386-fpcvt-1.c: New test.
......
// Test rtti hint flags // 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> // Contributed by Nathan Sidwell 3 Apr 2000 <nathan@nathan@codesourcery.com>
#include <typeinfo> #include <typeinfo>
...@@ -43,20 +43,20 @@ int expect (int flags, std::type_info const &info) ...@@ -43,20 +43,20 @@ int expect (int flags, std::type_info const &info)
int main () int main ()
{ {
if (! expect (0 | 8, typeid (C1))) if (! expect (0, typeid (C1)))
return 1; return 1;
if (! expect (2 | 8, typeid (D1))) if (! expect (2, typeid (D1)))
return 2; return 2;
if (! expect (1 | 8, typeid (E1))) if (! expect (1, typeid (E1)))
return 3; return 3;
if (! expect (1 | 8, typeid (E2))) if (! expect (1, typeid (E2)))
return 4; return 4;
if (! expect (3 | 8, typeid (F1))) if (! expect (3, typeid (F1)))
return 5; return 5;
if (!expect (4, typeid (P1))) if (!expect (0, typeid (P1)))
return 6; return 6;
if (!expect (12, typeid (P2))) if (!expect (0, typeid (P2)))
return 7; return 7;
return 0; return 0;
......
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> 2003-01-12 Benjamin Kosnik <bkoz@redhat.com>
Renames, namespaces for testsuite utilities. Renames, namespaces for testsuite utilities.
......
// new abi support -*- C++ -*- // 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. // This file is part of GNU CC.
// //
...@@ -384,9 +384,6 @@ public: ...@@ -384,9 +384,6 @@ public:
enum __flags_masks { enum __flags_masks {
__non_diamond_repeat_mask = 0x1, /* distinct instance of repeated base */ __non_diamond_repeat_mask = 0x1, /* distinct instance of repeated base */
__diamond_shaped_mask = 0x2, /* diamond shaped multiple inheritance */ __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 __flags_unknown_mask = 0x10
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment