[all-commits] [llvm/llvm-project] 122814: [CIR] Implement PredefinedExpr in aggregate emitte...

Bruno Cardoso Lopes via All-commits all-commits at lists.llvm.org
Mon Apr 27 18:09:46 PDT 2026


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 1228142a5d6130657aaefbf22a41ed6c1482c228
      https://github.com/llvm/llvm-project/commit/1228142a5d6130657aaefbf22a41ed6c1482c228
  Author: Bruno Cardoso Lopes <bruno.cardoso at gmail.com>
  Date:   2026-04-27 (Mon, 27 Apr 2026)

  Changed paths:
    M clang/lib/CIR/CodeGen/CIRGenExprAggregate.cpp
    A clang/test/CIR/CodeGen/consteval-aggregate.cpp

  Log Message:
  -----------
  [CIR] Implement PredefinedExpr in aggregate emitter and add consteval… (#194484)

… aggregate test

Handle PredefinedExpr by delegating to emitAggLoadOfLValue, removing the
NYI fallback. Also add a test for ConstantExpr aggregate emission
(consteval functions returning structs), which was already implemented
but lacked test coverage.

This unblocks ~206 libcxx test failures that involve aggregate
ConstantExpr and PredefinedExpr.

Note on LLVM IR divergence (will be addressed in follow-up PRs): For
consteval functions returning aggregates, CIR currently emits a global
constant + cir.copy that lowers to llvm.memcpy from the global, while
OGCG decomposes the constant into per-field stores. The added CIR / LLVM
/ OGCG CHECK lines in consteval-aggregate.cpp document this difference.
Convergence will come from a follow-up that decomposes the consteval
aggregate stores into per-field stores in LoweringPrepare (and related
GEP-index handling for padded structs).



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list