expert
A value that was still needed, in a register that was reused
A backend gained a peephole pass that rewrites `mul r, r, 2` into `add r, r, r`. Benchmarks improved. One test in the checksum suite started failing, but only when the function is large enough that the allocator runs out of registers.
The symptom
A checksum function returns a value that is wrong by exactly the contribution of one term. The IR is correct, the SSA is correct, and the optimized IR is correct. Only the assembly is wrong, and only above about forty live values.
Commit first
The IR is right and the assembly is wrong, so the fault is in the backend. That is not enough: the backend has at least three phases that can produce this. Name which one, and name the specific piece of information it must have been working from when it made the decision.