Enzyme main
Loading...
Searching...
No Matches
MustExitScalarEvolution Class Referencefinal

#include "MustExitScalarEvolution.h"

Inheritance diagram for MustExitScalarEvolution:
Collaboration diagram for MustExitScalarEvolution:

Public Member Functions

 MustExitScalarEvolution (llvm::Function &F, llvm::TargetLibraryInfo &TLI, llvm::AssumptionCache &AC, llvm::DominatorTree &DT, llvm::LoopInfo &LI)
 
ScalarEvolution::ExitLimit computeExitLimit (const llvm::Loop *L, llvm::BasicBlock *ExitingBlock, bool AllowPredicates)
 
ScalarEvolution::ExitLimit computeExitLimitFromCond (const llvm::Loop *L, llvm::Value *ExitCond, bool ExitIfTrue, bool ControlsExit, bool AllowPredicates)
 
ScalarEvolution::ExitLimit computeExitLimitFromCondCached (ExitLimitCacheTy &Cache, const llvm::Loop *L, llvm::Value *ExitCond, bool ExitIfTrue, bool ControlsExit, bool AllowPredicates)
 
ScalarEvolution::ExitLimit computeExitLimitFromCondImpl (ExitLimitCacheTy &Cache, const llvm::Loop *L, llvm::Value *ExitCond, bool ExitIfTrue, bool ControlsExit, bool AllowPredicates)
 
ScalarEvolution::ExitLimit computeExitLimitFromICmp (const llvm::Loop *L, llvm::ICmpInst *ExitCond, bool ExitIfTrue, bool ControlsExit, bool AllowPredicates=false)
 
bool loopIsFiniteByAssumption (const llvm::Loop *L)
 
ScalarEvolution::ExitLimit howManyLessThans (const llvm::SCEV *LHS, const llvm::SCEV *RHS, const llvm::Loop *L, bool IsSigned, bool ControlsExit, bool AllowPredicates)
 
ScalarEvolution::ExitLimit computeExitLimitFromSingleExitSwitch (const llvm::Loop *L, llvm::SwitchInst *Switch, llvm::BasicBlock *ExitingBB, bool IsSubExpr)
 

Public Attributes

llvm::SmallPtrSet< llvm::BasicBlock *, 4 > GuaranteedUnreachable
 

Detailed Description

Definition at line 44 of file MustExitScalarEvolution.h.

Constructor & Destructor Documentation

◆ MustExitScalarEvolution()

MustExitScalarEvolution::MustExitScalarEvolution ( llvm::Function & F,
llvm::TargetLibraryInfo & TLI,
llvm::AssumptionCache & AC,
llvm::DominatorTree & DT,
llvm::LoopInfo & LI )

Definition at line 60 of file MustExitScalarEvolution.cpp.

Member Function Documentation

◆ computeExitLimit()

ScalarEvolution::ExitLimit MustExitScalarEvolution::computeExitLimit ( const llvm::Loop * L,
llvm::BasicBlock * ExitingBlock,
bool AllowPredicates )

◆ computeExitLimitFromCond()

ScalarEvolution::ExitLimit MustExitScalarEvolution::computeExitLimitFromCond ( const llvm::Loop * L,
llvm::Value * ExitCond,
bool ExitIfTrue,
bool ControlsExit,
bool AllowPredicates )

Definition at line 52 of file MustExitScalarEvolution.cpp.

References computeExitLimitFromCondCached().

Referenced by computeExitLimit().

◆ computeExitLimitFromCondCached()

ScalarEvolution::ExitLimit MustExitScalarEvolution::computeExitLimitFromCondCached ( ExitLimitCacheTy & Cache,
const llvm::Loop * L,
llvm::Value * ExitCond,
bool ExitIfTrue,
bool ControlsExit,
bool AllowPredicates )

◆ computeExitLimitFromCondImpl()

ScalarEvolution::ExitLimit MustExitScalarEvolution::computeExitLimitFromCondImpl ( ExitLimitCacheTy & Cache,
const llvm::Loop * L,
llvm::Value * ExitCond,
bool ExitIfTrue,
bool ControlsExit,
bool AllowPredicates )

◆ computeExitLimitFromICmp()

ScalarEvolution::ExitLimit MustExitScalarEvolution::computeExitLimitFromICmp ( const llvm::Loop * L,
llvm::ICmpInst * ExitCond,
bool ExitIfTrue,
bool ControlsExit,
bool AllowPredicates = false )

Definition at line 343 of file MustExitScalarEvolution.cpp.

References Constant, howManyLessThans(), PROP_PHI, and SCEVUse.

◆ computeExitLimitFromSingleExitSwitch()

ScalarEvolution::ExitLimit MustExitScalarEvolution::computeExitLimitFromSingleExitSwitch ( const llvm::Loop * L,
llvm::SwitchInst * Switch,
llvm::BasicBlock * ExitingBB,
bool IsSubExpr )

! If we're guaranteed unreachable, the default dest does not matter.

Definition at line 130 of file MustExitScalarEvolution.cpp.

References GuaranteedUnreachable.

Referenced by computeExitLimit().

◆ howManyLessThans()

ScalarEvolution::ExitLimit MustExitScalarEvolution::howManyLessThans ( const llvm::SCEV * LHS,
const llvm::SCEV * RHS,
const llvm::Loop * L,
bool IsSigned,
bool ControlsExit,
bool AllowPredicates )

Definition at line 1197 of file MustExitScalarEvolution.cpp.

Referenced by computeExitLimitFromICmp().

◆ loopIsFiniteByAssumption()

bool MustExitScalarEvolution::loopIsFiniteByAssumption ( const llvm::Loop * L)

Definition at line 48 of file MustExitScalarEvolution.cpp.

Member Data Documentation

◆ GuaranteedUnreachable

llvm::SmallPtrSet<llvm::BasicBlock *, 4> MustExitScalarEvolution::GuaranteedUnreachable

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