Below is the diff of tests for gfortran on powerpc-apple-darwin10.8.0
without (unmodified gcc upstream) vs with the gfortran patch being added.

         === gfortran Summary ===

-# of expected passes        69273
-# of unexpected failures    36
+# of expected passes        69646
+# of unexpected failures    85
 # of unexpected successes    12
 # of expected failures        287
-# of unsupported tests        357
+# of unsupported tests        363

I.e., we get +373 passes and +49 failures. With one exception (see below),
failures are due to tests which were not run before.
AFAICT, present failures are not specific to my patch, but rather caused by
constraints of 32-bit powerpc or some existing darwin-specific issues: I
have tried a few versions of my patch, including almost copy-paste of SysV
code, which is substantially different, and test results were either
identical or a few extra tests failed (SysV-based version was marginally
worse, for instance), but those which fail here, failed consistently for
every version.

There is one test which changes from PASS to FAIL (round_4), however I
think this is not a real regression, and the test in its present form is
expected to fail.
See comments in the test code in the source and my post:
https://gcc.gnu.org/pipermail/fortran/2024-July/060612.html

---
/Users/svacchanda/Develop/FORTRAN/gfortran_15.0.0_20240608_no_ieee.sum
2024-06-29 00:25:18.000000000 +0800
+++
/Users/svacchanda/Develop/FORTRAN/gfortran_15.0.0_20240608_ieee_added.sum
2024-06-29 08:11:29.000000000 +0800
@@ -1,4 +1,4 @@
-Test run by svacchanda on Fri Jun 28 23:25:22 2024
+Test run by svacchanda on Sat Jun 29 07:02:39 2024
 Native configuration is powerpc-apple-darwin10.8.0

         === gfortran tests ===
@@ -48800,17 +48800,17 @@
 PASS: gfortran.dg/round_3.f08   -Os  (test for excess errors)
 PASS: gfortran.dg/round_3.f08   -Os  execution test
 PASS: gfortran.dg/round_4.f90   -O0  (test for excess errors)
-PASS: gfortran.dg/round_4.f90   -O0  execution test
+FAIL: gfortran.dg/round_4.f90   -O0  execution test
 PASS: gfortran.dg/round_4.f90   -O1  (test for excess errors)
-PASS: gfortran.dg/round_4.f90   -O1  execution test
+FAIL: gfortran.dg/round_4.f90   -O1  execution test
 PASS: gfortran.dg/round_4.f90   -O2  (test for excess errors)
-PASS: gfortran.dg/round_4.f90   -O2  execution test
+FAIL: gfortran.dg/round_4.f90   -O2  execution test
 PASS: gfortran.dg/round_4.f90   -O3 -fomit-frame-pointer -funroll-loops
-fpeel-loops -ftracer -finline-functions  (test for excess errors)
-PASS: gfortran.dg/round_4.f90   -O3 -fomit-frame-pointer -funroll-loops
-fpeel-loops -ftracer -finline-functions  execution test
+FAIL: gfortran.dg/round_4.f90   -O3 -fomit-frame-pointer -funroll-loops
-fpeel-loops -ftracer -finline-functions  execution test
 PASS: gfortran.dg/round_4.f90   -O3 -g  (test for excess errors)
-PASS: gfortran.dg/round_4.f90   -O3 -g  execution test
+FAIL: gfortran.dg/round_4.f90   -O3 -g  execution test
 PASS: gfortran.dg/round_4.f90   -Os  (test for excess errors)
-PASS: gfortran.dg/round_4.f90   -Os  execution test
+FAIL: gfortran.dg/round_4.f90   -Os  execution test
 PASS: gfortran.dg/rrspacing_1.f90   -O0  (test for excess errors)
 PASS: gfortran.dg/rrspacing_1.f90   -O0  execution test
 PASS: gfortran.dg/rrspacing_1.f90   -O1  (test for excess errors)
@@ -49289,8 +49289,7 @@
 PASS: gfortran.dg/select_type_2.f03   -O1  execution test
 PASS: gfortran.dg/select_type_2.f03   -O2  (test for excess errors)
 PASS: gfortran.dg/select_type_2.f03   -O2  execution test
-WARNING: gfortran.dg/select_type_2.f03   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors) program timed out.
-FAIL: gfortran.dg/select_type_2.f03   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/select_type_2.f03   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
 PASS: gfortran.dg/select_type_2.f03   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
 PASS: gfortran.dg/select_type_2.f03   -O3 -g  (test for excess errors)
 PASS: gfortran.dg/select_type_2.f03   -O3 -g  execution test
@@ -64745,6 +64744,434 @@
 PASS: gfortran.dg/graphite/vect-pr94043.f90   -O  (test for excess errors)
 Running
/Users/svacchanda/Develop/gcc-git/gcc/testsuite/gfortran.dg/guality/guality.exp
...
 Running
