LLVM  10.0.0svn
Classes | Namespaces
MustExecute.h File Reference

Contains a collection of routines for determining if a given instruction is guaranteed to execute if a given point in control flow is reached. More...

#include "llvm/ADT/DenseMap.h"
#include "llvm/Analysis/EHPersonalities.h"
#include "llvm/Analysis/InstructionPrecedenceTracking.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Instruction.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.

Classes

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...
 

Namespaces

 llvm
 This class represents lattice values for constants.
 

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.