LLVM: include/llvm/Analysis/LoopAnalysisManager.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_ANALYSIS_LOOPANALYSISMANAGER_H

30#define LLVM_ANALYSIS_LOOPANALYSISMANAGER_H

31

34

35namespace llvm {

36

47

48

49

50

51

62

63

65

68

69

70

71

72

73

76

77

79 LoopAnalysisManagerFunctionProxy;

80

81

82

83

84

85

86template <> class LoopAnalysisManagerFunctionProxy::Result {

87public:

89 : InnerAM(&InnerAM), LI(&LI) {}

91 : InnerAM(std::move(Arg.InnerAM)), LI(Arg.LI), MSSAUsed(Arg.MSSAUsed) {

92

93

94

95 Arg.InnerAM = nullptr;

96 }

98 InnerAM = RHS.InnerAM;

99 LI = RHS.LI;

100 MSSAUsed = RHS.MSSAUsed;

101

102

103

104 RHS.InnerAM = nullptr;

105 return *this;

106 }

108

109 if (!InnerAM)

110 return;

111

112

113

114 InnerAM->clear();

115 }

116

117

119

120

122

123

124

125

126

127

128

129

130

131

133 FunctionAnalysisManager::Invalidator &Inv);

134

135private:

138 bool MSSAUsed = false;

139};

140

141

142

143template <>

144LLVM_ABI LoopAnalysisManagerFunctionProxy::Result

146

147

148

150

153

157

158

160}

161

162#endif

#define LLVM_TEMPLATE_ABI

This header defines various interfaces for pass management in LLVM.

This templated class represents "all analyses that operate over " (e....

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

A cache of @llvm.assume calls within a function.

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

An analysis over an "outer" IR unit that provides access to an analysis manager over an "inner" IR un...

Result run(Function &IR, AnalysisManager< Function, ExtraArgTs... > &AM, ExtraArgTs...)

~Result()

Definition LoopAnalysisManager.h:107

LLVM_ABI bool invalidate(Function &F, const PreservedAnalyses &PA, FunctionAnalysisManager::Invalidator &Inv)

Handler for invalidation of the proxy for a particular function.

LoopAnalysisManager & getManager()

Accessor for the analysis manager.

Definition LoopAnalysisManager.h:121

Result & operator=(Result &&RHS)

Definition LoopAnalysisManager.h:97

Result(Result &&Arg)

Definition LoopAnalysisManager.h:90

void markMSSAUsed()

Mark MemorySSA as used so we can invalidate self if MSSA is invalidated.

Definition LoopAnalysisManager.h:118

Result(LoopAnalysisManager &InnerAM, LoopInfo &LI)

Definition LoopAnalysisManager.h:88

Represents a single loop in the control flow graph.

Encapsulates MemorySSA, including all data associated with memory accesses.

An analysis over an "inner" IR unit that provides access to an analysis manager over a "outer" IR uni...

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

The main scalar evolution driver.

Provides information about what library functions are available for the current target.

This pass provides access to the codegen interfaces that are needed for IR-level transformations.

This is an optimization pass for GlobalISel generic memory operations.

AnalysisManager< Loop, LoopStandardAnalysisResults & > LoopAnalysisManager

The loop analysis manager.

Definition LoopAnalysisManager.h:75

OuterAnalysisManagerProxy< FunctionAnalysisManager, Loop, LoopStandardAnalysisResults & > FunctionAnalysisManagerLoopProxy

A proxy from a FunctionAnalysisManager to a Loop.

Definition LoopAnalysisManager.h:156

OutputIt move(R &&Range, OutputIt Out)

Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.

LLVM_ABI PreservedAnalyses getLoopPassPreservedAnalyses()

Returns the minimum set of Analyses that all loop passes must preserve.

AnalysisManager< Function > FunctionAnalysisManager

Convenience typedef for the Function analysis manager.

Implement std::hash so that hash_code can be used in STL containers.

The adaptor from a function pass to a loop pass computes these analyses and makes them available to t...

Definition LoopAnalysisManager.h:52

ScalarEvolution & SE

Definition LoopAnalysisManager.h:57

MemorySSA * MSSA

Definition LoopAnalysisManager.h:60

TargetTransformInfo & TTI

Definition LoopAnalysisManager.h:59

AssumptionCache & AC

Definition LoopAnalysisManager.h:54

TargetLibraryInfo & TLI

Definition LoopAnalysisManager.h:58

LoopInfo & LI

Definition LoopAnalysisManager.h:56

DominatorTree & DT

Definition LoopAnalysisManager.h:55

AAResults & AA

Definition LoopAnalysisManager.h:53