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) CLASS##AbbrevID, |
#define | HANDLE_MDNODE_LEAF(CLASS) unsigned CLASS##Abbrev = 0; |
#define | HANDLE_MDNODE_LEAF(CLASS) |
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 ")) |
bool | WriteNewDbgInfoFormatToBitcode |
llvm:🆑:opt< bool > | UseNewDbgInfoFormat |
â—† HANDLE_MDNODE_LEAF [1/3]
| #define HANDLE_MDNODE_LEAF | ( | | CLASS | ) | CLASS##AbbrevID, | | ---------------------------- | - | | ----- | - | ---------------- |
â—† HANDLE_MDNODE_LEAF [2/3]
| #define HANDLE_MDNODE_LEAF | ( | | CLASS | ) | unsigned CLASS##Abbrev = 0; | | ---------------------------- | - | | ----- | - | ------------------------------------------------- |
â—† HANDLE_MDNODE_LEAF [3/3]
| #define HANDLE_MDNODE_LEAF | ( | | CLASS | ) | | ---------------------------- | - | | ----- | - |
Value:
case Metadata::CLASS##Kind: \
if (MDAbbrevs) \
(*MDAbbrevs)[MetadataAbbrev::CLASS##AbbrevID]); \
else \
write##CLASS(cast(N), Record, CLASS##Abbrev); \
continue;
Error write(MCStreamer &Out, ArrayRef< std::string > Inputs, OnCuIndexOverflow OverflowOptValue)
Definition at line 2394 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 5209 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::SmallVectorBase< Size_T >::size(), llvm::Triple::thumb, writeInt32ToBuffer(), llvm::Triple::x86, and llvm::Triple::x86_64.
Referenced by llvm::WriteBitcodeToFile().
â—† emitSignedInt64()
â—† emitWideAPInt()
â—† getAttrKindEncoding()
Definition at line 715 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_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_CAPTURE, 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_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 634 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 608 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_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 1344 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 1220 of file BitcodeWriter.cpp.
References llvm::GlobalValue::AppendingLinkage, llvm::GlobalValue::AvailableExternallyLinkage, llvm::GlobalValue::CommonLinkage, llvm::GlobalValue::ExternalLinkage, llvm::GlobalValue::ExternalWeakLinkage, llvm::GlobalValue::InternalLinkage, llvm::GlobalValue::LinkOnceAnyLinkage, llvm::GlobalValue::LinkOnceODRLinkage, llvm_unreachable, llvm::GlobalValue::PrivateLinkage, llvm::GlobalValue::WeakAnyLinkage, and llvm::GlobalValue::WeakODRLinkage.
Referenced by getEncodedLinkage().
â—† getEncodedOrdering()
â—† getEncodedRelBFCallEdgeInfo()
â—† getEncodedRMWOperation()
Definition at line 658 of file BitcodeWriter.cpp.
References llvm::AtomicRMWInst::Add, llvm::AtomicRMWInst::And, llvm::AtomicRMWInst::FAdd, llvm::AtomicRMWInst::FMax, llvm::AtomicRMWInst::FMin, 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_FMIN, 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 1688 of file BitcodeWriter.cpp.
References llvm::bitc::AllowContract, llvm::bitc::AllowReassoc, llvm::bitc::AllowReciprocal, llvm::bitc::ApproxFunc, 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 5593 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, llvm::Triple::UnknownObjectFormat, llvm::Triple::Wasm, and llvm::Triple::XCOFF.
Referenced by llvm::embedBitcodeInModule().
â—† getSectionNameForCommandline()
Definition at line 5620 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, llvm::Triple::UnknownObjectFormat, llvm::Triple::Wasm, and llvm::Triple::XCOFF.
Referenced by llvm::embedBitcodeInModule().
â—† getStringEncoding()
â—† serializeSanitizerMetadata()
â—† writeBitcodeHeader()
â—† writeFunctionHeapProfileRecords()
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 |
---|
Definition at line 4252 of file BitcodeWriter.cpp.
References assert(), llvm::BitstreamWriter::EmitRecord(), llvm::bitc::FS_ALLOC_CONTEXT_IDS, llvm::bitc::FS_COMBINED_ALLOC_INFO, 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 4049 of file BitcodeWriter.cpp.
References llvm::append_range(), assert(), 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, llvm::ConstantRange::getLower(), llvm::APInt::getNumWords(), llvm::APInt::getRawData(), llvm::ConstantRange::getUpper(), Range, llvm::FunctionSummary::ParamAccess::RangeWidth, and llvm::ConstantRange::sextOrTrunc().
â—† 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 5085 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()
â—† 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 |
---|
â—† UseNewDbgInfoFormat
â—† WriteNewDbgInfoFormatToBitcode
bool WriteNewDbgInfoFormatToBitcode | extern |
---|
â—† 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 |
---|