LLVM on the high level could be separated into:
-
- Core (operations which work on the LLVM IR AST)
-
- Optimisers
-
- Backends/targets - these generate the instructions for a given CPU (i.e. x86, ARM, WebAssembly, etc.)
There are many projects creating frontends for LLVM, which are actual compilers outputting LLVM IR.
Some of these include:
- clang (C and C++)
- llgo (Go)