LLVM: lib/CodeGen/MachinePassManager.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

21

22using namespace llvm;

23

25

26namespace llvm {

35}

36

39 MachineFunctionAnalysisManager::Invalidator &Inv) {

40

41

42 return false;

43}

44

45template <>

46bool MachineFunctionAnalysisManagerModuleProxy::Result::invalidate(

48 ModuleAnalysisManager::Invalidator &Inv) {

49

51 return false;

52

53

54

55

56

57

58

59

60

63 InnerAM->clear();

64 return true;

65 }

66

67

68

70 InnerAM->clear();

71 return true;

72 }

73

74

75 return false;

76}

77

78template <>

79bool MachineFunctionAnalysisManagerFunctionProxy::Result::invalidate(

80 Function &F, const PreservedAnalyses &PA,

81 FunctionAnalysisManager::Invalidator &Inv) {

82

84 return false;

85

86

87

88

89

90

91

92

93

96 InnerAM->clear();

97 return true;

98 }

99

100

101

103 InnerAM->clear();

104 return true;

105 }

106

107

108 return false;

109}

110

111PreservedAnalyses

116 .getManager();

119

120

121 if (F.isDeclaration() || F.hasAvailableExternallyLinkage())

123

125

131 PA.intersect(std::move(PassPA));

132

133 return PA;

134}

135

138 OS << "machine-function(";

139 Pass->printPipeline(OS, MapClassName2PassName);

140 OS << ')';

141}

142

143template <>

151 continue;

152

156 PA.intersect(std::move(PassPA));

157 }

159 return PA;

160}

161

164

165

166 PA.template preserveSet<AllAnalysesOn>();

167 PA.template preserveSet<AllAnalysesOn>();

168 return PA;

169}

#define LLVM_EXPORT_TEMPLATE

Module.h This file contains the declarations for the Module class.

Legalize the Machine IR a function s Machine IR

Function const char * Passes

FunctionAnalysisManager FAM

Provides implementations for PassManager and AnalysisManager template methods.

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

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

void invalidate(IRUnitT &IR, const PreservedAnalyses &PA)

Invalidate cached analyses for an IR unit.

PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)

Get the result of an analysis pass for a given IR unit.

LLVM_ABI bool invalidate(MachineFunction &IR, const PreservedAnalyses &PA, MachineFunctionAnalysisManager::Invalidator &Inv)

Handler for invalidation of the outer IR unit, IRUnitT.

Definition MachinePassManager.cpp:37

static LLVM_ABI AnalysisKey Key

LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM)

Runs the function pass across every function in the function.

Definition MachinePassManager.cpp:112

LLVM_ABI void printPipeline(raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)

Definition MachinePassManager.cpp:136

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

This analysis create MachineFunction for given Function.

A Module instance is used to store all the information related to an LLVM module.

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

Pseudo-analysis pass that exposes the PassInstrumentation to pass managers.

This class provides instrumentation entry points for the Pass Manager, doing calls to callbacks regis...

void runAfterPass(const PassT &Pass, const IRUnitT &IR, const PreservedAnalyses &PA) const

AfterPass instrumentation point - takes Pass instance that has just been executed and constant refere...

bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const

BeforePass instrumentation point - takes Pass instance to be executed and constant reference to IR it...

Manages a sequence of passes over a particular unit of IR.

PreservedAnalyses run(IRUnitT &IR, AnalysisManagerT &AM, ExtraArgTs... ExtraArgs)

Run all of the passes in this manager over the given unit of IR.

Pass interface - Implemented by all 'passes'.

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

bool areAllPreserved() const

Test whether all analyses are preserved (and none are abandoned).

static PreservedAnalyses all()

Construct a special preserved set that preserves all passes.

bool allAnalysesInSetPreserved() const

Directly test whether a set of analyses is preserved.

PreservedAnalysisChecker getChecker() const

Build a checker for this PreservedAnalyses and the specified analysis type.

StringRef - Represent a constant reference to a string, i.e.

An efficient, type-erasing, non-owning reference to a callable.

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.

AnalysisManager< MachineFunction > MachineFunctionAnalysisManager

LLVM_ABI PreservedAnalyses getMachineFunctionPassPreservedAnalyses()

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

Definition MachinePassManager.cpp:162

template class LLVM_TEMPLATE_ABI AllAnalysesOn< Function >

InnerAnalysisManagerProxy< MachineFunctionAnalysisManager, Function > MachineFunctionAnalysisManagerFunctionProxy

InnerAnalysisManagerProxy< MachineFunctionAnalysisManager, Module > MachineFunctionAnalysisManagerModuleProxy

AnalysisManager< Function > FunctionAnalysisManager

Convenience typedef for the Function analysis manager.

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