I am trying to untangle the fast-math-flags propagation logic in the vectorizers (see a6f022127 for SLP).
The loop vectorizer has a mix of checking FP function attributes, IR-level FMF, and just wrong assumptions.
I am trying to avoid regressions while fixing this, and I think the IR-level logic is good enough for that, but it's hard to say for sure. This would be the 1st step in the clean-up.
The existing test that I changed to include 'fast' actually shows a miscompile: the function only had the equivalent of nnan, but we created new instructions that had fast (all FMF set). This is similar to the example in https://llvm.org/PR35538