Go to the documentation of this file.
9 #ifndef LLVM_ADT_ILIST_NODE_OPTIONS_H
10 #define LLVM_ADT_ILIST_NODE_OPTIONS_H
12 #include "llvm/Config/abi-breaking.h"
14 #include <type_traits>
18 template <
bool EnableSentinelTracking>
class ilist_node_base;
19 template <
bool EnableSentinelTracking>
class ilist_base;
34 namespace ilist_detail {
61 template <
bool EnableSentinelTracking,
class...
Options>
64 : std::integral_constant<bool, EnableSentinelTracking>,
is_explicit {};
65 template <
class Option1,
class...
Options>
68 #if LLVM_ENABLE_ABI_BREAKING_CHECKS
74 template <
bool EnableSentinelTracking>
87 template <
class Option1,
class...
Options>
99 template <
class Option1,
class...
Options>
101 : std::integral_constant<bool, is_valid_option<Option1>::value &&
102 check_options<Options...>::value> {};
107 template <
class T,
bool EnableSentinelTracking,
bool IsSentinelTrackingExplicit,
133 #endif // LLVM_ADT_ILIST_NODE_OPTIONS_H
const typedef T & const_reference
This is an optimization pass for GlobalISel generic memory operations.
const typedef T * const_pointer
Base class for ilist nodes.
ilist_node_base< enable_sentinel_tracking > node_base_type
node_options< T, extract_sentinel_tracking< Options... >::value, extract_sentinel_tracking< Options... >::is_explicit, typename extract_tag< Options... >::type > type
Traits for options for ilist_node.
explicitness< false > is_implicit
Option to choose whether to track sentinels.
const char LLVMTargetMachineRef LLVMPassBuilderOptionsRef Options
Option to specify a tag for the node type.
explicitness< true > is_explicit
Check whether an option is valid.
Implementations of list algorithms using ilist_node_base.
static const bool is_sentinel_tracking_explicit
ilist_base< enable_sentinel_tracking > list_base_type
Helper trait for recording whether an option is specified explicitly.
static const bool enable_sentinel_tracking
Check whether options are valid.