------- Comment #5 from kargl at gcc dot gnu dot org  2008-06-13 03:25 -------
(In reply to comment #3)
> There is no "proper" way.
> 
> Use -2147483647 which is the most negative integer representable in 32 bits.
> 

This isn't necessarily true. :)

There are a few options.

1) Add -fno-range-check to the options that are provided to the runtime
   library.  Then in io/read.c (as well as other files), we could change
   line 397 from

      if (value > maxv_10)
        goto overflow;

    to 

      if (value > maxv_10 && !compile_option.range_check)
        goto overflow;

2) The other option would be to special case the -huge()-1
   case in the runtime library.  I haven't looked closely 
   enough to see if it would work, but the above could be 
   changed to

   /* Catch values larger than huge(). */
   if (!negative && value > maxv_10)
        goto overflow;

   /* Catch values less than -huge()-1 */
   if (negative && value > maxv_10 + PLUS_WHATEVER_IS_NEEDED_HERE)
        goto overflow;





-- 


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

Reply via email to