LLVM: include/llvm/CodeGen/MachineLoopInfo.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29#ifndef LLVM_CODEGEN_MACHINELOOPINFO_H

30#define LLVM_CODEGEN_MACHINELOOPINFO_H

31

38

39namespace llvm {

40

41class MachineDominatorTree;

42

43class MachineLoop;

44extern template class LoopBase<MachineBasicBlock, MachineLoop>;

45

47public:

48

49

50

52

53

54

55

57

58

59

60

61

63

64

65

66

67

68

70

71

72

73

74

75

76

77 MDNode *getLoopID() const;

78

79

80

81

82

83

84

85

87

89

90private:

92

93

94 bool isLoopInvariantImplicitPhysReg(Register Reg) const;

95

98

100};

101

102

104

108

109public:

115

116

119

120

121

122

123

124

125

126

128 findLoopPreheader(MachineLoop *L, bool SpeculativePreheader = false,

129 bool FindMultiLoopPreheader = false) const;

130

131

133};

134

135

139

140public:

143};

144

145

148

149public:

154};

155

158

159public:

160 static char ID;

161

163

165

167

168 void getAnalysisUsage(AnalysisUsage &AU) const override;

169

171};

172

173

177

181};

182

186

190};

191

192}

193

194#endif

This file provides various utilities for inspecting and working with the control flow graph in LLVM I...

API to communicate dependencies between analyses during invalidation.

A container for analyses that lazily runs them and caches their results.

Represent the analysis usage information of a pass.

Instances of this class are used to represent loops that are detected in the flow graph.

This class builds and contains all of the top-level loop structures in the specified function.

std::vector< MachineLoop * >::const_iterator iterator

iterator/begin/end - The interface to the top-level loops in the current function.

DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominat...

MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...

Representation of each machine instruction.

Analysis pass that exposes the MachineLoopInfo for a machine function.

void releaseMemory() override

releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...

MachineLoopInfo & getLI()

MachineLoopInfo(MachineLoopInfo &&)=default

MachineLoopInfo()=default

MachineLoopInfo(const MachineLoopInfo &)=delete

friend class MachineLoopInfoWrapperPass

MachineLoopInfo & operator=(const MachineLoopInfo &)=delete

MachineLoopInfo(MachineDominatorTree &MDT)

Printer pass for the LoopAnalysis results.

MachineLoopPrinterPass(raw_ostream &OS)

A set of analyses that are preserved following a run of a transformation pass.

Wrapper class representing virtual and physical registers.

This class implements an extremely fast bulk output stream that can only output to a stream.

This is an optimization pass for GlobalISel generic memory operations.

void dump(const SparseBitVector< ElementSize > &LHS, raw_ostream &out)

A CRTP mix-in that provides informational APIs needed for analysis passes.

A special type used by analysis passes to provide an address that identifies that particular analysis...

MachineLoopInfo::iterator ChildIteratorType

static ChildIteratorType child_end(NodeRef N)

static NodeRef getEntryNode(MachineLoop *L)

static ChildIteratorType child_begin(NodeRef N)

MachineLoopInfo::iterator ChildIteratorType

static ChildIteratorType child_begin(NodeRef N)

static NodeRef getEntryNode(const MachineLoop *L)

static ChildIteratorType child_end(NodeRef N)

A CRTP mix-in to automatically provide informational APIs needed for passes.