An efficient method for software-pipelining (SWP) of loops to translate
programs, from higher level languages into equivalent object or machine
language code for execution on a computer. In one example embodiment,
this is accomplished by spilling and filling multiple computed values, in
a register, that are live across multiple stages in a software-pipelined
loop, using multiple rotating stack memory locations to reduce
compiler-time of SWP, and complexity of the implemented SWP.