From: Richard Smith Date: Thu, 12 May 2016 23:45:49 +0000 (+0000) Subject: Preserve the FoundDecl properly in constructor overload resolution. No X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=97124c15be03ebe9c10a9b1f884184c7cc06c22f;p=clang Preserve the FoundDecl properly in constructor overload resolution. No functionality change; this information is not yet in use. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@269382 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Sema/Initialization.h b/include/clang/Sema/Initialization.h index ec04375f13..6ae20f1291 100644 --- a/include/clang/Sema/Initialization.h +++ b/include/clang/Sema/Initialization.h @@ -1046,8 +1046,8 @@ public: /// \param FromInitList The constructor call is syntactically an initializer /// list. /// \param AsInitList The constructor is called as an init list constructor. - void AddConstructorInitializationStep(CXXConstructorDecl *Constructor, - AccessSpecifier Access, + void AddConstructorInitializationStep(DeclAccessPair FoundDecl, + CXXConstructorDecl *Constructor, QualType T, bool HadMultipleCandidates, bool FromInitList, bool AsInitList); diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp index 5b82cb97b5..3563bf7b18 100644 --- a/lib/Sema/SemaInit.cpp +++ b/lib/Sema/SemaInit.cpp @@ -3224,13 +3224,9 @@ void InitializationSequence::AddListInitializationStep(QualType T) { Steps.push_back(S); } -void -InitializationSequence -::AddConstructorInitializationStep(CXXConstructorDecl *Constructor, - AccessSpecifier Access, - QualType T, - bool HadMultipleCandidates, - bool FromInitList, bool AsInitList) { +void InitializationSequence::AddConstructorInitializationStep( + DeclAccessPair FoundDecl, CXXConstructorDecl *Constructor, QualType T, + bool HadMultipleCandidates, bool FromInitList, bool AsInitList) { Step S; S.Kind = FromInitList ? AsInitList ? SK_StdInitializerListConstructorCall : SK_ConstructorInitializationFromList @@ -3238,7 +3234,7 @@ InitializationSequence S.Type = T; S.Function.HadMultipleCandidates = HadMultipleCandidates; S.Function.Function = Constructor; - S.Function.FoundDecl = DeclAccessPair::make(Constructor, Access); + S.Function.FoundDecl = FoundDecl; Steps.push_back(S); } @@ -3628,7 +3624,7 @@ static void TryConstructorInitialization(Sema &S, // subsumed by the initialization. bool HadMultipleCandidates = (CandidateSet.size() > 1); Sequence.AddConstructorInitializationStep( - CtorDecl, Best->FoundDecl.getAccess(), DestType, HadMultipleCandidates, + Best->FoundDecl, CtorDecl, DestType, HadMultipleCandidates, IsListInit | IsInitListCopy, AsInitializerList); }