14cc499d6e5ec602309501873449c938af61170b2Stephen Hines//===--- Bitcode/Writer/BitcodeWriterPass.cpp - Bitcode Writer ------------===// 24cc499d6e5ec602309501873449c938af61170b2Stephen Hines// 34cc499d6e5ec602309501873449c938af61170b2Stephen Hines// The LLVM Compiler Infrastructure 44cc499d6e5ec602309501873449c938af61170b2Stephen Hines// 54cc499d6e5ec602309501873449c938af61170b2Stephen Hines// This file is distributed under the University of Illinois Open Source 64cc499d6e5ec602309501873449c938af61170b2Stephen Hines// License. See LICENSE.TXT for details. 74cc499d6e5ec602309501873449c938af61170b2Stephen Hines// 84cc499d6e5ec602309501873449c938af61170b2Stephen Hines//===----------------------------------------------------------------------===// 94cc499d6e5ec602309501873449c938af61170b2Stephen Hines// 104cc499d6e5ec602309501873449c938af61170b2Stephen Hines// BitcodeWriterPass implementation. 114cc499d6e5ec602309501873449c938af61170b2Stephen Hines// 124cc499d6e5ec602309501873449c938af61170b2Stephen Hines//===----------------------------------------------------------------------===// 134cc499d6e5ec602309501873449c938af61170b2Stephen Hines 144cc499d6e5ec602309501873449c938af61170b2Stephen Hines#include "ReaderWriter_2_9.h" 1523c4358f12bd9d0ba7166eceebd683db95a41b3fStephen Hines#include "llvm/IR/Function.h" 1623c4358f12bd9d0ba7166eceebd683db95a41b3fStephen Hines#include "llvm/IR/Instructions.h" 1723c4358f12bd9d0ba7166eceebd683db95a41b3fStephen Hines#include "llvm/IR/Module.h" 184cc499d6e5ec602309501873449c938af61170b2Stephen Hines#include "llvm/Pass.h" 194cc499d6e5ec602309501873449c938af61170b2Stephen Hinesusing namespace llvm; 204cc499d6e5ec602309501873449c938af61170b2Stephen Hines 214cc499d6e5ec602309501873449c938af61170b2Stephen Hinesnamespace { 224cc499d6e5ec602309501873449c938af61170b2Stephen Hines class WriteBitcodePass : public ModulePass { 234cc499d6e5ec602309501873449c938af61170b2Stephen Hines raw_ostream &OS; // raw_ostream to print on 24dbfe3fabb0b82d9c73e4a48a0bc3ebb6a9cda593Shih-wei Liao 254cc499d6e5ec602309501873449c938af61170b2Stephen Hines public: 264cc499d6e5ec602309501873449c938af61170b2Stephen Hines static char ID; // Pass identification, replacement for typeid 274cc499d6e5ec602309501873449c938af61170b2Stephen Hines explicit WriteBitcodePass(raw_ostream &o) 284cc499d6e5ec602309501873449c938af61170b2Stephen Hines : ModulePass(ID), OS(o) {} 294cc499d6e5ec602309501873449c938af61170b2Stephen Hines 304cc499d6e5ec602309501873449c938af61170b2Stephen Hines const char *getPassName() const { return "Bitcode Writer"; } 314cc499d6e5ec602309501873449c938af61170b2Stephen Hines 324cc499d6e5ec602309501873449c938af61170b2Stephen Hines bool runOnModule(Module &M) { 33dbfe3fabb0b82d9c73e4a48a0bc3ebb6a9cda593Shih-wei Liao bool Changed = false; 344cc499d6e5ec602309501873449c938af61170b2Stephen Hines llvm_2_9::WriteBitcodeToFile(&M, OS); 35dbfe3fabb0b82d9c73e4a48a0bc3ebb6a9cda593Shih-wei Liao return Changed; 364cc499d6e5ec602309501873449c938af61170b2Stephen Hines } 374cc499d6e5ec602309501873449c938af61170b2Stephen Hines }; 384cc499d6e5ec602309501873449c938af61170b2Stephen Hines} 394cc499d6e5ec602309501873449c938af61170b2Stephen Hines 404cc499d6e5ec602309501873449c938af61170b2Stephen Hineschar WriteBitcodePass::ID = 0; 414cc499d6e5ec602309501873449c938af61170b2Stephen Hines 424cc499d6e5ec602309501873449c938af61170b2Stephen Hines/// createBitcodeWriterPass - Create and return a pass that writes the module 434cc499d6e5ec602309501873449c938af61170b2Stephen Hines/// to the specified ostream. 444cc499d6e5ec602309501873449c938af61170b2Stephen Hinesllvm::ModulePass *llvm_2_9::createBitcodeWriterPass(llvm::raw_ostream &Str) { 454cc499d6e5ec602309501873449c938af61170b2Stephen Hines return new WriteBitcodePass(Str); 464cc499d6e5ec602309501873449c938af61170b2Stephen Hines} 47