Date: Wed, 29 Sep 2010 21:35:07 +0200 From: Dimitry Andric <dim@FreeBSD.org> To: Renato Botelho <rbgarga@gmail.com> Cc: Roman Divacky <rdivacky@freebsd.org>, Derek Tattersall <dlt@mebtel.net>, current@freebsd.org Subject: Re: Clang now builds world and kernel, on i386 and amd64 Message-ID: <4CA394EB.7090902@FreeBSD.org> In-Reply-To: <AANLkTikPFi3gjXHGzq3hFBSBzA0j%2BWsOAHM-d8SYNWuD@mail.gmail.com> References: <4C99A53E.7060707@FreeBSD.org> <AANLkTimYj1VnVQBLROE94rqPYO7pQyHWfpjiYYZ2ORrX@mail.gmail.com> <AANLkTikm0FrJbOTiRPQhcqM30N-GyOYRBk_8jR-Gq9jF@mail.gmail.com> <20100929002843.GA5001@oriental.arm.org> <4CA2E00D.3080102@FreeBSD.org> <AANLkTik4k%2Bg8NGwRUp=7bvF2MiHhbBOHmA=Ree_-xRDT@mail.gmail.com> <4CA3244D.7030907@FreeBSD.org> <20100929155659.GA82433@oriental.arm.org> <20100929173158.GA73653@freebsd.org> <AANLkTi=6n0%2BEYsXT5aG_mjFmTK=fUYhwptvW%2Bn4zQMOK@mail.gmail.com> <20100929174434.GA75072@freebsd.org> <AANLkTikPFi3gjXHGzq3hFBSBzA0j%2BWsOAHM-d8SYNWuD@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
On 2010-09-29 20:22, Renato Botelho wrote:
> It's using drand48() instead of rand()
...
> GCC libc:
> garga@botelhor:~/testes> ./test
> random value 0.396465
>
> clang libc:
> garga@botelhor:~/testes> ./test
> random value -inf
Renato, Derek, could you please apply the attached patch for ldexp,
rebuild your libc (with clang), and run your random test program again?
[-- Attachment #2 --]
diff --git a/lib/libc/amd64/gen/ldexp.c b/lib/libc/amd64/gen/ldexp.c
index 43107fc..ecf1ff8 100644
--- a/lib/libc/amd64/gen/ldexp.c
+++ b/lib/libc/amd64/gen/ldexp.c
@@ -36,6 +36,8 @@ static char sccsid[] = "@(#)ldexp.c 8.1 (Berkeley) 6/4/93";
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#include <math.h>
+
/*
* ldexp(value, exp): return value * (2 ** exp).
*
@@ -49,12 +51,16 @@ __FBSDID("$FreeBSD$");
double
ldexp (double value, int exp)
{
- double temp, texp, temp2;
+ double temp, texp;
+#ifdef __clang__
+ volatile
+#endif
+ double temp2;
texp = exp;
#ifdef __GNUC__
__asm ("fscale "
- : "=u" (temp2), "=t" (temp)
- : "0" (texp), "1" (value));
+ : "=t" (temp), "=u" (temp2)
+ : "0" (value), "1" (texp));
#else
#error unknown asm
#endif
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4CA394EB.7090902>
