summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ASTImporter.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2016-05-11 20:37:46 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2016-05-11 20:37:46 +0000
commitc2bebe9acab26b5af209f11b3ee978966feab491 (patch)
tree3573c6b429a7cf0bf311f648650ce49743c6a741 /clang/lib/AST/ASTImporter.cpp
parent1455de2171e8829f75935f11b254f404417c260c (diff)
downloadbcm5719-llvm-c2bebe9acab26b5af209f11b3ee978966feab491.tar.gz
bcm5719-llvm-c2bebe9acab26b5af209f11b3ee978966feab491.zip
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
Diffstat (limited to 'clang/lib/AST/ASTImporter.cpp')
-rw-r--r--clang/lib/AST/ASTImporter.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp
index 747f9fc9bde..8665d809ae4 100644
--- a/clang/lib/AST/ASTImporter.cpp
+++ b/clang/lib/AST/ASTImporter.cpp
@@ -5767,9 +5767,14 @@ Expr *ASTNodeImporter::VisitCXXConstructExpr(CXXConstructExpr *E) {
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 @@ Expr *ASTNodeImporter::VisitCXXConstructExpr(CXXConstructExpr *E) {
return CXXConstructExpr::Create(Importer.getToContext(), T,
Importer.Import(E->getLocation()),
- ToCCD, E->isElidable(),
+ ToFound, ToCCD, E->isElidable(),
ToArgs, E->hadMultipleCandidates(),
E->isListInitialization(),
E->isStdInitListInitialization(),
OpenPOWER on IntegriCloud