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
This commit is contained in:
Steven G. Kargl 2007-11-30 04:10:47 +00:00 committed by Jerry DeLisle
parent 04fe2e7b30
commit a84b9ee86e
3 changed files with 38 additions and 6 deletions

View 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

View 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;
}

View 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.