9#ifndef LLVM_ADT_ILIST_NODE_OPTIONS_H
10#define LLVM_ADT_ILIST_NODE_OPTIONS_H
12#include "llvm/Config/abi-breaking.h"
18template <
bool EnableSentinelTracking,
class ParentTy>
class ilist_node_base;
19template <
bool EnableSentinelTracking,
class ParentTy>
class ilist_base;
55namespace ilist_detail {
82template <
bool EnableSentinelTracking,
class...
Options>
85 : std::integral_constant<bool, EnableSentinelTracking>,
is_explicit {};
86template <
class Option1,
class...
Options>
89#if LLVM_ENABLE_ABI_BREAKING_CHECKS
95template <
bool EnableSentinelTracking>
108template <
class Option1,
class...
Options>
120template <
bool IteratorBits,
class...
Options>
122 : std::integral_constant<bool, IteratorBits> {};
123template <
class Option1,
class...
Options>
127template <
bool IteratorBits>
135template <
class ParentTy,
class...
Options>
139template <
class Option1,
class...
Options>
142template <
class ParentTy>
150template <
class Option1,
class...
Options>
152 : std::integral_constant<bool, is_valid_option<Option1>::value &&
153 check_options<Options...>::value> {};
158template <
class T,
bool EnableSentinelTracking,
bool IsSentinelTrackingExplicit,
159 class TagT,
bool HasIteratorBits,
class ParentTy>
Given that RA is a live value
Implementations of list algorithms using ilist_node_base.
Base class for ilist nodes.
explicitness< true > is_explicit
explicitness< false > is_implicit
This is an optimization pass for GlobalISel generic memory operations.
Check whether options are valid.
node_options< T, extract_sentinel_tracking< Options... >::value, extract_sentinel_tracking< Options... >::is_explicit, typename extract_tag< Options... >::type, extract_iterator_bits< Options... >::value, typename extract_parent< Options... >::type > type
Helper trait for recording whether an option is specified explicitly.
Check whether an option is valid.
Traits for options for ilist_node.
static const bool enable_sentinel_tracking
const T & const_reference
static const bool is_sentinel_tracking_explicit
ilist_base< enable_sentinel_tracking, parent_ty > list_base_type
static const bool has_iterator_bits
ilist_node_base< enable_sentinel_tracking, parent_ty > node_base_type
Option to add extra bits to the ilist_iterator.
Option to add a pointer to this list's owner in every node.
Option to choose whether to track sentinels.
Option to specify a tag for the node type.