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;
}