The LLVM Project Blog

LLVM Project News and Details from the Trenches

  • The x86 Disassembler

    Disassemblers make binary analysis work. With a reliable disassembler, you can solve high-level problems like tracing back through a program's call stack or analyzing sample-based profiles to low-level problems like figuring out how your compiler unrolled a tight floating-point loop or what advantages declaring a variable const actually had at the other end of the optimization chain.

    Read more…
  • Address of Label and Indirect Branches in LLVM IR

    The GCC Compiler supports a useful "Label as Values" extension, which allows code to take the address of a label and then later do an unconditional branch to an address specified as a void*.

    Read more…
  • Clang Builds LLVM

    Just in time for the Christmas holiday, the Clang project has hit a major milestone: Clang can now build all of LLVM and Clang! The resulting Clang-built-Clang is not yet functional, so this "

    Read more…
  • Advanced Topics in Redundant Load Elimination with a Focus on PHI Translation

    In our previous post on GVN we introduced some basics of load elimination.  This post describes some advanced topics and focuses on PHI translation: what it is, why it is important, shows some nice things it can do, and describes the implementation in LLVM.

    Read more…
  • The Dreaded Two-Phase Name Lookup

    C++ has more than its fair share of dark, dank corners, especially where templates are concerned. One of the most vexing is "two-phase name lookup", which involves lookup for any names that occur in the body of a template.

    Read more…
  • Introduction to load elimination in the GVN pass

    One very important optimization that the GVN pass (opt -gvn) does is load elimination. Load elimination involves several subsystems (including alias analysis, memory dependence analysis, SSA construction, PHI translation) and has many facets (full vs partial redundancy elimination, value coercion, handling memset/memcpy, etc).

    Read more…
  • 'lit' it

    If you've been watching LLVM and Clang, you'll notice that there is a new testing tool we are using called lit. Clang has already moved to it, and LLVM has support for it (DejaGNU is still the default, but is being phased out).

    Read more…
  • Welcome to the LLVM Blog

    Welcome to the new and shiny LLVM Blog.  We've noticed that while the greater LLVM community active and thriving, that it is very difficult for people who aren't hacking on it to follow interesting developments.

    Read more…