LLVM: lib/Bitcode/Writer/BitcodeWriter.cpp File Reference (original) (raw)

Go to the source code of this file.

Namespaces
namespace llvm
This is an optimization pass for GlobalISel generic memory operations.
Macros
#define HANDLE_MDNODE_LEAF(CLASS)
#define HANDLE_MDNODE_LEAF(CLASS)
#define HANDLE_MDNODE_LEAF(CLASS)
Enumerations
enum StringEncoding { SE_Char6, SE_Fixed7, SE_Fixed8 }
enum MetadataAbbrev : unsigned { LastPlusOne }
Functions
static unsigned getEncodedCastOpcode (unsigned Opcode)
static unsigned getEncodedUnaryOpcode (unsigned Opcode)
static unsigned getEncodedBinaryOpcode (unsigned Opcode)
static unsigned getEncodedRMWOperation (AtomicRMWInst::BinOp Op)
static unsigned getEncodedOrdering (AtomicOrdering Ordering)
static void writeStringRecord (BitstreamWriter &Stream, unsigned Code, StringRef Str, unsigned AbbrevToUse)
static uint64_t getAttrKindEncoding (Attribute::AttrKind Kind)
static void emitSignedInt64 (SmallVectorImpl< uint64_t > &Vals, uint64_t V)
static void emitWideAPInt (SmallVectorImpl< uint64_t > &Vals, const APInt &A)
static void emitConstantRange (SmallVectorImpl< uint64_t > &Record, const ConstantRange &CR, bool EmitBitWidth)
static unsigned getEncodedLinkage (const GlobalValue::LinkageTypes Linkage)
static unsigned getEncodedLinkage (const GlobalValue &GV)
static uint64_t getEncodedFFlags (FunctionSummary::FFlags Flags)
static uint64_t getEncodedGVSummaryFlags (GlobalValueSummary::GVFlags Flags, bool ImportAsDecl=false)
static uint64_t getEncodedGVarFlags (GlobalVarSummary::GVarFlags Flags)
static uint64_t getEncodedHotnessCallEdgeInfo (const CalleeInfo &CI)
static uint64_t getEncodedRelBFCallEdgeInfo (const CalleeInfo &CI)
static unsigned getEncodedVisibility (const GlobalValue &GV)
static unsigned getEncodedDLLStorageClass (const GlobalValue &GV)
static unsigned getEncodedThreadLocalMode (const GlobalValue &GV)
static unsigned getEncodedComdatSelectionKind (const Comdat &C)
static unsigned getEncodedUnnamedAddr (const GlobalValue &GV)
static StringEncoding getStringEncoding (StringRef Str)
Determine the encoding to use for the given string name and length.
static unsigned serializeSanitizerMetadata (const GlobalValue::SanitizerMetadata &Meta)
static uint64_t getOptimizationFlags (const Value *V)
template
static void writeFunctionTypeMetadataRecords (BitstreamWriter &Stream, FunctionSummary *FS, Fn GetValueID)
Write the function type metadata related records that need to appear before a function summary entry (whether per-module or combined).
static void getReferencedTypeIds (FunctionSummary *FS, std::set< GlobalValue::GUID > &ReferencedTypeIds)
Collect type IDs from type tests used by function.
static void writeWholeProgramDevirtResolutionByArg (SmallVector< uint64_t, 64 > &NameVals, const std::vector< uint64_t > &args, const WholeProgramDevirtResolution::ByArg &ByArg)
static void writeWholeProgramDevirtResolution (SmallVector< uint64_t, 64 > &NameVals, StringTableBuilder &StrtabBuilder, uint64_t Id, const WholeProgramDevirtResolution &Wpd)
static void writeTypeIdSummaryRecord (SmallVector< uint64_t, 64 > &NameVals, StringTableBuilder &StrtabBuilder, StringRef Id, const TypeIdSummary &Summary)
static void writeTypeIdCompatibleVtableSummaryRecord (SmallVector< uint64_t, 64 > &NameVals, StringTableBuilder &StrtabBuilder, StringRef Id, const TypeIdCompatibleVtableInfo &Summary, ValueEnumerator &VE)
static void collectMemProfCallStacks (FunctionSummary *FS, std::function< LinearFrameId(unsigned)> GetStackIndex, MapVector< CallStackId, llvm::SmallVector< LinearFrameId > > &CallStacks)
static DenseMap< CallStackId, LinearCallStackId > writeMemoryProfileRadixTree (MapVector< CallStackId, llvm::SmallVector< LinearFrameId > > &&CallStacks, BitstreamWriter &Stream, unsigned RadixAbbrev)
static void writeFunctionHeapProfileRecords (BitstreamWriter &Stream, FunctionSummary *FS, unsigned CallsiteAbbrev, unsigned AllocAbbrev, unsigned ContextIdAbbvId, bool PerModule, std::function< unsigned(const ValueInfo &VI)> GetValueID, std::function< unsigned(unsigned)> GetStackIndex, bool WriteContextSizeInfoIndex, DenseMap< CallStackId, LinearCallStackId > &CallStackPos, CallStackId &CallStackCount)
static void writeIdentificationBlock (BitstreamWriter &Stream)
Create the "IDENTIFICATION_BLOCK_ID" containing a single string with the current llvm version, and a record for the epoch number.
static void writeInt32ToBuffer (uint32_t Value, SmallVectorImpl< char > &Buffer, uint32_t &Position)
static void emitDarwinBCHeaderAndTrailer (SmallVectorImpl< char > &Buffer, const Triple &TT)
If generating a bc file on darwin, we have to emit a header and trailer to make it compatible with the system archiver.
static void writeBitcodeHeader (BitstreamWriter &Stream)
Helper to write the header common to all bitcode files.
static const char * getSectionNameForBitcode (const Triple &T)
static const char * getSectionNameForCommandline (const Triple &T)
Variables
static cl::opt< unsigned > IndexThreshold ("bitcode-mdindex-threshold", cl::Hidden, cl::init(25), cl::desc("Number of metadatas above which we emit an index " "to enable lazy-loading"))
static cl::opt< uint32_t > FlushThreshold ("bitcode-flush-threshold", cl::Hidden, cl::init(512), cl::desc("The threshold (unit M) for flushing LLVM bitcode."))
static cl::opt< bool > WriteRelBFToSummary ("write-relbf-to-summary", cl::Hidden, cl::init(false), cl::desc("Write relative block frequency to function summary "))
static cl::opt< bool > CombinedIndexMemProfContext ("combined-index-memprof-context", cl::Hidden, cl::init(true), cl::desc(""))
static cl::opt< bool > PreserveBitcodeUseListOrder ("preserve-bc-uselistorder", cl::Hidden, cl::init(true), cl::desc("Preserve use-list order when writing LLVM bitcode."))

