1d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines//===--- Bitcode/Writer/BitcodeWriterPass.cpp - Bitcode Writer ------------===// 2d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines// 3d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines// The LLVM Compiler Infrastructure 4d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines// 5d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines// This file is distributed under the University of Illinois Open Source 6d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines// License. See LICENSE.TXT for details. 7d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines// 8d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines//===----------------------------------------------------------------------===// 9d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines// 10d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines// BitcodeWriterPass implementation. 11d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines// 12d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines//===----------------------------------------------------------------------===// 13d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines 14d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines#include "ReaderWriter_3_2.h" 1599d429070eb7c4c39fb7d74555031d518a4e0a79Stephen Hines#include "llvm/IR/Function.h" 1699d429070eb7c4c39fb7d74555031d518a4e0a79Stephen Hines#include "llvm/IR/Instructions.h" 1799d429070eb7c4c39fb7d74555031d518a4e0a79Stephen Hines#include "llvm/IR/Module.h" 18d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines#include "llvm/Pass.h" 19d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hinesusing namespace llvm; 20d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines 21d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hinesnamespace { 22d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines class WriteBitcodePass : public ModulePass { 23d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines raw_ostream &OS; // raw_ostream to print on 2499d429070eb7c4c39fb7d74555031d518a4e0a79Stephen Hines 25d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines public: 26d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines static char ID; // Pass identification, replacement for typeid 27d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines explicit WriteBitcodePass(raw_ostream &o) 28d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines : ModulePass(ID), OS(o) {} 29d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines 30d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines const char *getPassName() const { return "Bitcode Writer"; } 31d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines 32d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines bool runOnModule(Module &M) { 3399d429070eb7c4c39fb7d74555031d518a4e0a79Stephen Hines bool Changed = false; 34d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines llvm_3_2::WriteBitcodeToFile(&M, OS); 3599d429070eb7c4c39fb7d74555031d518a4e0a79Stephen Hines return Changed; 36d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines } 37d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines }; 38d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines} 39d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines 40d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hineschar WriteBitcodePass::ID = 0; 41d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines 42d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines/// createBitcodeWriterPass - Create and return a pass that writes the module 43d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines/// to the specified ostream. 44d711dec946b6408791ca59eb98e363ef04bbd4aaStephen HinesModulePass *llvm_3_2::createBitcodeWriterPass(raw_ostream &Str) { 45d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines return new WriteBitcodePass(Str); 46d711dec946b6408791ca59eb98e363ef04bbd4aaStephen Hines} 47