LLVM  16.0.0git
Classes | Namespaces | Enumerations | Functions
MustExecute.h File Reference
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/Analysis/EHPersonalities.h"
#include "llvm/Analysis/InstructionPrecedenceTracking.h"
#include "llvm/IR/PassManager.h"
Include dependency graph for MustExecute.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


class  llvm::LoopSafetyInfo
 Captures loop safety information. More...
class  llvm::SimpleLoopSafetyInfo
 Simple and conservative implementation of LoopSafetyInfo that can give false-positive answers to its queries in order to avoid complicated analysis. More...
class  llvm::ICFLoopSafetyInfo
 This implementation of LoopSafetyInfo use ImplicitControlFlowTracking to give precise answers on "may throw" queries. More...
struct  llvm::MustBeExecutedIterator
 Must be executed iterators visit stretches of instructions that are guaranteed to be executed together, potentially with other instruction executed in-between. More...
struct  llvm::MustBeExecutedContextExplorer
 A "must be executed context" for a given program point PP is the set of instructions, potentially before and after PP, that are executed always when PP is reached. More...
class  llvm::MustExecutePrinterPass
class  llvm::MustBeExecutedContextPrinterPass


 This is an optimization pass for GlobalISel generic memory operations.


enum  llvm::ExplorationDirection { llvm::ExplorationDirection::BACKWARD = 0, llvm::ExplorationDirection::FORWARD = 1 }
 Enum that allows us to spell out the direction. More...


bool llvm::mayContainIrreducibleControl (const Function &F, const LoopInfo *LI)

Detailed Description

Contains a collection of routines for determining if a given instruction is guaranteed to execute if a given point in control flow is reached. The most common example is an instruction within a loop being provably executed if we branch to the header of it's containing loop.

There are two interfaces available to determine if an instruction is executed once a given point in the control flow is reached: 1) A loop-centric one derived from LoopSafetyInfo. 2) A "must be executed context"-based one implemented in the MustBeExecutedContextExplorer. Please refer to the class comments for more information.

Definition in file MustExecute.h.