From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by sourceware.org (Postfix) with ESMTPS id DA0363858C33 for ; Wed, 19 Jul 2023 14:49:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DA0363858C33 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-x336.google.com with SMTP id 5b1f17b1804b1-3fbe35e028aso12138605e9.0 for ; Wed, 19 Jul 2023 07:49:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689778145; x=1690382945; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:from:to:cc:subject:date:message-id:reply-to; bh=YhlngFtB7QKEgFVRidhPxK7P9hzivA9qaTcAbvgX4DA=; b=auzHrba8YYnuiBjktGPsuLpzlekD8fMFncSy8nSyoCQMN7Vz9dairRwWQPAPqOMXar CJwMoiJkH2BUuQqwuCQlT3jaUO8/CVW400htghnD5w76lQ8mCoeoNt7pVCsmja17kT4r raYGnAYXHj3zYDlMM+m4/cB0agTVeAkc0+Un70AZYHYjcxBUwIBivJ+Iyhjms7n3qrqV CgwjTGl+4eDYPK2f28ze12ATOJEO5Ild8cTBP0OdR82pLiCBbbk0wp9CaF91cVGZKDNu gfW1Nf0CDZ1KYBN/LnrEmZ8Yv9QDJdiQiLxsh/wtzG/iU5HR/dSHELpg3kc7StLcZ3uo HLxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689778145; x=1690382945; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YhlngFtB7QKEgFVRidhPxK7P9hzivA9qaTcAbvgX4DA=; b=VS+bJxiDjARcA0V3ijgEYP9ryWhuWCjKohfPyj9OLsbbo7TXZZ+3VUmhQad9SCKCKM ll6iRiwhbX/cb2HSsyUoLqJ+OeKaLEywVWWbEj2KVb4mNp07IgnIb+x1cz82ufRYy0+j 990pvz7mryE42Iz/6QLMTTj2lasEmfXJqvPtk3bFjAuVX0SorW7GbiSgGMWuVHKSXvaI MaWeWwJsO8q7ndTX7JfBEwa5/DWX6khqXS6hsP9HVgUxbAhwfr1o9zF3YvcQYq0vkcSp vFcCL493POOjofuxzILOcxkSLGJ0/dhFcuU0MwvjOmK+azNgd3puf8y+DXe9a75Jd59l 1PCg== X-Gm-Message-State: ABy/qLZJOAeBAawQRshx2mWh/FF/p5t43VUDrw4ZuEib9c4cNTIt4VQ3 YNU0oYHhrFDTk7BEPMontRxnGBicgVA= X-Google-Smtp-Source: APBJJlHb9qs5ejuoba548wfCdHqt5ab59x5E6pCZb1oPcPA3F0GHfrXGj9b18D+0Z+lew1wFoPjarQ== X-Received: by 2002:a05:600c:35c7:b0:3f9:9a6:eb68 with SMTP id r7-20020a05600c35c700b003f909a6eb68mr11136210wmq.3.1689778144682; Wed, 19 Jul 2023 07:49:04 -0700 (PDT) Received: from smtpclient.apple (chp127.enscp.fr. [193.51.253.127]) by smtp.gmail.com with ESMTPSA id 19-20020a05600c24d300b003fc0062f0f8sm1915800wmu.9.2023.07.19.07.49.03 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 19 Jul 2023 07:49:04 -0700 (PDT) From: FX Coudert Message-Id: <4AEED749-8689-4272-898F-D8BB23073B60@gmail.com> Content-Type: multipart/mixed; boundary="Apple-Mail=_A5B1F96C-6A5A-4DA2-914C-E3E6D9A8F2D8" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.600.7\)) Subject: Re: [PATCH] Add __builtin_iseqsig() Date: Wed, 19 Jul 2023 16:48:53 +0200 In-Reply-To: <5D59385E-B643-42CE-809E-D52A1F4FE1D3@gmail.com> Cc: Jakub Jelinek , Joseph Myers , rguenther@suse.de To: gcc-patches@gcc.gnu.org References: <127A04DF-0BC1-40B4-956A-B22C39F97BF9@gmail.com> <3FD18835-D09C-4073-B23F-DD1038D4D0AC@gmail.com> <43356B54-A446-450A-80F8-620120ED1FCC@gmail.com> <5D59385E-B643-42CE-809E-D52A1F4FE1D3@gmail.com> 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,KAM_SHORT,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=_A5B1F96C-6A5A-4DA2-914C-E3E6D9A8F2D8 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 6 weeks later, I=E2=80=99d like to ask a global maintainer to review = this. The idea was okay=E2=80=99ed previously by Joseph Myers, but he asked = for testing of both the quiet and signalling NaN cases, which is now = done. FX > Le 6 juin 2023 =C3=A0 20:15, FX Coudert a =C3=A9cr= it : >=20 > Hi, >=20 > (It took me a while to get back to this.) >=20 > This is a new and improved version of the patch at = https://gcc.gnu.org/pipermail/gcc-patches/2022-October/602932.html > It addresses the comment from Joseph that FE_INVALID should really be = tested in the case of both quiet and signaling NaNs, which is now done = systematically. >=20 > Bootstrapped and regtested on x86_64-pc-linux-gnu > OK to commit? >=20 > FX >=20 --Apple-Mail=_A5B1F96C-6A5A-4DA2-914C-E3E6D9A8F2D8 Content-Disposition: attachment; filename=0001-Add-__builtin_iseqsig.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-Add-__builtin_iseqsig.patch" Content-Transfer-Encoding: quoted-printable =46rom=2046833574721f363cbbde032dcf8205340eeae468=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Francois-Xavier=20Coudert=20= =0ADate:=20Thu,=201=20Sep=202022=2022:49:49=20= +0200=0ASubject:=20[PATCH=201/2]=20Add=20__builtin_iseqsig()=0A=0A= iseqsig()=20is=20a=20C2x=20library=20function,=20for=20signaling=20= floating-point=0Aequality=20checks.=20=20Provide=20a=20GCC-builtin=20for=20= it,=20which=20is=20folded=20to=0Aa=20series=20of=20comparisons.=0A=0A= 2022-09-01=20=20Francois-Xavier=20Coudert=20=20=0A= =0A=09PR=20middle-end/77928=0A=0Agcc/=0A=09*=20doc/extend.texi:=20= Document=20iseqsig=20builtin.=0A=09*=20builtins.cc=20= (fold_builtin_iseqsig):=20New=20function.=0A=09(fold_builtin_2):=20= Handle=20BUILT_IN_ISEQSIG.=0A=09(is_inexpensive_builtin):=20Handle=20= BUILT_IN_ISEQSIG.=0A=09*=20builtins.def=20(BUILT_IN_ISEQSIG):=20New=20= built-in.=0A=0Agcc/c-family/=0A=09*=20c-common.cc=20= (check_builtin_function_arguments):=0A=09Handle=20BUILT_IN_ISEQSIG.=0A=0A= gcc/testsuite/=0A=09*=20gcc.dg/torture/builtin-iseqsig-1.c:=20New=20= test.=0A=09*=20gcc.dg/torture/builtin-iseqsig-2.c:=20New=20test.=0A=09*=20= gcc.dg/torture/builtin-iseqsig-3.c:=20New=20test.=0A---=0A=20= gcc/builtins.cc=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20=2041=20+++++++=0A=20= gcc/builtins.def=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20=20=201=20+=0A=20= gcc/c-family/c-common.cc=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20=20=201=20+=0A=20gcc/doc/extend.texi=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=20=20= 7=20+-=0A=20.../gcc.dg/torture/builtin-iseqsig-1.c=20=20=20=20=20=20=20=20= |=20113=20++++++++++++++++++=0A=20.../gcc.dg/torture/builtin-iseqsig-2.c=20= =20=20=20=20=20=20=20|=20113=20++++++++++++++++++=0A=20= .../gcc.dg/torture/builtin-iseqsig-3.c=20=20=20=20=20=20=20=20|=20113=20= ++++++++++++++++++=0A=207=20files=20changed,=20386=20insertions(+),=203=20= deletions(-)=0A=20create=20mode=20100644=20= gcc/testsuite/gcc.dg/torture/builtin-iseqsig-1.c=0A=20create=20mode=20= 100644=20gcc/testsuite/gcc.dg/torture/builtin-iseqsig-2.c=0A=20create=20= mode=20100644=20gcc/testsuite/gcc.dg/torture/builtin-iseqsig-3.c=0A=0A= diff=20--git=20a/gcc/builtins.cc=20b/gcc/builtins.cc=0Aindex=20= 8400adaf5b4..9fd44cf7fcd=20100644=0A---=20a/gcc/builtins.cc=0A+++=20= b/gcc/builtins.cc=0A@@=20-171,6=20+171,7=20@@=20static=20tree=20= fold_builtin_fabs=20(location_t,=20tree,=20tree);=0A=20static=20tree=20= fold_builtin_abs=20(location_t,=20tree,=20tree);=0A=20static=20tree=20= fold_builtin_unordered_cmp=20(location_t,=20tree,=20tree,=20tree,=20enum=20= tree_code,=0A=20=09=09=09=09=09enum=20tree_code);=0A+static=20tree=20= fold_builtin_iseqsig=20(location_t,=20tree,=20tree);=0A=20static=20tree=20= fold_builtin_varargs=20(location_t,=20tree,=20tree*,=20int);=0A=20=0A=20= static=20tree=20fold_builtin_strpbrk=20(location_t,=20tree,=20tree,=20= tree,=20tree);=0A@@=20-9445,6=20+9446,42=20@@=20= fold_builtin_unordered_cmp=20(location_t=20loc,=20tree=20fndecl,=20tree=20= arg0,=20tree=20arg1,=0A=20=09=09=20=20=20=20=20=20fold_build2_loc=20= (loc,=20code,=20type,=20arg0,=20arg1));=0A=20}=0A=20=0A+/*=20Fold=20a=20= call=20to=20__builtin_iseqsig().=20=20ARG0=20and=20ARG1=20are=20the=20= arguments.=0A+=20=20=20After=20choosing=20the=20wider=20floating-point=20= type=20for=20the=20comparison,=0A+=20=20=20the=20code=20is=20folded=20= to:=0A+=20=20=20=20=20SAVE_EXPR=20>=3D=20SAVE_EXPR=20&&=20= SAVE_EXPR=20<=3D=20SAVE_EXPR=20=20*/=0A+=0A+static=20tree=0A= +fold_builtin_iseqsig=20(location_t=20loc,=20tree=20arg0,=20tree=20arg1)=0A= +{=0A+=20=20tree=20type0,=20type1;=0A+=20=20enum=20tree_code=20code0,=20= code1;=0A+=20=20tree=20cmp1,=20cmp2,=20cmp_type=20=3D=20NULL_TREE;=0A+=0A= +=20=20type0=20=3D=20TREE_TYPE=20(arg0);=0A+=20=20type1=20=3D=20= TREE_TYPE=20(arg1);=0A+=0A+=20=20code0=20=3D=20TREE_CODE=20(type0);=0A+=20= =20code1=20=3D=20TREE_CODE=20(type1);=0A+=0A+=20=20if=20(code0=20=3D=3D=20= REAL_TYPE=20&&=20code1=20=3D=3D=20REAL_TYPE)=0A+=20=20=20=20/*=20Choose=20= the=20wider=20of=20two=20real=20types.=20=20*/=0A+=20=20=20=20cmp_type=20= =3D=20TYPE_PRECISION=20(type0)=20>=3D=20TYPE_PRECISION=20(type1)=0A+=20=20= =20=20=20=20?=20type0=20:=20type1;=0A+=20=20else=20if=20(code0=20=3D=3D=20= REAL_TYPE=20&&=20code1=20=3D=3D=20INTEGER_TYPE)=0A+=20=20=20=20cmp_type=20= =3D=20type0;=0A+=20=20else=20if=20(code0=20=3D=3D=20INTEGER_TYPE=20&&=20= code1=20=3D=3D=20REAL_TYPE)=0A+=20=20=20=20cmp_type=20=3D=20type1;=0A+=0A= +=20=20arg0=20=3D=20builtin_save_expr=20(fold_convert_loc=20(loc,=20= cmp_type,=20arg0));=0A+=20=20arg1=20=3D=20builtin_save_expr=20= (fold_convert_loc=20(loc,=20cmp_type,=20arg1));=0A+=0A+=20=20cmp1=20=3D=20= fold_build2_loc=20(loc,=20GE_EXPR,=20integer_type_node,=20arg0,=20arg1);=0A= +=20=20cmp2=20=3D=20fold_build2_loc=20(loc,=20LE_EXPR,=20= integer_type_node,=20arg0,=20arg1);=0A+=0A+=20=20return=20= fold_build2_loc=20(loc,=20TRUTH_AND_EXPR,=20integer_type_node,=20cmp1,=20= cmp2);=0A+}=0A+=0A=20/*=20Fold=20= __builtin_{,s,u}{add,sub,mul}{,l,ll}_overflow,=20either=20into=20normal=0A= =20=20=20=20arithmetics=20if=20it=20can=20never=20overflow,=20or=20into=20= internal=20functions=20that=0A=20=20=20=20return=20both=20result=20of=20= arithmetics=20and=20overflowed=20boolean=20flag=20in=0A@@=20-9833,6=20= +9870,9=20@@=20fold_builtin_2=20(location_t=20loc,=20tree=20expr,=20tree=20= fndecl,=20tree=20arg0,=20tree=20arg1)=0A=20=09=09=09=09=09=20arg0,=20= arg1,=20UNORDERED_EXPR,=0A=20=09=09=09=09=09=20NOP_EXPR);=0A=20=0A+=20=20= =20=20case=20BUILT_IN_ISEQSIG:=0A+=20=20=20=20=20=20return=20= fold_builtin_iseqsig=20(loc,=20arg0,=20arg1);=0A+=0A=20=20=20=20=20=20=20= /*=20We=20do=20the=20folding=20for=20va_start=20in=20the=20expander.=20=20= */=0A=20=20=20=20=20case=20BUILT_IN_VA_START:=0A=20=20=20=20=20=20=20= break;=0A@@=20-11343,6=20+11383,7=20@@=20is_inexpensive_builtin=20(tree=20= decl)=0A=20=20=20=20=20=20=20case=20BUILT_IN_ISLESSEQUAL:=0A=20=20=20=20=20= =20=20case=20BUILT_IN_ISLESSGREATER:=0A=20=20=20=20=20=20=20case=20= BUILT_IN_ISUNORDERED:=0A+=20=20=20=20=20=20case=20BUILT_IN_ISEQSIG:=0A=20= =20=20=20=20=20=20case=20BUILT_IN_VA_ARG_PACK:=0A=20=20=20=20=20=20=20= case=20BUILT_IN_VA_ARG_PACK_LEN:=0A=20=20=20=20=20=20=20case=20= BUILT_IN_VA_COPY:=0Adiff=20--git=20a/gcc/builtins.def=20= b/gcc/builtins.def=0Aindex=204ad95a12f83..8cc282c1b87=20100644=0A---=20= a/gcc/builtins.def=0A+++=20b/gcc/builtins.def=0A@@=20-1023,6=20+1023,7=20= @@=20DEF_GCC_BUILTIN=20=20=20=20=20=20=20=20(BUILT_IN_ISLESS,=20= "isless",=20BT_FN_INT_VAR,=20ATTR_CONST_NOT=0A=20DEF_GCC_BUILTIN=20=20=20= =20=20=20=20=20(BUILT_IN_ISLESSEQUAL,=20"islessequal",=20BT_FN_INT_VAR,=20= ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)=0A=20DEF_GCC_BUILTIN=20=20=20=20=20=20= =20=20(BUILT_IN_ISLESSGREATER,=20"islessgreater",=20BT_FN_INT_VAR,=20= ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)=0A=20DEF_GCC_BUILTIN=20=20=20=20=20=20= =20=20(BUILT_IN_ISUNORDERED,=20"isunordered",=20BT_FN_INT_VAR,=20= ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)=0A+DEF_GCC_BUILTIN=20=20=20=20=20=20= =20=20(BUILT_IN_ISEQSIG,=20"iseqsig",=20BT_FN_INT_VAR,=20= ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)=0A=20DEF_GCC_BUILTIN=20=20=20=20=20=20= =20=20(BUILT_IN_ISSIGNALING,=20"issignaling",=20BT_FN_INT_VAR,=20= ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)=0A=20DEF_LIB_BUILTIN=20=20=20=20=20=20= =20=20(BUILT_IN_LABS,=20"labs",=20BT_FN_LONG_LONG,=20= ATTR_CONST_NOTHROW_LEAF_LIST)=0A=20DEF_C99_BUILTIN=20=20=20=20=20=20=20=20= (BUILT_IN_LLABS,=20"llabs",=20BT_FN_LONGLONG_LONGLONG,=20= ATTR_CONST_NOTHROW_LEAF_LIST)=0Adiff=20--git=20= a/gcc/c-family/c-common.cc=20b/gcc/c-family/c-common.cc=0Aindex=20= 9c8eed5442a..9e1ce2a2bc9=20100644=0A---=20a/gcc/c-family/c-common.cc=0A= +++=20b/gcc/c-family/c-common.cc=0A@@=20-6330,6=20+6330,7=20@@=20= check_builtin_function_arguments=20(location_t=20loc,=20vec=20= arg_loc,=0A=20=20=20=20=20case=20BUILT_IN_ISLESSEQUAL:=0A=20=20=20=20=20= case=20BUILT_IN_ISLESSGREATER:=0A=20=20=20=20=20case=20= BUILT_IN_ISUNORDERED:=0A+=20=20=20=20case=20BUILT_IN_ISEQSIG:=0A=20=20=20= =20=20=20=20if=20(builtin_function_validate_nargs=20(loc,=20fndecl,=20= nargs,=202))=0A=20=09{=0A=20=09=20=20enum=20tree_code=20code0,=20code1;=0A= diff=20--git=20a/gcc/doc/extend.texi=20b/gcc/doc/extend.texi=0Aindex=20= cdbd4b34a35..360389df9dc=20100644=0A---=20a/gcc/doc/extend.texi=0A+++=20= b/gcc/doc/extend.texi=0A@@=20-13017,6=20+13017,7=20@@=20is=20called=20= and=20the=20@var{flag}=20argument=20passed=20to=20it.=0A=20@node=20Other=20= Builtins=0A=20@section=20Other=20Built-in=20Functions=20Provided=20by=20= GCC=0A=20@cindex=20built-in=20functions=0A+@findex=20__builtin_iseqsig=0A= =20@findex=20__builtin_isfinite=0A=20@findex=20__builtin_isnormal=0A=20= @findex=20__builtin_isgreater=0A@@=20-13568,9=20+13569,9=20@@=20the=20= same=20names=20as=20the=20standard=20macros=20(=20@code{isgreater},=0A=20= @code{islessgreater},=20and=20@code{isunordered})=20,=20with=20= @code{__builtin_}=0A=20prefixed.=20=20We=20intend=20for=20a=20library=20= implementor=20to=20be=20able=20to=20simply=0A=20@code{#define}=20each=20= standard=20macro=20to=20its=20built-in=20equivalent.=0A-In=20the=20same=20= fashion,=20GCC=20provides=20@code{fpclassify},=20@code{isfinite},=0A= -@code{isinf_sign},=20@code{isnormal}=20and=20@code{signbit}=20built-ins=20= used=20with=0A-@code{__builtin_}=20prefixed.=20=20The=20@code{isinf}=20= and=20@code{isnan}=0A+In=20the=20same=20fashion,=20GCC=20provides=20= @code{fpclassify},=20@code{iseqsig},=0A+@code{isfinite},=20= @code{isinf_sign},=20@code{isnormal}=20and=20@code{signbit}=20built-ins=0A= +used=20with=20@code{__builtin_}=20prefixed.=20=20The=20@code{isinf}=20= and=20@code{isnan}=0A=20built-in=20functions=20appear=20both=20with=20= and=20without=20the=20@code{__builtin_}=20prefix.=0A=20With=20= @code{-ffinite-math-only}=20option=20the=20@code{isinf}=20and=20= @code{isnan}=0A=20built-in=20functions=20will=20always=20return=200.=0A= diff=20--git=20a/gcc/testsuite/gcc.dg/torture/builtin-iseqsig-1.c=20= b/gcc/testsuite/gcc.dg/torture/builtin-iseqsig-1.c=0Anew=20file=20mode=20= 100644=0Aindex=2000000000000..c66431fff1c=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/torture/builtin-iseqsig-1.c=0A@@=20-0,0=20+1,113=20= @@=0A+/*=20{=20dg-do=20run=20{=20xfail=20powerpc*-*-*=20}=20}=20*/=0A+/*=20= remove=20the=20xfail=20for=20powerpc=20when=20pr58684=20is=20fixed=20*/=0A= +/*=20{=20dg-add-options=20ieee=20}=20*/=0A+/*=20{=20= dg-additional-options=20"-fsignaling-nans"=20}=20*/=0A+/*=20{=20= dg-require-effective-target=20fenv_exceptions=20}=20*/=0A+=0A+#include=20= =0A+=0A+void=0A+ftrue=20(float=20x,=20float=20y)=0A+{=0A+=20=20= if=20(!__builtin_iseqsig=20(x,=20y))=0A+=20=20=20=20__builtin_abort=20= ();=0A+}=0A+=0A+void=0A+ffalse=20(float=20x,=20float=20y)=0A+{=0A+=20=20= if=20(__builtin_iseqsig=20(x,=20y))=0A+=20=20=20=20__builtin_abort=20();=0A= +}=0A+=0A+int=0A+main=20()=0A+{=0A+=20=20volatile=20float=20f1,=20f2;=0A= +=0A+=20=20f1=20=3D=200.f;=20f2=20=3D=200.f;=0A+=20=20ftrue=20(f1,=20= f2);=0A+=20=20if=20(fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A= +=0A+=20=20f1=20=3D=200.f;=20f2=20=3D=20-0.f;=0A+=20=20ftrue=20(f1,=20= f2);=0A+=20=20if=20(fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A= +=0A+=20=20f1=20=3D=200.f;=20f2=20=3D=201.f;=0A+=20=20ffalse=20(f1,=20= f2);=0A+=20=20if=20(fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A= +=0A+=20=20f1=20=3D=20-0.f;=20f2=20=3D=201.f;=0A+=20=20ffalse=20(f1,=20= f2);=0A+=20=20if=20(fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A= +=0A+=20=20f1=20=3D=200.f;=20f2=20=3D=20__builtin_inff();=0A+=20=20= ffalse=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20(FE_INVALID))=20= __builtin_abort=20();=0A+=0A+=20=20f1=20=3D=20-0.f;=20f2=20=3D=20= __builtin_inff();=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20= (fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20= =3D=200.f;=20f2=20=3D=20__builtin_nanf("");=0A+=20=20ffalse=20(f1,=20= f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20__builtin_abort=20= ();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=20-0.f;=20= f2=20=3D=20__builtin_nanf("");=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20= (!fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=20=20= feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=201.f;=20f2=20=3D=20= 1.f;=0A+=20=20ftrue=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20= (FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20=3D=201.f;=20f2=20= =3D=200.f;=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20= (FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20=3D=201.f;=20f2=20= =3D=20-0.f;=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20= (FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20=3D=201.f;=20f2=20= =3D=20__builtin_inff();=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20= (fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20= =3D=201.f;=20f2=20=3D=20__builtin_nanf("");=0A+=20=20ffalse=20(f1,=20= f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20__builtin_abort=20= ();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=20= __builtin_inff();=20f2=20=3D=20__builtin_inff();=0A+=20=20ftrue=20(f1,=20= f2);=0A+=20=20if=20(fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A= +=0A+=20=20f1=20=3D=20__builtin_inff();=20f2=20=3D=20__builtin_nanf("");=0A= +=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20= __builtin_abort=20();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20= f1=20=3D=20__builtin_nanf("");=20f2=20=3D=20__builtin_nanf("");=0A+=20=20= ffalse=20(f1,=20f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20= __builtin_abort=20();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20= f1=20=3D=20__builtin_nansf("");=20f2=20=3D=201.f;=0A+=20=20ffalse=20(f1,=20= f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20__builtin_abort=20= ();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=201.f;=20= f2=20=3D=20__builtin_nansf("");=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20= if=20(!fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=20=20= feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=20= __builtin_nansf("");=20f2=20=3D=20__builtin_nansf("");=0A+=20=20ffalse=20= (f1,=20f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20= __builtin_abort=20();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20= return=200;=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/torture/builtin-iseqsig-2.c=20= b/gcc/testsuite/gcc.dg/torture/builtin-iseqsig-2.c=0Anew=20file=20mode=20= 100644=0Aindex=2000000000000..03625b07e6f=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/torture/builtin-iseqsig-2.c=0A@@=20-0,0=20+1,113=20= @@=0A+/*=20{=20dg-do=20run=20{=20xfail=20powerpc*-*-*=20}=20}=20*/=0A+/*=20= remove=20the=20xfail=20for=20powerpc=20when=20pr58684=20is=20fixed=20*/=0A= +/*=20{=20dg-add-options=20ieee=20}=20*/=0A+/*=20{=20= dg-additional-options=20"-fsignaling-nans"=20}=20*/=0A+/*=20{=20= dg-require-effective-target=20fenv_exceptions_double=20}=20*/=0A+=0A= +#include=20=0A+=0A+void=0A+ftrue=20(double=20x,=20double=20y)=0A= +{=0A+=20=20if=20(!__builtin_iseqsig=20(x,=20y))=0A+=20=20=20=20= __builtin_abort=20();=0A+}=0A+=0A+void=0A+ffalse=20(double=20x,=20double=20= y)=0A+{=0A+=20=20if=20(__builtin_iseqsig=20(x,=20y))=0A+=20=20=20=20= __builtin_abort=20();=0A+}=0A+=0A+int=0A+main=20()=0A+{=0A+=20=20= volatile=20double=20f1,=20f2;=0A+=0A+=20=20f1=20=3D=200.;=20f2=20=3D=20= 0.;=0A+=20=20ftrue=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20= (FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20=3D=200.;=20f2=20= =3D=20-0.;=0A+=20=20ftrue=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20= (FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20=3D=200.;=20f2=20= =3D=201.;=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20= (FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20=3D=20-0.;=20f2=20= =3D=201.;=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20= (FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20=3D=200.;=20f2=20= =3D=20__builtin_inf();=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20= (fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20= =3D=20-0.;=20f2=20=3D=20__builtin_inf();=0A+=20=20ffalse=20(f1,=20f2);=0A= +=20=20if=20(fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=0A= +=20=20f1=20=3D=200.;=20f2=20=3D=20__builtin_nan("");=0A+=20=20ffalse=20= (f1,=20f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20= __builtin_abort=20();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20= f1=20=3D=20-0.;=20f2=20=3D=20__builtin_nan("");=0A+=20=20ffalse=20(f1,=20= f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20__builtin_abort=20= ();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=201.;=20= f2=20=3D=201.;=0A+=20=20ftrue=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20= (FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20=3D=201.;=20f2=20= =3D=200.;=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20= (FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20=3D=201.;=20f2=20= =3D=20-0.;=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20= (FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20=3D=201.;=20f2=20= =3D=20__builtin_inf();=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20= (fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20= =3D=201.;=20f2=20=3D=20__builtin_nan("");=0A+=20=20ffalse=20(f1,=20f2);=0A= +=20=20if=20(!fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=20= =20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=20= __builtin_inf();=20f2=20=3D=20__builtin_inf();=0A+=20=20ftrue=20(f1,=20= f2);=0A+=20=20if=20(fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A= +=0A+=20=20f1=20=3D=20__builtin_inf();=20f2=20=3D=20__builtin_nan("");=0A= +=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20= __builtin_abort=20();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20= f1=20=3D=20__builtin_nan("");=20f2=20=3D=20__builtin_nan("");=0A+=20=20= ffalse=20(f1,=20f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20= __builtin_abort=20();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20= f1=20=3D=20__builtin_nans("");=20f2=20=3D=201.;=0A+=20=20ffalse=20(f1,=20= f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20__builtin_abort=20= ();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=201.;=20= f2=20=3D=20__builtin_nans("");=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20= (!fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=20=20= feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=20= __builtin_nans("");=20f2=20=3D=20__builtin_nans("");=0A+=20=20ffalse=20= (f1,=20f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20= __builtin_abort=20();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20= return=200;=0A+}=0Adiff=20--git=20= a/gcc/testsuite/gcc.dg/torture/builtin-iseqsig-3.c=20= b/gcc/testsuite/gcc.dg/torture/builtin-iseqsig-3.c=0Anew=20file=20mode=20= 100644=0Aindex=2000000000000..ed24035264a=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/torture/builtin-iseqsig-3.c=0A@@=20-0,0=20+1,113=20= @@=0A+/*=20{=20dg-do=20run=20{=20xfail=20powerpc*-*-*=20}=20}=20*/=0A+/*=20= remove=20the=20xfail=20for=20powerpc=20when=20pr58684=20is=20fixed=20*/=0A= +/*=20{=20dg-add-options=20ieee=20}=20*/=0A+/*=20{=20= dg-additional-options=20"-fsignaling-nans"=20}=20*/=0A+/*=20{=20= dg-require-effective-target=20fenv_exceptions_long_double=20}=20*/=0A+=0A= +#include=20=0A+=0A+void=0A+ftrue=20(long=20double=20x,=20long=20= double=20y)=0A+{=0A+=20=20if=20(!__builtin_iseqsig=20(x,=20y))=0A+=20=20=20= =20__builtin_abort=20();=0A+}=0A+=0A+void=0A+ffalse=20(long=20double=20= x,=20long=20double=20y)=0A+{=0A+=20=20if=20(__builtin_iseqsig=20(x,=20= y))=0A+=20=20=20=20__builtin_abort=20();=0A+}=0A+=0A+int=0A+main=20()=0A= +{=0A+=20=20volatile=20long=20double=20f1,=20f2;=0A+=0A+=20=20f1=20=3D=20= 0.L;=20f2=20=3D=200.f;=0A+=20=20ftrue=20(f1,=20f2);=0A+=20=20if=20= (fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20= =3D=200.L;=20f2=20=3D=20-0.f;=0A+=20=20ftrue=20(f1,=20f2);=0A+=20=20if=20= (fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20= =3D=200.L;=20f2=20=3D=201.f;=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20= (fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20= =3D=20-0.L;=20f2=20=3D=201.f;=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20= (fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20= =3D=200.L;=20f2=20=3D=20__builtin_infl();=0A+=20=20ffalse=20(f1,=20f2);=0A= +=20=20if=20(fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=0A= +=20=20f1=20=3D=20-0.L;=20f2=20=3D=20__builtin_infl();=0A+=20=20ffalse=20= (f1,=20f2);=0A+=20=20if=20(fetestexcept=20(FE_INVALID))=20= __builtin_abort=20();=0A+=0A+=20=20f1=20=3D=200.L;=20f2=20=3D=20= __builtin_nanl("");=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20= (!fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=20=20= feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=20-0.L;=20f2=20=3D=20= __builtin_nanl("");=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20= (!fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=20=20= feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=201.L;=20f2=20=3D=20= 1.f;=0A+=20=20ftrue=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20= (FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20=3D=201.L;=20f2=20= =3D=200.f;=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20= (FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20=3D=201.L;=20f2=20= =3D=20-0.f;=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20(fetestexcept=20= (FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20=3D=201.L;=20f2=20= =3D=20__builtin_infl();=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20= (fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=0A+=20=20f1=20= =3D=201.L;=20f2=20=3D=20__builtin_nanl("");=0A+=20=20ffalse=20(f1,=20= f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20__builtin_abort=20= ();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=20= __builtin_infl();=20f2=20=3D=20__builtin_infl();=0A+=20=20ftrue=20(f1,=20= f2);=0A+=20=20if=20(fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A= +=0A+=20=20f1=20=3D=20__builtin_infl();=20f2=20=3D=20__builtin_nanl("");=0A= +=20=20ffalse=20(f1,=20f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20= __builtin_abort=20();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20= f1=20=3D=20__builtin_nanl("");=20f2=20=3D=20__builtin_nanl("");=0A+=20=20= ffalse=20(f1,=20f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20= __builtin_abort=20();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20= f1=20=3D=20__builtin_nansl("");=20f2=20=3D=201.L;=0A+=20=20ffalse=20(f1,=20= f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20__builtin_abort=20= ();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=201.L;=20= f2=20=3D=20__builtin_nansl("");=0A+=20=20ffalse=20(f1,=20f2);=0A+=20=20= if=20(!fetestexcept=20(FE_INVALID))=20__builtin_abort=20();=0A+=20=20= feclearexcept=20(FE_INVALID);=0A+=0A+=20=20f1=20=3D=20= __builtin_nansl("");=20f2=20=3D=20__builtin_nansl("");=0A+=20=20ffalse=20= (f1,=20f2);=0A+=20=20if=20(!fetestexcept=20(FE_INVALID))=20= __builtin_abort=20();=0A+=20=20feclearexcept=20(FE_INVALID);=0A+=0A+=20=20= return=200;=0A+}=0A--=20=0A2.34.1=0A=0A= --Apple-Mail=_A5B1F96C-6A5A-4DA2-914C-E3E6D9A8F2D8 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii --Apple-Mail=_A5B1F96C-6A5A-4DA2-914C-E3E6D9A8F2D8--