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