+1999-04-13 Mike Stump <mrs@wrs.com>
+
+ * decl2.c (import_export_decl): Because vtables always reference
+ virtual functions, even if they are inlined, don't allow
+ -fno-implement-inlines to not emit them, instead, emit them with
+ the vtable.
+ * decl.c (start_function): Likewise.
+
1999-04-12 Jason Merrill <jason@yorick.cygnus.com>
* cp-tree.h (struct lang_type): Add com_interface.
{
DECL_EXTERNAL (decl1)
= (interface_only
- || (DECL_THIS_INLINE (decl1) && ! flag_implement_inlines));
+ || (DECL_THIS_INLINE (decl1) && ! flag_implement_inlines
+ && !DECL_VINDEX (decl1)));
/* For WIN32 we also want to put these in linkonce sections. */
maybe_make_one_only (decl1);
{
DECL_NOT_REALLY_EXTERN (decl)
= ! (CLASSTYPE_INTERFACE_ONLY (ctype)
- || (DECL_THIS_INLINE (decl) && ! flag_implement_inlines));
+ || (DECL_THIS_INLINE (decl) && ! flag_implement_inlines
+ && !DECL_VINDEX (decl)));
/* Always make artificials weak. */
if (DECL_ARTIFICIAL (decl) && flag_weak)
{
DECL_NOT_REALLY_EXTERN (decl)
= ! (CLASSTYPE_INTERFACE_ONLY (ctype)
- || (DECL_THIS_INLINE (decl) && ! flag_implement_inlines));
+ || (DECL_THIS_INLINE (decl) && ! flag_implement_inlines
+ && !DECL_VINDEX (decl)));
/* Always make artificials weak. */
if (flag_weak)
--- /dev/null
+// Build don't run:
+// Special g++ Options: -fno-implement-inlines
+struct type {
+ virtual void m1();
+ virtual void m2() { }
+};
+
+void type::m1() { }
+
+int main() {
+ type t;
+}