On Tue, Sep 06, 2022 at 09:29:01AM +0200, Aldy Hernandez wrote: > The gfortran.dg/minlocval*.f90 tests are generating conditionals past > the infinities. For example: > > if (x <= +Inf) > foo (x); > else > bar (x); > > It seems to me that the only possible value for x on the false side is > either NAN or undefined (for !HONOR_NANS).
No, none of the ==, <, <=, >, >= comparisons are ever true if one or both operands are NaN (only != will be true in those cases from the standard comparisons, when not counting UNORDERED_EXPR and the likes). So, x < -Inf or x > +Inf are always false, we just can't optimize those away without -ffast-math because they could raise an exception on sNaN. But I think not optimizing such operations away if we care about exceptions is the duty of DCE etc. Jakub