This is my work-in-progress code for threading fneg from the IRBuilder on through the optimization passes. It isn't in shape to commit, but perhaps should be seen for discussion on direction at least.
At least some of the optimization passes use the IRBuilder, so adding FNeg there means the optimization passes must be changed in concert. Otherwise code quality is affected.
Currently some of the tests are still failing because the Reassociate pass doesn't know how to deal with a unary instruction. I don't know what comes after that is fixed.
We should also do:
-undef -> undef