LLVM: llvm::MDNode Class Reference (original) (raw)

Metadata node. More...

#include "[llvm/IR/Metadata.h](Metadata%5F8h%5Fsource.html)"

Public Member Functions
MDNode (const MDNode &)=delete
void operator= (const MDNode &)=delete
void * operator new (size_t)=delete
LLVM_ABI TempMDNode clone () const
Create a (temporary) clone of this.
LLVMContext & getContext () const
LLVM_ABI void replaceOperandWith (unsigned I, Metadata *New)
Replace a specific operand.
bool isResolved () const
Check if node is fully resolved.
bool isUniqued () const
bool isDistinct () const
bool isTemporary () const
bool isReplaceable () const
bool isAlwaysReplaceable () const
bool hasGeneralizedMDString ()
Check if this is a valid generalized type metadata node.
unsigned getNumTemporaryUses () const
void replaceAllUsesWith (Metadata *MD)
RAUW a temporary.
LLVM_ABI void resolveCycles ()
Resolve cycles.
LLVM_ABI void resolve ()
Resolve a unique, unresolved node.
op_iterator op_begin () const
op_iterator op_end () const
ArrayRef< MDOperand > operands () const
const MDOperand & getOperand (unsigned I) const
unsigned getNumOperands () const
Return number of MDNode operands.
LLVM_ABI bool isTBAAVtableAccess () const
Check whether MDNode is a vtable access.
LLVM_ABI void printTree (raw_ostream &OS, const Module *M=nullptr) const
Print in tree shape.
LLVM_ABI void printTree (raw_ostream &OS, ModuleSlotTracker &MST, const Module *M=nullptr) const
LLVM_ABI void dumpTree () const
User-friendly dump in tree shape.
LLVM_ABI void dumpTree (const Module *M) const
Public Member Functions inherited from llvm::Metadata
unsigned getMetadataID () const
LLVM_ABI void dump () const
User-friendly dump.
LLVM_ABI void dump (const Module *M) const
LLVM_ABI void print (raw_ostream &OS, const Module *M=nullptr, bool IsForDebug=false) const
Print.
LLVM_ABI void print (raw_ostream &OS, ModuleSlotTracker &MST, const Module *M=nullptr, bool IsForDebug=false) const
LLVM_ABI void printAsOperand (raw_ostream &OS, const Module *M=nullptr) const
Print as operand.
LLVM_ABI void printAsOperand (raw_ostream &OS, ModuleSlotTracker &MST, const Module *M=nullptr) const
Static Public Member Functions
static MDTuple * get (LLVMContext &Context, ArrayRef< Metadata * > MDs)
static MDTuple * getIfExists (LLVMContext &Context, ArrayRef< Metadata * > MDs)
static MDTuple * getDistinct (LLVMContext &Context, ArrayRef< Metadata * > MDs)
static TempMDTuple getTemporary (LLVMContext &Context, ArrayRef< Metadata * > MDs)
static LLVM_ABI void deleteTemporary (MDNode *N)
Deallocate a node created by getTemporary.
template<class T>
static std::enable_if_t< std::is_base_of< MDNode, T >::value, T * > replaceWithPermanent (std::unique_ptr< T, TempMDNodeDeleter > N)
Replace a temporary node with a permanent one.
template<class T>
static std::enable_if_t< std::is_base_of< MDNode, T >::value, T * > replaceWithUniqued (std::unique_ptr< T, TempMDNodeDeleter > N)
Replace a temporary node with a uniqued one.
template<class T>
static std::enable_if_t< std::is_base_of< MDNode, T >::value, T * > replaceWithDistinct (std::unique_ptr< T, TempMDNodeDeleter > N)
Replace a temporary node with a distinct one.
static bool classof (const Metadata *MD)
Methods for support type inquiry through isa, cast, and dyn_cast:
static LLVM_ABI MDNode * concatenate (MDNode *A, MDNode *B)
Methods for metadata merging.
static LLVM_ABI MDNode * intersect (MDNode *A, MDNode *B)
static LLVM_ABI MDNode * getMostGenericTBAA (MDNode *A, MDNode *B)
static LLVM_ABI MDNode * getMostGenericFPMath (MDNode *A, MDNode *B)
static LLVM_ABI MDNode * getMostGenericRange (MDNode *A, MDNode *B)
static LLVM_ABI MDNode * getMostGenericNoaliasAddrspace (MDNode *A, MDNode *B)
static LLVM_ABI MDNode * getMostGenericAliasScope (MDNode *A, MDNode *B)
static LLVM_ABI MDNode * getMostGenericAlignmentOrDereferenceable (MDNode *A, MDNode *B)
static LLVM_ABI MDNode * getMergedProfMetadata (MDNode *A, MDNode *B, const Instruction *AInstr, const Instruction *BInstr)
Merge !prof metadata from two instructions.
static LLVM_ABI MDNode * getMergedMemProfMetadata (MDNode *A, MDNode *B)
static LLVM_ABI MDNode * getMergedCallsiteMetadata (MDNode *A, MDNode *B)
static LLVM_ABI MDNode * getMergedCalleeTypeMetadata (const MDNode *A, const MDNode *B)
static LLVM_ABI CaptureComponents toCaptureComponents (const MDNode *MD)
Convert !captures metadata to CaptureComponents. MD may be nullptr.
static LLVM_ABI MDNode * fromCaptureComponents (LLVMContext &Ctx, CaptureComponents CC)
Convert CaptureComponents to !captures metadata.
Protected Member Functions
LLVM_ABI MDNode (LLVMContext &Context, unsigned ID, StorageType Storage, ArrayRef< Metadata * > Ops1, ArrayRef< Metadata * > Ops2={})
~MDNode ()=default
LLVM_ABI void * operator new (size_t Size, size_t NumOps, StorageType Storage)
LLVM_ABI void operator delete (void *Mem)
void operator delete (void *, unsigned)
Required by std, but never called.
void operator delete (void *, unsigned, bool)
Required by std, but never called.
LLVM_ABI void dropAllReferences ()
MDOperand * mutable_begin ()
MDOperand * mutable_end ()
mutable_op_range mutable_operands ()
LLVM_ABI void setOperand (unsigned I, Metadata *New)
Set an operand.
unsigned getNumUnresolved () const
void setNumUnresolved (unsigned N)
LLVM_ABI void storeDistinctInContext ()
void resize (size_t NumOps)
Resize the node to hold NumOps operands.
Protected Member Functions inherited from llvm::Metadata
Metadata (unsigned ID, StorageType Storage)
~Metadata ()=default
void handleChangedOperand (void *, Metadata *)
Default handling of a changed operand, which asserts.
Friends
class ReplaceableMetadataImpl
class LLVMContextImpl
class DIAssignID
Additional Inherited Members
Static Public Attributes inherited from llvm::Metadata
static constexpr const unsigned PoisonGeneratingIDs []
Metadata IDs that may generate poison.
Protected Attributes inherited from llvm::Metadata
unsigned char Storage: 7
Storage flag for non-uniqued, otherwise unowned, metadata.
unsigned char SubclassData1: 1
unsigned short SubclassData16 = 0
unsigned SubclassData32 = 0

