LLVM 20.0.0git
|
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/ADT/DenseSet.h"
#include "llvm/Analysis/InstructionPrecedenceTracking.h"
#include "llvm/IR/EHPersonalities.h"
#include "llvm/IR/PassManager.h"
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... | |
class | llvm::MustExecutePrinterPass |
class | llvm::MustBeExecutedContextPrinterPass |
Namespaces | |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
Enumerations | |
enum class | llvm::ExplorationDirection { llvm::BACKWARD = 0 , llvm::FORWARD = 1 } |
Enum that allows us to spell out the direction. More... | |
Functions | |
bool | llvm::mayContainIrreducibleControl (const Function &F, const LoopInfo *LI) |
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.