Author: Dmitry Chernenkov Date: 2023-10-18T14:13:48Z New Revision: a3a0f59a1e1cb0ac02f06b19f730ea05a6541c96
URL: https://github.com/llvm/llvm-project/commit/a3a0f59a1e1cb0ac02f06b19f730ea05a6541c96 DIFF: https://github.com/llvm/llvm-project/commit/a3a0f59a1e1cb0ac02f06b19f730ea05a6541c96.diff LOG: Revert "Correctly compute conversion seq for args to fn with reversed param order (#68999)" This reverts commit e6d0b126c824222fca2f31a2ba571c2ee2bb4760. See PR for reason https://github.com/llvm/llvm-project/pull/68999#issuecomment-1768541660 Added: Modified: clang/docs/ReleaseNotes.rst clang/lib/Sema/SemaOverload.cpp clang/test/CXX/over/over.match/over.match.funcs/over.match.oper/p3-2a.cpp Removed: ################################################################################ diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 443325bb0d1e17d..81cbfd90155fe0b 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -117,8 +117,6 @@ C++ Language Changes C++20 Feature Support ^^^^^^^^^^^^^^^^^^^^^ -- Fix a bug in conversion sequence of arguments to a function with reversed parameter order. - Fixes `GH <https://github.com/llvm/llvm-project/issues/53954>`_. C++23 Feature Support ^^^^^^^^^^^^^^^^^^^^^ diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index c271cebb9eb638f..ce78994e6553814 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -7688,7 +7688,7 @@ bool Sema::CheckNonDependentConversions( QualType ParamType = ParamTypes[I + Offset]; if (!ParamType->isDependentType()) { unsigned ConvIdx = PO == OverloadCandidateParamOrder::Reversed - ? Args.size() - 1 - (ThisConversions + I) + ? 0 : (ThisConversions + I); Conversions[ConvIdx] = TryCopyInitialization(*this, Args[I], ParamType, diff --git a/clang/test/CXX/over/over.match/over.match.funcs/over.match.oper/p3-2a.cpp b/clang/test/CXX/over/over.match/over.match.funcs/over.match.oper/p3-2a.cpp index 02fe37dc1be5058..5c6804eb7726b5f 100644 --- a/clang/test/CXX/over/over.match/over.match.funcs/over.match.oper/p3-2a.cpp +++ b/clang/test/CXX/over/over.match/over.match.funcs/over.match.oper/p3-2a.cpp @@ -324,41 +324,6 @@ bool x = X() == X(); // expected-warning {{ambiguous}} } } // namespace P2468R2 -namespace GH53954{ -namespace test1 { -struct P { - template <class T> - friend bool operator==(const P&, const T&); // expected-note {{candidate}} \ - // expected-note {{reversed parameter order}} -}; -struct A : public P {}; -struct B : public P {}; -bool check(A a, B b) { return a == b; } // expected-error {{ '==' is ambiguous}} -} - -namespace test2 { -struct P { - template <class T> - friend bool operator==(const T&, const P&); // expected-note {{candidate}} \ - // expected-note {{reversed parameter order}} -}; -struct A : public P {}; -struct B : public P {}; -bool check(A a, B b) { return a == b; } // expected-error {{ '==' is ambiguous}} -} - -namespace test3 { -struct P { - template<class S> - bool operator==(const S &) const; // expected-note {{candidate}} \ - // expected-note {{reversed parameter order}} -}; -struct A : public P {}; -struct B : public P {}; -bool check(A a, B b) { return a == b; } // expected-error {{ '==' is ambiguous}} -} -} - #else // NO_ERRORS namespace problem_cases { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits