Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 30 Jan 2010 20:11:45 +0200
From:      Kostik Belousov <kostikbel@gmail.com>
To:        Bruce Evans <brde@optusnet.com.au>
Cc:        das@freebsd.org, gavin@freebsd.org, freebsd-standards@freebsd.org, freebsd-amd64@freebsd.org
Subject:   Re: standards/143358: nearbyint raises spurious inexact exception
Message-ID:  <20100130181145.GA3877@deviant.kiev.zoral.com.ua>
In-Reply-To: <20100131014341.J78095@delplex.bde.org>
References:  <201001301251.o0UCpSEP077706@freefall.freebsd.org> <20100131014341.J78095@delplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--lWZ9pouYHbrmKLtT
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sun, Jan 31, 2010 at 02:20:30AM +1100, Bruce Evans wrote:
> On Sat, 30 Jan 2010 gavin@freebsd.org wrote:
>=20
> >Synopsis: nearbyint raises spurious inexact exception
>=20
> >Note that a comment in the function itself in lib/msun/src/s_nearbyint.c
> >does also suggest that this PR is valid, "We save and restore the
> >floating-point environment to avoid raising an inexact exception."  I've
> >also verified Solaris 10, Linux and FreeBSD 7.2 show the expected=20
> >behaviour.
>=20
> This seems to be a bug in gcc-4.2, or perhaps a bug in the inline asms.
> gcc-4.2 still works with -O0, but with -O it removes the entire fesetenv()
> in nearbyint().  The fegetenv() isn't removed though its result is never
> used.  I didn't get anywhere good trying to fix this, but I got to the
> following worse place of interest: after replacing the fesetenv(&env) by
> fesetenv(&xenv) where xenv is an invalidly initialized global variable
> (all 0's), the fegetenv(&env) corrupted the current environment (looks
> a bit like xenv was used to initialize the current environment).
>=20
> Removing fesetenv() in other contexts would give larger bugs.

While looking at this, I tried to run the example on custom-build
gcc 4.4.3/binutils 2.20 toolchain, and bumped into the issue fixed
by
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/3eac7944b4112632ad6=
fb257c7ce31deda72d89f

--lWZ9pouYHbrmKLtT
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (FreeBSD)

iEYEARECAAYFAktkdmAACgkQC3+MBN1Mb4hasgCfZQ3GFXJIWUX++8mi6QjlfaMP
czMAoMCz9Zw3TohtRMr8EkYKCpEH6F3J
=ZL8P
-----END PGP SIGNATURE-----

--lWZ9pouYHbrmKLtT--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100130181145.GA3877>