LLVM: include/llvm/Analysis/DomTreeUpdater.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_ANALYSIS_DOMTREEUPDATER_H

15#define LLVM_ANALYSIS_DOMTREEUPDATER_H

16

21#include

22#include

23

24namespace llvm {

25

26class PostDominatorTree;

27

30 PostDominatorTree> {

33

34public:

37 using Base::Base;

38

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

70

71

72

73

74

75

76

77

78

80 std::function<void(BasicBlock *)> Callback);

81

82

83

84

86

87private:

88 class CallBackOnDeletion final : public CallbackVH {

89 public:

93

94 private:

95 BasicBlock *DelBB = nullptr;

96 std::function<void(BasicBlock *)> Callback_;

97

98 void deleted() override {

99 Callback_(DelBB);

101 }

102 };

103

104 std::vector Callbacks;

105

106

107

108

109

110

111 void validateDeleteBB(BasicBlock *DelBB);

112

113

114 bool forceFlushDeletedBB();

115};

116

117extern template class GenericDomTreeUpdater<DomTreeUpdater, DominatorTree,

118 PostDominatorTree>;

119

120extern template void

121GenericDomTreeUpdater<DomTreeUpdater, DominatorTree,

122 PostDominatorTree>::recalculate(Function &F);

123

124extern template void

125GenericDomTreeUpdater<DomTreeUpdater, DominatorTree, PostDominatorTree>::

126 applyUpdatesImpl<true>();

127extern template void

128GenericDomTreeUpdater<DomTreeUpdater, DominatorTree, PostDominatorTree>::

129 applyUpdatesImpl<false>();

130}

131

132#endif

#define LLVM_DUMP_METHOD

Mark debug helper function definitions like dump() that should not be stripped from debug builds.

LLVM Basic Block Representation.

Value handle with callbacks on RAUW and destruction.

virtual void deleted()

Callback for Value destruction.

LLVM_DUMP_METHOD void dump() const

Debug method to help view the internal state of this class.

void callbackDeleteBB(BasicBlock *DelBB, std::function< void(BasicBlock *)> Callback)

Delete DelBB.

void deleteBB(BasicBlock *DelBB)

Delete DelBB.

Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.

void flush()

Apply all pending updates to available trees and flush all BasicBlocks awaiting deletion.

PostDominatorTree Class - Concrete subclass of DominatorTree that is used to compute the post-dominat...

This is an optimization pass for GlobalISel generic memory operations.