LLVM  mainline
Classes | Namespaces | Defines | Enumerations | Functions
Metadata.h File Reference
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/ilist_node.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/MetadataTracking.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/ErrorHandling.h"
#include <type_traits>
#include "llvm/IR/Metadata.def"
Include dependency graph for Metadata.h:
This graph shows which files directly or indirectly include this file:

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::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::HasDereference< T, Result >
struct  llvm::mdconst::detail::HasDereference< T, Result >::SFINAE< N >
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::NamedMDNode
 A tuple of MDNodes. More...
class  llvm::NamedMDNode::op_iterator_impl< T1, T2 >

Namespaces

namespace  llvm
 

List of target independent CodeGen pass IDs.


namespace  llvm::mdconst
 

Transitional API for extracting constants from Metadata.


namespace  llvm::mdconst::detail

Defines

#define HANDLE_METADATA(CLASS)   class CLASS;
#define HANDLE_METADATA_LEAF(CLASS)
#define HANDLE_MDNODE_LEAF(CLASS)   typedef std::unique_ptr<CLASS, TempMDNodeDeleter> Temp##CLASS;
#define HANDLE_MDNODE_BRANCH(CLASS)   HANDLE_MDNODE_LEAF(CLASS)
#define HANDLE_MDNODE_LEAF(CLASS)

Enumerations

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

Functions

raw_ostream & llvm::operator<< (raw_ostream &OS, const Metadata &MD)
template<class T >
Tllvm::mdconst::detail::make ()
template<class X , class Y >
std::enable_if
< detail::IsValidPointer< X, Y >
::value, bool >::type 
llvm::mdconst::hasa (Y &&MD)
 Check whether Metadata has a Value.
template<class X , class Y >
std::enable_if
< detail::IsValidReference< X,
Y & >::value, bool >::type 
llvm::mdconst::hasa (Y &MD)
template<class X , class Y >
std::enable_if
< detail::IsValidPointer< X, Y >
::value, X * >::type 
llvm::mdconst::extract (Y &&MD)
 Extract a Value from Metadata.
template<class X , class Y >
std::enable_if
< detail::IsValidReference< X,
Y & >::value, X * >::type 
llvm::mdconst::extract (Y &MD)
template<class X , class Y >
std::enable_if
< detail::IsValidPointer< X, Y >
::value, X * >::type 
llvm::mdconst::extract_or_null (Y &&MD)
 Extract a Value from Metadata, allowing null.
template<class X , class Y >
std::enable_if
< detail::IsValidPointer< X, Y >
::value, X * >::type 
llvm::mdconst::dyn_extract (Y &&MD)
 Extract a Value from Metadata, if any.
template<class X , class Y >
std::enable_if
< detail::IsValidPointer< X, Y >
::value, X * >::type 
llvm::mdconst::dyn_extract_or_null (Y &&MD)
 Extract a Value from Metadata, if any, allowing null.

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.


Define Documentation

#define HANDLE_MDNODE_BRANCH (   CLASS)    HANDLE_MDNODE_LEAF(CLASS)

Definition at line 709 of file Metadata.h.

#define HANDLE_MDNODE_LEAF (   CLASS)    typedef std::unique_ptr<CLASS, TempMDNodeDeleter> Temp##CLASS;

Definition at line 707 of file Metadata.h.

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

Definition at line 707 of file Metadata.h.

#define HANDLE_METADATA (   CLASS)    class CLASS;

Definition at line 135 of file Metadata.h.

#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 140 of file Metadata.h.