Metadata node.

Metadata nodes can be uniqued, like constants, or distinct. Temporary metadata nodes (with full support for RAUW) can be used to delay uniquing until forward references are known. The basic metadata node is an MDTuple.

There is limited support for RAUW at construction time. At construction time, if any operand is a temporary node (or an unresolved uniqued node, which indicates a transitive temporary operand), the node itself will be unresolved. As soon as all operands become resolved, it will drop RAUW support permanently.

If an unresolved node is part of a cycle, resolveCycles() needs to be called on some member of the cycle once all temporary nodes have been replaced.

MDNodes can be large or small, as well as resizable or non-resizable. Large MDNodes' operands are allocated in a separate storage vector, whereas small MDNodes' operands are co-allocated. Distinct and temporary MDnodes are resizable, but only MDTuples support this capability.

Clients can add operands to resizable MDNodes using push_back().

Definition at line 1078 of file Metadata.h.

mutable_op_range

op_iterator

op_range

MDNode() [1/2]

Definition at line 652 of file Metadata.cpp.

References isUniqued(), llvm::Metadata::Metadata(), setOperand(), and llvm::Metadata::Storage.

Referenced by concatenate(), deleteTemporary(), fromCaptureComponents(), getMergedCalleeTypeMetadata(), getMergedCallsiteMetadata(), getMergedMemProfMetadata(), getMergedProfMetadata(), getMostGenericAliasScope(), getMostGenericAlignmentOrDereferenceable(), getMostGenericFPMath(), getMostGenericNoaliasAddrspace(), getMostGenericRange(), getMostGenericTBAA(), intersect(), MDNode(), op_begin(), op_end(), operator new(), operator=(), and toCaptureComponents().

llvm::MDNode::~MDNode ( ) protecteddefault

MDNode() [2/2]

classof()

clone()

TempMDNode MDNode::clone ( ) const

concatenate()

Methods for metadata merging.

Definition at line 1109 of file Metadata.cpp.

References A(), B(), llvm::SetVector< T, Vector, Set, N >::getArrayRef(), getOrSelfReference(), llvm::SetVector< T, Vector, Set, N >::insert(), and MDNode().

Referenced by AddAliasScopeMetadata(), llvm::LoopVersioning::getNoAliasMetadataFor(), PropagateCallSiteMetadata(), and propagateMemProfHelper().

deleteTemporary()

void MDNode::deleteTemporary ( MDNode * N) static

dropAllReferences()

void MDNode::dropAllReferences ( ) protected

dumpTree() [1/2]

User-friendly dump in tree shape.

If M is provided, metadata nodes will be numbered canonically; otherwise, pointer addresses are substituted.

Note: this uses an explicit overload instead of default arguments so that the nullptr version is easy to call from a debugger.

Definition at line 5483 of file AsmWriter.cpp.

References dumpTree().

Referenced by dumpTree().

dumpTree() [2/2]

fromCaptureComponents()

Convert CaptureComponents to !captures metadata.

The return value may be nullptr.

Definition at line 1456 of file Metadata.cpp.

