Handle member initializers that point to fields in anonymous structs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80659 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaTemplateInstantiateDecl.cpp b/lib/Sema/SemaTemplateInstantiateDecl.cpp
index 84e464a..314a993 100644
--- a/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -1153,8 +1153,13 @@
Init->getRParenLoc(),
New->getParent());
} else if (Init->isMemberInitializer()) {
- FieldDecl *Member =
- cast<FieldDecl>(FindInstantiatedDecl(Init->getMember()));
+ FieldDecl *Member;
+
+ // Is this an anonymous union?
+ if (FieldDecl *UnionInit = Init->getAnonUnionMember())
+ Member = cast<FieldDecl>(UnionInit);
+ else
+ Member = cast<FieldDecl>(FindInstantiatedDecl(Init->getMember()));
NewInit = BuildMemberInitializer(Member, (Expr **)NewArgs.data(),
NewArgs.size(),