gfortran.texi: (Current Status): update and rewrite to reflect actual status more accurately.

2006-10-04  Brooks Moses  <bmoses@stanford.edu>

	* gfortran.texi: (Current Status): update and rewrite to reflect
	actual status more accurately.

From-SVN: r117449
This commit is contained in:
Brooks Moses 2006-10-05 04:58:18 +00:00 committed by Brooks Moses
parent dfb2717d35
commit cf822c0484
2 changed files with 45 additions and 69 deletions

View File

@ -1,3 +1,8 @@
2006-10-04 Brooks Moses <bmoses@stanford.edu>
* gfortran.texi: (Current Status): update and rewrite to reflect
actual status more accurately.
2006-10-04 Brooks Moses <bmoses@stanford.edu>
* gfortran.texi: Consistently refer to the compiler as "GNU

View File

@ -374,58 +374,49 @@ the GCC homepage in March 18, 2000
(even though Andy had already been working on it for a while,
of course).
The GNU Fortran compiler is currently reaching the stage where is is able to
compile real
world programs. However it is still under development and has many rough
edges.
@menu
* Compiler Status::
* Library Status::
* Compiler and Library Status::
* Proposed Extensions::
@end menu
@node Compiler Status
@section Compiler Status
@node Compiler and Library Status
@section Compiler and Library Status
@table @emph
@item Front end
This is the part of the GNU Fortran compiler which parses a source file, verifies that it
is valid Fortran, performs compile time replacement of constants
(PARAMETER variables) and reads and generate module files. This is
almost complete. Every Fortran 95 source should be accepted, and most
none-Fortran 95 source should be rejected. If you find a source file where
this is not true, please tell us. You can use the -fsyntax-only switch to
make @command{gfortran} quit after running the front end, effectively reducing it to
a syntax checker.
The GNU Fortran compiler is able to compile nearly all
standard-compliant Fortran 95, Fortran 90, and Fortran 77 programs,
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 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.
@item Middle end interface
These are the parts of GNU Fortran that take the parse tree generated by the
front end and translate it to the GENERIC form required by the GCC back
end. Work is ongoing in these parts of GNU Fortran, but a large part has
already been completed.
@end table
At present, the GNU Fortran compiler passes the
@uref{http://www.fortran-2000.com/ArnaudRecipes/fcvs21_f95.html,
NIST Fortran 77 Test Suite}, and produces acceptable results on the
@uref{http://www.netlib.org/lapack/faq.html#1.21, LAPACK Test Suite}.
It also provides respectable performance on
the @uref{http://www.polyhedron.com/pb05.html, Polyhedron Fortran
compiler benchmarks} and the
@uref{http://www.llnl.gov/asci_benchmarks/asci/limited/lfk/README.html,
Livermore Fortran Kernels test}. It has been used to compile a number of
large real-world programs, including
@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}.
@node Library Status
@section Library Status
Among other things, the GNU Fortran compiler is intended as a replacement
for G77. At this point, nearly all programs that could be compiled with
G77 can be compiled with GNU Fortran, although there are a few minor known
regressions.
Some intrinsic functions map directly to library functions, and in most
cases the name of the library function used depends on the type of the
arguments. For some intrinsics we generate inline code, and for others,
such as sin, cos and sqrt, we rely on the backend to use special
instructions in the floating point unit of the CPU if available, or to
fall back to a call to libm if these are not available.
The primary work remaining to be done on GNU Fortran falls into three
categories: bug fixing (primarily regarding the treatment of invalid code
and providing useful error messages), improving the compiler optimizations
and the performance of compiled code, and extending the compiler to support
future standards -- in particular, Fortran 2003.
Implementation of some non-elemental intrinsic functions (eg. DOT_PRODUCT,
AVERAGE) is not yet optimal. This is hard because we have to make decisions
whether to use inline code (good for small arrays as no function call
overhead occurs) or generate function calls (good for large arrays as it
allows use of hand-optimized assembly routines, SIMD instructions, etc.)
The IO library is in a mostly usable state. Unformatted I/O for
@code{REAL(KIND=10)} variables is currently not recommended.
Array intrinsics mostly work.
@node Proposed Extensions
@section Proposed Extensions
@ -437,11 +428,9 @@ J3 Fortran 95 standard.
@subsection Compiler extensions:
@itemize @bullet
@item
Flag for defining the kind number for default logicals.
@item
User-specified alignment rules for structures.
@item
Flag to generate @code{Makefile} info.
@ -452,10 +441,6 @@ Automatically extend single precision constants to double.
Compile code that conserves memory by dynamically allocating common and
module storage either on stack or heap.
@item
Flag to cause the compiler to distinguish between upper and lower case
names. The Fortran 95 standard does not distinguish them.
@item
Compile flag to generate code for array conformance checking (suggest -CC).
@ -472,31 +457,12 @@ Flag to force local variables into static space.
@item
Flag to force local variables onto stack.
@item
Flag to compile lines beginning with ``D''.
@item
Flag to ignore lines beginning with ``D''.
@item
Flag for maximum errors before ending compile.
@item
Generate code to check for null pointer dereferences -- prints locus of
dereference instead of segfaulting. There was some discussion about this
option in the g95 development mailing list.
@item
Allow setting the default unit number.
@item
Option to initialize otherwise uninitialized integer and floating
point variables.
@item
Support for Fortran 200x. This includes several new features including
floating point exceptions, extended use of allocatable arrays, C
interoperability, Parameterizer data types and function pointers.
@end itemize
@ -545,6 +511,11 @@ Environment variable forcing standard output to be line buffered (unix).
@end itemize
@c ---------------------------------------------------------------------
@c Runtime
@c ---------------------------------------------------------------------
@node Runtime
@chapter Runtime: Influencing runtime behavior with environment variables
@cindex Runtime