Rollup merge of #142383 - scottmcm:operandref-builder, r=workingjubilee

CodeGen: rework Aggregate implemention for rvalue_creates_operand cases

A non-trivial refactor pulled out from rust-lang/rust#138759
r? workingjubilee

The previous implementation I'd written here based on `index_by_increasing_offset` is complicated to follow and difficult to extend to non-structs.

This changes the implementation, without actually changing any codegen (thus no test changes either), to be more like the existing `extract_field` (<2b0274c71d/compiler/rustc_codegen_ssa/src/mir/operand.rs (L345-L425)>) in that it allows setting a particular field directly.

Notably I've found this one much easier to get right, in particular because having the `OperandRef<Result<V, Scalar>>` gives a really useful thing to include in ICE messages if something did happen to go wrong.
This commit is contained in:
Jakub Beránek 2025-06-18 18:06:50 +02:00 committed by GitHub
commit 9b8e0a94f6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

Diff Content Not Available