OSDN Git Service

Replace tabs with spaces in .texi files.
[pf3gnuchains/gcc-fork.git] / gcc / doc / frontends.texi
index ffaa9aa..9c2d707 100644 (file)
@@ -1,70 +1,62 @@
 @c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2002, 2004, 2008 Free Software Foundation, Inc.
 @c This is part of the GCC manual.
 @c For copying conditions, see the file gcc.texi.
 
 @node G++ and GCC
-@chapter Compile C, C++, Objective-C, Ada, CHILL, Fortran, or Java
+@chapter Programming Languages Supported by GCC
 
-@cindex Objective-C
+@cindex GCC
+@cindex GNU Compiler Collection
+@cindex GNU C Compiler
+@cindex Ada
 @cindex Fortran
 @cindex Java
-@cindex CHILL
-@cindex Ada
-Several versions of the compiler (C, C++, Objective-C, Ada, CHILL,
-Fortran, and Java) are integrated; this is why we use the name
-``GNU Compiler Collection''.  GCC can compile programs written in any of these
-languages.  The Ada, CHILL, Fortran, and Java compilers are described in
-separate manuals.
-
-@cindex GCC
-``GCC'' is a common shorthand term for the GNU Compiler Collection.  This is both
-the most general name for the compiler, and the name used when the
-emphasis is on compiling C programs (as the abbreviation formerly
-stood for ``GNU C Compiler'').
+@cindex Objective-C
+@cindex Objective-C++
+GCC stands for ``GNU Compiler Collection''.  GCC is an integrated
+distribution of compilers for several major programming languages.  These
+languages currently include C, C++, Objective-C, Objective-C++, Java,
+Fortran, and Ada.
+
+The abbreviation @dfn{GCC} has multiple meanings in common use.  The
+current official meaning is ``GNU Compiler Collection'', which refers
+generically to the complete suite of tools.  The name historically stood
+for ``GNU C Compiler'', and this usage is still common when the emphasis
+is on compiling C programs.  Finally, the name is also used when speaking
+of the @dfn{language-independent} component of GCC: code shared among the
+compilers for all supported languages.
+
+The language-independent component of GCC includes the majority of the
+optimizers, as well as the ``back ends'' that generate machine code for
+various processors.
+
+@cindex COBOL
+@cindex Mercury
+@cindex Pascal
+The part of a compiler that is specific to a particular language is
+called the ``front end''.  In addition to the front ends that are
+integrated components of GCC, there are several other front ends that
+are maintained separately.  These support languages such as Pascal,
+Mercury, and COBOL@.  To use these, they must be built together with
+GCC proper.
 
 @cindex C++
 @cindex G++
-When referring to C++ compilation, it is usual to call the compiler
-``G++''.  Since there is only one compiler, it is also accurate to call
-it ``GCC'' no matter what the language context; however, the term
-``G++'' is more useful when the emphasis is on compiling C++ programs.
-
 @cindex Ada
 @cindex GNAT
-Similarly, when we talk about Ada compilation, we usually call the
-compiler ``GNAT'', for the same reasons.
-
-We use the name ``GCC'' to refer to the compilation system as a
-whole, and more specifically to the language-independent part of the
-compiler.  For example, we refer to the optimization options as
-affecting the behavior of ``GCC'' or sometimes just ``the compiler''.
-
-Front ends for other languages, such as Mercury and Pascal exist but
-have not yet been integrated into GCC@.  These front ends, like that for C++,
-are built in subdirectories of GCC and link to it.  The result is an
-integrated compiler that can compile programs written in C, C++,
-Objective-C, or any of the languages for which you have installed front
-ends.
-
-In this manual, we only discuss the options for the C, Objective-C, and
-C++ compilers and those of the GCC core.  Consult the documentation
-of the other front ends for the options to use when compiling programs
-written in other languages.
+Most of the compilers for languages other than C have their own names.
+The C++ compiler is G++, the Ada compiler is GNAT, and so on.  When we
+talk about compiling one of those languages, we might refer to that
+compiler by its own name, or as GCC@.  Either is correct.
 
 @cindex compiler compared to C++ preprocessor
 @cindex intermediate C version, nonexistent
 @cindex C intermediate output, nonexistent
-G++ is a @emph{compiler}, not merely a preprocessor.  G++ builds object
-code directly from your C++ program source.  There is no intermediate C
-version of the program.  (By contrast, for example, some other
-implementations use a program that generates a C program from your C++
-source.)  Avoiding an intermediate C representation of the program means
-that you get better object code, and better debugging information.  The
-GNU debugger, GDB, works with this information in the object code to
-give you comprehensive C++ source-level editing capabilities
-(@pxref{C,,C and C++,gdb.info, Debugging with GDB}).
-
-@c FIXME!  Someone who knows something about Objective-C ought to put in
-@c a paragraph or two about it here, and move the index entry down when
-@c there is more to point to than the general mention in the 1st par.
+Historically, compilers for many languages, including C++ and Fortran,
+have been implemented as ``preprocessors'' which emit another high
+level language such as C@.  None of the compilers included in GCC are
+implemented this way; they all generate machine code directly.  This
+sort of preprocessor should not be confused with the @dfn{C
+preprocessor}, which is an integral feature of the C, C++, Objective-C
+and Objective-C++ languages.