Introducing Clang
The Clang project is known as the official LLVM frontend for C, C++, and Objective-C. You can access the Clang official website at http://clang.llvm.org, and we cover Clang configuration, build, and install in Chapter 1, Build and Install LLVM.
Similar to the confusion over the name LLVM owing to its multiple meanings, Clang may also refer to up to three distinct entities:
- The frontend (implemented in Clang libraries).
- The compiler driver (implemented in the
clang
command and the Clang Driver library). - The actual compiler (implemented in the
clang -cc1
command). The compiler inclang -cc1
is not implemented solely with Clang libraries, but also makes extensive use of LLVM libraries to implement the middle- and backends of the compiler, as well as the integrated assembler.
In this chapter, we focus on Clang libraries and the C-family frontend for LLVM.
To understand how the driver and compiler work, we start by analyzing the command line invocation for the clang
compiler driver...