P0217R3: code generation support for decomposition declarations.

llvm-svn: 278642
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 6193cd0..0dc6876 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -1160,6 +1160,7 @@
     RefVD->setImplicit();
     if (Src->isInlineSpecified())
       RefVD->setInlineSpecified();
+    RefVD->getLexicalDeclContext()->addHiddenDecl(RefVD);
 
     InitializedEntity Entity = InitializedEntity::InitializeBinding(RefVD);
     InitializationKind Kind = InitializationKind::CreateCopy(Loc, Loc);
@@ -1167,11 +1168,12 @@
     E = Seq.Perform(S, Entity, Kind, Init);
     if (E.isInvalid())
       return true;
+    E = S.ActOnFinishFullExpr(E.get(), Loc);
+    if (E.isInvalid())
+      return true;
     RefVD->setInit(E.get());
     RefVD->checkInitIsICE();
 
-    RefVD->getLexicalDeclContext()->addHiddenDecl(RefVD);
-
     E = S.BuildDeclarationNameExpr(CXXScopeSpec(),
                                    DeclarationNameInfo(B->getDeclName(), Loc),
                                    RefVD);