Your commit message is very informative. Did you include the same
information in a `Note` in the code, so that we don't lose the information
I haven't yet but I can. Actually, I wanted to ask you something. At the moment
I pass all the normal tests but I fail some performance tests. They do compile but there is a
deviation from the expected and HEAD is broken. For the additional expressive power I expected
some more memory and time. For example, for perf/compiler/T783.hs which has 500 guards in a
single function definition I take ~5 sec to compile but the deviation in allocated bytes is 753%,
compared to what the "expected" is. I feel terrible since we are really close to the freeze and I
think I am stalling everyone. I know of no good way to reduce memory consumption without
losing substantial expressivity. Do you think I shall revert?
> No let’s not revert. But:
> · Please put a list of the tickets (there are several) on the wiki page (where is the wiki page?)
> o perf/compiler/T783
> o #11163: perf/compiler/T5642
> · Let’s have a flag to skip overlap testing so that there is always a workaround
Indeed, given that there appear to be relatively few (and, moreover, fairly pathological)
programs that send things astray this should be a fine workaround for 8.0. While
you introduce the flag be sure to add a mention in the documentation:
* Update the note in `docs/user_guide/bugs.rst` to reflect the current
state of the pattern match check.
* Add a point to `bugs.rst` to describe the performance issue and the
workaround. Describe, if you can, some heuristics that users might
use to determine whether skipping overlap testing might be necessary
for their program.
* A note in `docs/user_guide/using-warnings.rst` describing the
new flag, linking to the description of the performance issue in
* Add a description of the flag to `utils/mkUserGuidePart/Options/Warnings.hs`
Also, perhaps we could handle future work via the usual Phabricator
route? While we sometimes do deviate from Phabricator for larger patches
like the original exhaustiveness checker merge, typically all other
patches are processed through Phabricator, which offers the advantage
that we can easily see in advance whether things will break.
> From: George Karachalias [mailto:[hidden email]]
> Sent: 04 December 2015 09:41
> To: Simon Peyton Jones <[hidden email]>
> Subject: Re: [GHC] #11160: New exhaustiveness checker breaks ghcirun004
> I feel terrible since we are really close to the freeze and I think I am stalling everyone.
Don't fret too much, it happens. Moreover, I deserve a large portion of
the blame as I neglected to mention the existence of our validation
script. Regardless things are pretty much back to normal at this point;
life goes on...