/Users/svacchanda/Develop/gcc-git/gcc/testsuite/gfortran.dg/ieee/ieee.exp
...
+PASS: gfortran.dg/ieee/comparisons_1.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/comparisons_1.f90   -O0  execution test
+PASS: gfortran.dg/ieee/comparisons_1.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/comparisons_1.f90   -O1  execution test
+PASS: gfortran.dg/ieee/comparisons_1.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/comparisons_1.f90   -O2  execution test
+PASS: gfortran.dg/ieee/comparisons_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/comparisons_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/comparisons_1.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/comparisons_1.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/comparisons_1.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/comparisons_1.f90   -Os  execution test
+PASS: gfortran.dg/ieee/comparisons_2.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/comparisons_2.f90   -O0  execution test
+PASS: gfortran.dg/ieee/comparisons_2.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/comparisons_2.f90   -O1  execution test
+PASS: gfortran.dg/ieee/comparisons_2.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/comparisons_2.f90   -O2  execution test
+PASS: gfortran.dg/ieee/comparisons_2.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/comparisons_2.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/comparisons_2.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/comparisons_2.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/comparisons_2.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/comparisons_2.f90   -Os  execution test
+PASS: gfortran.dg/ieee/comparisons_3.F90   -O0  (test for excess errors)
+FAIL: gfortran.dg/ieee/comparisons_3.F90   -O0  execution test
+PASS: gfortran.dg/ieee/comparisons_3.F90   -O1  (test for excess errors)
+FAIL: gfortran.dg/ieee/comparisons_3.F90   -O1  execution test
+PASS: gfortran.dg/ieee/comparisons_3.F90   -O2  (test for excess errors)
+FAIL: gfortran.dg/ieee/comparisons_3.F90   -O2  execution test
+PASS: gfortran.dg/ieee/comparisons_3.F90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+FAIL: gfortran.dg/ieee/comparisons_3.F90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/comparisons_3.F90   -O3 -g  (test for excess errors)
+FAIL: gfortran.dg/ieee/comparisons_3.F90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/comparisons_3.F90   -Os  (test for excess errors)
+FAIL: gfortran.dg/ieee/comparisons_3.F90   -Os  execution test
+PASS: gfortran.dg/ieee/dec_math_1.f90   -O0  (test for excess errors)
+FAIL: gfortran.dg/ieee/dec_math_1.f90   -O0  execution test
+PASS: gfortran.dg/ieee/dec_math_1.f90   -O1  (test for excess errors)
+FAIL: gfortran.dg/ieee/dec_math_1.f90   -O1  execution test
+PASS: gfortran.dg/ieee/dec_math_1.f90   -O2  (test for excess errors)
+FAIL: gfortran.dg/ieee/dec_math_1.f90   -O2  execution test
+PASS: gfortran.dg/ieee/dec_math_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+FAIL: gfortran.dg/ieee/dec_math_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/dec_math_1.f90   -O3 -g  (test for excess errors)
+FAIL: gfortran.dg/ieee/dec_math_1.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/dec_math_1.f90   -Os  (test for excess errors)
+FAIL: gfortran.dg/ieee/dec_math_1.f90   -Os  execution test
+PASS: gfortran.dg/ieee/fma_1.f90   -O0  (test for excess errors)
+FAIL: gfortran.dg/ieee/fma_1.f90   -O0  execution test
+PASS: gfortran.dg/ieee/fma_1.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/fma_1.f90   -O1  execution test
+PASS: gfortran.dg/ieee/fma_1.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/fma_1.f90   -O2  execution test
+PASS: gfortran.dg/ieee/fma_1.f90   -O3 -fomit-frame-pointer -funroll-loops
-fpeel-loops -ftracer -finline-functions  (test for excess errors)
+PASS: gfortran.dg/ieee/fma_1.f90   -O3 -fomit-frame-pointer -funroll-loops
-fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/fma_1.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/fma_1.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/fma_1.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/fma_1.f90   -Os  execution test
+PASS: gfortran.dg/ieee/ieee_1.F90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_1.F90   -O0  execution test
+PASS: gfortran.dg/ieee/ieee_1.F90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_1.F90   -O1  execution test
+PASS: gfortran.dg/ieee/ieee_1.F90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_1.F90   -O2  execution test
+PASS: gfortran.dg/ieee/ieee_1.F90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/ieee_1.F90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/ieee_1.F90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_1.F90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/ieee_1.F90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_1.F90   -Os  execution test
+PASS: gfortran.dg/ieee/ieee_10.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_10.f90   -O0  execution test
+PASS: gfortran.dg/ieee/ieee_10.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_10.f90   -O1  execution test
+PASS: gfortran.dg/ieee/ieee_10.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_10.f90   -O2  execution test
+PASS: gfortran.dg/ieee/ieee_10.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/ieee_10.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/ieee_10.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_10.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/ieee_10.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_10.f90   -Os  execution test
+PASS: gfortran.dg/ieee/ieee_11.F90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_11.F90   -O0  execution test
+PASS: gfortran.dg/ieee/ieee_11.F90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_11.F90   -O1  execution test
+PASS: gfortran.dg/ieee/ieee_11.F90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_11.F90   -O2  execution test
+PASS: gfortran.dg/ieee/ieee_11.F90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/ieee_11.F90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/ieee_11.F90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_11.F90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/ieee_11.F90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_11.F90   -Os  execution test
+PASS: gfortran.dg/ieee/ieee_12.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_12.f90   -O0  execution test
+PASS: gfortran.dg/ieee/ieee_12.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_12.f90   -O1  execution test
+PASS: gfortran.dg/ieee/ieee_12.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_12.f90   -O2  execution test
+PASS: gfortran.dg/ieee/ieee_12.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/ieee_12.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/ieee_12.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_12.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/ieee_12.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_12.f90   -Os  execution test
+PASS: gfortran.dg/ieee/ieee_2.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_2.f90   -O0  execution test
+PASS: gfortran.dg/ieee/ieee_2.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_2.f90   -O1  execution test
+PASS: gfortran.dg/ieee/ieee_2.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_2.f90   -O2  execution test
+PASS: gfortran.dg/ieee/ieee_2.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/ieee_2.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/ieee_2.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_2.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/ieee_2.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_2.f90   -Os  execution test
+PASS: gfortran.dg/ieee/ieee_3.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_3.f90   -O0  execution test
+PASS: gfortran.dg/ieee/ieee_3.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_3.f90   -O1  execution test
+PASS: gfortran.dg/ieee/ieee_3.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_3.f90   -O2  execution test
+PASS: gfortran.dg/ieee/ieee_3.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/ieee_3.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/ieee_3.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_3.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/ieee_3.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_3.f90   -Os  execution test
+PASS: gfortran.dg/ieee/ieee_4.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_4.f90   -O0  execution test
+PASS: gfortran.dg/ieee/ieee_4.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_4.f90   -O1  execution test
+PASS: gfortran.dg/ieee/ieee_4.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_4.f90   -O2  execution test
+PASS: gfortran.dg/ieee/ieee_4.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/ieee_4.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/ieee_4.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_4.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/ieee_4.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_4.f90   -Os  execution test
+PASS: gfortran.dg/ieee/ieee_5.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_5.f90   -O0  execution test
+PASS: gfortran.dg/ieee/ieee_5.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_5.f90   -O1  execution test
+PASS: gfortran.dg/ieee/ieee_5.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_5.f90   -O2  execution test
+PASS: gfortran.dg/ieee/ieee_5.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/ieee_5.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/ieee_5.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_5.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/ieee_5.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_5.f90   -Os  execution test
+PASS: gfortran.dg/ieee/ieee_6.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_6.f90   -O0  execution test
+PASS: gfortran.dg/ieee/ieee_6.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_6.f90   -O1  execution test
+PASS: gfortran.dg/ieee/ieee_6.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_6.f90   -O2  execution test
+PASS: gfortran.dg/ieee/ieee_6.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/ieee_6.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/ieee_6.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_6.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/ieee_6.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_6.f90   -Os  execution test
+PASS: gfortran.dg/ieee/ieee_7.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_7.f90   -O0  execution test
+PASS: gfortran.dg/ieee/ieee_7.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_7.f90   -O1  execution test
+PASS: gfortran.dg/ieee/ieee_7.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_7.f90   -O2  execution test
+PASS: gfortran.dg/ieee/ieee_7.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/ieee_7.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/ieee_7.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_7.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/ieee_7.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_7.f90   -Os  execution test
+PASS: gfortran.dg/ieee/ieee_8.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_8.f90   -O0  execution test
+PASS: gfortran.dg/ieee/ieee_8.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_8.f90   -O1  execution test
+PASS: gfortran.dg/ieee/ieee_8.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_8.f90   -O2  execution test
+PASS: gfortran.dg/ieee/ieee_8.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/ieee_8.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/ieee_8.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_8.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/ieee_8.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_8.f90   -Os  execution test
+PASS: gfortran.dg/ieee/ieee_9.f90   -O0  (test for excess errors)
+FAIL: gfortran.dg/ieee/ieee_9.f90   -O0  execution test
+PASS: gfortran.dg/ieee/ieee_9.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_9.f90   -O1  execution test
+PASS: gfortran.dg/ieee/ieee_9.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_9.f90   -O2  execution test
+PASS: gfortran.dg/ieee/ieee_9.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/ieee_9.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/ieee_9.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_9.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/ieee_9.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/ieee_9.f90   -Os  execution test
+PASS: gfortran.dg/ieee/intrinsics_1.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/intrinsics_1.f90   -O0  execution test
+PASS: gfortran.dg/ieee/intrinsics_1.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/intrinsics_1.f90   -O1  execution test
+PASS: gfortran.dg/ieee/intrinsics_1.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/intrinsics_1.f90   -O2  execution test
+PASS: gfortran.dg/ieee/intrinsics_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/intrinsics_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/intrinsics_1.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/intrinsics_1.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/intrinsics_1.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/intrinsics_1.f90   -Os  execution test
+PASS: gfortran.dg/ieee/intrinsics_2.F90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/intrinsics_2.F90   -O0  execution test
+PASS: gfortran.dg/ieee/intrinsics_2.F90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/intrinsics_2.F90   -O1  execution test
+PASS: gfortran.dg/ieee/intrinsics_2.F90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/intrinsics_2.F90   -O2  execution test
+PASS: gfortran.dg/ieee/intrinsics_2.F90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/intrinsics_2.F90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/intrinsics_2.F90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/intrinsics_2.F90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/intrinsics_2.F90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/intrinsics_2.F90   -Os  execution test
+PASS: gfortran.dg/ieee/large_1.f90   -O0  (test for excess errors)
+FAIL: gfortran.dg/ieee/large_1.f90   -O0  execution test
+PASS: gfortran.dg/ieee/large_1.f90   -O1  (test for excess errors)
+FAIL: gfortran.dg/ieee/large_1.f90   -O1  execution test
+PASS: gfortran.dg/ieee/large_1.f90   -O2  (test for excess errors)
+FAIL: gfortran.dg/ieee/large_1.f90   -O2  execution test
+PASS: gfortran.dg/ieee/large_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+FAIL: gfortran.dg/ieee/large_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/large_1.f90   -O3 -g  (test for excess errors)
+FAIL: gfortran.dg/ieee/large_1.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/large_1.f90   -Os  (test for excess errors)
+FAIL: gfortran.dg/ieee/large_1.f90   -Os  execution test
+PASS: gfortran.dg/ieee/large_2.f90   -O0  (test for excess errors)
+FAIL: gfortran.dg/ieee/large_2.f90   -O0  execution test
+PASS: gfortran.dg/ieee/large_2.f90   -O1  (test for excess errors)
+FAIL: gfortran.dg/ieee/large_2.f90   -O1  execution test
+PASS: gfortran.dg/ieee/large_2.f90   -O2  (test for excess errors)
+FAIL: gfortran.dg/ieee/large_2.f90   -O2  execution test
+PASS: gfortran.dg/ieee/large_2.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+FAIL: gfortran.dg/ieee/large_2.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/large_2.f90   -O3 -g  (test for excess errors)
+FAIL: gfortran.dg/ieee/large_2.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/large_2.f90   -Os  (test for excess errors)
+FAIL: gfortran.dg/ieee/large_2.f90   -Os  execution test
+PASS: gfortran.dg/ieee/large_3.F90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/large_3.F90   -O0  execution test
+PASS: gfortran.dg/ieee/large_3.F90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/large_3.F90   -O1  execution test
+PASS: gfortran.dg/ieee/large_3.F90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/large_3.F90   -O2  execution test
+PASS: gfortran.dg/ieee/large_3.F90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/large_3.F90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/large_3.F90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/large_3.F90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/large_3.F90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/large_3.F90   -Os  execution test
+PASS: gfortran.dg/ieee/large_4.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/large_4.f90   -O0  execution test
+PASS: gfortran.dg/ieee/large_4.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/large_4.f90   -O1  execution test
+PASS: gfortran.dg/ieee/large_4.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/large_4.f90   -O2  execution test
+PASS: gfortran.dg/ieee/large_4.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/large_4.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/large_4.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/large_4.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/large_4.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/large_4.f90   -Os  execution test
+PASS: gfortran.dg/ieee/minmax_1.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/minmax_1.f90   -O0  execution test
+PASS: gfortran.dg/ieee/minmax_1.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/minmax_1.f90   -O1  execution test
+PASS: gfortran.dg/ieee/minmax_1.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/minmax_1.f90   -O2  execution test
+PASS: gfortran.dg/ieee/minmax_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/minmax_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/minmax_1.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/minmax_1.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/minmax_1.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/minmax_1.f90   -Os  execution test
+PASS: gfortran.dg/ieee/minmax_2.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/minmax_2.f90   -O0  execution test
+PASS: gfortran.dg/ieee/minmax_2.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/minmax_2.f90   -O1  execution test
+PASS: gfortran.dg/ieee/minmax_2.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/minmax_2.f90   -O2  execution test
+PASS: gfortran.dg/ieee/minmax_2.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/minmax_2.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/minmax_2.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/minmax_2.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/minmax_2.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/minmax_2.f90   -Os  execution test
+PASS: gfortran.dg/ieee/minmax_3.f90   -O0  (test for excess errors)
+FAIL: gfortran.dg/ieee/minmax_3.f90   -O0  execution test
+PASS: gfortran.dg/ieee/minmax_3.f90   -O1  (test for excess errors)
+FAIL: gfortran.dg/ieee/minmax_3.f90   -O1  execution test
+PASS: gfortran.dg/ieee/minmax_3.f90   -O2  (test for excess errors)
+FAIL: gfortran.dg/ieee/minmax_3.f90   -O2  execution test
+PASS: gfortran.dg/ieee/minmax_3.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+FAIL: gfortran.dg/ieee/minmax_3.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/minmax_3.f90   -O3 -g  (test for excess errors)
+FAIL: gfortran.dg/ieee/minmax_3.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/minmax_3.f90   -Os  (test for excess errors)
+FAIL: gfortran.dg/ieee/minmax_3.f90   -Os  execution test
+PASS: gfortran.dg/ieee/minmax_4.f90   -O0  (test for excess errors)
+FAIL: gfortran.dg/ieee/minmax_4.f90   -O0  execution test
+PASS: gfortran.dg/ieee/minmax_4.f90   -O1  (test for excess errors)
+FAIL: gfortran.dg/ieee/minmax_4.f90   -O1  execution test
+PASS: gfortran.dg/ieee/minmax_4.f90   -O2  (test for excess errors)
+FAIL: gfortran.dg/ieee/minmax_4.f90   -O2  execution test
+PASS: gfortran.dg/ieee/minmax_4.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+FAIL: gfortran.dg/ieee/minmax_4.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/minmax_4.f90   -O3 -g  (test for excess errors)
+FAIL: gfortran.dg/ieee/minmax_4.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/minmax_4.f90   -Os  (test for excess errors)
+FAIL: gfortran.dg/ieee/minmax_4.f90   -Os  execution test
+PASS: gfortran.dg/ieee/modes_1.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/modes_1.f90   -O0  execution test
+PASS: gfortran.dg/ieee/modes_1.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/modes_1.f90   -O1  execution test
+PASS: gfortran.dg/ieee/modes_1.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/modes_1.f90   -O2  execution test
+PASS: gfortran.dg/ieee/modes_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/modes_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/modes_1.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/modes_1.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/modes_1.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/modes_1.f90   -Os  execution test
+PASS: gfortran.dg/ieee/pr77372.f90   -O  (test for excess errors)
+PASS: gfortran.dg/ieee/pr77507.f90   -O  (test for excess errors)
+PASS: gfortran.dg/ieee/rounding_1.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/rounding_1.f90   -O0  execution test
+PASS: gfortran.dg/ieee/rounding_1.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/rounding_1.f90   -O1  execution test
+PASS: gfortran.dg/ieee/rounding_1.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/rounding_1.f90   -O2  execution test
+PASS: gfortran.dg/ieee/rounding_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/rounding_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/rounding_1.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/rounding_1.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/rounding_1.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/rounding_1.f90   -Os  execution test
+PASS: gfortran.dg/ieee/rounding_2.f90   -O0  (test for excess errors)
+FAIL: gfortran.dg/ieee/rounding_2.f90   -O0  execution test
+PASS: gfortran.dg/ieee/rounding_2.f90   -O1  (test for excess errors)
+FAIL: gfortran.dg/ieee/rounding_2.f90   -O1  execution test
+PASS: gfortran.dg/ieee/rounding_2.f90   -O2  (test for excess errors)
+FAIL: gfortran.dg/ieee/rounding_2.f90   -O2  execution test
+PASS: gfortran.dg/ieee/rounding_2.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+FAIL: gfortran.dg/ieee/rounding_2.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/rounding_2.f90   -O3 -g  (test for excess errors)
+FAIL: gfortran.dg/ieee/rounding_2.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/rounding_2.f90   -Os  (test for excess errors)
+FAIL: gfortran.dg/ieee/rounding_2.f90   -Os  execution test
+PASS: gfortran.dg/ieee/rounding_3.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/rounding_3.f90   -O0  execution test
+PASS: gfortran.dg/ieee/rounding_3.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/rounding_3.f90   -O1  execution test
+PASS: gfortran.dg/ieee/rounding_3.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/rounding_3.f90   -O2  execution test
+PASS: gfortran.dg/ieee/rounding_3.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/rounding_3.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/rounding_3.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/rounding_3.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/rounding_3.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/rounding_3.f90   -Os  execution test
+PASS: gfortran.dg/ieee/signaling_1.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/signaling_1.f90   -O0  execution test
+PASS: gfortran.dg/ieee/signaling_1.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/signaling_1.f90   -O1  execution test
+PASS: gfortran.dg/ieee/signaling_1.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/signaling_1.f90   -O2  execution test
+PASS: gfortran.dg/ieee/signaling_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/signaling_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/signaling_1.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/signaling_1.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/signaling_1.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/signaling_1.f90   -Os  execution test
+UNSUPPORTED: gfortran.dg/ieee/signaling_2.f90   -O0
+UNSUPPORTED: gfortran.dg/ieee/signaling_2.f90   -O1
+UNSUPPORTED: gfortran.dg/ieee/signaling_2.f90   -O2
+UNSUPPORTED: gfortran.dg/ieee/signaling_2.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions
+UNSUPPORTED: gfortran.dg/ieee/signaling_2.f90   -O3 -g
+UNSUPPORTED: gfortran.dg/ieee/signaling_2.f90   -Os
+PASS: gfortran.dg/ieee/signaling_3.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/signaling_3.f90   -O0  execution test
+PASS: gfortran.dg/ieee/signaling_3.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/signaling_3.f90   -O1  execution test
+PASS: gfortran.dg/ieee/signaling_3.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/signaling_3.f90   -O2  execution test
+PASS: gfortran.dg/ieee/signaling_3.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/signaling_3.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/signaling_3.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/signaling_3.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/signaling_3.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/signaling_3.f90   -Os  execution test
+PASS: gfortran.dg/ieee/signbit_1.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/signbit_1.f90   -O0  execution test
+PASS: gfortran.dg/ieee/signbit_1.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/signbit_1.f90   -O1  execution test
+PASS: gfortran.dg/ieee/signbit_1.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/signbit_1.f90   -O2  execution test
+PASS: gfortran.dg/ieee/signbit_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/signbit_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/signbit_1.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/signbit_1.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/signbit_1.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/signbit_1.f90   -Os  execution test
+PASS: gfortran.dg/ieee/underflow_1.f90   -O0  (test for excess errors)
+PASS: gfortran.dg/ieee/underflow_1.f90   -O0  execution test
+PASS: gfortran.dg/ieee/underflow_1.f90   -O1  (test for excess errors)
+PASS: gfortran.dg/ieee/underflow_1.f90   -O1  execution test
+PASS: gfortran.dg/ieee/underflow_1.f90   -O2  (test for excess errors)
+PASS: gfortran.dg/ieee/underflow_1.f90   -O2  execution test
+PASS: gfortran.dg/ieee/underflow_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
+PASS: gfortran.dg/ieee/underflow_1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
+PASS: gfortran.dg/ieee/underflow_1.f90   -O3 -g  (test for excess errors)
+PASS: gfortran.dg/ieee/underflow_1.f90   -O3 -g  execution test
+PASS: gfortran.dg/ieee/underflow_1.f90   -Os  (test for excess errors)
+PASS: gfortran.dg/ieee/underflow_1.f90   -Os  execution test
 Running
