[Bug rtl-optimization/24102] New: floatdisf2_internal2 broken

mikael dot vidstedt at bea dot com gcc-bugzilla@gcc.gnu.org
Wed Sep 28 13:32:00 GMT 2005


The floatdisf2_internal2 is broken since 2004-11-26, which will result in broken
rounding for float casts.

   long long l = (((1L << 24) + 1) << 29) + 1;
   float f = (float)l;

will eg. lead to
f=9007199254740992.000000
instead of
f=9007200328482816.000000

If I'm not mistaken, rs6000.md:5239 should read (const_int 2) instead of
(const_int 3).

-- 
           Summary: floatdisf2_internal2 broken
           Product: gcc
           Version: 3.4.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: rtl-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: mikael dot vidstedt at bea dot com
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24102



More information about the Gcc-bugs mailing list