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