For a loop containing the following diamond structure:
BB#1 / \ BB#2 BB#3 \ / BB#4
If the BranchInst condition in BB#1 relates to the loop induction
variable, and BB#3 and BB#4 both have stores writing to the same
memory location. Then these stores may have implicit loop-carried
order which could be broken after interchanging.
nit: conditions?
I think it would also good to mention why we currently are not actually checking if the condition is IV-dependent. Presumably because it's expensive to find?