| <!--#include virtual="header.incl" --> |
| <div class="www_sectiontitle">LLVM Features</div> |
| |
| <p>The <a href="releases/">LLVM compiler system</a> for C and C++ includes the |
| following:</p> |
| |
| <ul> |
| <li>Front-ends for C, C++, Objective-C, Fortran, etc. |
| They support the ANSI-standard C and C++ languages. |
| Additionally, many GCC extensions are supported.</li> |
| |
| <li>A stable implementation of the LLVM instruction set, which serves |
| as both the online and offline code representation, together with assembly |
| (ASCII) and bytecode (binary) readers and writers, and a verifier.</li> |
| |
| <li>A powerful pass-management system that automatically sequences passes |
| (including analysis, transformation, and code-generation passes) based on |
| their dependences, and pipelines them for efficiency.</li> |
| |
| <li>A wide range of global scalar optimizations.</li> |
| |
| <li>A link-time interprocedural optimization framework with a rich set of |
| analyses and transformations, including sophisticated whole-program pointer |
| analysis, call graph construction, and support for profile-guided |
| optimizations.</li> |
| |
| <li>An easily retargetable code generator, which currently supports X86, |
| X86-64, PowerPC, PowerPC-64, ARM, Thumb, SPARC, Alpha, CellSPU, |
| MIPS, MSP430, SystemZ, WebAssembly and XCore.</li> |
| |
| <li>A Just-In-Time (JIT) code generation system, which currently supports |
| X86, X86-64, ARM, AArch64, Mips, SystemZ, PowerPC, and PowerPC-64.</li> |
| |
| <li>Support for generating DWARF debugging information.</li> |
| |
| <li>A profiling system similar to gprof.</li> |
| |
| <li>A test framework with a number of benchmark codes and applications.</li> |
| |
| <li>APIs and debugging tools to simplify rapid development of LLVM |
| components.</li> |
| </ul> |
| |
| <div class="www_sectiontitle">Strengths of the LLVM System</div> |
| |
| <div class="www_text"> |
| |
| <ol> |
| <li>LLVM uses a simple <a href="docs/LangRef.html">low-level language</a> with |
| strictly defined semantics.</li> |
| |
| <li>It includes front-ends for <a |
| href="docs/CommandGuide/html/llvmgcc.html">C</a> and |
| <a href="docs/CommandGuide/html/llvmgxx.html">C++</a>. Front-ends for |
| Java, Scheme, and other languages are in development.</li> |
| |
| <li>It includes an aggressive optimizer, including scalar, interprocedural, |
| profile-driven, and some simple loop optimizations.</li> |
| |
| <li>It supports a <a |
| href="/pubs/2004-01-30-CGO-LLVM.html">life-long |
| compilation model</a>, including link-time, install-time, run-time, and |
| offline optimization.</li> |
| |
| <li>LLVM has full support for <a href="docs/GarbageCollection.html">accurate |
| garbage collection</a>.</li> |
| |
| <li>The LLVM code generator is relatively easy to retarget, and makes use of |
| a powerful target description language.</li> |
| |
| <li>LLVM has extensive <a href="docs/">documentation</a> and has |
| hosted many <a href="ProjectsWithLLVM/">projects</a> of various sorts.</li> |
| |
| <li>Many third-party users have claimed that LLVM is easy to work with and |
| develop for. For example, the (now removed) Stacker front-end was written |
| in 4 days by someone who started knowing nothing about LLVM. Additionally, |
| LLVM has tools to make |
| <a href="docs/Bugpoint.html">development easier</a>.</li> |
| |
| <li>LLVM is under active development and is constantly being extended, |
| enhanced and improved. See the status updates on the left bar to see the rate |
| of development.</li> |
| |
| <li>LLVM is freely available under an OSI-approved "Apache License Version 2.0" license.</li> |
| |
| <li>LLVM is currently used by many commercial, non-profit or academic entities, who contribute |
| many extensions and new features.</li> |
| </ol> |
| |
| </div> |
| |
| <div class="www_sectiontitle">LLVM Audience</div> |
| |
| <p>LLVM can be used in many different kinds of projects. You might be |
| interested in LLVM if you are:</p> |
| |
| <ul> |
| <li>A compiler researcher interested in compile-time, link-time |
| (interprocedural), and runtime transformations for C and C++ programs.</li> |
| |
| <li>A virtual machine researcher/developer interested in a portable, |
| language-independent instruction set and compilation framework.</li> |
| |
| <li>An architecture researcher interested in compiler/hardware |
| techniques.</li> |
| |
| <li>A security researcher interested in static analysis or |
| instrumentation.</li> |
| |
| <li>An instructor or developer interested in a system for quick prototyping of |
| compiler transformations.</li> |
| |
| <li>An end-user who wants to get better performance out of your code.</li> |
| </ul> |
| |
| <div class="www_sectiontitle">Want to Know More?</div> |
| |
| <p> |
| You can <a href="docs/">browse the documentation online</a>, |
| try <a href="/demo/index.cgi">LLVM in your web browser</a>, or |
| <a href="/releases/index.html">download the source code.</a> |
| </p> |
| |
| <!--#include virtual="footer.incl" --> |