Preserve the FoundDecl when performing overload resolution for constructors.
This is in preparation for C++ P0136R1, which switches the model for inheriting
constructors over from synthesizing a constructor to finding base class
constructors (via using shadow decls) when looking for derived class
constructors.

llvm-svn: 269231
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp
index 747f9fc..8665d80 100644
--- a/clang/lib/AST/ASTImporter.cpp
+++ b/clang/lib/AST/ASTImporter.cpp
@@ -5767,9 +5767,14 @@
   if (T.isNull())
     return nullptr;
 
+  NamedDecl *ToFound =
+    dyn_cast<NamedDecl>(Importer.Import(E->getFoundDecl()));
+  if (!ToFound)
+    return nullptr;
+
   CXXConstructorDecl *ToCCD =
     dyn_cast<CXXConstructorDecl>(Importer.Import(E->getConstructor()));
-  if (!ToCCD && E->getConstructor())
+  if (!ToCCD)
     return nullptr;
 
   SmallVector<Expr *, 6> ToArgs(E->getNumArgs());
@@ -5779,7 +5784,7 @@
 
   return CXXConstructExpr::Create(Importer.getToContext(), T,
                                   Importer.Import(E->getLocation()),
-                                  ToCCD, E->isElidable(),
+                                  ToFound, ToCCD, E->isElidable(),
                                   ToArgs, E->hadMultipleCandidates(),
                                   E->isListInitialization(),
                                   E->isStdInitListInitialization(),