blob: 7ed651b77e2ef6117b6942ce076773a437668655 [file] [log] [blame]
Shih-wei Liaoe264f622010-02-10 11:10:31 -08001//===-- BitWriter.cpp -----------------------------------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "llvm-c/BitWriter.h"
11#include "llvm/Bitcode/ReaderWriter.h"
12#include "llvm/Support/raw_ostream.h"
13using namespace llvm;
14
15
16/*===-- Operations on modules ---------------------------------------------===*/
17
18int LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path) {
19 std::string ErrorInfo;
20 raw_fd_ostream OS(Path, ErrorInfo,
21 raw_fd_ostream::F_Binary);
22
23 if (!ErrorInfo.empty())
24 return -1;
25
26 WriteBitcodeToFile(unwrap(M), OS);
27 return 0;
28}
29
30#if defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR >= 4)
31#include <ext/stdio_filebuf.h>
32
33int LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int FileHandle) {
34 raw_fd_ostream OS(FileHandle, false);
35
36 WriteBitcodeToFile(unwrap(M), OS);
37 return 0;
38}
39
40#else
41
42int LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int FileHandle) {
43 return -1; // Not supported.
44}
45
46#endif