[clang] [Clang] Fix a crash when incorrectly calling an explicit object member function template (PR #75913)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Dec 19 01:16:23 PST 2023
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: cor3ntin (cor3ntin)
<details>
<summary>Changes</summary>
Fixes #<!-- -->75732
---
Full diff: https://github.com/llvm/llvm-project/pull/75913.diff
2 Files Affected:
- (modified) clang/lib/Sema/SemaExprMember.cpp (+2)
- (modified) clang/test/SemaCXX/cxx2b-deducing-this.cpp (+10)
``````````diff
diff --git a/clang/lib/Sema/SemaExprMember.cpp b/clang/lib/Sema/SemaExprMember.cpp
index 473eea55bb6b19..0e932a1436d6e0 100644
--- a/clang/lib/Sema/SemaExprMember.cpp
+++ b/clang/lib/Sema/SemaExprMember.cpp
@@ -253,6 +253,8 @@ static void diagnoseInstanceReference(Sema &SemaRef,
SemaRef.Diag(Loc, diag::err_member_call_without_object)
<< Range << /*static*/ 0;
else {
+ if (auto *Tpl = dyn_cast<FunctionTemplateDecl>(Rep))
+ Rep = Tpl->getTemplatedDecl();
const auto *Callee = dyn_cast<CXXMethodDecl>(Rep);
auto Diag = SemaRef.Diag(Loc, diag::err_member_call_without_object)
<< Range << Callee->isExplicitObjectMemberFunction();
diff --git a/clang/test/SemaCXX/cxx2b-deducing-this.cpp b/clang/test/SemaCXX/cxx2b-deducing-this.cpp
index 0033541fa322dc..aab35828096a8e 100644
--- a/clang/test/SemaCXX/cxx2b-deducing-this.cpp
+++ b/clang/test/SemaCXX/cxx2b-deducing-this.cpp
@@ -626,3 +626,13 @@ void test() {
}
}
+
+
+namespace GH75732 {
+auto serialize(auto&& archive, auto&& c){ }
+struct D {
+ auto serialize(this auto&& self, auto&& archive) {
+ serialize(archive, self); // expected-error {{call to explicit member function without an object argument}}
+ }
+};
+}
``````````
</details>
https://github.com/llvm/llvm-project/pull/75913
More information about the cfe-commits
mailing list