[GHC] #9291: Don't reconstruct sum types if the type subtly changes
GHC
ghc-devs at haskell.org
Mon Jul 14 08:19:46 UTC 2014
#9291: Don't reconstruct sum types if the type subtly changes
----------------------------+----------------------------------------------
Reporter: schyler | Owner:
Type: feature | Status: new
request | Milestone:
Priority: normal | Version: 7.8.2
Component: | Keywords:
Compiler | Architecture: Unknown/Multiple
Resolution: | Difficulty: Moderate (less than a day)
Operating System: | Blocked By:
Unknown/Multiple | Related Tickets:
Type of failure: |
None/Unknown |
Test Case: |
Blocking: |
----------------------------+----------------------------------------------
Comment (by simonpj):
I hate the fact that a type-system question forces us to lose a potential
optimisation. But I do not know any well-typed way around this particular
one.
I'm absolutely not willing for the compiler to add `unsafeCoerce`s to the
code! One of GHC's most unique and distinctive features is its commitment
to a solidly-typed intermediate language, and I'm not willing to
compromise that property. There is a long tradition in Haskell of doing
things the Right Way and using the pain to drive innovation. (Monads,
System FC, kind polymorphism, etc etc.)
All that said, STG code is un-typed and I would be quite happy with STG-
level optimisations that transformed
{{{
case e of y {
...
C a b -> C a b
...
}
=====>
case e of y {
...
C a b -> y
...
}
}}}
and then commoned identical branches. (The above transformation is done
in Core too, but not when the types don't match. In STG that doesn't
matter.)
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9291#comment:13>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list