From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by sourceware.org (Postfix) with ESMTPS id 6AFC23858D33; Tue, 6 Jun 2023 13:19:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6AFC23858D33 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-3f7373b5499so5167905e9.1; Tue, 06 Jun 2023 06:19:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686057570; x=1688649570; h=to:cc:date:message-id:subject:mime-version:from:from:to:cc:subject :date:message-id:reply-to; bh=3Db1ZCLerreLZOy3vPdG8iFR1sSXkDcMOvFkFHE4Neo=; b=WGbnXV10M1psTPuBQ9S4A3ZBqB4DNa1DL7kcK0HGa2XvJ/fycIy5iaDR/CL8pQswh4 gevK8XMgLCIKwlL/KmoXMcva465Mg2RyBSG9536F72iBKHnxEpKkqKuzvKzOHlQ9bq1h LfsEjB8+j88VjRXlHRG7EQGyTP+hlqPUPBsk5OU1fxb0O61wFGTkDT36uMEFRKW5U2gF nKbHG646osigLPjY6jOl3q6Oy8YNQDuHkRsYf2ROLxaMUxE32RZuYZXsDM8xvKa7Wict y6TXzLvVAirN4wH5jw27OG/I1nxHyw5k4mALxxE1/yKcBinEkh96TnTDnWr5D0nHmu4K 7MEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686057570; x=1688649570; h=to:cc:date:message-id:subject:mime-version:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=3Db1ZCLerreLZOy3vPdG8iFR1sSXkDcMOvFkFHE4Neo=; b=aAlrR1u5IoG9lsKMhIctDuEqbBJzUSzuVt658Ac94A5TbW4cyCUOkADhpZOPesjhd0 WeXRjp9Y2BjCqFEfa/g1ZJRHz0xQHNMNJvjJIRGzg13m+Ie46pv36gXd1VPYPWJ4AEen iwR7Z3HaiZ5OzVclVVBnMo4+v0Vdalu/I2IsjXBeY5p0s5+gQ4UFBMrp0D5adi8Egwcp Pl3p4CBRa1Iab+bP/EQG0UW+caUf4BKZ5hK9WucdIrpJ5FQnu6hHK9GRm/6XDiQeQ+Vu ZZrxFWs2klBnRraCPRWdgN2GGERYbjh+D0JKGfLjvZzIyTpxdkWIpNiltpSmA06nEmnX rrYg== X-Gm-Message-State: AC+VfDw633EadCdIiGw51CORpHm2aNYgkNiyz2eBVnseyQbQnKDIO01l zboHO7newPnENE6qn4U66D3Kf/vEYlpJQQ== X-Google-Smtp-Source: ACHHUZ7vucHKlabnl4d7hu8subr567h8KcMkJ2kYo/tIrM42aBMLV5UTo5jd2OVwS+IT8SJOqtCDow== X-Received: by 2002:a05:600c:1e28:b0:3f6:487:f058 with SMTP id ay40-20020a05600c1e2800b003f60487f058mr2843571wmb.1.1686057569814; Tue, 06 Jun 2023 06:19:29 -0700 (PDT) Received: from smtpclient.apple (chp127.enscp.fr. [193.51.253.127]) by smtp.gmail.com with ESMTPSA id m15-20020a7bca4f000000b003f733c1129fsm10553254wml.33.2023.06.06.06.19.29 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2023 06:19:29 -0700 (PDT) From: FX Content-Type: multipart/mixed; boundary="Apple-Mail=_5066CCA9-B1E1-4C30-9CF5-06FE42AE3C48" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.600.7\)) Subject: [PATCH] Fortran: add Fortran 2018 IEEE_{MIN,MAX} functions Message-Id: <34D02A51-4240-4816-B874-54D7CFFE9FC6@gmail.com> Date: Tue, 6 Jun 2023 15:19:18 +0200 Cc: gcc-patches@gcc.gnu.org To: fortran@gcc.gnu.org X-Mailer: Apple Mail (2.3731.600.7) X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --Apple-Mail=_5066CCA9-B1E1-4C30-9CF5-06FE42AE3C48 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Hi, This patch adds four IEEE functions from the Fortran 2018 standard: = IEEE_MIN_NUM, IEEE_MAX_NUM, IEEE_MIN_NUM_MAG, and IEEE_MAX_NUM_MAG. Bootstrapped and regtested on x86_64-pc-linux-gnu, both 32 and 64-bit. = OK to commit? FX --Apple-Mail=_5066CCA9-B1E1-4C30-9CF5-06FE42AE3C48 Content-Disposition: attachment; filename=0001-Fortran-add-Fortran-2018-IEEE_-MIN-MAX-functions.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-Fortran-add-Fortran-2018-IEEE_-MIN-MAX-functions.patch" Content-Transfer-Encoding: quoted-printable =46rom=20915fd0427b77a308281ce42990501620bbd933a7=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Francois-Xavier=20Coudert=20= =0ADate:=20Fri,=209=20Sep=202022=2019:12:31=20= +0200=0ASubject:=20[PATCH]=20Fortran:=20add=20Fortran=202018=20= IEEE_{MIN,MAX}=20functions=0A=0Alibgfortran/=0A=0A=09*=20= ieee/ieee_arithmetic.F90:=20Add=20IEEE_MIN_NUM,=20IEEE_MAX_NUM,=0A=09= IEEE_MIN_NUM_MAG,=20and=20IEEE_MAX_NUM_MAG=20functions.=0A=0A= gcc/fortran/=0A=0A=09*=20f95-lang.cc=20(gfc_init_builtin_functions):=20= Add=20fmax()=20and=0A=09fmin()=20built-ins,=20and=20their=20variants.=0A=09= *=20mathbuiltins.def:=20Add=20FMAX=20and=20FMIN=20built-ins.=0A=09*=20= trans-intrinsic.cc=20(conv_intrinsic_ieee_minmax):=20New=20function.=0A=09= (gfc_conv_ieee_arithmetic_function):=20Handle=20IEEE_MIN_NUM=20and=0A=09= IEEE_MAX_NUM=20functions.=0A=0Agcc/testsuite/=0A=09*=20= gfortran.dg/ieee/minmax_1.f90:=20New=20test.=0A---=0A=20= gcc/fortran/f95-lang.cc=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20=2014=20++=0A=20gcc/fortran/mathbuiltins.def=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20=20=202=20+=0A=20= gcc/fortran/trans-intrinsic.cc=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20117=20++++++++++=0A=20gcc/testsuite/gfortran.dg/ieee/minmax_1.f90=20= |=20235=20++++++++++++++++++++=0A=20= gcc/testsuite/gfortran.dg/ieee/minmax_2.f90=20|=20235=20= ++++++++++++++++++++=0A=20gcc/testsuite/gfortran.dg/ieee/minmax_3.f90=20= |=20235=20++++++++++++++++++++=0A=20= gcc/testsuite/gfortran.dg/ieee/minmax_4.f90=20|=20235=20= ++++++++++++++++++++=0A=20libgfortran/ieee/ieee_arithmetic.F90=20=20=20=20= =20=20=20=20|=20126=20+++++++++++=0A=208=20files=20changed,=201199=20= insertions(+)=0A=20create=20mode=20100644=20= gcc/testsuite/gfortran.dg/ieee/minmax_1.f90=0A=20create=20mode=20100644=20= gcc/testsuite/gfortran.dg/ieee/minmax_2.f90=0A=20create=20mode=20100644=20= gcc/testsuite/gfortran.dg/ieee/minmax_3.f90=0A=20create=20mode=20100644=20= gcc/testsuite/gfortran.dg/ieee/minmax_4.f90=0A=0Adiff=20--git=20= a/gcc/fortran/f95-lang.cc=20b/gcc/fortran/f95-lang.cc=0Aindex=20= 9684f1d4921..89944f4e383=20100644=0A---=20a/gcc/fortran/f95-lang.cc=0A= +++=20b/gcc/fortran/f95-lang.cc=0A@@=20-836,6=20+836,20=20@@=20= gfc_init_builtin_functions=20(void)=0A=20=20=20gfc_define_builtin=20= ("__builtin_scalbnf",=20mfunc_float[2],=0A=20=09=09=20=20=20=20=20=20= BUILT_IN_SCALBNF,=20"scalbnf",=20ATTR_CONST_NOTHROW_LEAF_LIST);=0A=20=20=0A= +=20=20gfc_define_builtin=20("__builtin_fmaxl",=20mfunc_longdouble[1],=0A= +=09=09=20=20=20=20=20=20BUILT_IN_FMAXL,=20"fmaxl",=20= ATTR_CONST_NOTHROW_LEAF_LIST);=0A+=20=20gfc_define_builtin=20= ("__builtin_fmax",=20mfunc_double[1],=0A+=09=09=20=20=20=20=20=20= BUILT_IN_FMAX,=20"fmax",=20ATTR_CONST_NOTHROW_LEAF_LIST);=0A+=20=20= gfc_define_builtin=20("__builtin_fmaxf",=20mfunc_float[1],=0A+=09=09=20=20= =20=20=20=20BUILT_IN_FMAXF,=20"fmaxf",=20ATTR_CONST_NOTHROW_LEAF_LIST);=0A= +=0A+=20=20gfc_define_builtin=20("__builtin_fminl",=20= mfunc_longdouble[1],=0A+=09=09=20=20=20=20=20=20BUILT_IN_FMINL,=20= "fminl",=20ATTR_CONST_NOTHROW_LEAF_LIST);=0A+=20=20gfc_define_builtin=20= ("__builtin_fmin",=20mfunc_double[1],=0A+=09=09=20=20=20=20=20=20= BUILT_IN_FMIN,=20"fmin",=20ATTR_CONST_NOTHROW_LEAF_LIST);=0A+=20=20= gfc_define_builtin=20("__builtin_fminf",=20mfunc_float[1],=0A+=09=09=20=20= =20=20=20=20BUILT_IN_FMINF,=20"fminf",=20ATTR_CONST_NOTHROW_LEAF_LIST);=0A= +=0A=20=20=20gfc_define_builtin=20("__builtin_fmodl",=20= mfunc_longdouble[1],=20=0A=20=09=09=20=20=20=20=20=20BUILT_IN_FMODL,=20= "fmodl",=20ATTR_CONST_NOTHROW_LEAF_LIST);=0A=20=20=20gfc_define_builtin=20= ("__builtin_fmod",=20mfunc_double[1],=20=0Adiff=20--git=20= a/gcc/fortran/mathbuiltins.def=20b/gcc/fortran/mathbuiltins.def=0Aindex=20= c6bb3e88eeb..51cb9a4aa91=20100644=0A---=20a/gcc/fortran/mathbuiltins.def=0A= +++=20b/gcc/fortran/mathbuiltins.def=0A@@=20-61,6=20+61,8=20@@=20= OTHER_BUILTIN=20(COPYSIGN,=20=20"copysign",=20=202,=20=20=20=20=20=20=20= true)=0A=20OTHER_BUILTIN=20(CPOW,=20=20=20=20=20=20"cpow",=20=20=20=20=20= =20cpow,=20=20=20=20true)=0A=20OTHER_BUILTIN=20(FABS,=20=20=20=20=20=20= "fabs",=20=20=20=20=20=201,=20=20=20=20=20=20=20true)=0A=20OTHER_BUILTIN=20= (FMA,=20=20=20=20=20=20=20"fma",=20=20=20=20=20=20=203,=20=20=20=20=20=20= =20true)=0A+OTHER_BUILTIN=20(FMAX,=20=20=20=20=20=20"fmax",=20=20=20=20=20= =202,=20=20=20=20=20=20=20true)=0A+OTHER_BUILTIN=20(FMIN,=20=20=20=20=20=20= "fmin",=20=20=20=20=20=202,=20=20=20=20=20=20=20true)=0A=20OTHER_BUILTIN=20= (FMOD,=20=20=20=20=20=20"fmod",=20=20=20=20=20=202,=20=20=20=20=20=20=20= true)=0A=20OTHER_BUILTIN=20(FREXP,=20=20=20=20=20"frexp",=20=20=20=20=20= frexp,=20=20=20false)=0A=20OTHER_BUILTIN=20(LOGB,=20=20=20=20=20=20= "logb",=20=20=20=20=20=201,=20=20=20=20=20=20=20true)=0Adiff=20--git=20= a/gcc/fortran/trans-intrinsic.cc=20b/gcc/fortran/trans-intrinsic.cc=0A= index=20a0e1110c5e0..b6ea26e413d=20100644=0A---=20= a/gcc/fortran/trans-intrinsic.cc=0A+++=20= b/gcc/fortran/trans-intrinsic.cc=0A@@=20-10263,6=20+10263,119=20@@=20= conv_intrinsic_ieee_fma=20(gfc_se=20*=20se,=20gfc_expr=20*=20expr)=0A=20= }=0A=20=0A=20=0A+/*=20Generate=20code=20for=20IEEE_{MIN,MAX}_NUM{,_MAG}.=20= =20*/=0A+=0A+static=20void=0A+conv_intrinsic_ieee_minmax=20(gfc_se=20*=20= se,=20gfc_expr=20*=20expr,=20int=20max,=0A+=09=09=09=20=20=20=20const=20= char=20*name)=0A+{=0A+=20=20tree=20args[2],=20func;=0A+=20=20= built_in_function=20fn;=0A+=0A+=20=20conv_ieee_function_args=20(se,=20= expr,=20args,=202);=0A+=20=20gcc_assert=20(TYPE_PRECISION=20(TREE_TYPE=20= (args[0]))=20=3D=3D=20TYPE_PRECISION=20(TREE_TYPE=20(args[1])));=0A+=20=20= args[0]=20=3D=20gfc_evaluate_now=20(args[0],=20&se->pre);=0A+=20=20= args[1]=20=3D=20gfc_evaluate_now=20(args[1],=20&se->pre);=0A+=0A+=20=20= if=20(startswith=20(name,=20"mag"))=0A+=20=20=20=20{=0A+=20=20=20=20=20=20= /*=20IEEE_MIN_NUM_MAG=20and=20IEEE_MAX_NUM_MAG=20translate=20to=20C=20= functions=0A+=09=20fminmag()=20and=20fmaxmag(),=20which=20do=20not=20= exist=20as=20built-ins.=0A+=0A+=09=20Following=20glibc,=20we=20emit=20= this:=0A+=0A+=09=20=20=20fminmag=20(x,=20y)=20{=0A+=09=20=20=20=20=20ax=20= =3D=20ABS=20(x);=0A+=09=20=20=20=20=20ay=20=3D=20ABS=20(y);=0A+=09=20=20=20= =20=20if=20(isless=20(ax,=20ay))=0A+=09=20=20=20=20=20=20=20return=20x;=0A= +=09=20=20=20=20=20else=20if=20(isgreater=20(ax,=20ay))=0A+=09=20=20=20=20= =20=20=20return=20y;=0A+=09=20=20=20=20=20else=20if=20(ax=20=3D=3D=20ay)=0A= +=09=20=20=20=20=20=20=20return=20x=20<=20y=20?=20x=20:=20y;=0A+=09=20=20= =20=20=20else=20if=20(issignaling=20(x)=20||=20issignaling=20(y))=0A+=09=20= =20=20=20=20=20=20return=20x=20+=20y;=0A+=09=20=20=20=20=20else=0A+=09=20= =20=20=20=20=20=20return=20isnan=20(y)=20?=20x=20:=20y;=0A+=09=20=20=20}=0A= +=0A+=09=20=20=20fmaxmag=20(x,=20y)=20{=0A+=09=20=20=20=20=20ax=20=3D=20= ABS=20(x);=0A+=09=20=20=20=20=20ay=20=3D=20ABS=20(y);=0A+=09=20=20=20=20=20= if=20(isgreater=20(ax,=20ay))=0A+=09=20=20=20=20=20=20=20return=20x;=0A+=09= =20=20=20=20=20else=20if=20(isless=20(ax,=20ay))=0A+=09=20=20=20=20=20=20= =20return=20y;=0A+=09=20=20=20=20=20else=20if=20(ax=20=3D=3D=20ay)=0A+=09= =20=20=20=20=20=20=20return=20x=20>=20y=20?=20x=20:=20y;=0A+=09=20=20=20=20= =20else=20if=20(issignaling=20(x)=20||=20issignaling=20(y))=0A+=09=20=20=20= =20=20=20=20return=20x=20+=20y;=0A+=09=20=20=20=20=20else=0A+=09=20=20=20= =20=20=20=20return=20isnan=20(y)=20?=20x=20:=20y;=0A+=09=20=20=20}=0A+=0A= +=09=20*/=0A+=0A+=20=20=20=20=20=20tree=20abs0,=20abs1,=20sig0,=20sig1;=0A= +=20=20=20=20=20=20tree=20cond1,=20cond2,=20cond3,=20cond4,=20cond5;=0A+=20= =20=20=20=20=20tree=20res;=0A+=20=20=20=20=20=20tree=20type=20=3D=20= TREE_TYPE=20(args[0]);=0A+=0A+=20=20=20=20=20=20func=20=3D=20= gfc_builtin_decl_for_float_kind=20(BUILT_IN_FABS,=20expr->ts.kind);=0A+=20= =20=20=20=20=20abs0=20=3D=20build_call_expr_loc=20(input_location,=20= func,=201,=20args[0]);=0A+=20=20=20=20=20=20abs1=20=3D=20= build_call_expr_loc=20(input_location,=20func,=201,=20args[1]);=0A+=20=20= =20=20=20=20abs0=20=3D=20gfc_evaluate_now=20(abs0,=20&se->pre);=0A+=20=20= =20=20=20=20abs1=20=3D=20gfc_evaluate_now=20(abs1,=20&se->pre);=0A+=0A+=20= =20=20=20=20=20cond5=20=3D=20build_call_expr_loc=20(input_location,=0A+=09= =09=09=09=20=20=20builtin_decl_explicit=20(BUILT_IN_ISNAN),=0A+=09=09=09=09= =20=20=201,=20args[1]);=0A+=20=20=20=20=20=20res=20=3D=20fold_build3_loc=20= (input_location,=20COND_EXPR,=20type,=20cond5,=0A+=09=09=09=20=20=20=20=20= args[0],=20args[1]);=0A+=0A+=20=20=20=20=20=20sig0=20=3D=20= build_call_expr_loc=20(input_location,=0A+=09=09=09=09=20=20= builtin_decl_explicit=20(BUILT_IN_ISSIGNALING),=0A+=09=09=09=09=20=201,=20= args[0]);=0A+=20=20=20=20=20=20sig1=20=3D=20build_call_expr_loc=20= (input_location,=0A+=09=09=09=09=20=20builtin_decl_explicit=20= (BUILT_IN_ISSIGNALING),=0A+=09=09=09=09=20=201,=20args[1]);=0A+=20=20=20=20= =20=20cond4=20=3D=20fold_build2_loc=20(input_location,=20= TRUTH_ORIF_EXPR,=0A+=09=09=09=20=20=20=20=20=20=20logical_type_node,=20= sig0,=20sig1);=0A+=20=20=20=20=20=20res=20=3D=20fold_build3_loc=20= (input_location,=20COND_EXPR,=20type,=20cond4,=0A+=09=09=09=20=20=20=20=20= fold_build2_loc=20(input_location,=20PLUS_EXPR,=0A+=09=09=09=09=09=20=20=20= =20=20=20type,=20args[0],=20args[1]),=0A+=09=09=09=20=20=20=20=20res);=0A= +=0A+=20=20=20=20=20=20cond3=20=3D=20fold_build2_loc=20(input_location,=20= EQ_EXPR,=20logical_type_node,=0A+=09=09=09=20=20=20=20=20=20=20abs0,=20= abs1);=0A+=20=20=20=20=20=20res=20=3D=20fold_build3_loc=20= (input_location,=20COND_EXPR,=20type,=20cond3,=0A+=09=09=09=20=20=20=20=20= fold_build2_loc=20(input_location,=0A+=09=09=09=09=09=20=20=20=20=20=20= max=20?=20MAX_EXPR=20:=20MIN_EXPR,=0A+=09=09=09=09=09=20=20=20=20=20=20= type,=20args[0],=20args[1]),=0A+=09=09=09=20=20=20=20=20res);=0A+=0A+=20=20= =20=20=20=20func=20=3D=20builtin_decl_explicit=20(max=20?=20= BUILT_IN_ISLESS=20:=20BUILT_IN_ISGREATER);=0A+=20=20=20=20=20=20cond2=20= =3D=20build_call_expr_loc=20(input_location,=20func,=202,=20abs0,=20= abs1);=0A+=20=20=20=20=20=20res=20=3D=20fold_build3_loc=20= (input_location,=20COND_EXPR,=20type,=20cond2,=0A+=09=09=09=20=20=20=20=20= args[1],=20res);=0A+=0A+=20=20=20=20=20=20func=20=3D=20= builtin_decl_explicit=20(max=20?=20BUILT_IN_ISGREATER=20:=20= BUILT_IN_ISLESS);=0A+=20=20=20=20=20=20cond1=20=3D=20build_call_expr_loc=20= (input_location,=20func,=202,=20abs0,=20abs1);=0A+=20=20=20=20=20=20res=20= =3D=20fold_build3_loc=20(input_location,=20COND_EXPR,=20type,=20cond1,=0A= +=09=09=09=20=20=20=20=20args[0],=20res);=0A+=0A+=20=20=20=20=20=20= se->expr=20=3D=20res;=0A+=20=20=20=20}=0A+=20=20else=0A+=20=20=20=20{=0A= +=20=20=20=20=20=20/*=20IEEE_MIN_NUM=20and=20IEEE_MAX_NUM=20translate=20= to=20fmin()=20and=20fmax().=20=20*/=0A+=20=20=20=20=20=20fn=20=3D=20max=20= ?=20BUILT_IN_FMAX=20:=20BUILT_IN_FMIN;=0A+=20=20=20=20=20=20func=20=3D=20= gfc_builtin_decl_for_float_kind=20(fn,=20expr->ts.kind);=0A+=20=20=20=20=20= =20se->expr=20=3D=20build_call_expr_loc_array=20(input_location,=20func,=20= 2,=20args);=0A+=20=20=20=20}=0A+}=0A+=0A+=0A=20/*=20Generate=20code=20= for=20an=20intrinsic=20function=20from=20the=20IEEE_ARITHMETIC=0A=20=20=20= =20module.=20=20*/=0A=20=0A@@=20-10301,6=20+10414,10=20@@=20= gfc_conv_ieee_arithmetic_function=20(gfc_se=20*=20se,=20gfc_expr=20*=20= expr)=0A=20=20=20=20=20conv_intrinsic_ieee_value=20(se,=20expr);=0A=20=20= =20else=20if=20(startswith=20(name,=20"_gfortran_ieee_fma"))=0A=20=20=20=20= =20conv_intrinsic_ieee_fma=20(se,=20expr);=0A+=20=20else=20if=20= (startswith=20(name,=20"_gfortran_ieee_min_num_"))=0A+=20=20=20=20= conv_intrinsic_ieee_minmax=20(se,=20expr,=200,=20name=20+=2023);=0A+=20=20= else=20if=20(startswith=20(name,=20"_gfortran_ieee_max_num_"))=0A+=20=20=20= =20conv_intrinsic_ieee_minmax=20(se,=20expr,=201,=20name=20+=2023);=0A=20= =20=20else=0A=20=20=20=20=20/*=20It=20is=20not=20among=20the=20functions=20= we=20translate=20directly.=20=20We=20return=0A=20=20=20=20=20=20=20=20= false,=20so=20a=20library=20function=20call=20is=20emitted.=20=20*/=0A= diff=20--git=20a/gcc/testsuite/gfortran.dg/ieee/minmax_1.f90=20= b/gcc/testsuite/gfortran.dg/ieee/minmax_1.f90=0Anew=20file=20mode=20= 100644=0Aindex=2000000000000..c820b134956=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gfortran.dg/ieee/minmax_1.f90=0A@@=20-0,0=20+1,235=20@@=0A= +!=20{=20dg-do=20run=20}=0A+!=0A+program=20test=0A+=20=20call=20real()=0A= +=20=20call=20double()=0A+=20=20call=20large1()=0A+=20=20call=20large2()=0A= +end=20program=20test=0A+=0A+=0A+subroutine=20real=0A+=20=20use=20= ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20=20real=20::=20inf,=20= nan=0A+=0A+=20=20inf=20=3D=20ieee_value(inf,=20ieee_positive_inf)=0A+=20=20= nan=20=3D=20ieee_value(nan,=20ieee_quiet_nan)=0A+=0A+=20=20if=20= (ieee_max_num_mag=20(0.,=200.)=20/=3D=200.)=20stop=201=0A+=20=20if=20= (ieee_max_num_mag=20(-0.,=20-0.)=20/=3D=20-0.)=20stop=202=0A+=20=20if=20= (.not.=20ieee_signbit=20(ieee_max_num_mag=20(-0.,=20-0.)))=20stop=203=0A= +=20=20if=20(ieee_max_num_mag=20(0.,=20-0.)=20/=3D=200.)=20stop=204=0A+=20= =20!=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20= (ieee_max_num_mag=20(0.,=20-0.)))=20stop=205=0A+=20=20if=20= (ieee_max_num_mag=20(-0.,=200.)=20/=3D=200.)=20stop=206=0A+=20=20!=20= Processor-dependent=0A+=20=20!if=20(ieee_signbit=20(ieee_max_num_mag=20= (-0.,=200.)))=20stop=207=0A+=0A+=20=20if=20(ieee_max_num_mag=20(9.,=20= 0.)=20/=3D=209.)=20stop=208=0A+=20=20if=20(ieee_max_num_mag=20(0.,=209.)=20= /=3D=209.)=20stop=209=0A+=20=20if=20(ieee_max_num_mag=20(-9.,=200.)=20/=3D= =20-9.)=20stop=2010=0A+=20=20if=20(ieee_max_num_mag=20(0.,=20-9.)=20/=3D=20= -9.)=20stop=2011=0A+=0A+=20=20if=20(ieee_max_num_mag=20(inf,=209.)=20/=3D=20= inf)=20stop=2012=0A+=20=20if=20(ieee_max_num_mag=20(0.,=20inf)=20/=3D=20= inf)=20stop=2013=0A+=20=20if=20(ieee_max_num_mag=20(-9.,=20inf)=20/=3D=20= inf)=20stop=2014=0A+=20=20if=20(ieee_max_num_mag=20(inf,=20-9.)=20/=3D=20= inf)=20stop=2015=0A+=20=20if=20(ieee_max_num_mag=20(-inf,=209.)=20/=3D=20= -inf)=20stop=2016=0A+=20=20if=20(ieee_max_num_mag=20(0.,=20-inf)=20/=3D=20= -inf)=20stop=2017=0A+=20=20if=20(ieee_max_num_mag=20(-9.,=20-inf)=20/=3D=20= -inf)=20stop=2018=0A+=20=20if=20(ieee_max_num_mag=20(-inf,=20-9.)=20/=3D=20= -inf)=20stop=2019=0A+=0A+=20=20if=20(ieee_max_num_mag=20(0.,=20nan)=20/=3D= =200.)=20stop=2020=0A+=20=20if=20(ieee_max_num_mag=20(nan,=200.)=20/=3D=20= 0.)=20stop=2021=0A+=20=20if=20(ieee_max_num_mag=20(-0.,=20nan)=20/=3D=20= -0.)=20stop=2022=0A+=20=20if=20(.not.=20ieee_signbit=20(ieee_max_num_mag=20= (-0.,=20nan)))=20stop=2023=0A+=20=20if=20(ieee_max_num_mag=20(nan,=20= -0.)=20/=3D=20-0.)=20stop=2024=0A+=20=20if=20(.not.=20ieee_signbit=20= (ieee_max_num_mag=20(nan,=20-0.)))=20stop=2025=0A+=20=20if=20= (ieee_max_num_mag=20(9.,=20nan)=20/=3D=209.)=20stop=2026=0A+=20=20if=20= (ieee_max_num_mag=20(nan,=209.)=20/=3D=209.)=20stop=2027=0A+=20=20if=20= (ieee_max_num_mag=20(-9.,=20nan)=20/=3D=20-9.)=20stop=2028=0A+=20=20if=20= (ieee_max_num_mag=20(nan,=20-9.)=20/=3D=20-9.)=20stop=2029=0A+=0A+=20=20= if=20(ieee_max_num_mag=20(nan,=20inf)=20/=3D=20inf)=20stop=2030=0A+=20=20= if=20(ieee_max_num_mag=20(inf,=20nan)=20/=3D=20inf)=20stop=2031=0A+=20=20= if=20(ieee_max_num_mag=20(nan,=20-inf)=20/=3D=20-inf)=20stop=2032=0A+=20=20= if=20(ieee_max_num_mag=20(-inf,=20nan)=20/=3D=20-inf)=20stop=2033=0A+=0A= +=20=20if=20(.not.=20ieee_is_nan=20(ieee_max_num_mag=20(nan,=20nan)))=20= stop=2034=0A+end=20subroutine=20real=0A+=0A+=0A+subroutine=20double=0A+=20= =20use=20ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20=20double=20= precision=20::=20inf,=20nan=0A+=0A+=20=20inf=20=3D=20ieee_value(inf,=20= ieee_positive_inf)=0A+=20=20nan=20=3D=20ieee_value(nan,=20= ieee_quiet_nan)=0A+=0A+=20=20if=20(ieee_max_num_mag=20(0.d0,=200.d0)=20= /=3D=200.d0)=20stop=2035=0A+=20=20if=20(ieee_max_num_mag=20(-0.d0,=20= -0.d0)=20/=3D=20-0.d0)=20stop=2036=0A+=20=20if=20(.not.=20ieee_signbit=20= (ieee_max_num_mag=20(-0.d0,=20-0.d0)))=20stop=2037=0A+=20=20if=20= (ieee_max_num_mag=20(0.d0,=20-0.d0)=20/=3D=200.d0)=20stop=2038=0A+=20=20= !=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20(ieee_max_num_mag=20= (0.d0,=20-0.d0)))=20stop=2039=0A+=20=20if=20(ieee_max_num_mag=20(-0.d0,=20= 0.d0)=20/=3D=200.d0)=20stop=2040=0A+=20=20!=20Processor-dependent=0A+=20=20= !if=20(ieee_signbit=20(ieee_max_num_mag=20(-0.d0,=200.d0)))=20stop=2041=0A= +=0A+=20=20if=20(ieee_max_num_mag=20(9.d0,=200.d0)=20/=3D=209.d0)=20stop=20= 42=0A+=20=20if=20(ieee_max_num_mag=20(0.d0,=209.d0)=20/=3D=209.d0)=20= stop=2043=0A+=20=20if=20(ieee_max_num_mag=20(-9.d0,=200.d0)=20/=3D=20= -9.d0)=20stop=2044=0A+=20=20if=20(ieee_max_num_mag=20(0.d0,=20-9.d0)=20= /=3D=20-9.d0)=20stop=2045=0A+=0A+=20=20if=20(ieee_max_num_mag=20(inf,=20= 9.d0)=20/=3D=20inf)=20stop=2046=0A+=20=20if=20(ieee_max_num_mag=20(0.d0,=20= inf)=20/=3D=20inf)=20stop=2047=0A+=20=20if=20(ieee_max_num_mag=20(-9.d0,=20= inf)=20/=3D=20inf)=20stop=2048=0A+=20=20if=20(ieee_max_num_mag=20(inf,=20= -9.d0)=20/=3D=20inf)=20stop=2049=0A+=20=20if=20(ieee_max_num_mag=20= (-inf,=209.d0)=20/=3D=20-inf)=20stop=2050=0A+=20=20if=20= (ieee_max_num_mag=20(0.d0,=20-inf)=20/=3D=20-inf)=20stop=2051=0A+=20=20= if=20(ieee_max_num_mag=20(-9.d0,=20-inf)=20/=3D=20-inf)=20stop=2052=0A+=20= =20if=20(ieee_max_num_mag=20(-inf,=20-9.d0)=20/=3D=20-inf)=20stop=2053=0A= +=0A+=20=20if=20(ieee_max_num_mag=20(0.d0,=20nan)=20/=3D=200.d0)=20stop=20= 54=0A+=20=20if=20(ieee_max_num_mag=20(nan,=200.d0)=20/=3D=200.d0)=20stop=20= 55=0A+=20=20if=20(ieee_max_num_mag=20(-0.d0,=20nan)=20/=3D=20-0.d0)=20= stop=2056=0A+=20=20if=20(.not.=20ieee_signbit=20(ieee_max_num_mag=20= (-0.d0,=20nan)))=20stop=2057=0A+=20=20if=20(ieee_max_num_mag=20(nan,=20= -0.d0)=20/=3D=20-0.d0)=20stop=2058=0A+=20=20if=20(.not.=20ieee_signbit=20= (ieee_max_num_mag=20(nan,=20-0.d0)))=20stop=2059=0A+=20=20if=20= (ieee_max_num_mag=20(9.d0,=20nan)=20/=3D=209.d0)=20stop=2060=0A+=20=20if=20= (ieee_max_num_mag=20(nan,=209.d0)=20/=3D=209.d0)=20stop=2061=0A+=20=20if=20= (ieee_max_num_mag=20(-9.d0,=20nan)=20/=3D=20-9.d0)=20stop=2062=0A+=20=20= if=20(ieee_max_num_mag=20(nan,=20-9.d0)=20/=3D=20-9.d0)=20stop=2063=0A+=0A= +=20=20if=20(ieee_max_num_mag=20(nan,=20inf)=20/=3D=20inf)=20stop=2064=0A= +=20=20if=20(ieee_max_num_mag=20(inf,=20nan)=20/=3D=20inf)=20stop=2065=0A= +=20=20if=20(ieee_max_num_mag=20(nan,=20-inf)=20/=3D=20-inf)=20stop=2066=0A= +=20=20if=20(ieee_max_num_mag=20(-inf,=20nan)=20/=3D=20-inf)=20stop=2067=0A= +=0A+=20=20if=20(.not.=20ieee_is_nan=20(ieee_max_num_mag=20(nan,=20= nan)))=20stop=2068=0A+end=20subroutine=20double=0A+=0A+=0A+subroutine=20= large1=0A+=20=20use=20ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20= =20!=20k1=20and=20k2=20will=20be=20large=20real=20kinds,=20if=20= supported,=20and=20single/double=0A+=20=20!=20otherwise=0A+=20=20= integer,=20parameter=20::=20k1=20=3D=20&=0A+=20=20=20=20= max(ieee_selected_real_kind(precision(0.d0)=20+=201),=20kind(0.))=0A+=20=20= integer,=20parameter=20::=20k2=20=3D=20&=0A+=20=20=20=20= max(ieee_selected_real_kind(precision(0._k1)=20+=201),=20kind(0.d0))=0A+=0A= +=20=20real(kind=3Dk1)=20::=20inf,=20nan=0A+=0A+=20=20inf=20=3D=20= ieee_value(inf,=20ieee_positive_inf)=0A+=20=20nan=20=3D=20= ieee_value(nan,=20ieee_quiet_nan)=0A+=0A+=20=20if=20(ieee_max_num_mag=20= (0._k1,=200._k1)=20/=3D=200._k1)=20stop=2035=0A+=20=20if=20= (ieee_max_num_mag=20(-0._k1,=20-0._k1)=20/=3D=20-0._k1)=20stop=2036=0A+=20= =20if=20(.not.=20ieee_signbit=20(ieee_max_num_mag=20(-0._k1,=20-0._k1)))=20= stop=2037=0A+=20=20if=20(ieee_max_num_mag=20(0._k1,=20-0._k1)=20/=3D=20= 0._k1)=20stop=2038=0A+=20=20!=20Processor-dependent=0A+=20=20!if=20= (ieee_signbit=20(ieee_max_num_mag=20(0._k1,=20-0._k1)))=20stop=2039=0A+=20= =20if=20(ieee_max_num_mag=20(-0._k1,=200._k1)=20/=3D=200._k1)=20stop=20= 40=0A+=20=20!=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20= (ieee_max_num_mag=20(-0._k1,=200._k1)))=20stop=2041=0A+=0A+=20=20if=20= (ieee_max_num_mag=20(9._k1,=200._k1)=20/=3D=209._k1)=20stop=2042=0A+=20=20= if=20(ieee_max_num_mag=20(0._k1,=209._k1)=20/=3D=209._k1)=20stop=2043=0A= +=20=20if=20(ieee_max_num_mag=20(-9._k1,=200._k1)=20/=3D=20-9._k1)=20= stop=2044=0A+=20=20if=20(ieee_max_num_mag=20(0._k1,=20-9._k1)=20/=3D=20= -9._k1)=20stop=2045=0A+=0A+=20=20if=20(ieee_max_num_mag=20(inf,=209._k1)=20= /=3D=20inf)=20stop=2046=0A+=20=20if=20(ieee_max_num_mag=20(0._k1,=20inf)=20= /=3D=20inf)=20stop=2047=0A+=20=20if=20(ieee_max_num_mag=20(-9._k1,=20= inf)=20/=3D=20inf)=20stop=2048=0A+=20=20if=20(ieee_max_num_mag=20(inf,=20= -9._k1)=20/=3D=20inf)=20stop=2049=0A+=20=20if=20(ieee_max_num_mag=20= (-inf,=209._k1)=20/=3D=20-inf)=20stop=2050=0A+=20=20if=20= (ieee_max_num_mag=20(0._k1,=20-inf)=20/=3D=20-inf)=20stop=2051=0A+=20=20= if=20(ieee_max_num_mag=20(-9._k1,=20-inf)=20/=3D=20-inf)=20stop=2052=0A+=20= =20if=20(ieee_max_num_mag=20(-inf,=20-9._k1)=20/=3D=20-inf)=20stop=2053=0A= +=0A+=20=20if=20(ieee_max_num_mag=20(0._k1,=20nan)=20/=3D=200._k1)=20= stop=2054=0A+=20=20if=20(ieee_max_num_mag=20(nan,=200._k1)=20/=3D=20= 0._k1)=20stop=2055=0A+=20=20if=20(ieee_max_num_mag=20(-0._k1,=20nan)=20= /=3D=20-0._k1)=20stop=2056=0A+=20=20if=20(.not.=20ieee_signbit=20= (ieee_max_num_mag=20(-0._k1,=20nan)))=20stop=2057=0A+=20=20if=20= (ieee_max_num_mag=20(nan,=20-0._k1)=20/=3D=20-0._k1)=20stop=2058=0A+=20=20= if=20(.not.=20ieee_signbit=20(ieee_max_num_mag=20(nan,=20-0._k1)))=20= stop=2059=0A+=20=20if=20(ieee_max_num_mag=20(9._k1,=20nan)=20/=3D=20= 9._k1)=20stop=2060=0A+=20=20if=20(ieee_max_num_mag=20(nan,=209._k1)=20/=3D= =209._k1)=20stop=2061=0A+=20=20if=20(ieee_max_num_mag=20(-9._k1,=20nan)=20= /=3D=20-9._k1)=20stop=2062=0A+=20=20if=20(ieee_max_num_mag=20(nan,=20= -9._k1)=20/=3D=20-9._k1)=20stop=2063=0A+=0A+=20=20if=20(ieee_max_num_mag=20= (nan,=20inf)=20/=3D=20inf)=20stop=2064=0A+=20=20if=20(ieee_max_num_mag=20= (inf,=20nan)=20/=3D=20inf)=20stop=2065=0A+=20=20if=20(ieee_max_num_mag=20= (nan,=20-inf)=20/=3D=20-inf)=20stop=2066=0A+=20=20if=20(ieee_max_num_mag=20= (-inf,=20nan)=20/=3D=20-inf)=20stop=2067=0A+=0A+=20=20if=20(.not.=20= ieee_is_nan=20(ieee_max_num_mag=20(nan,=20nan)))=20stop=2068=0A+end=20= subroutine=20large1=0A+=0A+=0A+subroutine=20large2=0A+=20=20use=20= ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20=20!=20k1=20and=20k2=20= will=20be=20large=20real=20kinds,=20if=20supported,=20and=20= single/double=0A+=20=20!=20otherwise=0A+=20=20integer,=20parameter=20::=20= k1=20=3D=20&=0A+=20=20=20=20max(ieee_selected_real_kind(precision(0.d0)=20= +=201),=20kind(0.))=0A+=20=20integer,=20parameter=20::=20k2=20=3D=20&=0A= +=20=20=20=20max(ieee_selected_real_kind(precision(0._k1)=20+=201),=20= kind(0.d0))=0A+=0A+=20=20real(kind=3Dk2)=20::=20inf,=20nan=0A+=0A+=20=20= inf=20=3D=20ieee_value(inf,=20ieee_positive_inf)=0A+=20=20nan=20=3D=20= ieee_value(nan,=20ieee_quiet_nan)=0A+=0A+=20=20if=20(ieee_max_num_mag=20= (0._k2,=200._k2)=20/=3D=200._k2)=20stop=2035=0A+=20=20if=20= (ieee_max_num_mag=20(-0._k2,=20-0._k2)=20/=3D=20-0._k2)=20stop=2036=0A+=20= =20if=20(.not.=20ieee_signbit=20(ieee_max_num_mag=20(-0._k2,=20-0._k2)))=20= stop=2037=0A+=20=20if=20(ieee_max_num_mag=20(0._k2,=20-0._k2)=20/=3D=20= 0._k2)=20stop=2038=0A+=20=20!=20Processor-dependent=0A+=20=20!if=20= (ieee_signbit=20(ieee_max_num_mag=20(0._k2,=20-0._k2)))=20stop=2039=0A+=20= =20if=20(ieee_max_num_mag=20(-0._k2,=200._k2)=20/=3D=200._k2)=20stop=20= 40=0A+=20=20!=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20= (ieee_max_num_mag=20(-0._k2,=200._k2)))=20stop=2041=0A+=0A+=20=20if=20= (ieee_max_num_mag=20(9._k2,=200._k2)=20/=3D=209._k2)=20stop=2042=0A+=20=20= if=20(ieee_max_num_mag=20(0._k2,=209._k2)=20/=3D=209._k2)=20stop=2043=0A= +=20=20if=20(ieee_max_num_mag=20(-9._k2,=200._k2)=20/=3D=20-9._k2)=20= stop=2044=0A+=20=20if=20(ieee_max_num_mag=20(0._k2,=20-9._k2)=20/=3D=20= -9._k2)=20stop=2045=0A+=0A+=20=20if=20(ieee_max_num_mag=20(inf,=209._k2)=20= /=3D=20inf)=20stop=2046=0A+=20=20if=20(ieee_max_num_mag=20(0._k2,=20inf)=20= /=3D=20inf)=20stop=2047=0A+=20=20if=20(ieee_max_num_mag=20(-9._k2,=20= inf)=20/=3D=20inf)=20stop=2048=0A+=20=20if=20(ieee_max_num_mag=20(inf,=20= -9._k2)=20/=3D=20inf)=20stop=2049=0A+=20=20if=20(ieee_max_num_mag=20= (-inf,=209._k2)=20/=3D=20-inf)=20stop=2050=0A+=20=20if=20= (ieee_max_num_mag=20(0._k2,=20-inf)=20/=3D=20-inf)=20stop=2051=0A+=20=20= if=20(ieee_max_num_mag=20(-9._k2,=20-inf)=20/=3D=20-inf)=20stop=2052=0A+=20= =20if=20(ieee_max_num_mag=20(-inf,=20-9._k2)=20/=3D=20-inf)=20stop=2053=0A= +=0A+=20=20if=20(ieee_max_num_mag=20(0._k2,=20nan)=20/=3D=200._k2)=20= stop=2054=0A+=20=20if=20(ieee_max_num_mag=20(nan,=200._k2)=20/=3D=20= 0._k2)=20stop=2055=0A+=20=20if=20(ieee_max_num_mag=20(-0._k2,=20nan)=20= /=3D=20-0._k2)=20stop=2056=0A+=20=20if=20(.not.=20ieee_signbit=20= (ieee_max_num_mag=20(-0._k2,=20nan)))=20stop=2057=0A+=20=20if=20= (ieee_max_num_mag=20(nan,=20-0._k2)=20/=3D=20-0._k2)=20stop=2058=0A+=20=20= if=20(.not.=20ieee_signbit=20(ieee_max_num_mag=20(nan,=20-0._k2)))=20= stop=2059=0A+=20=20if=20(ieee_max_num_mag=20(9._k2,=20nan)=20/=3D=20= 9._k2)=20stop=2060=0A+=20=20if=20(ieee_max_num_mag=20(nan,=209._k2)=20/=3D= =209._k2)=20stop=2061=0A+=20=20if=20(ieee_max_num_mag=20(-9._k2,=20nan)=20= /=3D=20-9._k2)=20stop=2062=0A+=20=20if=20(ieee_max_num_mag=20(nan,=20= -9._k2)=20/=3D=20-9._k2)=20stop=2063=0A+=0A+=20=20if=20(ieee_max_num_mag=20= (nan,=20inf)=20/=3D=20inf)=20stop=2064=0A+=20=20if=20(ieee_max_num_mag=20= (inf,=20nan)=20/=3D=20inf)=20stop=2065=0A+=20=20if=20(ieee_max_num_mag=20= (nan,=20-inf)=20/=3D=20-inf)=20stop=2066=0A+=20=20if=20(ieee_max_num_mag=20= (-inf,=20nan)=20/=3D=20-inf)=20stop=2067=0A+=0A+=20=20if=20(.not.=20= ieee_is_nan=20(ieee_max_num_mag=20(nan,=20nan)))=20stop=2068=0A+end=20= subroutine=20large2=0A+=0Adiff=20--git=20= a/gcc/testsuite/gfortran.dg/ieee/minmax_2.f90=20= b/gcc/testsuite/gfortran.dg/ieee/minmax_2.f90=0Anew=20file=20mode=20= 100644=0Aindex=2000000000000..52c3fa01547=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gfortran.dg/ieee/minmax_2.f90=0A@@=20-0,0=20+1,235=20@@=0A= +!=20{=20dg-do=20run=20}=0A+!=0A+program=20test=0A+=20=20call=20real()=0A= +=20=20call=20double()=0A+=20=20call=20large1()=0A+=20=20call=20large2()=0A= +end=20program=20test=0A+=0A+=0A+subroutine=20real=0A+=20=20use=20= ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20=20real=20::=20inf,=20= nan=0A+=0A+=20=20inf=20=3D=20ieee_value(inf,=20ieee_positive_inf)=0A+=20=20= nan=20=3D=20ieee_value(nan,=20ieee_quiet_nan)=0A+=0A+=20=20if=20= (ieee_min_num_mag=20(0.,=200.)=20/=3D=200.)=20stop=201=0A+=20=20if=20= (ieee_min_num_mag=20(-0.,=20-0.)=20/=3D=20-0.)=20stop=202=0A+=20=20if=20= (.not.=20ieee_signbit=20(ieee_min_num_mag=20(-0.,=20-0.)))=20stop=203=0A= +=20=20if=20(ieee_min_num_mag=20(0.,=20-0.)=20/=3D=20-0.)=20stop=204=0A+=20= =20!=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20= (ieee_min_num_mag=20(0.,=20-0.)))=20stop=205=0A+=20=20if=20= (ieee_min_num_mag=20(-0.,=200.)=20/=3D=200.)=20stop=206=0A+=20=20!=20= Processor-dependent=0A+=20=20!if=20(ieee_signbit=20(ieee_min_num_mag=20= (-0.,=200.)))=20stop=207=0A+=0A+=20=20if=20(ieee_min_num_mag=20(9.,=20= 0.)=20/=3D=200.)=20stop=208=0A+=20=20if=20(ieee_min_num_mag=20(0.,=209.)=20= /=3D=200.)=20stop=209=0A+=20=20if=20(ieee_min_num_mag=20(-9.,=200.)=20/=3D= =200.)=20stop=2010=0A+=20=20if=20(ieee_min_num_mag=20(0.,=20-9.)=20/=3D=20= 0.)=20stop=2011=0A+=0A+=20=20if=20(ieee_min_num_mag=20(inf,=209.)=20/=3D=20= 9.)=20stop=2012=0A+=20=20if=20(ieee_min_num_mag=20(0.,=20inf)=20/=3D=20= 0.)=20stop=2013=0A+=20=20if=20(ieee_min_num_mag=20(-9.,=20inf)=20/=3D=20= -9.)=20stop=2014=0A+=20=20if=20(ieee_min_num_mag=20(inf,=20-9.)=20/=3D=20= -9.)=20stop=2015=0A+=20=20if=20(ieee_min_num_mag=20(-inf,=209.)=20/=3D=20= 9.)=20stop=2016=0A+=20=20if=20(ieee_min_num_mag=20(0.,=20-inf)=20/=3D=20= 0.)=20stop=2017=0A+=20=20if=20(ieee_min_num_mag=20(-9.,=20-inf)=20/=3D=20= -9.)=20stop=2018=0A+=20=20if=20(ieee_min_num_mag=20(-inf,=20-9.)=20/=3D=20= -9.)=20stop=2019=0A+=0A+=20=20if=20(ieee_min_num_mag=20(0.,=20nan)=20/=3D=20= 0.)=20stop=2020=0A+=20=20if=20(ieee_min_num_mag=20(nan,=200.)=20/=3D=20= 0.)=20stop=2021=0A+=20=20if=20(ieee_min_num_mag=20(-0.,=20nan)=20/=3D=20= -0.)=20stop=2022=0A+=20=20if=20(.not.=20ieee_signbit=20(ieee_min_num_mag=20= (-0.,=20nan)))=20stop=2023=0A+=20=20if=20(ieee_min_num_mag=20(nan,=20= -0.)=20/=3D=20-0.)=20stop=2024=0A+=20=20if=20(.not.=20ieee_signbit=20= (ieee_min_num_mag=20(nan,=20-0.)))=20stop=2025=0A+=20=20if=20= (ieee_min_num_mag=20(9.,=20nan)=20/=3D=209.)=20stop=2026=0A+=20=20if=20= (ieee_min_num_mag=20(nan,=209.)=20/=3D=209.)=20stop=2027=0A+=20=20if=20= (ieee_min_num_mag=20(-9.,=20nan)=20/=3D=20-9.)=20stop=2028=0A+=20=20if=20= (ieee_min_num_mag=20(nan,=20-9.)=20/=3D=20-9.)=20stop=2029=0A+=0A+=20=20= if=20(ieee_min_num_mag=20(nan,=20inf)=20/=3D=20inf)=20stop=2030=0A+=20=20= if=20(ieee_min_num_mag=20(inf,=20nan)=20/=3D=20inf)=20stop=2031=0A+=20=20= if=20(ieee_min_num_mag=20(nan,=20-inf)=20/=3D=20-inf)=20stop=2032=0A+=20=20= if=20(ieee_min_num_mag=20(-inf,=20nan)=20/=3D=20-inf)=20stop=2033=0A+=0A= +=20=20if=20(.not.=20ieee_is_nan=20(ieee_min_num_mag=20(nan,=20nan)))=20= stop=2034=0A+end=20subroutine=20real=0A+=0A+=0A+subroutine=20double=0A+=20= =20use=20ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20=20double=20= precision=20::=20inf,=20nan=0A+=0A+=20=20inf=20=3D=20ieee_value(inf,=20= ieee_positive_inf)=0A+=20=20nan=20=3D=20ieee_value(nan,=20= ieee_quiet_nan)=0A+=0A+=20=20if=20(ieee_min_num_mag=20(0.d0,=200.d0)=20= /=3D=200.d0)=20stop=2035=0A+=20=20if=20(ieee_min_num_mag=20(-0.d0,=20= -0.d0)=20/=3D=20-0.d0)=20stop=2036=0A+=20=20if=20(.not.=20ieee_signbit=20= (ieee_min_num_mag=20(-0.d0,=20-0.d0)))=20stop=2037=0A+=20=20if=20= (ieee_min_num_mag=20(0.d0,=20-0.d0)=20/=3D=200.d0)=20stop=2038=0A+=20=20= !=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20(ieee_min_num_mag=20= (0.d0,=20-0.d0)))=20stop=2039=0A+=20=20if=20(ieee_min_num_mag=20(-0.d0,=20= 0.d0)=20/=3D=200.d0)=20stop=2040=0A+=20=20!=20Processor-dependent=0A+=20=20= !if=20(ieee_signbit=20(ieee_min_num_mag=20(-0.d0,=200.d0)))=20stop=2041=0A= +=0A+=20=20if=20(ieee_min_num_mag=20(9.d0,=200.d0)=20/=3D=200.d0)=20stop=20= 42=0A+=20=20if=20(ieee_min_num_mag=20(0.d0,=209.d0)=20/=3D=200.d0)=20= stop=2043=0A+=20=20if=20(ieee_min_num_mag=20(-9.d0,=200.d0)=20/=3D=20= 0.d0)=20stop=2044=0A+=20=20if=20(ieee_min_num_mag=20(0.d0,=20-9.d0)=20/=3D= =200.d0)=20stop=2045=0A+=0A+=20=20if=20(ieee_min_num_mag=20(inf,=209.d0)=20= /=3D=209.d0)=20stop=2046=0A+=20=20if=20(ieee_min_num_mag=20(0.d0,=20inf)=20= /=3D=200.d0)=20stop=2047=0A+=20=20if=20(ieee_min_num_mag=20(-9.d0,=20= inf)=20/=3D=20-9.d0)=20stop=2048=0A+=20=20if=20(ieee_min_num_mag=20(inf,=20= -9.d0)=20/=3D=20-9.d0)=20stop=2049=0A+=20=20if=20(ieee_min_num_mag=20= (-inf,=209.d0)=20/=3D=209.d0)=20stop=2050=0A+=20=20if=20= (ieee_min_num_mag=20(0.d0,=20-inf)=20/=3D=200.d0)=20stop=2051=0A+=20=20= if=20(ieee_min_num_mag=20(-9.d0,=20-inf)=20/=3D=20-9.d0)=20stop=2052=0A+=20= =20if=20(ieee_min_num_mag=20(-inf,=20-9.d0)=20/=3D=20-9.d0)=20stop=2053=0A= +=0A+=20=20if=20(ieee_min_num_mag=20(0.d0,=20nan)=20/=3D=200.d0)=20stop=20= 54=0A+=20=20if=20(ieee_min_num_mag=20(nan,=200.d0)=20/=3D=200.d0)=20stop=20= 55=0A+=20=20if=20(ieee_min_num_mag=20(-0.d0,=20nan)=20/=3D=20-0.d0)=20= stop=2056=0A+=20=20if=20(.not.=20ieee_signbit=20(ieee_min_num_mag=20= (-0.d0,=20nan)))=20stop=2057=0A+=20=20if=20(ieee_min_num_mag=20(nan,=20= -0.d0)=20/=3D=20-0.d0)=20stop=2058=0A+=20=20if=20(.not.=20ieee_signbit=20= (ieee_min_num_mag=20(nan,=20-0.d0)))=20stop=2059=0A+=20=20if=20= (ieee_min_num_mag=20(9.d0,=20nan)=20/=3D=209.d0)=20stop=2060=0A+=20=20if=20= (ieee_min_num_mag=20(nan,=209.d0)=20/=3D=209.d0)=20stop=2061=0A+=20=20if=20= (ieee_min_num_mag=20(-9.d0,=20nan)=20/=3D=20-9.d0)=20stop=2062=0A+=20=20= if=20(ieee_min_num_mag=20(nan,=20-9.d0)=20/=3D=20-9.d0)=20stop=2063=0A+=0A= +=20=20if=20(ieee_min_num_mag=20(nan,=20inf)=20/=3D=20inf)=20stop=2064=0A= +=20=20if=20(ieee_min_num_mag=20(inf,=20nan)=20/=3D=20inf)=20stop=2065=0A= +=20=20if=20(ieee_min_num_mag=20(nan,=20-inf)=20/=3D=20-inf)=20stop=2066=0A= +=20=20if=20(ieee_min_num_mag=20(-inf,=20nan)=20/=3D=20-inf)=20stop=2067=0A= +=0A+=20=20if=20(.not.=20ieee_is_nan=20(ieee_min_num_mag=20(nan,=20= nan)))=20stop=2068=0A+end=20subroutine=20double=0A+=0A+=0A+subroutine=20= large1=0A+=20=20use=20ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20= =20!=20k1=20and=20k2=20will=20be=20large=20real=20kinds,=20if=20= supported,=20and=20single/double=0A+=20=20!=20otherwise=0A+=20=20= integer,=20parameter=20::=20k1=20=3D=20&=0A+=20=20=20=20= max(ieee_selected_real_kind(precision(0.d0)=20+=201),=20kind(0.))=0A+=20=20= integer,=20parameter=20::=20k2=20=3D=20&=0A+=20=20=20=20= max(ieee_selected_real_kind(precision(0._k1)=20+=201),=20kind(0.d0))=0A+=0A= +=20=20real(kind=3Dk1)=20::=20inf,=20nan=0A+=0A+=20=20inf=20=3D=20= ieee_value(inf,=20ieee_positive_inf)=0A+=20=20nan=20=3D=20= ieee_value(nan,=20ieee_quiet_nan)=0A+=0A+=20=20if=20(ieee_min_num_mag=20= (0._k1,=200._k1)=20/=3D=200._k1)=20stop=2035=0A+=20=20if=20= (ieee_min_num_mag=20(-0._k1,=20-0._k1)=20/=3D=20-0._k1)=20stop=2036=0A+=20= =20if=20(.not.=20ieee_signbit=20(ieee_min_num_mag=20(-0._k1,=20-0._k1)))=20= stop=2037=0A+=20=20if=20(ieee_min_num_mag=20(0._k1,=20-0._k1)=20/=3D=20= 0._k1)=20stop=2038=0A+=20=20!=20Processor-dependent=0A+=20=20!if=20= (ieee_signbit=20(ieee_min_num_mag=20(0._k1,=20-0._k1)))=20stop=2039=0A+=20= =20if=20(ieee_min_num_mag=20(-0._k1,=200._k1)=20/=3D=200._k1)=20stop=20= 40=0A+=20=20!=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20= (ieee_min_num_mag=20(-0._k1,=200._k1)))=20stop=2041=0A+=0A+=20=20if=20= (ieee_min_num_mag=20(9._k1,=200._k1)=20/=3D=200._k1)=20stop=2042=0A+=20=20= if=20(ieee_min_num_mag=20(0._k1,=209._k1)=20/=3D=200._k1)=20stop=2043=0A= +=20=20if=20(ieee_min_num_mag=20(-9._k1,=200._k1)=20/=3D=200._k1)=20stop=20= 44=0A+=20=20if=20(ieee_min_num_mag=20(0._k1,=20-9._k1)=20/=3D=200._k1)=20= stop=2045=0A+=0A+=20=20if=20(ieee_min_num_mag=20(inf,=209._k1)=20/=3D=20= 9._k1)=20stop=2046=0A+=20=20if=20(ieee_min_num_mag=20(0._k1,=20inf)=20/=3D= =200._k1)=20stop=2047=0A+=20=20if=20(ieee_min_num_mag=20(-9._k1,=20inf)=20= /=3D=20-9._k1)=20stop=2048=0A+=20=20if=20(ieee_min_num_mag=20(inf,=20= -9._k1)=20/=3D=20-9._k1)=20stop=2049=0A+=20=20if=20(ieee_min_num_mag=20= (-inf,=209._k1)=20/=3D=209._k1)=20stop=2050=0A+=20=20if=20= (ieee_min_num_mag=20(0._k1,=20-inf)=20/=3D=200._k1)=20stop=2051=0A+=20=20= if=20(ieee_min_num_mag=20(-9._k1,=20-inf)=20/=3D=20-9._k1)=20stop=2052=0A= +=20=20if=20(ieee_min_num_mag=20(-inf,=20-9._k1)=20/=3D=20-9._k1)=20stop=20= 53=0A+=0A+=20=20if=20(ieee_min_num_mag=20(0._k1,=20nan)=20/=3D=200._k1)=20= stop=2054=0A+=20=20if=20(ieee_min_num_mag=20(nan,=200._k1)=20/=3D=20= 0._k1)=20stop=2055=0A+=20=20if=20(ieee_min_num_mag=20(-0._k1,=20nan)=20= /=3D=20-0._k1)=20stop=2056=0A+=20=20if=20(.not.=20ieee_signbit=20= (ieee_min_num_mag=20(-0._k1,=20nan)))=20stop=2057=0A+=20=20if=20= (ieee_min_num_mag=20(nan,=20-0._k1)=20/=3D=20-0._k1)=20stop=2058=0A+=20=20= if=20(.not.=20ieee_signbit=20(ieee_min_num_mag=20(nan,=20-0._k1)))=20= stop=2059=0A+=20=20if=20(ieee_min_num_mag=20(9._k1,=20nan)=20/=3D=20= 9._k1)=20stop=2060=0A+=20=20if=20(ieee_min_num_mag=20(nan,=209._k1)=20/=3D= =209._k1)=20stop=2061=0A+=20=20if=20(ieee_min_num_mag=20(-9._k1,=20nan)=20= /=3D=20-9._k1)=20stop=2062=0A+=20=20if=20(ieee_min_num_mag=20(nan,=20= -9._k1)=20/=3D=20-9._k1)=20stop=2063=0A+=0A+=20=20if=20(ieee_min_num_mag=20= (nan,=20inf)=20/=3D=20inf)=20stop=2064=0A+=20=20if=20(ieee_min_num_mag=20= (inf,=20nan)=20/=3D=20inf)=20stop=2065=0A+=20=20if=20(ieee_min_num_mag=20= (nan,=20-inf)=20/=3D=20-inf)=20stop=2066=0A+=20=20if=20(ieee_min_num_mag=20= (-inf,=20nan)=20/=3D=20-inf)=20stop=2067=0A+=0A+=20=20if=20(.not.=20= ieee_is_nan=20(ieee_min_num_mag=20(nan,=20nan)))=20stop=2068=0A+end=20= subroutine=20large1=0A+=0A+=0A+subroutine=20large2=0A+=20=20use=20= ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20=20!=20k1=20and=20k2=20= will=20be=20large=20real=20kinds,=20if=20supported,=20and=20= single/double=0A+=20=20!=20otherwise=0A+=20=20integer,=20parameter=20::=20= k1=20=3D=20&=0A+=20=20=20=20max(ieee_selected_real_kind(precision(0.d0)=20= +=201),=20kind(0.))=0A+=20=20integer,=20parameter=20::=20k2=20=3D=20&=0A= +=20=20=20=20max(ieee_selected_real_kind(precision(0._k1)=20+=201),=20= kind(0.d0))=0A+=0A+=20=20real(kind=3Dk2)=20::=20inf,=20nan=0A+=0A+=20=20= inf=20=3D=20ieee_value(inf,=20ieee_positive_inf)=0A+=20=20nan=20=3D=20= ieee_value(nan,=20ieee_quiet_nan)=0A+=0A+=20=20if=20(ieee_min_num_mag=20= (0._k2,=200._k2)=20/=3D=200._k2)=20stop=2035=0A+=20=20if=20= (ieee_min_num_mag=20(-0._k2,=20-0._k2)=20/=3D=20-0._k2)=20stop=2036=0A+=20= =20if=20(.not.=20ieee_signbit=20(ieee_min_num_mag=20(-0._k2,=20-0._k2)))=20= stop=2037=0A+=20=20if=20(ieee_min_num_mag=20(0._k2,=20-0._k2)=20/=3D=20= 0._k2)=20stop=2038=0A+=20=20!=20Processor-dependent=0A+=20=20!if=20= (ieee_signbit=20(ieee_min_num_mag=20(0._k2,=20-0._k2)))=20stop=2039=0A+=20= =20if=20(ieee_min_num_mag=20(-0._k2,=200._k2)=20/=3D=200._k2)=20stop=20= 40=0A+=20=20!=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20= (ieee_min_num_mag=20(-0._k2,=200._k2)))=20stop=2041=0A+=0A+=20=20if=20= (ieee_min_num_mag=20(9._k2,=200._k2)=20/=3D=200._k2)=20stop=2042=0A+=20=20= if=20(ieee_min_num_mag=20(0._k2,=209._k2)=20/=3D=200._k2)=20stop=2043=0A= +=20=20if=20(ieee_min_num_mag=20(-9._k2,=200._k2)=20/=3D=200._k2)=20stop=20= 44=0A+=20=20if=20(ieee_min_num_mag=20(0._k2,=20-9._k2)=20/=3D=200._k2)=20= stop=2045=0A+=0A+=20=20if=20(ieee_min_num_mag=20(inf,=209._k2)=20/=3D=20= 9._k2)=20stop=2046=0A+=20=20if=20(ieee_min_num_mag=20(0._k2,=20inf)=20/=3D= =200._k2)=20stop=2047=0A+=20=20if=20(ieee_min_num_mag=20(-9._k2,=20inf)=20= /=3D=20-9._k2)=20stop=2048=0A+=20=20if=20(ieee_min_num_mag=20(inf,=20= -9._k2)=20/=3D=20-9._k2)=20stop=2049=0A+=20=20if=20(ieee_min_num_mag=20= (-inf,=209._k2)=20/=3D=209._k2)=20stop=2050=0A+=20=20if=20= (ieee_min_num_mag=20(0._k2,=20-inf)=20/=3D=200._k2)=20stop=2051=0A+=20=20= if=20(ieee_min_num_mag=20(-9._k2,=20-inf)=20/=3D=20-9._k2)=20stop=2052=0A= +=20=20if=20(ieee_min_num_mag=20(-inf,=20-9._k2)=20/=3D=20-9._k2)=20stop=20= 53=0A+=0A+=20=20if=20(ieee_min_num_mag=20(0._k2,=20nan)=20/=3D=200._k2)=20= stop=2054=0A+=20=20if=20(ieee_min_num_mag=20(nan,=200._k2)=20/=3D=20= 0._k2)=20stop=2055=0A+=20=20if=20(ieee_min_num_mag=20(-0._k2,=20nan)=20= /=3D=20-0._k2)=20stop=2056=0A+=20=20if=20(.not.=20ieee_signbit=20= (ieee_min_num_mag=20(-0._k2,=20nan)))=20stop=2057=0A+=20=20if=20= (ieee_min_num_mag=20(nan,=20-0._k2)=20/=3D=20-0._k2)=20stop=2058=0A+=20=20= if=20(.not.=20ieee_signbit=20(ieee_min_num_mag=20(nan,=20-0._k2)))=20= stop=2059=0A+=20=20if=20(ieee_min_num_mag=20(9._k2,=20nan)=20/=3D=20= 9._k2)=20stop=2060=0A+=20=20if=20(ieee_min_num_mag=20(nan,=209._k2)=20/=3D= =209._k2)=20stop=2061=0A+=20=20if=20(ieee_min_num_mag=20(-9._k2,=20nan)=20= /=3D=20-9._k2)=20stop=2062=0A+=20=20if=20(ieee_min_num_mag=20(nan,=20= -9._k2)=20/=3D=20-9._k2)=20stop=2063=0A+=0A+=20=20if=20(ieee_min_num_mag=20= (nan,=20inf)=20/=3D=20inf)=20stop=2064=0A+=20=20if=20(ieee_min_num_mag=20= (inf,=20nan)=20/=3D=20inf)=20stop=2065=0A+=20=20if=20(ieee_min_num_mag=20= (nan,=20-inf)=20/=3D=20-inf)=20stop=2066=0A+=20=20if=20(ieee_min_num_mag=20= (-inf,=20nan)=20/=3D=20-inf)=20stop=2067=0A+=0A+=20=20if=20(.not.=20= ieee_is_nan=20(ieee_min_num_mag=20(nan,=20nan)))=20stop=2068=0A+end=20= subroutine=20large2=0A+=0Adiff=20--git=20= a/gcc/testsuite/gfortran.dg/ieee/minmax_3.f90=20= b/gcc/testsuite/gfortran.dg/ieee/minmax_3.f90=0Anew=20file=20mode=20= 100644=0Aindex=2000000000000..337bb368d0b=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gfortran.dg/ieee/minmax_3.f90=0A@@=20-0,0=20+1,235=20@@=0A= +!=20{=20dg-do=20run=20}=0A+!=0A+program=20test=0A+=20=20call=20real()=0A= +=20=20call=20double()=0A+=20=20call=20large1()=0A+=20=20call=20large2()=0A= +end=20program=20test=0A+=0A+=0A+subroutine=20real=0A+=20=20use=20= ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20=20real=20::=20inf,=20= nan=0A+=0A+=20=20inf=20=3D=20ieee_value(inf,=20ieee_positive_inf)=0A+=20=20= nan=20=3D=20ieee_value(nan,=20ieee_quiet_nan)=0A+=0A+=20=20if=20= (ieee_max_num=20(0.,=200.)=20/=3D=200.)=20stop=201=0A+=20=20if=20= (ieee_max_num=20(-0.,=20-0.)=20/=3D=20-0.)=20stop=202=0A+=20=20if=20= (.not.=20ieee_signbit=20(ieee_max_num=20(-0.,=20-0.)))=20stop=203=0A+=20=20= if=20(ieee_max_num=20(0.,=20-0.)=20/=3D=200.)=20stop=204=0A+=20=20!=20= Processor-dependent=0A+=20=20!if=20(ieee_signbit=20(ieee_max_num=20(0.,=20= -0.)))=20stop=205=0A+=20=20if=20(ieee_max_num=20(-0.,=200.)=20/=3D=200.)=20= stop=206=0A+=20=20!=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20= (ieee_max_num=20(-0.,=200.)))=20stop=207=0A+=0A+=20=20if=20(ieee_max_num=20= (9.,=200.)=20/=3D=209.)=20stop=208=0A+=20=20if=20(ieee_max_num=20(0.,=20= 9.)=20/=3D=209.)=20stop=209=0A+=20=20if=20(ieee_max_num=20(-9.,=200.)=20= /=3D=200.)=20stop=2010=0A+=20=20if=20(ieee_max_num=20(0.,=20-9.)=20/=3D=20= 0.)=20stop=2011=0A+=0A+=20=20if=20(ieee_max_num=20(inf,=209.)=20/=3D=20= inf)=20stop=2012=0A+=20=20if=20(ieee_max_num=20(0.,=20inf)=20/=3D=20inf)=20= stop=2013=0A+=20=20if=20(ieee_max_num=20(-9.,=20inf)=20/=3D=20inf)=20= stop=2014=0A+=20=20if=20(ieee_max_num=20(inf,=20-9.)=20/=3D=20inf)=20= stop=2015=0A+=20=20if=20(ieee_max_num=20(-inf,=209.)=20/=3D=209.)=20stop=20= 16=0A+=20=20if=20(ieee_max_num=20(0.,=20-inf)=20/=3D=200.)=20stop=2017=0A= +=20=20if=20(ieee_max_num=20(-9.,=20-inf)=20/=3D=20-9.)=20stop=2018=0A+=20= =20if=20(ieee_max_num=20(-inf,=20-9.)=20/=3D=20-9.)=20stop=2019=0A+=0A+=20= =20if=20(ieee_max_num=20(0.,=20nan)=20/=3D=200.)=20stop=2020=0A+=20=20if=20= (ieee_max_num=20(nan,=200.)=20/=3D=200.)=20stop=2021=0A+=20=20if=20= (ieee_max_num=20(-0.,=20nan)=20/=3D=20-0.)=20stop=2022=0A+=20=20if=20= (.not.=20ieee_signbit=20(ieee_max_num=20(-0.,=20nan)))=20stop=2023=0A+=20= =20if=20(ieee_max_num=20(nan,=20-0.)=20/=3D=20-0.)=20stop=2024=0A+=20=20= if=20(.not.=20ieee_signbit=20(ieee_max_num=20(nan,=20-0.)))=20stop=2025=0A= +=20=20if=20(ieee_max_num=20(9.,=20nan)=20/=3D=209.)=20stop=2026=0A+=20=20= if=20(ieee_max_num=20(nan,=209.)=20/=3D=209.)=20stop=2027=0A+=20=20if=20= (ieee_max_num=20(-9.,=20nan)=20/=3D=20-9.)=20stop=2028=0A+=20=20if=20= (ieee_max_num=20(nan,=20-9.)=20/=3D=20-9.)=20stop=2029=0A+=0A+=20=20if=20= (ieee_max_num=20(nan,=20inf)=20/=3D=20inf)=20stop=2030=0A+=20=20if=20= (ieee_max_num=20(inf,=20nan)=20/=3D=20inf)=20stop=2031=0A+=20=20if=20= (ieee_max_num=20(nan,=20-inf)=20/=3D=20-inf)=20stop=2032=0A+=20=20if=20= (ieee_max_num=20(-inf,=20nan)=20/=3D=20-inf)=20stop=2033=0A+=0A+=20=20if=20= (.not.=20ieee_is_nan=20(ieee_max_num=20(nan,=20nan)))=20stop=2034=0A+end=20= subroutine=20real=0A+=0A+=0A+subroutine=20double=0A+=20=20use=20= ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20=20double=20precision=20= ::=20inf,=20nan=0A+=0A+=20=20inf=20=3D=20ieee_value(inf,=20= ieee_positive_inf)=0A+=20=20nan=20=3D=20ieee_value(nan,=20= ieee_quiet_nan)=0A+=0A+=20=20if=20(ieee_max_num=20(0.d0,=200.d0)=20/=3D=20= 0.d0)=20stop=2035=0A+=20=20if=20(ieee_max_num=20(-0.d0,=20-0.d0)=20/=3D=20= -0.d0)=20stop=2036=0A+=20=20if=20(.not.=20ieee_signbit=20(ieee_max_num=20= (-0.d0,=20-0.d0)))=20stop=2037=0A+=20=20if=20(ieee_max_num=20(0.d0,=20= -0.d0)=20/=3D=200.d0)=20stop=2038=0A+=20=20!=20Processor-dependent=0A+=20= =20!if=20(ieee_signbit=20(ieee_max_num=20(0.d0,=20-0.d0)))=20stop=2039=0A= +=20=20if=20(ieee_max_num=20(-0.d0,=200.d0)=20/=3D=200.d0)=20stop=2040=0A= +=20=20!=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20= (ieee_max_num=20(-0.d0,=200.d0)))=20stop=2041=0A+=0A+=20=20if=20= (ieee_max_num=20(9.d0,=200.d0)=20/=3D=209.d0)=20stop=2042=0A+=20=20if=20= (ieee_max_num=20(0.d0,=209.d0)=20/=3D=209.d0)=20stop=2043=0A+=20=20if=20= (ieee_max_num=20(-9.d0,=200.d0)=20/=3D=200.d0)=20stop=2044=0A+=20=20if=20= (ieee_max_num=20(0.d0,=20-9.d0)=20/=3D=200.d0)=20stop=2045=0A+=0A+=20=20= if=20(ieee_max_num=20(inf,=209.d0)=20/=3D=20inf)=20stop=2046=0A+=20=20if=20= (ieee_max_num=20(0.d0,=20inf)=20/=3D=20inf)=20stop=2047=0A+=20=20if=20= (ieee_max_num=20(-9.d0,=20inf)=20/=3D=20inf)=20stop=2048=0A+=20=20if=20= (ieee_max_num=20(inf,=20-9.d0)=20/=3D=20inf)=20stop=2049=0A+=20=20if=20= (ieee_max_num=20(-inf,=209.d0)=20/=3D=209.d0)=20stop=2050=0A+=20=20if=20= (ieee_max_num=20(0.d0,=20-inf)=20/=3D=200.d0)=20stop=2051=0A+=20=20if=20= (ieee_max_num=20(-9.d0,=20-inf)=20/=3D=20-9.d0)=20stop=2052=0A+=20=20if=20= (ieee_max_num=20(-inf,=20-9.d0)=20/=3D=20-9.d0)=20stop=2053=0A+=0A+=20=20= if=20(ieee_max_num=20(0.d0,=20nan)=20/=3D=200.d0)=20stop=2054=0A+=20=20= if=20(ieee_max_num=20(nan,=200.d0)=20/=3D=200.d0)=20stop=2055=0A+=20=20= if=20(ieee_max_num=20(-0.d0,=20nan)=20/=3D=20-0.d0)=20stop=2056=0A+=20=20= if=20(.not.=20ieee_signbit=20(ieee_max_num=20(-0.d0,=20nan)))=20stop=20= 57=0A+=20=20if=20(ieee_max_num=20(nan,=20-0.d0)=20/=3D=20-0.d0)=20stop=20= 58=0A+=20=20if=20(.not.=20ieee_signbit=20(ieee_max_num=20(nan,=20= -0.d0)))=20stop=2059=0A+=20=20if=20(ieee_max_num=20(9.d0,=20nan)=20/=3D=20= 9.d0)=20stop=2060=0A+=20=20if=20(ieee_max_num=20(nan,=209.d0)=20/=3D=20= 9.d0)=20stop=2061=0A+=20=20if=20(ieee_max_num=20(-9.d0,=20nan)=20/=3D=20= -9.d0)=20stop=2062=0A+=20=20if=20(ieee_max_num=20(nan,=20-9.d0)=20/=3D=20= -9.d0)=20stop=2063=0A+=0A+=20=20if=20(ieee_max_num=20(nan,=20inf)=20/=3D=20= inf)=20stop=2064=0A+=20=20if=20(ieee_max_num=20(inf,=20nan)=20/=3D=20= inf)=20stop=2065=0A+=20=20if=20(ieee_max_num=20(nan,=20-inf)=20/=3D=20= -inf)=20stop=2066=0A+=20=20if=20(ieee_max_num=20(-inf,=20nan)=20/=3D=20= -inf)=20stop=2067=0A+=0A+=20=20if=20(.not.=20ieee_is_nan=20(ieee_max_num=20= (nan,=20nan)))=20stop=2068=0A+end=20subroutine=20double=0A+=0A+=0A= +subroutine=20large1=0A+=20=20use=20ieee_arithmetic=0A+=20=20implicit=20= none=0A+=0A+=20=20!=20k1=20and=20k2=20will=20be=20large=20real=20kinds,=20= if=20supported,=20and=20single/double=0A+=20=20!=20otherwise=0A+=20=20= integer,=20parameter=20::=20k1=20=3D=20&=0A+=20=20=20=20= max(ieee_selected_real_kind(precision(0.d0)=20+=201),=20kind(0.))=0A+=20=20= integer,=20parameter=20::=20k2=20=3D=20&=0A+=20=20=20=20= max(ieee_selected_real_kind(precision(0._k1)=20+=201),=20kind(0.d0))=0A+=0A= +=20=20real(kind=3Dk1)=20::=20inf,=20nan=0A+=0A+=20=20inf=20=3D=20= ieee_value(inf,=20ieee_positive_inf)=0A+=20=20nan=20=3D=20= ieee_value(nan,=20ieee_quiet_nan)=0A+=0A+=20=20if=20(ieee_max_num=20= (0._k1,=200._k1)=20/=3D=200._k1)=20stop=2035=0A+=20=20if=20(ieee_max_num=20= (-0._k1,=20-0._k1)=20/=3D=20-0._k1)=20stop=2036=0A+=20=20if=20(.not.=20= ieee_signbit=20(ieee_max_num=20(-0._k1,=20-0._k1)))=20stop=2037=0A+=20=20= if=20(ieee_max_num=20(0._k1,=20-0._k1)=20/=3D=200._k1)=20stop=2038=0A+=20= =20!=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20(ieee_max_num=20= (0._k1,=20-0._k1)))=20stop=2039=0A+=20=20if=20(ieee_max_num=20(-0._k1,=20= 0._k1)=20/=3D=200._k1)=20stop=2040=0A+=20=20!=20Processor-dependent=0A+=20= =20!if=20(ieee_signbit=20(ieee_max_num=20(-0._k1,=200._k1)))=20stop=2041=0A= +=0A+=20=20if=20(ieee_max_num=20(9._k1,=200._k1)=20/=3D=209._k1)=20stop=20= 42=0A+=20=20if=20(ieee_max_num=20(0._k1,=209._k1)=20/=3D=209._k1)=20stop=20= 43=0A+=20=20if=20(ieee_max_num=20(-9._k1,=200._k1)=20/=3D=200._k1)=20= stop=2044=0A+=20=20if=20(ieee_max_num=20(0._k1,=20-9._k1)=20/=3D=20= 0._k1)=20stop=2045=0A+=0A+=20=20if=20(ieee_max_num=20(inf,=209._k1)=20/=3D= =20inf)=20stop=2046=0A+=20=20if=20(ieee_max_num=20(0._k1,=20inf)=20/=3D=20= inf)=20stop=2047=0A+=20=20if=20(ieee_max_num=20(-9._k1,=20inf)=20/=3D=20= inf)=20stop=2048=0A+=20=20if=20(ieee_max_num=20(inf,=20-9._k1)=20/=3D=20= inf)=20stop=2049=0A+=20=20if=20(ieee_max_num=20(-inf,=209._k1)=20/=3D=20= 9._k1)=20stop=2050=0A+=20=20if=20(ieee_max_num=20(0._k1,=20-inf)=20/=3D=20= 0._k1)=20stop=2051=0A+=20=20if=20(ieee_max_num=20(-9._k1,=20-inf)=20/=3D=20= -9._k1)=20stop=2052=0A+=20=20if=20(ieee_max_num=20(-inf,=20-9._k1)=20/=3D=20= -9._k1)=20stop=2053=0A+=0A+=20=20if=20(ieee_max_num=20(0._k1,=20nan)=20= /=3D=200._k1)=20stop=2054=0A+=20=20if=20(ieee_max_num=20(nan,=200._k1)=20= /=3D=200._k1)=20stop=2055=0A+=20=20if=20(ieee_max_num=20(-0._k1,=20nan)=20= /=3D=20-0._k1)=20stop=2056=0A+=20=20if=20(.not.=20ieee_signbit=20= (ieee_max_num=20(-0._k1,=20nan)))=20stop=2057=0A+=20=20if=20= (ieee_max_num=20(nan,=20-0._k1)=20/=3D=20-0._k1)=20stop=2058=0A+=20=20if=20= (.not.=20ieee_signbit=20(ieee_max_num=20(nan,=20-0._k1)))=20stop=2059=0A= +=20=20if=20(ieee_max_num=20(9._k1,=20nan)=20/=3D=209._k1)=20stop=2060=0A= +=20=20if=20(ieee_max_num=20(nan,=209._k1)=20/=3D=209._k1)=20stop=2061=0A= +=20=20if=20(ieee_max_num=20(-9._k1,=20nan)=20/=3D=20-9._k1)=20stop=2062=0A= +=20=20if=20(ieee_max_num=20(nan,=20-9._k1)=20/=3D=20-9._k1)=20stop=2063=0A= +=0A+=20=20if=20(ieee_max_num=20(nan,=20inf)=20/=3D=20inf)=20stop=2064=0A= +=20=20if=20(ieee_max_num=20(inf,=20nan)=20/=3D=20inf)=20stop=2065=0A+=20= =20if=20(ieee_max_num=20(nan,=20-inf)=20/=3D=20-inf)=20stop=2066=0A+=20=20= if=20(ieee_max_num=20(-inf,=20nan)=20/=3D=20-inf)=20stop=2067=0A+=0A+=20=20= if=20(.not.=20ieee_is_nan=20(ieee_max_num=20(nan,=20nan)))=20stop=2068=0A= +end=20subroutine=20large1=0A+=0A+=0A+subroutine=20large2=0A+=20=20use=20= ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20=20!=20k1=20and=20k2=20= will=20be=20large=20real=20kinds,=20if=20supported,=20and=20= single/double=0A+=20=20!=20otherwise=0A+=20=20integer,=20parameter=20::=20= k1=20=3D=20&=0A+=20=20=20=20max(ieee_selected_real_kind(precision(0.d0)=20= +=201),=20kind(0.))=0A+=20=20integer,=20parameter=20::=20k2=20=3D=20&=0A= +=20=20=20=20max(ieee_selected_real_kind(precision(0._k1)=20+=201),=20= kind(0.d0))=0A+=0A+=20=20real(kind=3Dk2)=20::=20inf,=20nan=0A+=0A+=20=20= inf=20=3D=20ieee_value(inf,=20ieee_positive_inf)=0A+=20=20nan=20=3D=20= ieee_value(nan,=20ieee_quiet_nan)=0A+=0A+=20=20if=20(ieee_max_num=20= (0._k2,=200._k2)=20/=3D=200._k2)=20stop=2035=0A+=20=20if=20(ieee_max_num=20= (-0._k2,=20-0._k2)=20/=3D=20-0._k2)=20stop=2036=0A+=20=20if=20(.not.=20= ieee_signbit=20(ieee_max_num=20(-0._k2,=20-0._k2)))=20stop=2037=0A+=20=20= if=20(ieee_max_num=20(0._k2,=20-0._k2)=20/=3D=200._k2)=20stop=2038=0A+=20= =20!=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20(ieee_max_num=20= (0._k2,=20-0._k2)))=20stop=2039=0A+=20=20if=20(ieee_max_num=20(-0._k2,=20= 0._k2)=20/=3D=200._k2)=20stop=2040=0A+=20=20!=20Processor-dependent=0A+=20= =20!if=20(ieee_signbit=20(ieee_max_num=20(-0._k2,=200._k2)))=20stop=2041=0A= +=0A+=20=20if=20(ieee_max_num=20(9._k2,=200._k2)=20/=3D=209._k2)=20stop=20= 42=0A+=20=20if=20(ieee_max_num=20(0._k2,=209._k2)=20/=3D=209._k2)=20stop=20= 43=0A+=20=20if=20(ieee_max_num=20(-9._k2,=200._k2)=20/=3D=200._k2)=20= stop=2044=0A+=20=20if=20(ieee_max_num=20(0._k2,=20-9._k2)=20/=3D=20= 0._k2)=20stop=2045=0A+=0A+=20=20if=20(ieee_max_num=20(inf,=209._k2)=20/=3D= =20inf)=20stop=2046=0A+=20=20if=20(ieee_max_num=20(0._k2,=20inf)=20/=3D=20= inf)=20stop=2047=0A+=20=20if=20(ieee_max_num=20(-9._k2,=20inf)=20/=3D=20= inf)=20stop=2048=0A+=20=20if=20(ieee_max_num=20(inf,=20-9._k2)=20/=3D=20= inf)=20stop=2049=0A+=20=20if=20(ieee_max_num=20(-inf,=209._k2)=20/=3D=20= 9._k2)=20stop=2050=0A+=20=20if=20(ieee_max_num=20(0._k2,=20-inf)=20/=3D=20= 0._k2)=20stop=2051=0A+=20=20if=20(ieee_max_num=20(-9._k2,=20-inf)=20/=3D=20= -9._k2)=20stop=2052=0A+=20=20if=20(ieee_max_num=20(-inf,=20-9._k2)=20/=3D=20= -9._k2)=20stop=2053=0A+=0A+=20=20if=20(ieee_max_num=20(0._k2,=20nan)=20= /=3D=200._k2)=20stop=2054=0A+=20=20if=20(ieee_max_num=20(nan,=200._k2)=20= /=3D=200._k2)=20stop=2055=0A+=20=20if=20(ieee_max_num=20(-0._k2,=20nan)=20= /=3D=20-0._k2)=20stop=2056=0A+=20=20if=20(.not.=20ieee_signbit=20= (ieee_max_num=20(-0._k2,=20nan)))=20stop=2057=0A+=20=20if=20= (ieee_max_num=20(nan,=20-0._k2)=20/=3D=20-0._k2)=20stop=2058=0A+=20=20if=20= (.not.=20ieee_signbit=20(ieee_max_num=20(nan,=20-0._k2)))=20stop=2059=0A= +=20=20if=20(ieee_max_num=20(9._k2,=20nan)=20/=3D=209._k2)=20stop=2060=0A= +=20=20if=20(ieee_max_num=20(nan,=209._k2)=20/=3D=209._k2)=20stop=2061=0A= +=20=20if=20(ieee_max_num=20(-9._k2,=20nan)=20/=3D=20-9._k2)=20stop=2062=0A= +=20=20if=20(ieee_max_num=20(nan,=20-9._k2)=20/=3D=20-9._k2)=20stop=2063=0A= +=0A+=20=20if=20(ieee_max_num=20(nan,=20inf)=20/=3D=20inf)=20stop=2064=0A= +=20=20if=20(ieee_max_num=20(inf,=20nan)=20/=3D=20inf)=20stop=2065=0A+=20= =20if=20(ieee_max_num=20(nan,=20-inf)=20/=3D=20-inf)=20stop=2066=0A+=20=20= if=20(ieee_max_num=20(-inf,=20nan)=20/=3D=20-inf)=20stop=2067=0A+=0A+=20=20= if=20(.not.=20ieee_is_nan=20(ieee_max_num=20(nan,=20nan)))=20stop=2068=0A= +end=20subroutine=20large2=0A+=0Adiff=20--git=20= a/gcc/testsuite/gfortran.dg/ieee/minmax_4.f90=20= b/gcc/testsuite/gfortran.dg/ieee/minmax_4.f90=0Anew=20file=20mode=20= 100644=0Aindex=2000000000000..f55a96ba652=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gfortran.dg/ieee/minmax_4.f90=0A@@=20-0,0=20+1,235=20@@=0A= +!=20{=20dg-do=20run=20}=0A+!=0A+program=20test=0A+=20=20call=20real()=0A= +=20=20call=20double()=0A+=20=20call=20large1()=0A+=20=20call=20large2()=0A= +end=20program=20test=0A+=0A+=0A+subroutine=20real=0A+=20=20use=20= ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20=20real=20::=20inf,=20= nan=0A+=0A+=20=20inf=20=3D=20ieee_value(inf,=20ieee_positive_inf)=0A+=20=20= nan=20=3D=20ieee_value(nan,=20ieee_quiet_nan)=0A+=0A+=20=20if=20= (ieee_min_num=20(0.,=200.)=20/=3D=200.)=20stop=201=0A+=20=20if=20= (ieee_min_num=20(-0.,=20-0.)=20/=3D=20-0.)=20stop=202=0A+=20=20if=20= (.not.=20ieee_signbit=20(ieee_min_num=20(-0.,=20-0.)))=20stop=203=0A+=20=20= if=20(ieee_min_num=20(0.,=20-0.)=20/=3D=20-0.)=20stop=204=0A+=20=20!=20= Processor-dependent=0A+=20=20!if=20(ieee_signbit=20(ieee_min_num=20(0.,=20= -0.)))=20stop=205=0A+=20=20if=20(ieee_min_num=20(-0.,=200.)=20/=3D=200.)=20= stop=206=0A+=20=20!=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20= (ieee_min_num=20(-0.,=200.)))=20stop=207=0A+=0A+=20=20if=20(ieee_min_num=20= (9.,=200.)=20/=3D=200.)=20stop=208=0A+=20=20if=20(ieee_min_num=20(0.,=20= 9.)=20/=3D=200.)=20stop=209=0A+=20=20if=20(ieee_min_num=20(-9.,=200.)=20= /=3D=20-9.)=20stop=2010=0A+=20=20if=20(ieee_min_num=20(0.,=20-9.)=20/=3D=20= -9.)=20stop=2011=0A+=0A+=20=20if=20(ieee_min_num=20(inf,=209.)=20/=3D=20= 9.)=20stop=2012=0A+=20=20if=20(ieee_min_num=20(0.,=20inf)=20/=3D=200.)=20= stop=2013=0A+=20=20if=20(ieee_min_num=20(-9.,=20inf)=20/=3D=20-9.)=20= stop=2014=0A+=20=20if=20(ieee_min_num=20(inf,=20-9.)=20/=3D=20-9.)=20= stop=2015=0A+=20=20if=20(ieee_min_num=20(-inf,=209.)=20/=3D=20-inf)=20= stop=2016=0A+=20=20if=20(ieee_min_num=20(0.,=20-inf)=20/=3D=20-inf)=20= stop=2017=0A+=20=20if=20(ieee_min_num=20(-9.,=20-inf)=20/=3D=20-inf)=20= stop=2018=0A+=20=20if=20(ieee_min_num=20(-inf,=20-9.)=20/=3D=20-inf)=20= stop=2019=0A+=0A+=20=20if=20(ieee_min_num=20(0.,=20nan)=20/=3D=200.)=20= stop=2020=0A+=20=20if=20(ieee_min_num=20(nan,=200.)=20/=3D=200.)=20stop=20= 21=0A+=20=20if=20(ieee_min_num=20(-0.,=20nan)=20/=3D=20-0.)=20stop=2022=0A= +=20=20if=20(.not.=20ieee_signbit=20(ieee_min_num=20(-0.,=20nan)))=20= stop=2023=0A+=20=20if=20(ieee_min_num=20(nan,=20-0.)=20/=3D=20-0.)=20= stop=2024=0A+=20=20if=20(.not.=20ieee_signbit=20(ieee_min_num=20(nan,=20= -0.)))=20stop=2025=0A+=20=20if=20(ieee_min_num=20(9.,=20nan)=20/=3D=20= 9.)=20stop=2026=0A+=20=20if=20(ieee_min_num=20(nan,=209.)=20/=3D=209.)=20= stop=2027=0A+=20=20if=20(ieee_min_num=20(-9.,=20nan)=20/=3D=20-9.)=20= stop=2028=0A+=20=20if=20(ieee_min_num=20(nan,=20-9.)=20/=3D=20-9.)=20= stop=2029=0A+=0A+=20=20if=20(ieee_min_num=20(nan,=20inf)=20/=3D=20inf)=20= stop=2030=0A+=20=20if=20(ieee_min_num=20(inf,=20nan)=20/=3D=20inf)=20= stop=2031=0A+=20=20if=20(ieee_min_num=20(nan,=20-inf)=20/=3D=20-inf)=20= stop=2032=0A+=20=20if=20(ieee_min_num=20(-inf,=20nan)=20/=3D=20-inf)=20= stop=2033=0A+=0A+=20=20if=20(.not.=20ieee_is_nan=20(ieee_min_num=20(nan,=20= nan)))=20stop=2034=0A+end=20subroutine=20real=0A+=0A+=0A+subroutine=20= double=0A+=20=20use=20ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20= =20double=20precision=20::=20inf,=20nan=0A+=0A+=20=20inf=20=3D=20= ieee_value(inf,=20ieee_positive_inf)=0A+=20=20nan=20=3D=20= ieee_value(nan,=20ieee_quiet_nan)=0A+=0A+=20=20if=20(ieee_min_num=20= (0.d0,=200.d0)=20/=3D=200.d0)=20stop=2035=0A+=20=20if=20(ieee_min_num=20= (-0.d0,=20-0.d0)=20/=3D=20-0.d0)=20stop=2036=0A+=20=20if=20(.not.=20= ieee_signbit=20(ieee_min_num=20(-0.d0,=20-0.d0)))=20stop=2037=0A+=20=20= if=20(ieee_min_num=20(0.d0,=20-0.d0)=20/=3D=200.d0)=20stop=2038=0A+=20=20= !=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20(ieee_min_num=20= (0.d0,=20-0.d0)))=20stop=2039=0A+=20=20if=20(ieee_min_num=20(-0.d0,=20= 0.d0)=20/=3D=200.d0)=20stop=2040=0A+=20=20!=20Processor-dependent=0A+=20=20= !if=20(ieee_signbit=20(ieee_min_num=20(-0.d0,=200.d0)))=20stop=2041=0A+=0A= +=20=20if=20(ieee_min_num=20(9.d0,=200.d0)=20/=3D=200.d0)=20stop=2042=0A= +=20=20if=20(ieee_min_num=20(0.d0,=209.d0)=20/=3D=200.d0)=20stop=2043=0A= +=20=20if=20(ieee_min_num=20(-9.d0,=200.d0)=20/=3D=20-9.d0)=20stop=2044=0A= +=20=20if=20(ieee_min_num=20(0.d0,=20-9.d0)=20/=3D=20-9.d0)=20stop=2045=0A= +=0A+=20=20if=20(ieee_min_num=20(inf,=209.d0)=20/=3D=209.d0)=20stop=2046=0A= +=20=20if=20(ieee_min_num=20(0.d0,=20inf)=20/=3D=200.d0)=20stop=2047=0A+=20= =20if=20(ieee_min_num=20(-9.d0,=20inf)=20/=3D=20-9.d0)=20stop=2048=0A+=20= =20if=20(ieee_min_num=20(inf,=20-9.d0)=20/=3D=20-9.d0)=20stop=2049=0A+=20= =20if=20(ieee_min_num=20(-inf,=209.d0)=20/=3D=20-inf)=20stop=2050=0A+=20=20= if=20(ieee_min_num=20(0.d0,=20-inf)=20/=3D=20-inf)=20stop=2051=0A+=20=20= if=20(ieee_min_num=20(-9.d0,=20-inf)=20/=3D=20-inf)=20stop=2052=0A+=20=20= if=20(ieee_min_num=20(-inf,=20-9.d0)=20/=3D=20-inf)=20stop=2053=0A+=0A+=20= =20if=20(ieee_min_num=20(0.d0,=20nan)=20/=3D=200.d0)=20stop=2054=0A+=20=20= if=20(ieee_min_num=20(nan,=200.d0)=20/=3D=200.d0)=20stop=2055=0A+=20=20= if=20(ieee_min_num=20(-0.d0,=20nan)=20/=3D=20-0.d0)=20stop=2056=0A+=20=20= if=20(.not.=20ieee_signbit=20(ieee_min_num=20(-0.d0,=20nan)))=20stop=20= 57=0A+=20=20if=20(ieee_min_num=20(nan,=20-0.d0)=20/=3D=20-0.d0)=20stop=20= 58=0A+=20=20if=20(.not.=20ieee_signbit=20(ieee_min_num=20(nan,=20= -0.d0)))=20stop=2059=0A+=20=20if=20(ieee_min_num=20(9.d0,=20nan)=20/=3D=20= 9.d0)=20stop=2060=0A+=20=20if=20(ieee_min_num=20(nan,=209.d0)=20/=3D=20= 9.d0)=20stop=2061=0A+=20=20if=20(ieee_min_num=20(-9.d0,=20nan)=20/=3D=20= -9.d0)=20stop=2062=0A+=20=20if=20(ieee_min_num=20(nan,=20-9.d0)=20/=3D=20= -9.d0)=20stop=2063=0A+=0A+=20=20if=20(ieee_min_num=20(nan,=20inf)=20/=3D=20= inf)=20stop=2064=0A+=20=20if=20(ieee_min_num=20(inf,=20nan)=20/=3D=20= inf)=20stop=2065=0A+=20=20if=20(ieee_min_num=20(nan,=20-inf)=20/=3D=20= -inf)=20stop=2066=0A+=20=20if=20(ieee_min_num=20(-inf,=20nan)=20/=3D=20= -inf)=20stop=2067=0A+=0A+=20=20if=20(.not.=20ieee_is_nan=20(ieee_min_num=20= (nan,=20nan)))=20stop=2068=0A+end=20subroutine=20double=0A+=0A+=0A= +subroutine=20large1=0A+=20=20use=20ieee_arithmetic=0A+=20=20implicit=20= none=0A+=0A+=20=20!=20k1=20and=20k2=20will=20be=20large=20real=20kinds,=20= if=20supported,=20and=20single/double=0A+=20=20!=20otherwise=0A+=20=20= integer,=20parameter=20::=20k1=20=3D=20&=0A+=20=20=20=20= max(ieee_selected_real_kind(precision(0.d0)=20+=201),=20kind(0.))=0A+=20=20= integer,=20parameter=20::=20k2=20=3D=20&=0A+=20=20=20=20= max(ieee_selected_real_kind(precision(0._k1)=20+=201),=20kind(0.d0))=0A+=0A= +=20=20real(kind=3Dk1)=20::=20inf,=20nan=0A+=0A+=20=20inf=20=3D=20= ieee_value(inf,=20ieee_positive_inf)=0A+=20=20nan=20=3D=20= ieee_value(nan,=20ieee_quiet_nan)=0A+=0A+=20=20if=20(ieee_min_num=20= (0._k1,=200._k1)=20/=3D=200._k1)=20stop=2035=0A+=20=20if=20(ieee_min_num=20= (-0._k1,=20-0._k1)=20/=3D=20-0._k1)=20stop=2036=0A+=20=20if=20(.not.=20= ieee_signbit=20(ieee_min_num=20(-0._k1,=20-0._k1)))=20stop=2037=0A+=20=20= if=20(ieee_min_num=20(0._k1,=20-0._k1)=20/=3D=200._k1)=20stop=2038=0A+=20= =20!=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20(ieee_min_num=20= (0._k1,=20-0._k1)))=20stop=2039=0A+=20=20if=20(ieee_min_num=20(-0._k1,=20= 0._k1)=20/=3D=200._k1)=20stop=2040=0A+=20=20!=20Processor-dependent=0A+=20= =20!if=20(ieee_signbit=20(ieee_min_num=20(-0._k1,=200._k1)))=20stop=2041=0A= +=0A+=20=20if=20(ieee_min_num=20(9._k1,=200._k1)=20/=3D=200._k1)=20stop=20= 42=0A+=20=20if=20(ieee_min_num=20(0._k1,=209._k1)=20/=3D=200._k1)=20stop=20= 43=0A+=20=20if=20(ieee_min_num=20(-9._k1,=200._k1)=20/=3D=20-9._k1)=20= stop=2044=0A+=20=20if=20(ieee_min_num=20(0._k1,=20-9._k1)=20/=3D=20= -9._k1)=20stop=2045=0A+=0A+=20=20if=20(ieee_min_num=20(inf,=209._k1)=20= /=3D=209._k1)=20stop=2046=0A+=20=20if=20(ieee_min_num=20(0._k1,=20inf)=20= /=3D=200._k1)=20stop=2047=0A+=20=20if=20(ieee_min_num=20(-9._k1,=20inf)=20= /=3D=20-9._k1)=20stop=2048=0A+=20=20if=20(ieee_min_num=20(inf,=20-9._k1)=20= /=3D=20-9._k1)=20stop=2049=0A+=20=20if=20(ieee_min_num=20(-inf,=209._k1)=20= /=3D=20-inf)=20stop=2050=0A+=20=20if=20(ieee_min_num=20(0._k1,=20-inf)=20= /=3D=20-inf)=20stop=2051=0A+=20=20if=20(ieee_min_num=20(-9._k1,=20-inf)=20= /=3D=20-inf)=20stop=2052=0A+=20=20if=20(ieee_min_num=20(-inf,=20-9._k1)=20= /=3D=20-inf)=20stop=2053=0A+=0A+=20=20if=20(ieee_min_num=20(0._k1,=20= nan)=20/=3D=200._k1)=20stop=2054=0A+=20=20if=20(ieee_min_num=20(nan,=20= 0._k1)=20/=3D=200._k1)=20stop=2055=0A+=20=20if=20(ieee_min_num=20= (-0._k1,=20nan)=20/=3D=20-0._k1)=20stop=2056=0A+=20=20if=20(.not.=20= ieee_signbit=20(ieee_min_num=20(-0._k1,=20nan)))=20stop=2057=0A+=20=20if=20= (ieee_min_num=20(nan,=20-0._k1)=20/=3D=20-0._k1)=20stop=2058=0A+=20=20if=20= (.not.=20ieee_signbit=20(ieee_min_num=20(nan,=20-0._k1)))=20stop=2059=0A= +=20=20if=20(ieee_min_num=20(9._k1,=20nan)=20/=3D=209._k1)=20stop=2060=0A= +=20=20if=20(ieee_min_num=20(nan,=209._k1)=20/=3D=209._k1)=20stop=2061=0A= +=20=20if=20(ieee_min_num=20(-9._k1,=20nan)=20/=3D=20-9._k1)=20stop=2062=0A= +=20=20if=20(ieee_min_num=20(nan,=20-9._k1)=20/=3D=20-9._k1)=20stop=2063=0A= +=0A+=20=20if=20(ieee_min_num=20(nan,=20inf)=20/=3D=20inf)=20stop=2064=0A= +=20=20if=20(ieee_min_num=20(inf,=20nan)=20/=3D=20inf)=20stop=2065=0A+=20= =20if=20(ieee_min_num=20(nan,=20-inf)=20/=3D=20-inf)=20stop=2066=0A+=20=20= if=20(ieee_min_num=20(-inf,=20nan)=20/=3D=20-inf)=20stop=2067=0A+=0A+=20=20= if=20(.not.=20ieee_is_nan=20(ieee_min_num=20(nan,=20nan)))=20stop=2068=0A= +end=20subroutine=20large1=0A+=0A+=0A+subroutine=20large2=0A+=20=20use=20= ieee_arithmetic=0A+=20=20implicit=20none=0A+=0A+=20=20!=20k1=20and=20k2=20= will=20be=20large=20real=20kinds,=20if=20supported,=20and=20= single/double=0A+=20=20!=20otherwise=0A+=20=20integer,=20parameter=20::=20= k1=20=3D=20&=0A+=20=20=20=20max(ieee_selected_real_kind(precision(0.d0)=20= +=201),=20kind(0.))=0A+=20=20integer,=20parameter=20::=20k2=20=3D=20&=0A= +=20=20=20=20max(ieee_selected_real_kind(precision(0._k1)=20+=201),=20= kind(0.d0))=0A+=0A+=20=20real(kind=3Dk2)=20::=20inf,=20nan=0A+=0A+=20=20= inf=20=3D=20ieee_value(inf,=20ieee_positive_inf)=0A+=20=20nan=20=3D=20= ieee_value(nan,=20ieee_quiet_nan)=0A+=0A+=20=20if=20(ieee_min_num=20= (0._k2,=200._k2)=20/=3D=200._k2)=20stop=2035=0A+=20=20if=20(ieee_min_num=20= (-0._k2,=20-0._k2)=20/=3D=20-0._k2)=20stop=2036=0A+=20=20if=20(.not.=20= ieee_signbit=20(ieee_min_num=20(-0._k2,=20-0._k2)))=20stop=2037=0A+=20=20= if=20(ieee_min_num=20(0._k2,=20-0._k2)=20/=3D=200._k2)=20stop=2038=0A+=20= =20!=20Processor-dependent=0A+=20=20!if=20(ieee_signbit=20(ieee_min_num=20= (0._k2,=20-0._k2)))=20stop=2039=0A+=20=20if=20(ieee_min_num=20(-0._k2,=20= 0._k2)=20/=3D=200._k2)=20stop=2040=0A+=20=20!=20Processor-dependent=0A+=20= =20!if=20(ieee_signbit=20(ieee_min_num=20(-0._k2,=200._k2)))=20stop=2041=0A= +=0A+=20=20if=20(ieee_min_num=20(9._k2,=200._k2)=20/=3D=200._k2)=20stop=20= 42=0A+=20=20if=20(ieee_min_num=20(0._k2,=209._k2)=20/=3D=200._k2)=20stop=20= 43=0A+=20=20if=20(ieee_min_num=20(-9._k2,=200._k2)=20/=3D=20-9._k2)=20= stop=2044=0A+=20=20if=20(ieee_min_num=20(0._k2,=20-9._k2)=20/=3D=20= -9._k2)=20stop=2045=0A+=0A+=20=20if=20(ieee_min_num=20(inf,=209._k2)=20= /=3D=209._k2)=20stop=2046=0A+=20=20if=20(ieee_min_num=20(0._k2,=20inf)=20= /=3D=200._k2)=20stop=2047=0A+=20=20if=20(ieee_min_num=20(-9._k2,=20inf)=20= /=3D=20-9._k2)=20stop=2048=0A+=20=20if=20(ieee_min_num=20(inf,=20-9._k2)=20= /=3D=20-9._k2)=20stop=2049=0A+=20=20if=20(ieee_min_num=20(-inf,=209._k2)=20= /=3D=20-inf)=20stop=2050=0A+=20=20if=20(ieee_min_num=20(0._k2,=20-inf)=20= /=3D=20-inf)=20stop=2051=0A+=20=20if=20(ieee_min_num=20(-9._k2,=20-inf)=20= /=3D=20-inf)=20stop=2052=0A+=20=20if=20(ieee_min_num=20(-inf,=20-9._k2)=20= /=3D=20-inf)=20stop=2053=0A+=0A+=20=20if=20(ieee_min_num=20(0._k2,=20= nan)=20/=3D=200._k2)=20stop=2054=0A+=20=20if=20(ieee_min_num=20(nan,=20= 0._k2)=20/=3D=200._k2)=20stop=2055=0A+=20=20if=20(ieee_min_num=20= (-0._k2,=20nan)=20/=3D=20-0._k2)=20stop=2056=0A+=20=20if=20(.not.=20= ieee_signbit=20(ieee_min_num=20(-0._k2,=20nan)))=20stop=2057=0A+=20=20if=20= (ieee_min_num=20(nan,=20-0._k2)=20/=3D=20-0._k2)=20stop=2058=0A+=20=20if=20= (.not.=20ieee_signbit=20(ieee_min_num=20(nan,=20-0._k2)))=20stop=2059=0A= +=20=20if=20(ieee_min_num=20(9._k2,=20nan)=20/=3D=209._k2)=20stop=2060=0A= +=20=20if=20(ieee_min_num=20(nan,=209._k2)=20/=3D=209._k2)=20stop=2061=0A= +=20=20if=20(ieee_min_num=20(-9._k2,=20nan)=20/=3D=20-9._k2)=20stop=2062=0A= +=20=20if=20(ieee_min_num=20(nan,=20-9._k2)=20/=3D=20-9._k2)=20stop=2063=0A= +=0A+=20=20if=20(ieee_min_num=20(nan,=20inf)=20/=3D=20inf)=20stop=2064=0A= +=20=20if=20(ieee_min_num=20(inf,=20nan)=20/=3D=20inf)=20stop=2065=0A+=20= =20if=20(ieee_min_num=20(nan,=20-inf)=20/=3D=20-inf)=20stop=2066=0A+=20=20= if=20(ieee_min_num=20(-inf,=20nan)=20/=3D=20-inf)=20stop=2067=0A+=0A+=20=20= if=20(.not.=20ieee_is_nan=20(ieee_min_num=20(nan,=20nan)))=20stop=2068=0A= +end=20subroutine=20large2=0A+=0Adiff=20--git=20= a/libgfortran/ieee/ieee_arithmetic.F90=20= b/libgfortran/ieee/ieee_arithmetic.F90=0Aindex=20= 9c0b9f31730..d34ece6c8d2=20100644=0A---=20= a/libgfortran/ieee/ieee_arithmetic.F90=0A+++=20= b/libgfortran/ieee/ieee_arithmetic.F90=0A@@=20-223,6=20+223,132=20@@=20= module=20IEEE_ARITHMETIC=0A=20=20=20end=20interface=0A=20=20=20public=20= ::=20IEEE_IS_NORMAL=0A=20=0A+=20=20!=20IEEE_MIN_NUM,=20IEEE_MAX_NUM,=20= IEEE_MIN_NUM_MAG,=20IEEE_MAX_NUM_MAG=0A+=0A+=20=20interface=0A+=20=20=20=20= elemental=20real(kind=3D4)=20function=20_gfortran_ieee_max_num_4(X,=20Y)=0A= +=20=20=20=20=20=20real(kind=3D4),=20intent(in)=20::=20X,=20Y=0A+=20=20=20= =20end=20function=0A+=20=20=20=20elemental=20real(kind=3D8)=20function=20= _gfortran_ieee_max_num_8(X,=20Y)=0A+=20=20=20=20=20=20real(kind=3D8),=20= intent(in)=20::=20X,=20Y=0A+=20=20=20=20end=20function=0A+#ifdef=20= HAVE_GFC_REAL_10=0A+=20=20=20=20elemental=20real(kind=3D10)=20function=20= _gfortran_ieee_max_num_10(X,=20Y)=0A+=20=20=20=20=20=20real(kind=3D10),=20= intent(in)=20::=20X,=20Y=0A+=20=20=20=20end=20function=0A+#endif=0A= +#ifdef=20HAVE_GFC_REAL_16=0A+=20=20=20=20elemental=20real(kind=3D16)=20= function=20_gfortran_ieee_max_num_16(X,=20Y)=0A+=20=20=20=20=20=20= real(kind=3D16),=20intent(in)=20::=20X,=20Y=0A+=20=20=20=20end=20= function=0A+#endif=0A+=20=20end=20interface=0A+=0A+=20=20interface=20= IEEE_MAX_NUM=0A+=20=20=20=20procedure=20&=0A+#ifdef=20HAVE_GFC_REAL_16=0A= +=20=20=20=20=20=20_gfortran_ieee_max_num_16,=20&=0A+#endif=0A+#ifdef=20= HAVE_GFC_REAL_10=0A+=20=20=20=20=20=20_gfortran_ieee_max_num_10,=20&=0A= +#endif=0A+=20=20=20=20=20=20_gfortran_ieee_max_num_8,=20= _gfortran_ieee_max_num_4=0A+=20=20end=20interface=0A+=20=20public=20::=20= IEEE_MAX_NUM=0A+=0A+=20=20interface=0A+=20=20=20=20elemental=20= real(kind=3D4)=20function=20_gfortran_ieee_max_num_mag_4(X,=20Y)=0A+=20=20= =20=20=20=20real(kind=3D4),=20intent(in)=20::=20X,=20Y=0A+=20=20=20=20= end=20function=0A+=20=20=20=20elemental=20real(kind=3D8)=20function=20= _gfortran_ieee_max_num_mag_8(X,=20Y)=0A+=20=20=20=20=20=20real(kind=3D8),=20= intent(in)=20::=20X,=20Y=0A+=20=20=20=20end=20function=0A+#ifdef=20= HAVE_GFC_REAL_10=0A+=20=20=20=20elemental=20real(kind=3D10)=20function=20= _gfortran_ieee_max_num_mag_10(X,=20Y)=0A+=20=20=20=20=20=20= real(kind=3D10),=20intent(in)=20::=20X,=20Y=0A+=20=20=20=20end=20= function=0A+#endif=0A+#ifdef=20HAVE_GFC_REAL_16=0A+=20=20=20=20elemental=20= real(kind=3D16)=20function=20_gfortran_ieee_max_num_mag_16(X,=20Y)=0A+=20= =20=20=20=20=20real(kind=3D16),=20intent(in)=20::=20X,=20Y=0A+=20=20=20=20= end=20function=0A+#endif=0A+=20=20end=20interface=0A+=0A+=20=20interface=20= IEEE_MAX_NUM_MAG=0A+=20=20=20=20procedure=20&=0A+#ifdef=20= HAVE_GFC_REAL_16=0A+=20=20=20=20=20=20_gfortran_ieee_max_num_mag_16,=20&=0A= +#endif=0A+#ifdef=20HAVE_GFC_REAL_10=0A+=20=20=20=20=20=20= _gfortran_ieee_max_num_mag_10,=20&=0A+#endif=0A+=20=20=20=20=20=20= _gfortran_ieee_max_num_mag_8,=20_gfortran_ieee_max_num_mag_4=0A+=20=20= end=20interface=0A+=20=20public=20::=20IEEE_MAX_NUM_MAG=0A+=0A+=20=20= interface=0A+=20=20=20=20elemental=20real(kind=3D4)=20function=20= _gfortran_ieee_min_num_4(X,=20Y)=0A+=20=20=20=20=20=20real(kind=3D4),=20= intent(in)=20::=20X,=20Y=0A+=20=20=20=20end=20function=0A+=20=20=20=20= elemental=20real(kind=3D8)=20function=20_gfortran_ieee_min_num_8(X,=20Y)=0A= +=20=20=20=20=20=20real(kind=3D8),=20intent(in)=20::=20X,=20Y=0A+=20=20=20= =20end=20function=0A+#ifdef=20HAVE_GFC_REAL_10=0A+=20=20=20=20elemental=20= real(kind=3D10)=20function=20_gfortran_ieee_min_num_10(X,=20Y)=0A+=20=20=20= =20=20=20real(kind=3D10),=20intent(in)=20::=20X,=20Y=0A+=20=20=20=20end=20= function=0A+#endif=0A+#ifdef=20HAVE_GFC_REAL_16=0A+=20=20=20=20elemental=20= real(kind=3D16)=20function=20_gfortran_ieee_min_num_16(X,=20Y)=0A+=20=20=20= =20=20=20real(kind=3D16),=20intent(in)=20::=20X,=20Y=0A+=20=20=20=20end=20= function=0A+#endif=0A+=20=20end=20interface=0A+=0A+=20=20interface=20= IEEE_MIN_NUM=0A+=20=20=20=20procedure=20&=0A+#ifdef=20HAVE_GFC_REAL_16=0A= +=20=20=20=20=20=20_gfortran_ieee_min_num_16,=20&=0A+#endif=0A+#ifdef=20= HAVE_GFC_REAL_10=0A+=20=20=20=20=20=20_gfortran_ieee_min_num_10,=20&=0A= +#endif=0A+=20=20=20=20=20=20_gfortran_ieee_min_num_8,=20= _gfortran_ieee_min_num_4=0A+=20=20end=20interface=0A+=20=20public=20::=20= IEEE_MIN_NUM=0A+=0A+=20=20interface=0A+=20=20=20=20elemental=20= real(kind=3D4)=20function=20_gfortran_ieee_min_num_mag_4(X,=20Y)=0A+=20=20= =20=20=20=20real(kind=3D4),=20intent(in)=20::=20X,=20Y=0A+=20=20=20=20= end=20function=0A+=20=20=20=20elemental=20real(kind=3D8)=20function=20= _gfortran_ieee_min_num_mag_8(X,=20Y)=0A+=20=20=20=20=20=20real(kind=3D8),=20= intent(in)=20::=20X,=20Y=0A+=20=20=20=20end=20function=0A+#ifdef=20= HAVE_GFC_REAL_10=0A+=20=20=20=20elemental=20real(kind=3D10)=20function=20= _gfortran_ieee_min_num_mag_10(X,=20Y)=0A+=20=20=20=20=20=20= real(kind=3D10),=20intent(in)=20::=20X,=20Y=0A+=20=20=20=20end=20= function=0A+#endif=0A+#ifdef=20HAVE_GFC_REAL_16=0A+=20=20=20=20elemental=20= real(kind=3D16)=20function=20_gfortran_ieee_min_num_mag_16(X,=20Y)=0A+=20= =20=20=20=20=20real(kind=3D16),=20intent(in)=20::=20X,=20Y=0A+=20=20=20=20= end=20function=0A+#endif=0A+=20=20end=20interface=0A+=0A+=20=20interface=20= IEEE_MIN_NUM_MAG=0A+=20=20=20=20procedure=20&=0A+#ifdef=20= HAVE_GFC_REAL_16=0A+=20=20=20=20=20=20_gfortran_ieee_min_num_mag_16,=20&=0A= +#endif=0A+#ifdef=20HAVE_GFC_REAL_10=0A+=20=20=20=20=20=20= _gfortran_ieee_min_num_mag_10,=20&=0A+#endif=0A+=20=20=20=20=20=20= _gfortran_ieee_min_num_mag_8,=20_gfortran_ieee_min_num_mag_4=0A+=20=20= end=20interface=0A+=20=20public=20::=20IEEE_MIN_NUM_MAG=0A+=0A=20=20=20!=20= IEEE_COPY_SIGN=0A=20=0A=20#define=20COPYSIGN_MACRO(A,B)=20\=0A--=20=0A= 2.34.1=0A=0A= --Apple-Mail=_5066CCA9-B1E1-4C30-9CF5-06FE42AE3C48--