From: Brooks Moses Date: Thu, 5 Oct 2006 04:58:18 +0000 (+0000) Subject: gfortran.texi: (Current Status): update and rewrite to reflect actual status more... X-Git-Tag: releases/gcc-4.2.0~1129 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cf822c0484ada5e9d939eec9c490303b35a5734a;p=thirdparty%2Fgcc.git gfortran.texi: (Current Status): update and rewrite to reflect actual status more accurately. 2006-10-04 Brooks Moses * gfortran.texi: (Current Status): update and rewrite to reflect actual status more accurately. From-SVN: r117449 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0125132eeaba..73715f940be0 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2006-10-04 Brooks Moses + + * gfortran.texi: (Current Status): update and rewrite to reflect + actual status more accurately. + 2006-10-04 Brooks Moses * gfortran.texi: Consistently refer to the compiler as "GNU diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index c4e76ec49cf8..f48f28ab72a9 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -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 - -@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. - -@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 - -@node Library Status -@section Library Status - -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. - -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.) +@node Compiler and Library Status +@section Compiler and Library Status + +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. + +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}. + +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. + +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. -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