17ef41710SChris Lattner //===--- Bitcode/Writer/BitcodeWriterPass.cpp - Bitcode Writer ------------===//
27ef41710SChris Lattner //
37ef41710SChris Lattner //                     The LLVM Compiler Infrastructure
47ef41710SChris Lattner //
57ef41710SChris Lattner // This file was developed by Chris Lattner and is distributed under
67ef41710SChris Lattner // the University of Illinois Open Source License. See LICENSE.TXT for details.
77ef41710SChris Lattner //
87ef41710SChris Lattner //===----------------------------------------------------------------------===//
97ef41710SChris Lattner //
107ef41710SChris Lattner // BitcodeWriterPass implementation.
117ef41710SChris Lattner //
127ef41710SChris Lattner //===----------------------------------------------------------------------===//
137ef41710SChris Lattner 
147ef41710SChris Lattner #include "llvm/Bitcode/ReaderWriter.h"
157ef41710SChris Lattner #include "llvm/Pass.h"
167ef41710SChris Lattner using namespace llvm;
177ef41710SChris Lattner 
187ef41710SChris Lattner namespace {
197ef41710SChris Lattner   class WriteBitcodePass : public ModulePass {
20*35f398a9SGordon Henriksen     std::ostream &Out;                 // ostream to print on
217ef41710SChris Lattner   public:
227ef41710SChris Lattner     static char ID; // Pass identifcation, replacement for typeid
23*35f398a9SGordon Henriksen     WriteBitcodePass(std::ostream &o) : ModulePass((intptr_t) &ID), Out(o) {}
24*35f398a9SGordon Henriksen 
25*35f398a9SGordon Henriksen     const char *getPassName() const { return "Bitcode Writer"; }
267ef41710SChris Lattner 
277ef41710SChris Lattner     bool runOnModule(Module &M) {
28*35f398a9SGordon Henriksen       WriteBitcodeToFile(&M, Out);
297ef41710SChris Lattner       return false;
307ef41710SChris Lattner     }
317ef41710SChris Lattner   };
327ef41710SChris Lattner }
337ef41710SChris Lattner 
347ef41710SChris Lattner char WriteBitcodePass::ID = 0;
357ef41710SChris Lattner 
367ef41710SChris Lattner /// CreateBitcodeWriterPass - Create and return a pass that writes the module
377ef41710SChris Lattner /// to the specified ostream.
387ef41710SChris Lattner ModulePass *llvm::CreateBitcodeWriterPass(std::ostream &Str) {
397ef41710SChris Lattner   return new WriteBitcodePass(Str);
407ef41710SChris Lattner }
417ef41710SChris Lattner 
427ef41710SChris Lattner 
43