Commits

Xin Tong committed 546471ac4d0
Port dead store elimination and redundant load elimination to use the new projection. This patch also implements some of the missing functions used by RLE and DSE in new projection that exist in the old projection. New projection provides better memory usage, eventually we will phase out the old projection code. New projection is now copyable, i.e. we have a proper constructor for it. This helps make the code more readable. We do see a bit increase in compilation time in compiling stdlib -O, this is a result of the way we now get types of a projection path, but I expect this to go down (away) with further improvement on how memory locations are constructed and cached with later patches. === With the OLD Projection. === Total amount of memory allocated. -------------------------------- Bytes Used Count Symbol Name 13032.01 MB 50.6% 2158819 swift::SILPassManager::runPassesOnFunction(llvm::ArrayRef<swift::SILFunctionTransform*>, swift::SILFunction*) 2879.70 MB 11.1% 3076018 (anonymous namespace)::ARCSequenceOpts::run() 2663.68 MB 10.3% 1375465 (anonymous namespace)::RedundantLoadElimination::run() 1534.35 MB 5.9% 5067928 (anonymous namespace)::SimplifyCFGPass::run() 1278.09 MB 4.9% 576714 (anonymous namespace)::SILCombine::run() 1052.68 MB 4.0% 935809 (anonymous namespace)::DeadStoreElimination::run() 771.75 MB 2.9% 1677391 (anonymous namespace)::SILCSE::run() 715.07 MB 2.7% 4198193 (anonymous namespace)::GenericSpecializer::run() 434.87 MB 1.6% 652701 (anonymous namespace)::SILSROA::run() 402.99 MB 1.5% 658563 (anonymous namespace)::SILCodeMotion::run() 341.13 MB 1.3% 962459 (anonymous namespace)::DCE::run() 279.48 MB 1.0% 415031 (anonymous namespace)::StackPromotion::run() Compilation time breakdown. -------------------------- Running Time Self (ms) Symbol Name 25716.0ms 35.8% 0.0 swift::runSILOptimizationPasses(swift::SILModule&) 25513.0ms 35.5% 0.0 swift::SILPassManager::runOneIteration() 20666.0ms 28.8% 24.0 swift::SILPassManager::runFunctionPasses(llvm::ArrayRef<swift::SILFunctionTransform*>) 19664.0ms 27.4% 77.0 swift::SILPassManager::runPassesOnFunction(llvm::ArrayRef<swift::SILFunctionTransform*>, swift::SILFunction*) 3272.0ms 4.5% 12.0 (anonymous namespace)::SimplifyCFGPass::run() 3266.0ms 4.5% 7.0 (anonymous namespace)::ARCSequenceOpts::run() 2608.0ms 3.6% 5.0 (anonymous namespace)::SILCombine::run() 2089.0ms 2.9% 104.0 (anonymous namespace)::SILCSE::run() 1929.0ms 2.7% 47.0 (anonymous namespace)::RedundantLoadElimination::run() 1280.0ms 1.7% 14.0 (anonymous namespace)::GenericSpecializer::run() 1010.0ms 1.4% 45.0 (anonymous namespace)::DeadStoreElimination::run() 966.0ms 1.3% 191.0 (anonymous namespace)::DCE::run() 496.0ms 0.6% 6.0 (anonymous namespace)::SILCodeMotion::run() === With the NEW Projection. === Total amount of memory allocated. -------------------------------- Bytes Used Count Symbol Name 11876.64 MB 48.4% 22112349 swift::SILPassManager::runPassesOnFunction(llvm::ArrayRef<swift::SILFunctionTransform*>, swift::SILFunction*) 2887.22 MB 11.8% 3079485 (anonymous namespace)::ARCSequenceOpts::run() 1820.89 MB 7.4% 1877674 (anonymous namespace)::RedundantLoadElimination::run() 1533.16 MB 6.2% 5073310 (anonymous namespace)::SimplifyCFGPass::run() 1282.86 MB 5.2% 577024 (anonymous namespace)::SILCombine::run() 772.21 MB 3.1% 1679154 (anonymous namespace)::SILCSE::run() 721.69 MB 2.9% 936958 (anonymous namespace)::DeadStoreElimination::run() 715.08 MB 2.9% 4196263 (anonymous namespace)::GenericSpecializer::run() Compilation time breakdown. -------------------------- Running Time Self (ms) Symbol Name 25137.0ms 37.3% 0.0 swift::runSILOptimizationPasses(swift::SILModule&) 24939.0ms 37.0% 0.0 swift::SILPassManager::runOneIteration() 20226.0ms 30.0% 29.0 swift::SILPassManager::runFunctionPasses(llvm::ArrayRef<swift::SILFunctionTransform*>) 19241.0ms 28.5% 83.0 swift::SILPassManager::runPassesOnFunction(llvm::ArrayRef<swift::SILFunctionTransform*>, swift::SILFunction*) 3214.0ms 4.7% 10.0 (anonymous namespace)::SimplifyCFGPass::run() 3005.0ms 4.4% 14.0 (anonymous namespace)::ARCSequenceOpts::run() 2438.0ms 3.6% 7.0 (anonymous namespace)::SILCombine::run() 2217.0ms 3.2% 54.0 (anonymous namespace)::RedundantLoadElimination::run() 2212.0ms 3.2% 131.0 (anonymous namespace)::SILCSE::run() 1195.0ms 1.7% 11.0 (anonymous namespace)::GenericSpecializer::run() 1168.0ms 1.7% 39.0 (anonymous namespace)::DeadStoreElimination::run() 853.0ms 1.2% 150.0 (anonymous namespace)::DCE::run() 499.0ms 0.7% 7.0 (anonymous namespace)::SILCodeMotion::run()