HANDLE_MDNODE_LEAF [1/3]

#define HANDLE_MDNODE_LEAF ( CLASS )

HANDLE_MDNODE_LEAF [2/3]

#define HANDLE_MDNODE_LEAF ( CLASS )

HANDLE_MDNODE_LEAF [3/3]

#define HANDLE_MDNODE_LEAF ( CLASS )

Value:

case Metadata::CLASS##Kind: \

if (MDAbbrevs) \

(*MDAbbrevs)[MetadataAbbrev::CLASS##AbbrevID]); \

else \

continue;

LLVM_ABI Error write(MCStreamer &Out, ArrayRef< std::string > Inputs, OnCuIndexOverflow OverflowOptValue, Dwarf64StrOffsetsPromotion StrOffsetsOptValue)

decltype(auto) cast(const From &Val)

cast - Return the argument parameter cast to the specified type.

Definition at line 2520 of file BitcodeWriter.cpp.

MetadataAbbrev

StringEncoding

collectMemProfCallStacks()

emitConstantRange()

emitDarwinBCHeaderAndTrailer()

If generating a bc file on darwin, we have to emit a header and trailer to make it compatible with the system archiver.

To do this we emit the following header, and then emit a trailer that pads the file out to be a multiple of 16 bytes.

struct bc_header { uint32_t Magic; // 0x0B17C0DE uint32_t Version; // Version, currently always 0. uint32_t BitcodeOffset; // Offset to traditional bitcode file. uint32_t BitcodeSize; // Size of traditional bitcode file. uint32_t CPUType; // CPU specifier. ... potentially more later ... };

Definition at line 5436 of file BitcodeWriter.cpp.

References llvm::Triple::arm, assert(), llvm::BWH_HeaderSize, llvm::Triple::ppc, llvm::Triple::ppc64, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::Triple::thumb, writeInt32ToBuffer(), llvm::Triple::x86, and llvm::Triple::x86_64.

Referenced by llvm::WriteBitcodeToFile().

emitSignedInt64()

emitWideAPInt()

getAttrKindEncoding()

uint64_t getAttrKindEncoding ( Attribute::AttrKind Kind) static

Definition at line 757 of file BitcodeWriter.cpp.

References llvm::bitc::ATTR_KIND_ALIGNMENT, llvm::bitc::ATTR_KIND_ALLOC_ALIGN, llvm::bitc::ATTR_KIND_ALLOC_KIND, llvm::bitc::ATTR_KIND_ALLOC_SIZE, llvm::bitc::ATTR_KIND_ALLOCATED_POINTER, llvm::bitc::ATTR_KIND_ALWAYS_INLINE, llvm::bitc::ATTR_KIND_BUILTIN, llvm::bitc::ATTR_KIND_BY_VAL, llvm::bitc::ATTR_KIND_BYREF, llvm::bitc::ATTR_KIND_CAPTURES, llvm::bitc::ATTR_KIND_COLD, llvm::bitc::ATTR_KIND_CONVERGENT, llvm::bitc::ATTR_KIND_CORO_ELIDE_SAFE, llvm::bitc::ATTR_KIND_CORO_ONLY_DESTROY_WHEN_COMPLETE, llvm::bitc::ATTR_KIND_DEAD_ON_RETURN, llvm::bitc::ATTR_KIND_DEAD_ON_UNWIND, llvm::bitc::ATTR_KIND_DEREFERENCEABLE, llvm::bitc::ATTR_KIND_DEREFERENCEABLE_OR_NULL, llvm::bitc::ATTR_KIND_DISABLE_SANITIZER_INSTRUMENTATION, llvm::bitc::ATTR_KIND_ELEMENTTYPE, llvm::bitc::ATTR_KIND_FNRETTHUNK_EXTERN, llvm::bitc::ATTR_KIND_HOT, llvm::bitc::ATTR_KIND_HYBRID_PATCHABLE, llvm::bitc::ATTR_KIND_IMMARG, llvm::bitc::ATTR_KIND_IN_ALLOCA, llvm::bitc::ATTR_KIND_IN_REG, llvm::bitc::ATTR_KIND_INITIALIZES, llvm::bitc::ATTR_KIND_INLINE_HINT, llvm::bitc::ATTR_KIND_JUMP_TABLE, llvm::bitc::ATTR_KIND_MEMORY, llvm::bitc::ATTR_KIND_MIN_SIZE, llvm::bitc::ATTR_KIND_MUSTPROGRESS, llvm::bitc::ATTR_KIND_NAKED, llvm::bitc::ATTR_KIND_NEST, llvm::bitc::ATTR_KIND_NO_ALIAS, llvm::bitc::ATTR_KIND_NO_BUILTIN, llvm::bitc::ATTR_KIND_NO_CALLBACK, llvm::bitc::ATTR_KIND_NO_CREATE_UNDEF_OR_POISON, llvm::bitc::ATTR_KIND_NO_DIVERGENCE_SOURCE, llvm::bitc::ATTR_KIND_NO_DUPLICATE, llvm::bitc::ATTR_KIND_NO_EXT, llvm::bitc::ATTR_KIND_NO_IMPLICIT_FLOAT, llvm::bitc::ATTR_KIND_NO_INLINE, llvm::bitc::ATTR_KIND_NO_MERGE, llvm::bitc::ATTR_KIND_NO_PROFILE, llvm::bitc::ATTR_KIND_NO_RECURSE, llvm::bitc::ATTR_KIND_NO_RED_ZONE, llvm::bitc::ATTR_KIND_NO_RETURN, llvm::bitc::ATTR_KIND_NO_SANITIZE_BOUNDS, llvm::bitc::ATTR_KIND_NO_SANITIZE_COVERAGE, llvm::bitc::ATTR_KIND_NO_UNWIND, llvm::bitc::ATTR_KIND_NOCF_CHECK, llvm::bitc::ATTR_KIND_NOFPCLASS, llvm::bitc::ATTR_KIND_NOFREE, llvm::bitc::ATTR_KIND_NON_LAZY_BIND, llvm::bitc::ATTR_KIND_NON_NULL, llvm::bitc::ATTR_KIND_NOSYNC, llvm::bitc::ATTR_KIND_NOUNDEF, llvm::bitc::ATTR_KIND_NULL_POINTER_IS_VALID, llvm::bitc::ATTR_KIND_OPT_FOR_FUZZING, llvm::bitc::ATTR_KIND_OPTIMIZE_FOR_DEBUGGING, llvm::bitc::ATTR_KIND_OPTIMIZE_FOR_SIZE, llvm::bitc::ATTR_KIND_OPTIMIZE_NONE, llvm::bitc::ATTR_KIND_PREALLOCATED, llvm::bitc::ATTR_KIND_PRESPLIT_COROUTINE, llvm::bitc::ATTR_KIND_RANGE, llvm::bitc::ATTR_KIND_READ_NONE, llvm::bitc::ATTR_KIND_READ_ONLY, llvm::bitc::ATTR_KIND_RETURNED, llvm::bitc::ATTR_KIND_RETURNS_TWICE, llvm::bitc::ATTR_KIND_S_EXT, llvm::bitc::ATTR_KIND_SAFESTACK, llvm::bitc::ATTR_KIND_SANITIZE_ADDRESS, llvm::bitc::ATTR_KIND_SANITIZE_ALLOC_TOKEN, llvm::bitc::ATTR_KIND_SANITIZE_HWADDRESS, llvm::bitc::ATTR_KIND_SANITIZE_MEMORY, llvm::bitc::ATTR_KIND_SANITIZE_MEMTAG, llvm::bitc::ATTR_KIND_SANITIZE_NUMERICAL_STABILITY, llvm::bitc::ATTR_KIND_SANITIZE_REALTIME, llvm::bitc::ATTR_KIND_SANITIZE_REALTIME_BLOCKING, llvm::bitc::ATTR_KIND_SANITIZE_THREAD, llvm::bitc::ATTR_KIND_SANITIZE_TYPE, llvm::bitc::ATTR_KIND_SHADOWCALLSTACK, llvm::bitc::ATTR_KIND_SKIP_PROFILE, llvm::bitc::ATTR_KIND_SPECULATABLE, llvm::bitc::ATTR_KIND_SPECULATIVE_LOAD_HARDENING, llvm::bitc::ATTR_KIND_STACK_ALIGNMENT, llvm::bitc::ATTR_KIND_STACK_PROTECT, llvm::bitc::ATTR_KIND_STACK_PROTECT_REQ, llvm::bitc::ATTR_KIND_STACK_PROTECT_STRONG, llvm::bitc::ATTR_KIND_STRICT_FP, llvm::bitc::ATTR_KIND_STRUCT_RET, llvm::bitc::ATTR_KIND_SWIFT_ASYNC, llvm::bitc::ATTR_KIND_SWIFT_ERROR, llvm::bitc::ATTR_KIND_SWIFT_SELF, llvm::bitc::ATTR_KIND_UW_TABLE, llvm::bitc::ATTR_KIND_VSCALE_RANGE, llvm::bitc::ATTR_KIND_WILLRETURN, llvm::bitc::ATTR_KIND_WRITABLE, llvm::bitc::ATTR_KIND_WRITEONLY, llvm::bitc::ATTR_KIND_Z_EXT, llvm::Attribute::EmptyKey, llvm::Attribute::EndAttrKinds, llvm_unreachable, llvm::Attribute::None, and llvm::Attribute::TombstoneKey.

getEncodedBinaryOpcode()

Definition at line 672 of file BitcodeWriter.cpp.

References llvm::bitc::BINOP_ADD, llvm::bitc::BINOP_AND, llvm::bitc::BINOP_ASHR, llvm::bitc::BINOP_LSHR, llvm::bitc::BINOP_MUL, llvm::bitc::BINOP_OR, llvm::bitc::BINOP_SDIV, llvm::bitc::BINOP_SHL, llvm::bitc::BINOP_SREM, llvm::bitc::BINOP_SUB, llvm::bitc::BINOP_UDIV, llvm::bitc::BINOP_UREM, llvm::bitc::BINOP_XOR, and llvm_unreachable.

getEncodedCastOpcode()

Definition at line 645 of file BitcodeWriter.cpp.

References llvm::bitc::CAST_ADDRSPACECAST, llvm::bitc::CAST_BITCAST, llvm::bitc::CAST_FPEXT, llvm::bitc::CAST_FPTOSI, llvm::bitc::CAST_FPTOUI, llvm::bitc::CAST_FPTRUNC, llvm::bitc::CAST_INTTOPTR, llvm::bitc::CAST_PTRTOADDR, llvm::bitc::CAST_PTRTOINT, llvm::bitc::CAST_SEXT, llvm::bitc::CAST_SITOFP, llvm::bitc::CAST_TRUNC, llvm::bitc::CAST_UITOFP, llvm::bitc::CAST_ZEXT, and llvm_unreachable.

getEncodedComdatSelectionKind()

Definition at line 1396 of file BitcodeWriter.cpp.

References llvm::Comdat::Any, llvm::CallingConv::C, llvm::bitc::COMDAT_SELECTION_KIND_ANY, llvm::bitc::COMDAT_SELECTION_KIND_EXACT_MATCH, llvm::bitc::COMDAT_SELECTION_KIND_LARGEST, llvm::bitc::COMDAT_SELECTION_KIND_NO_DUPLICATES, llvm::bitc::COMDAT_SELECTION_KIND_SAME_SIZE, llvm::Comdat::ExactMatch, llvm::Comdat::Largest, llvm_unreachable, llvm::Comdat::NoDeduplicate, and llvm::Comdat::SameSize.

getEncodedDLLStorageClass()

getEncodedFFlags()

getEncodedGVarFlags()

getEncodedGVSummaryFlags()

getEncodedHotnessCallEdgeInfo()

getEncodedLinkage() [1/2]

getEncodedLinkage() [2/2]

Definition at line 1272 of file BitcodeWriter.cpp.

References llvm::GlobalValue::AppendingLinkage, llvm::GlobalValue::AvailableExternallyLinkage, llvm::GlobalValue::CommonLinkage, llvm::GlobalValue::ExternalLinkage, llvm::GlobalValue::ExternalWeakLinkage, llvm::GlobalValue::InternalLinkage, Linkage, llvm::GlobalValue::LinkOnceAnyLinkage, llvm::GlobalValue::LinkOnceODRLinkage, llvm_unreachable, llvm::GlobalValue::PrivateLinkage, llvm::GlobalValue::WeakAnyLinkage, and llvm::GlobalValue::WeakODRLinkage.

Referenced by getEncodedLinkage().

getEncodedOrdering()

Definition at line 729 of file BitcodeWriter.cpp.

References llvm::Acquire, llvm::AcquireRelease, llvm_unreachable, llvm::Monotonic, llvm::NotAtomic, llvm::bitc::ORDERING_ACQREL, llvm::bitc::ORDERING_ACQUIRE, llvm::bitc::ORDERING_MONOTONIC, llvm::bitc::ORDERING_NOTATOMIC, llvm::bitc::ORDERING_RELEASE, llvm::bitc::ORDERING_SEQCST, llvm::bitc::ORDERING_UNORDERED, llvm::Release, llvm::SequentiallyConsistent, and llvm::Unordered.

getEncodedRelBFCallEdgeInfo()

getEncodedRMWOperation()

Definition at line 696 of file BitcodeWriter.cpp.

References llvm::AtomicRMWInst::Add, llvm::AtomicRMWInst::And, llvm::AtomicRMWInst::FAdd, llvm::AtomicRMWInst::FMax, llvm::AtomicRMWInst::FMaximum, llvm::AtomicRMWInst::FMin, llvm::AtomicRMWInst::FMinimum, llvm::AtomicRMWInst::FSub, llvm_unreachable, llvm::AtomicRMWInst::Max, llvm::AtomicRMWInst::Min, llvm::AtomicRMWInst::Nand, llvm::AtomicRMWInst::Or, llvm::bitc::RMW_ADD, llvm::bitc::RMW_AND, llvm::bitc::RMW_FADD, llvm::bitc::RMW_FMAX, llvm::bitc::RMW_FMAXIMUM, llvm::bitc::RMW_FMIN, llvm::bitc::RMW_FMINIMUM, llvm::bitc::RMW_FSUB, llvm::bitc::RMW_MAX, llvm::bitc::RMW_MIN, llvm::bitc::RMW_NAND, llvm::bitc::RMW_OR, llvm::bitc::RMW_SUB, llvm::bitc::RMW_UDEC_WRAP, llvm::bitc::RMW_UINC_WRAP, llvm::bitc::RMW_UMAX, llvm::bitc::RMW_UMIN, llvm::bitc::RMW_USUB_COND, llvm::bitc::RMW_USUB_SAT, llvm::bitc::RMW_XCHG, llvm::bitc::RMW_XOR, llvm::AtomicRMWInst::Sub, llvm::AtomicRMWInst::UDecWrap, llvm::AtomicRMWInst::UIncWrap, llvm::AtomicRMWInst::UMax, llvm::AtomicRMWInst::UMin, llvm::AtomicRMWInst::USubCond, llvm::AtomicRMWInst::USubSat, llvm::AtomicRMWInst::Xchg, and llvm::AtomicRMWInst::Xor.

getEncodedThreadLocalMode()

getEncodedUnaryOpcode()

getEncodedUnnamedAddr()

getEncodedVisibility()

getOptimizationFlags()

Definition at line 1736 of file BitcodeWriter.cpp.

References llvm::bitc::AllowContract, llvm::bitc::AllowReassoc, llvm::bitc::AllowReciprocal, llvm::bitc::ApproxFunc, llvm::dyn_cast(), GEP, llvm::bitc::GEP_INBOUNDS, llvm::bitc::GEP_NUSW, llvm::bitc::GEP_NUW, llvm::bitc::ICMP_SAME_SIGN, llvm::bitc::NoInfs, llvm::bitc::NoNaNs, llvm::bitc::NoSignedZeros, llvm::bitc::OBO_NO_SIGNED_WRAP, llvm::bitc::OBO_NO_UNSIGNED_WRAP, llvm::bitc::PDI_DISJOINT, llvm::bitc::PEO_EXACT, llvm::bitc::PNNI_NON_NEG, llvm::bitc::TIO_NO_SIGNED_WRAP, and llvm::bitc::TIO_NO_UNSIGNED_WRAP.

getReferencedTypeIds()

getSectionNameForBitcode()

Definition at line 5820 of file BitcodeWriter.cpp.

References llvm::Triple::AMD, llvm::Triple::COFF, llvm::Triple::DXContainer, llvm::Triple::ELF, llvm::Triple::GOFF, llvm_unreachable, llvm::Triple::MachO, llvm::Triple::SPIRV, T, llvm::Triple::UnknownObjectFormat, llvm::Triple::Wasm, and llvm::Triple::XCOFF.

Referenced by llvm::embedBitcodeInModule().

getSectionNameForCommandline()

Definition at line 5847 of file BitcodeWriter.cpp.

References llvm::Triple::AMD, llvm::Triple::COFF, llvm::Triple::DXContainer, llvm::Triple::ELF, llvm::Triple::GOFF, llvm_unreachable, llvm::Triple::MachO, llvm::Triple::SPIRV, T, llvm::Triple::UnknownObjectFormat, llvm::Triple::Wasm, and llvm::Triple::XCOFF.

Referenced by llvm::embedBitcodeInModule().

getStringEncoding()

serializeSanitizerMetadata()

writeBitcodeHeader()

writeFunctionHeapProfileRecords()

void writeFunctionHeapProfileRecords ( BitstreamWriter & Stream, FunctionSummary * FS, unsigned CallsiteAbbrev, unsigned AllocAbbrev, unsigned ContextIdAbbvId, bool PerModule, std::function< unsigned(const ValueInfo &VI)> GetValueID, std::function< unsigned(unsigned)> GetStackIndex, bool WriteContextSizeInfoIndex, DenseMap< CallStackId, LinearCallStackId > & CallStackPos, CallStackId & CallStackCount ) static

Definition at line 4462 of file BitcodeWriter.cpp.

References llvm::append_range(), assert(), CombinedIndexMemProfContext, llvm::BitstreamWriter::EmitRecord(), llvm::bitc::FS_ALLOC_CONTEXT_IDS, llvm::bitc::FS_COMBINED_ALLOC_INFO, llvm::bitc::FS_COMBINED_ALLOC_INFO_NO_CONTEXT, llvm::bitc::FS_COMBINED_CALLSITE_INFO, llvm::bitc::FS_PERMODULE_ALLOC_INFO, llvm::bitc::FS_PERMODULE_CALLSITE_INFO, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorImpl< T >::reserve(), and llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::size().

writeFunctionTypeMetadataRecords()

Write the function type metadata related records that need to appear before a function summary entry (whether per-module or combined).

Definition at line 4259 of file BitcodeWriter.cpp.

References llvm::append_range(), assert(), Call, llvm::BitstreamWriter::EmitRecord(), emitSignedInt64(), llvm::bitc::FS_PARAM_ACCESS, llvm::bitc::FS_TYPE_CHECKED_LOAD_CONST_VCALL, llvm::bitc::FS_TYPE_CHECKED_LOAD_VCALLS, llvm::bitc::FS_TYPE_TEST_ASSUME_CONST_VCALL, llvm::bitc::FS_TYPE_TEST_ASSUME_VCALLS, llvm::bitc::FS_TYPE_TESTS, Range, and llvm::FunctionSummary::ParamAccess::RangeWidth.

writeIdentificationBlock()

Create the "IDENTIFICATION_BLOCK_ID" containing a single string with the current llvm version, and a record for the epoch number.

Definition at line 5312 of file BitcodeWriter.cpp.

References llvm::BitCodeAbbrevOp::Array, llvm::bitc::BITCODE_CURRENT_EPOCH, llvm::BitCodeAbbrevOp::Char6, llvm::BitstreamWriter::EmitAbbrev(), llvm::BitstreamWriter::EmitRecord(), llvm::BitstreamWriter::EnterSubblock(), llvm::BitstreamWriter::ExitBlock(), llvm::bitc::IDENTIFICATION_BLOCK_ID, llvm::bitc::IDENTIFICATION_CODE_EPOCH, llvm::bitc::IDENTIFICATION_CODE_STRING, llvm::BitCodeAbbrevOp::VBR, and writeStringRecord().

writeInt32ToBuffer()

writeMemoryProfileRadixTree()

writeStringRecord()

writeTypeIdCompatibleVtableSummaryRecord()

writeTypeIdSummaryRecord()

writeWholeProgramDevirtResolution()

writeWholeProgramDevirtResolutionByArg()

CombinedIndexMemProfContext

cl::opt< bool > CombinedIndexMemProfContext("combined-index-memprof-context", cl::Hidden, cl::init(true), cl::desc("")) ( "combined-index-memprof-context" , cl::Hidden , cl::init(true) , cl::desc("") ) static

FlushThreshold

cl::opt< uint32_t > FlushThreshold("bitcode-flush-threshold", cl::Hidden, cl::init(512), cl::desc("The threshold (unit M) for flushing LLVM bitcode.")) ( "bitcode-flush-threshold" , cl::Hidden , cl::init(512) , cl::desc("The threshold (unit M) for flushing LLVM bitcode.") ) static

IndexThreshold

cl::opt< unsigned > IndexThreshold("bitcode-mdindex-threshold", cl::Hidden, cl::init(25), cl::desc("Number of metadatas above which we emit an index " "to enable lazy-loading")) ( "bitcode-mdindex-threshold" , cl::Hidden , cl::init(25) , cl::desc("Number of metadatas above which we emit an index " "to enable lazy-loading") ) static

PreserveBitcodeUseListOrder

cl::opt< bool > PreserveBitcodeUseListOrder("preserve-bc-uselistorder", cl::Hidden, cl::init(true), cl::desc("Preserve use-list order when writing LLVM bitcode.")) ( "preserve-bc-uselistorder" , cl::Hidden , cl::init(true) , cl::desc("Preserve use-list order when writing LLVM bitcode.") ) static

WriteRelBFToSummary

cl::opt< bool > WriteRelBFToSummary("write-relbf-to-summary", cl::Hidden, cl::init(false), cl::desc("Write relative block frequency to function summary ")) ( "write-relbf-to-summary" , cl::Hidden , cl::init(false) , cl::desc("Write relative block frequency to function summary ") ) static