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