1*ec02198aSmrg@c Copyright (C) 1988-2020 Free Software Foundation, Inc.
210d565efSmrg@c This is part of the GCC manual.
310d565efSmrg@c For copying conditions, see the file gcc.texi.
410d565efSmrg
510d565efSmrg@node G++ and GCC
610d565efSmrg@chapter Programming Languages Supported by GCC
710d565efSmrg
810d565efSmrg@cindex GCC
910d565efSmrg@cindex GNU Compiler Collection
1010d565efSmrg@cindex GNU C Compiler
1110d565efSmrg@cindex Ada
120fc04c29Smrg@cindex D
1310d565efSmrg@cindex Fortran
1410d565efSmrg@cindex Go
1510d565efSmrg@cindex Objective-C
1610d565efSmrg@cindex Objective-C++
1710d565efSmrgGCC stands for ``GNU Compiler Collection''.  GCC is an integrated
1810d565efSmrgdistribution of compilers for several major programming languages.  These
1910d565efSmrglanguages currently include C, C++, Objective-C, Objective-C++,
200fc04c29SmrgFortran, Ada, D, Go, and BRIG (HSAIL).
2110d565efSmrg
2210d565efSmrgThe abbreviation @dfn{GCC} has multiple meanings in common use.  The
2310d565efSmrgcurrent official meaning is ``GNU Compiler Collection'', which refers
2410d565efSmrggenerically to the complete suite of tools.  The name historically stood
2510d565efSmrgfor ``GNU C Compiler'', and this usage is still common when the emphasis
2610d565efSmrgis on compiling C programs.  Finally, the name is also used when speaking
2710d565efSmrgof the @dfn{language-independent} component of GCC: code shared among the
2810d565efSmrgcompilers for all supported languages.
2910d565efSmrg
3010d565efSmrgThe language-independent component of GCC includes the majority of the
3110d565efSmrgoptimizers, as well as the ``back ends'' that generate machine code for
3210d565efSmrgvarious processors.
3310d565efSmrg
3410d565efSmrg@cindex COBOL
3510d565efSmrg@cindex Mercury
3610d565efSmrgThe part of a compiler that is specific to a particular language is
3710d565efSmrgcalled the ``front end''.  In addition to the front ends that are
3810d565efSmrgintegrated components of GCC, there are several other front ends that
390fc04c29Smrgare maintained separately.  These support languages such as
4010d565efSmrgMercury, and COBOL@.  To use these, they must be built together with
4110d565efSmrgGCC proper.
4210d565efSmrg
4310d565efSmrg@cindex C++
4410d565efSmrg@cindex G++
4510d565efSmrg@cindex Ada
4610d565efSmrg@cindex GNAT
4710d565efSmrgMost of the compilers for languages other than C have their own names.
4810d565efSmrgThe C++ compiler is G++, the Ada compiler is GNAT, and so on.  When we
4910d565efSmrgtalk about compiling one of those languages, we might refer to that
5010d565efSmrgcompiler by its own name, or as GCC@.  Either is correct.
5110d565efSmrg
5210d565efSmrg@cindex compiler compared to C++ preprocessor
5310d565efSmrg@cindex intermediate C version, nonexistent
5410d565efSmrg@cindex C intermediate output, nonexistent
5510d565efSmrgHistorically, compilers for many languages, including C++ and Fortran,
5610d565efSmrghave been implemented as ``preprocessors'' which emit another high
5710d565efSmrglevel language such as C@.  None of the compilers included in GCC are
5810d565efSmrgimplemented this way; they all generate machine code directly.  This
5910d565efSmrgsort of preprocessor should not be confused with the @dfn{C
6010d565efSmrgpreprocessor}, which is an integral feature of the C, C++, Objective-C
6110d565efSmrgand Objective-C++ languages.
62