LLVM: lib/IR/Metadata.cpp File Reference (original) (raw)
Go to the source code of this file.
| Macros | |
|---|---|
| #define | HANDLE_METADATA_LEAF(CLASS) |
| #define | HANDLE_MDNODE_LEAF(CLASS) |
| #define | HANDLE_MDNODE_LEAF(CLASS) |
| #define | HANDLE_MDNODE_LEAF_UNIQUABLE(CLASS) |
| #define | HANDLE_MDNODE_LEAF(CLASS) |
| #define | HANDLE_MDNODE_LEAF_UNIQUABLE(CLASS) |
| #define | HANDLE_MDNODE_LEAF_UNIQUABLE(CLASS) |
| #define | HANDLE_MDNODE_LEAF(CLASS) |
| Functions | |
|---|---|
| static Metadata * | canonicalizeMetadataForValue (LLVMContext &Context, Metadata *MD) |
| Canonicalize metadata arguments to intrinsics. | |
| static DISubprogram * | getLocalFunctionMetadata (Value *V) |
| static bool | isOperandUnresolved (Metadata *Op) |
| static bool | hasSelfReference (MDNode *N) |
| template<class T, class InfoT> | |
| static T * | uniquifyImpl (T *N, DenseSet< T *, InfoT > &Store) |
| static MDNode * | getOrSelfReference (LLVMContext &Context, ArrayRef< Metadata * > Ops) |
| Get a node or a self-reference that looks like it. | |
| static bool | isContiguous (const ConstantRange &A, const ConstantRange &B) |
| static bool | canBeMerged (const ConstantRange &A, const ConstantRange &B) |
| static bool | tryMergeRange (SmallVectorImpl< ConstantInt * > &EndPoints, ConstantInt *Low, ConstantInt *High) |
| static void | addRange (SmallVectorImpl< ConstantInt * > &EndPoints, ConstantInt *Low, ConstantInt *High) |
| static SmallVector< TrackingMDRef, 4 > & | getNMDOps (void *Operands) |
◆ HANDLE_MDNODE_LEAF [1/4]
| #define HANDLE_MDNODE_LEAF | ( | CLASS | ) |
|---|
Value:
static_assert( \
alignof(uint64_t) >= alignof(CLASS), \
"Alignment is insufficient after objects prepended to " #CLASS);
Definition at line 629 of file Metadata.cpp.
◆ HANDLE_MDNODE_LEAF [2/4]
| #define HANDLE_MDNODE_LEAF | ( | CLASS | ) |
|---|
Value:
case CLASS##Kind: \
decltype(auto) cast(const From &Val)
cast - Return the argument parameter cast to the specified type.
Definition at line 629 of file Metadata.cpp.
◆ HANDLE_MDNODE_LEAF [3/4]
| #define HANDLE_MDNODE_LEAF | ( | CLASS | ) |
|---|
Value:
case CLASS##Kind: \
break;
Definition at line 629 of file Metadata.cpp.
◆ HANDLE_MDNODE_LEAF [4/4]
| #define HANDLE_MDNODE_LEAF | ( | CLASS | ) |
|---|
Value:
case CLASS##Kind: { \
break; \
}
Definition at line 629 of file Metadata.cpp.
◆ HANDLE_MDNODE_LEAF_UNIQUABLE [1/3]
| #define HANDLE_MDNODE_LEAF_UNIQUABLE | ( | CLASS | ) |
|---|
Value:
case CLASS##Kind: \
break;
◆ HANDLE_MDNODE_LEAF_UNIQUABLE [2/3]
| #define HANDLE_MDNODE_LEAF_UNIQUABLE | ( | CLASS | ) |
|---|
Value:
case CLASS##Kind: { \
dispatchRecalculateHash(SubclassThis); \
return uniquifyImpl(SubclassThis, getContext().pImpl->CLASS##s); \
}
◆ HANDLE_MDNODE_LEAF_UNIQUABLE [3/3]
| #define HANDLE_MDNODE_LEAF_UNIQUABLE | ( | CLASS | ) |
|---|
Value:
case CLASS##Kind: \
getContext().pImpl->CLASS##s.erase(cast(this)); \
break;
◆ HANDLE_METADATA_LEAF
| #define HANDLE_METADATA_LEAF | ( | CLASS | ) |
|---|
Value:
case Metadata::CLASS##Kind: \
cast(OwnerMD)->handleChangedOperand(Pair.first, MD); \
continue;
◆ addRange()
◆ canBeMerged()
◆ canonicalizeMetadataForValue()
◆ getLocalFunctionMetadata()
◆ getNMDOps()
◆ getOrSelfReference()
Get a node or a self-reference that looks like it.
Special handling for finding self-references, for use by MDNode::concatenate() and MDNode::intersect() to maintain behaviour from when self-referencing nodes were still uniqued. If the first operand has the same operands as Ops, return the first operand instead.
Definition at line 1095 of file Metadata.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::dyn_cast_or_null(), E(), llvm::MDNode::get(), I, and N.
Referenced by llvm::MDNode::concatenate(), llvm::MDNode::getMostGenericAliasScope(), and llvm::MDNode::intersect().
◆ hasSelfReference()
◆ isContiguous()
◆ isOperandUnresolved()
◆ tryMergeRange()
◆ uniquifyImpl()
template<class T, class InfoT>
| T * uniquifyImpl ( T * N, DenseSet< T *, InfoT > & Store ) | static |
|---|