In preparation for supporting the STDC FENV_ACCESS pragma (and related other pragmas), we need a way to prevent optimizations to libm function calls. To accomplish this, I am adding a new function attribute, strictfp, which tells the optimizer to handle these calls specially. This attribute should behave similarly to the nobuiltin attribute, but it isn't quite as restrictive. In particular, it allows optimizations that would be blocked by nobuiltin as long as the optimization is not related to FP semantics.
Since we don't expect (or want) the front end to maintain knowledge about which functions the optimizer recognizes as LibFuncs, the expectation is that the front end will attach the strictfp attribute to all function calls within any scope where FENV_ACCESS is enabled. This should have no effect for functions that are not FP-related.