xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/doc/frontends.texi (revision 8feb0f0b7eaff0608f8350bbfa3098827b4bb91b)
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