| #include <llvm/ADT/OwningPtr.h> |
| #include <llvm/ADT/StringRef.h> |
| #include <llvm/LLVMContext.h> |
| #include <llvm/Support/IRReader.h> |
| #include <llvm/Support/MemoryBuffer.h> |
| #include <llvm/Support/SourceMgr.h> |
| |
| #include "llvm_wrapper.h" |
| |
| |
| extern "C" LLVMModuleRef llvm_parse_bitcode(const unsigned char * bitcode, unsigned bitcode_len) |
| { |
| llvm::OwningPtr<llvm::Module> M; |
| llvm::StringRef str((const char*)bitcode, bitcode_len); |
| llvm::MemoryBuffer* buffer = llvm::MemoryBuffer::getMemBufferCopy(str); |
| llvm::SMDiagnostic Err; |
| M.reset(llvm::ParseIR(buffer, Err, llvm::getGlobalContext())); |
| return wrap(M.take()); |
| } |