[GHC] #8095: TypeFamilies painfully slow
GHC
ghc-devs at haskell.org
Tue Jul 18 02:45:56 UTC 2017
#8095: TypeFamilies painfully slow
-------------------------------------+-------------------------------------
Reporter: MikeIzbicki | Owner: goldfire
Type: bug | Status: new
Priority: high | Milestone: 8.4.1
Component: Compiler (Type | Version: 7.6.3
checker) |
Resolution: | Keywords: TypeFamilies
Operating System: Unknown/Multiple | Architecture:
Type of failure: Compile-time | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking:
Related Tickets: #5321, #11598, | Differential Rev(s):
#12506 |
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by goldfire):
While I do think your proposed solution may fix the problem reported here
-- slow compilation -- in my opinion it throws the baby out with the
bathwater. Using `mkUnsafeCo` should happen only from `unsafeCoerce#`.
There's nothing unsafe going on here, yet the Core code will be littered
with what appear to be unsafe coercions.
Instead of abusing the current unsafe coercions, the plan above is to
introduce a new `OmittedCo` (controlled by `-f` flags) that is quite like
`UnsafeCo` (but stores used coercion variables, for instance). Then, when
reading the Core, we can tell the difference between the product of
`unsafeCoerce#` and something omitted.
By the way, I say "may fix" above because this approach might still create
the coercion, only to throw it away. If we prevent the creation of the
coercion a little earlier, we might have more luck.
By the way, I'm sorry to rain on your parade a bit here. I do very much
appreciate your just going in to fix this... but I don't think the simple
solution here is quite the right approach that will continue to work in
the long term.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8095#comment:36>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list