{"push_id":3128838081,"size":3,"distinct_size":3,"ref":"refs/heads/swift-5.0-branch","head":"4828081b65464aa50554ddc983e3dda5bff25c8c","before":"8b894ca75a715ff42134db5b8a819e47d3527b2a","commits":[{"sha":"d09aae734007f602a5d8fe2faca36d35f01b8ab1","author":{"name":"Vedant Kumar","email":"004c457a2ebaecf18123fd2614baa1d571fe5234@apple.com"},"message":"[HotColdSplitting] Outline more than once per function\n\nAlgorithm: Identify maximal cold regions and put them in a worklist. If\na candidate region overlaps with another, discard it. While the worklist\nis full, remove a single-entry sub-region from the worklist and attempt\nto outline it. By the non-overlap property, this should not invalidate\nparts of the domtree pertaining to other outlining regions.\n\nTesting: LNT results on X86 are clean. With test-suite + externals, llvm\noutlines 134KB pre-patch, and 352KB post-patch (+ ~2.6x). The file\n483.xalancbmk/src/Constants.cpp stands out as an extreme case where llvm\noutlines over 100 times in some functions (mostly EH paths). There was\nnot a significant performance impact pre vs. post-patch.\n\nDifferential Revision: https://reviews.llvm.org/D53887\n\ngit-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@348639 91177308-0d34-0410-b5e6-96231b3b80d8\n(cherry picked from commit b7c4b42cc3b3061be8ca3ee105a32e0fc0425d1d)","distinct":true,"url":"https://api.github.com/repos/apple/swift-llvm/commits/d09aae734007f602a5d8fe2faca36d35f01b8ab1"},{"sha":"b0e38a84ea688d03ff5b9ab07cb970d378b25af3","author":{"name":"Vedant Kumar","email":"004c457a2ebaecf18123fd2614baa1d571fe5234@apple.com"},"message":"[HotColdSplitting] Refine definition of unlikelyExecuted\n\nThe splitting pass uses its 'unlikelyExecuted' predicate to statically\ndecide which blocks are cold.\n\n- Do not treat noreturn calls as if they are cold unless they are actually\n  marked cold. This is motivated by functions like exit() and longjmp(), which\n  are not beneficial to outline.\n\n- Do not treat inline asm as an outlining barrier. In practice asm(\"\") is\n  frequently used to inhibit basic block merging; enabling outlining in this case\n  results in substantial memory savings.\n\n- Treat invokes of cold functions as cold.\n\nAs a drive-by, remove the 'exceptionHandlingFunctions' predicate, because it's\nno longer needed. The pass can identify & outline blocks dominated by EH pads,\nso there's no need to special-case __cxa_begin_catch etc.\n\nDifferential Revision: https://reviews.llvm.org/D54244\n\ngit-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@348640 91177308-0d34-0410-b5e6-96231b3b80d8\n(cherry picked from commit d0e8089e646a7254aa3e4e00cdc016f29d73678a)","distinct":true,"url":"https://api.github.com/repos/apple/swift-llvm/commits/b0e38a84ea688d03ff5b9ab07cb970d378b25af3"},{"sha":"4828081b65464aa50554ddc983e3dda5bff25c8c","author":{"name":"Vedant Kumar","email":"004c457a2ebaecf18123fd2614baa1d571fe5234@apple.com"},"message":"[HotColdSplitting] Disable outlining landingpad instructions (PR39917)\n\nIt's currently not safe to outline landingpad instructions (see\nllvm.org/PR39917). Like @llvm.eh.typeid.for, the order and content of\nprevious landingpad instructions in a function alters the lowering of\nsubsequent landingpads by renumbering type info ID's. Outlining a\nlandingpad therefore breaks exception handling & unwinding.\n\ngit-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@348870 91177308-0d34-0410-b5e6-96231b3b80d8\n(cherry picked from commit e7e7fb51c9fdff6bfe118c5f4a3d96165800045d)","distinct":true,"url":"https://api.github.com/repos/apple/swift-llvm/commits/4828081b65464aa50554ddc983e3dda5bff25c8c"}]}
{"actor":{"display_login":"vedantk"}}