LLVM Compiler

The LLVM compiler infrastructure project is a set of compiler and toolchain technologies, which can be used to develop a front end for any programming language and a back end for any instruction set architecture. LLVM is designed around a language-independent intermediate representation (IR) that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes.

Installation
/Installation/

Main Components
LLVM contains a list components
 * Clang: Frontend for C language family
 * LLVM Compiler/Clang Plugins Clang Plugins make it possible to run extra user defined actions during a compilation.
 * compiler-rt: runtime libraries with builtins, sanitizer runtimes, profile, and Apple Blocks runtime interfaces.
 * test-suite: https://github.com/llvm/llvm-test-suite

OpenMP support
see more at /OpenMP Support/

With the release of Clang 3.8.0, OpenMP 3.1 support is enabled in Clang by default, and the OpenMP runtime is therefore built as a normal part of the Clang build, and distributed with the binary distributions. You do not, therefore, need explicitly to check out this code, or build it out of tree; a normal Clang check out and build will automatically include building these runtime libraries.

https://openmp.llvm.org/

cmake -G Ninja -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=$LLVM_PATH -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;openmp" -DCLANG_BUILD_EXAMPLES=1 $LLVM_SRC/llvm

ninja install -j8 -l8

Development Support
Code review of LLVM is handled by Phabricator https://reviews.llvm.org/. Regression tests are run by Buildbot http://lab.llvm.org:8011/ using test suite under https://github.com/llvm/llvm-test-suite.

LLVM uses Buildbot to run some regression tests.

Their website has JSON API: http://lab.llvm.org:8011/json/help Take the OpenMP testing’s API results as an example This get request will get a json file, with links to each step’s logs among other information. You check the log files from the links to see the command lines used. For example: here is the log file for the configuring step:
 * http://lab.llvm.org:8011/json/builders/openmp-gcc-x86_64-linux-debian/builds/7095
 * http://lab.llvm.org:8011/builders/openmp-gcc-x86_64-linux-debian/builds/7095/steps/configure-openmp/logs/stdio