From patchwork Tue Oct 3 17:43:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Szabolcs Nagy X-Patchwork-Id: 23304 Received: (qmail 92649 invoked by alias); 3 Oct 2017 17:43:17 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 92637 invoked by uid 89); 3 Oct 2017 17:43:17 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: EUR02-HE1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; Message-ID: <59D3CC2B.1060602@arm.com> Date: Tue, 03 Oct 2017 18:43:07 +0100 From: Szabolcs Nagy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: GNU C Library CC: nd@arm.com Subject: Re: [PATCH][BZ #22244] Fix yn(n,0) without SVID wrapper References: <59D3C8B2.9020204@arm.com> <59D3CA42.1060402@arm.com> In-Reply-To: <59D3CA42.1060402@arm.com> X-ClientProxiedBy: HE1PR0402CA0014.eurprd04.prod.outlook.com (2603:10a6:3:d0::24) To HE1PR0802MB2492.eurprd08.prod.outlook.com (2603:10a6:3:df::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 982cb9cb-a315-4c4c-1ce1-08d50a8637dc X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(49563074)(201703131423075)(201703031133081)(201702281549075); SRVR:HE1PR0802MB2492; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2492; 3:WRWVroXGQUFGbCRbMbvYIs2vvs1mSIlvipD0fT9CDWg1X2NPjeeHCkd79mGppBj1sb44VSHyLakEqP/rhZ54wr3VxwbdeZRsX4XfAJrJT9c7Gv2fUqGgCj4BavDhipcsrxiikvPsxTLK1JbbU/Mo6kiBoz5buhbfaBjsp8Y6/vx54ylk0nPHizv2fUXpJ0shJuQse2yVSNC1SA/8ZszIsJR/cMOpXlxgtfFldJOjPLfewYaYu2VmlZjTOa6gZEQ8; 25:2lx2mmCca1hmPuMhs5Jo7O6cDKXRWGcVVvz5xalRIwG/hxkfvolDwSIoWzMemwzA4iuHmBTcXk7Uk34C1YPvNzUM81Di9kt5P0GHPJGYDeTx1/zLNbyKWts0+jrgtOPKiIdUTYe3F94JWGFvgiZkMoBppumsdQAJlSq0DNVy+JNTb3Gu4PraWbqy/IH3H7kFyx+u4grNHaXphU2rvag8NU76Ob0O0vwpKW1TQNQTU9MPMZcGGYCgB2E+8lD7bj1Wzh4EDnsxjYBxHLNOEkWHYaI0ztsI/zIciE1O6/nKQXrROTq+gSufJwzSViUEonnIKndq5/IdgDgsfJWvpv6EkQ==; 31:8uMAA8AUHzNB5oRkJUFQu26Mnu7OjX0FLnRWmoND/Z8yHuZ940UStK+LaOfE7+IGjXMHPPOJSVkTBWktd1L5TbpFkKyJh4x9fL5P6q9vR34rTJwuVmOdLyAN4NMwUgrD48mf7H53r80CYjgv9Gli18LRQni/DgkLC5fTUnmXT0zCwFT8IoY7TamA5bS0DusLBDm/otB2oyBqOZYrFBPsBCF7BvaZd+za4j9LfoySBFI= X-MS-TrafficTypeDiagnostic: HE1PR0802MB2492: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2492; 20:xpqa/6wLLq10SJWneClo2MPTRshumXG33i3cIPcq2KxeRYH9jfiwsUFHZwnLPq9TQ15VbQ2NELPWRyFhJYQMQZF621cdVksKu4mCOZd7seNWAun/0BK7fAihVOMU3gn91+l5027ELrOoLkcJEkESAbgnvSvfn+1UkYhGxQhXd9E=; 4:OGIUWJDhqQ0dQn2SCYf+jdwYdxwSPAt/CHc5TvFk35N2PLZd+LiI0SkunbE6rmun9Hfr5Ag0GONnDaUrC8Nl2ObFt4ArALcpj0VpoYloQpTiMn/HOskh2+LZj9ap9qI8mJsCZUg4pFCPR0sEDSPr+/F1yznVVS10tytNVWvTaGRP0Tb3zoF2Zik70khV7IoZfGbCLvbki488A1aR569hIVJkNgL0yCbzvVM5cIseJ3RSUayOewmx29OVE3lxCSvM7JwYGjxGX3fgTMPfUncD2ONMrV92TTEGfvJXut5ksQ4= X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6041248)(20161123564025)(20161123558100)(20161123562025)(20161123560025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0802MB2492; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0802MB2492; X-Forefront-PRVS: 044968D9E1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(6009001)(376002)(39860400002)(346002)(199003)(189002)(24454002)(377424004)(16576012)(478600001)(72206003)(65806001)(53546010)(65956001)(6116002)(97736004)(65816999)(80316001)(189998001)(305945005)(64126003)(568964002)(5660300001)(2476003)(50986999)(86362001)(101416001)(5890100001)(7736002)(33656002)(59896002)(5000100001)(2906002)(76176999)(54356999)(87266999)(8676002)(16526017)(270700001)(316002)(21490400003)(3846002)(16586007)(4610100001)(81156014)(6246003)(8936002)(66066001)(84326002)(77096006)(106356001)(83506001)(81166006)(105586002)(36756003)(2950100002)(58126008)(4326008)(6916009)(68736007)(229853002)(53936002)(6486002)(6666003)(25786009); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0802MB2492; H:[10.2.206.69]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0802MB2492; 23:Dj+bHTZPBa1t2YRKOGYZBQ2ni87V2Ejzyfa7SXZ?= =?us-ascii?Q?6VJ7/4tP9WiLf86kUb0G38X0rwYxZqWV1l3CrXHYPDmx4CtkoIkeTorEL4Ur?= =?us-ascii?Q?5mnM+fKaC/xrV2YggLRv8qdyVTF/MwhbLuEHLKtLe7dVBVC732uYo1t+tu1B?= =?us-ascii?Q?xRXUJwZ6h0o4IlefkG/V6yaSrwfDsj9bSKQcqmVPg1+m/J+kHXobogtRkbMJ?= =?us-ascii?Q?A/Wwnj0MEE5JLjLVEIRWIGHoCNeq4pWDaUexikeiHphg04myapvYrrm/7DJN?= =?us-ascii?Q?Df8VF1bZVYfNtq6bAGLrMaSjwHcORYRvkblxp2gbGO3dMJJrbWQ8dtsgH4uz?= =?us-ascii?Q?ui2zHGfTrjX9muD6j45Akh2CuDZXOtNN8kKhoSDTN7wbtpMXbnf/6pemRm3V?= =?us-ascii?Q?nEpuxRkshP/7FvOPUlhICueR2nhjVa95mIzdpYsG/XpsTZFhcFZe9oooqCyE?= =?us-ascii?Q?iy9sRQKpSnnV4fhisvwN6qpV5ZaRF3RGTwOj18fuqOIJ2oo1A3fX4JGAXz2G?= =?us-ascii?Q?bOd2axNH7uhxzH0mrSWWaRmOU65cMFWO4sbjNpsc26MhkkdMiC6ddhhdfqAS?= =?us-ascii?Q?6rx/SdLQaOoSDEd9pGdi9/E5LoHKYleeIDD2AHnyUB2MsSJO6lReyxhJv5x/?= =?us-ascii?Q?hxcrECpjbjALo/LVwJTCiOMjdPF6HSQP/41qWenln9zCQwGhdLeZrp6AANXq?= =?us-ascii?Q?SYLnWHmie2tDbgAomx1Rq9I6dOKPZT4Xdskm/yU0hZk0P29ysC/6Ua85JFBB?= =?us-ascii?Q?3QX9x23kd/VdiVSeaatQBljGcUJ2WLpEQUG3Ml6LaUIsMpZyi/IR87C/wOSi?= =?us-ascii?Q?Hzaa8pkbFbULrxLJepd8ACBKwA18K8qTzG0NBwR+0VBYYM6Bup26u1XbJ2Jl?= =?us-ascii?Q?EoZlXL10q1NghWBf4/eCICAQ0tE+SSzRpMLply1hwK1MUFuD/zfwvr3qf4vu?= =?us-ascii?Q?2RPHGkMlUnYFWOkhwbwS8cocYq27L57/lWu2WFCVOwy2JexLyOPOZhdwxe0m?= =?us-ascii?Q?bLs1OdYZtNJpbQCs0p+XiztJl36J6xiC8Ry/Er+CzvwzI3bgceorO7qL52hT?= =?us-ascii?Q?wo3I5FtY0/i1PyuhnOTAVX8ZtNNi5R7rgEuGJtUZ+ceKDOwDiieQLBfsN2hA?= =?us-ascii?Q?DaTqglA5SxMGej225t0plcMkpol+XxvxSClUFVFX7qd2dh/VKtVpQEYqOUP5?= =?us-ascii?Q?G6WjkzsxrcE5H4wc+eq7PRhVm5Sq3KCeibAOpzCHAus3tQxgWGT9cJDRhk/t?= =?us-ascii?Q?Ipvn+cfLMlBQMZpfjW+SS1cVZabmQEfLMc2EtNCANwKF0rQaTVZuksbc9r5m?= =?us-ascii?Q?3yAHl6ZpdQL8tLwHmpJ495goOEmFVXMxjLrz716gUqS75vZJRjgjOkZoq+L9?= =?us-ascii?Q?Kg0esAAonoZ951p8H0Eg44R1dBxj9u4Qw9Ssek3ULiVtUDzAJ6q/801AD747?= =?us-ascii?Q?jGOw7Ms9hZLpEImzH4paeO7K2yAYecDoD/fEH9lxK1UC2ZsB4r4OMh5vmspP?= =?us-ascii?Q?XtlBHomcuDqvNxxm5Wqff0Iy5vyDzp/3orVBtBFYYL2xXAxK/MJlq6vvm?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2492; 6:BFGX90LrGmLZRgXZF8qoglq/GxhEuot+qflmJN/nr6XKGurpMzvUyOhLj27sq//sm/bNe5iMzU6dtouN1gPwgFTfTEDaGelP8TwtKf2wYMpub5OrNtH7J6S7oeXzY0uU+y3HlCt4CCRv0WzQMWbZdXC79WOerD8g6ERx8JV7Lkcx/qrG2QiSBioZlZaEr8xri0GizTnmrHP2VfAcEKC86mu6NCsf7c+5LX5NmqXegZn2PXTBEW+6wo/PpwKffaWqt/pVaIJbd79PQT7ZntJDDPgR6vb2y8eyeM/mmWGyFHdRV07uxZQhSNy7z5C5YrJN3Ih888pllll2D/k9qtmcIA==; 5:X8Qk9kqEH9EH4W/yG0+JdvgmERAEV8mFWgXA+B15rnyOZOZKhCCrSuD3kZNB/sJ0zyJggU6KsFnG9+prvgrfinKm/rDuOzN1dP8YF1u0CkL2DHcee9VSXxTnI71ng/ZxNOEYslomKAcUBJ2O5dJ4sTu/F4RGxuh8gDxYHcAbQSk=; 24:exvv5fcytRedFEz3z+anISbxQcYQ80rlKlKUVvvsAkiRRg5HgkiL0/1AlM2wy66Uer8VvXCbKViLhDOa/bUlh1VWtQQR3eBzzGcOj7SzKNY=; 7:IIpfAyYSc7dLZJquZalRIo4gPcj7aOkqLT18vk+SfC9hje60lLSAlaxc9s0/d+k9vMu4VCTzlcNzjJS3aCcq/pqoB3sPwvnQwdlHYFGQMSXJumjFOmGPlqcWeDSFmqFsR3zA+ojm1aFmRAyuDefxiMhxNI5PAF1cORtzd6gmSrupCalJH101ZN0lRdlGVwuOzI7CfjuXg/FwQ4HARCU2oWAGt1GI62kjslxrqnfwhEo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2017 17:43:11.8735 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2492 On 03/10/17 18:34, Szabolcs Nagy wrote: > On 03/10/17 18:28, Szabolcs Nagy wrote: >> Without SVID compat wrapper yn(n,0) and ynf(n,0) does not raise >> the divide-by-zero excpetion and it may return inf with the wrong >> sign for n < 0. >> >> 2017-10-03 Szabolcs Nagy >> >> [BZ #22244] >> * sysdeps/ieee754/dbl-64/e_jn.c (__ieee754_yn): Fix x == 0 case. >> * sysdeps/ieee754/flt-32/e_jnf.c (__ieee754_ynf): Likewise. >> > > sorry, wrong patch (this one breaks yn(n,-0)) > now with fixed patch. diff --git a/sysdeps/ieee754/dbl-64/e_jn.c b/sysdeps/ieee754/dbl-64/e_jn.c index 3ac91df2b0..a244df0e0a 100644 --- a/sysdeps/ieee754/dbl-64/e_jn.c +++ b/sysdeps/ieee754/dbl-64/e_jn.c @@ -268,11 +268,6 @@ __ieee754_yn (int n, double x) /* if Y(n,NaN) is NaN */ if (__glibc_unlikely ((ix | ((uint32_t) (lx | -lx)) >> 31) > 0x7ff00000)) return x + x; - if (__glibc_unlikely ((ix | lx) == 0)) - return -HUGE_VAL + x; - /* -inf and overflow exception. */; - if (__glibc_unlikely (hx < 0)) - return zero / (zero * x); sign = 1; if (n < 0) { @@ -281,6 +276,11 @@ __ieee754_yn (int n, double x) } if (n == 0) return (__ieee754_y0 (x)); + if (__glibc_unlikely ((ix | lx) == 0)) + return -sign / zero; + /* -inf and overflow exception. */; + if (__glibc_unlikely (hx < 0)) + return zero / (zero * x); { SET_RESTORE_ROUND (FE_TONEAREST); if (n == 1) diff --git a/sysdeps/ieee754/flt-32/e_jnf.c b/sysdeps/ieee754/flt-32/e_jnf.c index 82b9ba3300..4b78ecea6c 100644 --- a/sysdeps/ieee754/flt-32/e_jnf.c +++ b/sysdeps/ieee754/flt-32/e_jnf.c @@ -194,15 +194,15 @@ __ieee754_ynf(int n, float x) ix = 0x7fffffff&hx; /* if Y(n,NaN) is NaN */ if(__builtin_expect(ix>0x7f800000, 0)) return x+x; - if(__builtin_expect(ix==0, 0)) - return -HUGE_VALF+x; /* -inf and overflow exception. */ - if(__builtin_expect(hx<0, 0)) return zero/(zero*x); sign = 1; if(n<0){ n = -n; sign = 1 - ((n&1)<<1); } if(n==0) return(__ieee754_y0f(x)); + if(__builtin_expect(ix==0, 0)) + return -sign/zero; + if(__builtin_expect(hx<0, 0)) return zero/(zero*x); SET_RESTORE_ROUNDF (FE_TONEAREST); if(n==1) { ret = sign*__ieee754_y1f(x);