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

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_CODEGEN_MACHINEDOMINATORS_H

15#define LLVM_CODEGEN_MACHINEDOMINATORS_H

16

26#include

27#include

28

29namespace llvm {

34

38

40

65

66

67

68

69

71

72public:

74

77

78

80 MachineFunctionAnalysisManager::Invalidator &);

81

82 using Base::dominates;

83

84

85

88 if (BBA != BBB)

90

91

93 for (; &*I != A && &*I != B; ++I)

94 ;

95

96 return &*I == A;

97 }

98};

99

100

104

106

107public:

109

111};

112

113

124

125

127

128

129 std::optional DT;

130

131public:

133

135

138

140

141 void verifyAnalysis() const override;

142

147

148 void releaseMemory() override;

149

151};

152

153

154

155

156

157

158template <class Node, class ChildIterator>

167

168template struct GraphTraits;

169

170template <>

175

176template <>

181

188

189}

190

191#endif

static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")

static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")

#define LLVM_TEMPLATE_ABI

This file defines a set of templates that efficiently compute a dominator tree over a generic graph.

This file defines the SmallSet class.

This file defines the SmallVector class.

Represent the analysis usage information of a pass.

void setPreservesAll()

Set by analyses that do not transform their input at all.

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

Base class for the actual dominator tree node.

typename SmallVector< DomTreeNodeBase *, 4 >::const_iterator const_iterator

Core dominator tree base class.

DomTreeNodeBase< NodeT > * getRootNode()

getRootNode - This returns the entry node for the CFG of the function.

bool dominates(const DomTreeNodeBase< T > *A, const DomTreeNodeBase< T > *B) const

void recalculate(ParentType &Func)

MachineInstrBundleIterator< const MachineInstr > const_iterator

Analysis pass which computes a MachineDominatorTree.

Definition MachineDominators.h:102

MachineDominatorTree Result

Definition MachineDominators.h:108

LLVM_ABI Result run(MachineFunction &MF, MachineFunctionAnalysisManager &)

static bool isRequired()

Definition MachineDominators.h:122

MachineDominatorTreePrinterPass(raw_ostream &OS)

Definition MachineDominators.h:119

void getAnalysisUsage(AnalysisUsage &AU) const override

getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...

Definition MachineDominators.h:143

const MachineDominatorTree & getDomTree() const

Definition MachineDominators.h:137

MachineDominatorTreeWrapperPass()

static char ID

Definition MachineDominators.h:132

MachineDominatorTree & getDomTree()

Definition MachineDominators.h:136

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

Definition MachineDominators.h:70

bool dominates(const MachineInstr *A, const MachineInstr *B) const

Definition MachineDominators.h:86

DomTreeBase< MachineBasicBlock > Base

Definition MachineDominators.h:73

MachineDominatorTree()=default

MachineDominatorTree(MachineFunction &MF)

Definition MachineDominators.h:76

MachineFunctionPass(char &ID)

void getAnalysisUsage(AnalysisUsage &AU) const override

getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.

Representation of each machine instruction.

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

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

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

Definition MachineDominators.h:41

bool Verify(const DomTreeT &DT, typename DomTreeT::VerificationLevel VL)

void CalculateWithUpdates(DomTreeT &DT, ArrayRef< typename DomTreeT::UpdateType > Updates)

GraphDiff< MachineBasicBlock *, false > MBBDomTreeGraphDiff

Definition MachineDominators.h:44

void DeleteEdge(DomTreeT &DT, typename DomTreeT::NodePtr From, typename DomTreeT::NodePtr To)

ArrayRef< llvm::cfg::Update< MachineBasicBlock * > > MBBUpdates

Definition MachineDominators.h:43

void Calculate(DomTreeT &DT)

DomTreeBase< MachineBasicBlock > MBBDomTree

Definition MachineDominators.h:42

void ApplyUpdates(DomTreeT &DT, GraphDiff< typename DomTreeT::NodePtr, DomTreeT::IsPostDominator > &PreViewCFG, GraphDiff< typename DomTreeT::NodePtr, DomTreeT::IsPostDominator > *PostViewCFG)

void InsertEdge(DomTreeT &DT, typename DomTreeT::NodePtr From, typename DomTreeT::NodePtr To)

This is an optimization pass for GlobalISel generic memory operations.

Printable print(const GCNRegPressure &RP, const GCNSubtarget *ST=nullptr, unsigned DynamicVGPRBlockSize=0)

AnalysisManager< MachineFunction > MachineFunctionAnalysisManager

DominatorTreeBase< T, false > DomTreeBase

DomTreeNodeBase< MachineBasicBlock > MachineDomTreeNode

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...

static NodeRef getEntryNode(MachineDominatorTree *DT)

Definition MachineDominators.h:184

typename MachineDominatorTree *::UnknownGraphTypeError NodeRef

DominatorTree GraphTraits specialization so the DominatorTree can be iterable by generic graph iterat...

Definition MachineDominators.h:159

ChildIterator ChildIteratorType

Definition MachineDominators.h:161

static ChildIteratorType child_end(NodeRef N)

Definition MachineDominators.h:165

static NodeRef getEntryNode(NodeRef N)

Definition MachineDominators.h:163

static ChildIteratorType child_begin(NodeRef N)

Definition MachineDominators.h:164

Node * NodeRef

Definition MachineDominators.h:160

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