[GHC] #14434: GHC 8.2.1 picks wrong instances with -O in a presence of an OVERLAPPABLE instance
GHC
ghc-devs at haskell.org
Tue Nov 7 16:51:14 UTC 2017
#14434: GHC 8.2.1 picks wrong instances with -O in a presence of an OVERLAPPABLE
instance
-------------------------------------+-------------------------------------
Reporter: dredozubov | Owner: (none)
Type: bug | Status: new
Priority: high | Milestone: 8.2.3
Component: Compiler | Version: 8.2.1
Resolution: | Keywords:
Operating System: Linux | Architecture: x86_64
Type of failure: Incorrect result | (amd64)
at runtime | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Description changed by dredozubov:
Old description:
> We experienced code breakage while moving to 8.2.1 - in some
> circumstances it picks wrong instances if an instance in the lines of
> `instance {-# OVERLAPPABLE #-} C a ` is defined. @s9gf4ult was really
> nice to create a repo demonstrating an issue, you can look at the repo
> here: [https://github.com/s9gf4ult/isogen-minimal-example]
>
> Running `chech.sh` will trigger three builds:
>
> {{{
> GHC 8.0.2, -O, succeeds
> GHC 8.2.1, -O0, succeeds
> GHC 8.2.1, -O, fails
> }}}
>
>
> If you'll check out to either of fix- branches:
>
> {{{
> fix-move-to_string
> fix-no-catchall-instance
> fix-replace-to_string
> fix-add-irrelevant-instance
> }}}
>
> then the last test should succeed also. Those branches contain changes
> over master which fixes the bug in different ways.
New description:
We experienced code breakage while moving to 8.2.1 - in some circumstances
it picks wrong instances if an instance in the lines of `instance {-#
OVERLAPPABLE #-} C a ` is defined. @s9gf4ult was really nice to create a
repo demonstrating an issue, you can look at the repo here:
[https://github.com/s9gf4ult/isogen-minimal-example]
Running `chech.sh` will trigger three builds:
{{{
GHC 8.0.2, -O, succeeds
GHC 8.2.1, -O0, succeeds
GHC 8.2.1, -O, fails
}}}
If you'll check out to either of fix- branches:
{{{
fix-move-to_string
fix-no-catchall-instance
fix-replace-to_string
fix-add-irrelevant-instance
}}}
then the last test should succeed also. Those branches contain changes
over master which fix the application behavior in different ways.
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14434#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list