BitcodeWriterPass.cpp revision 276479
1164640Sflz//===- BitcodeWriterPass.cpp - Bitcode writing pass -----------------------===// 298186Sgordon// 378344Sobrien// The LLVM Compiler Infrastructure 4157473Sflz// 578344Sobrien// This file is distributed under the University of Illinois Open Source 678344Sobrien// License. See LICENSE.TXT for details. 778344Sobrien// 878344Sobrien//===----------------------------------------------------------------------===// 978344Sobrien// 1078344Sobrien// BitcodeWriterPass implementation. 1178344Sobrien// 1278344Sobrien//===----------------------------------------------------------------------===// 1378344Sobrien 1478344Sobrien#include "llvm/Bitcode/BitcodeWriterPass.h" 1578344Sobrien#include "llvm/Bitcode/ReaderWriter.h" 1678344Sobrien#include "llvm/IR/Module.h" 1778344Sobrien#include "llvm/IR/PassManager.h" 1878344Sobrien#include "llvm/Pass.h" 1978344Sobrienusing namespace llvm; 2078344Sobrien 2178344SobrienPreservedAnalyses BitcodeWriterPass::run(Module *M) { 2278344Sobrien WriteBitcodeToFile(M, OS); 2378344Sobrien return PreservedAnalyses::all(); 2478344Sobrien} 2578344Sobrien 2678344Sobriennamespace { 2778344Sobrien class WriteBitcodePass : public ModulePass { 2878344Sobrien raw_ostream &OS; // raw_ostream to print on 2978344Sobrien public: 3078344Sobrien static char ID; // Pass identification, replacement for typeid 3178344Sobrien explicit WriteBitcodePass(raw_ostream &o) 3278344Sobrien : ModulePass(ID), OS(o) {} 3378344Sobrien 3478344Sobrien const char *getPassName() const override { return "Bitcode Writer"; } 35169668Smtm 36157473Sflz bool runOnModule(Module &M) override { 3778344Sobrien WriteBitcodeToFile(&M, OS); 3898186Sgordon return false; 3998186Sgordon } 4098186Sgordon }; 41131550Scperciva} 42131550Scperciva 43131550Scpercivachar WriteBitcodePass::ID = 0; 44131550Scperciva 4598186SgordonModulePass *llvm::createBitcodeWriterPass(raw_ostream &Str) { 4698186Sgordon return new WriteBitcodePass(Str); 47202988Semaste} 48124832Smtm