Date: Wed, 4 Jan 2017 22:25:26 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r311330 - in vendor/clang/dist: include/clang/Basic include/clang/Sema lib/Sema test/SemaCXX Message-ID: <201701042225.v04MPQQV026918@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Wed Jan 4 22:25:26 2017 New Revision: 311330 URL: https://svnweb.freebsd.org/changeset/base/311330 Log: Vendor import of clang trunk r291015: https://llvm.org/svn/llvm-project/cfe/trunk@291015 Modified: vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td vendor/clang/dist/include/clang/Sema/Sema.h vendor/clang/dist/include/clang/Sema/TemplateDeduction.h vendor/clang/dist/lib/Sema/SemaOverload.cpp vendor/clang/dist/lib/Sema/SemaTemplateDeduction.cpp vendor/clang/dist/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp Modified: vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td ============================================================================== --- vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td Wed Jan 4 22:25:21 2017 (r311329) +++ vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td Wed Jan 4 22:25:26 2017 (r311330) @@ -3375,9 +3375,6 @@ def err_addrof_function_disabled_by_enab "non-tautological enable_if conditions">; def note_addrof_ovl_candidate_disabled_by_enable_if_attr : Note< "candidate function made ineligible by enable_if">; -def note_ovl_candidate_failed_overload_resolution : Note< - "candidate template ignored: couldn't resolve reference to overloaded " - "function %0">; def note_ovl_candidate_deduced_mismatch : Note< "candidate template ignored: deduced type " "%diff{$ of %ordinal0 parameter does not match adjusted type $ of argument" Modified: vendor/clang/dist/include/clang/Sema/Sema.h ============================================================================== --- vendor/clang/dist/include/clang/Sema/Sema.h Wed Jan 4 22:25:21 2017 (r311329) +++ vendor/clang/dist/include/clang/Sema/Sema.h Wed Jan 4 22:25:26 2017 (r311330) @@ -6576,9 +6576,6 @@ public: /// \brief The explicitly-specified template arguments were not valid /// template arguments for the given template. TDK_InvalidExplicitArguments, - /// \brief The arguments included an overloaded function name that could - /// not be resolved to a suitable function. - TDK_FailedOverloadResolution, /// \brief Deduction failed; that's all we know. TDK_MiscellaneousDeductionFailure, /// \brief CUDA Target attributes do not match. Modified: vendor/clang/dist/include/clang/Sema/TemplateDeduction.h ============================================================================== --- vendor/clang/dist/include/clang/Sema/TemplateDeduction.h Wed Jan 4 22:25:21 2017 (r311329) +++ vendor/clang/dist/include/clang/Sema/TemplateDeduction.h Wed Jan 4 22:25:26 2017 (r311330) @@ -53,7 +53,7 @@ class TemplateDeductionInfo { public: TemplateDeductionInfo(SourceLocation Loc, unsigned DeducedDepth = 0) : Deduced(nullptr), Loc(Loc), HasSFINAEDiagnostic(false), - DeducedDepth(DeducedDepth), Expression(nullptr) {} + DeducedDepth(DeducedDepth), CallArgIndex(0) {} /// \brief Returns the location at which template argument is /// occurring. @@ -175,21 +175,12 @@ public: /// FIXME: Finish documenting this. TemplateArgument SecondArg; - union { - /// \brief The expression which caused a deduction failure. - /// - /// TDK_FailedOverloadResolution: this argument is the reference to - /// an overloaded function which could not be resolved to a specific - /// function. - Expr *Expression; - - /// \brief The index of the function argument that caused a deduction - /// failure. - /// - /// TDK_DeducedMismatch: this is the index of the argument that had a - /// different argument type from its substituted parameter type. - unsigned CallArgIndex; - }; + /// \brief The index of the function argument that caused a deduction + /// failure. + /// + /// TDK_DeducedMismatch: this is the index of the argument that had a + /// different argument type from its substituted parameter type. + unsigned CallArgIndex; /// \brief Information on packs that we're currently expanding. /// @@ -235,10 +226,6 @@ struct DeductionFailureInfo { /// refers to, if any. const TemplateArgument *getSecondArg(); - /// \brief Return the expression this deduction failure refers to, - /// if any. - Expr *getExpr(); - /// \brief Return the index of the call argument that this deduction /// failure refers to, if any. llvm::Optional<unsigned> getCallArgIndex(); Modified: vendor/clang/dist/lib/Sema/SemaOverload.cpp ============================================================================== --- vendor/clang/dist/lib/Sema/SemaOverload.cpp Wed Jan 4 22:25:21 2017 (r311329) +++ vendor/clang/dist/lib/Sema/SemaOverload.cpp Wed Jan 4 22:25:26 2017 (r311330) @@ -644,10 +644,6 @@ clang::MakeDeductionFailureInfo(ASTConte Result.HasDiagnostic = true; } break; - - case Sema::TDK_FailedOverloadResolution: - Result.Data = Info.Expression; - break; } return Result; @@ -662,7 +658,6 @@ void DeductionFailureInfo::Destroy() { case Sema::TDK_TooManyArguments: case Sema::TDK_TooFewArguments: case Sema::TDK_InvalidExplicitArguments: - case Sema::TDK_FailedOverloadResolution: case Sema::TDK_CUDATargetMismatch: break; @@ -705,7 +700,6 @@ TemplateParameter DeductionFailureInfo:: case Sema::TDK_SubstitutionFailure: case Sema::TDK_DeducedMismatch: case Sema::TDK_NonDeducedMismatch: - case Sema::TDK_FailedOverloadResolution: case Sema::TDK_CUDATargetMismatch: return TemplateParameter(); @@ -737,7 +731,6 @@ TemplateArgumentList *DeductionFailureIn case Sema::TDK_Inconsistent: case Sema::TDK_Underqualified: case Sema::TDK_NonDeducedMismatch: - case Sema::TDK_FailedOverloadResolution: case Sema::TDK_CUDATargetMismatch: return nullptr; @@ -765,7 +758,6 @@ const TemplateArgument *DeductionFailure case Sema::TDK_TooFewArguments: case Sema::TDK_InvalidExplicitArguments: case Sema::TDK_SubstitutionFailure: - case Sema::TDK_FailedOverloadResolution: case Sema::TDK_CUDATargetMismatch: return nullptr; @@ -793,7 +785,6 @@ const TemplateArgument *DeductionFailure case Sema::TDK_TooFewArguments: case Sema::TDK_InvalidExplicitArguments: case Sema::TDK_SubstitutionFailure: - case Sema::TDK_FailedOverloadResolution: case Sema::TDK_CUDATargetMismatch: return nullptr; @@ -811,14 +802,6 @@ const TemplateArgument *DeductionFailure return nullptr; } -Expr *DeductionFailureInfo::getExpr() { - if (static_cast<Sema::TemplateDeductionResult>(Result) == - Sema::TDK_FailedOverloadResolution) - return static_cast<Expr*>(Data); - - return nullptr; -} - llvm::Optional<unsigned> DeductionFailureInfo::getCallArgIndex() { if (static_cast<Sema::TemplateDeductionResult>(Result) == Sema::TDK_DeducedMismatch) @@ -9699,14 +9682,6 @@ static void DiagnoseBadDeduction(Sema &S return; } - case Sema::TDK_FailedOverloadResolution: { - OverloadExpr::FindResult R = OverloadExpr::find(DeductionFailure.getExpr()); - S.Diag(Templated->getLocation(), - diag::note_ovl_candidate_failed_overload_resolution) - << R.Expression->getName(); - return; - } - case Sema::TDK_DeducedMismatch: { // Format the template argument list into the argument string. SmallString<128> TemplateArgString; @@ -10043,7 +10018,6 @@ static unsigned RankDeductionFailure(con return 3; case Sema::TDK_InstantiationDepth: - case Sema::TDK_FailedOverloadResolution: return 4; case Sema::TDK_InvalidExplicitArguments: Modified: vendor/clang/dist/lib/Sema/SemaTemplateDeduction.cpp ============================================================================== --- vendor/clang/dist/lib/Sema/SemaTemplateDeduction.cpp Wed Jan 4 22:25:21 2017 (r311329) +++ vendor/clang/dist/lib/Sema/SemaTemplateDeduction.cpp Wed Jan 4 22:25:26 2017 (r311330) @@ -3279,10 +3279,9 @@ DeduceTemplateArgumentByListElement(Sema // For all other cases, just match by type. QualType ArgType = Arg->getType(); if (AdjustFunctionParmAndArgTypesForDeduction(S, TemplateParams, ParamType, - ArgType, Arg, TDF)) { - Info.Expression = Arg; - return Sema::TDK_FailedOverloadResolution; - } + ArgType, Arg, TDF)) + return Sema::TDK_Success; + return DeduceTemplateArgumentsByTypeMatch(S, TemplateParams, ParamType, ArgType, Info, Deduced, TDF); } Modified: vendor/clang/dist/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp ============================================================================== --- vendor/clang/dist/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp Wed Jan 4 22:25:21 2017 (r311329) +++ vendor/clang/dist/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp Wed Jan 4 22:25:26 2017 (r311330) @@ -220,10 +220,14 @@ namespace initlist_of_array { namespace init_list_deduction_failure { void f(); void f(int); + // FIXME: It'd be nice to track that 'T' became a non-deduced context due to + // overload resolution failure for 'f'. template<typename T> void g(std::initializer_list<T>); - // expected-note@-1 {{candidate template ignored: couldn't resolve reference to overloaded function 'f'}} - void h() { g({f}); } - // expected-error@-1 {{no matching function for call to 'g'}} + // expected-note@-1 {{candidate template ignored: couldn't infer template argument 'T'}} + void h() { + g({f}); // expected-error {{no matching function for call to 'g'}} + g({f, h}); // ok + } } namespace deleted_copy {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201701042225.v04MPQQV026918>