https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71311
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- It's rhfuhf.F:ROFOCK. Disabling vectorization fixes it. One notable difference before vectorization MIN/MAX recognition caused by missing swapped comparison handling in /* Transform (@0 < @1 and @0 < @2) to use min, (@0 > @1 and @0 > @2) to use max */ (for op (lt le gt ge) ext (min min max max) (simplify (bit_and (op:s @0 @1) (op:s @0 @2)) (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))) (op @0 (ext @1 @2))))) we'd need to add /* Transform (@1 < @0 and @2 < @0) to use min, (@1 > @0 and @2 > @0) to use max */ (for op (lt le gt ge) ext (max max min min) (simplify (bit_and (op:s @1 @0) (op:s @2 @0)) (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))) (op (ext @1 @2) @0)))) plus a case for the operand order with @1 @0 @0 @2 (and adding :c to the bit_and). Adding the above "fixes" gamess, making the issue latent again.