-
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… -
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…