For (X op Y) op Z --> (Y op Z) op X
we can still do transform when Y is multi-use. In D131356
limit it to one-use, this patch remove this limit.
This is still not a complete solution, I add a todo test to show it.
In this case, X and Y are both multi use, we can't differentiate how to convert based on this.
But, At least the branch we added won't make the code worse,and it solves half the scenarios
m_BinOp is enough?