diff mbox

[Fortran] Update gfortran.texi's Fortran 2008 status

Message ID 4C9C488D.3020502@net-b.de
State New
Headers show

Commit Message

Tobias Burnus Sept. 24, 2010, 6:43 a.m. UTC
Steve Kargl wrote:
> On Thu, Sep 23, 2010 at 04:54:01PM +0200, Tobias Burnus wrote:
>>   On 09/23/2010 04:18 PM, Tobias Burnus wrote:
>>> The Fortran 2003 and 2008 status in the manual badly needs to be
>>> updated. I did the simple part: Updating the Fortran 2008 section;
>>> updating Fortran 2003 is more work. I think also other parts of the
>>> manual need some love. Anyone volunteering to look though the manual
>>> and doing some janitorial work?
> Once you address Ralf's comments, the patch is ok to commit.

Thanks to you and to Ralf for the review. I have now corrected the @code 
-> @file, the double-space after end-of-sentence period, and the / -> 
/@/ change throughout the file; I also changed the file extension from 
".F2008" to ".F08" in my part of the patch.

Committed as Rev. 164584, cf. attachment.

Tobias

Comments

Joseph Myers Sept. 25, 2010, 5:51 p.m. UTC | #1
On Fri, 24 Sep 2010, Tobias Burnus wrote:

>  Steve Kargl wrote:
> > On Thu, Sep 23, 2010 at 04:54:01PM +0200, Tobias Burnus wrote:
> > >   On 09/23/2010 04:18 PM, Tobias Burnus wrote:
> > > > The Fortran 2003 and 2008 status in the manual badly needs to be
> > > > updated. I did the simple part: Updating the Fortran 2008 section;
> > > > updating Fortran 2003 is more work. I think also other parts of the
> > > > manual need some love. Anyone volunteering to look though the manual
> > > > and doing some janitorial work?
> > Once you address Ralf's comments, the patch is ok to commit.
> 
> Thanks to you and to Ralf for the review. I have now corrected the @code ->
> @file, the double-space after end-of-sentence period, and the / -> /@/ change
> throughout the file; I also changed the file extension from ".F2008" to ".F08"
> in my part of the patch.
> 
> Committed as Rev. 164584, cf. attachment.

This appears to have completely broken the gfortran manual for "make dvi" 
or "make pdf" because of the removal of the initial "\input texinfo @c 
-*-texinfo-*-" line.

http://gcc.gnu.org/ml/gccadmin/2010-q3/msg00223.html
diff mbox

Patch

Index: gcc/fortran/ChangeLog
===================================================================
--- gcc/fortran/ChangeLog	(Revision 164583)
+++ gcc/fortran/ChangeLog	(Arbeitskopie)
@@ -1,5 +1,13 @@ 
 2010-09-24  Tobias Burnus  <burnus@net-b.de>
 
+	* gfortran.texi: Add second space after end-of-sentence period;
+	change / to /@/ to allow hyphenation of URLs.
+	(Standards): Remove duplicated OpenMP, update wording given that
+	Fortran 2008 now released.
+	(Fortran 2008 status): Update and add list of implemented features.
+
+2010-09-24  Tobias Burnus  <burnus@net-b.de>
+
 	PR fortran/40571
 	* iso-fortran-env.def: Add NAMED_KINDARRAY with
 	character_kinds, integer_kinds, logical_kinds and
Index: gcc/fortran/gfortran.texi
===================================================================
--- gcc/fortran/gfortran.texi	(Revision 164583)
+++ gcc/fortran/gfortran.texi	(Arbeitskopie)
@@ -1,4 +1,4 @@ 
-\input texinfo  @c -*-texinfo-*-
+
 @c %**start of header
 @setfilename gfortran.info
 @set copyrights-gfortran 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
@@ -158,7 +158,7 @@ 
 @cindex Introduction
 
 This manual documents the use of @command{gfortran}, 
-the GNU Fortran compiler. You can find in this manual how to invoke
+the GNU Fortran compiler.  You can find in this manual how to invoke
 @command{gfortran}, as well as its features and incompatibilities.
 
 @ifset DEVELOPMENT
@@ -208,7 +208,7 @@ 
 @c The following duplicates the text on the TexInfo table of contents.
 @iftex
 This manual documents the use of @command{gfortran}, the GNU Fortran
-compiler. You can find in this manual how to invoke @command{gfortran},
+compiler.  You can find in this manual how to invoke @command{gfortran},
 as well as its features and incompatibilities.
 
 @ifset DEVELOPMENT
@@ -243,7 +243,7 @@ 
 
 The GNU Fortran compiler supports the Fortran 77, 90 and 95 standards
 completely, parts of the Fortran 2003 and Fortran 2008 standards, and
-several vendor extensions. The development goal is to provide the
+several vendor extensions.  The development goal is to provide the
 following features:
 
 @itemize @bullet
@@ -364,11 +364,11 @@ 
 which provides the command-line interface for the compiler.  It calls
 the relevant compiler front-end program (e.g., @command{f951} for
 Fortran) for each file in the source code, and then calls the assembler
-and linker as appropriate to produce the compiled output. In a copy of
+and linker as appropriate to produce the compiled output.  In a copy of
 GCC which has been compiled with Fortran language support enabled,
 @command{gcc} will recognize files with @file{.f}, @file{.for}, @file{.ftn},
 @file{.f90}, @file{.f95}, @file{.f03} and @file{.f08} extensions as
-Fortran source code, and compile it accordingly. A @command{gfortran}
+Fortran source code, and compile it accordingly.  A @command{gfortran}
 driver program is also provided, which is identical to @command{gcc}
 except that it automatically links the Fortran runtime libraries into the
 compiled program.
@@ -378,7 +378,7 @@ 
 Source files with @file{.f90}, @file{.f95}, @file{.f03}, @file{.f08},
 @file{.F90}, @file{.F95}, @file{.F03} and @file{.F08} extensions are
 treated as free form.  The capitalized versions of either form are run
-through preprocessing. Source files with the lower case @file{.fpp}
+through preprocessing.  Source files with the lower case @file{.fpp}
 extension are also run through preprocessing.
 
 This manual specifically documents the Fortran front end, which handles
@@ -404,28 +404,28 @@ 
 
 Many Fortran compilers including GNU Fortran allow passing the source code
 through a C preprocessor (CPP; sometimes also called the Fortran preprocessor,
-FPP) to allow for conditional compilation. In the case of GNU Fortran,
-this is the GNU C Preprocessor in the traditional mode. On systems with
+FPP) to allow for conditional compilation.  In the case of GNU Fortran,
+this is the GNU C Preprocessor in the traditional mode.  On systems with
 case-preserving file names, the preprocessor is automatically invoked if the
-filename extension is @code{.F}, @code{.FOR}, @code{.FTN}, @code{.fpp},
-@code{.FPP}, @code{.F90}, @code{.F95}, @code{.F03} or @code{.F08}. To manually
+filename extension is @file{.F}, @file{.FOR}, @file{.FTN}, @file{.fpp},
+@file{.FPP}, @file{.F90}, @file{.F95}, @file{.F03} or @file{.F08}.  To manually
 invoke the preprocessor on any file, use @option{-cpp}, to disable
 preprocessing on files where the preprocessor is run automatically, use
 @option{-nocpp}.
 
 If a preprocessed file includes another file with the Fortran @code{INCLUDE}
-statement, the included file is not preprocessed. To preprocess included
+statement, the included file is not preprocessed.  To preprocess included
 files, use the equivalent preprocessor statement @code{#include}.
 
 If GNU Fortran invokes the preprocessor, @code{__GFORTRAN__}
 is defined and @code{__GNUC__}, @code{__GNUC_MINOR__} and
 @code{__GNUC_PATCHLEVEL__} can be used to determine the version of the
-compiler. See @ref{Top,,Overview,cpp,The C Preprocessor} for details.
+compiler.  See @ref{Top,,Overview,cpp,The C Preprocessor} for details.
 
 While CPP is the de-facto standard for preprocessing Fortran code,
 Part 3 of the Fortran 95 standard (ISO/IEC 1539-3:1998) defines
 Conditional Compilation, which is not widely used and not directly
-supported by the GNU Fortran compiler. You can use the program coco
+supported by the GNU Fortran compiler.  You can use the program coco
 to preprocess such files (@uref{http://www.daniellnagle.com/coco.html}).
 
 
@@ -474,9 +474,8 @@ 
 including a number of standard and non-standard extensions, and can be
 used on real-world programs.  In particular, the supported extensions
 include OpenMP, Cray-style pointers, and several Fortran 2003 and Fortran
-2008 features such as enumeration, stream I/O, and some of the
-enhancements to allocatable array support from TR 15581.  However, it is
-still under development and has a few remaining rough edges.
+2008 features, including TR 15581.  However, it is still under
+development and has a few remaining rough edges.
 
 At present, the GNU Fortran compiler passes the
 @uref{http://www.fortran-2000.com/ArnaudRecipes/fcvs21_f95.html, 
@@ -491,7 +490,7 @@ 
 @uref{http://mysite.verizon.net/serveall/moene.pdf, the HIRLAM
 weather-forecasting code} and
 @uref{http://www.theochem.uwa.edu.au/tonto/, the Tonto quantum 
-chemistry package}; see @url{http://gcc.gnu.org/wiki/GfortranApps} for an
+chemistry package}; see @url{http://gcc.gnu.org/@/wiki/@/GfortranApps} for an
 extended list.
 
 Among other things, the GNU Fortran compiler is intended as a replacement
@@ -521,25 +520,17 @@ 
 The GNU Fortran compiler implements
 ISO/IEC 1539:1997 (Fortran 95).  As such, it can also compile essentially all
 standard-compliant Fortran 90 and Fortran 77 programs.   It also supports
-the ISO/IEC TR-15581 enhancements to allocatable arrays, and
-the @uref{http://www.openmp.org/drupal/mp-documents/spec25.pdf,
-OpenMP Application Program Interface v2.5} specification.
+the ISO/IEC TR-15581 enhancements to allocatable arrays.
 
 In the future, the GNU Fortran compiler will also support ISO/IEC
-1539-1:2004 (Fortran 2003) and future Fortran standards. Partial support
-of that standard is already provided; the current status of Fortran 2003
-support is reported in the @ref{Fortran 2003 status} section of the
-documentation.
+1539-1:2004 (Fortran 2003), ISO/IEC 1539-1:2010 (Fortran 2008) and
+future Fortran standards.  Partial support of the Fortran 2003 and
+Fortran 2008 standard is already provided; the current status of the
+support is reported in the @ref{Fortran 2003 status} and
+@ref{Fortran 2008 status} sections of the documentation.
 
-The next version of the Fortran standard (Fortran 2008) is currently
-being developed and the GNU Fortran compiler supports some of its new
-features. This support is based on the latest draft of the standard
-(available from @url{http://www.nag.co.uk/sc22wg5/}) and no guarantee of
-future compatibility is made, as the final standard might differ from the
-draft. For more information, see the @ref{Fortran 2008 status} section.
-
 Additionally, the GNU Fortran compilers supports the OpenMP specification
-(version 3.0, @url{http://openmp.org/wp/openmp-specifications/}).
+(version 3.0, @url{http://openmp.org/@/wp/@/openmp-specifications/}).
 
 @node Varying Length Character Strings
 @subsection Varying Length Character Strings
@@ -548,9 +539,9 @@ 
 @cindex strings, varying length
 
 The Fortran 95 standard specifies in Part 2 (ISO/IEC 1539-2:2000)
-varying length character strings. While GNU Fortran currently does not
+varying length character strings.  While GNU Fortran currently does not
 support such strings directly, there exist two Fortran implementations
-for them, which work with GNU Fortran. They can be found at
+for them, which work with GNU Fortran.  They can be found at
 @uref{http://www.fortran.com/@/iso_varying_string.f95} and at
 @uref{ftp://ftp.nag.co.uk/@/sc22wg5/@/ISO_VARYING_STRING/}.
 
@@ -627,7 +618,7 @@ 
 
 This environment variable controls where library output is sent.
 If the first letter is @samp{y}, @samp{Y} or @samp{1}, standard
-error is used. If the first letter is @samp{n}, @samp{N} or
+error is used.  If the first letter is @samp{n}, @samp{N} or
 @samp{0}, standard output is used.
 
 @node GFORTRAN_TMPDIR
@@ -643,7 +634,7 @@ 
 
 This environment variable controls whether all I/O is unbuffered.  If
 the first letter is @samp{y}, @samp{Y} or @samp{1}, all I/O is
-unbuffered. This will slow down small sequential reads and writes.  If
+unbuffered.  This will slow down small sequential reads and writes.  If
 the first letter is @samp{n}, @samp{N} or @samp{0}, I/O is buffered.
 This is the default.
 
@@ -652,7 +643,7 @@ 
 
 The environment variable named @env{GFORTRAN_UNBUFFERED_PRECONNECTED} controls
 whether I/O on a preconnected unit (i.e.@: STDOUT or STDERR) is unbuffered.  If 
-the first letter is @samp{y}, @samp{Y} or @samp{1}, I/O is unbuffered. This
+the first letter is @samp{y}, @samp{Y} or @samp{1}, I/O is unbuffered.  This
 will slow down small sequential reads and writes.  If the first letter
 is @samp{n}, @samp{N} or @samp{0}, I/O is buffered.  This is the default.
 
@@ -662,7 +653,7 @@ 
 If the first letter is @samp{y}, @samp{Y} or @samp{1}, filename and
 line numbers for runtime errors are printed.  If the first letter is
 @samp{n}, @samp{N} or @samp{0}, don't print filename and line numbers
-for runtime errors. The default is to print the location.
+for runtime errors.  The default is to print the location.
 
 @node GFORTRAN_OPTIONAL_PLUS
 @section @env{GFORTRAN_OPTIONAL_PLUS}---Print leading + where permitted
@@ -671,7 +662,7 @@ 
 a plus sign is printed
 where permitted by the Fortran standard.  If the first letter
 is @samp{n}, @samp{N} or @samp{0}, a plus sign is not printed
-in most cases. Default is not to print plus signs.
+in most cases.  Default is not to print plus signs.
 
 @node GFORTRAN_DEFAULT_RECL
 @section @env{GFORTRAN_DEFAULT_RECL}---Default record length for new files
@@ -768,8 +759,8 @@ 
 
 If the @env{GFORTRAN_ERROR_DUMPCORE} variable is set to
 @samp{y}, @samp{Y} or @samp{1} (only the first letter is relevant)
-then library run-time errors cause core dumps. To disable the core
-dumps, set the variable to @samp{n}, @samp{N}, @samp{0}. Default
+then library run-time errors cause core dumps.  To disable the core
+dumps, set the variable to @samp{n}, @samp{N}, @samp{0}.  Default
 is not to core dump unless the @option{-fdump-core} compile option
 was used.
 
@@ -780,7 +771,7 @@ 
 @samp{y}, @samp{Y} or @samp{1} (only the first letter is relevant)
 then a backtrace is printed when a run-time error occurs.
 To disable the backtracing, set the variable to
-@samp{n}, @samp{N}, @samp{0}. Default is not to print a backtrace
+@samp{n}, @samp{N}, @samp{0}.  Default is not to print a backtrace
 unless the @option{-fbacktrace} compile option
 was used.
 
@@ -820,7 +811,7 @@ 
 @item 
 @cindex array, constructors
 @cindex @code{[...]}
-Array constructors using square brackets. That is, @code{[...]} rather
+Array constructors using square brackets.  That is, @code{[...]} rather
 than @code{(/.../)}.  Type-specification for array constructors like
 @code{(/ some-type :: ... /)}.
 
@@ -938,23 +929,105 @@ 
 @node Fortran 2008 status
 @section Fortran 2008 status
 
-The next version of the Fortran standard after Fortran 2003 is currently
-being worked on by the Working Group 5 of Sub-Committee 22 of the Joint
-Technical Committee 1 of the International Organization for
-Standardization (ISO) and the International Electrotechnical Commission
-(IEC). This group is known as @uref{http://www.nag.co.uk/sc22wg5/, WG5}.
-The next revision of the Fortran standard is informally referred to as
-Fortran 2008, reflecting its planned release year. The GNU Fortran
-compiler has support for some of the new features in Fortran 2008. This
-support is based on the latest draft, available from
-@url{http://www.nag.co.uk/sc22wg5/}. However, as the final standard may
-differ from the drafts, no guarantee of backward compatibility can be
-made and you should only use it for experimental purposes.
+The latest version of the Fortran standard is ISO/IEC 1539-1:2010, informally
+known as Fortran 2008.  The official version is available from International
+Organization for Standardization (ISO) or its national member organizations.
+The the final draft (FDIS) can be downloaded free of charge from
+@url{http://www.nag.co.uk/@/sc22wg5/@/links.html}.  Fortran is developed by the
+Working Group 5 of Sub-Committee 22 of the Joint Technical Committee 1 of the
+International Organization for Standardization and the International
+Electrotechnical Commission (IEC).  This group is known as
+@uref{http://www.nag.co.uk/sc22wg5/, WG5}.
 
-The @uref{http://gcc.gnu.org/wiki/Fortran2008Status, wiki} has some information
-about the current Fortran 2008 implementation status.
+The GNU Fortran supports several of the new features of Fortran 2008; the
+@uref{http://gcc.gnu.org/wiki/Fortran2008Status, wiki} has some information
+about the current Fortran 2008 implementation status.  In particular, the
+following is implemented.
 
+@itemize
+@item The @option{-std=f2008} option and support for the file extensions 
+@file{.f08} and @file{.F08}.
 
+@item The @code{OPEN} statement now supports the @code{NEWUNIT=} option,
+which returns a unique file unit, thus preventing inadvertent use of the
+same unit in different parts of the program.
+
+@item The @code{g0} format descriptor and unlimited format items.
+
+@item The mathematical intrinsics @code{ASINH}, @code{ACOSH}, @code{ATANH},
+@code{ERF}, @code{ERFC}, @code{GAMMA}, @code{LOG_GAMMA}, @code{BESSEL_J0},
+@code{BESSEL_J1}, @code{BESSEL_JN}, @code{BESSEL_Y0}, @code{BESSEL_Y1},
+@code{BESSEL_YN}, @code{HYPOT}, @code{NORM2}, and @code{ERFC_SCALED}.
+
+@item Using complex arguments with @code{TAN}, @code{SINH}, @code{COSH},
+@code{TANH}, @code{ASIN}, @code{ACOS}, and @code{ATAN} is now possible;
+@code{ATAN}(@var{Y},@var{X}) is now an alias for @code{ATAN2}(@var{Y},@var{X}).
+
+@item Support of the @code{PARITY} intrinsic functions.
+
+@item The following bit intrinsics: @code{LEADZ} and @code{TRAILZ} for
+counting the number of leading and trailing zero bits, @code{POPCNT} and
+@code{POPPAR} for counting the number of one bits and returning the parity;
+@code{BGE}, @code{BGT}, @code{BLE}, and @code{BLT} for bitwise comparisons;
+@code{DSHIFTL} and @code{DSHIFTR} for combined left and right shifts,
+@code{MASKL} and @code{MASKR} for simple left and right justified masks,
+@code{MERGE_BITS} for a bitwise merge using a mask, @code{SHIFTA},
+@code{SHIFTL} and @code{SHIFTR} for shift operations, and the
+transformational bit intrinsics @code{IALL}, @code{IANY} and @code{IPARITY}.
+
+@item Support of the @code{EXECUTE_COMMAND_LINE} intrinsic subroutine.
+
+@item Support for the @code{STORAGE_SIZE} intrinsic inquiry function.
+
+@item The @code{INT@{8,16,32@}} and @code{REAL@{32,64,128@}} kind type
+parameters of the intrinsic module @code{ISO_FORTRAN_ENV}.
+
+@item Experimental coarray support (for one image only), use the
+@option{-fcoarray=single} flag to enable it.
+
+@item The @code{BLOCK} construct is supported.
+
+@item The @code{STOP} and the new @code{ERROR STOP} statements now
+support all constant expressions.
+
+@item Support for the @code{CONTIGUOUS} attribute.
+
+@item Support for @code{ALLOCATE} with @code{MOLD}.
+
+@item Support for the @code{IMPURE} attribute for procedures, which
+allows for @code{ELEMENTAL} procedures without the restrictions of
+@code{PURE}.
+
+@item Null pointers (including @code{NULL()}) and not-allocated variables
+can be used as actual argument to optional non-pointer, non-allocatable
+dummy arguments, denoting an absent argument.
+
+@item Non-pointer variables with @code{TARGET} attribute can be used as
+actual argument to @code{POINTER} dummies with @code{INTENT(IN)}.
+
+@item Pointers including procedure pointers and those in a derived
+type (pointer components) can now be initialized by a target instead
+of only by @code{NULL}.
+
+@item The @code{EXIT} statement (with construct-name) can be now be
+used to leave not only the @code{DO} but also the @code{ASSOCIATE},
+@code{BLOCK}, @code{IF}, @code{SELECT CASE} and @code{SELECT TYPE}
+constructs.
+
+@item Internal procedures can now be used as actual argument.
+
+@item Minor features: obsolesce diagnostics for @code{ENTRY} with
+@option{-std=f2008}; a line may start with a semicolon; for internal
+and module procedures @code{END} can be used instead of
+@code{END SUBROUTINE} and @code{END FUNCTION}; @code{SELECTED_REAL_KIND}
+now also takes a @code{RADIX} argument; intrinsic types are supported
+for @code{TYPE}(@var{intrinsic-type-spec}); multiple type-bound procedures
+can be declared in a single @code{PROCEDURE} statement; implied-shape
+arrays are supported for named constants (@code{PARAMETER}).
+@end itemize
+
+
+
 @c ---------------------------------------------------------------------
 @c Compiler Characteristics
 @c ---------------------------------------------------------------------
@@ -1025,7 +1098,7 @@ 
 A @code{LOGICAL(KIND=N)} variable is represented as an
 @code{INTEGER(KIND=N)} variable, however, with only two permissible
 values: @code{1} for @code{.TRUE.} and @code{0} for
-@code{.FALSE.}. Any other integer value results in undefined behavior.
+@code{.FALSE.}.  Any other integer value results in undefined behavior.
 
 Note that for mixed-language programming using the
 @code{ISO_C_BINDING} feature, there is a @code{C_BOOL} kind that can
@@ -1067,7 +1140,7 @@ 
 @cindex extensions, implemented
 
 GNU Fortran implements a number of extensions over standard
-Fortran. This chapter contains information on their syntax and
+Fortran.  This chapter contains information on their syntax and
 meaning.  There are currently two categories of GNU Fortran
 extensions, those that provide functionality beyond that provided
 by any standard, and those that are supported by GNU Fortran
@@ -1101,7 +1174,7 @@ 
 @subsection Old-style kind specifications
 @cindex kind, old-style
 
-GNU Fortran allows old-style kind specifications in declarations. These
+GNU Fortran allows old-style kind specifications in declarations.  These
 look like:
 @smallexample
       TYPESPEC*size x,y,z
@@ -1182,7 +1255,7 @@ 
 It should be noted that the default terminator is @samp{/} rather than
 @samp{&END}.
 
-Querying of the namelist when inputting from stdin. After at least
+Querying of the namelist when inputting from stdin.  After at least
 one space, entering @samp{?} sends to stdout the namelist name and the names of
 the variables in the namelist:
 @smallexample
@@ -1282,15 +1355,15 @@ 
 @cindex BOZ literal constants
 
 Besides decimal constants, Fortran also supports binary (@code{b}),
-octal (@code{o}) and hexadecimal (@code{z}) integer constants. The
+octal (@code{o}) and hexadecimal (@code{z}) integer constants.  The
 syntax is: @samp{prefix quote digits quote}, were the prefix is
 either @code{b}, @code{o} or @code{z}, quote is either @code{'} or
 @code{"} and the digits are for binary @code{0} or @code{1}, for
 octal between @code{0} and @code{7}, and for hexadecimal between
-@code{0} and @code{F}. (Example: @code{b'01011101'}.)
+@code{0} and @code{F}.  (Example: @code{b'01011101'}.)
 
 Up to Fortran 95, BOZ literals were only allowed to initialize
-integer variables in DATA statements. Since Fortran 2003 BOZ literals
+integer variables in DATA statements.  Since Fortran 2003 BOZ literals
 are also allowed as argument of @code{REAL}, @code{DBLE}, @code{INT}
 and @code{CMPLX}; the result is the same as if the integer BOZ
 literal had been converted by @code{TRANSFER} to, respectively,
@@ -1300,7 +1373,7 @@ 
 
 As an extension, GNU Fortran allows hexadecimal BOZ literal constants to
 be specified using the @code{X} prefix, in addition to the standard
-@code{Z} prefix. The BOZ literal can also be specified by adding a
+@code{Z} prefix.  The BOZ literal can also be specified by adding a
 suffix to the string, for example, @code{Z'ABC'} and @code{'ABC'Z} are
 equivalent.
 
@@ -1310,7 +1383,7 @@ 
 only contains a BOZ literal constant, and for old-style initializers of
 the form @code{integer i /o'0173'/}, the constant is transferred
 as if @code{TRANSFER} had been used; for @code{COMPLEX} numbers, only
-the real part is initialized unless @code{CMPLX} is used. In all other
+the real part is initialized unless @code{CMPLX} is used.  In all other
 cases, the BOZ literal constant is converted to an @code{INTEGER} value with
 the largest decimal representation.  This value is then converted
 numerically to the type and kind of the variable in question.
@@ -1494,10 +1567,10 @@ 
         ipt = loc(target)
 @end smallexample
 As long as @code{ipt} remains unchanged, @code{iarr} is now an alias for
-@code{target}. The optimizer, however, will not detect this aliasing, so
+@code{target}.  The optimizer, however, will not detect this aliasing, so
 it is unsafe to use @code{iarr} and @code{target} simultaneously.  Using
 a pointee in any way that violates the Fortran aliasing rules or
-assumptions is illegal. It is the user's responsibility to avoid doing
+assumptions is illegal.  It is the user's responsibility to avoid doing
 this; the compiler works under the assumption that no such aliasing
 occurs.
 
@@ -1513,10 +1586,10 @@ 
 There are a number of restrictions on the attributes that can be applied
 to Cray pointers and pointees.  Pointees may not have the
 @code{ALLOCATABLE}, @code{INTENT}, @code{OPTIONAL}, @code{DUMMY},
-@code{TARGET}, @code{INTRINSIC}, or @code{POINTER} attributes. Pointers
+@code{TARGET}, @code{INTRINSIC}, or @code{POINTER} attributes.  Pointers
 may not have the @code{DIMENSION}, @code{POINTER}, @code{TARGET},
 @code{ALLOCATABLE}, @code{EXTERNAL}, or @code{INTRINSIC} attributes, nor
-may they be function results. Pointees may not occur in more than one
+may they be function results.  Pointees may not occur in more than one
 pointer statement.  A pointee cannot be a pointer.  Pointees cannot occur
 in equivalence, common, or data statements.
 
@@ -1610,7 +1683,7 @@ 
 directives in fixed form; the @code{!$} conditional compilation sentinels
 in free form; and the @code{c$}, @code{*$} and @code{!$} sentinels
 in fixed form, @command{gfortran} needs to be invoked with the
-@option{-fopenmp}. This also arranges for automatic linking of the
+@option{-fopenmp}.  This also arranges for automatic linking of the
 GNU OpenMP runtime library @ref{Top,,libgomp,libgomp,GNU OpenMP
 runtime library}.
 
@@ -1636,16 +1709,16 @@ 
 @itemize
 @item
 @option{-fopenmp} implies @option{-frecursive}, i.e., all local arrays
-will be allocated on the stack. When porting existing code to OpenMP,
+will be allocated on the stack.  When porting existing code to OpenMP,
 this may lead to surprising results, especially to segmentation faults
 if the stacksize is limited.
 
 @item
 On glibc-based systems, OpenMP enabled applications cannot be statically
-linked due to limitations of the underlying pthreads-implementation. It
+linked due to limitations of the underlying pthreads-implementation.  It
 might be possible to get a working solution if 
 @command{-Wl,--whole-archive -lpthread -Wl,--no-whole-archive} is added
-to the command line. However, this is not supported by @command{gcc} and
+to the command line.  However, this is not supported by @command{gcc} and
 thus not recommended.
 @end itemize
 
@@ -1660,9 +1733,9 @@ 
 and @code{%LOC} statements, for backward compatibility with g77. 
 It is recommended that these should be used only for code that is 
 accessing facilities outside of GNU Fortran, such as operating system 
-or windowing facilities. It is best to constrain such uses to isolated 
+or windowing facilities.  It is best to constrain such uses to isolated 
 portions of a program--portions that deal specifically and exclusively 
-with low-level, system-dependent facilities. Such portions might well 
+with low-level, system-dependent facilities.  Such portions might well 
 provide a portable interface for use by the program as a whole, but are 
 themselves not portable, and should be thoroughly tested each time they 
 are rebuilt using a new compiler or version of a compiler.
@@ -1731,7 +1804,7 @@ 
 
 Structures are user-defined aggregate data types; this functionality was
 standardized in Fortran 90 with an different syntax, under the name of
-``derived types''. Here is an example of code using the non portable
+``derived types''.  Here is an example of code using the non portable
 structure syntax:
 
 @example
@@ -1809,7 +1882,7 @@ 
 statements.  These statements are best replaced by @code{READ} and
 @code{WRITE} statements involving internal files (@code{CHARACTER}
 variables and arrays), which have been part of the Fortran standard since
-Fortran 77. For example, replace a code fragment like
+Fortran 77.  For example, replace a code fragment like
 
 @smallexample
       INTEGER*1 LINE(80)
@@ -1857,10 +1930,10 @@ 
 @cindex @code{FORMAT}
 
 A variable @code{FORMAT} expression is format statement which includes
-angle brackets enclosing a Fortran expression: @code{FORMAT(I<N>)}. GNU
-Fortran does not support this legacy extension. The effect of variable
+angle brackets enclosing a Fortran expression: @code{FORMAT(I<N>)}.  GNU
+Fortran does not support this legacy extension.  The effect of variable
 format expressions can be reproduced by using the more powerful (and
-standard) combination of internal output and string formats. For example,
+standard) combination of internal output and string formats.  For example,
 replace a code fragment like this:
 
 @smallexample
@@ -1901,8 +1974,8 @@ 
 
 Some Fortran compilers, including @command{g77}, let the user declare
 complex functions with the syntax @code{COMPLEX FUNCTION name*16()}, as
-well as @code{COMPLEX*16 FUNCTION name()}. Both are non-standard, legacy
-extensions. @command{gfortran} accepts the latter form, which is more
+well as @code{COMPLEX*16 FUNCTION name()}.  Both are non-standard, legacy
+extensions.  @command{gfortran} accepts the latter form, which is more
 common, but not the former.
 
 
@@ -1923,7 +1996,7 @@ 
 @end menu
 
 This chapter is about mixed-language interoperability, but also applies
-if one links Fortran code compiled by different compilers. In most cases,
+if one links Fortran code compiled by different compilers.  In most cases,
 use of the C Binding features of the Fortran 2003 standard is sufficient,
 and their use is highly recommended.
 
@@ -1943,18 +2016,18 @@ 
 Since Fortran 2003 (ISO/IEC 1539-1:2004(E)) there is a
 standardized way to generate procedure and derived-type
 declarations and global variables which are interoperable with C
-(ISO/IEC 9899:1999). The @code{bind(C)} attribute has been added
+(ISO/IEC 9899:1999).  The @code{bind(C)} attribute has been added
 to inform the compiler that a symbol shall be interoperable with C;
-also, some constraints are added. Note, however, that not
-all C features have a Fortran equivalent or vice versa. For instance,
+also, some constraints are added.  Note, however, that not
+all C features have a Fortran equivalent or vice versa.  For instance,
 neither C's unsigned integers nor C's functions with variable number
 of arguments have an equivalent in Fortran.
 
 Note that array dimensions are reversely ordered in C and that arrays in
 C always start with index 0 while in Fortran they start by default with
-1. Thus, an array declaration @code{A(n,m)} in Fortran matches
+1.  Thus, an array declaration @code{A(n,m)} in Fortran matches
 @code{A[m][n]} in C and accessing the element @code{A(i,j)} matches
-@code{A[j-1][i-1]}. The element following @code{A(i,j)} (C: @code{A[j-1][i-1]};
+@code{A[j-1][i-1]}.  The element following @code{A(i,j)} (C: @code{A[j-1][i-1]};
 assuming @math{i < n}) in memory is @code{A(i+1,j)} (C: @code{A[j-1][i]}).
 
 @node Intrinsic Types
@@ -1962,15 +2035,15 @@ 
 
 In order to ensure that exactly the same variable type and kind is used
 in C and Fortran, the named constants shall be used which are defined in the
-@code{ISO_C_BINDING} intrinsic module. That module contains named constants
+@code{ISO_C_BINDING} intrinsic module.  That module contains named constants
 for kind parameters and character named constants for the escape sequences
-in C. For a list of the constants, see @ref{ISO_C_BINDING}.
+in C.  For a list of the constants, see @ref{ISO_C_BINDING}.
 
 @node Derived Types and struct
 @subsection Derived Types and struct
 
 For compatibility of derived types with @code{struct}, one needs to use
-the @code{BIND(C)} attribute in the type declaration. For instance, the
+the @code{BIND(C)} attribute in the type declaration.  For instance, the
 following type declaration
 
 @smallexample
@@ -1999,8 +2072,8 @@ 
 
 Derived types with the C binding attribute shall not have the @code{sequence}
 attribute, type parameters, the @code{extends} attribute, nor type-bound
-procedures. Every component must be of interoperable type and kind and may not
-have the @code{pointer} or @code{allocatable} attribute. The names of the
+procedures.  Every component must be of interoperable type and kind and may not
+have the @code{pointer} or @code{allocatable} attribute.  The names of the
 variables are irrelevant for interoperability.
 
 As there exist no direct Fortran equivalents, neither unions nor structs
@@ -2010,7 +2083,7 @@ 
 @subsection Interoperable Global Variables
 
 Variables can be made accessible from C using the C binding attribute,
-optionally together with specifying a binding name. Those variables
+optionally together with specifying a binding name.  Those variables
 have to be declared in the declaration part of a @code{MODULE},
 be of interoperable type, and have neither the @code{pointer} nor
 the @code{allocatable} attribute.
@@ -2026,22 +2099,22 @@ 
 
 Here, @code{_MyProject_flags} is the case-sensitive name of the variable
 as seen from C programs while @code{global_flag} is the case-insensitive
-name as seen from Fortran. If no binding name is specified, as for
+name as seen from Fortran.  If no binding name is specified, as for
 @var{tp}, the C binding name is the (lowercase) Fortran binding name.
 If a binding name is specified, only a single variable may be after the
-double colon. Note of warning: You cannot use a global variable to
+double colon.  Note of warning: You cannot use a global variable to
 access @var{errno} of the C library as the C standard allows it to be
-a macro. Use the @code{IERRNO} intrinsic (GNU extension) instead.
+a macro.  Use the @code{IERRNO} intrinsic (GNU extension) instead.
 
 @node Interoperable Subroutines and Functions
 @subsection Interoperable Subroutines and Functions
 
 Subroutines and functions have to have the @code{BIND(C)} attribute to
-be compatible with C. The dummy argument declaration is relatively
-straightforward. However, one needs to be careful because C uses
+be compatible with C.  The dummy argument declaration is relatively
+straightforward.  However, one needs to be careful because C uses
 call-by-value by default while Fortran behaves usually similar to
-call-by-reference. Furthermore, strings and pointers are handled
-differently. Note that only explicit size and assumed-size arrays are
+call-by-reference.  Furthermore, strings and pointers are handled
+differently.  Note that only explicit size and assumed-size arrays are
 supported but not assumed-shape or allocatable arrays.
 
 To pass a variable by value, use the @code{VALUE} attribute.
@@ -2063,10 +2136,10 @@ 
 Note that pointer arguments also frequently need the @code{VALUE} attribute,
 see @ref{Working with Pointers}.
 
-Strings are handled quite differently in C and Fortran. In C a string
+Strings are handled quite differently in C and Fortran.  In C a string
 is a @code{NUL}-terminated array of characters while in Fortran each string
 has a length associated with it and is thus not terminated (by e.g.
-@code{NUL}). For example, if one wants to use the following C function,
+@code{NUL}).  For example, if one wants to use the following C function,
 
 @smallexample
   #include <stdio.h>
@@ -2090,13 +2163,13 @@ 
 @end smallexample
 
 As the example shows, one needs to ensure that the
-string is @code{NUL} terminated. Additionally, the dummy argument
+string is @code{NUL} terminated.  Additionally, the dummy argument
 @var{string} of @code{print_C} is a length-one assumed-size
-array; using @code{character(len=*)} is not allowed. The example
+array; using @code{character(len=*)} is not allowed.  The example
 above uses @code{c_char_"Hello World"} to ensure the string
 literal has the right type; typically the default character
 kind and @code{c_char} are the same and thus @code{"Hello World"}
-is equivalent. However, the standard does not guarantee this.
+is equivalent.  However, the standard does not guarantee this.
 
 The use of strings is now further illustrated using the C library
 function @code{strncpy}, whose prototype is
@@ -2106,7 +2179,7 @@ 
 @end smallexample
 
 The function @code{strncpy} copies at most @var{n} characters from
-string @var{s2} to @var{s1} and returns @var{s1}. In the following
+string @var{s2} to @var{s1} and returns @var{s1}.  In the following
 example, we ignore the return value:
 
 @smallexample
@@ -2136,7 +2209,7 @@ 
 @subsection Working with Pointers
 
 C pointers are represented in Fortran via the special opaque derived type
-@code{type(c_ptr)} (with private components). Thus one needs to
+@code{type(c_ptr)} (with private components).  Thus one needs to
 use intrinsic conversion procedures to convert from or to C pointers.
 For example,
 
@@ -2284,16 +2357,16 @@ 
 @subsection Further Interoperability of Fortran with C
 
 Assumed-shape and allocatable arrays are passed using an array descriptor
-(dope vector). The internal structure of the array descriptor used
-by GNU Fortran is not yet documented and will change. There will also be
+(dope vector).  The internal structure of the array descriptor used
+by GNU Fortran is not yet documented and will change.  There will also be
 a Technical Report (TR 29113) which standardizes an interoperable
-array descriptor. Until then, you can use the Chasm Language
+array descriptor.  Until then, you can use the Chasm Language
 Interoperability Tools, @url{http://chasm-interop.sourceforge.net/},
 which provide an interface to GNU Fortran's array descriptor.
 
 The technical report 29113 will presumably also include support for
 C-interoperable @code{OPTIONAL} and for assumed-rank and assumed-type
-dummy arguments. However, the TR has neither been approved nor implemented
+dummy arguments.  However, the TR has neither been approved nor implemented
 in GNU Fortran; therefore, these features are not yet available.
 
 
@@ -2302,10 +2375,10 @@ 
 @section GNU Fortran Compiler Directives
 
 The Fortran standard standard describes how a conforming program shall
-behave; however, the exact implementation is not standardized. In order
+behave; however, the exact implementation is not standardized.  In order
 to allow the user to choose specific implementation details, compiler
 directives can be used to set attributes of variables and procedures
-which are not part of the standard. Whether a given attribute is
+which are not part of the standard.  Whether a given attribute is
 supported and its exact effects depend on both the operating system and
 on the processor; see
 @ref{Top,,C Extensions,gcc,Using the GNU Compiler Collection (GCC)}
@@ -2323,13 +2396,13 @@ 
 
 Besides changing the calling convention, the attributes also influence
 the decoration of the symbol name, e.g., by a leading underscore or by
-a trailing at-sign followed by the number of bytes on the stack. When
+a trailing at-sign followed by the number of bytes on the stack.  When
 assigning a procedure to a procedure pointer, both should use the same
 calling convention.
 
 On some systems, procedures and global variables (module variables and
 @code{COMMON} blocks) need special handling to be accessible when they
-are in a shared library. The following attributes are available:
+are in a shared library.  The following attributes are available:
 
 @itemize
 @item @code{DLLEXPORT} -- provide a global pointer to a pointer in the DLL
@@ -2364,14 +2437,14 @@ 
 
 Even if you are doing mixed-language programming, it is very
 likely that you do not need to know or use the information in this
-section. Since it is about the internal structure of GNU Fortran,
+section.  Since it is about the internal structure of GNU Fortran,
 it may also change in GCC minor releases.
 
 When you compile a @code{PROGRAM} with GNU Fortran, a function
 with the name @code{main} (in the symbol table of the object file)
 is generated, which initializes the libgfortran library and then
 calls the actual program which uses the name @code{MAIN__}, for
-historic reasons. If you link GNU Fortran compiled procedures
+historic reasons.  If you link GNU Fortran compiled procedures
 to, e.g., a C or C++ program or to a Fortran program compiled by
 a different compiler, the libgfortran library is not initialized
 and thus a few intrinsic procedures do not work properly, e.g.
@@ -2380,16 +2453,16 @@ 
 Therefore, if your @code{PROGRAM} is not compiled with
 GNU Fortran and the GNU Fortran compiled procedures require
 intrinsics relying on the library initialization, you need to
-initialize the library yourself. Using the default options,
+initialize the library yourself.  Using the default options,
 gfortran calls @code{_gfortran_set_args} and
-@code{_gfortran_set_options}. The initialization of the former
+@code{_gfortran_set_options}.  The initialization of the former
 is needed if the called procedures access the command line
 (and for backtracing); the latter sets some flags based on the
-standard chosen or to enable backtracing. In typical programs,
+standard chosen or to enable backtracing.  In typical programs,
 it is not necessary to call any initialization function.
 
 If your @code{PROGRAM} is compiled with GNU Fortran, you shall
-not call any of the following functions. The libgfortran
+not call any of the following functions.  The libgfortran
 initialization functions are shown in C syntax but using C
 bindings they are also accessible from Fortran.
 
@@ -2403,7 +2476,7 @@ 
 @item @emph{Description}:
 @code{_gfortran_set_args} saves the command-line arguments; this
 initialization is required if any of the command-line intrinsics
-is called. Additionally, it shall be called if backtracing is
+is called.  Additionally, it shall be called if backtracing is
 enabled (see @code{_gfortran_set_options}).
 
 @item @emph{Syntax}:
@@ -2437,10 +2510,10 @@ 
 @item @emph{Description}:
 @code{_gfortran_set_options} sets several flags related to the Fortran
 standard to be used, whether backtracing or core dumps should be enabled
-and whether range checks should be performed. The syntax allows for
+and whether range checks should be performed.  The syntax allows for
 upward compatibility since the number of passed flags is specified; for
-non-passed flags, the default value is used. See also
-@pxref{Code Gen Options}. Please note that not all flags are actually
+non-passed flags, the default value is used.  See also
+@pxref{Code Gen Options}.  Please note that not all flags are actually
 used.
 
 @item @emph{Syntax}:
@@ -2464,23 +2537,23 @@ 
 | GFC_STD_F95_DEL | GFC_STD_F95 | GFC_STD_F2003 | GFC_STD_F2008
 | GFC_STD_F2008_OBS | GFC_STD_F77 | GFC_STD_GNU | GFC_STD_LEGACY}.
 @item @var{option}[1] @tab Standard-warning flag; prints a warning to
-standard error. Default: @code{GFC_STD_F95_DEL | GFC_STD_LEGACY}.
+standard error.  Default: @code{GFC_STD_F95_DEL | GFC_STD_LEGACY}.
 @item @var{option}[2] @tab If non zero, enable pedantic checking.
 Default: off.
 @item @var{option}[3] @tab If non zero, enable core dumps on run-time
-errors. Default: off.
+errors.  Default: off.
 @item @var{option}[4] @tab If non zero, enable backtracing on run-time
-errors. Default: off.
+errors.  Default: off.
 Note: Installs a signal handler and requires command-line
 initialization using @code{_gfortran_set_args}.
 @item @var{option}[5] @tab If non zero, supports signed zeros.
 Default: enabled.
-@item @var{option}[6] @tab Enables run-time checking. Possible values
+@item @var{option}[6] @tab Enables run-time checking.  Possible values
 are (bitwise or-ed): GFC_RTCHECK_BOUNDS (1), GFC_RTCHECK_ARRAY_TEMPS (2),
 GFC_RTCHECK_RECURSION (4), GFC_RTCHECK_DO (16), GFC_RTCHECK_POINTER (32).
 Default: disabled.
 @item @var{option}[7] @tab If non zero, range checking is enabled.
-Default: enabled. See -frange-check (@pxref{Code Gen Options}).
+Default: enabled.  See -frange-check (@pxref{Code Gen Options}).
 @end multitable
 
 @item @emph{Example}:
@@ -2541,7 +2614,7 @@ 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .70
 @item @var{val} @tab Length of the record marker; valid values
-are 4 and 8. Default is 4.
+are 4 and 8.  Default is 4.
 @end multitable
 
 @item @emph{Example}:
@@ -2565,7 +2638,7 @@ 
 @table @asis
 @item @emph{Description}:
 @code{_gfortran_set_fpe} sets the IEEE exceptions for which a
-Floating Point Exception (FPE) should be raised. On most systems,
+Floating Point Exception (FPE) should be raised.  On most systems,
 this will result in a SIGFPE signal being sent and the program
 being interrupted.
 
@@ -2574,7 +2647,7 @@ 
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .70
-@item @var{option}[0] @tab IEEE exceptions. Possible values are
+@item @var{option}[0] @tab IEEE exceptions.  Possible values are
 (bitwise or-ed) zero (0, default) no trapping,
 @code{GFC_FPE_INVALID} (1), @code{GFC_FPE_DENORMAL} (2),
 @code{GFC_FPE_ZERO} (4), @code{GFC_FPE_OVERFLOW} (8),
@@ -2603,7 +2676,7 @@ 
 @table @asis
 @item @emph{Description}:
 @code{_gfortran_set_max_subrecord_length} set the maximum length
-for a subrecord. This option only makes sense for testing and
+for a subrecord.  This option only makes sense for testing and
 debugging of unformatted I/O.
 
 @item @emph{Syntax}:
@@ -2755,8 +2828,8 @@ 
 @item Bug hunting/squishing
 Find bugs and write more test cases! Test cases are especially very
 welcome, because it allows us to concentrate on fixing bugs instead of
-isolating them. Going through the bugzilla database at
-@url{http://gcc.gnu.org/bugzilla/} to reduce testcases posted there and
+isolating them.  Going through the bugzilla database at
+@url{http://gcc.gnu.org/@/bugzilla/} to reduce testcases posted there and
 add more information (for example, for which version does the testcase
 work, for which versions does it fail?) is also very helpful.
 
@@ -2876,7 +2949,7 @@ 
 @node Option Index
 @unnumbered Option Index
 @command{gfortran}'s command line options are indexed here without any
-initial @samp{-} or @samp{--}. Where an option has both positive and
+initial @samp{-} or @samp{--}.  Where an option has both positive and
 negative forms (such as -foption and -fno-option), relevant entries in
 the manual are indexed under the most appropriate form; it may sometimes
 be useful to look up both forms.