LLVM  6.0.0svn
Public Member Functions | Friends | List of all members
llvm::LPMUpdater Class Reference

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"

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. More...
 
void markLoopAsDeleted (Loop &L, llvm::StringRef Name)
 Loop passes should use this method to indicate they have deleted a loop from the nest. More...
 
void addChildLoops (ArrayRef< Loop *> NewChildLoops)
 Loop passes should use this method to indicate they have added new child loops of the current loop. More...
 
void addSiblingLoops (ArrayRef< Loop *> NewSibLoops)
 Loop passes should use this method to indicate they have added new sibling loops to the current loop. More...
 

Friends

template<typename LoopPassT >
class llvm::FunctionToLoopPassAdaptor
 

Detailed Description

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.

Definition at line 147 of file LoopPassManager.h.

Member Function Documentation

◆ addChildLoops()

void llvm::LPMUpdater::addChildLoops ( ArrayRef< Loop *>  NewChildLoops)
inline

Loop passes should use this method to indicate they have added new child loops of the current loop.

NewChildLoops must contain only the immediate children. Any nested loops within them will be visited in postorder as usual for the loop pass manager.

Definition at line 182 of file LoopPassManager.h.

References llvm::internal::appendLoopsToWorklist(), and assert().

Referenced by llvm::LoopFullUnrollPass::run().

◆ addSiblingLoops()

void llvm::LPMUpdater::addSiblingLoops ( ArrayRef< Loop *>  NewSibLoops)
inline

Loop passes should use this method to indicate they have added new sibling loops to the current loop.

NewSibLoops must only contain the immediate sibling loops. Any nested loops within them will be visited in postorder as usual for the loop pass manager.

Definition at line 207 of file LoopPassManager.h.

References llvm::internal::appendLoopsToWorklist(), and assert().

Referenced by llvm::LoopFullUnrollPass::run().

◆ markLoopAsDeleted()

void llvm::LPMUpdater::markLoopAsDeleted ( Loop L,
llvm::StringRef  Name 
)
inline

Loop passes should use this method to indicate they have deleted a loop from the nest.

Note that this loop must either be the current loop or a subloop of the current loop. This routine must be called prior to removing the loop from the loop nest.

If this is called for the current loop, in addition to clearing any state, this routine will mark that the current loop should be skipped by the rest of the pass management infrastructure.

Definition at line 167 of file LoopPassManager.h.

References assert(), and llvm::LoopBase< BlockT, LoopT >::contains().

Referenced by llvm::LoopFullUnrollPass::run(), and llvm::LoopDeletionPass::run().

◆ 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 155 of file LoopPassManager.h.

Referenced by llvm::PassManager< Function >::run(), and llvm::FunctionToLoopPassAdaptor< LoopPassT >::run().

Friends And Related Function Documentation

◆ llvm::FunctionToLoopPassAdaptor

template<typename LoopPassT >
friend class llvm::FunctionToLoopPassAdaptor
friend

Definition at line 221 of file LoopPassManager.h.


The documentation for this class was generated from the following file: