[Bug libgcc/59412] New: __fixunsdfDI triggers wrong inexact exceptions
aurelien at aurel32 dot net
gcc-bugzilla@gcc.gnu.org
Fri Dec 6 17:42:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59412
Bug ID: 59412
Summary: __fixunsdfDI triggers wrong inexact exceptions
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libgcc
Assignee: unassigned at gcc dot gnu.org
Reporter: aurelien at aurel32 dot net
__fixunsdfDI triggers an inexact exception even when converting an integer
number from double to long long, while it shouldn't. This is due to this part
of the code:
UDWtype
__fixunsdfDI (DFtype a)
{
/* Get high part of result. The division here will just moves the radix
point and will not cause any rounding. Then the conversion to integral
type chops result as desired. */
const UWtype hi = a / Wtype_MAXp1_F;
As said in the comment, the division just moves the radix, so it doesn't
triggers an inexact exception. However then the value then have some decimal
parts and the convertsion from double to int triggers the inexact exception.
This is reproducible for example on powerpc32 and causes errors in the glibc
testsuite.
More information about the Gcc-bugs
mailing list