[clang] [llvm] [Clang] C++20 Coroutines: Introduce Frontend Attribute [[clang::coro_await_elidable]] (PR #99282)

Chuanqi Xu via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 7 19:02:50 PDT 2024


================
@@ -848,7 +862,21 @@ ExprResult Sema::BuildUnresolvedCoawaitExpr(SourceLocation Loc, Expr *Operand,
   }
 
   auto *RD = Promise->getType()->getAsCXXRecordDecl();
-  auto *Transformed = Operand;
+  bool InplaceCall =
+      isCoroInplaceCall(Operand) &&
+      isAttributedCoroInplaceTask(
+          getCurFunctionDecl(/*AllowLambda=*/true)->getReturnType());
+
+  if (InplaceCall) {
+    if (auto *Temporary = dyn_cast<CXXBindTemporaryExpr>(Operand)) {
----------------
ChuanqiXu9 wrote:

Maybe it is true, but it still looks better to use `IgnoreImplicit` than the pattern match. I had many unhappy experience with the pattern match on AST

https://github.com/llvm/llvm-project/pull/99282


More information about the llvm-commits mailing list