https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71921
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|tree-optimization |libstdc++ --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The problem is: _7 = _5 < 0.0 ? 0.0 : _5; Is not converted into MAX_EXPR which it does with -ffast-math (and you get the vectorized version with maxps). The question now becomes should: template<typename _Tp> _GLIBCXX14_CONSTEXPR inline const _Tp& max(const _Tp& __a, const _Tp& __b) { // concept requirements __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) //return __a < __b ? __b : __a; if (__a < __b) return __b; return __a; } Be <= or < ? Then this becomes a libstdc++ question :).