[GHC] #13104: runRW# ruins join points
GHC
ghc-devs at haskell.org
Wed Oct 24 11:32:35 UTC 2018
#13104: runRW# ruins join points
-------------------------------------+-------------------------------------
Reporter: lukemaurer | Owner: chessai
Type: bug | Status: infoneeded
Priority: normal | Milestone: 8.8.1
Component: Compiler | Version: 8.1
Resolution: | Keywords: JoinPoints
Operating System: Unknown/Multiple | Architecture:
Type of failure: Runtime | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Changes (by sgraf):
* status: new => infoneeded
Comment:
Actually, I don't think this reproduces any longer. What's actually the
regression test here? The argument to `runST` in #12781 is properly eta-
expanded in GHC 8.4.3. Any attempt to manually reproduce the issue with
similar code as in the OP, e.g.
{{{
f = runST (loop (0 :: Int))
where
loop 1000 = return 42
loop n = loop (n+1)
}}}
leads to this Core for `f`:
{{{
Rec {
-- RHS size: {terms: 14, types: 11, coercions: 0, joins: 0/0}
$wloop
$wloop
= \ ww_s2DT w_s2DQ ->
case ww_s2DT of wild_Xk {
__DEFAULT -> $wloop (+# wild_Xk 1#) w_s2DQ;
1000# -> (# w_s2DQ, lvl_r2Eo #)
}
end Rec }
-- RHS size: {terms: 4, types: 2, coercions: 0, joins: 0/0}
f1
f1 = \ w_s2DQ -> $wloop 0# w_s2DQ
-- RHS size: {terms: 5, types: 30, coercions: 0, joins: 0/0}
f
f = case runRW# f1 of { (# ipv_a2Bw, ipv1_a2Bx #) -> ipv1_a2Bx }
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13104#comment:21>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list