Transactifying Applications using an Open Compiler Framework
Pascal Felber and Christof Fetzer and Ulrich Müller and Torvald Riegel and Martin Süßkraut and Heiko Sturzrehm
Appeared in: TRANSACT
Date: August 2007

Download: PRESENTATION SLIDES
Download: BIBTEX (felber2007tanger)
Transactional memory dramatically reduces the complexity of writing concurrent code. Yet, seamless integration of transactional constructs in application code typically comes with a significant performance penalty. Recent studies have shown that compiler support allows producing highly efficient STM-based applications without putting the hassle on the programmer. So far, STM integration has been partially implemented in custom, proprietary compiler infrastructures. In this paper, we propose and evaluate the use of the LLVM open compiler framework to generate efficient concurrent applications using word-based STM libraries. Since LLVM uses the GCC compiler suite as front-end, it can process code written in C or C++ (with partial support for other languages). We also present a tool that allows ``transactifying'' assembly code and can complement LLVM for legacy code and libraries. Experiments using a lightweight C word-based STM library show that LLVM integration performs as well as hand-optimized calls to the STM library and better than assembly code instrumentation of the application code.