We currently have strict floating point/constrained floating point enabled for all targets. Constrained SDAG nodes get converted to the regular ones before reaching the target layer. In theory this should be fine.
However, the changes are exposed to users through multiple clang options already in use in the field, and the changes are _completely_ _untested_ on almost all of our targets. Bugs have already been found, like "https://bugs.llvm.org/show_bug.cgi?id=45274".
This patch disables constrained floating point options in clang everywhere except X86 and SystemZ. A warning will be printed when this happens.
A bit late to the party, but can you mark this as MarshallingInfoFlag<"LangOpts->ExpStrictFP", "false> so that if (Args.hasArg(OPT_fexperimental_strict_floating_point)) Opts.ExpStrictFP = true; in CompilerInvocation.cpp gets generated automatically, we also get serializing the option for free this way.