tinfo.h (old abi): #include "tconfig.h".
authorJason Merrill <jason@casey.cygnus.com>
Mon, 31 Jan 2000 21:27:42 +0000 (21:27 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 31 Jan 2000 21:27:42 +0000 (16:27 -0500)
        * tinfo.h (old abi): #include "tconfig.h".
        * tinfo.cc (convert_to_base): Move into old abi section.

From-SVN: r31725

gcc/cp/ChangeLog
gcc/cp/tinfo.cc
gcc/cp/tinfo.h

index 50848be67693b7ac1fd6c523eb630594e755c656..98e2b2f0e8ae755f51586b0ffa696837853574dd 100644 (file)
@@ -1,3 +1,8 @@
+2000-01-31  Jason Merrill  <jason@casey.cygnus.com>
+
+       * tinfo.h (old abi): #include "tconfig.h".
+       * tinfo.cc (convert_to_base): Move into old abi section.
+
 2000-01-31  Mark Mitchell  <mark@codesourcery.com>
 
        * cp-tree.h (BINFO_VIRTUALS): Tweak documentation.
index 557c88c18073ae91972871886a29243b0dd723e0..20e6c9eee11bcc6c0a645cbe671bd34f6e502788 100644 (file)
 #include "tinfo.h"
 #include "new"                 // for placement new
 
+// This file contains the minimal working set necessary to link with code
+// that uses virtual functions and -frtti but does not actually use RTTI
+// functionality.
+
+std::type_info::
+~type_info ()
+{ }
+
+#if !defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100
+// original (old) abi
+
 namespace
 {
 // ADDR is a pointer to an object.  Convert it to a pointer to a base,
 // using OFFSET.
 inline void*
-convert_to_base (void *addr, bool is_virtual, USItype offset)
+convert_to_base (void *addr, bool is_virtual, myint32 offset)
 {
   if (!addr)
     return NULL;
@@ -44,32 +55,13 @@ convert_to_base (void *addr, bool is_virtual, USItype offset)
   if (!is_virtual)
     return (char *) addr + offset;
 
-#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100
-  // Under the new ABI, the offset gives us an index into the vtable,
-  // which contains an offset to the virtual base.  The vptr is always
-  // the first thing in the object.
-  std::ptrdiff_t *vtable = *((std::ptrdiff_t **) addr);
-  return ((char *) addr) + vtable[offset];
-#else
   // Under the old ABI, the offset gives us the address of a pointer
   // to the virtual base.
   return *((void **) ((char *) addr + offset));
-#endif
 }
 
 }
 
-// This file contains the minimal working set necessary to link with code
-// that uses virtual functions and -frtti but does not actually use RTTI
-// functionality.
-
-std::type_info::
-~type_info ()
-{ }
-
-#if !defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100
-// original (old) abi
-
 // We can't rely on common symbols being shared between shared objects.
 bool std::type_info::
 operator== (const std::type_info& arg) const
index 4753e719bc1e29894fbed5a58d0d6a63e59c6b9a..3df662dfef238791aafa5e5afa4c8a2902303893 100644 (file)
@@ -171,6 +171,8 @@ public:
 // type_info for a general class.
 
 // Kludge, kludge, kludge.
+#include "tconfig.h"
+
 #if BITS_PER_UNIT == 8
 typedef int myint32 __attribute__ ((mode (SI)));
 #elif BITS_PER_UNIT == 16
@@ -428,6 +430,6 @@ void *__dynamic_cast (const void *src_ptr,    // object started from
     // -2: src_type is not a public base of dst_type
     // -3: src_type is a multiple public non-virtual base of dst_type
 
-}; // namespace std
+} // namespace std
 
 #endif