[GHC] #11731: Simplifier: Inlining trivial let can lose sharing

GHC ghc-devs at haskell.org
Thu Mar 31 14:40:49 UTC 2016


#11731: Simplifier: Inlining trivial let can lose sharing
-------------------------------------+-------------------------------------
        Reporter:  nomeata           |                Owner:
            Type:  bug               |               Status:  patch
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):  Phab:D2073
       Wiki Page:                    |
-------------------------------------+-------------------------------------
Changes (by nomeata):

 * differential:  Phab:D2064 => Phab:D2073


Comment:

 > Crumbs. I see that you are doing an entire pass of the program to erase
 this info. That does seem like overkill, to remove info that is never
 examined anyway. I'd much rather not do this.

 Agreed, I reverted it; the final result (with Note) is now in Phab:D2073.

 I did look at the worker/wrapper module, but found that it would be quite
 ugly to do it there. For example, clear “In this case do nothing” code
 paths would have to turn to “In this case, do nothing (besides this change
 to all binders that we happen to do here).”

 One clear implementation would have been to adjust the calls to
 `setIdDemandInfo` in `DmdAnal`, but that would go wrong because of the
 Cunning Plan with fixed-point iteration, where later iterations use the
 existing annotations.

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


More information about the ghc-tickets mailing list