If a square root call has an FP multiplication argument that can be reassociated,

then we can hoist a repeated factor out of the square root call and into a fabs().

In the simplest case, this:

y = sqrt(x * x);

becomes this:

y = fabs(x);

This patch relies on an earlier optimization in instcombine or reassociate to put the

multiplication tree into a canonical form, so we don't have to search over

every permutation of the multiplication tree.