LLVM 22.0.0git
DFAJumpThreading.cpp File Reference

Go to the source code of this file.

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.

Macros

#define DEBUG_TYPE   "dfa-jump-threading"

Typedefs

typedef std::deque< BasicBlock * > PathType
typedef std::vector< PathTypePathsType
typedef SmallPtrSet< const BasicBlock *, 8 > VisitedBlocks
typedef std::vector< ClonedBlock > CloneList
typedef DenseMap< BasicBlock *, CloneListDuplicateBlockMap
typedef MapVector< Instruction *, std::vector< Instruction * > > DefMap

Functions

 STATISTIC (NumTransforms, "Number of transformations done")
 STATISTIC (NumCloned, "Number of blocks cloned")
 STATISTIC (NumPaths, "Number of individual paths threaded")
raw_ostreamoperator<< (raw_ostream &OS, const PathType &Path)

Variables

static cl::opt< boolllvm::ClViewCfgBefore ("dfa-jump-view-cfg-before", cl::desc("View the CFG before DFA Jump Threading"), cl::Hidden, cl::init(false))
static cl::opt< boolllvm::EarlyExitHeuristic ("dfa-early-exit-heuristic", cl::desc("Exit early if an unpredictable value come from the same loop"), cl::Hidden, cl::init(true))
static cl::opt< unsignedllvm::MaxPathLength ("dfa-max-path-length", cl::desc("Max number of blocks searched to find a threading path"), cl::Hidden, cl::init(20))
static cl::opt< unsignedllvm::MaxNumVisitiedPaths ("dfa-max-num-visited-paths", cl::desc("Max number of blocks visited while enumerating paths around a switch"), cl::Hidden, cl::init(2500))
static cl::opt< unsignedllvm::MaxNumPaths ("dfa-max-num-paths", cl::desc("Max number of paths enumerated around a switch"), cl::Hidden, cl::init(200))
static cl::opt< unsignedllvm::CostThreshold ("dfa-cost-threshold", cl::desc("Maximum cost accepted for the transformation"), cl::Hidden, cl::init(50))
static cl::opt< double > MaxClonedRate ("dfa-max-cloned-rate", cl::desc("Maximum cloned instructions rate accepted for the transformation"), cl::Hidden, cl::init(7.5))

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "dfa-jump-threading"

Definition at line 87 of file DFAJumpThreading.cpp.

Typedef Documentation

◆ CloneList

typedef std::vector<ClonedBlock> CloneList

Definition at line 371 of file DFAJumpThreading.cpp.

◆ DefMap

typedef MapVector<Instruction *, std::vector<Instruction *> > DefMap

Definition at line 380 of file DFAJumpThreading.cpp.

◆ DuplicateBlockMap

Definition at line 376 of file DFAJumpThreading.cpp.

◆ PathsType

typedef std::vector<PathType> PathsType

Definition at line 369 of file DFAJumpThreading.cpp.

◆ PathType

typedef std::deque<BasicBlock *> PathType

Definition at line 368 of file DFAJumpThreading.cpp.

◆ VisitedBlocks

Definition at line 370 of file DFAJumpThreading.cpp.

Function Documentation

◆ operator<<()

raw_ostream & operator<< ( raw_ostream & OS,
const PathType & Path )
inline

◆ STATISTIC() [1/3]

STATISTIC ( NumCloned ,
"Number of blocks cloned"  )

◆ STATISTIC() [2/3]

STATISTIC ( NumPaths ,
"Number of individual paths threaded"  )

◆ STATISTIC() [3/3]

STATISTIC ( NumTransforms ,
"Number of transformations done"  )

Variable Documentation

◆ MaxClonedRate

cl::opt< double > MaxClonedRate("dfa-max-cloned-rate", cl::desc( "Maximum cloned instructions rate accepted for the transformation"), cl::Hidden, cl::init(7.5)) ( "dfa-max-cloned-rate" ,
cl::desc( "Maximum cloned instructions rate accepted for the transformation") ,
cl::Hidden ,
cl::init(7.5)  )
static