[GHC] #14152: Float exit paths out of recursive functions

GHC ghc-devs at haskell.org
Tue Aug 29 22:28:08 UTC 2017


#14152: Float exit paths out of recursive functions
-------------------------------------+-------------------------------------
        Reporter:  nomeata           |                Owner:  (none)
            Type:  task              |               Status:  new
        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 nomeata):

 Ok, so `wip/T14152` has an implementation that works (judging from looking
 at the Core output). It’s not polished, but good enough to play around to
 see what happens. It’s also inefficient (it should probably work on an fv-
 annotated syntax tree instead of recomputing the free variables
 repeatedly.

 But it still applies “exitification” only together with “loopification”.
 This makes it hard to evaluate the merits of this ticket independently of
 loopification. Also, if we want “exitification”, then we want it for all
 joinrecs.

 Is there a better place to do it? Should it simply be a pass on its own
 that we run maybe after the first simplifier (which introduces most
 joinrecs?)?

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14152#comment:14>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list