This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/24998] [4.2 Regression] Build failure on sparc-sun-solaris2.9/arm: undefined symbol __floatunsitf
- From: "joseph at codesourcery dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 23 Nov 2005 14:54:29 -0000
- Subject: [Bug middle-end/24998] [4.2 Regression] Build failure on sparc-sun-solaris2.9/arm: undefined symbol __floatunsitf
- References: <bug-24998-10259@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #8 from joseph at codesourcery dot com 2005-11-23 14:54 -------
Subject: Re: [4.2 Regression] Build failure on
sparc-sun-solaris2.9/arm: undefined symbol __floatunsitf
On Wed, 23 Nov 2005, rearnsha at gcc dot gnu dot org wrote:
> Not that simple, because the implementation of __floatunsidf is tightly
> integrated with the implementation of __adddf3. And we don't want to
> override that because the ieee754-df.S implementation does not support
> raising signals.
In that case there's the possibility of a trivial C implementation along
the lines of
double __floatunsidf (unsigned i)
{
double r = (double)(int)i;
if ((int)i < 0)
r += 0x1p32f;
return r;
}
(with a bit more complexity for correct rounding in the "float" case, as
expand_float does). Adding such implementations to libgcc2.c is the
simplest workaround for this bug, but I'd hope that most issues can be
resolved separately so such implementations are only needed in the case of
__float* in libc.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24998