[LLVMdev] Tool support for generation of transactional code

Torvald Riegel torvald at se.inf.tu-dresden.de
Sun Aug 19 13:22:19 PDT 2007


I would like to announce the availability of compiler support for generation 
of transactional code in LLVM IR. Our tool is called Tanger and it is an LLVM 
pass. You can download Tanger at: http://tinystm.org

Transactional memory (TM) is viewed by a lot of people to be an important tool 
for enabling parallelism in a wide area of applications, and especially for 
developers that are not skilled in concurrent programming. It is a lot better 
than locking (e.g., w.r.t. composability) and far easier than low-level 
concurrent programming.

Tanger transforms an application that uses a minimal application-level 
declaration API for memory transactions (calls to hook functions begin() and 
commit() to declare transaction boundaries) into an application that contains 
proper calls to an STM for all accesses to memory in transactional code 
(e.g., load instructions are transformed into calls to stm_load() functions). 
You can find a more detailed description in our Transact'07 paper [1]. If you 
use Tanger in your work, please cite this paper (or the paper we link to at 
the website below).

We are looking forward to any comments, questions, and contributions. There is 
large interest in compiler support for transactional memory right now 
especially in the TM community and related communities. I suppose that only 
relatively few people from these communities have a compiler background, so 
we would really like to get support from people that have a compiler 
background.

We thank all the LLVM developers and contributors for creating a great 
compiler framework.


Torvald


[1] Pascal Felber and Christof Fetzer and Ulrich Müller and Torvald Riegel and 
Martin Süsskraut and Heiko Sturzrehm, Transactifying Applications using an 
Open Compiler Framework, TRANSACT, 2007




More information about the llvm-dev mailing list