]> granicus.if.org Git - clang/commitdiff
Remove CXXConstructExpr::getFoundDecl(); it turned out to not be useful.
authorRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 10 Jun 2016 00:58:19 +0000 (00:58 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 10 Jun 2016 00:58:19 +0000 (00:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272357 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/ExprCXX.h
include/clang/Sema/Sema.h
lib/AST/ASTImporter.cpp
lib/AST/ExprCXX.cpp
lib/CodeGen/CGObjC.cpp
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaInit.cpp
lib/Sema/TreeTransform.h

index 41b6758bdc71076f3f3d484afc1850558f86d8cc..700cc4857185fb4069bca34a94671151388e137a 100644 (file)
@@ -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<Expr *> 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<Expr *> 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<Expr *> Args,
index 62f37fda52d35b029d21100cf557e219b1cb1200..9583dd5b268e45f6d52b5c3ad03d1da92eb9ce5f 100644 (file)
@@ -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
index 60f001009ac53aac9260142207e1167e71553987..05f96fd4328c844fd7f7080e4e375c879c1c6f20 100644 (file)
@@ -5796,11 +5796,6 @@ Expr *ASTNodeImporter::VisitCXXConstructExpr(CXXConstructExpr *E) {
   if (T.isNull())
     return nullptr;
 
-  NamedDecl *ToFound =
-    dyn_cast_or_null<NamedDecl>(Importer.Import(E->getFoundDecl()));
-  if (!ToFound)
-    return nullptr;
-
   CXXConstructorDecl *ToCCD =
     dyn_cast_or_null<CXXConstructorDecl>(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(),
index dbfe58c8b3d094fe96dde16325253253f011b3c5..09401b704e24c15efa2753da28d0be37424a4975 100644 (file)
@@ -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<Expr*> 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<Expr*> 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<Expr*> 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()];
     
index 5aa549b8a966d89079c3ed09f4f17794b8cd326f..db894ce67470cca71ad8c68a7889146213d74838 100644 (file)
@@ -3312,7 +3312,6 @@ CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction(
 
   CXXConstructExpr *TheCXXConstructExpr =
     CXXConstructExpr::Create(C, Ty, SourceLocation(),
-                             CXXConstExpr->getFoundDecl(),
                              CXXConstExpr->getConstructor(),
                              CXXConstExpr->isElidable(),
                              ConstructorArgs,
index 1ab3fb2ab86590978e201a2c8e94f3538312976f..36d0f345319b9a26569cc8cc8e64249b26070a50 100644 (file)
@@ -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<CXXConstructExpr::ConstructionKind>(ConstructKind),
index c162007349ca21f24ae51eb7d093d6da3cae8d77..a35069d564672019c3fde30cbd0a871f2381f1e4 100644 (file)
@@ -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);
index 38c4fd69f6aa18cd2f6d5bfc0bc7a738b65b2f7b..bba90191019c715559a0f8256fec578a254f486b 100644 (file)
@@ -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<Derived>::TransformCXXConstructExpr(CXXConstructExpr *E) {
   if (T.isNull())
     return ExprError();
 
-  NamedDecl *FoundDecl = cast_or_null<NamedDecl>(
-      getDerived().TransformDecl(E->getLocStart(), E->getFoundDecl()));
-  if (!FoundDecl)
-    return ExprError();
-
   CXXConstructorDecl *Constructor
     = cast_or_null<CXXConstructorDecl>(
                                 getDerived().TransformDecl(E->getLocStart(),
@@ -9964,7 +9958,6 @@ TreeTransform<Derived>::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<Derived>::TransformCXXConstructExpr(CXXConstructExpr *E) {
   }
 
   return getDerived().RebuildCXXConstructExpr(T, /*FIXME:*/E->getLocStart(),
-                                              FoundDecl, Constructor,
+                                              Constructor,
                                               E->isElidable(), Args,
                                               E->hadMultipleCandidates(),
                                               E->isListInitialization(),