From f06a461366f8d2811e1e2a43000b6298a885bca0 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Fri, 10 Jun 2016 00:58:19 +0000 Subject: [PATCH] Remove CXXConstructExpr::getFoundDecl(); it turned out to not be useful. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272357 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/AST/ExprCXX.h | 7 +------ include/clang/Sema/Sema.h | 11 +++++++++++ lib/AST/ASTImporter.cpp | 7 +------ lib/AST/ExprCXX.cpp | 16 +++------------- lib/CodeGen/CGObjC.cpp | 1 - lib/Sema/SemaDeclCXX.cpp | 21 +++++++++++++++++++-- lib/Sema/SemaInit.cpp | 2 +- lib/Sema/TreeTransform.h | 11 ++--------- 8 files changed, 38 insertions(+), 38 deletions(-) diff --git a/include/clang/AST/ExprCXX.h b/include/clang/AST/ExprCXX.h index 41b6758bdc..700cc48571 100644 --- a/include/clang/AST/ExprCXX.h +++ b/include/clang/AST/ExprCXX.h @@ -1187,7 +1187,7 @@ private: protected: CXXConstructExpr(const ASTContext &C, StmtClass SC, QualType T, SourceLocation Loc, - NamedDecl *Found, CXXConstructorDecl *Ctor, + CXXConstructorDecl *Ctor, bool Elidable, ArrayRef Args, bool HadMultipleCandidates, @@ -1211,7 +1211,6 @@ public: static CXXConstructExpr *Create(const ASTContext &C, QualType T, SourceLocation Loc, - NamedDecl *Found, CXXConstructorDecl *Ctor, bool Elidable, ArrayRef Args, @@ -1222,9 +1221,6 @@ public: ConstructionKind ConstructKind, SourceRange ParenOrBraceRange); - /// \brief Get the declaration that was found by name lookup. - NamedDecl *getFoundDecl() const; - /// \brief Get the constructor that this expression will (ultimately) call. CXXConstructorDecl *getConstructor() const { return Constructor; } @@ -1393,7 +1389,6 @@ class CXXTemporaryObjectExpr : public CXXConstructExpr { public: CXXTemporaryObjectExpr(const ASTContext &C, - NamedDecl *Found, CXXConstructorDecl *Cons, TypeSourceInfo *Type, ArrayRef Args, diff --git a/include/clang/Sema/Sema.h b/include/clang/Sema/Sema.h index 62f37fda52..9583dd5b26 100644 --- a/include/clang/Sema/Sema.h +++ b/include/clang/Sema/Sema.h @@ -4283,6 +4283,17 @@ public: bool RequiresZeroInit, unsigned ConstructKind, SourceRange ParenRange); + /// Build a CXXConstructExpr whose constructor has already been resolved if + /// it denotes an inherited constructor. + ExprResult + BuildCXXConstructExpr(SourceLocation ConstructLoc, QualType DeclInitType, + CXXConstructorDecl *Constructor, bool Elidable, + MultiExprArg Exprs, + bool HadMultipleCandidates, bool IsListInitialization, + bool IsStdInitListInitialization, + bool RequiresZeroInit, unsigned ConstructKind, + SourceRange ParenRange); + // FIXME: Can we remove this and have the above BuildCXXConstructExpr check if // the constructor can be elidable? ExprResult diff --git a/lib/AST/ASTImporter.cpp b/lib/AST/ASTImporter.cpp index 60f001009a..05f96fd432 100644 --- a/lib/AST/ASTImporter.cpp +++ b/lib/AST/ASTImporter.cpp @@ -5796,11 +5796,6 @@ Expr *ASTNodeImporter::VisitCXXConstructExpr(CXXConstructExpr *E) { if (T.isNull()) return nullptr; - NamedDecl *ToFound = - dyn_cast_or_null(Importer.Import(E->getFoundDecl())); - if (!ToFound) - return nullptr; - CXXConstructorDecl *ToCCD = dyn_cast_or_null(Importer.Import(E->getConstructor())); if (!ToCCD) @@ -5813,7 +5808,7 @@ Expr *ASTNodeImporter::VisitCXXConstructExpr(CXXConstructExpr *E) { return CXXConstructExpr::Create(Importer.getToContext(), T, Importer.Import(E->getLocation()), - ToFound, ToCCD, E->isElidable(), + ToCCD, E->isElidable(), ToArgs, E->hadMultipleCandidates(), E->isListInitialization(), E->isStdInitListInitialization(), diff --git a/lib/AST/ExprCXX.cpp b/lib/AST/ExprCXX.cpp index dbfe58c8b3..09401b704e 100644 --- a/lib/AST/ExprCXX.cpp +++ b/lib/AST/ExprCXX.cpp @@ -432,12 +432,6 @@ SourceLocation CXXConstructExpr::getLocEnd() const { return End; } -NamedDecl *CXXConstructExpr::getFoundDecl() const { - if (auto *Template = Constructor->getPrimaryTemplate()) - return Template; - return Constructor; -} - SourceRange CXXOperatorCallExpr::getSourceRangeImpl() const { OverloadedOperatorKind Kind = getOperator(); if (Kind == OO_PlusPlus || Kind == OO_MinusMinus) { @@ -723,7 +717,6 @@ CXXBindTemporaryExpr *CXXBindTemporaryExpr::Create(const ASTContext &C, } CXXTemporaryObjectExpr::CXXTemporaryObjectExpr(const ASTContext &C, - NamedDecl *Found, CXXConstructorDecl *Cons, TypeSourceInfo *Type, ArrayRef Args, @@ -735,7 +728,7 @@ CXXTemporaryObjectExpr::CXXTemporaryObjectExpr(const ASTContext &C, : CXXConstructExpr(C, CXXTemporaryObjectExprClass, Type->getType().getNonReferenceType(), Type->getTypeLoc().getBeginLoc(), - Found, Cons, false, Args, + Cons, false, Args, HadMultipleCandidates, ListInitialization, StdInitListInitialization, @@ -757,7 +750,6 @@ SourceLocation CXXTemporaryObjectExpr::getLocEnd() const { CXXConstructExpr *CXXConstructExpr::Create(const ASTContext &C, QualType T, SourceLocation Loc, - NamedDecl *Found, CXXConstructorDecl *Ctor, bool Elidable, ArrayRef Args, @@ -768,7 +760,7 @@ CXXConstructExpr *CXXConstructExpr::Create(const ASTContext &C, QualType T, ConstructionKind ConstructKind, SourceRange ParenOrBraceRange) { return new (C) CXXConstructExpr(C, CXXConstructExprClass, T, Loc, - Found, Ctor, Elidable, Args, + Ctor, Elidable, Args, HadMultipleCandidates, ListInitialization, StdInitListInitialization, ZeroInitialization, ConstructKind, @@ -777,7 +769,7 @@ CXXConstructExpr *CXXConstructExpr::Create(const ASTContext &C, QualType T, CXXConstructExpr::CXXConstructExpr(const ASTContext &C, StmtClass SC, QualType T, SourceLocation Loc, - NamedDecl *Found, CXXConstructorDecl *Ctor, + CXXConstructorDecl *Ctor, bool Elidable, ArrayRef Args, bool HadMultipleCandidates, @@ -798,8 +790,6 @@ CXXConstructExpr::CXXConstructExpr(const ASTContext &C, StmtClass SC, ZeroInitialization(ZeroInitialization), ConstructKind(ConstructKind), Args(nullptr) { - assert(declaresSameEntity(Found, Ctor) || - declaresSameEntity(Found, Ctor->getPrimaryTemplate())); if (NumArgs) { this->Args = new (C) Stmt*[Args.size()]; diff --git a/lib/CodeGen/CGObjC.cpp b/lib/CodeGen/CGObjC.cpp index 5aa549b8a9..db894ce674 100644 --- a/lib/CodeGen/CGObjC.cpp +++ b/lib/CodeGen/CGObjC.cpp @@ -3312,7 +3312,6 @@ CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction( CXXConstructExpr *TheCXXConstructExpr = CXXConstructExpr::Create(C, Ty, SourceLocation(), - CXXConstExpr->getFoundDecl(), CXXConstExpr->getConstructor(), CXXConstExpr->isElidable(), ConstructorArgs, diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index 1ab3fb2ab8..36d0f34531 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -11495,11 +11495,28 @@ Sema::BuildCXXConstructExpr(SourceLocation ConstructLoc, QualType DeclInitType, ConstructKind, ParenRange); } +ExprResult +Sema::BuildCXXConstructExpr(SourceLocation ConstructLoc, QualType DeclInitType, + NamedDecl *FoundDecl, + CXXConstructorDecl *Constructor, + bool Elidable, + MultiExprArg ExprArgs, + bool HadMultipleCandidates, + bool IsListInitialization, + bool IsStdInitListInitialization, + bool RequiresZeroInit, + unsigned ConstructKind, + SourceRange ParenRange) { + return BuildCXXConstructExpr( + ConstructLoc, DeclInitType, Constructor, Elidable, ExprArgs, + HadMultipleCandidates, IsListInitialization, IsStdInitListInitialization, + RequiresZeroInit, ConstructKind, ParenRange); +} + /// BuildCXXConstructExpr - Creates a complete call to a constructor, /// including handling of its default argument expressions. ExprResult Sema::BuildCXXConstructExpr(SourceLocation ConstructLoc, QualType DeclInitType, - NamedDecl *FoundDecl, CXXConstructorDecl *Constructor, bool Elidable, MultiExprArg ExprArgs, @@ -11511,7 +11528,7 @@ Sema::BuildCXXConstructExpr(SourceLocation ConstructLoc, QualType DeclInitType, SourceRange ParenRange) { MarkFunctionReferenced(ConstructLoc, Constructor); return CXXConstructExpr::Create( - Context, DeclInitType, ConstructLoc, FoundDecl, Constructor, Elidable, + Context, DeclInitType, ConstructLoc, Constructor, Elidable, ExprArgs, HadMultipleCandidates, IsListInitialization, IsStdInitListInitialization, RequiresZeroInit, static_cast(ConstructKind), diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp index c162007349..a35069d564 100644 --- a/lib/Sema/SemaInit.cpp +++ b/lib/Sema/SemaInit.cpp @@ -5742,7 +5742,7 @@ PerformConstructorInitialization(Sema &S, : Kind.getParenRange(); CurInit = new (S.Context) CXXTemporaryObjectExpr( - S.Context, Step.Function.FoundDecl, Constructor, TSInfo, + S.Context, Constructor, TSInfo, ConstructorArgs, ParenOrBraceRange, HadMultipleCandidates, IsListInitialization, IsStdInitListInitialization, ConstructorInitRequiresZeroInit); diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h index 38c4fd69f6..bba9019101 100644 --- a/lib/Sema/TreeTransform.h +++ b/lib/Sema/TreeTransform.h @@ -2660,7 +2660,6 @@ public: /// Subclasses may override this routine to provide different behavior. ExprResult RebuildCXXConstructExpr(QualType T, SourceLocation Loc, - NamedDecl *Found, CXXConstructorDecl *Constructor, bool IsElidable, MultiExprArg Args, @@ -2675,7 +2674,7 @@ public: ConvertedArgs)) return ExprError(); - return getSema().BuildCXXConstructExpr(Loc, T, Found, Constructor, + return getSema().BuildCXXConstructExpr(Loc, T, Constructor, IsElidable, ConvertedArgs, HadMultipleCandidates, @@ -9944,11 +9943,6 @@ TreeTransform::TransformCXXConstructExpr(CXXConstructExpr *E) { if (T.isNull()) return ExprError(); - NamedDecl *FoundDecl = cast_or_null( - getDerived().TransformDecl(E->getLocStart(), E->getFoundDecl())); - if (!FoundDecl) - return ExprError(); - CXXConstructorDecl *Constructor = cast_or_null( getDerived().TransformDecl(E->getLocStart(), @@ -9964,7 +9958,6 @@ TreeTransform::TransformCXXConstructExpr(CXXConstructExpr *E) { if (!getDerived().AlwaysRebuild() && T == E->getType() && - FoundDecl == E->getFoundDecl() && Constructor == E->getConstructor() && !ArgumentChanged) { // Mark the constructor as referenced. @@ -9974,7 +9967,7 @@ TreeTransform::TransformCXXConstructExpr(CXXConstructExpr *E) { } return getDerived().RebuildCXXConstructExpr(T, /*FIXME:*/E->getLocStart(), - FoundDecl, Constructor, + Constructor, E->isElidable(), Args, E->hadMultipleCandidates(), E->isListInitialization(), -- 2.40.0