|
LLVM 24.0.0git
|
Index of loop information. More...
#include "llvm/Analysis/BlockFrequencyInfoImpl.h"
Public Member Functions | |
| WorkingData (const BlockNode &Node) | |
| bool | isLoopHeader () const |
| LoopData * | getContainingLoop () const |
| The innermost loop containing Node that Node does not head. | |
| BlockNode | getResolvedNode () const |
| Resolve a node to its representative. | |
| LoopData * | getPackagedLoop () const |
| The outermost loop containing Node that is currently packaged, if any. | |
| BlockMass & | getMass () |
| The mass slot for Node: its own, or that of the outermost packaged loop it heads. | |
| bool | isPackaged () const |
| Has ContainingLoop been packaged up? | |
| bool | isAPackage () const |
| Has Loop been packaged up? | |
Public Attributes | |
| BlockNode | Node |
| This node. | |
| LoopData * | Loop = nullptr |
| The loop this block is inside. | |
| BlockMass | Mass |
| Mass distribution from the entry block. | |
Index of loop information.
Definition at line 282 of file BlockFrequencyInfoImpl.h.
Definition at line 287 of file BlockFrequencyInfoImpl.h.
References Node.
|
inline |
The innermost loop containing Node that Node does not head.
A block can head several nested loops: createIrreducibleLoop() reuses an SCC's entry blocks as the irreducible loop's headers.
Definition at line 295 of file BlockFrequencyInfoImpl.h.
|
inline |
|
inline |
The outermost loop containing Node that is currently packaged, if any.
Packaging is transient state: this answers what represents Node at the level being processed, not where Node sits in the loop nest.
Definition at line 324 of file BlockFrequencyInfoImpl.h.
References Loop.
Referenced by getResolvedNode().
|
inline |
Resolve a node to its representative.
Get the node currently representing Node, which could be a containing loop.
This function should only be called when distributing mass. As long as there are no irreducible edges to Node, then it will have complexity O(1) in this context.
In general, the complexity is O(L), where L is the number of loop headers Node has been packaged into. Since this method is called in the context of distributing mass, L will be the number of loop headers an early exit edge jumps out of.
Definition at line 315 of file BlockFrequencyInfoImpl.h.
References getPackagedLoop(), and Node.
Referenced by isPackaged().
|
inline |
Has Loop been packaged up?
Definition at line 347 of file BlockFrequencyInfoImpl.h.
References isLoopHeader(), and Loop.
|
inline |
Definition at line 289 of file BlockFrequencyInfoImpl.h.
Referenced by isAPackage().
|
inline |
Has ContainingLoop been packaged up?
Definition at line 344 of file BlockFrequencyInfoImpl.h.
References getResolvedNode(), and Node.
| LoopData* llvm::BlockFrequencyInfoImplBase::WorkingData::Loop = nullptr |
The loop this block is inside.
Definition at line 284 of file BlockFrequencyInfoImpl.h.
Referenced by getContainingLoop(), getMass(), getPackagedLoop(), isAPackage(), and isLoopHeader().
| BlockMass llvm::BlockFrequencyInfoImplBase::WorkingData::Mass |
Mass distribution from the entry block.
Definition at line 285 of file BlockFrequencyInfoImpl.h.
Referenced by getMass().
| BlockNode llvm::BlockFrequencyInfoImplBase::WorkingData::Node |
This node.
Definition at line 283 of file BlockFrequencyInfoImpl.h.
Referenced by getContainingLoop(), getMass(), getResolvedNode(), isLoopHeader(), isPackaged(), and WorkingData().