← board

By-value record args >8 bytes truncate (and operator operand edges)

Symptom

The record-by-value argument-passing path mishandles records larger than a machine word, and operator operands in a few shapes:

Why grouped

All three are the record-by-value argument path, distinct from the operator result path fixed in bug-operator-result-inferred-var (2cf92fb). The 8-byte direct result case works; these need records passed by reference (with a callee copy when by-value semantics are required).

Scope

Acceptance

add3(p,q) (12-byte by-value), const-param operators, and a + b + a all produce correct results; self-host fixedpoint holds. Extend test/test_op_record_result.pas with the >8-byte and chained cases (currently omitted with a note).

Log