[GHC] #14844: SpecConstr also non-recursive function
GHC
ghc-devs at haskell.org
Tue Mar 20 17:30:59 UTC 2018
#14844: SpecConstr also non-recursive function
-------------------------------------+-------------------------------------
Reporter: nomeata | Owner: (none)
Type: task | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.5
Resolution: | Keywords: SpecConstr
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by sgraf):
I'm currently on vacation, so I'm afraid I won't be able to write much
code.
I'm not doing anything targeting non-recursive functions, that in itself
should be pretty much independent. But given that you seem to have
stumbled over the same "phase dependency" problems, here are some notes:
Re: "anticipates the state after simplifications": That's what I figured
out, too, and becomes much more crucial once you add lambdas, which does
beta-reduction and makes seeing which arguments are scrutinized a little
harder. Currently, SpecConstr only gets its `ArgOcc`s (which is a
criterion for how deep it's worth to specialise in absence of forced
`SPEC`) only considers the original RHS. Specialised RHS' Occs are never
considered, although /calls/ from their RHSs are considered. My plan
forward is to revise the fix-pointing scheme in a way that we can
translate occurences in specialised RHSs back to occurences on the
original RHS' arguments.
In the case of lambdas, this also involves unification of call patterns
with bound variables, which is rather nasty and what I've been fiddling
with the last weeks.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14844#comment:9>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list