The LLVM Project Blog

LLVM Project News and Details from the Trenches

LLVM Weekly - #2, Jan 13th 2014

Welcome to the second issue of LLVM Weekly (and the first to appear on the LLVM blog). LLVM Weekly is a newsletter (published every Monday) covering developments in LLVM, Clang, and related projects. Thank you to everyone who has given positive feedback or suggestions, I'm planning in future editions to integrate some sort of statistics of git activity and contributions as well as activity on Bugzilla. LLVM Weekly is brought to you by Alex Bradbury. Subscribe to future issues at and pass it on to anyone else you think may be interested. Please send any tips or feedback to, or @llvmweekly or @asbradbury on Twitter.

The canonical home for this issue can be found here at

News and articles from around the web

Stephen Diehl has published a Haskell adaptation of the 'Kaleidoscope' tutorials on how to implement aJIT compiled language using LLVM. This was received very positively and prompted some discussion on HN.

Registration for EuroLLVM is now open. There's still time to submit your talk, poster or workshop proposals too.

Rust 0.9 has been released. Rust is a systems programming language which targetting LLVM with a particular emphasis on type safety, memory safety and concurrency. One of the core Rust developers at Mozilla, Niko Matsakis, also gave a talk at introducing Rust.

Coverity 7 now includes Clang compiler support.

On the mailing lists

LLVM commits

  • The Sparc ASM parser has seen further development, learning to parse branch instructions, conditional moves, and floating point instructions and more. It also gained an initial disassembler implementation. r198738, r199033, r198591

  • In SimplifyCFG will now understand that when building a lookup table for a switch with no holes that it doesn't need a default result. According to the commit message, this saves 164KB off the clang binary in a bootstrap build. r199025

  • The new pass manager saw further developments. r198998 and many others (prefixed with [PM] in the commit logs)

  • The SampleProfile pass saw further development. Profile samples are propagated through the CFG, heuristically converting instruction samples to branch weights. Work was done to extend and simplify the format of sample profile input files. r198972, r198973

  • The LoopVectorizer can use versioning for strided memory access. r198950

  • In DataLayout, 'w' is now used rather than 'c' for win32 name mangling. r198938

  • The LLVM developer policy was updated to more clearly spell out how to submit patches to the project. r198901

  • WriteAsOperand has been killed in favour of the the printAsOperand method. r198836

  • The x86 backend learned some more AVX-512 intrinsics. r198745

Clang commits

  • Support for the enable_if attribute was added. This can be placed on function declarations to control which overload is selected based on the values of the function's arguments. See the commitdiff (particularly the docs change) for more info. r198996

  • More work on MS VC++ ABI compatibility was committed. r198907, r198975, r198977, r198900 and more.

  • __has_attribute now understands target-specific attributes. r198897

  • The clang plugin infrastructure is now covered by at least some tests. r198747

  • The documentation on clang internals was updated with more up to date information on adding new attributes. r198705

  • An initial instrumentation-based profile guided optimisation implementation landed. r198640