29#ifndef LLVM_CODEGEN_MACHINELOOPINFO_H
30#define LLVM_CODEGEN_MACHINELOOPINFO_H
41class MachineDominatorTree;
44extern template class LoopBase<MachineBasicBlock, MachineLoop>;
94 bool isLoopInvariantImplicitPhysReg(
Register Reg)
const;
128 findLoopPreheader(
MachineLoop *L,
bool SpeculativePreheader =
false,
129 bool FindMultiLoopPreheader =
false)
const;
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.