aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeffrey D. Oldham <oldham@codesourcery.com>2003-01-14 21:36:20 +0000
committerJeffrey D. Oldham <oldham@gcc.gnu.org>2003-01-14 21:36:20 +0000
commita7189b490f153fe449c45171f9f35e6a60353e57 (patch)
tree705346a28d62a633c3d46d47bac4a790d5c8f560 /gcc
parent7365ecf7896065901cd8689f62873acdeaf38a25 (diff)
downloadgcc-a7189b490f153fe449c45171f9f35e6a60353e57.zip
gcc-a7189b490f153fe449c45171f9f35e6a60353e57.tar.gz
gcc-a7189b490f153fe449c45171f9f35e6a60353e57.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog8
-rw-r--r--gcc/cp/rtti.c12
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/g++.old-deja/g++.abi/vmihint.C16
4 files changed, 24 insertions, 19 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index aad06b7..b49c6da 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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.
diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c
index 71b8e34..0b68805 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 b1608da..c62c931 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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.
diff --git a/gcc/testsuite/g++.old-deja/g++.abi/vmihint.C b/gcc/testsuite/g++.old-deja/g++.abi/vmihint.C
index 1160e1f..b4cdf67 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 <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;