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