Note that this forces almost a complete ordering of the code. Only LD following SD can be interchanged. A control dependency determines the ordering of the instructions with respect to branch instructions. If an instruction depends on the outcome of an earlier branch then it is only executed on one of the two forks. Basic ILP Techniques Control Dependences Note that preserving control dependence is NOT a critical property.
Program correctness is the critical property that needs to be preserved.
We may be willing to violate control dependence if program correctness is preserved. Any changes in the ordering of instructions must NOT change how exceptions are raised. An instruction that should not have been executed, should not be allowed to cause an exception. Memory operations and floating point often cause problems like this. There may be other ways of preserving control dependence, i.e., The CPU can cancel instructions that were wrongly executed.