Expand description
Which of its values a declaration holds on the way into each block.
Design: spec/11-asm-objects-debug.md section 11.4.
A local the program writes more than once is behind a value for each write, and two of them can both be live into one block: the value from the last trip round a loop is still read after the one computed on this trip has been written, and both of them are the local. Their stretches then start at the same address and say different things, and nothing in the stretches says which of the two the local is. What does is the order the assignments ran in, which is a question about the program rather than about the registers, so it is asked of the IR before selection.
The answer is the value the last assignment on every path into the block gave the declaration.
An assignment is where a named value was computed, a block parameter a declaration is the value
of, or a start rucc_ir::Func::start_place says is still somewhere. A block whose paths in
disagree, or one no path reaches, has no answer, and the back end reads that as nothing to
choose by rather than as a choice.
Functionsยง
- on_
entry - The value each declaration that has more than one of them holds at the top of each block, where every path in agrees, as the declaration, the block and the value, sorted.