GCC is the compiler system of the GNU environment. GNU (a self-referential acronym for 'GNU is Not Unix') is a Unix-compatible operating system, being developed by the Free Software Foundation, and distributed under the GNU Public License (GPL)1.5.
GNU software is always distributed with its sources, and the GPL enjoins anyone who modifies GNU software and then redistributes the modified product to supply the sources for the modifications as well. Thus, enhancements to the original software benefit the software community at large [Sta92].
GCC is today the centerpiece of the GNU software. GCC is a retargetable and rehostable compiler system, with multiple front-ends and a large number of hardware targets. Originally designed as a compiler for C, it now includes front-ends for C++, Modula-3, Fortran, Objective-C, and most recently Ada. Technically, the crucial asset of the GCC is its mostly language-independent, target-independent code generator, which produces excellent quality-code both for CISC machines such as the Intel and Motorola families, as well as RISC machines including the IBM RS/6000, the DEC Alpha and the MIPS R4000. Remarkably, the machine dependences of the code generator represent less than 10 new target to GCC, an algebraic description of each machine instruction must be given using a register-transfer language. Most of the code generation and optimization then uses the RTL, which GCC maps when necessary into the target machine language. The leverage for constructing a front-end for GCC is thus enormous: GNAT potentially has over 30 targets.
Furthermore, GCC produces high-quality code, comparable to that of the best commercial compilers [SGC94, Section 2].