
#14880: GHC panic: updateRole -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: goldfire Type: bug | Status: new Priority: normal | Milestone: 8.8.1 Component: Compiler (Type | Version: 8.2.2 checker) | Resolution: | Keywords: TypeInType Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: #15076 | Differential Rev(s): Phab:D4769 Wiki Page: | -------------------------------------+------------------------------------- Comment (by tdammers): New results: following the suggestion to go back to the (incorrect) baseline before the patch, and then *only* rewriting `tyCoVarsOf{Type|Co}[s]` in terms of `VarSet`, thus skipping the detour via `FV`, I compared three different versions: - the pre-patch baseline, available on the `wip/T14880-baseline` branch on git.haskell.org; - the patch, applied fully, available on the `wip/T14880` branch - the baseline version with the `tvCoVarsOf...` functions rewritten in terms of `VarSets`, copying the logic from the `FV` flavors, available on the `wip/T14880-just-tvs` branch. The expectation was that `-just-tvs` would perform better than the baseline, because it skips the additional machinery of `FV`; however, it turns out that it's actually slower and allocates more. Detailed timing results: {{{ ** Baseline ** Command being timed: "/home/tobias/well-typed/devel/ghc- phab/inplace/bin/ghc-stage2 -c testsuite/tests/perf/compiler/T5631.hs -fforce-recomp +RTS -rlogs/T14880-baseline.ticky -RTS" User time (seconds): 3.17 System time (seconds): 0.08 Percent of CPU this job got: 99% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.27 Maximum resident set size (kbytes): 292764 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 42788 Voluntary context switches: 392 Involuntary context switches: 18 ** Just VarSet ** Command being timed: "/home/tobias/well-typed/devel/ghc- phab/inplace/bin/ghc-stage2 -c testsuite/tests/perf/compiler/T5631.hs -fforce-recomp +RTS -rlogs/T14880-just-tvs.ticky -RTS" User time (seconds): 3.28 System time (seconds): 0.06 Percent of CPU this job got: 91% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.64 Maximum resident set size (kbytes): 294916 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 6 Minor (reclaiming a frame) page faults: 42784 Voluntary context switches: 452 Involuntary context switches: 20 ** 14880 patch ** Command being timed: "/home/tobias/well-typed/devel/ghc- phab/inplace/bin/ghc-stage2 -c testsuite/tests/perf/compiler/T5631.hs -fforce-recomp +RTS -rlogs/T14880.ticky -RTS" User time (seconds): 3.26 System time (seconds): 0.07 Percent of CPU this job got: 95% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.49 Maximum resident set size (kbytes): 295684 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 11 Minor (reclaiming a frame) page faults: 43047 Voluntary context switches: 422 Involuntary context switches: 17 }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14880#comment:74 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler