> On Dec 16, 2017, at 10:31 AM, John McCall via swift-dev <swift-dev@swift.org> 
> wrote:
> 
>> 
>> On Dec 16, 2017, at 9:08 AM, David Zarzycki via swift-dev 
>> <swift-dev@swift.org> wrote:
>> 
>> Hello,
>> 
>> I’m trying to improve SILNode memory layout density by adopting the AST 
>> bitfield macros. Unfortunately, multiple inheritance doesn’t seem to get 
>> along with anonymous/unnamed unions. Here is a distillation of the problem:
>> 
>> class B {
>> protected:
>>   int i;
>>   union { int j; };
>> };
>> 
>> class X : public B { };
>> class Y : public B { };
>> 
>> class Z : public X, public Y {
>>   int a() { return X::i; } // works
>>   int b() { return X::j; } // fails
>> };
>> 
>> Is this expected C++ behavior? I can certainly workaround this by naming the 
>> unnamed union, but before I do, I thought that I should check here first.
> 
> This seems like a bug; anonymous unions are just supposed to inject their 
> member names into the containing scope as if there was an ordinary member 
> there, and the explicit scope-qualification should resolve which subobject is 
> meant for such injected names the same it resolves them for ordinary fields.  
> But if it's a bug in all existing clangs, it's a bug we're going to have to 
> work around.

Which should not prevent Dave from still reporting it on 
https://bugs.llvm.org/enter_bug.cgi?product=clang :-)

-- adrian
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to