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.