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> 2006-09-30 Bernhard Fischer <aldot@gcc.gnu.org>
* resolve.c: Fix commentary typo. Fix whitespace. * resolve.c: Fix commentary typo. Fix whitespace.
......
...@@ -933,12 +933,19 @@ the @code{DATA} statement, and it is expected to be assigned to an ...@@ -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 @code{INTEGER} variable. @command{gfortran} permits a BOZ to appear
in any initialization expression as well as assignment statements. in any initialization expression as well as assignment statements.
The use of a BOZ literal constant to initialize a @code{REAL} variable will Attempts to use a BOZ literal constant to do a bitwise initialization of a
lead to confusion. A BOZ literal constant is converted to an variable can lead to confusion. A BOZ literal constant is converted to an
@code{INTEGER} with the kind type with the largest decimal representation @code{INTEGER} value with the kind type with the largest decimal representation,
before a conversion to a @code{REAL} variable. That is, one should not and this value is then converted numerically to the type and kind of the
expect a bitwise copy of the BOZ literal constant to be assigned to the variable in question. Thus, one should not expect a bitwise copy of the BOZ
@code{REAL}. 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 @node Real array indices
@section Real array indices @section Real array indices
...@@ -1370,7 +1377,8 @@ available. ...@@ -1370,7 +1377,8 @@ available.
@itemize @itemize
@item @item
Intrinsics @code{command_argument_count}, @code{get_command}, 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 @item
@cindex Array constructors @cindex Array constructors
...@@ -1397,14 +1405,17 @@ Support for the declaration of enumeration constants via the ...@@ -1397,14 +1405,17 @@ Support for the declaration of enumeration constants via the
@item @item
@cindex TR 15581 @cindex TR 15581
The following parts of TR 15581: TR 15581:
@itemize @itemize
@item @item
@cindex @code{ALLOCATABLE} dummy arguments @cindex @code{ALLOCATABLE} dummy arguments
The @code{ALLOCATABLE} attribute for dummy arguments. @code{ALLOCATABLE} dummy arguments.
@item @item
@cindex @code{ALLOCATABLE} function results @cindex @code{ALLOCATABLE} function results
@code{ALLOCATABLE} function results @code{ALLOCATABLE} function results
@item
@cindex @code{ALLOCATABLE} components of derived types
@code{ALLOCATABLE} components of derived types
@end itemize @end itemize
@item @item
......
...@@ -315,7 +315,10 @@ Enable range checking on results of simplification of constant expressions ...@@ -315,7 +315,10 @@ Enable range checking on results of simplification of constant expressions
during compilation. For example, by default, @command{gfortran} will give during compilation. For example, by default, @command{gfortran} will give
an overflow error at compile time when simplifying @code{a = EXP(1000)}. 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} 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 -std=@var{std} option
@cindex option, -std=@var{std} @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