Fork from original repository from Ettore Speziale: the code has been update in order to work with current llvm/clang trunk.