1//===-- BitcodeWriterPass.h - Bitcode writing pass --------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9/// \file 10/// 11/// This file provides a bitcode writing pass. 12/// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_BITCODE_BITCODE_WRITER_PASS_H 16#define LLVM_BITCODE_BITCODE_WRITER_PASS_H 17 18#include "llvm/ADT/StringRef.h" 19 20namespace llvm { 21class Module; 22class ModulePass; 23class raw_ostream; 24class PreservedAnalyses; 25 26/// \brief Create and return a pass that writes the module to the specified 27/// ostream. Note that this pass is designed for use with the legacy pass 28/// manager. 29ModulePass *createBitcodeWriterPass(raw_ostream &Str); 30 31/// \brief Pass for writing a module of IR out to a bitcode file. 32/// 33/// Note that this is intended for use with the new pass manager. To construct 34/// a pass for the legacy pass manager, use the function above. 35class BitcodeWriterPass { 36 raw_ostream &OS; 37 38public: 39 /// \brief Construct a bitcode writer pass around a particular output stream. 40 explicit BitcodeWriterPass(raw_ostream &OS) : OS(OS) {} 41 42 /// \brief Run the bitcode writer pass, and output the module to the selected 43 /// output stream. 44 PreservedAnalyses run(Module *M); 45 46 static StringRef name() { return "BitcodeWriterPass"; } 47}; 48 49} 50 51#endif 52