LLVM is a compiler backend that was written before clang, which originally used the front end of gcc in a tool called llvm-gcc. Clang is the name of the front end code, but clang is also the name of a tool that includes the front end of clang, but will also run the entire compiler for you. Later compilation steps are either built into the clang tool as libraries, or if they are separate executable files, clang knows how to call them. With the right command line arguments you can do clang stop part through thru
- -emit-ast just parses and creates an abstract syntax tree
- -emit-llvm makes an intermediate LLVM representation, but does not turn it into code for your computer.
Clang will work as a driver for the entire assembly, because what programmers usually want, a parsed sur, a generated object, an executable. The desire for abstract syntax Tree spun you quite rarely.
Obviously, this is the sum of all things LLVM http://llvm.org
Here's a Chriss Lattner video explaining that LLVM is https://www.youtube.com/watch?v=029YXzHtRy0 . Chandler Carrut has some tips on how you explain the parts of clang that he worked on.
Christopher Ian Stern
source share