Fix "Invalid operator call kind" error (llvm_unreachable) in
DecodeOperatorCall when profiling a dependent co_await.
Patch by Victor Zverovich!
Differential Revision: https://reviews.llvm.org/D50002
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@338343
91177308-0d34-0410-b5e6-
96231b3b80d8
case OO_Arrow:
case OO_Call:
case OO_Conditional:
- case OO_Coawait:
case NUM_OVERLOADED_OPERATORS:
llvm_unreachable("Invalid operator call kind");
case OO_Subscript:
return Stmt::ArraySubscriptExprClass;
+
+ case OO_Coawait:
+ UnaryOp = UO_Coawait;
+ return Stmt::UnaryOperatorClass;
}
llvm_unreachable("Invalid overloaded operator expression");
co_return x; // checks coreturn_stmt with expr
}
+struct S {};
+S operator co_await(S) { return S(); }
+
+template <typename T>
+int f3(T x) {
+ co_await x; // checks dependent_coawait with overloaded co_await operator
+}
+
#else
// expected-no-diagnostics