svn commit: r336299 - in head: include lib/msun lib/msun/ld128 lib/msun/ld80 lib/msun/man lib/msun/src

John Baldwin jhb at FreeBSD.org
Fri Sep 21 00:00:43 UTC 2018


On 9/20/18 2:43 PM, Li-Wen Hsu wrote:
> On Thu, Sep 20, 2018 at 10:06 PM Mark Johnston <markj at freebsd.org> wrote:
>>
>> On Thu, Sep 20, 2018 at 09:39:24AM -0700, John Baldwin wrote:
>>> On 9/20/18 8:54 AM, Mark Johnston wrote:
>>>> On Sun, Jul 15, 2018 at 12:23:11AM +0000, Matt Macy wrote:
>>>>> Author: mmacy
>>>>> Date: Sun Jul 15 00:23:10 2018
>>>>> New Revision: 336299
>>>>> URL: https://svnweb.freebsd.org/changeset/base/336299
>>>>>
>>>>> Log:
>>>>>   msun: add ld80/ld128 powl, cpow, cpowf, cpowl from openbsd
>>>>>
>>>>>   This corresponds to the latest status (hasn't changed in 9+
>>>>>   years) from openbsd of ld80/ld128 powl, and source cpowf, cpow,
>>>>>   cpowl (the complex power functions for float complex, double
>>>>>   complex, and long double complex) which are required for C99
>>>>>   compliance and were missing from FreeBSD. Also required for
>>>>>   some numerical codes using complex numbered Hamiltonians.
>>>>>
>>>>>   Thanks to jhb for tracking down the issue with making
>>>>>   weak_reference compile on powerpc.
>>>>>
>>>>>   When asked to review, bde said "I don't like it" - but
>>>>>   provided no actionable feedback or superior implementations.
>>>>>
>>>>>   Discussed with: jhb
>>>>>   Submitted by: jmd
>>>>>   Differential Revision: https://reviews.freebsd.org/D15919
>>>>
>>>> This seems to have broken the gcc build:
>>>> https://ci.freebsd.org/job/FreeBSD-head-amd64-gcc/
>>>>
>>>> /workspace/src/lib/msun/ld80/e_powl.c:275:1: error: floating constant exceeds range of 'long double' [-Werror=overflow]
>>>>   if( y >= LDBL_MAX )
>>>>   ^~
>>>
>>> Which architecture?  i386 doesn't get build with i386-xtoolchain-gcc pending
>>> some patches I haven't yet posted for review related to the weirdness we do
>>> with floating point on i386.
>>
>> This is the -m32 build on amd64.  I haven't tested it myself, but Mark
>> Millard noted that the issue might be fixed by a gcc update.
>>
> 
> I suspect this.  Each build is in a fresh created jail with the latest
> branch of packages from pkg.freebsd.org.
> 
> At the beginning of (warning: 56MB file)
> https://ci.freebsd.org/job/FreeBSD-head-amd64-gcc/7262/consoleText
> 
> There is:
> 
> New packages to be INSTALLED:
>         amd64-xtoolchain-gcc: 0.4_1
>         amd64-gcc: 6.4.0_2
>         mpfr: 4.0.1
>         gmp: 6.1.2
>         mpc: 1.1.0_1
>         amd64-binutils: 2.30_5,1
> 
> Number of packages to be installed: 6
> 
> Or is there a newer version of devel/amd64-gcc I am not aware?

That has the change Mark Millard is thinking of:

https://svnweb.freebsd.org/ports?view=revision&revision=475290

However, I suspect this is due to a different issue.  I still have some
patches that I need to get an i386 world to build with external GCC that
I'm not sure of and haven't posted for review yet.  I bet these also matter
for the -m32 build:

Index: lib/libc/tests/stdio/printfloat_test.c
===================================================================
--- lib/libc/tests/stdio/printfloat_test.c	(revision 338373)
+++ lib/libc/tests/stdio/printfloat_test.c	(working copy)
@@ -315,7 +315,7 @@
 	testfmt("0x1p-1074", "%a", 0x1p-1074);
 	testfmt("0x1.2345p-1024", "%a", 0x1.2345p-1024);
 
-#if (LDBL_MANT_DIG == 64)
+#if (LDBL_MANT_DIG == 64) && !defined(__i386__)
 	testfmt("0x1.921fb54442d18468p+1", "%La", 0x3.243f6a8885a308dp0L);
 	testfmt("0x1p-16445", "%La", 0x1p-16445L);
 	testfmt("0x1.30ecap-16381", "%La", 0x9.8765p-16384L);
Index: sys/x86/include/float.h
===================================================================
--- sys/x86/include/float.h	(revision 338373)
+++ sys/x86/include/float.h	(working copy)
@@ -86,10 +86,18 @@
 #define LDBL_EPSILON	1.0842021724855044340E-19L
 #define LDBL_DIG	18
 #define LDBL_MIN_EXP	(-16381)
+#if defined(__i386__)
+#define LDBL_MIN	3.3621031431120935e-4932L
+#else
 #define LDBL_MIN	3.3621031431120935063E-4932L
+#endif
 #define LDBL_MIN_10_EXP	(-4931)
 #define LDBL_MAX_EXP	16384
+#if defined(__i386__)
+#define	LDBL_MAX	1.1897314953572316e+4932L
+#else
 #define LDBL_MAX	1.1897314953572317650E+4932L
+#endif
 #define LDBL_MAX_10_EXP	4932
 #if __ISO_C_VISIBLE >= 2011
 #define	LDBL_TRUE_MIN	3.6451995318824746025E-4951L

-- 
John Baldwin

                                                                            


More information about the svn-src-head mailing list