LLVM 22.0.0git
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...

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

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