[RFC] Honor pragmas with -ffp-contract=fast

Having looked more closely at what’s happening in a few backends, I have to admit that this isn’t as simple as I thought to just switch in clang. The x86 backend is more or less relying on the target-independent DAGCombiner creating FMA nodes (plus an X86-specific pass). The Aarch64 backend has some pattern matchers that are using the node-based fast-math flags properly. Then NVPTX backend has a lot of pattern matching that is based (for both FMA enabled and FMA disabled) on the state of the global flag. The result is that x86 and Aarch64 still generate FMA with the change I am proposing, but NVPTX doesn’t.

I haven’t looked closely at any other backends, but I think Aarch64 is doing it correctly, and I don’t think any other backend is doing that in the SelectionDAG pattern matching. I don’t know what the state of this is with GlobalISel, but I’ve seen enough to convince me that I need to back off of my request for the clang stuff and instead push for the backends to start respecting what the IR tells them.