The LLVM Project Blog

LLVM Project News and Details from the Trenches

  • The Glasgow Haskell Compiler and LLVM

    If you read the LLVM 2.7 release notes carefully you would have noticed that one of the new external users is the Glasgow Haskell Compiler (GHC). As the author of the LLVM backend for GHC, I have been invited to write a post detailing the design of the backend and my experiences with using LLVM.

    Read more…
  • New "libc++" C++ Standard Library

    I'm happy to announce a new subproject of LLVM: "libc++". libc++ is an implementation of the C++ Standard Library, with a focus on standards compliance, highly efficient generated code, and with an aim to support C++'0x when the standard is ratified.

    Read more…
  • Extensible Metadata in LLVM IR

    A common request by front-end authors is to be able to add some sort of metadata to LLVM IR. This metadata could be used to influence language-specific optimization passes (for example, Type Based Alias Analysis in C), tag information for a custom code generator, or pass through information to link time optimization.

    Read more…
  • Intro to the LLVM MC Project

    The LLVM Machine Code (aka MC) sub-project of LLVM was created to solve a number of problems in the realm of assembly, disassembly, object file format handling, and a number of other related areas that CPU instruction-set level tools work in.

    Read more…
  • ARM Advanced SIMD (NEON) Intrinsics and Types in LLVM

    LLVM now supports all the intrinsic functions defined by ARM for the Advanced SIMD (aka "NEON") instruction set, but if you are migrating from GCC to LLVM, there are some implementation differences that you may encounter.

    Read more…
  • What's wrong with this code?

    A user on IRC sent me this interesting KLEE example today, which I thought was cute enough I should post it. If you aren't familiar with it, KLEE is a tool for symbolic execution of LLVM code.

    Read more…
  • Amazing feats of Clang Error Recovery

    In addition to parsing and generating machine code for your source files when valid, a compiler frontend's job is also to detect invalid code and give you a hint that explains what is wrong so you can fix the problem.

    Read more…
  • Dragonegg Successfully Self-Hosts!

    The dragonegg GCC plugin can host itself! Dragonegg lets you use the LLVM optimizers with GCC-4.5, much like llvm-gcc, but unlike llvm-gcc does not involve modifying GCC, thanks to the new GCC plugin infrastructure (currently one small patch is required).

    Read more…
  • Clang Successfully Self-Hosts!

    Today, Clang completed its first complete self-host! We built all of LLVM and Clang with Clang (over 550k lines of C++ code). The resulting binaries passed all of Clang and LLVM's regression test suites, and the Clang-built Clang could then build all of LLVM and Clang again.

    Read more…
  • 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…