1e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner//===--- Bitcode/Writer/BitcodeWriterPass.cpp - Bitcode Writer ------------===// 2e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner// 3e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner// The LLVM Compiler Infrastructure 4e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner// 54ee451de366474b9c228b4e5fa573795a715216dChris Lattner// This file is distributed under the University of Illinois Open Source 64ee451de366474b9c228b4e5fa573795a715216dChris Lattner// License. See LICENSE.TXT for details. 7e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner// 8e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner//===----------------------------------------------------------------------===// 9e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner// 10e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner// BitcodeWriterPass implementation. 11e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner// 12e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner//===----------------------------------------------------------------------===// 13e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner 14e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner#include "llvm/Bitcode/ReaderWriter.h" 15e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner#include "llvm/Pass.h" 16e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattnerusing namespace llvm; 17e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner 18e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattnernamespace { 19e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner class WriteBitcodePass : public ModulePass { 20b515d75856f58a8b3b71d782eb00916d686329adChris Lattner raw_ostream &OS; // raw_ostream to print on 21e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner public: 22d1ce3b48e24b9e7d78cac590d1e4590a68c2e2ceDaniel Dunbar static char ID; // Pass identification, replacement for typeid 23d1ce3b48e24b9e7d78cac590d1e4590a68c2e2ceDaniel Dunbar explicit WriteBitcodePass(raw_ostream &o) 2490c579de5a383cee278acc3f7e7b9d0a656e6a35Owen Anderson : ModulePass(ID), OS(o) {} 25170a15e98dc6900df1ae40d03c5f0622d792fb45Joe Abbey 26bd76d661942c27ee0fe67a7d103ff91192e7d92dGordon Henriksen const char *getPassName() const { return "Bitcode Writer"; } 27170a15e98dc6900df1ae40d03c5f0622d792fb45Joe Abbey 28e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner bool runOnModule(Module &M) { 29b515d75856f58a8b3b71d782eb00916d686329adChris Lattner WriteBitcodeToFile(&M, OS); 30e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner return false; 31e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner } 32e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner }; 33e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner} 34e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner 35e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattnerchar WriteBitcodePass::ID = 0; 36e8e1e4bf8a7ced315b0d2ecfdab2478d7bbbe138Chris Lattner 37d1ce3b48e24b9e7d78cac590d1e4590a68c2e2ceDaniel Dunbar/// createBitcodeWriterPass - Create and return a pass that writes the module 38d1ce3b48e24b9e7d78cac590d1e4590a68c2e2ceDaniel Dunbar/// to the specified ostream. 39d1ce3b48e24b9e7d78cac590d1e4590a68c2e2ceDaniel DunbarModulePass *llvm::createBitcodeWriterPass(raw_ostream &Str) { 40d1ce3b48e24b9e7d78cac590d1e4590a68c2e2ceDaniel Dunbar return new WriteBitcodePass(Str); 41d1ce3b48e24b9e7d78cac590d1e4590a68c2e2ceDaniel Dunbar} 42