Tools Based on LLVM

This page is simply an incomplete list of research projects and tools built on the LLVM framework. There will be a strong focus in the list on testing, verification, and validation tools since that’s the area in which I work. I’ve chosen to exclude a number of projects/papers for which I can’t find open source code since my main interest is in projects I can leverage for my own goals. 🙂

Note: Many of these are decidedly of research quality. Before leveraging code or using them on your software, make sure you’re comfortable with that fact. 🙂

(Mature) Language Frontends

  • Clang
  • Julia – http://julialang.org/
  • LLGo – http://llvm.org/svn/llvm-project/llgo/trunk/README.TXT
  • WebKit FTL – https://trac.webkit.org/wiki/FTLJIT

Interesting Language Projects

  • Pyston – https://github.com/dropbox/pyston
  • LLILC – LLVM for CLR by Microsoft – http://blog.llvm.org/2015/04/llilc-llvm-based-compiler-for-dotnet.html
  • Rust –
  • GHC LLVM Backend – Unknown status?

Symbolic Execution

Fuzzing

  • llvm-fuzz

Model Checking

Runtime Checking

Race Detection

  • ThreadSanitizer – https://code.google.com/p/data-race-test/wiki/ThreadSanitizer

In terms of dependency analysis, LLVM has it’s own code to support the basic block vectorizer. There is also work on the Polly (http://polly.llvm.org/) project to combine polyhedral analysis with LLVM. There was discussion of this being merged back, but I’m not sure where that stands.

Leave a Reply