1b7bdfd65SChandler Carruth //===- BitcodeWriterPass.cpp - Bitcode writing pass -----------------------===// 27ef41710SChris Lattner // 37ef41710SChris Lattner // The LLVM Compiler Infrastructure 47ef41710SChris Lattner // 5f3ebc3f3SChris Lattner // This file is distributed under the University of Illinois Open Source 6f3ebc3f3SChris Lattner // License. See LICENSE.TXT for details. 77ef41710SChris Lattner // 87ef41710SChris Lattner //===----------------------------------------------------------------------===// 97ef41710SChris Lattner // 107ef41710SChris Lattner // BitcodeWriterPass implementation. 117ef41710SChris Lattner // 127ef41710SChris Lattner //===----------------------------------------------------------------------===// 137ef41710SChris Lattner 14b7bdfd65SChandler Carruth #include "llvm/Bitcode/BitcodeWriterPass.h" 157ef41710SChris Lattner #include "llvm/Bitcode/ReaderWriter.h" 16b7bdfd65SChandler Carruth #include "llvm/IR/Module.h" 17b7bdfd65SChandler Carruth #include "llvm/IR/PassManager.h" 187ef41710SChris Lattner #include "llvm/Pass.h" 197ef41710SChris Lattner using namespace llvm; 207ef41710SChris Lattner 21b7bdfd65SChandler Carruth PreservedAnalyses BitcodeWriterPass::run(Module *M) { 22b7bdfd65SChandler Carruth WriteBitcodeToFile(M, OS); 23b7bdfd65SChandler Carruth return PreservedAnalyses::all(); 24b7bdfd65SChandler Carruth } 25b7bdfd65SChandler Carruth 267ef41710SChris Lattner namespace { 277ef41710SChris Lattner class WriteBitcodePass : public ModulePass { 286973395cSChris Lattner raw_ostream &OS; // raw_ostream to print on 297ef41710SChris Lattner public: 30890d0debSDaniel Dunbar static char ID; // Pass identification, replacement for typeid 31890d0debSDaniel Dunbar explicit WriteBitcodePass(raw_ostream &o) 32a7aed186SOwen Anderson : ModulePass(ID), OS(o) {} 3335f398a9SGordon Henriksen 34*8548299aSCraig Topper const char *getPassName() const override { return "Bitcode Writer"; } 357ef41710SChris Lattner 36*8548299aSCraig Topper bool runOnModule(Module &M) override { 376973395cSChris Lattner WriteBitcodeToFile(&M, OS); 387ef41710SChris Lattner return false; 397ef41710SChris Lattner } 407ef41710SChris Lattner }; 417ef41710SChris Lattner } 427ef41710SChris Lattner 437ef41710SChris Lattner char WriteBitcodePass::ID = 0; 447ef41710SChris Lattner 45890d0debSDaniel Dunbar ModulePass *llvm::createBitcodeWriterPass(raw_ostream &Str) { 46890d0debSDaniel Dunbar return new WriteBitcodePass(Str); 47890d0debSDaniel Dunbar } 48