Fix a codegen crash when a class template has a constructor that does member initialization of an anonymous union.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80826 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaTemplateInstantiateDecl.cpp b/lib/Sema/SemaTemplateInstantiateDecl.cpp
index 285cc62..807115e 100644
--- a/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -242,17 +242,19 @@
                                             D->getTypeSpecStartLoc(),
                                             D->getAccess(),
                                             0);
-  if (Field) {
-    if (Invalid)
-      Field->setInvalidDecl();
+  if (!Field)
+    return 0;
+  
+  if (Invalid)
+    Field->setInvalidDecl();
     
-    if (!Field->getDeclName()) {
-      // Keep track of where this decl came from.
-      SemaRef.Context.setInstantiatedFromUnnamedFieldDecl(Field, D);
-    }
-    
-    Owner->addDecl(Field);
+  if (!Field->getDeclName()) {
+    // Keep track of where this decl came from.
+    SemaRef.Context.setInstantiatedFromUnnamedFieldDecl(Field, D);
   }
+    
+  Field->setImplicit(D->isImplicit());
+  Owner->addDecl(Field);
 
   return Field;
 }