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