[GHC] #14769: The RecompBecause [TH] check is not resume-build-safe

GHC ghc-devs at haskell.org
Wed Feb 21 20:37:33 UTC 2018


#14769: The RecompBecause [TH] check is not resume-build-safe
-------------------------------------+-------------------------------------
        Reporter:  nh2               |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.2.2
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Incorrect result  |  Unknown/Multiple
  at runtime                         |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #481              |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by nh2):

 > we don't have the information we really need, which is "did the object
 file change". Perhaps we just need to be more clever and store hashes of
 object files as dependencies when we're using TH

 @simonmar Exactly. I thought the same, and implemented that a couple days
 ago as a work-in-progress:

 https://github.com/ghc/ghc/compare/ghc-8.2.1-release...nh2:ghc-8.2.1
 -release-nonrecursive-recompBecause-TH?expand=1

 Would be nice if you could have a look, I can then work towards finishing
 that.

 In my preliminary experiments, this reduced the occurrance of the `[TH]`
 reason from 40 modules to 8 in a 150-module project.

 However, the big problem is still #12935, non-deterministic `.o` files. If
 they are nondeterministic, they will destroy object file hashing based
 recompilation avoidance.

 However, once it works, I think it will be great: With `-O0` I get
 (nondeterministically) a reduction from 40 modules to 1 module + relink.

 So I took a shot at that problem as well (making object files
 deterministic), taking a different approach than what was taken so far
 (instead of making uniques not appear in outputs, I'm trying to genrate
 them deterministically). In my small example it works up to a single
 difference in the final binary, but more work is needed.

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


More information about the ghc-tickets mailing list