[GHC] #9718: Avoid TidyPgm predicting what CorePrep will do
GHC
ghc-devs at haskell.org
Thu Oct 11 10:33:28 UTC 2018
#9718: Avoid TidyPgm predicting what CorePrep will do
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner: (none)
Type: task | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.8.3
Resolution: | Keywords: CodeGen, CAFs
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 osa1):
Another thing we need to figure out is how to update use sites of binders
when
we update CAFness info. For example, in the example in #15113:
{{{
lvl2_r3y3 :: [Char]
[GblId]
lvl2_r3y3 = unpackCString# lvl1_r3y2
-- RHS size: {terms: 7, types: 6, coercions: 2, joins: 0/0}
patError :: forall a. Addr# -> a
[GblId, Arity=1, Str=<B,U>x, Unf=OtherCon []]
patError
= \ (@ a_a2kh) (s_a1Pi :: Addr#) ->
raise#
@ SomeException
@ 'LiftedRep
@ a_a2kh
(Control.Exception.Base.$fExceptionPatternMatchFail_$ctoException
((untangle s_a1Pi lvl2_r3y3)
`cast` (Sym (Control.Exception.Base.N:PatternMatchFail[0])
:: (String :: *) ~R# (PatternMatchFail :: *))))
}}}
We want to be able to make `lvl2_r3y3` re-entrant. When we do this
`patError`
won't have any CAF refs, but to actually realize this we need to update
references to `lvl2_r3y3` to update the id info.
Alternatively I think we could pass an environment of updated ids to
`topStgBindHasCafRefs` and friends.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9718#comment:13>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list