Closing the gap: cross-language LTO between Rust and C/C++
> Link time optimization (LTO) is LLVM’s way of implementing whole-program optimization. Cross-language LTO is a new feature in the Rust compiler that enables LLVM’s link time optimization to be performed across a mixed C/C++/Rust codebase. It is also a feature that beautifully combines two respective strengths of the Rust programming language and the LLVM compiler platform:
30% faster Windows builds with clang-cl and the new /Zc:dllexportInlines- flag
> This is very similar to the -fvisibility-inlines-hidden Clang and GCC flag used on non-Windows. For C++ projects with many inline functions, it can significantly reduce the set of exported functions, and thereby the symbol table and file size of the shared object or dynamic library, as well as program load time.
DragonFFI: FFI/JIT for the C language using Clang/LLVM
> This blog post presents related works, their drawbacks, then how Clang/LLVM is used to circumvent these drawbacks, the inner working of DragonFFI and further ideas. The code of the project is available on GitHub:
Improving Link Time on Windows with clang-cl and lld
> In this blog post, we’ll first go over some technical background about CodeView so that we can understand the problem, followed by a summary of existing attempts to speed up type merging. Finally, we’ll describe a novel extension to the PE/COFF file format which speeds up linking by offloading part of the work required to de-duplicate types to the compiler and using a new algorithm which uniquely identifies type records even across input files, and discuss the various tradeoffs of each approach. Finally, we’ll present some benchmarks and discuss how you can try this out in clang-cl and lld today.
LLVM on Windows now supports PDB Debug Info
> If you’re using clang on Windows, you can now get PDB debug information!
Devirtualization in LLVM and Clang
> This blogpost will show how C++ devirtualization is performed in current (4.0) clang and LLVM and also ongoing work on -fstrict-vtable-pointers features.