aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mmitchell@usa.net>1998-03-10 07:32:11 +0000
committerMark Mitchell <mmitchell@gcc.gnu.org>1998-03-10 07:32:11 +0000
commitaf9c2d8a254bb4859ea64382d97935a96248b37f (patch)
treee1f20ae56c09c412b991c58c3b106e0ab9f65262
parenta438d567a561730b1c3645e2469e5478569cc32d (diff)
downloadgcc-af9c2d8a254bb4859ea64382d97935a96248b37f.zip
gcc-af9c2d8a254bb4859ea64382d97935a96248b37f.tar.gz
gcc-af9c2d8a254bb4859ea64382d97935a96248b37f.tar.bz2
decl2.c (import_export_decl): Mark tinfo functions for cv-qualified versions of class types as...
Tue Mar 10 07:32:36 1998 Mark Mitchell <mmitchell@usa.net> * decl2.c (import_export_decl): Mark tinfo functions for cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN. From-SVN: r18456
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl2.c11
2 files changed, 14 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d895191..c2a62c9 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+Tue Mar 10 07:32:36 1998 Mark Mitchell <mmitchell@usa.net>
+
+ * decl2.c (import_export_decl): Mark tinfo functions for
+ cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.
+
Fri Mar 6 23:27:35 1998 Jeffrey A Law (law@cygnus.com)
* method.c: Fix typo.
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index e337b18..2d8ecb9 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -2702,9 +2702,16 @@ import_export_decl (decl)
if (IS_AGGR_TYPE (ctype) && CLASSTYPE_INTERFACE_KNOWN (ctype)
&& TYPE_VIRTUAL_P (ctype))
{
+ /* If the type is a cv-qualified variant of a type, then we
+ must emit the tinfo function in this translation unit
+ since it will not be emitted when the vtable for the type
+ is output (which is when the unqualified version is
+ generated). */
DECL_NOT_REALLY_EXTERN (decl)
- = ! (CLASSTYPE_INTERFACE_ONLY (ctype)
- || (DECL_THIS_INLINE (decl) && ! flag_implement_inlines));
+ = TYPE_READONLY (ctype)
+ || TYPE_VOLATILE (ctype)
+ || ! (CLASSTYPE_INTERFACE_ONLY (ctype)
+ || (DECL_THIS_INLINE (decl) && ! flag_implement_inlines));
/* For WIN32 we also want to put explicit instantiations in
linkonce sections. */