If these prove to be invalid, then the portions of the speculative thread that rely on these input variables will need to be discarded and squashed.
If the assumptions are correct the program can complete in a shorter time provided the thread was able to be scheduled efficiently.
The speculative thread will need to be discarded or re-run if its presumptions on the input state prove to be invalid.
[2] TLS assumes optimistically that a given portion of code (generally loops) can be safely executed in parallel.
If a dependence violation appears, the speculative framework may choose to stop the entire parallel execution and restart it; to stop and restart the offending threads and all their successors, in order to be fed with correct data; or to stop exclusively the offending thread and its successors that have consumed incorrect data from it.