> 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