Commit da1e2517 by Brooks Moses Committed by Steven G. Kargl

invoke.texi: Add mention of BOZ constants and integer overflow to -fno-range-check.

2006-09-30  Brooks Moses  <bmoses@stanford.edu>

	* invoke.texi:  Add mention of BOZ constants and integer
	overflow to -fno-range-check.
	* fortran.texi:  Add mention of -fno-range-check to
	section on BOZ contants.

From-SVN: r117342
parent 04652d6c
2006-09-30 Brooks Moses <bmoses@stanford.edu>
* invoke.texi: Add mention of BOZ constants and integer
overflow to -fno-range-check.
* gfortran.texi: Add mention of -fno-range-check to
section on BOZ contants.
2006-09-30 Bernhard Fischer <aldot@gcc.gnu.org>
* resolve.c: Fix commentary typo. Fix whitespace.
......
......@@ -933,12 +933,19 @@ the @code{DATA} statement, and it is expected to be assigned to an
@code{INTEGER} variable. @command{gfortran} permits a BOZ to appear
in any initialization expression as well as assignment statements.
The use of a BOZ literal constant to initialize a @code{REAL} variable will
lead to confusion. A BOZ literal constant is converted to an
@code{INTEGER} with the kind type with the largest decimal representation
before a conversion to a @code{REAL} variable. That is, one should not
expect a bitwise copy of the BOZ literal constant to be assigned to the
@code{REAL}.
Attempts to use a BOZ literal constant to do a bitwise initialization of a
variable can lead to confusion. A BOZ literal constant is converted to an
@code{INTEGER} value with the kind type with the largest decimal representation,
and this value is then converted numerically to the type and kind of the
variable in question. Thus, one should not expect a bitwise copy of the BOZ
literal constant to be assigned to a @code{REAL} variable.
Similarly, initializing an @code{INTEGER} variable with a statement such as
@code{DATA i/Z'FFFFFFFF'/} will produce an integer overflow rather than the
desired result of @math{-1} when @code{i} is a 32-bit integer on a system that
supports 64-bit integers. The @samp{-fno-range-check} option can be used as
a workaround for legacy code that initializes integers in this manner.
@node Real array indices
@section Real array indices
......@@ -1370,7 +1377,8 @@ available.
@itemize
@item
Intrinsics @code{command_argument_count}, @code{get_command},
@code{get_command_argument}, and @code{get_environment_variable}.
@code{get_command_argument}, @code{get_environment_variable}, and
@code{move_alloc}.
@item
@cindex Array constructors
......@@ -1397,14 +1405,17 @@ Support for the declaration of enumeration constants via the
@item
@cindex TR 15581
The following parts of TR 15581:
TR 15581:
@itemize
@item
@cindex @code{ALLOCATABLE} dummy arguments
The @code{ALLOCATABLE} attribute for dummy arguments.
@code{ALLOCATABLE} dummy arguments.
@item
@cindex @code{ALLOCATABLE} function results
@code{ALLOCATABLE} function results
@item
@cindex @code{ALLOCATABLE} components of derived types
@code{ALLOCATABLE} components of derived types
@end itemize
@item
......
......@@ -315,7 +315,10 @@ Enable range checking on results of simplification of constant expressions
during compilation. For example, by default, @command{gfortran} will give
an overflow error at compile time when simplifying @code{a = EXP(1000)}.
With @samp{-fno-range-check}, no error will be given and the variable @code{a}
will be assigned the value @code{+Infinity}.
will be assigned the value @code{+Infinity}. Similarly,
@code{DATA i/Z'FFFFFFFF'/} will result in an integer overflow on most systems,
but with @samp{-fno-range-check} the value will ``wrap around'' and @code{i}
will be initialized to @math{-1} instead.
@cindex -std=@var{std} option
@cindex option, -std=@var{std}
......
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