1b7bdfd65SChandler Carruth //===- BitcodeWriterPass.cpp - Bitcode writing pass -----------------------===// 27ef41710SChris Lattner // 37ef41710SChris Lattner // The LLVM Compiler Infrastructure 47ef41710SChris Lattner // 5f3ebc3f3SChris Lattner // This file is distributed under the University of Illinois Open Source 6f3ebc3f3SChris Lattner // License. See LICENSE.TXT for details. 77ef41710SChris Lattner // 87ef41710SChris Lattner //===----------------------------------------------------------------------===// 97ef41710SChris Lattner // 107ef41710SChris Lattner // BitcodeWriterPass implementation. 117ef41710SChris Lattner // 127ef41710SChris Lattner //===----------------------------------------------------------------------===// 137ef41710SChris Lattner 14b7bdfd65SChandler Carruth #include "llvm/Bitcode/BitcodeWriterPass.h" 157ef41710SChris Lattner #include "llvm/Bitcode/ReaderWriter.h" 16b7bdfd65SChandler Carruth #include "llvm/IR/Module.h" 17b7bdfd65SChandler Carruth #include "llvm/IR/PassManager.h" 18*a052ed63SDuncan P. N. Exon Smith #include "llvm/IR/UseListOrder.h" 197ef41710SChris Lattner #include "llvm/Pass.h" 207ef41710SChris Lattner using namespace llvm; 217ef41710SChris Lattner 22d174ce4aSChandler Carruth PreservedAnalyses BitcodeWriterPass::run(Module &M) { 23*a052ed63SDuncan P. N. Exon Smith WriteBitcodeToFile(&M, OS, shouldPreserveBitcodeUseListOrder()); 24b7bdfd65SChandler Carruth return PreservedAnalyses::all(); 25b7bdfd65SChandler Carruth } 26b7bdfd65SChandler Carruth 277ef41710SChris Lattner namespace { 287ef41710SChris Lattner class WriteBitcodePass : public ModulePass { 296973395cSChris Lattner raw_ostream &OS; // raw_ostream to print on 307ef41710SChris Lattner public: 31890d0debSDaniel Dunbar static char ID; // Pass identification, replacement for typeid 32890d0debSDaniel Dunbar explicit WriteBitcodePass(raw_ostream &o) 33a7aed186SOwen Anderson : ModulePass(ID), OS(o) {} 3435f398a9SGordon Henriksen 358548299aSCraig Topper const char *getPassName() const override { return "Bitcode Writer"; } 367ef41710SChris Lattner 378548299aSCraig Topper bool runOnModule(Module &M) override { 38*a052ed63SDuncan P. N. Exon Smith WriteBitcodeToFile(&M, OS, shouldPreserveBitcodeUseListOrder()); 397ef41710SChris Lattner return false; 407ef41710SChris Lattner } 417ef41710SChris Lattner }; 427ef41710SChris Lattner } 437ef41710SChris Lattner 447ef41710SChris Lattner char WriteBitcodePass::ID = 0; 457ef41710SChris Lattner 46890d0debSDaniel Dunbar ModulePass *llvm::createBitcodeWriterPass(raw_ostream &Str) { 47890d0debSDaniel Dunbar return new WriteBitcodePass(Str); 48890d0debSDaniel Dunbar } 49