[clang] 48c988c - [Clang] Only non-overloaded dereference expressions are lvalues (#93457)

via cfe-commits cfe-commits at lists.llvm.org
Mon May 27 08:46:05 PDT 2024


Author: cor3ntin
Date: 2024-05-27T17:46:01+02:00
New Revision: 48c988cfcbb25243700178bad43d106ae7ef2cb4

URL: https://github.com/llvm/llvm-project/commit/48c988cfcbb25243700178bad43d106ae7ef2cb4
DIFF: https://github.com/llvm/llvm-project/commit/48c988cfcbb25243700178bad43d106ae7ef2cb4.diff

LOG: [Clang] Only non-overloaded dereference expressions  are lvalues (#93457)

Fix a regression introduced by #88740

Fixes #92275

Added: 
    

Modified: 
    clang/lib/Sema/SemaOverload.cpp
    clang/test/SemaCXX/overloaded-operator.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp
index c38164b7652f2..6c5e8afbcfb6e 100644
--- a/clang/lib/Sema/SemaOverload.cpp
+++ b/clang/lib/Sema/SemaOverload.cpp
@@ -14363,7 +14363,7 @@ Sema::CreateOverloadedUnaryOp(SourceLocation OpLoc, UnaryOperatorKind Opc,
     if (Fn.isInvalid())
       return ExprError();
     return CXXOperatorCallExpr::Create(Context, Op, Fn.get(), ArgsArray,
-                                       Context.DependentTy, VK, OpLoc,
+                                       Context.DependentTy, VK_PRValue, OpLoc,
                                        CurFPFeatureOverrides());
   }
 

diff  --git a/clang/test/SemaCXX/overloaded-operator.cpp b/clang/test/SemaCXX/overloaded-operator.cpp
index cab21d67a002f..0701a96d5d0ce 100644
--- a/clang/test/SemaCXX/overloaded-operator.cpp
+++ b/clang/test/SemaCXX/overloaded-operator.cpp
@@ -691,4 +691,15 @@ template <auto T> A<*T> operator *() { return {}; }
 // expected-error at -1 {{overloaded 'operator*' must have at least one parameter of class or enumeration type}}
 }
 
+namespace GH92275 {
+
+template <auto v>
+struct constant{};
+
+template <auto x>
+auto operator *(constant<x>)
+{ return constant<(*x)>{}; }
+
+}
+
 #endif


        


More information about the cfe-commits mailing list