https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91096
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Wilco from comment #3) > But why does it always add a redundant test with FLT_MAX in the loop? Which loop do you mean? If the vectorized one, OpenMP has rules on what needs to be done, at the start of the input phase the privatized variable needs to be initialized using the reduction initializer (for max reduction that is the neutral element for max, -inf when honoring infinities, otherwise most negative finite value), then perform the body of the input phase, and then at the start of the scan phase set the privatized variable to the current prefix sum of the reduction. I'm not using -inf for -ffast-math, because -ffinite-math-only assumes the operands aren't infinities nor nans.