Carlos O'Donell wrote:
Is any of you able to give some comments on pr27650

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27650

In particular I am interested in an opinion of Danny's fix.

http://gcc.gnu.org/ml/gcc-patches/2006-05/msg01504.html

I definately don't know enough about attributes and dllimport to
comment. The fix works, but is it correct?

I think the idea of the patch is correct: virtual functions shouldn't be marked dllimport because you need their addresses to be constants so that they can go in virtual tables.

However, I think that the winnt.c change (which has already been checked in) shouldn't be necessary. It only makes sense if we set DECL_DLLIMPORT_P at one point, and then set it back to zero, indicating that we don't want to allow the function to be dllimport'ed. But, in that case, I don't think dllimport should still be on the DECL_ATTRIBUTES list. So, it seems like a band-aid.

The cp/decl2.c change also seems less than ideal. The key invariant is that virtual functions can't be dllimport'd. So, I think we should mark them that way when they're declared, perhaps in grokfndecl or in cp_finish_decl.

It could be that I'm missing something, though; Danny might want to debate my conclusions.

--
Mark Mitchell
CodeSourcery
[EMAIL PROTECTED]
(650) 331-3385 x713

Reply via email to