mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-15 05:24:01 +00:00
[llvm-c] Expose IRReader interface
Original patch by Chris Wailes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194137 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -11,10 +11,15 @@
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
#include "llvm/Assembly/Parser.h"
|
||||
#include "llvm/Bitcode/ReaderWriter.h"
|
||||
#include "llvm/IR/LLVMContext.h"
|
||||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
#include "llvm/Support/SourceMgr.h"
|
||||
#include "llvm/Support/system_error.h"
|
||||
#include "llvm/Support/Timer.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm-c/Core.h"
|
||||
#include "llvm-c/IRReader.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
@ -87,3 +92,30 @@ Module *llvm::ParseIRFile(const std::string &Filename, SMDiagnostic &Err,
|
||||
|
||||
return ParseIR(File.take(), Err, Context);
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// C API.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
LLVMBool LLVMParseIRInContext(LLVMContextRef ContextRef,
|
||||
LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM,
|
||||
char **OutMessage) {
|
||||
SMDiagnostic Diag;
|
||||
|
||||
*OutM = wrap(ParseIR(unwrap(MemBuf), Diag, *unwrap(ContextRef)));
|
||||
|
||||
if(!*OutM) {
|
||||
if (OutMessage) {
|
||||
std::string buf;
|
||||
raw_string_ostream os(buf);
|
||||
|
||||
Diag.print(NULL, os, false);
|
||||
os.flush();
|
||||
|
||||
*OutMessage = strdup(buf.c_str());
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user