llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Aman Maurya (amanmaurya92)

<details>
<summary>Changes</summary>

Implement support for evaluating `co_await` and `co_yield` expressions whose 
result is an aggregate type in `AggExprEmitter`.

### Summary of Changes:
1. **`AggExprEmitter`**:
   - Implement `VisitCoawaitExpr` and `VisitCoyieldExpr` by delegating to 
`emitCoawaitExpr` and `emitCoyieldExpr` with the destination `AggValueSlot`.
   - Implement `VisitUnaryCoawait` by visiting the subexpression, matching 
classic Clang (`CGExprAgg.cpp`).
2. **`CIRGenCoroutine.cpp`**:
   - In `emitSuspendExpression`: Omit the scalar/complex 
`__coawait_resume_rval` temporary alloca for aggregate return values, as the 
aggregate is emitted directly into `aggSlot`.
   - In `emitSuspendExpr`: Remove the `emitSuspendExpr Aggregate` NYI assertion 
left as a TODO in #<!-- -->194027, return `rval` directly, and defensively 
instantiate an aggregate temporary slot when `aggSlot.isIgnored()`.
3. **Tests**:
   - Add `clang/test/CIR/CodeGenCoroutines/coro-agg.cpp` covering used and 
unused results for aggregate `co_await` and `co_yield`.

Fixes #<!-- -->225317
Resolves Row 11 in the August 2026 ClangIR Progress Report.

---
Full diff: https://github.com/llvm/llvm-project/pull/225412.diff


3 Files Affected:

- (modified) clang/lib/CIR/CodeGen/CIRGenCoroutine.cpp (+18-19) 
- (modified) clang/lib/CIR/CodeGen/CIRGenExprAggregate.cpp (+3-5) 
- (added) clang/test/CIR/CodeGenCoroutines/coro-agg.cpp (+72) 


``````````diff
The server is unavailable at this time. Please wait a few minutes before you 
try again.
``````````

</details>


https://github.com/llvm/llvm-project/pull/225412
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to