2007-11-29 Steven G. Kargl <kargls@comcast.net>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Nov 2007 04:10:47 +0000 (04:10 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Nov 2007 04:10:47 +0000 (04:10 +0000)
PR fortran/34230
* fortran/arith.c (gfc_check_real_range): Set intermediate values
to +-Inf and 0 when -fno-range-check is in effect.
* fortran/invoke.texi: Improve -fno-range-check description.

PR fortran/34203
* fortran/invoke.texi: Document the C escaped characters activated
by -fbackslash.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130530 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/arith.c
gcc/fortran/invoke.texi

index 8f185f7..6aa5a35 100644 (file)
@@ -1,3 +1,14 @@
+2007-11-29  Steven G. Kargl  <kargls@comcast.net>
+
+       PR fortran/34230
+       * fortran/arith.c (gfc_check_real_range): Set intermediate values
+       to +-Inf and 0 when -fno-range-check is in effect.
+       * fortran/invoke.texi: Improve -fno-range-check description.
+
+       PR fortran/34203
+       * fortran/invoke.texi: Document the C escaped characters activated
+       by -fbackslash.
+
 2007-11-29  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/34248
index 97d093f..cfcbdf0 100644 (file)
@@ -348,14 +348,27 @@ gfc_check_real_range (mpfr_t p, int kind)
   else if (mpfr_cmp (q, gfc_real_kinds[i].huge) > 0)
     {
       if (gfc_option.flag_range_check == 0)
-       retval = ARITH_OK;
+       {
+         mpfr_set_inf (p, mpfr_sgn (p));
+         retval = ARITH_OK;
+       }
       else
        retval = ARITH_OVERFLOW;
     }
   else if (mpfr_cmp (q, gfc_real_kinds[i].subnormal) < 0)
     {
       if (gfc_option.flag_range_check == 0)
-       retval = ARITH_OK;
+       {
+         if (mpfr_sgn (p) < 0)
+           {
+             mpfr_set_ui (p, 0, GFC_RND_MODE);
+             mpfr_set_si (q, -1, GFC_RND_MODE);
+             mpfr_copysign (p, p, q, GFC_RND_MODE);
+           }
+         else
+           mpfr_set_ui (p, 0, GFC_RND_MODE);
+         retval = ARITH_OK;
+       }
       else
        retval = ARITH_UNDERFLOW;
     }
index 2be5b5a..22dd898 100644 (file)
@@ -239,6 +239,11 @@ Allow @samp{$} as a valid character in a symbol name.
 @cindex escape characters
 Change the interpretation of backslashes in string literals
 from a single backslash character to ``C-style'' escape characters.
+The following combinations are expanded \a, \b, \f, \n, \r, \t,
+\v, \\, and \0 to the ASCII characters alert, backspace, form feed,
+newline, carriage return, horizontal tab, vertical tab, backslash,
+and NUL, respectively.  All other combinations of a character preceded
+by \ are unexpanded.
 
 @item -fmodule-private
 @opindex @code{fmodule-private}
@@ -303,10 +308,13 @@ in.  The option @option{-fopenmp} implies @option{-frecursive}.
 @item -fno-range-check
 @opindex @code{frange-check}
 Disable range checking on results of simplification of constant
-expressions during compilation.  For example, by default, GNU Fortran
-will give an overflow error at compile time when simplifying @code{a =
-EXP(1000)}. With @option{-fno-range-check}, no error will be given and
-the variable @code{a} will be assigned the value @code{+Infinity}.
+expressions during compilation.  For example, GNU Fortran will give
+an error at compile time when simplifying @code{a = 1. / 0}.
+With this option, no error will be given and @code{a} will be assigned
+the value @code{+Infinity}.  If an expression evaluates to a value
+outside of the relevant range of [@code{-HUGE()}:@code{HUGE()}],
+then the expression will be replaced by @code{-Inf} or @code{+Inf}
+as appropriate.
 Similarly, @code{DATA i/Z'FFFFFFFF'/} will result in an integer overflow
 on most systems, but with @option{-fno-range-check} the value will
 ``wrap around'' and @code{i} will be initialized to @math{-1} instead.