[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cfe-commits
Subject:    Re: [PATCH] ignore __declspec(novtable) on non-Windows platforms
From:       Aaron Ballman <aaron () aaronballman ! com>
Date:       2015-07-17 19:15:16
Message-ID: CAAt6xTugE_kHDLpDTGt3QyW0wMYgkYicr2WWgx8fpgQP=RTR3Q () mail ! gmail ! com
[Download RAW message or body]

On Fri, Jul 17, 2015 at 1:17 PM, Reid Kleckner <rnk@google.com> wrote:
> On Fri, Jul 17, 2015 at 4:45 AM, Aaron Ballman <aaron@aaronballman.com>
> wrote:
>>
>> On Thu, Jul 16, 2015 at 8:42 PM, Bob Wilson <bob.wilson@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.
>
>
> I think it might actually be worth making it work. I have vague
> recollections of Chromium developers wondering how to do the equivalent size
> saving optimization on non-Windows targets. We'd have to pin down what makes
> a "complex" class hierarchy. I'm assuming the fix would be to emit the vptr
> store if the class has virtual bases.
>
>>
>> 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.
>
>
> I think Bob is talking about the Itanium C++ ABI, which I don't think MSVC
> ever implemented. If they did, I wouldn't be surprised if they simply
> ignored this declspec.

Ah, in that case, I don't have a problem with this general approach. :-)

~Aaron

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

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic