LLVM 22.0.0git
|
#include "llvm/IR/Metadata.h"
Public Types | |
using | op_iterator = const MDOperand * |
using | op_range = iterator_range<op_iterator> |
Public Types inherited from llvm::Metadata | |
enum | MetadataKind |
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) |
Protected Types | |
using | mutable_op_range = iterator_range<MDOperand *> |
Protected Types inherited from llvm::Metadata | |
enum | StorageType { Uniqued , Distinct , Temporary } |
Active type of storage. More... |
Static Protected Member Functions | |
template<class T, class StoreT> | |
static T * | storeImpl (T *N, StorageType Storage, StoreT &Store) |
template<class T> | |
static T * | storeImpl (T *N, StorageType Storage) |
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 1077 of file Metadata.h.
|
protected |
Definition at line 1213 of file Metadata.h.
using llvm::MDNode::op_iterator = const MDOperand * |
Definition at line 1432 of file Metadata.h.
Definition at line 1433 of file Metadata.h.
|
protected |
Definition at line 651 of file Metadata.cpp.
References isUniqued(), llvm::Metadata::Metadata(), setOperand(), and llvm::Metadata::Storage.
Referenced by concatenate(), deleteTemporary(), getMergedCalleeTypeMetadata(), getMergedCallsiteMetadata(), getMergedMemProfMetadata(), getMergedProfMetadata(), getMostGenericAliasScope(), getMostGenericAlignmentOrDereferenceable(), getMostGenericFPMath(), getMostGenericNoaliasAddrspace(), getMostGenericRange(), getMostGenericTBAA(), intersect(), MDNode(), op_begin(), op_end(), operator new(), and operator=().
|
protecteddefault |
References AbstractManglingParser< Derived, Alloc >::NumOps, LLVM_ABI, Size, and llvm::Metadata::Storage.
Methods for support type inquiry through isa, cast, and dyn_cast:
Definition at line 1454 of file Metadata.h.
References llvm::Metadata::getMetadataID(), and llvm::Metadata::Metadata().
TempMDNode MDNode::clone | ( | ) | const |
Create a (temporary) clone of this.
Definition at line 668 of file Metadata.cpp.
References llvm::Metadata::getMetadataID(), and llvm_unreachable.
Referenced by llvm::DIType::clone(), cloneAndReplaceParentScope(), and updateSubprogramLinkageName().
Methods for metadata merging.
Definition at line 1115 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().
|
static |
Deallocate a node created by getTemporary.
Calls replaceAllUsesWith(nullptr)
before deleting, so any remaining references will be reset.
Definition at line 1050 of file Metadata.cpp.
References assert(), MDNode(), and N.
Referenced by LLVMDisposeTemporaryMDNode(), LLVMMetadataReplaceAllUsesWith(), and llvm::TempMDNodeDeleter::operator()().
|
protected |
Definition at line 908 of file Metadata.cpp.
References getNumOperands(), I, and setOperand().
LLVM_DUMP_METHOD void MDNode::dumpTree | ( | ) | const |
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 5509 of file AsmWriter.cpp.
References dumpTree().
Referenced by dumpTree().
LLVM_DUMP_METHOD void MDNode::dumpTree | ( | const Module * | M | ) | const |
Definition at line 5512 of file AsmWriter.cpp.
References llvm::dbgs(), and printTree().
|
inlinestatic |
Definition at line 1565 of file Metadata.h.
References llvm::MDTuple::get().
Referenced by llvm::adaptNoAliasScopes(), AddAliasScopeMetadata(), addModuleFlags(), addRuntimeUnrollDisableMetaData(), llvm::addStringMetadataToLoop(), llvm::annotateValueSite(), llvm::DIExpression::append(), llvm::DIExpression::appendOpsToArg(), 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(), FixupDebugInfoForOutlinedFunction(), fixupDebugInfoPostExtraction(), llvm::DIExpression::foldConstantMath(), 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::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(), TryToShrinkGlobalToBoolean(), llvm::uniteAccessGroups(), updateDVIWithLocation(), updateDVIWithLocations(), llvm::LoopVectorizationPlanner::updateLoopMetadataAndProfileInfo(), upgradeAMDGCNIntrinsicCall(), llvm::UpgradeModuleFlags(), llvm::UpgradeNVVMAnnotations(), upgradeNVVMIntrinsicCall(), llvm::UpgradeTBAANode(), upgradeX86IntrinsicCall(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Definition at line 1241 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().
|
inlinestatic |
Definition at line 1573 of file Metadata.h.
References llvm::MDTuple::getDistinct().
Referenced by addBasicBlockMetadata(), llvm::DebugLoc::appendInlinedAt(), 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().
|
inlinestatic |
Definition at line 1569 of file Metadata.h.
References llvm::MDTuple::getIfExists().
Definition at line 1306 of file Metadata.cpp.
References A(), B(), get(), llvm::SmallPtrSetImpl< PtrType >::insert(), MDNode(), llvm::Metadata::Metadata(), and N.
Referenced by combineMetadata().
Definition at line 594 of file MemoryProfileInfo.cpp.
References A(), B(), and MDNode().
Referenced by combineMetadata().
Definition at line 585 of file MemoryProfileInfo.cpp.
References A(), B(), and MDNode().
Referenced by combineMetadata().
|
static |
Merge !prof metadata from two instructions.
Currently only implemented with direct callsites with branch weights.
Definition at line 1224 of file Metadata.cpp.
References A(), assert(), B(), llvm::dyn_cast(), llvm::CallBase::getCalledFunction(), llvm::Instruction::getMetadata(), I, and MDNode().
Referenced by combineMetadata().
Definition at line 1142 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().
Definition at line 1434 of file Metadata.cpp.
References A(), B(), llvm::mdconst::extract(), llvm::ConstantInt::getZExtValue(), and MDNode().
Referenced by combineMetadata().
Definition at line 1174 of file Metadata.cpp.
References A(), B(), llvm::mdconst::extract(), and MDNode().
Referenced by combineMetadata(), convertFSqrtDivIntoFMul(), and llvm::propagateMetadata().
Definition at line 1397 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().
Definition at line 1324 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().
Definition at line 477 of file TypeBasedAliasAnalysis.cpp.
References A(), B(), matchAccessTags(), and MDNode().
Referenced by combineMetadata(), llvm::AAMDNodes::merge(), and llvm::propagateMetadata().
|
inline |
Return number of MDNode operands.
Definition at line 1451 of file Metadata.h.
Referenced by llvm::AbstractCallSite::AbstractCallSite(), llvm::memprof::CallStackTrie::addCallStack(), addRuntimeUnrollDisableMetaData(), llvm::addStringMetadataToLoop(), addToAccessGroupList(), llvm::buildOpSpirvDecorations(), llvm::cacheAnnotationFromMD(), computeFunctionSummary(), createAccessTag(), dropAllReferences(), 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(), AliasScopeTracker::isNoAliasScopeDeclDead(), IsRootTBAANode(), IsScalarTBAANodeImpl(), isStructPathTBAA(), isTBAAVtableAccess(), llvm::SPIRVCallLowering::lowerFormalArguments(), llvm::makeFollowupLoopID(), llvm::mayHaveValueProfileOfKind(), llvm::MDBuilder::mergeCallbackEncodings(), llvm::MDTuple::pop_back(), propagateMemProfHelper(), llvm::MDTuple::push_back(), saveFilteredNewMIBNodes(), llvm::scaleProfData(), llvm::Loop::setLoopID(), setOperand(), llvm::AAMDNodes::shiftTBAAStruct(), translateBranchMetadata(), unrollAndJamCountPragmaValue(), unrollCountPragmaValue(), updateLoopMetadataDebugLocationsImpl(), llvm::UpgradeTBAANode(), and llvm::TBAAVerifier::visitTBAAMetadata().
|
inline |
Definition at line 1273 of file Metadata.h.
References assert(), and isTemporary().
|
inlineprotected |
Definition at line 1366 of file Metadata.h.
Referenced by isResolved(), and storeDistinctInContext().
Definition at line 1445 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(), 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(), getOriginalFunctionType(), 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(), AliasScopeTracker::isNoAliasScopeDeclDead(), IsScalarTBAANodeImpl(), isStructPathTBAA(), isTBAAVtableAccess(), llvm::lookupPGONameFromMetadata(), llvm::makeFollowupLoopID(), llvm::mayHaveValueProfileOfKind(), llvm::MDBuilder::mergeCallbackEncodings(), replaceOperandWith(), saveFilteredNewMIBNodes(), llvm::scaleProfData(), llvm::Loop::setLoopID(), llvm::AAMDNodes::shiftTBAAStruct(), translateBranchMetadata(), unrollAndJamCountPragmaValue(), unrollCountPragmaValue(), updateLoopMetadataDebugLocationsImpl(), llvm::UpgradeTBAANode(), and llvm::TBAAVerifier::visitTBAAMetadata().
|
inlinestatic |
Definition at line 1577 of file Metadata.h.
References llvm::MDTuple::getTemporary().
Referenced by llvm::DIBasicType::cloneImpl(), llvm::DIBuilder::createReplaceableCompositeType(), llvm::DIBuilder::createTempFunctionFwdDecl(), llvm::DIBuilder::createTempGlobalVariableFwdDecl(), and llvm::DIBuilder::createTempMacroFile().
|
inline |
Check if this is a valid generalized type metadata node.
Definition at line 1267 of file Metadata.h.
References llvm::cast(), getNumOperands(), getOperand(), and llvm::isa().
Definition at line 1129 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().
|
inline |
Definition at line 1264 of file Metadata.h.
References llvm::Metadata::getMetadataID().
Referenced by isReplaceable().
|
inline |
Definition at line 1260 of file Metadata.h.
References llvm::Metadata::Distinct, and llvm::Metadata::Storage.
Referenced by llvm::DIType::mutate().
|
inline |
Definition at line 1263 of file Metadata.h.
References isAlwaysReplaceable(), and isTemporary().
Referenced by replaceAllUsesWith().
|
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 1257 of file Metadata.h.
References getNumUnresolved(), and isTemporary().
Referenced by resolve(), resolveCycles(), and storeDistinctInContext().
bool MDNode::isTBAAVtableAccess | ( | ) | const |
Check whether MDNode is a vtable access.
Definition at line 454 of file TypeBasedAliasAnalysis.cpp.
References llvm::dyn_cast(), getNumOperands(), getOperand(), isStructPathTBAA(), and llvm::Tag.
|
inline |
Definition at line 1261 of file Metadata.h.
References llvm::Metadata::Storage, and llvm::Metadata::Temporary.
Referenced by getNumTemporaryUses(), isReplaceable(), isResolved(), and llvm::MetadataLoader::MetadataLoaderImpl::parseMetadataAttachment().
|
inline |
Definition at line 1259 of file Metadata.h.
References llvm::Metadata::Storage, and llvm::Metadata::Uniqued.
Referenced by MDNode(), replaceOperandWith(), llvm::DILexicalBlockBase::replaceScope(), resize(), resolve(), and setOperand().
|
inlineprotected |
Definition at line 1210 of file Metadata.h.
Referenced by mutable_operands(), op_begin(), replaceOperandWith(), and setOperand().
|
inlineprotected |
Definition at line 1211 of file Metadata.h.
Referenced by mutable_operands(), and op_end().
|
inlineprotected |
Definition at line 1215 of file Metadata.h.
References mutable_begin(), and mutable_end().
|
inline |
Definition at line 1435 of file Metadata.h.
References MDNode(), and mutable_begin().
Referenced by llvm::GenericDINode::dwarf_op_begin(), and haveCommonPrefix().
|
inline |
Definition at line 1439 of file Metadata.h.
References MDNode(), and mutable_end().
Referenced by llvm::GenericDINode::dwarf_op_end(), and haveCommonPrefix().
Definition at line 1443 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(), and resolveCycles().
|
inlineprotected |
Required by std, but never called.
Definition at line 1199 of file Metadata.h.
References llvm_unreachable.
Required by std, but never called.
Definition at line 1204 of file Metadata.h.
References llvm_unreachable.
|
protected |
Definition at line 644 of file Metadata.cpp.
|
protected |
Definition at line 634 of file Metadata.cpp.
References AbstractManglingParser< Derived, Alloc >::NumOps, Size, and llvm::Metadata::Storage.
void MDNode::printTree | ( | raw_ostream & | OS, |
const Module * | M = nullptr ) const |
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 5434 of file AsmWriter.cpp.
References printMetadataImpl().
Referenced by dumpTree().
void MDNode::printTree | ( | raw_ostream & | OS, |
ModuleSlotTracker & | MST, | ||
const Module * | M = nullptr ) const |
Definition at line 5440 of file AsmWriter.cpp.
References printMetadataImpl().
|
inline |
RAUW a temporary.
true
. Definition at line 1281 of file Metadata.h.
References assert(), isReplaceable(), and llvm::Metadata::Metadata().
Referenced by llvm::at::RAUW().
Replace a specific operand.
Definition at line 1078 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().
|
inlinestatic |
Replace a temporary node with a distinct one.
Create a distinct version of N
– in place, if possible – and return it. Takes ownership of the temporary node.
Definition at line 1326 of file Metadata.h.
References llvm::cast(), and N.
Referenced by llvm::DIBuilder::createArtificialSubprogram().
|
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 1304 of file Metadata.h.
References llvm::cast(), and N.
|
inlinestatic |
Replace a temporary node with a uniqued one.
Create a uniqued version of N
– in place, if possible – and return it. Takes ownership of the temporary node.
Definition at line 1316 of file Metadata.h.
References llvm::cast(), and N.
Referenced by cloneAndReplaceParentScope(), llvm::coro::BaseCloner::create(), createTypeWithFlags(), llvm::DIBuilder::replaceTemporary(), and updateSubprogramLinkageName().
|
inlineprotected |
Resize the node to hold NumOps operands.
Definition at line 1378 of file Metadata.h.
References AbstractManglingParser< Derived, Alloc >::NumOps, assert(), llvm::Metadata::getMetadataID(), and isUniqued().
Referenced by llvm::MDTuple::pop_back(), and llvm::MDTuple::push_back().
void MDNode::resolve | ( | ) |
Resolve a unique, unresolved node.
Definition at line 796 of file Metadata.cpp.
References assert(), isResolved(), isUniqued(), and setNumUnresolved().
Referenced by resolveCycles().
void MDNode::resolveCycles | ( | ) |
Resolve cycles.
Once all forward declarations have been resolved, force cycles to be resolved.
Definition at line 842 of file Metadata.cpp.
References assert(), llvm::dyn_cast_or_null(), isResolved(), N, operands(), and resolve().
|
inlineprotected |
Set an operand.
Sets the operand directly, without worrying about uniquing.
Definition at line 1090 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().
|
protected |
Definition at line 1056 of file Metadata.cpp.
References assert(), llvm::Metadata::Distinct, llvm::LLVMContextImpl::DistinctMDNodes, getContext(), llvm::Metadata::getMetadataID(), getNumUnresolved(), isResolved(), llvm_unreachable, llvm::LLVMContext::pImpl, and llvm::Metadata::Storage.
|
staticprotected |
Definition at line 28 of file MetadataImpl.h.
References llvm::Metadata::Distinct, llvm_unreachable, N, llvm::Metadata::Storage, T, llvm::Metadata::Temporary, and llvm::Metadata::Uniqued.
|
staticprotected |
Definition at line 42 of file MetadataImpl.h.
References llvm::Metadata::Distinct, N, llvm::Metadata::Storage, T, llvm::Metadata::Temporary, and llvm::Metadata::Uniqued.
|
friend |
Definition at line 1080 of file Metadata.h.
References AbstractManglingParser< Derived, Alloc >::NumOps, and DIAssignID.
Referenced by DIAssignID.
|
friend |
Definition at line 1079 of file Metadata.h.
References LLVMContextImpl.
Referenced by LLVMContextImpl.
|
friend |
Definition at line 1078 of file Metadata.h.
References ReplaceableMetadataImpl.
Referenced by ReplaceableMetadataImpl.