aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/f95-lang.cc
diff options
context:
space:
mode:
authorFrancois-Xavier Coudert <fxcoudert@gcc.gnu.org>2022-09-09 19:12:31 +0200
committerFrancois-Xavier Coudert <fxcoudert@gcc.gnu.org>2023-06-10 17:39:29 +0200
commit17bccd1d2c0fa1f08e0483c8ed841994a95febb0 (patch)
treea7215e7dc2894fd80f228c607b2959ec6ea3907f /gcc/fortran/f95-lang.cc
parentdb80262475d28ae074a2cda7a1a6c2ea525791b9 (diff)
downloadgcc-17bccd1d2c0fa1f08e0483c8ed841994a95febb0.zip
gcc-17bccd1d2c0fa1f08e0483c8ed841994a95febb0.tar.gz
gcc-17bccd1d2c0fa1f08e0483c8ed841994a95febb0.tar.bz2
Fortran: add Fortran 2018 IEEE_{MIN,MAX} functions
libgfortran/ * ieee/ieee_arithmetic.F90: Add IEEE_MIN_NUM, IEEE_MAX_NUM, IEEE_MIN_NUM_MAG, and IEEE_MAX_NUM_MAG functions. gcc/fortran/ * f95-lang.cc (gfc_init_builtin_functions): Add fmax() and fmin() built-ins, and their variants. * mathbuiltins.def: Add FMAX and FMIN built-ins. * trans-intrinsic.cc (conv_intrinsic_ieee_minmax): New function. (gfc_conv_ieee_arithmetic_function): Handle IEEE_MIN_NUM and IEEE_MAX_NUM functions. gcc/testsuite/ * gfortran.dg/ieee/minmax_1.f90: New test.
Diffstat (limited to 'gcc/fortran/f95-lang.cc')
-rw-r--r--gcc/fortran/f95-lang.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/fortran/f95-lang.cc b/gcc/fortran/f95-lang.cc
index 9684f1d..89944f4 100644
--- a/gcc/fortran/f95-lang.cc
+++ b/gcc/fortran/f95-lang.cc
@@ -836,6 +836,20 @@ gfc_init_builtin_functions (void)
gfc_define_builtin ("__builtin_scalbnf", mfunc_float[2],
BUILT_IN_SCALBNF, "scalbnf", ATTR_CONST_NOTHROW_LEAF_LIST);
+ gfc_define_builtin ("__builtin_fmaxl", mfunc_longdouble[1],
+ BUILT_IN_FMAXL, "fmaxl", ATTR_CONST_NOTHROW_LEAF_LIST);
+ gfc_define_builtin ("__builtin_fmax", mfunc_double[1],
+ BUILT_IN_FMAX, "fmax", ATTR_CONST_NOTHROW_LEAF_LIST);
+ gfc_define_builtin ("__builtin_fmaxf", mfunc_float[1],
+ BUILT_IN_FMAXF, "fmaxf", ATTR_CONST_NOTHROW_LEAF_LIST);
+
+ gfc_define_builtin ("__builtin_fminl", mfunc_longdouble[1],
+ BUILT_IN_FMINL, "fminl", ATTR_CONST_NOTHROW_LEAF_LIST);
+ gfc_define_builtin ("__builtin_fmin", mfunc_double[1],
+ BUILT_IN_FMIN, "fmin", ATTR_CONST_NOTHROW_LEAF_LIST);
+ gfc_define_builtin ("__builtin_fminf", mfunc_float[1],
+ BUILT_IN_FMINF, "fminf", ATTR_CONST_NOTHROW_LEAF_LIST);
+
gfc_define_builtin ("__builtin_fmodl", mfunc_longdouble[1],
BUILT_IN_FMODL, "fmodl", ATTR_CONST_NOTHROW_LEAF_LIST);
gfc_define_builtin ("__builtin_fmod", mfunc_double[1],