= Register spilling
<Register spilling> is a <compiler> technique that keeps some values in <computer memory> when they cannot all remain in the available <processor registers>. Generated stores preserve a value before its register is reused; later loads recover it when needed. This is part of <register allocation>, whose choices affect the number of memory accesses.<The LLVM Target-Independent Code Generator>[Register Allocation: mapping virtual to physical registers and spilling]{ref}
For example, suppose three independently computed values must survive to later instructions, but only two suitable <processor registers> are available. The allocator may store one value in a stack slot, use its register for another value, and reload it before its next use. The best choice depends on <live ranges>, use frequency and instruction constraints; recomputing a cheap value can sometimes avoid the store.
Back to article page