1. A non-transitory computer readable storage medium storing program instructions, wherein the program instructions are executable to: identify a parallel region with cross-iteration dependences within program instructions of a computer program; parallelize the parallel region into a plurality of threads, wherein each of said threads comprises a same set of algorithmic instructions; generate helper thread instructions based at least in part on the algorithmic instructions; insert the helper thread instructions in each of the plurality of threads; insert synchronization instructions in one or more of the plurality of threads, wherein the synchronization instructions are configured to cause execution of the algorithmic instructions of each of the plurality of threads to occur in program order with respect to each other thread of the plurality of threads; determine that a first instruction of the helper thread instructions is dependent upon a second instruction of the helper thread instructions; and set a next output of the second instruction to have a same value as that of a previous output of the second instruction in response to predicting that the second instruction will not be executed.