https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71921
Marc Glisse <glisse at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|libstdc++ |tree-optimization --- Comment #3 from Marc Glisse <glisse at gcc dot gnu.org> --- That's not a libstdc++ issue, more likely tree-optimization, rtl-optimization or target. The compiler already notices that the if/return construct is equivalent to the ?: one (ifcvt). And the loop is vectorized (cmpltps+andnps). Now gimple passes and the target (or some RTL pass) don't seem to agree on when it is safe to replace ?: with MAX (or maybe the target is inconsistent between scalars and vectors).