[PATCH] ignore __declspec(novtable) on non-Windows platforms

Aaron Ballman aaron at aaronballman.com
Fri Jul 17 04:45:38 PDT 2015


On Thu, Jul 16, 2015 at 8:42 PM, Bob Wilson <bob.wilson at apple.com> wrote:
> Clang used to silently ignore __declspec(novtable) for all platforms, but it is now implemented for Windows. However, we don’t check if the target is Windows. This does not work when using the Itanium ABI, where the class layout for complex class hierarchies is stored in the vtable. Leaving the vtable uninitialized on non-Windows platforms does not work in that case. It might be possible to honor the novtable attribute in some simple cases and either report an error or ignore it in more complex situations, but it’s not clear if that would be worthwhile. There is also value in having a simple and predictable behavior, so I am proposed the attached patch which simply ignores novtable on non-Windows platforms.

MSVC supports an Itanium build target. What does __declspec(novtable)
do there with the complex class layouts?

I don't have Visual Studio installed with support for Itanium,
otherwise I would test this myself.

~Aaron

>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>




More information about the cfe-commits mailing list