1*8feb0f0bSmrg@c Copyright (C) 1988-2020 Free Software Foundation, Inc. 21debfc3dSmrg@c This is part of the GCC manual. 31debfc3dSmrg@c For copying conditions, see the file gcc.texi. 41debfc3dSmrg 51debfc3dSmrg@node G++ and GCC 61debfc3dSmrg@chapter Programming Languages Supported by GCC 71debfc3dSmrg 81debfc3dSmrg@cindex GCC 91debfc3dSmrg@cindex GNU Compiler Collection 101debfc3dSmrg@cindex GNU C Compiler 111debfc3dSmrg@cindex Ada 12c0a68be4Smrg@cindex D 131debfc3dSmrg@cindex Fortran 141debfc3dSmrg@cindex Go 151debfc3dSmrg@cindex Objective-C 161debfc3dSmrg@cindex Objective-C++ 171debfc3dSmrgGCC stands for ``GNU Compiler Collection''. GCC is an integrated 181debfc3dSmrgdistribution of compilers for several major programming languages. These 191debfc3dSmrglanguages currently include C, C++, Objective-C, Objective-C++, 20c0a68be4SmrgFortran, Ada, D, Go, and BRIG (HSAIL). 211debfc3dSmrg 221debfc3dSmrgThe abbreviation @dfn{GCC} has multiple meanings in common use. The 231debfc3dSmrgcurrent official meaning is ``GNU Compiler Collection'', which refers 241debfc3dSmrggenerically to the complete suite of tools. The name historically stood 251debfc3dSmrgfor ``GNU C Compiler'', and this usage is still common when the emphasis 261debfc3dSmrgis on compiling C programs. Finally, the name is also used when speaking 271debfc3dSmrgof the @dfn{language-independent} component of GCC: code shared among the 281debfc3dSmrgcompilers for all supported languages. 291debfc3dSmrg 301debfc3dSmrgThe language-independent component of GCC includes the majority of the 311debfc3dSmrgoptimizers, as well as the ``back ends'' that generate machine code for 321debfc3dSmrgvarious processors. 331debfc3dSmrg 341debfc3dSmrg@cindex COBOL 351debfc3dSmrg@cindex Mercury 361debfc3dSmrgThe part of a compiler that is specific to a particular language is 371debfc3dSmrgcalled the ``front end''. In addition to the front ends that are 381debfc3dSmrgintegrated components of GCC, there are several other front ends that 39c0a68be4Smrgare maintained separately. These support languages such as 401debfc3dSmrgMercury, and COBOL@. To use these, they must be built together with 411debfc3dSmrgGCC proper. 421debfc3dSmrg 431debfc3dSmrg@cindex C++ 441debfc3dSmrg@cindex G++ 451debfc3dSmrg@cindex Ada 461debfc3dSmrg@cindex GNAT 471debfc3dSmrgMost of the compilers for languages other than C have their own names. 481debfc3dSmrgThe C++ compiler is G++, the Ada compiler is GNAT, and so on. When we 491debfc3dSmrgtalk about compiling one of those languages, we might refer to that 501debfc3dSmrgcompiler by its own name, or as GCC@. Either is correct. 511debfc3dSmrg 521debfc3dSmrg@cindex compiler compared to C++ preprocessor 531debfc3dSmrg@cindex intermediate C version, nonexistent 541debfc3dSmrg@cindex C intermediate output, nonexistent 551debfc3dSmrgHistorically, compilers for many languages, including C++ and Fortran, 561debfc3dSmrghave been implemented as ``preprocessors'' which emit another high 571debfc3dSmrglevel language such as C@. None of the compilers included in GCC are 581debfc3dSmrgimplemented this way; they all generate machine code directly. This 591debfc3dSmrgsort of preprocessor should not be confused with the @dfn{C 601debfc3dSmrgpreprocessor}, which is an integral feature of the C, C++, Objective-C 611debfc3dSmrgand Objective-C++ languages. 62