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(),