From d583da04d09729aee882b3a7551325d311aac677 Mon Sep 17 00:00:00 2001 From: Francois Pichet Date: Sat, 4 Dec 2010 09:14:42 +0000 Subject: More anonymous struct/union redesign. This one deals with anonymous field used in a constructor initializer list: struct X { X() : au_i1(123) {} union { int au_i1; float au_f1; }; }; clang will now deal with au_i1 explicitly as an IndirectFieldDecl. llvm-svn: 120900 --- clang/lib/Serialization/ASTWriter.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'clang/lib/Serialization/ASTWriter.cpp') diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index 77d99cd6b35..ea63e7b9d82 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -3255,11 +3255,15 @@ void ASTWriter::AddCXXBaseOrMemberInitializers( AddTypeSourceInfo(Init->getBaseClassInfo(), Record); Record.push_back(Init->isBaseVirtual()); } else { - AddDeclRef(Init->getMember(), Record); + Record.push_back(Init->isIndirectMemberInitializer()); + if (Init->isIndirectMemberInitializer()) + AddDeclRef(Init->getIndirectMember(), Record); + else + AddDeclRef(Init->getMember(), Record); } + AddSourceLocation(Init->getMemberLocation(), Record); AddStmt(Init->getInit()); - AddDeclRef(Init->getAnonUnionMember(), Record); AddSourceLocation(Init->getLParenLoc(), Record); AddSourceLocation(Init->getRParenLoc(), Record); Record.push_back(Init->isWritten()); -- cgit v1.2.3