#8585: Loopification should omit stack check --------------------------------------------+------------------------------ Reporter: jstolarek | Owner: jstolarek Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.7 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime performance bug | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: --------------------------------------------+------------------------------ Comment (by Jan Stolarek <jan.stolarek@…>): In [changeset:"ea584ab634b17b499138bc44dbec777de7357c19/ghc"]: {{{ #!CommitTicketReference repository="ghc" revision="ea584ab634b17b499138bc44dbec777de7357c19" Loopification jump between stack and heap checks Fixes #8585 When emmiting label of a self-recursive tail call (ie. when performing loopification optimization) we emit the loop header label after a stack check but before the heap check. The reason is that tail-recursive functions use constant amount of stack space so we don't need to repeat the check in every loop. But they can grow the heap so heap check must be repeated in every call. See Note [Self-recursive tail calls] and [Self-recursive loop header]. }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8585#comment:3> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler