1*b7bdfd65SChandler 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 
14*b7bdfd65SChandler Carruth #include "llvm/Bitcode/BitcodeWriterPass.h"
157ef41710SChris Lattner #include "llvm/Bitcode/ReaderWriter.h"
16*b7bdfd65SChandler Carruth #include "llvm/IR/Module.h"
17*b7bdfd65SChandler Carruth #include "llvm/IR/PassManager.h"
187ef41710SChris Lattner #include "llvm/Pass.h"
197ef41710SChris Lattner using namespace llvm;
207ef41710SChris Lattner 
21*b7bdfd65SChandler Carruth PreservedAnalyses BitcodeWriterPass::run(Module *M) {
22*b7bdfd65SChandler Carruth   WriteBitcodeToFile(M, OS);
23*b7bdfd65SChandler Carruth   return PreservedAnalyses::all();
24*b7bdfd65SChandler Carruth }
25*b7bdfd65SChandler 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 
3435f398a9SGordon Henriksen     const char *getPassName() const { return "Bitcode Writer"; }
357ef41710SChris Lattner 
367ef41710SChris Lattner     bool runOnModule(Module &M) {
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