33 bool ShouldPreserveUseListOrder;
34 bool EmitSummaryIndex;
43 explicit WriteBitcodePass(
raw_ostream &o,
bool ShouldPreserveUseListOrder,
44 bool EmitSummaryIndex,
bool EmitModuleHash)
46 ShouldPreserveUseListOrder(ShouldPreserveUseListOrder),
47 EmitSummaryIndex(EmitSummaryIndex), EmitModuleHash(EmitModuleHash) {
51 StringRef getPassName()
const override {
return "Bitcode Writer"; }
53 bool runOnModule(
Module &M)
override {
56 ? &(getAnalysis<ModuleSummaryIndexWrapperPass>().getIndex())
78 bool ShouldPreserveUseListOrder,
79 bool EmitSummaryIndex,
bool EmitModuleHash) {
80 return new WriteBitcodePass(Str, ShouldPreserveUseListOrder,
81 EmitSummaryIndex, EmitModuleHash);
Pass interface - Implemented by all 'passes'.
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)
Get the result of an analysis pass for a given IR unit.
This class represents lattice values for constants.
A Module instance is used to store all the information related to an LLVM module. ...
This is the interface to build a ModuleSummaryIndex for a module.
This file provides a bitcode writing pass.
block Block Frequency true
Analysis pass to provide the ModuleSummaryIndex object.
INITIALIZE_PASS_BEGIN(WriteBitcodePass, "write-bitcode", "Write Bitcode", false, true) INITIALIZE_PASS_END(WriteBitcodePass
AnalysisUsage & addRequired()
#define INITIALIZE_PASS_DEPENDENCY(depName)
bool isBitcodeWriterPass(Pass *P)
Check whether a pass is a BitcodeWriterPass.
Class to hold module path string table and global value map, and encapsulate methods for operating on...
void initializeWriteBitcodePassPass(PassRegistry &)
A set of analyses that are preserved following a run of a transformation pass.
AnalysisID getPassID() const
getPassID - Return the PassID number that corresponds to this pass.
void WriteBitcodeToFile(const Module &M, raw_ostream &Out, bool ShouldPreserveUseListOrder=false, const ModuleSummaryIndex *Index=nullptr, bool GenerateHash=false, ModuleHash *ModHash=nullptr)
Write the specified module to the specified raw output stream.
Represent the analysis usage information of a pass.
static void write(bool isBE, void *P, T V)
static PreservedAnalyses all()
Construct a special preserved set that preserves all passes.
INITIALIZE_PASS_END(RegBankSelect, DEBUG_TYPE, "Assign register bank of generic virtual registers", false, false) RegBankSelect
Module.h This file contains the declarations for the Module class.
raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
void setPreservesAll()
Set by analyses that do not transform their input at all.
ModulePass * createBitcodeWriterPass(raw_ostream &Str, bool ShouldPreserveUseListOrder=false, bool EmitSummaryIndex=false, bool EmitModuleHash=false)
Create and return a pass that writes the module to the specified ostream.
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
PreservedAnalyses run(Module &M, ModuleAnalysisManager &)
Run the bitcode writer pass, and output the module to the selected output stream. ...
This class implements an extremely fast bulk output stream that can only output to a stream...
StringRef - Represent a constant reference to a string, i.e.
A container for analyses that lazily runs them and caches their results.
This header defines various interfaces for pass management in LLVM.
Legacy wrapper pass to provide the ModuleSummaryIndex object.