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:
parent
04fe2e7b30
commit
a84b9ee86e
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue