LLVM: include/llvm/Bitcode/BitcodeWriter.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_BITCODE_BITCODEWRITER_H

14#define LLVM_BITCODE_BITCODEWRITER_H

15

22#include

23#include

24

25namespace llvm {

26

30

32 std::unique_ptr Stream;

33

35

36

37

39

40 bool WroteStrtab = false, WroteSymtab = false;

41

43

44 std::vector<Module *> Mods;

45

46public:

47

50

52

53

54

55

56

57

58

59

61

62

63

65

66

67

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

89 bool ShouldPreserveUseListOrder = false,

91 bool GenerateHash = false,

93

94

95

96

97

98

99

100

104

109};

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

133 bool ShouldPreserveUseListOrder = false,

135 bool GenerateHash = false,

137

138

139

140

141

142

143

144

148

149

150

151

152

153

154

159

160

161

162

163

164

165

166

167

168

171 const std::vector<uint8_t> &CmdArgs);

172

173}

174

175#endif

This file defines the BumpPtrAllocator interface.

static cl::opt< LTOBitcodeEmbedding > EmbedBitcode("lto-embed-bitcode", cl::init(LTOBitcodeEmbedding::DoNotEmbed), cl::values(clEnumValN(LTOBitcodeEmbedding::DoNotEmbed, "none", "Do not embed"), clEnumValN(LTOBitcodeEmbedding::EmbedOptimized, "optimized", "Embed after all optimization passes"), clEnumValN(LTOBitcodeEmbedding::EmbedPostMergePreOptimized, "post-merge-pre-opt", "Embed post merge, but before optimizations")), cl::desc("Embed LLVM bitcode in object files produced by LTO"))

ModuleSummaryIndex.h This file contains the declarations the classes that hold the module index and s...

LLVM_ABI void writeThinLinkBitcode(const Module &M, const ModuleSummaryIndex &Index, const ModuleHash &ModHash)

Write the specified thin link bitcode file (i.e., the minimized bitcode file) to the buffer specified...

LLVM_ABI void writeIndex(const ModuleSummaryIndex *Index, const ModuleToSummariesForIndexTy *ModuleToSummariesForIndex, const GVSummaryPtrSet *DecSummaries)

LLVM_ABI void copyStrtab(StringRef Strtab)

Copy the string table for another module into this bitcode file.

LLVM_ABI void writeStrtab()

Write the bitcode file's string table.

LLVM_ABI ~BitcodeWriter()

LLVM_ABI void writeSymtab()

Attempt to write a symbol table to the bitcode file.

LLVM_ABI void writeModule(const Module &M, bool ShouldPreserveUseListOrder=false, const ModuleSummaryIndex *Index=nullptr, bool GenerateHash=false, ModuleHash *ModHash=nullptr)

Write the specified module to the buffer specified at construction time.

LLVM_ABI BitcodeWriter(SmallVectorImpl< char > &Buffer)

Create a BitcodeWriter that writes to Buffer.

Class to hold module path string table and global value map, and encapsulate methods for operating on...

A Module instance is used to store all the information related to an LLVM module.

This class consists of common code factored out of the SmallVector class to reduce code duplication b...

StringRef - Represent a constant reference to a string, i.e.

Utility for building string tables with deduplicated suffixes.

This class implements an extremely fast bulk output stream that can only output to a stream.

This is an optimization pass for GlobalISel generic memory operations.

std::unordered_set< GlobalValueSummary * > GVSummaryPtrSet

A set of global value summary pointers.

LLVM_ABI 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.

std::array< uint32_t, 5 > ModuleHash

160 bits SHA1

LLVM_ABI void writeThinLinkBitcodeToFile(const Module &M, raw_ostream &Out, const ModuleSummaryIndex &Index, const ModuleHash &ModHash)

Write the specified thin link bitcode file (i.e., the minimized bitcode file) to the given raw output...

LLVM_ABI void writeIndexToFile(const ModuleSummaryIndex &Index, raw_ostream &Out, const ModuleToSummariesForIndexTy *ModuleToSummariesForIndex=nullptr, const GVSummaryPtrSet *DecSummaries=nullptr)

Write the specified module summary index to the given raw output stream, where it will be written in ...

LLVM_ABI void embedBitcodeInModule(Module &M, MemoryBufferRef Buf, bool EmbedBitcode, bool EmbedCmdline, const std::vector< uint8_t > &CmdArgs)

If EmbedBitcode is set, save a copy of the llvm IR as data in the __LLVM,__bitcode section (....

std::map< std::string, GVSummaryMapTy, std::less<> > ModuleToSummariesForIndexTy

Map of a module name to the GUIDs and summaries we will import from that module.

BumpPtrAllocatorImpl<> BumpPtrAllocator

The standard BumpPtrAllocator which just uses the default template parameters.