================ @@ -5451,10 +5451,23 @@ bool Sema::SetCtorInitializers(CXXConstructorDecl *Constructor, bool AnyErrors, NumInitializers * sizeof(CXXCtorInitializer*)); Constructor->setCtorInitializers(baseOrMemberInitializers); + SourceLocation Location = Constructor->getLocation(); + + for (CXXCtorInitializer *Initializer : Info.AllToInit) { + FieldDecl *Field = Initializer->getAnyMember(); + if (!Field) + continue; + + RecordDecl *FieldRecordDecl = Field->getParent(); + if (!FieldRecordDecl->isUnion() || ---------------- efriedma-quic wrote:
I think this isn't quite right. Consider: ``` template <class T> struct VSX { ~VSX() { static_assert(sizeof(T) != 4, ""); } }; struct VS { union { struct { VSX<int> _Tail; }; }; ~VS() { } VS(short); }; VS::VS(short) : _Tail() { } ``` Also consider: ``` template <class T> struct VSX { ~VSX() { static_assert(sizeof(T) != 4, ""); } }; union VS { VSX<int> _Tail; ~VS() { } VS(short); }; VS::VS(short) : _Tail() { } ``` https://github.com/llvm/llvm-project/pull/128866 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits