Commit de43c613 by Brooks Moses Committed by Brooks Moses

* gfortran.texi (GNU Fortran and GCC): Rewrite

From-SVN: r120428
parent e6b38f67
2007-01-03 Brooks Moses <brooks.moses@codesourcery.com> 2007-01-03 Brooks Moses <brooks.moses@codesourcery.com>
* gfortran.texi (GNU Fortran and GCC): Rewrite
2007-01-03 Brooks Moses <brooks.moses@codesourcery.com>
* gfortran.texi (Introduction): Lower "Part I: * gfortran.texi (Introduction): Lower "Part I:
Introduction" to a chapter, renumber Parts II and III to Introduction" to a chapter, renumber Parts II and III to
Parts I and II. Parts I and II.
......
...@@ -351,49 +351,35 @@ programs will call it for you. ...@@ -351,49 +351,35 @@ programs will call it for you.
@node GNU Fortran and GCC @node GNU Fortran and GCC
@section GNU Fortran and GCC @section GNU Fortran and GCC
@cindex GNU Compiler Collection @cindex GNU Compiler Collection
@cindex GCC
GCC used to be the GNU ``C'' Compiler,
but is now known as the @dfn{GNU Compiler Collection}. GNU Fortran is a part of GCC, the @dfn{GNU Compiler Collection}. GCC
GCC provides the GNU system with a very versatile consists of a collection of front ends for various languages, which
compiler middle end (shared optimization passes), translate the source code into a language-independent form called
and back ends (code generators) for many different @dfn{GENERIC}. This is then processed by a common middle end which
computer architectures and operating systems. provides optimization, and then passed to one of a collection of back
The code of the middle end and back end are shared by all ends which generate code for different computer architectures and
compiler front ends that are in the GNU Compiler Collection. operating systems.
A GCC front end is essentially a source code parser Functionally, this is implemented with a driver program (@command{gcc})
and an intermediate code generator. The code generator translates the which provides the command-line interface for the compiler. It calls
semantics of the source code into a language independent form called the relevant compiler front-end program (e.g., @command{f951} for
@dfn{GENERIC}. 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
The parser takes a source file written in a GCC which has been compiled with Fortran language support enabled,
particular computer language, reads and parses it, @command{gcc} will recognize files with @file{.f}, @file{.f90}, and
and tries to make sure that the source code conforms to @file{.f95} extensions as Fortran source code, and compile it
the language rules. accordingly. A @command{gfortran} driver program is also provided,
Once the correctness of a program has been established, which is identical to @command{gcc} except that it automatically links
the compiler will build a data structure known as the the Fortran runtime libraries into the compiled program.
@dfn{Abstract Syntax tree},
or just @dfn{AST} or ``tree'' for short. This manual specifically documents the Fortran front end, which handles
This data structure represents the whole program the programming language's syntax and semantics. The aspects of GCC
or a subroutine or a function. which relate to the optimization passes and the back-end code generation
The ``tree'' is passed to the GCC middle end, are documented in the GCC manual; see
which will perform optimization passes on it. The optimized AST is then @ref{Top,,Introduction,gcc,Using the GNU Compiler Collection (GCC)}.
handed off too the back end which assembles the program unit. The two manuals together provide a complete reference for the GNU
Fortran compiler.
Different phases in this translation process can be,
and in fact @emph{are} merged in many compiler front ends.
GNU Fortran has a strict separation between the
parser and code generator.
The goal of the GNU Fortran project is to build a new front end for GCC.
Specifically, a Fortran 95 front end.
In a non-@command{gfortran} installation,
@command{gcc} will not be able to compile Fortran source code
(only the ``C'' front end has to be compiled if you want to build GCC,
all other languages are optional).
If you build GCC with @command{gfortran}, @command{gcc} will recognize
@file{.f/.f90/.f95} source files and accepts Fortran specific
command line options.
@c --------------------------------------------------------------------- @c ---------------------------------------------------------------------
......
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