invoke.texi: Add mention of BOZ constants and integer overflow to -fno-range-check.
authorBrooks Moses <bmoses@stanford.edu>
Sun, 1 Oct 2006 00:51:21 +0000 (00:51 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Sun, 1 Oct 2006 00:51:21 +0000 (00:51 +0000)
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

gcc/fortran/ChangeLog
gcc/fortran/gfortran.texi
gcc/fortran/invoke.texi

index e1d8420bd125f57389083db4cfdd8888daadcebc..a37b8579fc78d6234669ce9884e88eaeea3c94be 100644 (file)
@@ -1,3 +1,10 @@
+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.
index a20ef7650b813648f3eef1592143ec0fcc6271b4..cd281e1d0256d5031160309ef5f3f00a1a667a28 100644 (file)
@@ -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
index 7b8036cf630bf1f3a9a611f11e788cfb5bd88ab4..e0a0c474a3120af35eeb13104e3fe14932c2e953 100644 (file)
@@ -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}