[clang] [CIR] Implement Direct+canFlatten in CallConvLowering (PR #201719)

via cfe-commits cfe-commits at lists.llvm.org
Thu Jun 25 16:46:53 PDT 2026


adams381 wrote:

Reopened and rebased onto main. #201718 (the Expand base) landed, and the squash-merge deleted this PR's base branch, which auto-closed it.

The flatten logic is unchanged from the last review round: the callee reassembles the N scalar block args into the coerced struct and coerces back to the original type, and the call site reads each field from the coerce slot with cir.get_member + cir.load (the emitCoercionToMemory change you asked for on the Jun 10 threads) rather than extracting from a whole loaded value.

Replaying onto the now-merged Expand code took two mechanical adaptations. The AllocaOp create signature changed on current main, and the Ignore-drop loop's running block-argument index now advances by the flattened field count for canFlatten args, the same way it already does for Expand.

@andykaylor back up for review.


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


More information about the cfe-commits mailing list