Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
SimplifyCFGPass.cpp File Reference

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "simplifycfg"

Functions

 STATISTIC (NumSimpl, "Number of blocks simplified")
static bool performBlockTailMerging (Function &F, ArrayRef< BasicBlock * > BBs, std::vector< DominatorTree::UpdateType > *Updates)
static bool tailMergeBlocksWithSimilarFunctionTerminators (Function &F, DomTreeUpdater *DTU)
static bool iterativelySimplifyCFG (Function &F, const TargetTransformInfo &TTI, DomTreeUpdater *DTU, const SimplifyCFGOptions &Options)
 Call SimplifyCFG on all the blocks in the function, iterating until no more changes are made.
static bool simplifyFunctionCFGImpl (Function &F, const TargetTransformInfo &TTI, DominatorTree *DT, const SimplifyCFGOptions &Options)
static bool simplifyFunctionCFG (Function &F, const TargetTransformInfo &TTI, DominatorTree *DT, const SimplifyCFGOptions &Options)
static void applyCommandLineOverridesToOptions (SimplifyCFGOptions &Options)
 INITIALIZE_PASS_BEGIN (CFGSimplifyPass, "simplifycfg", "Simplify the CFG", false, false) INITIALIZE_PASS_END(CFGSimplifyPass

Variables

static cl::opt< unsignedUserBonusInstThreshold ("bonus-inst-threshold", cl::Hidden, cl::init(1), cl::desc("Control the number of bonus instructions (default = 1)"))
static cl::opt< boolUserKeepLoops ("keep-loops", cl::Hidden, cl::init(true), cl::desc("Preserve canonical loop structure (default = true)"))
static cl::opt< boolUserSwitchRangeToICmp ("switch-range-to-icmp", cl::Hidden, cl::init(false), cl::desc("Convert switches into an integer range comparison (default = false)"))
static cl::opt< boolUserSwitchToLookup ("switch-to-lookup", cl::Hidden, cl::init(false), cl::desc("Convert switches to lookup tables (default = false)"))
static cl::opt< boolUserForwardSwitchCond ("forward-switch-cond", cl::Hidden, cl::init(false), cl::desc("Forward switch condition to phi ops (default = false)"))
static cl::opt< boolUserHoistCommonInsts ("hoist-common-insts", cl::Hidden, cl::init(false), cl::desc("hoist common instructions (default = false)"))
static cl::opt< boolUserHoistLoadsStoresWithCondFaulting ("hoist-loads-stores-with-cond-faulting", cl::Hidden, cl::init(false), cl::desc("Hoist loads/stores if the target supports conditional faulting " "(default = false)"))
static cl::opt< boolUserSinkCommonInsts ("sink-common-insts", cl::Hidden, cl::init(false), cl::desc("Sink common instructions (default = false)"))
static cl::opt< boolUserSpeculateUnpredictables ("speculate-unpredictables", cl::Hidden, cl::init(false), cl::desc("Speculate unpredictable branches (default = false)"))
 simplifycfg
Simplify the CFG
Simplify the false

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "simplifycfg"

Definition at line 47 of file SimplifyCFGPass.cpp.

Function Documentation

◆ applyCommandLineOverridesToOptions()

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( CFGSimplifyPass ,
"simplifycfg" ,
"Simplify the CFG" ,
false ,
false  )

◆ iterativelySimplifyCFG()

◆ performBlockTailMerging()

◆ simplifyFunctionCFG()

◆ simplifyFunctionCFGImpl()

◆ STATISTIC()

STATISTIC ( NumSimpl ,
"Number of blocks simplified"  )

◆ tailMergeBlocksWithSimilarFunctionTerminators()

Variable Documentation

◆ CFG

Simplify the CFG

Definition at line 433 of file SimplifyCFGPass.cpp.

◆ false

Simplify the false

Definition at line 433 of file SimplifyCFGPass.cpp.

◆ simplifycfg

simplifycfg

Definition at line 433 of file SimplifyCFGPass.cpp.

◆ UserBonusInstThreshold

cl::opt< unsigned > UserBonusInstThreshold("bonus-inst-threshold", cl::Hidden, cl::init(1), cl::desc("Control the number of bonus instructions (default = 1)")) ( "bonus-inst-threshold" ,
cl::Hidden ,
cl::init(1) ,
cl::desc("Control the number of bonus instructions (default = 1)")  )
static

◆ UserForwardSwitchCond

cl::opt< bool > UserForwardSwitchCond("forward-switch-cond", cl::Hidden, cl::init(false), cl::desc("Forward switch condition to phi ops (default = false)")) ( "forward-switch-cond" ,
cl::Hidden ,
cl::init(false) ,
cl::desc("Forward switch condition to phi ops (default = false)")  )
static

◆ UserHoistCommonInsts

cl::opt< bool > UserHoistCommonInsts("hoist-common-insts", cl::Hidden, cl::init(false), cl::desc("hoist common instructions (default = false)")) ( "hoist-common-insts" ,
cl::Hidden ,
cl::init(false) ,
cl::desc("hoist common instructions (default = false)")  )
static

◆ UserHoistLoadsStoresWithCondFaulting

cl::opt< bool > UserHoistLoadsStoresWithCondFaulting("hoist-loads-stores-with-cond-faulting", cl::Hidden, cl::init(false), cl::desc("Hoist loads/stores if the target supports conditional faulting " "(default = false)")) ( "hoist-loads-stores-with-cond-faulting" ,
cl::Hidden ,
cl::init(false) ,
cl::desc("Hoist loads/stores if the target supports conditional faulting " "(default = false)")  )
static

◆ UserKeepLoops

cl::opt< bool > UserKeepLoops("keep-loops", cl::Hidden, cl::init(true), cl::desc("Preserve canonical loop structure (default = true)")) ( "keep-loops" ,
cl::Hidden ,
cl::init(true) ,
cl::desc("Preserve canonical loop structure (default = true)")  )
static

◆ UserSinkCommonInsts

cl::opt< bool > UserSinkCommonInsts("sink-common-insts", cl::Hidden, cl::init(false), cl::desc("Sink common instructions (default = false)")) ( "sink-common-insts" ,
cl::Hidden ,
cl::init(false) ,
cl::desc("Sink common instructions (default = false)")  )
static

◆ UserSpeculateUnpredictables

cl::opt< bool > UserSpeculateUnpredictables("speculate-unpredictables", cl::Hidden, cl::init(false), cl::desc("Speculate unpredictable branches (default = false)")) ( "speculate-unpredictables" ,
cl::Hidden ,
cl::init(false) ,
cl::desc("Speculate unpredictable branches (default = false)")  )
static

◆ UserSwitchRangeToICmp

cl::opt< bool > UserSwitchRangeToICmp("switch-range-to-icmp", cl::Hidden, cl::init(false), cl::desc( "Convert switches into an integer range comparison (default = false)")) ( "switch-range-to-icmp" ,
cl::Hidden ,
cl::init(false) ,
cl::desc( "Convert switches into an integer range comparison (default = false)")  )
static

◆ UserSwitchToLookup

cl::opt< bool > UserSwitchToLookup("switch-to-lookup", cl::Hidden, cl::init(false), cl::desc("Convert switches to lookup tables (default = false)")) ( "switch-to-lookup" ,
cl::Hidden ,
cl::init(false) ,
cl::desc("Convert switches to lookup tables (default = false)")  )
static