+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
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;
}
@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}
@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.