<pre style='margin:0'>
Ken (kencu) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/092362fb7b256c27879c2b2eeaf8a868198aae9b">https://github.com/macports/macports-ports/commit/092362fb7b256c27879c2b2eeaf8a868198aae9b</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 092362fb7b2 gcc14: Add ppc FPU patch
</span>092362fb7b2 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 092362fb7b256c27879c2b2eeaf8a868198aae9b
</span>Author: Gleb Mazovetskiy <glex.spb@gmail.com>
AuthorDate: Sun Nov 17 13:42:10 2024 +0000

<span style='display:block; white-space:pre;color:#404040;'>    gcc14: Add ppc FPU patch
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This patch is from upstream gcc commit at:
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    https://github.com/gcc-mirror/gcc/commit/1cfe4a4d0d4447b364815d5e5c889deb2e533669
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Per barracuda156@, this is needed for gfortran on ppc.
</span><span style='display:block; white-space:pre;color:#404040;'>    See https://github.com/macports/macports-ports/pull/26655#issuecomment-2481208553
</span>---
 lang/gcc14/Portfile                   |   5 +
 lang/gcc14/files/darwin-ppc-fpu.patch | 460 ++++++++++++++++++++++++++++++++++
 2 files changed, 465 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/gcc14/Portfile b/lang/gcc14/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index b1c3b799689..1f9ff2ab4cd 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/gcc14/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/gcc14/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -177,6 +177,7 @@ if { ${os.platform} eq "darwin" } {
</span>     # Patch generated from https://github.com/iains/gcc-14-branch
     # git diff --no-prefix releases/gcc-14.2.0 gcc-14.2-darwin-r1
     patchfiles-append      patch-darwin-gcc-${version}.diff
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     # GCC fixinc work-around for sys/ucred.h on OSX10.14.4 no longer seems to work ???
     if { ${os.major} == 18 } {
         patchfiles-append  patch-OSX10.14-ucred-atomic-define.diff
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -193,6 +194,10 @@ if { ${os.platform} eq "darwin" } {
</span>                            0002-libgcc-Darwin-Drop-the-legacy-library-build-for-macO.patch \
                            0003-libgcc-Darwin-Don-t-build-legacy-libgcc_s.1-on-macOS.patch
     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # This patch has been merged upstream in https://github.com/gcc-mirror/gcc/commit/1cfe4a4d0d4447b364815d5e5c889deb2e533669
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Remove it when upgrading gcc to a version that has it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append      darwin-ppc-fpu.patch
</span> }
 
 # Since GCC 7.4.0, during configure, it detects features supported by target-as.
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/gcc14/files/darwin-ppc-fpu.patch b/lang/gcc14/files/darwin-ppc-fpu.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..e31ac16585a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/gcc14/files/darwin-ppc-fpu.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,460 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 1cfe4a4d0d4447b364815d5e5c889deb2e533669 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 18 Aug 2024 18:52:51 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] libgfortran: implement fpu-macppc for Darwin, support IEEE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ arithmetic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This allows to build and use IEEE modules on Darwin PowerPC.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+libgfortran/ChangeLog:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   * config/fpu-macppc.h (new file): initial support for powerpc-darwin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   * configure.host: enable ieee_support for powerpc-darwin case,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   set fpu_host='fpu-macppc'.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Signed-off-by: Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ libgfortran/config/fpu-macppc.h | 413 ++++++++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ libgfortran/configure.host      |   9 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 422 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ create mode 100644 libgfortran/config/fpu-macppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git libgfortran/config/fpu-macppc.h libgfortran/config/fpu-macppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+new file mode 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0000000000000..cbffa01e0bba9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libgfortran/config/fpu-macppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,413 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* FPU-related code for PowerPC.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   Copyright (C) 2023-2024 Free Software Foundation, Inc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   Contributed by Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++This file is part of the GNU Fortran runtime library (libgfortran).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Libgfortran is free software; you can redistribute it and/or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++modify it under the terms of the GNU General Public
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++License as published by the Free Software Foundation; either
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++version 3 of the License, or (at your option) any later version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Libgfortran is distributed in the hope that it will be useful,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++the GNU General Public License for more details.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Under Section 7 of GPL version 3, you are granted additional
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++permissions described in the GCC Runtime Library Exception, version 3.1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++as published by the Free Software Foundation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++You should have received a copy of the GNU General Public License and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++a copy of the GCC Runtime Library Exception along with this program;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++<http://www.gnu.org/licenses/>. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* While some of the definitions and functions used here are available
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   with Apple libm, we on purpose avoid pulling it in: to avoid potential
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   conflicts and not self-impose unnecessary constraints. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* FP exception flags */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_INEXACT      0x02000000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_DIVBYZERO    0x04000000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_UNDERFLOW    0x08000000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_OVERFLOW     0x10000000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_INVALID      0x20000000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_ALL_EXCEPT   0x3E000000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_NO_EXCEPT    0xC1FFFFFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Extra invalid flags */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_INVALID_SNAN 0x01000000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_INVALID_ISI  0x00800000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_INVALID_IDI  0x00400000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_INVALID_ZDZ  0x00200000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_INVALID_IMZ  0x00100000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_INVALID_XVC  0x00080000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_INVALID_SOFT 0x00000400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_INVALID_SQRT 0x00000200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_INVALID_CVI  0x00000100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Rounding modes */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_TONEAREST    0x00000000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_TOWARDZERO   0x00000001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_UPWARD       0x00000002
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_DOWNWARD     0x00000003
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* There is no consistency re what is to be included in all_invalid.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   Apple libm has 0x01f80300, Openlibm/FreeBSD/NetBSD has 0x21f80700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   and OpenBSD has 0x01f80700. In particular, FE_INVALID_SOFT and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   FE_INVALID are contested. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_ALL_INVALID  0x01F80300
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_NO_INVALID   0xFE07FCFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_ALL_FLAGS    0xFFF80300
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_NO_FLAGS     0x0007FCFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_ALL_RND      0x00000003
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_NO_RND       0xFFFFFFFC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Floating-point exception summary (FX) bit. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_SET_FX       0x80000000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_CLR_FX       0x7FFFFFFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Some implementations use FE_INVALID_SOFT here. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SET_INVALID     0x01000000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_EXCEPT_SHIFT 22
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define EXCEPT_MASK     FE_ALL_EXCEPT >> FE_EXCEPT_SHIFT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++typedef unsigned int    fenv_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++typedef unsigned int    fexcept_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* default environment object */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern const fenv_t     _FE_DFL_ENV;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* pointer to default environment */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FE_DFL_ENV      &_FE_DFL_ENV
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++typedef union {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    struct {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        unsigned int hi;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        fenv_t       lo;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    } i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    double           d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++} hexdouble;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define HEXDOUBLE(hi, lo) {{ hi, lo }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Check we can actually store the FPU state in the allocated size. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++_Static_assert (sizeof(fenv_t) <= (size_t) GFC_FPE_STATE_BUFFER_SIZE,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   "GFC_FPE_STATE_BUFFER_SIZE is too small");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline int fegetexcept(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hexdouble fe;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.d = __builtin_mffs();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return ((fe.i.lo & EXCEPT_MASK) << FE_EXCEPT_SHIFT);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline int feclearexcept(int excepts)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hexdouble fe;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (excepts & FE_INVALID)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        excepts |= FE_ALL_INVALID;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.d = __builtin_mffs();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.i.lo &= ~excepts;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if ((fe.i.lo & FE_ALL_EXCEPT) == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        fe.i.lo &= FE_CLR_FX;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __builtin_mtfsf(0xFF, fe.d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* It is not possible to set VX bit directly. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline int feraiseexcept(int excepts)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hexdouble fe;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (excepts & FE_INVALID)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        excepts |= SET_INVALID;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.d = __builtin_mffs();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.i.lo |= excepts;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __builtin_mtfsf(0xFF, fe.d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline int fetestexcept(int excepts)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hexdouble fe;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    excepts &= FE_ALL_EXCEPT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.d = __builtin_mffs();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return (fe.i.lo & (excepts & FE_ALL_EXCEPT));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline int feenableexcept(int mask)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hexdouble fe;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fenv_t oldmask;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.d = __builtin_mffs();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    oldmask = fe.i.lo;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.i.lo |= (mask & FE_ALL_EXCEPT) >> FE_EXCEPT_SHIFT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __builtin_mtfsf(0xFF, fe.d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return ((oldmask & EXCEPT_MASK) << FE_EXCEPT_SHIFT);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline int fedisableexcept(int mask)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hexdouble fe;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fenv_t oldmask;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.d = __builtin_mffs();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    oldmask = fe.i.lo;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.i.lo &= ~((mask & FE_ALL_EXCEPT) >> FE_EXCEPT_SHIFT);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __builtin_mtfsf(0xFF, fe.d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return ((oldmask & EXCEPT_MASK) << FE_EXCEPT_SHIFT);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline int fegetround(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hexdouble fe;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.d = __builtin_mffs();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return (fe.i.lo & FE_ALL_RND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline int fesetround(int round)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hexdouble fe;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (round & FE_NO_RND)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return (-1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.d = __builtin_mffs();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.i.lo = (fe.i.lo & FE_NO_RND) | round;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __builtin_mtfsf(0xFF, fe.d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline int fegetenv(fenv_t *envp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hexdouble fe;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.d = __builtin_mffs();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    *envp = fe.i.lo;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline int fesetenv(const fenv_t *envp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hexdouble fe;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fe.i.lo = *envp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __builtin_mtfsf(0xFF, fe.d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int get_fpu_trap_exceptions (void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int exceptions = fegetexcept();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int res = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (exceptions & FE_INVALID) res |= GFC_FPE_INVALID;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (exceptions & FE_DIVBYZERO) res |= GFC_FPE_ZERO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (exceptions & FE_OVERFLOW) res |= GFC_FPE_OVERFLOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (exceptions & FE_UNDERFLOW) res |= GFC_FPE_UNDERFLOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (exceptions & FE_INEXACT) res |= GFC_FPE_INEXACT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return res;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void set_fpu (void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (options.fpe & GFC_FPE_DENORMAL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    estr_write ("Fortran runtime warning: Floating point 'denormal operand' "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            "exception not supported.\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  set_fpu_trap_exceptions (options.fpe, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void set_fpu_trap_exceptions (int trap, int notrap)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  unsigned int mode_set = 0, mode_clr = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (trap & GFC_FPE_INVALID)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mode_set |= FE_INVALID;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (notrap & GFC_FPE_INVALID)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mode_clr |= FE_INVALID;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (trap & GFC_FPE_ZERO)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mode_set |= FE_DIVBYZERO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (notrap & GFC_FPE_ZERO)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mode_clr |= FE_DIVBYZERO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (trap & GFC_FPE_OVERFLOW)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mode_set |= FE_OVERFLOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (notrap & GFC_FPE_OVERFLOW)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mode_clr |= FE_OVERFLOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (trap & GFC_FPE_UNDERFLOW)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mode_set |= FE_UNDERFLOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (notrap & GFC_FPE_UNDERFLOW)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mode_clr |= FE_UNDERFLOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (trap & GFC_FPE_INEXACT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mode_set |= FE_INEXACT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (notrap & GFC_FPE_INEXACT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mode_clr |= FE_INEXACT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  /* Clear stalled exception flags. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  feclearexcept (FE_ALL_EXCEPT);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  feenableexcept (mode_set);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  fedisableexcept (mode_clr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int get_fpu_except_flags (void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int result, set_excepts;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  result = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  set_excepts = fetestexcept (FE_ALL_EXCEPT);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (set_excepts & FE_INVALID)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    result |= GFC_FPE_INVALID;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (set_excepts & FE_DIVBYZERO)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    result |= GFC_FPE_ZERO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (set_excepts & FE_OVERFLOW)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    result |= GFC_FPE_OVERFLOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (set_excepts & FE_UNDERFLOW)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    result |= GFC_FPE_UNDERFLOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (set_excepts & FE_INEXACT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    result |= GFC_FPE_INEXACT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return result;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void set_fpu_except_flags (int set, int clear)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  unsigned int exc_set = 0, exc_clr = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (set & GFC_FPE_INVALID)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    exc_set |= FE_INVALID;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  else if (clear & GFC_FPE_INVALID)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    exc_clr |= FE_INVALID;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (set & GFC_FPE_ZERO)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    exc_set |= FE_DIVBYZERO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  else if (clear & GFC_FPE_ZERO)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    exc_clr |= FE_DIVBYZERO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (set & GFC_FPE_OVERFLOW)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    exc_set |= FE_OVERFLOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  else if (clear & GFC_FPE_OVERFLOW)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    exc_clr |= FE_OVERFLOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (set & GFC_FPE_UNDERFLOW)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    exc_set |= FE_UNDERFLOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  else if (clear & GFC_FPE_UNDERFLOW)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    exc_clr |= FE_UNDERFLOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (set & GFC_FPE_INEXACT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    exc_set |= FE_INEXACT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  else if (clear & GFC_FPE_INEXACT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    exc_clr |= FE_INEXACT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  feclearexcept (exc_clr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  feraiseexcept (exc_set);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void get_fpu_state (void *state)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  fegetenv (state);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void set_fpu_state (void *state)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  fesetenv (state);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int get_fpu_rounding_mode (void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int rnd_mode;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  rnd_mode = fegetround();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  switch (rnd_mode)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      case FE_TONEAREST:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return GFC_FPE_TONEAREST;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      case FE_UPWARD:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return GFC_FPE_UPWARD;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      case FE_DOWNWARD:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return GFC_FPE_DOWNWARD;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      case FE_TOWARDZERO:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return GFC_FPE_TOWARDZERO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return 0; /* Should be unreachable. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void set_fpu_rounding_mode (int round)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int rnd_mode;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  switch (round)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case GFC_FPE_TONEAREST:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      rnd_mode = FE_TONEAREST;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case GFC_FPE_UPWARD:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      rnd_mode = FE_UPWARD;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case GFC_FPE_DOWNWARD:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      rnd_mode = FE_DOWNWARD;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case GFC_FPE_TOWARDZERO:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      rnd_mode = FE_TOWARDZERO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      return; /* Should be unreachable. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  fesetround (rnd_mode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int support_fpu_flag (int flag)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (flag & GFC_FPE_DENORMAL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int support_fpu_trap (int flag)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (flag & GFC_FPE_DENORMAL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int support_fpu_rounding_mode(int mode __attribute__((unused)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* The following are not supported. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int support_fpu_underflow_control(int kind __attribute__((unused)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int get_fpu_underflow_mode(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void set_fpu_underflow_mode(int gradual __attribute__((unused)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git libgfortran/configure.host libgfortran/configure.host
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b15969f0e65a7..291188d19c29c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libgfortran/configure.host
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libgfortran/configure.host
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -61,6 +61,15 @@ case "${host_cpu}" in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ieee_support='yes'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     esac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  powerpc*)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case "${host_os}" in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      darwin*)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        fpu_host='fpu-macppc'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ieee_support='yes'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    esac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ esac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span></pre><pre style='margin:0'>

</pre>