From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by sourceware.org (Postfix) with ESMTPS id A70D23858D37 for ; Wed, 21 Sep 2022 09:40:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A70D23858D37 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-x329.google.com with SMTP id t4so87665wmj.5 for ; Wed, 21 Sep 2022 02:40:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:from:to:cc:subject:date; bh=ZYRa32mUaHrIOBab8iQVFILt7zEIrHbruWZRU8qQ46g=; b=DRhPMU80QI+jE09sEjJODLejv4y24OK7mCmu+IV3o0Bfsan6pZX26JYegICrcWW311 NkFNpwf030d82FvVRCKh9kQSZHcu3V084Z8Par27Dl3fRjJFQY60dCwsTuKXsiv9+frO 2zv6+9mfRYlLJO46jIZQn8mQtQg62wm8+OwN8q3MW2vogrmoqySk1DZLnWaLj2O22Dqe x8iYP0HIMeyMJC1Y7BVt0cWXksxtYgNeemKMU3JOxN6YjcMhwtRfiim8S8KSh1aLGAt1 +LgcNoQl0E+w84y2GhJn/tCueu8Ua/U/6eaMYZu6WlT8tlZ+H+l5XrzC+JfvzHg8CjJX KTrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:x-gm-message-state:from:to:cc:subject:date; bh=ZYRa32mUaHrIOBab8iQVFILt7zEIrHbruWZRU8qQ46g=; b=4/6dGw1xoynEaWLIqCOOxYcsS333AtMdKmfIANQvYGNR6Hhi8MliGfhj0YRBI1+bj/ 37HF+pjd4d1sKT9zcfTMadP03htaXDp5l/18Mt9yQU6wa8c5Kyy0jIJgLJ1iljNwfyZd eBKkvLdVzMKuVzugTwscfoqF/ZUpPfXygQuGchNvDnVYgoE27C/MsVfKvhH0r25VWq3/ 8hP7Vo1WqN5EG4vCAa6B9ePv4rYbeABFxKwYfpw4aUr6C45hCDomcmadWsqxa9zsmffj AQiOX6uWG6H+7vLy39SdvaqE0s+nxZdPUFOLmG88G+AzorolgBqgz448KusD1G43Kucr yxvg== X-Gm-Message-State: ACrzQf1IYZgVU2kbZqFJ1qhx9b5+v9vBR0boHOVWXVa1GOEktnVSHtzQ Ec3BU3xdm8WgShPpypE+xAN5a1a8zlU= X-Google-Smtp-Source: AMsMyM5kor2jPO2kKB5aKa4LuhzYK0vqTLiWk9VGuDHdSazVcbXPN69gpllYs+05zWpbuRmkm85t4Q== X-Received: by 2002:a05:600c:348e:b0:3b4:a9f1:c240 with SMTP id a14-20020a05600c348e00b003b4a9f1c240mr5216032wmq.192.1663753258335; Wed, 21 Sep 2022 02:40:58 -0700 (PDT) Received: from smtpclient.apple ([2a01:e34:ec28:8cb0:bcdc:a622:ebbf:eb4f]) by smtp.gmail.com with ESMTPSA id o13-20020a05600c4fcd00b003b497138093sm2369905wmq.47.2022.09.21.02.40.56 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Sep 2022 02:40:57 -0700 (PDT) From: FX Message-Id: Content-Type: multipart/mixed; boundary="Apple-Mail=_1BAE105F-983C-41B6-9C63-70DAE50C9FC8" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Subject: Re: [PATCH] Add __builtin_iseqsig() Date: Wed, 21 Sep 2022 11:40:56 +0200 In-Reply-To: <3FD18835-D09C-4073-B23F-DD1038D4D0AC@gmail.com> Cc: "Joseph S. Myers" , Jakub Jelinek To: gcc-patches@gcc.gnu.org References: <127A04DF-0BC1-40B4-956A-B22C39F97BF9@gmail.com> <3FD18835-D09C-4073-B23F-DD1038D4D0AC@gmail.com> X-Mailer: Apple Mail (2.3696.120.41.1.1) X-Spam-Status: No, score=-2.2 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 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=_1BAE105F-983C-41B6-9C63-70DAE50C9FC8 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii ping*2 --Apple-Mail=_1BAE105F-983C-41B6-9C63-70DAE50C9FC8 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=203c66839a95f69dfe12db651033e9df9dfbe3c719=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]=20Add=20__builtin_iseqsig()=0A=0Aiseqsig()=20= is=20a=20C2x=20library=20function,=20for=20signaling=20floating-point=0A= equality=20checks.=20=20Provide=20a=20GCC-builtin=20for=20it,=20which=20= is=20folded=20to=0Aa=20series=20of=20comparisons.=0A=0A2022-09-01=20=20= Francois-Xavier=20Coudert=20=20=0A=0A=09PR=20= middle-end/77928=0A=0Agcc/=0A=09*=20doc/extend.texi:=20Document=20= iseqsig=20builtin.=0A=09*=20builtins.cc=20(fold_builtin_iseqsig):=20New=20= function.=0A=09(fold_builtin_2):=20Handle=20BUILT_IN_ISEQSIG.=0A=09= (is_inexpensive_builtin):=20Handle=20BUILT_IN_ISEQSIG.=0A=09*=20= builtins.def=20(BUILT_IN_ISEQSIG):=20New=20built-in.=0A=0Agcc/c-family/=0A= =09*=20c-common.cc=20(check_builtin_function_arguments):=0A=09Handle=20= BUILT_IN_ISEQSIG.=0A=0Agcc/testsuite/=0A=09*=20= gcc.dg/torture/builtin-iseqsig-1.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= |=20117=20++++++++++++++++++=0A=205=20files=20changed,=20164=20= insertions(+),=203=20deletions(-)=0A=20create=20mode=20100644=20= gcc/testsuite/gcc.dg/torture/builtin-iseqsig-1.c=0A=0Adiff=20--git=20= a/gcc/builtins.cc=20b/gcc/builtins.cc=0Aindex=205f319b28030..b15af6f1a45=20= 100644=0A---=20a/gcc/builtins.cc=0A+++=20b/gcc/builtins.cc=0A@@=20-171,6=20= +171,7=20@@=20static=20tree=20fold_builtin_fabs=20(location_t,=20tree,=20= tree);=0A=20static=20tree=20fold_builtin_abs=20(location_t,=20tree,=20= tree);=0A=20static=20tree=20fold_builtin_unordered_cmp=20(location_t,=20= tree,=20tree,=20tree,=20enum=20tree_code,=0A=20=09=09=09=09=09enum=20= tree_code);=0A+static=20tree=20fold_builtin_iseqsig=20(location_t,=20= tree,=20tree);=0A=20static=20tree=20fold_builtin_varargs=20(location_t,=20= tree,=20tree*,=20int);=0A=20=0A=20static=20tree=20fold_builtin_strpbrk=20= (location_t,=20tree,=20tree,=20tree,=20tree);=0A@@=20-9400,6=20+9401,42=20= @@=20fold_builtin_unordered_cmp=20(location_t=20loc,=20tree=20fndecl,=20= tree=20arg0,=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-9787,6=20= +9824,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-11299,6=20+11339,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=20f0236316850..8fab9dc3f1b=20100644=0A---=20= a/gcc/builtins.def=0A+++=20b/gcc/builtins.def=0A@@=20-908,6=20+908,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= c0f15f4cab1..62d8e54c96d=20100644=0A---=20a/gcc/c-family/c-common.cc=0A= +++=20b/gcc/c-family/c-common.cc=0A@@=20-6329,6=20+6329,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= a5afb467d23..7a02b8c47e8=20100644=0A---=20a/gcc/doc/extend.texi=0A+++=20= b/gcc/doc/extend.texi=0A@@=20-12995,6=20+12995,7=20@@=20is=20called=20= and=20the=20@var{flag}=20argument=20passed=20to=20it.=0A=20@findex=20= __builtin_extend_pointer=0A=20@findex=20__builtin_fpclassify=0A=20= @findex=20__builtin_has_attribute=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-13555,9=20+13556,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..3ffaaf7e15d=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gcc.dg/torture/builtin-iseqsig-1.c=0A@@=20-0,0=20+1,117=20= @@=0A+/*=20{=20dg-do=20run=20}=20*/=0A+/*=20{=20dg-add-options=20ieee=20= }=20*/=0A+/*=20{=20dg-additional-options=20"-fsignaling-nans"=20}=20*/=0A= +=0A+void=0A+ftrue=20(float=20x,=20float=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(float=20x,=20float=20y)=0A+{=0A+=20=20if=20= (__builtin_iseqsig=20(x,=20y))=0A+=20=20=20=20__builtin_abort=20();=0A+}=0A= +=0A+void=0A+dtrue=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+dfalse=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+ltrue=20(long=20double=20x,=20long=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+lfalse=20(long=20double=20x,=20long=20double=20= y)=0A+{=0A+=20=20if=20(__builtin_iseqsig=20(x,=20y))=0A+=20=20=20=20= __builtin_abort=20();=0A+}=0A+=0A+=0A+int=0A+main=20()=0A+{=0A+=20=20= ftrue=20(0.f,=200.f);=0A+=20=20ftrue=20(0.f,=20-0.f);=0A+=20=20ffalse=20= (0.f,=201.f);=0A+=20=20ffalse=20(-0.f,=201.f);=0A+=20=20ffalse=20(0.f,=20= __builtin_inff());=0A+=20=20ffalse=20(-0.f,=20__builtin_inff());=0A+=20=20= ffalse=20(0.f,=20__builtin_nanf(""));=0A+=20=20ffalse=20(-0.f,=20= __builtin_nanf(""));=0A+=20=20ftrue=20(1.f,=201.f);=0A+=20=20ffalse=20= (1.f,=200.f);=0A+=20=20ffalse=20(1.f,=20-0.f);=0A+=20=20ffalse=20(1.f,=20= __builtin_inff());=0A+=20=20ffalse=20(1.f,=20__builtin_nanf(""));=0A+=20=20= ftrue=20(__builtin_inff(),=20__builtin_inff());=0A+=20=20ffalse=20= (__builtin_inff(),=20__builtin_nanf(""));=0A+=20=20ffalse=20= (__builtin_nanf(""),=20__builtin_nanf(""));=0A+=0A+=20=20dtrue=20(0.,=20= 0.);=0A+=20=20dtrue=20(0.,=20-0.);=0A+=20=20dfalse=20(0.,=201.);=0A+=20=20= dfalse=20(-0.,=201.);=0A+=20=20dfalse=20(0.,=20__builtin_inf());=0A+=20=20= dfalse=20(-0.,=20__builtin_inf());=0A+=20=20dfalse=20(0.,=20= __builtin_nan(""));=0A+=20=20dfalse=20(-0.,=20__builtin_nan(""));=0A+=20=20= dtrue=20(1.,=201.);=0A+=20=20dfalse=20(1.,=200.);=0A+=20=20dfalse=20(1.,=20= -0.);=0A+=20=20dfalse=20(1.,=20__builtin_inf());=0A+=20=20dfalse=20(1.,=20= __builtin_nan(""));=0A+=20=20dtrue=20(__builtin_inf(),=20= __builtin_inf());=0A+=20=20dfalse=20(__builtin_inf(),=20= __builtin_nan(""));=0A+=20=20dfalse=20(__builtin_nan(""),=20= __builtin_nan(""));=0A+=0A+=20=20ltrue=20(0.L,=200.L);=0A+=20=20ltrue=20= (0.L,=20-0.L);=0A+=20=20lfalse=20(0.L,=201.L);=0A+=20=20lfalse=20(-0.L,=20= 1.L);=0A+=20=20lfalse=20(0.L,=20__builtin_infl());=0A+=20=20lfalse=20= (-0.L,=20__builtin_infl());=0A+=20=20lfalse=20(0.L,=20= __builtin_nanl(""));=0A+=20=20lfalse=20(-0.L,=20__builtin_nanl(""));=0A+=20= =20ltrue=20(1.L,=201.L);=0A+=20=20lfalse=20(1.L,=200.L);=0A+=20=20lfalse=20= (1.L,=20-0.L);=0A+=20=20lfalse=20(1.L,=20__builtin_infl());=0A+=20=20= lfalse=20(1.L,=20__builtin_nanl(""));=0A+=20=20ltrue=20= (__builtin_infl(),=20__builtin_infl());=0A+=20=20lfalse=20= (__builtin_infl(),=20__builtin_nanl(""));=0A+=20=20lfalse=20= (__builtin_nanl(""),=20__builtin_nanl(""));=0A+=0A+=20=20if=20= (!__builtin_iseqsig=20(0.f,=20-0.))=0A+=20=20=20=20__builtin_abort=20();=0A= +=20=20if=20(!__builtin_iseqsig=20(0.f,=20-0.L))=0A+=20=20=20=20= __builtin_abort=20();=0A+=20=20if=20(!__builtin_iseqsig=20(0.,=20-0.L))=0A= +=20=20=20=20__builtin_abort=20();=0A+=0A+=20=20if=20(__builtin_iseqsig=20= (0.f,=201.))=0A+=20=20=20=20__builtin_abort=20();=0A+=20=20if=20= (__builtin_iseqsig=20(0.f,=201.L))=0A+=20=20=20=20__builtin_abort=20();=0A= +=20=20if=20(__builtin_iseqsig=20(0.,=201.L))=0A+=20=20=20=20= __builtin_abort=20();=0A+=0A+=20=20return=200;=0A+}=0A--=20=0A2.37.0=20= (Apple=20Git-136)=0A=0A= --Apple-Mail=_1BAE105F-983C-41B6-9C63-70DAE50C9FC8 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > Le 9 sept. 2022 =C3=A0 19:55, FX a =C3=A9crit : >=20 > ping >=20 >=20 >> Le 1 sept. 2022 =C3=A0 23:02, FX a =C3=A9crit : >>=20 >> Attached patch adds __builtin_iseqsig() to the middle-end and C = family front-ends. >> Testing does not currently check whether the signaling part works, = because with optimisation is actually does not (preexisting compiler = bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D106805) >>=20 >> Bootstrapped and regtested on x86_64-linux. >> OK to commit? >>=20 >> (I=E2=80=99m not very skilled for middle-end hacking, so I=E2=80=99m = sure there will be modifications to make.) >>=20 >> FX >> <0001-Add-__builtin_iseqsig.patch> >=20 --Apple-Mail=_1BAE105F-983C-41B6-9C63-70DAE50C9FC8--