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