LLVM: include/llvm/IR/Metadata.h File Reference (original) (raw)

This file contains the declarations for metadata subclasses. More...

#include "[llvm/ADT/ArrayRef.h](ArrayRef%5F8h%5Fsource.html)"
#include "[llvm/ADT/DenseMap.h](DenseMap%5F8h%5Fsource.html)"
#include "[llvm/ADT/DenseMapInfo.h](DenseMapInfo%5F8h%5Fsource.html)"
#include "[llvm/ADT/PointerUnion.h](PointerUnion%5F8h%5Fsource.html)"
#include "[llvm/ADT/SmallVector.h](SmallVector%5F8h%5Fsource.html)"
#include "[llvm/ADT/StringRef.h](StringRef%5F8h%5Fsource.html)"
#include "[llvm/ADT/ilist_node.h](ilist%5F%5Fnode%5F8h%5Fsource.html)"
#include "[llvm/ADT/iterator_range.h](iterator%5F%5Frange%5F8h%5Fsource.html)"
#include "[llvm/IR/Constant.h](IR%5F2Constant%5F8h%5Fsource.html)"
#include "[llvm/IR/LLVMContext.h](LLVMContext%5F8h%5Fsource.html)"
#include "[llvm/IR/Value.h](IR%5F2Value%5F8h%5Fsource.html)"
#include "[llvm/Support/CBindingWrapping.h](CBindingWrapping%5F8h%5Fsource.html)"
#include "[llvm/Support/Casting.h](Casting%5F8h%5Fsource.html)"
#include "[llvm/Support/Compiler.h](Compiler%5F8h%5Fsource.html)"
#include "[llvm/Support/ErrorHandling.h](llvm%5F2Support%5F2ErrorHandling%5F8h%5Fsource.html)"
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <iterator>
#include <memory>
#include <string>
#include <type_traits>
#include <utility>
#include "llvm/IR/Metadata.def"

Go to the source code of this file.

Classes
class llvm::Metadata
Root of the metadata hierarchy. More...
class llvm::MetadataAsValue
Metadata wrapper in the Value hierarchy. More...
class llvm::DebugValueUser
Base class for tracking ValueAsMetadata/DIArgLists with user lookups and Owner callbacks outside of ValueAsMetadata. More...
class llvm::MetadataTracking
API for tracking metadata references through RAUW and deletion. More...
class llvm::ReplaceableMetadataImpl
Shared implementation of use-lists for replaceable metadata. More...
class llvm::ValueAsMetadata
Value wrapper in the Metadata hierarchy. More...
class llvm::ConstantAsMetadata
class llvm::LocalAsMetadata
struct llvm::mdconst::detail::IsValidPointer< V, M >
struct llvm::mdconst::detail::IsValidReference< V, M >
class llvm::MDString
A single uniqued string. More...
struct llvm::AAMDNodes
A collection of metadata nodes that might be associated with a memory access used by the alias-analysis infrastructure. More...
struct llvm::DenseMapInfo< AAMDNodes >
class llvm::MDOperand
Tracking metadata reference owned by Metadata. More...
struct llvm::simplify_type< MDOperand >
struct llvm::simplify_type< const MDOperand >
class llvm::ContextAndReplaceableUses
Pointer to the context, with optional RAUW support. More...
struct llvm::TempMDNodeDeleter
class llvm::MDNode
Metadata node. More...
class llvm::MDTuple
Tuple of metadata. More...
class llvm::AliasScopeNode
This is a simple wrapper around an MDNode which provides a higher-level interface by hiding the details of how alias analysis information is encoded in its operands. More...
class llvm::TypedMDOperandIterator< T >
Typed iterator through MDNode operands. More...
class llvm::MDTupleTypedArrayWrapper< T >
Typed, array-like tuple of metadata. More...
class llvm::DistinctMDOperandPlaceholder
Placeholder metadata for operands of distinct MDNodes. More...
class llvm::NamedMDNode
A tuple of MDNodes. More...
Namespaces
namespace llvm
This is an optimization pass for GlobalISel generic memory operations.
namespace llvm::mdconst
Transitional API for extracting constants from Metadata.
namespace llvm::mdconst::detail
Macros
#define HANDLE_METADATA_LEAF(CLASS)
#define HANDLE_METADATA(CLASS)
#define HANDLE_METADATA_LEAF(CLASS)
#define HANDLE_MDNODE_LEAF(CLASS)
#define HANDLE_MDNODE_BRANCH(CLASS)
#define HANDLE_MDNODE_LEAF(CLASS)
#define HANDLE_METADATA(CLASS)
Functions
Metadata ** llvm::unwrap (LLVMMetadataRef *MDs)
raw_ostream & llvm::operator<< (raw_ostream &OS, const Metadata &MD)
template<class X, class Y>
std::enable_if_t< detail::IsValidPointer< X, Y >::value, bool > llvm::mdconst::hasa (Y &&MD)
Check whether Metadata has a Value.
template<class X, class Y>
std::enable_if_t< detail::IsValidReference< X, Y & >::value, bool > llvm::mdconst::hasa (Y &MD)
template<class X, class Y>
std::enable_if_t< detail::IsValidPointer< X, Y >::value, X * > llvm::mdconst::extract (Y &&MD)
Extract a Value from Metadata.
template<class X, class Y>
std::enable_if_t< detail::IsValidReference< X, Y & >::value, X * > llvm::mdconst::extract (Y &MD)
template<class X, class Y>
std::enable_if_t< detail::IsValidPointer< X, Y >::value, X * > llvm::mdconst::extract_or_null (Y &&MD)
Extract a Value from Metadata, allowing null.
template<class X, class Y>
std::enable_if_t< detail::IsValidPointer< X, Y >::value, X * > llvm::mdconst::dyn_extract (Y &&MD)
Extract a Value from Metadata, if any.
template<class X, class Y>
std::enable_if_t< detail::IsValidPointer< X, Y >::value, X * > llvm::mdconst::dyn_extract_or_null (Y &&MD)
Extract a Value from Metadata, if any, allowing null.

This file contains the declarations for metadata subclasses.

They represent the different flavors of metadata that live in LLVM.

Definition in file Metadata.h.

HANDLE_MDNODE_BRANCH

#define HANDLE_MDNODE_BRANCH ( CLASS )

HANDLE_MDNODE_LEAF [1/2]

#define HANDLE_MDNODE_LEAF ( CLASS )

Value:

using Temp##CLASS = std::unique_ptr<CLASS, TempMDNodeDeleter>;

Definition at line 1050 of file Metadata.h.

HANDLE_MDNODE_LEAF [2/2]

#define HANDLE_MDNODE_LEAF ( CLASS )

Value:

case CLASS##Kind: \

return true;

Definition at line 1050 of file Metadata.h.

HANDLE_METADATA [1/2]

#define HANDLE_METADATA ( CLASS )

HANDLE_METADATA [2/2]

#define HANDLE_METADATA ( CLASS )

Value:

using CLASS##Array = MDTupleTypedArrayWrapper;

Definition at line 158 of file Metadata.h.

HANDLE_METADATA_LEAF [1/2]

#define HANDLE_METADATA_LEAF ( CLASS )

HANDLE_METADATA_LEAF [2/2]

#define HANDLE_METADATA_LEAF ( CLASS )

Value:

template <> struct isa_impl<CLASS, Metadata> { \

static inline bool doit(const Metadata &MD) { \

return MD.getMetadataID() == Metadata::CLASS##Kind; \

} \

};

Definition at line 83 of file Metadata.h.