pub enum Growing {
Huge,
Aligned,
}Expand description
What the frame could not do about a stack slot.
Variants§
Huge
An object of a size the number a frame counts bytes in does not reach.
Aligned
A variable length array wanting more alignment than a call leaves the stack pointer with.
Rounding the stack pointer down again after the bytes have been taken would put it somewhere no constant reaches the rest of the frame from, so a frame like this needs a second base register held for the whole of the function. Nothing here holds one.
crate::expand::rounds takes the array away before this sees it, by asking for the
alignment in extra bytes and handing out an address inside them, so what is left of this
is IR that arrived without going through that pass and the fixed local in
crate::pipeline that wants the same thing from the other side.