19b044ec938fd56355012851890c63974c8042c9fStephen Hines//===--- Bitcode/Writer/BitcodeWriterPass.cpp - Bitcode Writer ------------===//
29b044ec938fd56355012851890c63974c8042c9fStephen Hines//
39b044ec938fd56355012851890c63974c8042c9fStephen Hines//                     The LLVM Compiler Infrastructure
49b044ec938fd56355012851890c63974c8042c9fStephen Hines//
59b044ec938fd56355012851890c63974c8042c9fStephen Hines// This file is distributed under the University of Illinois Open Source
69b044ec938fd56355012851890c63974c8042c9fStephen Hines// License. See LICENSE.TXT for details.
79b044ec938fd56355012851890c63974c8042c9fStephen Hines//
89b044ec938fd56355012851890c63974c8042c9fStephen Hines//===----------------------------------------------------------------------===//
99b044ec938fd56355012851890c63974c8042c9fStephen Hines//
109b044ec938fd56355012851890c63974c8042c9fStephen Hines// BitcodeWriterPass implementation.
119b044ec938fd56355012851890c63974c8042c9fStephen Hines//
129b044ec938fd56355012851890c63974c8042c9fStephen Hines//===----------------------------------------------------------------------===//
139b044ec938fd56355012851890c63974c8042c9fStephen Hines
149b044ec938fd56355012851890c63974c8042c9fStephen Hines#include "ReaderWriter_2_9_func.h"
1523c4358f12bd9d0ba7166eceebd683db95a41b3fStephen Hines#include "llvm/IR/Function.h"
1623c4358f12bd9d0ba7166eceebd683db95a41b3fStephen Hines#include "llvm/IR/Instructions.h"
1723c4358f12bd9d0ba7166eceebd683db95a41b3fStephen Hines#include "llvm/IR/Module.h"
189b044ec938fd56355012851890c63974c8042c9fStephen Hines#include "llvm/Pass.h"
199b044ec938fd56355012851890c63974c8042c9fStephen Hinesusing namespace llvm;
209b044ec938fd56355012851890c63974c8042c9fStephen Hines
219b044ec938fd56355012851890c63974c8042c9fStephen Hinesnamespace {
229b044ec938fd56355012851890c63974c8042c9fStephen Hines  class WriteBitcodePass : public ModulePass {
239b044ec938fd56355012851890c63974c8042c9fStephen Hines    raw_ostream &OS; // raw_ostream to print on
24dbfe3fabb0b82d9c73e4a48a0bc3ebb6a9cda593Shih-wei Liao
259b044ec938fd56355012851890c63974c8042c9fStephen Hines  public:
269b044ec938fd56355012851890c63974c8042c9fStephen Hines    static char ID; // Pass identification, replacement for typeid
279b044ec938fd56355012851890c63974c8042c9fStephen Hines    explicit WriteBitcodePass(raw_ostream &o)
289b044ec938fd56355012851890c63974c8042c9fStephen Hines      : ModulePass(ID), OS(o) {}
299b044ec938fd56355012851890c63974c8042c9fStephen Hines
309b044ec938fd56355012851890c63974c8042c9fStephen Hines    const char *getPassName() const { return "Bitcode Writer"; }
319b044ec938fd56355012851890c63974c8042c9fStephen Hines
329b044ec938fd56355012851890c63974c8042c9fStephen Hines    bool runOnModule(Module &M) {
33dbfe3fabb0b82d9c73e4a48a0bc3ebb6a9cda593Shih-wei Liao      bool Changed = false;
349b044ec938fd56355012851890c63974c8042c9fStephen Hines      llvm_2_9_func::WriteBitcodeToFile(&M, OS);
35dbfe3fabb0b82d9c73e4a48a0bc3ebb6a9cda593Shih-wei Liao      return Changed;
369b044ec938fd56355012851890c63974c8042c9fStephen Hines    }
379b044ec938fd56355012851890c63974c8042c9fStephen Hines  };
389b044ec938fd56355012851890c63974c8042c9fStephen Hines}
399b044ec938fd56355012851890c63974c8042c9fStephen Hines
409b044ec938fd56355012851890c63974c8042c9fStephen Hineschar WriteBitcodePass::ID = 0;
419b044ec938fd56355012851890c63974c8042c9fStephen Hines
429b044ec938fd56355012851890c63974c8042c9fStephen Hines/// createBitcodeWriterPass - Create and return a pass that writes the module
439b044ec938fd56355012851890c63974c8042c9fStephen Hines/// to the specified ostream.
449b044ec938fd56355012851890c63974c8042c9fStephen Hinesllvm::ModulePass *llvm_2_9_func::createBitcodeWriterPass(llvm::raw_ostream &Str) {
459b044ec938fd56355012851890c63974c8042c9fStephen Hines  return new WriteBitcodePass(Str);
469b044ec938fd56355012851890c63974c8042c9fStephen Hines}
47