* class.c (check_for_override): Remove dllimport from virtual
methods.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117096
138bc75d-0d04-0410-961f-
82ee72b054a4
+2006-09-20 Danny Smith <dannysmith@users.sourceforge.net>
+
+ PR target/27650
+ * class.c (check_for_override): Remove dllimport from virtual
+ methods.
+
2006-09-18 Steven Bosscher <steven@gcc.gnu.org>
PR c++/29087
if (!DECL_VINDEX (decl))
DECL_VINDEX (decl) = error_mark_node;
IDENTIFIER_VIRTUAL_P (DECL_NAME (decl)) = 1;
+ if (DECL_DLLIMPORT_P (decl))
+ {
+ /* When we handled the dllimport attribute we may not have known
+ that this function is virtual We can't use dllimport
+ semantics for a virtual method because we need to initialize
+ the vtable entry with a constant address. */
+ DECL_DLLIMPORT_P (decl) = 0;
+ DECL_ATTRIBUTES (decl)
+ = remove_attribute ("dllimport", DECL_ATTRIBUTES (decl));
+ }
}
}