From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd34.google.com (mail-io1-xd34.google.com [IPv6:2607:f8b0:4864:20::d34]) by sourceware.org (Postfix) with ESMTPS id BD17B3858D38 for ; Tue, 6 Jun 2023 18:15:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BD17B3858D38 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-io1-xd34.google.com with SMTP id ca18e2360f4ac-777abee746cso15733439f.0 for ; Tue, 06 Jun 2023 11:15:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686075329; x=1688667329; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:from:to:cc:subject:date:message-id:reply-to; bh=KUVgygyMlyUnXClOtDgQcWSLrarkU941ckSj8tX/Wtg=; b=Gi5HVNEMAZuRWEyFXJwSjUHKTnFBnn+k4R6Tl+Lavj2d7QM15spR2nvWhj8cT8corb KlP4Dhl+AcimzYu6+AGLYiebai53IUlEH6R8RBH/xWKtntlVJwGpmOszJH3zurmUoq4r fMgQ0a2ZomXjyKS2n3x18jEWTIPeXqBLwFN/pHgdg/ui8YBPbicczVK//4HIXgnHTsv+ +jaKTjmC1jzxSmgA9RkAV8qRUt/X3C5tqwgeToOH25Bl3gTEesLBHYuEHBSpE9yo9v5S XCEhE1Ms+wcmoq/wFUg3QWx5vV/Y3JILiYIvBgWfEmcdxE8jzthskGWjbVbLRSfUb5sx +kbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686075329; x=1688667329; 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=KUVgygyMlyUnXClOtDgQcWSLrarkU941ckSj8tX/Wtg=; b=HsqiCE6hPmGL/J5VsRmcARxakRcKIldO02baseKo5FN9JatconEmexZN+JdFiO8JkE i6/BsZ1Vw2iXoA4jof/dc81UqGkQJH6SOrz3pywxOsLZxO/bBwOno4l8tW1uNr5lhMuo 5y1N290L1CiCxwhUWnrnZM/WS4rlEZDYv2rFfnVsBJ2MkqrIWtbz9i5yKEexxgDUJcQD 4NhenbY+hHVP8JJp81bvW2kFpbXQDu0rxibbMWCmasc56UJVllnFTt3G4THQcRpKO4hQ WeNQUT/NkjStntjVQrLLQOVaHrWEsBsuZnsD9Xe5p5FjCUQdWNS6UHPbyq+plmJNNWms JQPw== X-Gm-Message-State: AC+VfDxVWgh7lB3buQGyzbSrXFK1UN1+I6iB4mMV20fnLkH2gRaHDAeQ 88y5XWZmfLcjNmOZ9U+xHBpbXxGTWek= X-Google-Smtp-Source: ACHHUZ4ZEeH9qYHSh7cvC7NntwG+s6aVOyLykwtpb8pzsXS7r0gvCURET0SA/LY+VYmTaO7BLcLD/Q== X-Received: by 2002:a05:6e02:1b8c:b0:33b:d741:5888 with SMTP id h12-20020a056e021b8c00b0033bd7415888mr2357868ili.0.1686075328770; Tue, 06 Jun 2023 11:15:28 -0700 (PDT) Received: from smtpclient.apple ([78.197.98.168]) by smtp.gmail.com with ESMTPSA id x18-20020a92de12000000b003317ebbc426sm3229064ilm.47.2023.06.06.11.15.27 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2023 11:15:28 -0700 (PDT) From: FX Coudert Message-Id: <5D59385E-B643-42CE-809E-D52A1F4FE1D3@gmail.com> Content-Type: multipart/mixed; boundary="Apple-Mail=_14B7B631-2ECB-4C4B-93B3-D8C43D2BD9C9" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.600.7\)) Subject: [PATCH] Add __builtin_iseqsig() Date: Tue, 6 Jun 2023 20:15:16 +0200 In-Reply-To: Cc: Jakub Jelinek , Joseph Myers 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> 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=_14B7B631-2ECB-4C4B-93B3-D8C43D2BD9C9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Hi, (It took me a while to get back to this.) 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. Bootstrapped and regtested on x86_64-pc-linux-gnu OK to commit? FX --Apple-Mail=_14B7B631-2ECB-4C4B-93B3-D8C43D2BD9C9 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=_14B7B631-2ECB-4C4B-93B3-D8C43D2BD9C9--