BitWriter.cpp revision b515d75856f58a8b3b71d782eb00916d686329ad
18b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen//===-- BitWriter.cpp -----------------------------------------------------===//
28b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen//
38b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen//                     The LLVM Compiler Infrastructure
48b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen//
54ee451de366474b9c228b4e5fa573795a715216dChris Lattner// This file is distributed under the University of Illinois Open Source
64ee451de366474b9c228b4e5fa573795a715216dChris Lattner// License. See LICENSE.TXT for details.
78b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen//
88b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen//===----------------------------------------------------------------------===//
98b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen
108b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include "llvm-c/BitWriter.h"
118b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include "llvm/Bitcode/ReaderWriter.h"
12b515d75856f58a8b3b71d782eb00916d686329adChris Lattner#include "llvm/Support/raw_ostream.h"
138b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenusing namespace llvm;
148b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen
158b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen
168b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*===-- Operations on modules ---------------------------------------------===*/
178b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen
188b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenint LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path) {
19b515d75856f58a8b3b71d782eb00916d686329adChris Lattner  std::string ErrorInfo;
20b515d75856f58a8b3b71d782eb00916d686329adChris Lattner  raw_fd_ostream OS(Path, ErrorInfo,
21b515d75856f58a8b3b71d782eb00916d686329adChris Lattner                    raw_fd_ostream::F_Force|raw_fd_ostream::F_Binary);
228b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen
23b515d75856f58a8b3b71d782eb00916d686329adChris Lattner  if (!ErrorInfo.empty())
248b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen    return -1;
258b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen
26b515d75856f58a8b3b71d782eb00916d686329adChris Lattner  WriteBitcodeToFile(unwrap(M), OS);
278b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen  return 0;
288b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen}
298b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen
30a068fd32e25b1eee3ad50636b169b0b06a0eb4c5Gordon Henriksen#if defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR >= 4)
318b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include <ext/stdio_filebuf.h>
328b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen
338b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenint LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int FileHandle) {
34b515d75856f58a8b3b71d782eb00916d686329adChris Lattner  raw_fd_ostream OS(FileHandle, false);
358b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen
36b515d75856f58a8b3b71d782eb00916d686329adChris Lattner  WriteBitcodeToFile(unwrap(M), OS);
378b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen  return 0;
388b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen}
398b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen
40a068fd32e25b1eee3ad50636b169b0b06a0eb4c5Gordon Henriksen#else
41a068fd32e25b1eee3ad50636b169b0b06a0eb4c5Gordon Henriksen
42a068fd32e25b1eee3ad50636b169b0b06a0eb4c5Gordon Henriksenint LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int FileHandle) {
43a068fd32e25b1eee3ad50636b169b0b06a0eb4c5Gordon Henriksen  return -1; // Not supported.
44a068fd32e25b1eee3ad50636b169b0b06a0eb4c5Gordon Henriksen}
45a068fd32e25b1eee3ad50636b169b0b06a0eb4c5Gordon Henriksen
468b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#endif
47