]> git.ipfire.org Git - thirdparty/gcc.git/commit
Fortran: add IEEE_QUIET_* and IEEE_SIGNALING_* comparisons
authorFrancois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Fri, 2 Sep 2022 11:27:38 +0000 (13:27 +0200)
committerFrancois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Thu, 20 Jul 2023 08:54:54 +0000 (10:54 +0200)
commitdca2874897ec58ea1c22a9c2161f112fff07cfb2
treedb755d70113cc1ce9b0664af58e3f32847437fe0
parent34cf27a64e7af949538e65bc266963c24f8da458
Fortran: add IEEE_QUIET_* and IEEE_SIGNALING_* comparisons

Those operations were added to Fortran 2018, and correspond to
well-defined IEEE comparison operations, with defined signaling
semantics for NaNs. All are implemented in terms of GCC expressions and
built-ins, with no library support needed.

gcc/fortran/

* f95-lang.cc (gfc_init_builtin_functions): Add __builtin_iseqsig.
* trans-intrinsic.cc (conv_intrinsic_ieee_comparison): New
function.
(gfc_conv_ieee_arithmetic_function): Handle IEEE comparisons.

gcc/testsuite/

* gfortran.dg/ieee/comparisons_1.f90: New test.
* gfortran.dg/ieee/comparisons_2.f90: New test.
* gfortran.dg/ieee/comparisons_3.F90: New test.

libgfortran/
* ieee/ieee_arithmetic.F90: Add IEEE_QUIET_* and
IEEE_SIGNALING_* functions.
gcc/fortran/f95-lang.cc
gcc/fortran/trans-intrinsic.cc
gcc/testsuite/gfortran.dg/ieee/comparisons_1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/ieee/comparisons_2.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/ieee/comparisons_3.F90 [new file with mode: 0644]
libgfortran/ieee/ieee_arithmetic.F90