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