Commit cf822c04 by Brooks Moses Committed by Brooks Moses

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
parent dfb2717d
2006-10-04 Brooks Moses <bmoses@stanford.edu> 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 * gfortran.texi: Consistently refer to the compiler as "GNU
Fortran". Fortran".
* intrinsic.texi: Ditto. * intrinsic.texi: Ditto.
......
...@@ -374,58 +374,49 @@ the GCC homepage in March 18, 2000 ...@@ -374,58 +374,49 @@ the GCC homepage in March 18, 2000
(even though Andy had already been working on it for a while, (even though Andy had already been working on it for a while,
of course). 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 @menu
* Compiler Status:: * Compiler and Library Status::
* Library Status::
* Proposed Extensions:: * Proposed Extensions::
@end menu @end menu
@node Compiler Status @node Compiler and Library Status
@section Compiler Status @section Compiler and Library Status
@table @emph The GNU Fortran compiler is able to compile nearly all
@item Front end standard-compliant Fortran 95, Fortran 90, and Fortran 77 programs,
This is the part of the GNU Fortran compiler which parses a source file, verifies that it including a number of standard and non-standard extensions, and can be
is valid Fortran, performs compile time replacement of constants used on real-world programs. In particular, the supported extensions
(PARAMETER variables) and reads and generate module files. This is include OpenMP, Cray-style pointers, and several Fortran 2003 features
almost complete. Every Fortran 95 source should be accepted, and most such as enumeration, stream I/O, and some of the enhancements to
none-Fortran 95 source should be rejected. If you find a source file where allocatable array support from TR 15581. However, it is still under
this is not true, please tell us. You can use the -fsyntax-only switch to development and has a few remaining rough edges.
make @command{gfortran} quit after running the front end, effectively reducing it to
a syntax checker. At present, the GNU Fortran compiler passes the
@uref{http://www.fortran-2000.com/ArnaudRecipes/fcvs21_f95.html,
@item Middle end interface NIST Fortran 77 Test Suite}, and produces acceptable results on the
These are the parts of GNU Fortran that take the parse tree generated by the @uref{http://www.netlib.org/lapack/faq.html#1.21, LAPACK Test Suite}.
front end and translate it to the GENERIC form required by the GCC back It also provides respectable performance on
end. Work is ongoing in these parts of GNU Fortran, but a large part has the @uref{http://www.polyhedron.com/pb05.html, Polyhedron Fortran
already been completed. compiler benchmarks} and the
@end table @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
@node Library Status large real-world programs, including
@section Library Status @uref{http://mysite.verizon.net/serveall/moene.pdf, the HIRLAM
weather-forecasting code} and
Some intrinsic functions map directly to library functions, and in most @uref{http://www.theochem.uwa.edu.au/tonto/, the Tonto quantum
cases the name of the library function used depends on the type of the chemistry package}.
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 Among other things, the GNU Fortran compiler is intended as a replacement
instructions in the floating point unit of the CPU if available, or to for G77. At this point, nearly all programs that could be compiled with
fall back to a call to libm if these are not available. G77 can be compiled with GNU Fortran, although there are a few minor known
regressions.
Implementation of some non-elemental intrinsic functions (eg. DOT_PRODUCT,
AVERAGE) is not yet optimal. This is hard because we have to make decisions The primary work remaining to be done on GNU Fortran falls into three
whether to use inline code (good for small arrays as no function call categories: bug fixing (primarily regarding the treatment of invalid code
overhead occurs) or generate function calls (good for large arrays as it and providing useful error messages), improving the compiler optimizations
allows use of hand-optimized assembly routines, SIMD instructions, etc.) and the performance of compiled code, and extending the compiler to support
future standards -- in particular, Fortran 2003.
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 @node Proposed Extensions
@section Proposed Extensions @section Proposed Extensions
...@@ -438,10 +429,8 @@ J3 Fortran 95 standard. ...@@ -438,10 +429,8 @@ J3 Fortran 95 standard.
@subsection Compiler extensions: @subsection Compiler extensions:
@itemize @bullet @itemize @bullet
@item @item
Flag for defining the kind number for default logicals.
@item
User-specified alignment rules for structures. User-specified alignment rules for structures.
@item @item
Flag to generate @code{Makefile} info. Flag to generate @code{Makefile} info.
...@@ -453,10 +442,6 @@ Compile code that conserves memory by dynamically allocating common and ...@@ -453,10 +442,6 @@ Compile code that conserves memory by dynamically allocating common and
module storage either on stack or heap. module storage either on stack or heap.
@item @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). Compile flag to generate code for array conformance checking (suggest -CC).
@item @item
...@@ -473,30 +458,11 @@ Flag to force local variables into static space. ...@@ -473,30 +458,11 @@ Flag to force local variables into static space.
Flag to force local variables onto stack. Flag to force local variables onto stack.
@item @item
Flag to compile lines beginning with ``D''.
@item
Flag to ignore lines beginning with ``D''.
@item
Flag for maximum errors before ending compile. Flag for maximum errors before ending compile.
@item @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 Option to initialize otherwise uninitialized integer and floating
point variables. 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 @end itemize
...@@ -545,6 +511,11 @@ Environment variable forcing standard output to be line buffered (unix). ...@@ -545,6 +511,11 @@ Environment variable forcing standard output to be line buffered (unix).
@end itemize @end itemize
@c ---------------------------------------------------------------------
@c Runtime
@c ---------------------------------------------------------------------
@node Runtime @node Runtime
@chapter Runtime: Influencing runtime behavior with environment variables @chapter Runtime: Influencing runtime behavior with environment variables
@cindex Runtime @cindex Runtime
......
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