A writeonly call behaves like a readnone call that also contains a store
to a global determined by the call arguments. This means we can remove
duplicated calls if there are no intervening stores.
This only works if MemorySSA is enabled as we use it to check if there
are conflicting memory accesses.
With this change CSE can handle things like "cos(x)+cos(x) => 2*cos(x)"
even with -fmath-errno.
Based on D48388 by Brian Homerding!
It might be good to throw in calls with matching and differing arguments?