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:1049

Definition at line 1051 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 1049 of file Metadata.h.

◆ HANDLE_MDNODE_LEAF [2/2]

#define HANDLE_MDNODE_LEAF ( CLASS)
Value:
case CLASS##Kind: \
return true;

Definition at line 1049 of file Metadata.h.

◆ HANDLE_METADATA [1/2]

#define HANDLE_METADATA ( CLASS)
Value:
class CLASS;

Definition at line 157 of file Metadata.h.

◆ HANDLE_METADATA [2/2]

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

Definition at line 157 of file Metadata.h.

◆ HANDLE_METADATA_LEAF [1/2]

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

Definition at line 82 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 82 of file Metadata.h.