Hi,

(Do you really need to post to gcc@, fortran@ and gcc-patches@?

Shouldn't be one of the list sufficient – like fortran@?)

On 2/28/20 6:02 AM, Jiufu Guo wrote:

> When I check a PR93709, I find the testcase maxlocval_4.f90 […]

> With -ffast-math -O3, this case `STOP 3` on a few platforms, e.g. ppc64le/x86.

To my knowledge, this test case is never be run with -ffast-math;

for sure, it is not run with that option on my x86-64-gnu-linux system.

Given that it uses NaN and INF, it is also not suitable for -ffast-math

(cf. below) – and probably no one has tested or intended to run it with

-ffast-math.

Thus, it is not that unexpected that it fails with -ffast-math. As it

does what it is supposed to do with -O3 and no -ffast-math.

Hence, I fail to understand the problem.

> The test case does not check NaN explicitly. So, strictly speaking,

> this code may need more stronger to check NaN, otherwise it may STOP

> during execution, and this STOP is acceptable. Right?

In terms of GCC, "-ffast-math: Sets the options -fno-math-errno,

-funsafe-math-optimizations, -ffinite-math-only, -fno-rounding-math,

-fno-signaling-nans, -fcx-limited-range and -fexcess-precision=fast"

See "man gcc" or

https://gcc.gnu.org/onlinedocs/ → GCC Manual

→ "Option Index" or Invoking → Optimization

And in the test case, the neither "mnan" nor "minf" falls under

"finite-math-only".

Regarding -fast-math etc, see also:

https://gcc.gnu.org/wiki/FloatingPointMathhttps://gcc.gnu.org/wiki/x87notehttps://gcc.gnu.org/wiki/Math_Optimization_Flagsand, talking about FP math in general,

the Goldberg paper,

http://www.validlab.com/goldberg/paper.pdfand similar but both less famous and written more recently:

a paper by Monniaux,

https://hal.archives-ouvertes.fr/hal-00128124Cheers,

Tobias

PS: Using -ffast-math is fine, if one is careful – but one should

then strongly avoid trickery with NaN, INF etc. BTW: Talking about

optimizations, -Ofast (which was not used by you) also enables

-ffast-math but additionally turns implies "-fno-protect-parens",

which otherwise are protected according to the Fortran standard.

-----------------

Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany

Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander Walter