1f22ef01cSRoman Divacky //===--- Bitcode/Writer/BitcodeWriterPass.cpp - Bitcode Writer ------------===// 2f22ef01cSRoman Divacky // 3f22ef01cSRoman Divacky // The LLVM Compiler Infrastructure 4f22ef01cSRoman Divacky // 5f22ef01cSRoman Divacky // This file is distributed under the University of Illinois Open Source 6f22ef01cSRoman Divacky // License. See LICENSE.TXT for details. 7f22ef01cSRoman Divacky // 8f22ef01cSRoman Divacky //===----------------------------------------------------------------------===// 9f22ef01cSRoman Divacky // 10f22ef01cSRoman Divacky // BitcodeWriterPass implementation. 11f22ef01cSRoman Divacky // 12f22ef01cSRoman Divacky //===----------------------------------------------------------------------===// 13f22ef01cSRoman Divacky 14f22ef01cSRoman Divacky #include "llvm/Bitcode/ReaderWriter.h" 15f22ef01cSRoman Divacky #include "llvm/Pass.h" 16f22ef01cSRoman Divacky using namespace llvm; 17f22ef01cSRoman Divacky 18f22ef01cSRoman Divacky namespace { 19f22ef01cSRoman Divacky class WriteBitcodePass : public ModulePass { 20f22ef01cSRoman Divacky raw_ostream &OS; // raw_ostream to print on 21f22ef01cSRoman Divacky public: 22f22ef01cSRoman Divacky static char ID; // Pass identification, replacement for typeid 23f22ef01cSRoman Divacky explicit WriteBitcodePass(raw_ostream &o) 24f22ef01cSRoman Divacky : ModulePass(&ID), OS(o) {} 25f22ef01cSRoman Divacky 26f22ef01cSRoman Divacky const char *getPassName() const { return "Bitcode Writer"; } 27f22ef01cSRoman Divacky 28f22ef01cSRoman Divacky bool runOnModule(Module &M) { 29f22ef01cSRoman Divacky WriteBitcodeToFile(&M, OS); 30f22ef01cSRoman Divacky return false; 31f22ef01cSRoman Divacky } 32f22ef01cSRoman Divacky }; 33f22ef01cSRoman Divacky } 34f22ef01cSRoman Divacky 35f22ef01cSRoman Divacky char WriteBitcodePass::ID = 0; 36f22ef01cSRoman Divacky 37f22ef01cSRoman Divacky /// createBitcodeWriterPass - Create and return a pass that writes the module 38f22ef01cSRoman Divacky /// to the specified ostream. 39f22ef01cSRoman Divacky ModulePass *llvm::createBitcodeWriterPass(raw_ostream &Str) { 40f22ef01cSRoman Divacky return new WriteBitcodePass(Str); 41f22ef01cSRoman Divacky } 42