GCC - GNU Compiler Collection
C code ---> GCC's C frontend ---> GCC's internal Register Transfer Language (RTL) ---> GCC's x86 backend ---> x86 machine code.
GCC supports several frontends : C, C++, Java, Objective C, Go, and Fortran.
GCC supports several backends : 32-bit x86, 64-bit x86, little endian ARM, big endian ARM, MIPS, SPARC, PowerPC, etc.
GCC frontend - convert source code to intermediate representation IR
GCC backend - convert IR to machine code
gcc - GNU C Compiler
g++ - GNU C++ Compiler
LLVM
LLVM - is a backend for GCC
- is a compiler and
- a toolkit for building compilers
- is a framework to generate object code from any kind of source code.
Clang - is a front-end for LLVM that processes C-family languages:
C, C++, Objective C, Objective C++. Clang converts C/C++/etc
to LLVM IR, LLVM performs optimizations on the IR, and the LLVM x86 backend writes out x86 machine code for execution.
clang - C Compiler
clang++ - C++ Compiler