diff options
Diffstat (limited to 'lib/Bitcode/Writer/BitWriter.cpp')
| -rw-r--r-- | lib/Bitcode/Writer/BitWriter.cpp | 14 | 
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/Bitcode/Writer/BitWriter.cpp b/lib/Bitcode/Writer/BitWriter.cpp index 3747122fc98f..7218ea05bb5b 100644 --- a/lib/Bitcode/Writer/BitWriter.cpp +++ b/lib/Bitcode/Writer/BitWriter.cpp @@ -18,10 +18,10 @@ using namespace llvm;  /*===-- Operations on modules ---------------------------------------------===*/  int LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path) { -  std::string ErrorInfo; -  raw_fd_ostream OS(Path, ErrorInfo, sys::fs::F_None); +  std::error_code EC; +  raw_fd_ostream OS(Path, EC, sys::fs::F_None); -  if (!ErrorInfo.empty()) +  if (EC)      return -1;    WriteBitcodeToFile(unwrap(M), OS); @@ -39,3 +39,11 @@ int LLVMWriteBitcodeToFD(LLVMModuleRef M, int FD, int ShouldClose,  int LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int FileHandle) {    return LLVMWriteBitcodeToFD(M, FileHandle, true, false);  } + +LLVMMemoryBufferRef LLVMWriteBitcodeToMemoryBuffer(LLVMModuleRef M) { +  std::string Data; +  raw_string_ostream OS(Data); + +  WriteBitcodeToFile(unwrap(M), OS); +  return wrap(MemoryBuffer::getMemBufferCopy(OS.str()).release()); +}  | 
