From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by sourceware.org (Postfix) with ESMTPS id EB5113858C52 for ; Thu, 1 Sep 2022 21:02:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EB5113858C52 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-wr1-x42d.google.com with SMTP id c7so17251427wrp.11 for ; Thu, 01 Sep 2022 14:02:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:cc:date:message-id:subject:mime-version:from:from:to:cc:subject :date; bh=hckq2DzmC42ARryrAchChQeP6kABXLIOUqEP/34BylI=; b=aDqjETAO+2vjrhoBxLv0Kt5IdkE9b7LNIu+SLBNB9xAYcm9gdtPKKnb+cCzLRJVsXj +aRl0n5Lb/lFIRfpNa8pL5GQaYFz+XL9BFY2aR1BuJUx7M+aLmspXvUqAuWX/YbF7Kj5 eNRBev5FXJzrt78Ip5f6egQB2NELUC0/cgQS4toE0As7uK2KSrcVh1jRV49UhumGVknr EOu9HsfiQs+uiL6u8hfZiGu9aJb3gk6Sz6KOpkAYymDwXul6yw87FFSWo1RhfBU7JZtI emOgMgYzFBP48fGPZM8jY3Mb6tyM+PNWnvABYG8rnS/pyMY1R5tUYhNIVthzhmADhaLl lEcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:cc:date:message-id:subject:mime-version:from:x-gm-message-state :from:to:cc:subject:date; bh=hckq2DzmC42ARryrAchChQeP6kABXLIOUqEP/34BylI=; b=hoCMjtrVA6z0+FTQZQJC9P2rkn5yQjl9GGiJoiDBFqAT1FhTj+KS+FpgSXc1Hl+vHx R0s2plk2+SfkXs72mE+hRO6yJv4rJUIqt/o9mx3I6ypBaQiJ+0Dl+fmlVIfwq7U93YLj sg3WywTJLKGzXT84yoaGy1yXUFUA/wtSrzszZ7d7GFqlrogtsBzCMqEIHUDkhPw7q+/S CsJJQq/OBByVm8PDdT304w03Z4KdbS0FQ+DSqnlE7m4uR18U3C3J50x4Oc7P7DpfDMZ5 wBHIG0ZYvxUMjq5n+QO1y1W1aMf7xm+3x4XVa0HEVZHlKw6etjJslJ0uIxU+KLS1+ps+ SKFA== X-Gm-Message-State: ACgBeo2WCubcEzvRSfM7+Ofy658VkRvR1IGkvZOQJpmOK2WZ7hcWRYX2 V5FFOSK8WgmlBEZDtBBTjNmOx8ECwpUorA== X-Google-Smtp-Source: AA6agR4jo3QShq4PDKkIV/A+oLJWCnWCphjdnbUjt6cvHwSL5ReirMVDzuO7N3IQXSMQJt7YOlwouA== X-Received: by 2002:a5d:6e8e:0:b0:220:5fa1:d508 with SMTP id k14-20020a5d6e8e000000b002205fa1d508mr16626543wrz.337.1662066131654; Thu, 01 Sep 2022 14:02:11 -0700 (PDT) Received: from smtpclient.apple ([2a01:e34:ec28:8cb0:4043:c6cc:4e14:1048]) by smtp.gmail.com with ESMTPSA id x14-20020adfffce000000b00224f7c1328dsm15100977wrs.67.2022.09.01.14.02.09 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 01 Sep 2022 14:02:10 -0700 (PDT) From: FX Content-Type: multipart/mixed; boundary="Apple-Mail=_46B0E44C-527D-4F03-B7F4-9CC224F1B63A" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Subject: [PATCH] Add __builtin_iseqsig() Message-Id: <127A04DF-0BC1-40B4-956A-B22C39F97BF9@gmail.com> Date: Thu, 1 Sep 2022 23:02:09 +0200 Cc: "Joseph S. Myers" , Jakub Jelinek To: gcc-patches@gcc.gnu.org X-Mailer: Apple Mail (2.3696.120.41.1.1) 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=_46B0E44C-527D-4F03-B7F4-9CC224F1B63A Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 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) Bootstrapped and regtested on x86_64-linux. OK to commit? (I=E2=80=99m not very skilled for middle-end hacking, so I=E2=80=99m = sure there will be modifications to make.) FX --Apple-Mail=_46B0E44C-527D-4F03-B7F4-9CC224F1B63A 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=207d6b76de39ecad59fe69a6f5dd479e481f4c5835=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=0Agcc/=0A=09*=20= doc/extend.texi:=20Document=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---=0A=20gcc/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=20f1f7c0ce337..bf6bf2809d8=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-9404,6=20+9405,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-9791,6=20= +9828,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-11303,6=20+11343,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= 1eb842e1c7b..44d30436e47=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= 0fedab96610..5efaf19a57f=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.25.1=0A=0A= --Apple-Mail=_46B0E44C-527D-4F03-B7F4-9CC224F1B63A--