1. A method comprising: initializing to false a predicate that guards a speculative instruction in a software-pipelined loop; executing at least one iteration of the software-pipelined loop, including an instruction that sets the predicate to true if an associated live-in value is consumed; and executing the speculative instruction in subsequent iterations of the software-pipelined loop.