References assert(), llvm::capturesAddress(), llvm::capturesAddressIsNullOnly(), llvm::capturesAll(), llvm::capturesFullProvenance(), llvm::capturesNothing(), llvm::capturesReadProvenanceOnly(), get(), llvm::MDString::get(), MDNode(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by combineMetadata().

get()

Definition at line 1569 of file Metadata.h.

References llvm::MDTuple::get().

Referenced by llvm::adaptNoAliasScopes(), AddAliasScopeMetadata(), addFunctionTypeMutation(), addModuleFlags(), addRuntimeUnrollDisableMetaData(), llvm::addStringMetadataToLoop(), llvm::annotateValueSite(), llvm::DIExpression::append(), llvm::DIExpression::appendOpsToArg(), applyParallelAccessesMetadata(), llvm::memprof::CallStackTrie::buildAndAttachMIBMetadata(), llvm::SPIRVGlobalRegistry::buildAssignType(), llvm::memprof::buildCallstackMetadata(), buildFrameDebugInfo(), llvm::buildMD(), llvm::hlsl::rootsig::MetadataBuilder::BuildRootSignature(), canonicalizeMetadataForValue(), llvm::DILocation::cloneWithDiscriminator(), collectCallSiteParameters(), llvm::DIExpression::constantFold(), constructEntryMetadata(), llvm::DIExpression::convertToNonVariadicExpression(), llvm::DIExpression::convertToUndefExpression(), llvm::DIExpression::convertToVariadicExpression(), llvm::GlobalObject::copyMetadata(), llvm::copyRangeMetadata(), createAccessTag(), llvm::MDBuilder::createAliasScope(), llvm::MDBuilder::createAliasScopeDomain(), llvm::DIBuilder::createArrayType(), llvm::DIBuilder::createBasicType(), llvm::DIBuilder::createBinaryFixedPointType(), llvm::DIBuilder::createBitFieldMemberType(), llvm::DIBuilder::createBitFieldMemberType(), llvm::MDBuilder::createBranchWeights(), llvm::MDBuilder::createCallbackEncoding(), llvm::MDBuilder::createCallees(), llvm::DIBuilder::createClassType(), llvm::DIBuilder::createCommonBlock(), llvm::DIBuilder::createConstantValueExpression(), llvm::DIBuilder::createDecimalFixedPointType(), createDecorationIntrinsic(), llvm::SwiftErrorValueTracking::createEntriesInEntryBlock(), llvm::DIBuilder::createEnumerationType(), llvm::DIBuilder::createEnumerator(), llvm::DIBuilder::createEnumerator(), llvm::DIBuilder::createExpression(), CreateFailBB(), llvm::DIBuilder::createFile(), llvm::DIBuilder::createForwardDecl(), llvm::MDBuilder::createFPMath(), llvm::DIExpression::createFragmentExpression(), llvm::DIBuilder::createFriend(), llvm::MDBuilder::createFunctionEntryCount(), llvm::MDBuilder::createGlobalObjectSectionPrefix(), llvm::DIBuilder::createGlobalVariableExpression(), createImportedModule(), llvm::DIBuilder::createInheritance(), llvm::MDBuilder::createIrrLoopHeaderWeight(), llvm::DIBuilder::createLabel(), llvm::DIBuilder::createLexicalBlockFile(), llvm::MDBuilder::createLLVMStats(), createLocalVariable(), llvm::DIBuilder::createMacro(), llvm::DIBuilder::createMemberPointerType(), llvm::DIBuilder::createMemberType(), llvm::DIBuilder::createMemberType(), llvm::createMemCpyLoopKnownSize(), createMIBNode(), llvm::DIBuilder::createModule(), llvm::DIBuilder::createNameSpace(), llvm::DIBuilder::createObjCIVar(), llvm::DIBuilder::createObjCProperty(), createOrReplaceFragment(), llvm::MDBuilder::createPCSections(), llvm::createPGONameMetadata(), llvm::DIBuilder::createPointerType(), llvm::MDBuilder::createPseudoProbeDesc(), llvm::DIBuilder::createPtrAuthQualifiedType(), llvm::DIBuilder::createQualifiedType(), llvm::MDBuilder::createRange(), llvm::DIBuilder::createRationalFixedPointType(), llvm::DIBuilder::createReferenceType(), createRoundingModeDecoration(), llvm::MDBuilder::createRTTIPointerPrologue(), createSaturatedConversionDecoration(), llvm::DIBuilder::createSetType(), llvm::DIBuilder::createStaticMemberType(), createStringMetadata(), llvm::DIBuilder::createStringType(), llvm::DIBuilder::createStringType(), llvm::DIBuilder::createStringType(), llvm::DIBuilder::createStructType(), llvm::DIBuilder::createStructType(), llvm::DIBuilder::createSubrangeType(), llvm::DIBuilder::createSubroutineType(), llvm::MDBuilder::createTBAAAccessTag(), llvm::MDBuilder::createTBAANode(), llvm::MDBuilder::createTBAARoot(), llvm::MDBuilder::createTBAAScalarTypeNode(), llvm::MDBuilder::createTBAAStructNode(), llvm::MDBuilder::createTBAAStructTagNode(), llvm::MDBuilder::createTBAAStructTypeNode(), llvm::MDBuilder::createTBAATypeNode(), llvm::DIBuilder::createTemplateAlias(), llvm::DIBuilder::createTemplateTypeParameter(), createTemplateValueParameterHelper(), llvm::DIBuilder::createTypedef(), llvm::DIBuilder::createUnionType(), llvm::MDBuilder::createUnpredictable(), llvm::DIBuilder::createUnspecifiedType(), llvm::DIBuilder::createVariantMemberType(), llvm::DIBuilder::createVariantMemberType(), llvm::DIBuilder::createVariantPart(), llvm::DIBuilder::createVectorType(), llvm::MipsInstrInfo::describeLoadedValue(), llvm::TargetInstrInfo::describeLoadedValue(), llvm::X86InstrInfo::describeLoadedValue(), describeMOVrrLoadedValue(), describeORRLoadedValue(), DisableAllLoopOptsOnLoop(), dropInitialDeref(), llvm::Instruction::dropLocation(), llvm::embedBufferInModule(), llvm::emitAMDGPUPrintfCall(), emitAssignName(), emitDbgAssign(), emitDXILVersionTupleMD(), TransferTracker::emitMOLoc(), emitResourceMetadata(), emitShaderModelVersionMD(), emitTopLevelLibraryNode(), emitValidatorVersionMD(), llvm::InstrumentationIRBuilder::ensureDebugInfo(), llvm::AAMDNodes::extendToTBAA(), llvm::DIExpression::extractAddressClass(), extractMDNode(), llvm::DIBuilder::finalize(), findBasePointer(), findPrologueEndLoc(), FixupDebugInfoForOutlinedFunction(), fixupDebugInfoPostExtraction(), llvm::DIExpression::foldConstantMath(), fromCaptureComponents(), llvm::TypedTrackingMDRef< MDNode >::get(), llvm::dxil::ResourceInfo::getAsMetadata(), llvm::getDebugValueLoc(), getEntryPropAsMetadata(), llvm::DebugLoc::getFnDebugLoc(), llvm::DbgLabelRecord::getLabel(), getMergedCalleeTypeMetadata(), llvm::DILocation::getMergedLocation(), getMostGenericNoaliasAddrspace(), getMostGenericRange(), llvm::LoopVersioning::getNoAliasMetadataFor(), llvm::offloading::getOffloadingEntryInitializer(), getOrCreateDebugLoc(), llvm::DIBuilder::getOrCreateGenericSubrange(), llvm::DIBuilder::getOrCreateSubrange(), llvm::DIBuilder::getOrCreateSubrange(), llvm::DIBuilder::getOrCreateSubrange(), llvm::DIBuilder::getOrCreateTypeArray(), getOrSelfReference(), getSubprogram(), llvm::DILocation::getWithoutAtom(), HandleByValArgumentInit(), hostParallelCallback(), llvm::FunctionImporter::importFunctions(), inlineDebugLoc(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::SampleProfileProber::instrumentOneFunc(), interpretValues(), llvm::intersectAccessGroups(), LLVMDIBuilderCreateDebugLocation(), LLVMMDNodeInContext(), LLVMMDNodeInContext2(), lowerKernelArguments(), lowerPtrAnnotation(), llvm::makeFollowupLoopID(), markLoadsAsInvariant(), llvm::MDBuilder::mergeCallbackEncodings(), migrateDebugInfo(), moveFunctionData(), parseAnnotation(), postUnswitch(), llvm::LoopVersioning::prepareNoAliasMetadata(), llvm::DIExpression::prependOpcodes(), llvm::SwiftErrorValueTracking::propagateVRegs(), llvm::memtag::readRegister(), llvm::RemapSourceAtom(), llvm::DIExpression::replaceArg(), llvm::DebugLoc::replaceInlinedAtSubprogram(), llvm::ARMBlockPlacement::revertWhileToDoLoop(), llvm::AssignGUIDPass::run(), runImpl(), runOnFunction(), llvm::scaleProfData(), llvm::LoopVectorizeHints::setAlreadyVectorized(), llvm::sandboxir::Region::setAux(), llvm::setExplicitlyUnknownBranchWeights(), llvm::setExplicitlyUnknownFunctionEntryCount(), llvm::setKCFIType(), llvm::Loop::setLoopAlreadyUnrolled(), llvm::Loop::setLoopMustProgress(), llvm::IRBuilderBase::SetNoSanitizeMetadata(), llvm::Instruction::setNoSanitizeMetadata(), llvm::GlobalObject::setVCallVisibilityMetadata(), llvm::AAMDNodes::shiftTBAAStruct(), shortenAssignment(), splitGlobal(), stripLoopMDLoc(), llvm::stripNonLineTableDebugInfo(), transferSRADebugInfo(), translateBranchMetadata(), translateLoopMetadata(), TryToShrinkGlobalToBoolean(), llvm::uniteAccessGroups(), updateDVIWithLocation(), updateDVIWithLocations(), updateLoopMetadataDebugLocationsRecursive(), upgradeAMDGCNIntrinsicCall(), llvm::UpgradeModuleFlags(), llvm::UpgradeNVVMAnnotations(), upgradeNVVMIntrinsicCall(), llvm::UpgradeTBAANode(), upgradeX86IntrinsicCall(), and llvm::InstCombinerImpl::visitCallInst().

getContext()

LLVMContext & llvm::MDNode::getContext ( ) const inline

Definition at line 1242 of file Metadata.h.

Referenced by llvm::DIExpression::append(), llvm::DIExpression::appendOpsToArg(), buildFrameDebugInfo(), llvm::DIBasicType::cloneImpl(), llvm::DILocation::cloneWithDiscriminator(), llvm::DIExpression::constantFold(), llvm::DIExpression::convertToNonVariadicExpression(), llvm::DIExpression::convertToUndefExpression(), llvm::DIExpression::convertToVariadicExpression(), createAccessTag(), llvm::DbgVariableRecord::createDebugIntrinsic(), llvm::DIExpression::createFragmentExpression(), createOrReplaceFragment(), dropInitialDeref(), TransferTracker::emitMOLoc(), llvm::AAMDNodes::extendToTBAA(), llvm::DIExpression::extractAddressClass(), fixupLineNumbers(), llvm::DIExpression::foldConstantMath(), llvm::DILocation::getMergedLocation(), llvm::DILocation::getWithoutAtom(), llvm::makeFollowupLoopID(), llvm::DIExpression::prependOpcodes(), llvm::at::remapAssignID(), llvm::DIExpression::replaceArg(), llvm::DbgVariableIntrinsic::setVariable(), llvm::AAMDNodes::shiftTBAAStruct(), storeDistinctInContext(), transferSRADebugInfo(), llvm::uniteAccessGroups(), updateLoopMetadataDebugLocationsImpl(), and llvm::UpgradeTBAANode().

getDistinct()

Definition at line 1577 of file Metadata.h.

References llvm::MDTuple::getDistinct().

Referenced by addBasicBlockMetadata(), llvm::DebugLoc::appendInlinedAt(), applyParallelAccessesMetadata(), llvm::DICompositeType::buildODRType(), llvm::MDBuilder::createAnonymousAARoot(), llvm::DIBuilder::createCompileUnit(), llvm::DIBuilder::createGlobalVariableExpression(), llvm::DIBuilder::createLexicalBlock(), fixupLineNumbers(), getSubprogram(), llvm::makePostTransformationMetadata(), llvm::sandboxir::Region::Region(), stripLoopMDLoc(), and updateLoopMetadataDebugLocationsImpl().

getIfExists()

getMergedCalleeTypeMetadata()

getMergedCallsiteMetadata()

getMergedMemProfMetadata()

getMergedProfMetadata()

getMostGenericAliasScope()

Definition at line 1136 of file Metadata.cpp.

References A(), B(), llvm::SmallPtrSetImpl< PtrType >::contains(), llvm::dyn_cast(), llvm::SetVector< T, Vector, Set, N >::empty(), llvm::SetVector< T, Vector, Set, N >::getArrayRef(), getDomain(), getOrSelfReference(), llvm::SetVector< T, Vector, Set, N >::insert(), llvm::SmallPtrSetImpl< PtrType >::insert(), and MDNode().

Referenced by combineMetadata(), llvm::AAMDNodes::concat(), llvm::AAMDNodes::merge(), and llvm::propagateMetadata().

getMostGenericAlignmentOrDereferenceable()

getMostGenericFPMath()

getMostGenericNoaliasAddrspace()

Definition at line 1391 of file Metadata.cpp.

References A(), B(), llvm::mdconst::extract(), llvm::ConstantAsMetadata::get(), get(), I, llvm::ConstantRangeList::intersectWith(), MDNode(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by combineMetadata(), llvm::AAMDNodes::concat(), and llvm::AAMDNodes::merge().

getMostGenericRange()

Definition at line 1318 of file Metadata.cpp.

References A(), addRange(), B(), llvm::mdconst::extract(), llvm::ConstantAsMetadata::get(), get(), llvm::ConstantInt::getValue(), I, MDNode(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), Range, llvm::SmallVectorImpl< T >::reserve(), llvm::SmallVectorImpl< T >::resize(), Size, llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::APInt::slt(), and tryMergeRange().

Referenced by combineMetadata().

getMostGenericTBAA()

getNumOperands()

unsigned llvm::MDNode::getNumOperands ( ) const inline

Return number of MDNode operands.

Definition at line 1448 of file Metadata.h.

Referenced by llvm::AbstractCallSite::AbstractCallSite(), llvm::memprof::CallStackTrie::addCallStack(), addRuntimeUnrollDisableMetaData(), llvm::addStringMetadataToLoop(), addToAccessGroupList(), llvm::buildOpSpirvDecorations(), llvm::cacheAnnotationFromMD(), computeFunctionSummary(), createAccessTag(), dropAllReferences(), extractFromBranchWeightMD(), llvm::SPIRV::extractFunctionTypeFromMetadata(), llvm::extractProfTotalWeight(), llvm::findOptionMDForLoopID(), llvm::findStringMetadataForLoop(), getConstInt(), llvm::DOTGraphTraits< DOTFuncInfo * >::getEdgeAttributes(), GetFunctionFromMDNode(), llvm::AMDGPUMachineFunction::getLDSKernelIdMetadata(), llvm::MachineInstr::getLocCookieMD(), llvm::Loop::getLoopID(), llvm::MachineLoop::getLoopID(), llvm::memprof::getMIBAllocType(), llvm::memprof::getMIBStackNode(), llvm::getNumBranchWeights(), llvm::GenericDINode::getNumDwarfOperands(), getOperand(), llvm::getOptionalBoolLoopAttribute(), llvm::SPIRVGlobalRegistry::getOrAddMemAliasingINTELInst(), llvm::DILocation::getRawInlinedAt(), getSummaryFromMD(), llvm::GetUnrollMetadata(), getValMD(), llvm::getValueProfDataFromInst(), hasGeneralizedMDString(), llvm::AMDGPU::hasValueInRangeLikeMetadata(), haveCommonPrefix(), llvm::intersectAccessGroups(), llvm::isExplicitlyUnknownProfileMetadata(), isKeyValuePair(), isLoopMDCompatible(), AliasScopeTracker::isNoAliasScopeDeclDead(), IsRootTBAANode(), IsScalarTBAANodeImpl(), isStructPathTBAA(), isTargetMD(), isTBAAVtableAccess(), llvm::SPIRVCallLowering::lowerFormalArguments(), llvm::makeFollowupLoopID(), llvm::mayHaveValueProfileOfKind(), llvm::MDBuilder::mergeCallbackEncodings(), llvm::MDTuple::pop_back(), propagateMemProfHelper(), llvm::MDTuple::push_back(), saveFilteredNewMIBNodes(), llvm::Loop::setLoopID(), setOperand(), llvm::AAMDNodes::shiftTBAAStruct(), translateBranchMetadata(), translateLoopMetadata(), unrollAndJamCountPragmaValue(), unrollCountPragmaValue(), updateLoopMetadataDebugLocationsImpl(), llvm::UpgradeTBAANode(), and llvm::TBAAVerifier::visitTBAAMetadata().

getNumTemporaryUses()

unsigned llvm::MDNode::getNumTemporaryUses ( ) const inline

getNumUnresolved()

unsigned llvm::MDNode::getNumUnresolved ( ) const inlineprotected

getOperand()

Definition at line 1442 of file Metadata.h.

References assert(), getNumOperands(), and I.

Referenced by llvm::AbstractCallSite::AbstractCallSite(), AccessQualFromMD(), llvm::DwarfUnit::addAnnotation(), llvm::memprof::CallStackTrie::addCallStack(), addRuntimeUnrollDisableMetaData(), llvm::addStringMetadataToLoop(), ArgTypeFromMD(), llvm::buildOpSpirvDecorations(), llvm::cacheAnnotationFromMD(), llvm::cacheAnnotationFromMD(), llvm::MachineFunction::CallSiteInfo::CallSiteInfo(), computeFunctionSummary(), llvm::MDBuilder::createMutableTBAAAccessTag(), llvm::MachineInstr::emitInlineAsmError(), llvm::AsmPrinter::emitPCSections(), exportKernelRuntimeHandles(), extractFromBranchWeightMD(), llvm::SPIRV::extractFunctionTypeFromMetadata(), llvm::extractProfTotalWeight(), llvm::findOptionMDForLoopID(), llvm::findStringMetadataForLoop(), foldConstantsIntoIntrinsics(), generateAssignInstrs(), GetArgMD(), llvm::AbstractCallSite::getCallbackUses(), getConstInt(), getCoopAtomicOperandsInfo(), llvm::GenericDINode::getDwarfOperand(), llvm::DOTGraphTraits< DOTFuncInfo * >::getEdgeAttributes(), getEnqueuedBlockSymbolName(), llvm::FPMathOperator::getFPAccuracy(), GetFunctionFromMDNode(), llvm::AMDGPUMachineFunction::getLDSKernelIdMetadata(), getLinkedToSymbol(), llvm::SelectionDAG::getLoad(), llvm::MachineInstr::getLocCookieMD(), llvm::Loop::getLoopID(), llvm::MachineLoop::getLoopID(), llvm::memprof::getMIBAllocType(), llvm::memprof::getMIBStackNode(), getOCLKernelArgAttribute(), llvm::DIMacroNode::getOperandAs(), llvm::DINode::getOperandAs(), llvm::getOptionalBoolLoopAttribute(), llvm::DICompositeType::getRawAllocated(), llvm::DICompositeType::getRawAnnotations(), llvm::DIDerivedType::getRawAnnotations(), llvm::DIGlobalVariable::getRawAnnotations(), llvm::DILocalVariable::getRawAnnotations(), llvm::DICompositeType::getRawAssociated(), llvm::DICompositeType::getRawBaseType(), llvm::DISubrangeType::getRawBaseType(), llvm::DISubrangeType::getRawBias(), llvm::DICompositeType::getRawBitStride(), llvm::DIGenericSubrange::getRawCountNode(), llvm::DICompositeType::getRawDataLocation(), llvm::DICommonBlock::getRawDecl(), llvm::DICompositeType::getRawDiscriminator(), llvm::DICompositeType::getRawElements(), llvm::DIMacroFile::getRawElements(), llvm::DICompileUnit::getRawEnumTypes(), llvm::DIGlobalVariableExpression::getRawExpression(), llvm::DIDerivedType::getRawExtraData(), llvm::DICommonBlock::getRawFile(), llvm::DILabel::getRawFile(), llvm::DIMacroFile::getRawFile(), llvm::DIObjCProperty::getRawFile(), llvm::DIScope::getRawFile(), llvm::DIVariable::getRawFile(), llvm::DICompileUnit::getRawGlobalVariables(), llvm::DICompileUnit::getRawImportedEntities(), llvm::DILocation::getRawInlinedAt(), llvm::DIGenericSubrange::getRawLowerBound(), llvm::DISubrangeType::getRawLowerBound(), llvm::DICompileUnit::getRawMacros(), llvm::DIType::getRawOffsetInBits(), llvm::DICompositeType::getRawRank(), llvm::DICompileUnit::getRawRetainedTypes(), llvm::DICommonBlock::getRawScope(), llvm::DILabel::getRawScope(), llvm::DILexicalBlockBase::getRawScope(), llvm::DILocation::getRawScope(), llvm::DINamespace::getRawScope(), llvm::DIType::getRawScope(), llvm::DIVariable::getRawScope(), llvm::DIType::getRawSizeInBits(), llvm::DICompositeType::getRawSpecification(), llvm::DIGlobalVariable::getRawStaticDataMemberDeclaration(), llvm::DIGenericSubrange::getRawStride(), llvm::DISubrangeType::getRawStride(), llvm::DIStringType::getRawStringLength(), llvm::DIStringType::getRawStringLengthExp(), llvm::DIStringType::getRawStringLocationExp(), llvm::DICompositeType::getRawTemplateParams(), llvm::DIGlobalVariable::getRawTemplateParams(), llvm::DIObjCProperty::getRawType(), llvm::DITemplateParameter::getRawType(), llvm::DIVariable::getRawType(), llvm::DISubroutineType::getRawTypeArray(), llvm::DIGenericSubrange::getRawUpperBound(), llvm::DISubrangeType::getRawUpperBound(), llvm::DIGlobalVariableExpression::getRawVariable(), llvm::DICompositeType::getRawVTableHolder(), getSummaryFromMD(), llvm::RISCVTargetLowering::getTargetMMOFlags(), llvm::GetUnrollMetadata(), getValMD(), llvm::DITemplateValueParameter::getValue(), llvm::getValueProfDataFromInst(), hasAnyUnrollPragma(), llvm::hasBranchWeightOrigin(), hasGeneralizedMDString(), llvm::AMDGPU::hasValueInRangeLikeMetadata(), llvm::isExplicitlyUnknownProfileMetadata(), isKeyValuePair(), isLoopMDCompatible(), AliasScopeTracker::isNoAliasScopeDeclDead(), IsScalarTBAANodeImpl(), isStructPathTBAA(), isTargetMD(), isTBAAVtableAccess(), llvm::lookupPGONameFromMetadata(), llvm::makeFollowupLoopID(), llvm::mayHaveValueProfileOfKind(), llvm::MDBuilder::mergeCallbackEncodings(), replaceOperandWith(), saveFilteredNewMIBNodes(), llvm::Loop::setLoopID(), llvm::AAMDNodes::shiftTBAAStruct(), translateBranchMetadata(), translateLoopMetadata(), unrollAndJamCountPragmaValue(), unrollCountPragmaValue(), updateLoopMetadataDebugLocationsImpl(), llvm::UpgradeTBAANode(), and llvm::TBAAVerifier::visitTBAAMetadata().

getTemporary()

hasGeneralizedMDString()

bool llvm::MDNode::hasGeneralizedMDString ( ) inline

intersect()

Definition at line 1123 of file Metadata.cpp.

References A(), B(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::SetVector< T, Vector, Set, N >::getArrayRef(), getOrSelfReference(), MDNode(), llvm::Metadata::Metadata(), and llvm::SetVector< T, Vector, Set, N >::remove_if().

Referenced by combineMetadata(), llvm::AAMDNodes::concat(), llvm::AAMDNodes::merge(), and llvm::propagateMetadata().

isAlwaysReplaceable()

bool llvm::MDNode::isAlwaysReplaceable ( ) const inline

isDistinct()

bool llvm::MDNode::isDistinct ( ) const inline

isReplaceable()

bool llvm::MDNode::isReplaceable ( ) const inline

isResolved()

bool llvm::MDNode::isResolved ( ) const inline

Check if node is fully resolved.

If isTemporary(), this always returns false; if isDistinct(), this always returns true.

If isUniqued(), returns true if this has already dropped RAUW support (because all operands are resolved).

As forward declarations are resolved, their containers should get resolved automatically. However, if this (or one of its operands) is involved in a cycle, resolveCycles() needs to be called explicitly.

Definition at line 1258 of file Metadata.h.

References getNumUnresolved(), and isTemporary().

Referenced by resolve(), resolveCycles(), and storeDistinctInContext().

isTBAAVtableAccess()

bool MDNode::isTBAAVtableAccess ( ) const

isTemporary()

bool llvm::MDNode::isTemporary ( ) const inline

isUniqued()

bool llvm::MDNode::isUniqued ( ) const inline

mutable_begin()

MDOperand * llvm::MDNode::mutable_begin ( ) inlineprotected

mutable_end()

MDOperand * llvm::MDNode::mutable_end ( ) inlineprotected

mutable_operands()

mutable_op_range llvm::MDNode::mutable_operands ( ) inlineprotected

op_begin()

op_iterator llvm::MDNode::op_begin ( ) const inline

op_end()

op_iterator llvm::MDNode::op_end ( ) const inline

operands()

Definition at line 1440 of file Metadata.h.

Referenced by llvm::AbstractCallSite::AbstractCallSite(), addBasicBlockMetadata(), llvm::memprof::CallStackTrie::addCallStack(), addOpsFromMDNode(), addToAccessGroupList(), llvm::MachineFunction::CallSiteInfo::CallSiteInfo(), checkAllocContextIds(), llvm::ScopedNoAliasAAResult::collectScopedDomains(), llvm::TargetLoweringObjectFile::emitCGProfileMetadata(), llvm::AsmPrinter::emitPCSections(), llvm::AAMDNodes::extendToTBAA(), llvm::findOptionMDForLoopID(), getAllocaName(), llvm::AbstractCallSite::getCallbackUses(), getOCLKernelArgAttribute(), llvm::SPIRVGlobalRegistry::getOrAddMemAliasingINTELInst(), getSummaryFromMD(), llvm::GetUnrollMetadata(), llvm::intersectAccessGroups(), llvm::Loop::isAnnotatedParallel(), llvm::SPIRVCallLowering::lowerFormalArguments(), llvm::makeFollowupLoopID(), llvm::makePostTransformationMetadata(), propagateMemProfHelper(), resolveCycles(), toCaptureComponents(), translateLoopMetadata(), and updateLoopMetadataDebugLocationsImpl().

operator delete() [1/3]

void llvm::MDNode::operator delete ( void * , unsigned ) inlineprotected

operator delete() [2/3]

void llvm::MDNode::operator delete ( void * , unsigned , bool ) inlineprotected

operator delete() [3/3]

void MDNode::operator delete ( void * Mem) protected

operator new() [1/2]

void * MDNode::operator new ( size_t Size, size_t NumOps, StorageType Storage ) protected

operator new() [2/2]

void * llvm::MDNode::operator new ( size_t ) delete

operator=()

printTree() [1/2]

Print in tree shape.

Prints definition of this in tree shape.

If M is provided, metadata nodes will be numbered canonically; otherwise, pointer addresses are substituted.

Definition at line 5408 of file AsmWriter.cpp.

References printMetadataImpl().

Referenced by dumpTree().

printTree() [2/2]

replaceAllUsesWith()

void llvm::MDNode::replaceAllUsesWith ( Metadata * MD) inline

replaceOperandWith()

Replace a specific operand.

Definition at line 1072 of file Metadata.cpp.

References getOperand(), I, isUniqued(), llvm::Metadata::Metadata(), mutable_begin(), and setOperand().

Referenced by addBasicBlockMetadata(), addRuntimeUnrollDisableMetaData(), llvm::addStringMetadataToLoop(), buildFrameDebugInfo(), llvm::MDBuilder::createAnonymousAARoot(), DisableAllLoopOptsOnLoop(), llvm::makeFollowupLoopID(), llvm::makePostTransformationMetadata(), llvm::GenericDINode::replaceDwarfOperandWith(), llvm::DICompositeType::replaceElements(), llvm::DIMacroFile::replaceElements(), llvm::DICompileUnit::replaceEnumTypes(), llvm::DICompileUnit::replaceGlobalVariables(), llvm::DICompileUnit::replaceImportedEntities(), llvm::DICompileUnit::replaceMacros(), llvm::DICompileUnit::replaceRetainedTypes(), llvm::DICompositeType::replaceTemplateParams(), llvm::DICompositeType::replaceVTableHolder(), stripLoopMDLoc(), and updateLoopMetadataDebugLocationsImpl().

replaceWithDistinct()

template<class T>

std::enable_if_t< std::is_base_of< MDNode, T >::value, T * > llvm::MDNode::replaceWithDistinct ( std::unique_ptr< T, TempMDNodeDeleter > N) inlinestatic

replaceWithPermanent()

template<class T>

std::enable_if_t< std::is_base_of< MDNode, T >::value, T * > llvm::MDNode::replaceWithPermanent ( std::unique_ptr< T, TempMDNodeDeleter > N) inlinestatic

Replace a temporary node with a permanent one.

Try to create a uniqued version of N – in place, if possible – and return it. If N cannot be uniqued, return a distinct node instead.

Definition at line 1305 of file Metadata.h.

References llvm::cast(), and N.

replaceWithUniqued()

template<class T>

std::enable_if_t< std::is_base_of< MDNode, T >::value, T * > llvm::MDNode::replaceWithUniqued ( std::unique_ptr< T, TempMDNodeDeleter > N) inlinestatic

resize()

void llvm::MDNode::resize ( size_t NumOps) inlineprotected

resolve()

resolveCycles()

void MDNode::resolveCycles ( )

setNumUnresolved()

void llvm::MDNode::setNumUnresolved ( unsigned N) inlineprotected

setOperand()

Set an operand.

Sets the operand directly, without worrying about uniquing.

Definition at line 1084 of file Metadata.cpp.

References assert(), getNumOperands(), I, isUniqued(), llvm::Metadata::Metadata(), mutable_begin(), and llvm::MDOperand::reset().

Referenced by dropAllReferences(), MDNode(), llvm::MDTuple::push_back(), replaceOperandWith(), and llvm::DILexicalBlockBase::replaceScope().

storeDistinctInContext()

void MDNode::storeDistinctInContext ( ) protected

storeImpl() [1/2]

storeImpl() [2/2]

template<class T, class StoreT>

T * llvm::MDNode::storeImpl ( T * N, StorageType Storage, StoreT & Store ) staticprotected

toCaptureComponents()

Convert !captures metadata to CaptureComponents. MD may be nullptr.

Definition at line 1439 of file Metadata.cpp.

References llvm::Address, llvm::AddressIsNull, llvm::All, llvm::StringSwitch< T, R >::Case(), llvm::cast(), MDNode(), llvm::Metadata::Metadata(), llvm::None, operands(), llvm::Provenance, and llvm::ReadProvenance.

Referenced by combineMetadata(), and llvm::DetermineUseCaptureKind().

DIAssignID

LLVMContextImpl

ReplaceableMetadataImpl


The documentation for this class was generated from the following files: