diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index aad06b77259..b49c6da080f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,11 @@ +2003-01-14 Jeffrey D. Oldham + + 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 * config-lang.in: Add semantics.c to gtfiles. diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c index 71b8e34b199..0b688051f9f 100644 --- a/gcc/cp/rtti.c +++ b/gcc/cp/rtti.c @@ -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; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b1608daa1f7..c62c93115c4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2003-01-14 Jeffrey D. Oldham + + 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 * gcc.dg/i386-fpcvt-1.c: New test. diff --git a/gcc/testsuite/g++.old-deja/g++.abi/vmihint.C b/gcc/testsuite/g++.old-deja/g++.abi/vmihint.C index 1160e1fe178..b4cdf6720cc 100644 --- a/gcc/testsuite/g++.old-deja/g++.abi/vmihint.C +++ b/gcc/testsuite/g++.old-deja/g++.abi/vmihint.C @@ -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 #include @@ -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; diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index d67b56e73a7..9929ee8cda1 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2003-01-14 Jeffrey D. Oldham + + 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 Renames, namespaces for testsuite utilities. diff --git a/libstdc++-v3/libsupc++/cxxabi.h b/libstdc++-v3/libsupc++/cxxabi.h index adb1a00d307..e946e26585a 100644 --- a/libstdc++-v3/libsupc++/cxxabi.h +++ b/libstdc++-v3/libsupc++/cxxabi.h @@ -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 };