LLVM: llvm::MDNode Class Reference (original) (raw)
#include "[llvm/IR/Metadata.h](Metadata%5F8h%5Fsource.html)"
| 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. |
| 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:
- include/llvm/IR/Metadata.h
- lib/Analysis/MemoryProfileInfo.cpp
- lib/Analysis/TypeBasedAliasAnalysis.cpp
- lib/IR/AsmWriter.cpp
- lib/IR/Metadata.cpp
- lib/IR/MetadataImpl.h