Commit a84b9ee8 by Steven G. Kargl Committed by Jerry DeLisle

re PR fortran/34230 (Expressions of parameters evaluated with too high precision)

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.

From-SVN: r130530
parent 04fe2e7b
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
......
......@@ -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;
}
......
......@@ -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.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment