xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/doc/frontends.texi (revision 8ecbf5f02b752fcb7debe1a8fab1dc82602bc760)
1@c Copyright (C) 1988-2018 Free Software Foundation, Inc.
2@c This is part of the GCC manual.
3@c For copying conditions, see the file gcc.texi.
4
5@node G++ and GCC
6@chapter Programming Languages Supported by GCC
7
8@cindex GCC
9@cindex GNU Compiler Collection
10@cindex GNU C Compiler
11@cindex Ada
12@cindex Fortran
13@cindex Go
14@cindex Objective-C
15@cindex Objective-C++
16GCC stands for ``GNU Compiler Collection''.  GCC is an integrated
17distribution of compilers for several major programming languages.  These
18languages currently include C, C++, Objective-C, Objective-C++,
19Fortran, Ada, Go, and BRIG (HSAIL).
20
21The abbreviation @dfn{GCC} has multiple meanings in common use.  The
22current official meaning is ``GNU Compiler Collection'', which refers
23generically to the complete suite of tools.  The name historically stood
24for ``GNU C Compiler'', and this usage is still common when the emphasis
25is on compiling C programs.  Finally, the name is also used when speaking
26of the @dfn{language-independent} component of GCC: code shared among the
27compilers for all supported languages.
28
29The language-independent component of GCC includes the majority of the
30optimizers, as well as the ``back ends'' that generate machine code for
31various processors.
32
33@cindex COBOL
34@cindex Mercury
35@cindex Pascal
36The part of a compiler that is specific to a particular language is
37called the ``front end''.  In addition to the front ends that are
38integrated components of GCC, there are several other front ends that
39are maintained separately.  These support languages such as Pascal,
40Mercury, and COBOL@.  To use these, they must be built together with
41GCC proper.
42
43@cindex C++
44@cindex G++
45@cindex Ada
46@cindex GNAT
47Most of the compilers for languages other than C have their own names.
48The C++ compiler is G++, the Ada compiler is GNAT, and so on.  When we
49talk about compiling one of those languages, we might refer to that
50compiler by its own name, or as GCC@.  Either is correct.
51
52@cindex compiler compared to C++ preprocessor
53@cindex intermediate C version, nonexistent
54@cindex C intermediate output, nonexistent
55Historically, compilers for many languages, including C++ and Fortran,
56have been implemented as ``preprocessors'' which emit another high
57level language such as C@.  None of the compilers included in GCC are
58implemented this way; they all generate machine code directly.  This
59sort of preprocessor should not be confused with the @dfn{C
60preprocessor}, which is an integral feature of the C, C++, Objective-C
61and Objective-C++ languages.
62