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

2005-09-28 Thread mikael dot vidstedt at bea dot com
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.00
instead of
f=9007200328482816.00

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


[Bug rtl-optimization/24102] floatdisf2_internal2 broken

2005-09-28 Thread mikael dot vidstedt at bea dot com

--- Additional Comments From mikael dot vidstedt at bea dot com  2005-09-28 
13:34 ---
This is on AIX/PowerPC. If there is anything else you need to know, please just 
ask.

-- 
   What|Removed |Added

 GCC target triplet||powerpc


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