Commits

Xin Tong committed 5034e5ba72a
Add in some throttle logic for RLE. This is mostly intended for functions that are way too large to process. I do not see compilation time difference in stdlib -O nor any change in # of redundant loads eliminated. I am more looking at compilation time and precision in stdlibunittest. === Before Throttle Logic === compilation time stdlibunit -O: Running Time Self (ms) Symbol Name 27016.0ms 26.4% 0.0 swift::runSILOptimizationPasses(swift::SILModule&) 26885.0ms 26.2% 0.0 swift::SILPassManager::runOneIteration() 22355.0ms 21.8% 15.0 swift::SILPassManager::runFunctionPasses(llvm::ArrayRef<swift::SILFunctionTransform*>) 21416.0ms 20.9% 42.0 swift::SILPassManager::runPassesOnFunction(llvm::ArrayRef<swift::SILFunctionTransform*>, swift::SILFunction*) 5662.0ms 5.5% 10.0 (anonymous namespace)::ARCSequenceOpts::run() 3916.0ms 3.8% 58.0 (anonymous namespace)::RedundantLoadElimination::run() 2707.0ms 2.6% 3.0 (anonymous namespace)::SILCombine::run() 2248.0ms 2.1% 5.0 (anonymous namespace)::SimplifyCFGPass::run() 1974.0ms 1.9% 121.0 (anonymous namespace)::SILCSE::run() 1592.0ms 1.5% 30.0 (anonymous namespace)::DeadStoreElimination::run() 746.0ms 0.7% 170.0 (anonymous namespace)::DCE::run() === After Throttle Logic === compilation time stdlibunit -O: Running Time Self (ms) Symbol Name 25735.0ms 25.4% 0.0 swift::runSILOptimizationPasses(swift::SILModule&) 25611.0ms 25.3% 0.0 swift::SILPassManager::runOneIteration() 21260.0ms 21.0% 21.0 swift::SILPassManager::runFunctionPasses(llvm::ArrayRef<swift::SILFunctionTransform*>) 20340.0ms 20.1% 43.0 swift::SILPassManager::runPassesOnFunction(llvm::ArrayRef<swift::SILFunctionTransform*>, swift::SILFunction*) 5319.0ms 5.2% 8.0 (anonymous namespace)::ARCSequenceOpts::run() 3265.0ms 3.2% 58.0 (anonymous namespace)::RedundantLoadElimination::run() 2661.0ms 2.6% 1.0 (anonymous namespace)::SILCombine::run() 2185.0ms 2.1% 5.0 (anonymous namespace)::SimplifyCFGPass::run() 1847.0ms 1.8% 105.0 (anonymous namespace)::SILCSE::run() 1499.0ms 1.4% 21.0 (anonymous namespace)::DeadStoreElimination::run() 708.0ms 0.7% 150.0 (anonymous namespace)::DCE::run() 498.0ms 0.4% 7.0 (anonymous namespace)::SILCodeMotion::run() 370.0ms 0.3% 0.0 (anonymous namespace)::StackPromotion::run()