LLVM: llvm::LPMUpdater Class Reference (original) (raw)
This class provides an interface for updating the loop pass manager based on mutations to the loop nest. More...
#include "[llvm/Transforms/Scalar/LoopPassManager.h](LoopPassManager%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| bool | skipCurrentLoop () const |
| This can be queried by loop passes which run other loop passes (like pass managers) to know whether the loop needs to be skipped due to updates to the loop nest. | |
| void | markLoopAsDeleted (Loop &L, llvm::StringRef Name) |
| Loop passes should use this method to indicate they have deleted a loop from the nest. | |
| void | setParentLoop (Loop *L) |
| void | addChildLoops (ArrayRef< Loop * > NewChildLoops) |
| Loop passes should use this method to indicate they have added new child loops of the current loop. | |
| void | addSiblingLoops (ArrayRef< Loop * > NewSibLoops) |
| Loop passes should use this method to indicate they have added new sibling loops to the current loop. | |
| void | revisitCurrentLoop () |
| Restart the current loop. | |
| bool | isLoopNestChanged () const |
| void | markLoopNestChanged (bool Changed) |
| Loopnest passes should use this method to indicate if the loopnest has been modified. |
This class provides an interface for updating the loop pass manager based on mutations to the loop nest.
A reference to an instance of this class is passed as an argument to each Loop pass, and Loop passes should use it to update LPM infrastructure if they modify the loop nest structure.
[LPMUpdater](classllvm%5F1%5F1LPMUpdater.html "This class provides an interface for updating the loop pass manager based on mutations to the loop ne...") comes with two modes: the loop mode and the loop-nest mode. In loop mode, all the loops in the function will be pushed into the worklist and when new loops are added to the pipeline, their subloops are also inserted recursively. On the other hand, in loop-nest mode, only top-level loops are contained in the worklist and the addition of new (top-level) loops will not trigger the addition of their subloops.
Definition at line 226 of file LoopPassManager.h.
◆ addChildLoops()
| void llvm::LPMUpdater::addChildLoops ( ArrayRef< Loop * > NewChildLoops) | inline |
|---|
◆ addSiblingLoops()
| void llvm::LPMUpdater::addSiblingLoops ( ArrayRef< Loop * > NewSibLoops) | inline |
|---|
◆ isLoopNestChanged()
| bool llvm::LPMUpdater::isLoopNestChanged ( ) const | inline |
|---|
◆ markLoopAsDeleted()
◆ markLoopNestChanged()
| void llvm::LPMUpdater::markLoopNestChanged ( bool Changed) | inline |
|---|
Loopnest passes should use this method to indicate if the loopnest has been modified.
Definition at line 329 of file LoopPassManager.h.
References Changed.
◆ revisitCurrentLoop()
| void llvm::LPMUpdater::revisitCurrentLoop ( ) | inline |
|---|
Restart the current loop.
Loop passes should call this method to indicate the current loop has been sufficiently changed that it should be re-visited from the begining of the loop pass pipeline rather than continuing.
Definition at line 315 of file LoopPassManager.h.
◆ setParentLoop()
| void llvm::LPMUpdater::setParentLoop ( Loop * L) | inline |
|---|
◆ skipCurrentLoop()
| bool llvm::LPMUpdater::skipCurrentLoop ( ) const | inline |
|---|
This can be queried by loop passes which run other loop passes (like pass managers) to know whether the loop needs to be skipped due to updates to the loop nest.
If this returns true, the loop object may have been deleted, so passes should take care not to touch the object.
Definition at line 234 of file LoopPassManager.h.
Referenced by llvm::FunctionToLoopPassAdaptor::run().
◆ llvm::FunctionToLoopPassAdaptor
The documentation for this class was generated from the following file:
- include/llvm/Transforms/Scalar/LoopPassManager.h