/Users/svacchanda/Develop/gcc-git/gcc/testsuite/gfortran.dg/lto/lto.exp ...
 PASS: gfortran.dg/lto/20091015-1 f_lto_20091015-1_0.o assemble, -O0 -flto
 PASS: gfortran.dg/lto/20091015-1 f_lto_20091015-1_0.o assemble, -O0 -flto
-flto-partition=1to1
@@ -69994,10 +70421,10 @@

         === gfortran Summary ===

-# of expected passes        69273
-# of unexpected failures    36
+# of expected passes        69646
+# of unexpected failures    85
 # of unexpected successes    12
 # of expected failures        287
-# of unsupported tests        357
-/Users/svacchanda/Develop/gcc_build_20240628/gcc/gfortran  version 15.0.0
20240608 (experimental) (GCC)
+# of unsupported tests        363
+/Users/svacchanda/Develop/gcc_build_20240628_ieee/gcc/gfortran  version
15.0.0 20240608 (experimental) (GCC)



On Fri, Jul 5, 2024 at 3:58 AM Sergey Fedorov <vital....@gmail.com> wrote:

> From 50fc05566ba7479844949d727233c04a5e8151e8 Mon Sep 17 00:00:00 2001
> From: Sergey Fedorov <vital....@gmail.com>
> Date: Sat, 29 Apr 2023 14:55:44 +0800
> Subject: [PATCH] libgfortran: implement fpu-macppc for Darwin, support IEEE
>  arithmetic
>
> Signed-off-by: Sergey Fedorov <vital....@gmail.com>
> ---
>  .../gfortran.dg/ieee/signaling_2_c.c          |   9 +
>  libgfortran/config/fpu-macppc.h               | 414 ++++++++++++++++++
>  libgfortran/configure.host                    |   9 +
>  3 files changed, 432 insertions(+)
>  create mode 100644 libgfortran/config/fpu-macppc.h
>
> diff --git a/gcc/testsuite/gfortran.dg/ieee/signaling_2_c.c
> b/gcc/testsuite/gfortran.dg/ieee/signaling_2_c.c
> index ea7fc0467bd..4a8f72c5bf2 100644
> --- a/gcc/testsuite/gfortran.dg/ieee/signaling_2_c.c
> +++ b/gcc/testsuite/gfortran.dg/ieee/signaling_2_c.c
> @@ -1,3 +1,11 @@
> +#ifdef __POWERPC__ // No support for issignaling in math.h on Darwin PPC
> +
> +int isnansf (float x)       { return __builtin_issignaling (x) ? 1 : 0; }
> +int isnans  (double x)      { return __builtin_issignaling (x) ? 1 : 0; }
> +int isnansl (long double x) { return __builtin_issignaling (x) ? 1 : 0; }
> +
> +#else
> +
>  #define _GNU_SOURCE
>  #include <math.h>
>  #include <float.h>
> @@ -6,3 +14,4 @@ int isnansf (float x)       { return issignaling (x) ? 1
> : 0; }
>  int isnans  (double x)      { return issignaling (x) ? 1 : 0; }
>  int isnansl (long double x) { return issignaling (x) ? 1 : 0; }
>
> +#endif
> diff --git a/libgfortran/config/fpu-macppc.h
> b/libgfortran/config/fpu-macppc.h
> new file mode 100644
> index 00000000000..d43d3caa3dd
> --- /dev/null
> +++ b/libgfortran/config/fpu-macppc.h
> @@ -0,0 +1,414 @@
> +/* FPU-related code for PowerPC.
> +   Copyright (C) 2023-2024 Free Software Foundation, Inc.
> +   Contributed by Sergey Fedorov <vital....@gmail.com>
> +
> +This file is part of the GNU Fortran runtime library (libgfortran).
> +
> +Libgfortran is free software; you can redistribute it and/or
> +modify it under the terms of the GNU General Public
> +License as published by the Free Software Foundation; either
> +version 3 of the License, or (at your option) any later version.
> +
> +Libgfortran is distributed in the hope that it will be useful,
> +but WITHOUT ANY WARRANTY; without even the implied warranty of
> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
> +the GNU General Public License for more details.
> +
> +Under Section 7 of GPL version 3, you are granted additional
> +permissions described in the GCC Runtime Library Exception, version 3.1,
> +as published by the Free Software Foundation.
> +
> +You should have received a copy of the GNU General Public License and
> +a copy of the GCC Runtime Library Exception along with this program;
> +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
> +<http://www.gnu.org/licenses/>. */
> +
> +/* While some of the definitions and functions used here are available
> +   with Apple libm, we on purpose avoid pulling it in: to avoid potential
> +   conflicts and not self-impose unnecessary constraints. */
> +
> +/* FP exception flags */
> +#define FE_INEXACT      0x02000000
> +#define FE_DIVBYZERO    0x04000000
> +#define FE_UNDERFLOW    0x08000000
> +#define FE_OVERFLOW     0x10000000
> +#define FE_INVALID      0x20000000
> +
> +#define FE_ALL_EXCEPT   0x3E000000
> +#define FE_NO_EXCEPT    0xC1FFFFFF
> +
> +/* Extra invalid flags */
> +#define FE_INVALID_SNAN 0x01000000
> +#define FE_INVALID_ISI  0x00800000
> +#define FE_INVALID_IDI  0x00400000
> +#define FE_INVALID_ZDZ  0x00200000
> +#define FE_INVALID_IMZ  0x00100000
> +#define FE_INVALID_XVC  0x00080000
> +#define FE_INVALID_SOFT 0x00000400
> +#define FE_INVALID_SQRT 0x00000200
> +#define FE_INVALID_CVI  0x00000100
> +
> +/* Rounding modes */
> +#define FE_TONEAREST    0x00000000
> +#define FE_TOWARDZERO   0x00000001
> +#define FE_UPWARD       0x00000002
> +#define FE_DOWNWARD     0x00000003
> +
> +/* There is no consistency re what is to be included in all_invalid.
> +   Apple libm has 0x01f80300, Openlibm/FreeBSD/NetBSD has 0x21f80700
> +   and OpenBSD has 0x01f80700. In particular, FE_INVALID_SOFT and
> +   FE_INVALID are contested. */
> +#define FE_ALL_INVALID  0x01F80700
> +#define FE_NO_INVALID   0xFE07F8FF
> +
> +/* Apple libm has 0xFFF80300 and 0x0007FCFF here. */
> +#define FE_ALL_FLAGS    0xFFF80700
> +#define FE_NO_FLAGS     0x0007F8FF
> +
> +#define FE_ALL_RND      0x00000003
> +#define FE_NO_RND       0xFFFFFFFC
> +
> +/* Floating-point exception summary (FX) bit. */
> +#define FE_SET_FX       0x80000000
> +#define FE_CLR_FX       0x7FFFFFFF
> +
> +/* Some implementations use FE_INVALID_SOFT here. */
> +#define SET_INVALID     0x01000000
> +
> +#define FE_EXCEPT_SHIFT 22
> +#define EXCEPT_MASK     FE_ALL_EXCEPT >> FE_EXCEPT_SHIFT
> +
> +typedef unsigned int    fenv_t;
> +typedef unsigned int    fexcept_t;
> +
> +/* default environment object */
> +extern const fenv_t     _FE_DFL_ENV;
> +/* pointer to default environment */
> +#define FE_DFL_ENV      &_FE_DFL_ENV
> +
> +typedef union {
> +    struct {
> +        unsigned int hi;
> +        fenv_t       lo;
> +    } i;
> +    double           d;
> +} hexdouble;
> +
> +#define HEXDOUBLE(hi, lo) {{ hi, lo }}
> +
> +
> +/* Check we can actually store the FPU state in the allocated size. */
> +_Static_assert (sizeof(fenv_t) <= (size_t) GFC_FPE_STATE_BUFFER_SIZE,
> +   "GFC_FPE_STATE_BUFFER_SIZE is too small");
> +
> +
> +static inline int fegetexcept(void)
> +{
> +    hexdouble fe;
> +
> +    fe.d = __builtin_mffs();
> +    return ((fe.i.lo & EXCEPT_MASK) << FE_EXCEPT_SHIFT);
> +}
> +
> +static inline int feclearexcept(int excepts)
> +{
> +    hexdouble fe;
> +
> +    if (excepts & FE_INVALID)
> +        excepts |= FE_ALL_INVALID;
> +    fe.d = __builtin_mffs();
> +    fe.i.lo &= ~excepts;
> +    if ((fe.i.lo & FE_ALL_EXCEPT) == 0)
> +        fe.i.lo &= FE_CLR_FX;
> +    __builtin_mtfsf(0xFF, fe.d);
> +    return 0;
> +}
> +
> +/* It is not possible to set VX bit directly. */
> +static inline int feraiseexcept(int excepts)
> +{
> +    hexdouble fe;
> +
> +    if (excepts & FE_INVALID)
> +        excepts |= SET_INVALID;
> +    fe.d = __builtin_mffs();
> +    fe.i.lo |= excepts;
> +    __builtin_mtfsf(0xFF, fe.d);
> +    return 0;
> +}
> +
> +static inline int fetestexcept(int excepts)
> +{
> +    hexdouble fe;
> +
> +    excepts &= FE_ALL_EXCEPT;
> +    fe.d = __builtin_mffs();
> +    return (fe.i.lo & (excepts & FE_ALL_EXCEPT));
> +}
> +
> +static inline int feenableexcept(int mask)
> +{
> +    hexdouble fe;
> +    fenv_t oldmask;
> +
> +    fe.d = __builtin_mffs();
> +    oldmask = fe.i.lo;
> +    fe.i.lo |= (mask & FE_ALL_EXCEPT) >> FE_EXCEPT_SHIFT;
> +    __builtin_mtfsf(0xFF, fe.d);
> +    return ((oldmask & EXCEPT_MASK) << FE_EXCEPT_SHIFT);
> +}
> +
> +static inline int fedisableexcept(int mask)
> +{
> +    hexdouble fe;
> +    fenv_t oldmask;
> +
> +    fe.d = __builtin_mffs();
> +    oldmask = fe.i.lo;
> +    fe.i.lo &= ~((mask & FE_ALL_EXCEPT) >> FE_EXCEPT_SHIFT);
> +    __builtin_mtfsf(0xFF, fe.d);
> +    return ((oldmask & EXCEPT_MASK) << FE_EXCEPT_SHIFT);
> +}
> +
> +static inline int fegetround(void)
> +{
> +    hexdouble fe;
> +
> +    fe.d = __builtin_mffs();
> +    return (fe.i.lo & FE_ALL_RND);
> +}
> +
> +static inline int fesetround(int round)
> +{
> +    hexdouble fe;
> +
> +    if (round & FE_NO_RND)
> +        return (-1);
> +    fe.d = __builtin_mffs();
> +    fe.i.lo = (fe.i.lo & FE_NO_RND) | round;
> +    __builtin_mtfsf(0xFF, fe.d);
> +    return 0;
> +}
> +
> +static inline int fegetenv(fenv_t *envp)
> +{
> +    hexdouble fe;
> +
> +    fe.d = __builtin_mffs();
> +    *envp = fe.i.lo;
> +    return 0;
> +}
> +
> +static inline int fesetenv(const fenv_t *envp)
> +{
> +    hexdouble fe;
> +
> +    fe.i.lo = *envp;
> +    __builtin_mtfsf(0xFF, fe.d);
> +    return 0;
> +}
> +
> +
> +int get_fpu_trap_exceptions (void)
> +{
> +  int exceptions = fegetexcept();
> +  int res = 0;
> +
> +  if (exceptions & FE_INVALID) res |= GFC_FPE_INVALID;
> +  if (exceptions & FE_DIVBYZERO) res |= GFC_FPE_ZERO;
> +  if (exceptions & FE_OVERFLOW) res |= GFC_FPE_OVERFLOW;
> +  if (exceptions & FE_UNDERFLOW) res |= GFC_FPE_UNDERFLOW;
> +  if (exceptions & FE_INEXACT) res |= GFC_FPE_INEXACT;
> +
> +  return res;
> +}
> +
> +void set_fpu (void)
> +{
> +  if (options.fpe & GFC_FPE_DENORMAL)
> +    estr_write ("Fortran runtime warning: Floating point 'denormal
> operand' "
> +            "exception not supported.\n");
> +
> +  set_fpu_trap_exceptions (options.fpe, 0);
> +}
> +
> +void set_fpu_trap_exceptions (int trap, int notrap)
> +{
> +  unsigned int mode_set = 0, mode_clr = 0;
> +
> +  if (trap & GFC_FPE_INVALID)
> +    mode_set |= FE_INVALID;
> +  if (notrap & GFC_FPE_INVALID)
> +    mode_clr |= FE_INVALID;
> +
> +  if (trap & GFC_FPE_ZERO)
> +    mode_set |= FE_DIVBYZERO;
> +  if (notrap & GFC_FPE_ZERO)
> +    mode_clr |= FE_DIVBYZERO;
> +
> +  if (trap & GFC_FPE_OVERFLOW)
> +    mode_set |= FE_OVERFLOW;
> +  if (notrap & GFC_FPE_OVERFLOW)
> +    mode_clr |= FE_OVERFLOW;
> +
> +  if (trap & GFC_FPE_UNDERFLOW)
> +    mode_set |= FE_UNDERFLOW;
> +  if (notrap & GFC_FPE_UNDERFLOW)
> +    mode_clr |= FE_UNDERFLOW;
> +
> +  if (trap & GFC_FPE_INEXACT)
> +    mode_set |= FE_INEXACT;
> +  if (notrap & GFC_FPE_INEXACT)
> +    mode_clr |= FE_INEXACT;
> +
> +  /* Clear stalled exception flags. */
> +  feclearexcept (FE_ALL_EXCEPT);
> +
> +  feenableexcept (mode_set);
> +  fedisableexcept (mode_clr);
> +}
> +
> +int get_fpu_except_flags (void)
> +{
> +  int result, set_excepts;
> +  result = 0;
> +  set_excepts = fetestexcept (FE_ALL_EXCEPT);
> +
> +  if (set_excepts & FE_INVALID)
> +    result |= GFC_FPE_INVALID;
> +  if (set_excepts & FE_DIVBYZERO)
> +    result |= GFC_FPE_ZERO;
> +  if (set_excepts & FE_OVERFLOW)
> +    result |= GFC_FPE_OVERFLOW;
> +  if (set_excepts & FE_UNDERFLOW)
> +    result |= GFC_FPE_UNDERFLOW;
> +  if (set_excepts & FE_INEXACT)
> +    result |= GFC_FPE_INEXACT;
> +
> +  return result;
> +}
> +
> +void set_fpu_except_flags (int set, int clear)
> +{
> +  unsigned int exc_set = 0, exc_clr = 0;
> +
> +  if (set & GFC_FPE_INVALID)
> +    exc_set |= FE_INVALID;
> +  else if (clear & GFC_FPE_INVALID)
> +    exc_clr |= FE_INVALID;
> +
> +  if (set & GFC_FPE_ZERO)
> +    exc_set |= FE_DIVBYZERO;
> +  else if (clear & GFC_FPE_ZERO)
> +    exc_clr |= FE_DIVBYZERO;
> +
> +  if (set & GFC_FPE_OVERFLOW)
> +    exc_set |= FE_OVERFLOW;
> +  else if (clear & GFC_FPE_OVERFLOW)
> +    exc_clr |= FE_OVERFLOW;
> +
> +  if (set & GFC_FPE_UNDERFLOW)
> +    exc_set |= FE_UNDERFLOW;
> +  else if (clear & GFC_FPE_UNDERFLOW)
> +    exc_clr |= FE_UNDERFLOW;
> +
> +  if (set & GFC_FPE_INEXACT)
> +    exc_set |= FE_INEXACT;
> +  else if (clear & GFC_FPE_INEXACT)
> +    exc_clr |= FE_INEXACT;
> +
> +  feclearexcept (exc_clr);
> +  feraiseexcept (exc_set);
> +}
> +
> +void get_fpu_state (void *state)
> +{
> +  fegetenv (state);
> +}
> +
> +void set_fpu_state (void *state)
> +{
> +  fesetenv (state);
> +}
> +
> +int get_fpu_rounding_mode (void)
> +{
> +  int rnd_mode;
> +  rnd_mode = fegetround();
> +
> +  switch (rnd_mode)
> +    {
> +      case FE_TONEAREST:
> +        return GFC_FPE_TONEAREST;
> +      case FE_UPWARD:
> +        return GFC_FPE_UPWARD;
> +      case FE_DOWNWARD:
> +        return GFC_FPE_DOWNWARD;
> +      case FE_TOWARDZERO:
> +        return GFC_FPE_TOWARDZERO;
> +      default:
> +        return 0; /* Should be unreachable. */
> +    }
> +}
> +
> +void set_fpu_rounding_mode (int round)
> +{
> +  int rnd_mode;
> +
> +  switch (round)
> +    {
> +    case GFC_FPE_TONEAREST:
> +      rnd_mode = FE_TONEAREST;
> +      break;
> +    case GFC_FPE_UPWARD:
> +      rnd_mode = FE_UPWARD;
> +      break;
> +    case GFC_FPE_DOWNWARD:
> +      rnd_mode = FE_DOWNWARD;
> +      break;
> +    case GFC_FPE_TOWARDZERO:
> +      rnd_mode = FE_TOWARDZERO;
> +      break;
> +    default:
> +      return; /* Should be unreachable. */
> +    }
> +
> +  fesetround (rnd_mode);
> +}
> +
> +int support_fpu_flag (int flag)
> +{
> +  if (flag & GFC_FPE_DENORMAL)
> +    return 0;
> +
> +  return 1;
> +}
> +
> +int support_fpu_trap (int flag)
> +{
> +  if (flag & GFC_FPE_DENORMAL)
> +    return 0;
> +
> +  return 1;
> +}
> +
> +int support_fpu_rounding_mode(int mode __attribute__((unused)))
> +{
> +  return 1;
> +}
> +
> +/* The following are not supported. */
> +
> +int support_fpu_underflow_control(int kind __attribute__((unused)))
> +{
> +  return 0;
> +}
> +
> +int get_fpu_underflow_mode(void)
> +{
> +  return 0;
> +}
> +
> +void set_fpu_underflow_mode(int gradual __attribute__((unused)))
> +{
> +}
> diff --git a/libgfortran/configure.host b/libgfortran/configure.host
> index b15969f0e65..291188d19c2 100644
> --- a/libgfortran/configure.host
> +++ b/libgfortran/configure.host
> @@ -61,6 +61,15 @@ case "${host_cpu}" in
>          ieee_support='yes'
>          ;;
>      esac
> +    ;;
> +
> +  powerpc*)
> +    case "${host_os}" in
> +      darwin*)
> +        fpu_host='fpu-macppc'
> +        ieee_support='yes'
> +        ;;
> +    esac
>
>  esac
>
> --
> 2.39.3 (Apple Git-146)
>
>

Reply via email to