LLVM: lib/Transforms/IPO/SCCP.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "sccp"
Functions
STATISTIC (NumInstRemoved, "Number of instructions removed")
STATISTIC (NumArgsElimed,"Number of arguments constant propagated")
STATISTIC (NumGlobalConst, "Number of globals found to be constant")
STATISTIC (NumDeadBlocks, "Number of basic blocks unreachable")
STATISTIC (NumInstReplaced, "Number of instructions replaced with (simpler) instruction")
static void findReturnsToZap (Function &F, SmallVector< ReturnInst *, 8 > &ReturnsToZap, SCCPSolver &Solver)
static bool runIPSCCP (Module &M, const DataLayout &DL, FunctionAnalysisManager *FAM, std::function< const TargetLibraryInfo &(Function &)> GetTLI, std::function< TargetTransformInfo &(Function &)> GetTTI, std::function< AssumptionCache &(Function &)> GetAC, std::function< DominatorTree &(Function &)> GetDT, std::function< BlockFrequencyInfo &(Function &)> GetBFI, bool IsFuncSpecEnabled)

DEBUG_TYPE

#define DEBUG_TYPE "sccp"

findReturnsToZap()

Definition at line 50 of file SCCP.cpp.

References llvm::all_of(), assert(), llvm::dbgs(), llvm::dyn_cast(), F, llvm::SCCPSolver::getLatticeValueFor(), if(), II, llvm::SCCPSolver::isArgumentTrackedFunction(), llvm::SCCPSolver::isOverdefined(), LLVM_DEBUG, and llvm::SCCPSolver::mustPreserveReturn().

Referenced by runIPSCCP().

runIPSCCP()

Definition at line 108 of file SCCP.cpp.

References A(), llvm::SCCPSolver::addArgumentTrackedFunction(), llvm::SCCPSolver::addPredicateInfo(), llvm::SCCPSolver::addTrackedFunction(), llvm::all_of(), llvm::ArgMem, llvm::CallBase::args(), assert(), llvm::canTrackArgumentsInterprocedurally(), llvm::canTrackGlobalVariableInterprocedurally(), llvm::canTrackReturnsInterprocedurally(), llvm::cast(), llvm::changeToUnreachable(), llvm::dbgs(), DL, llvm::dyn_cast(), llvm::ErrnoMem, F, FAM, findReturnsToZap(), FuncSpecMaxIters, G, llvm::PoisonValue::get(), llvm::CallBase::getArgOperandNo(), llvm::GlobalVariable::getDebugInfo(), llvm::getExpressionForConstant(), llvm::GlobalVariable::getInitializer(), llvm::MemoryEffectsBase< LocationEnum >::getModRef(), llvm::SCCPSolver::getMRVFunctionsTracked(), llvm::Value::getName(), llvm::SCCPSolver::getTrackedGlobals(), llvm::SCCPSolver::getTrackedRetVals(), llvm::GlobalValue::getValueType(), llvm::Attribute::getWithMemoryEffects(), I, llvm::SCCPSolver::inferArgAttributes(), llvm::SCCPSolver::inferReturnAttributes(), llvm::SetVector< T, Vector, Set, N >::insert(), llvm::isa(), llvm::SCCPSolver::isBlockExecutable(), llvm::SCCPSolver::isConstant(), llvm::FunctionSpecializer::isDeadFunction(), llvm::SCCPSolver::isOverdefined(), llvm::SCCPSolver::isStructLatticeConstant(), LLVM_DEBUG, llvm::make_early_inc_range(), llvm::SCCPSolver::markBlockExecutable(), llvm::Other, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SCCPSolver::removeNonFeasibleEdges(), llvm::CallBase::removeParamAttr(), llvm::CallBase::removeRetAttrs(), llvm::SCCPSolver::removeSSACopies(), llvm::FunctionSpecializer::run(), llvm::SCCPSolver::simplifyInstsInBlock(), llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::SCCPSolver::solveWhileResolvedUndefsIn(), llvm::SCCPSolver::trackValueOfArgument(), llvm::SCCPSolver::trackValueOfGlobalVariable(), llvm::SCCPSolver::tryToReplaceWithConstant(), llvm::MemoryEffectsBase< IRMemLocation >::unknown(), and llvm::Value::users().

Referenced by llvm::IPSCCPPass::run().

STATISTIC() [1/5]

STATISTIC ( NumArgsElimed ,
"Number of arguments constant propagated" )

STATISTIC() [2/5]

STATISTIC ( NumDeadBlocks ,
"Number of basic blocks unreachable" )

STATISTIC() [3/5]

STATISTIC ( NumGlobalConst ,
"Number of globals found to be constant" )

STATISTIC() [4/5]

STATISTIC ( NumInstRemoved ,
"Number of instructions removed" )

STATISTIC() [5/5]

STATISTIC ( NumInstReplaced ,
"Number of instructions replaced with (simpler) instruction" )

FuncSpecMaxIters

cl::opt< unsigned > FuncSpecMaxIters("funcspec-max-iters", cl::init(10), cl::Hidden, cl::desc( "The maximum number of iterations function specialization is run")) ( "funcspec-max-iters" , cl::init(10) , cl::Hidden , cl::desc( "The maximum number of iterations function specialization is run") ) static