Hi, On 21/6/2022 上午 7:08, Segher Boessenkool wrote: > && !flag_trapping_math > > and/or whatever else is needed as well here. > I have a question here. fmin/max are folded to MIN/MAX_EXPR when flag_finite_math_only is set. Seems no-trapping-math is no need to fmin/max? Also xs[min|max]dp do raise trapping.
/* Convert fmin/fmax to MIN_EXPR/MAX_EXPR. C99 requires these functions to return the numeric arg if the other one is NaN. MIN and MAX don't honor that, so only transform if -ffinite-math-only is set. C99 doesn't require -0.0 to be handled, so we don't have to worry about it either. */ (if (flag_finite_math_only) (simplify (FMIN_ALL @0 @1) (min @0 @1)) (simplify (FMAX_ALL @0 @1) (max @0 @1))) > Are things like > fmin(4.0, 2.0); > (still) optimised correctly? I have tested it. fmin(4.0, 2.0) is converted to "2.0" in front end. So my patch doesn't touch it. Thanks a lot. Gui Haochen