fixed to work with LLVM 3.2