[GHC] #4900: DEPENDS pragma

GHC ghc-devs at haskell.org
Wed Nov 6 15:00:46 UTC 2013


#4900: DEPENDS pragma
-------------------------------------+------------------------------------
        Reporter:  cdsmith           |            Owner:
            Type:  feature request   |           Status:  patch
        Priority:  normal            |        Milestone:  7.8.1
       Component:  Compiler          |          Version:
      Resolution:                    |         Keywords:
Operating System:  Unknown/Multiple  |     Architecture:  Unknown/Multiple
 Type of failure:  None/Unknown      |       Difficulty:  Unknown
       Test Case:  TH_Depends        |       Blocked By:
        Blocking:                    |  Related Tickets:
-------------------------------------+------------------------------------

Comment (by parcs):

 Replying to [comment:63 simonmar]:
 > At first glance it's not obviously right, since we don't normally modify
 `ModSummary` during the upsweep - the `ModSummary` is something that is
 supposed to be collected by the downsweep.

 A module's list of usage files can only be determined _after_ compiling
 the module because the list includes files added by TH's
 `qAddDependencies`. So one way or another, usage-file information has to
 be propagated from a previous upsweep to a future downsweep (and to the
 stability check that follows).

 I proposed two independent solutions:

 1. During the downsweep, look inside the HPT to extract the usage-file
 information from an existing HMI and stuff it into the !ModSummary.
 2. During the upsweep, extract the usage-file information from the new HMI
 and update the module graph with this information. A future downsweep will
 use this updated module graph.

 But these solutions don't exactly satisfy the existing invariants of the
 downsweep and upsweep. For (1), we shouldn't read the HPT during the
 downsweep. For (2), we shouldn't update a !ModSummary during the upsweep.
 But I can't think of another solution. I personally like (1), especially
 since there are two independent upsweeps now. The patch that Adam attached
 is an updated version of (2).

 I think it would help review if a future patch was split into several
 logical patches. It's not a lot of code but it's somewhat tricky code.

 This is just my understanding of the state of this ticket.

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


More information about the ghc-tickets mailing list