1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <llvm/ADT/OwningPtr.h> 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <llvm/ADT/StringRef.h> 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <llvm/LLVMContext.h> 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <llvm/Support/IRReader.h> 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <llvm/Support/MemoryBuffer.h> 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <llvm/Support/SourceMgr.h> 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "llvm_wrapper.h" 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern "C" LLVMModuleRef llvm_parse_bitcode(const unsigned char * bitcode, unsigned bitcode_len) 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org llvm::OwningPtr<llvm::Module> M; 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org llvm::StringRef str((const char*)bitcode, bitcode_len); 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org llvm::MemoryBuffer* buffer = llvm::MemoryBuffer::getMemBufferCopy(str); 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org llvm::SMDiagnostic Err; 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org M.reset(llvm::ParseIR(buffer, Err, llvm::getGlobalContext())); 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return wrap(M.take()); 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 20