LLVM: include/llvm/ADT/ilist_base.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_ADT_ILIST_BASE_H
10#define LLVM_ADT_ILIST_BASE_H
11
13#include
14
15namespace llvm {
16
17
18template <bool EnableSentinelTracking, class ParentTy> class ilist_base {
19public:
21
25 N.setPrev(&Prev);
26 Prev.setNext(&N);
28 }
29
33 Next->setPrev(Prev);
34 Prev->setNext(Next);
35
36
37 N.setPrev(nullptr);
38 N.setNext(nullptr);
39 }
40
44 Last.setPrev(Prev);
45 Prev->setNext(&Last);
46
47
48 First.setPrev(nullptr);
49 Final->setNext(nullptr);
50 }
51
55 return;
56
57
59
60 "Insertion point can't be one of the transferred nodes");
61
63
64
67
68
70 Final.setNext(&Next);
71 First.setPrev(&Prev);
72 Prev.setNext(&First);
73 Next.setPrev(&Final);
74 }
75
79
84
88};
89
90}
91
92#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
Implementations of list algorithms using ilist_node_base.
Definition ilist_base.h:18
static void removeRange(T &First, T &Last)
Definition ilist_base.h:81
static void insertBefore(T &Next, T &N)
Definition ilist_base.h:76
static void removeRangeImpl(node_base_type &First, node_base_type &Last)
Definition ilist_base.h:41
static void insertBeforeImpl(node_base_type &Next, node_base_type &N)
Definition ilist_base.h:22
static void transferBeforeImpl(node_base_type &Next, node_base_type &First, node_base_type &Last)
Definition ilist_base.h:52
static void remove(T &N)
Definition ilist_base.h:80
ilist_node_base< EnableSentinelTracking, ParentTy > node_base_type
Definition ilist_base.h:20
static void transferBefore(T &Next, T &First, T &Last)
Definition ilist_base.h:85
static void removeImpl(node_base_type &N)
Definition ilist_base.h:30
Base class for ilist nodes.
This is an optimization pass for GlobalISel generic memory operations.
@ First
Helpers to iterate all locations in the MemoryEffectsBase class.
FunctionAddr VTableAddr Next