Clang, LLVM and Gnome

Bruno Cardoso Lopes

LLVM is an open-source (MIT based license) compiler infrastructure with back-ends for several architectures (X86, PowerPC, ARM, MIPS, ...). Clang is the C, C++, Objective C and Objective C++ front-end for the LLVM compiler.

The GNOME project indirectly uses the LLVM framework through the llvmpipe[1] software rendering engine where LLVM plays an important role by providing a fast fallback mechanism whenever native hardware acceleration is not present. The Gedit Code Assistance[2] also uses Clang as a plugin to assist coders with helpful messages and compilation hints.

Since GNOME is a very vast project (and an umbrella for several others), there are definitely several beneficial and potential uses of LLVM and Clang that could enhance the overall user and developer experience. To name a few: LLVM LTO and interprocedural optimizations, the Clang static analyser (e.g. to search the code base for bugs), the powerful ARM backend (GNOME compilation targeting ARM devices, e.g. Nexus 7).

This talk introduces the LLVM and Clang framework with some GNOME related experiments provided by the speaker. The aim is to inspire the audience to explore this technology and open the possibility to improve new areas in the GNOME project.

[1] http://www.mesa3d.org/llvmpipe.html
[2] https://git.gnome.org/browse/gedit-code-assistance

Bruno Cardoso Lopes is a PhD student at University of Campinas, Brazil. His academic research includes hardware simulation and code compression. In the past he worked and had experience with embedded systems, with drivers for Linux and FreeBSD. He's also an active contributor to the open source compiler LLVM for 6 years now, where he has contributed for x86 (intel AVX support), ARM and MIPS (maintainer) backends.