
#14152: Float exit paths out of recursive functions -------------------------------------+------------------------------------- Reporter: nomeata | Owner: (none) Type: task | Status: patch Priority: normal | Milestone: Component: Compiler | Version: 8.2.1 Resolution: | Keywords: JoinPoints Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #14137 #10918 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): What's this (in `Exitify`): {{{ where exit_id_tmpl = mkSysLocal (fsLit "exit") initExitJoinUnique ty `asJoinId` join_arity `setIdOccInfo` exit_occ_info -- See Note [Do not inline exit join points] exit_occ_info = OneOcc { occ_in_lam = True , occ_one_br = True , occ_int_cxt = False , occ_tail = AlwaysTailCalled join_arity } }}} The occurrence analyser sets occ-info. No one else should. What happens if you leave this out? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14152#comment:35 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler