[GHC] #9291: Don't reconstruct sum types if the type subtly changes

GHC ghc-devs at haskell.org
Tue Dec 6 14:21:39 UTC 2016


#9291: Don't reconstruct sum types if the type subtly changes
-------------------------------------+-------------------------------------
        Reporter:  schyler           |                Owner:
            Type:  feature request   |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  7.8.2
      Resolution:                    |             Keywords:
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:                    |
-------------------------------------+-------------------------------------

Comment (by nomeata):

 > Is this related with typed-ness of the IR?

 Yes! The type system of Core ensures that we cannot get the ST stuff wrong
 (to some extent. It still requires us to also not inline `runRW#`, for
 example).

 >  I think if we do some of the transformations we do during `coreToStg`
 we would have the same problem in Core too.

 You mean inlining `runRW#`? Right, we should not do that. I tried that
 once, and it broke :-)

 >  I'm wondering if a solution could be as simple as treating state tokens
 as different from each other when comparing expressions...

 Sure, such reasoning will be required. Is the only such case?

 Also, in this case, CSE’ing the state token isn’t the problem per se (the
 state token is a zero-width value, so operationally, they are all equal).
 The real problem is CSE’ing `newMutRef#` which has a side-effect. So maybe
 only CSE’ing constructor applications is a safer start.

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


More information about the ghc-tickets mailing list