LLVM 22.0.0git
Metadata.h File Reference

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

#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseMapInfo.h"
#include "llvm/ADT/PointerUnion.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/ilist_node.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/CBindingWrapping.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h"
#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

 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...
 Value wrapper in the Metadata hierarchy. More...
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)

Typedefs

template<typename U, typename V>
using llvm::mdconst::detail::check_has_dereference = decltype(static_cast<V>(*std::declval<U &>()))

Enumerations

enum  llvm::LLVMConstants : uint32_t { llvm::DEBUG_METADATA_VERSION = 3 }

Functions

Metadata ** llvm::unwrap (LLVMMetadataRef *MDs)
raw_ostreamllvm::operator<< (raw_ostream &OS, const Metadata &MD)
template<class X, class Y>
std::enable_if_t< detail::IsValidPointer< X, Y >::value, boolllvm::mdconst::hasa (Y &&MD)
 Check whether Metadata has a Value.
template<class X, class Y>
std::enable_if_t< detail::IsValidReference< X, Y & >::value, boolllvm::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.

Variables

const uint64_t llvm::NOMORE_ICP_MAGICNUM = -1
 Magic number in the value profile metadata showing a target has been promoted for the instruction and shouldn't be promoted again.
template<typename U, typename V>
static constexpr bool llvm::mdconst::detail::HasDereference

Detailed Description

This file contains the declarations for metadata subclasses.

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

Definition in file Metadata.h.

Macro Definition Documentation

β—† HANDLE_MDNODE_BRANCH

#define HANDLE_MDNODE_BRANCH ( CLASS)
Value:
#define HANDLE_MDNODE_LEAF(CLASS)
Definition Metadata.h:1050

Definition at line 1052 of file Metadata.h.

β—† 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)
Value:
class CLASS;

Definition at line 158 of file Metadata.h.

β—† HANDLE_METADATA [2/2]

#define HANDLE_METADATA ( CLASS)
Value:
using CLASS##Array = MDTupleTypedArrayWrapper<CLASS>;

Definition at line 158 of file Metadata.h.

β—† HANDLE_METADATA_LEAF [1/2]

#define HANDLE_METADATA_LEAF ( CLASS)
Value:
CLASS##Kind,

Definition at line 83 of file Metadata.h.

β—† 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; \
} \
};
dxil translate DXIL Translate Metadata

Definition at line 83 of file Metadata.h.