Aha. Got it.
Consider
case f x of
(# a,b #) -> if a>0
then f x -- CSE opportunity
else (# b,a #)
GHC 6.2's CSE pass wrongly optimised this to:
case f x of t
(# a,b #) -> if a>0 then
t -- WRONG
else (# b,a #)
(Wrong because we aren't allowed to mention a case binder for
an unboxed-tuple case.)
This bug has been there for ages. I've committed a fix, and a small
test case to make sure it doesn't recur.
Meanwhile, refrain from -O when compiling module AbstractSyntax
Thanks for a great report.
Simon
| -----Original Message-----
| From: Isaac Jones [mailto:[EMAIL PROTECTED]
| Sent: 07 January 2004 19:37
| To: Simon Peyton-Jones
| Cc: [EMAIL PROTECTED]
| Subject: RE: impossible in ghc 6.2
|
| On Wed, 2004-01-07 at 11:59, Simon Peyton-Jones wrote:
| > Very mysterious. I've never seen one of these without -dcore-lint
| > bleating first.
|
| I added -dcore-lint again and don't see anything, but I include all
the
| output below...
|
| > Suggestions:
| > 1. Don't use --make, so you can be certain which module is involved.
| > 2. On the module that breaks, add -verbose-core2-core -dppr-debug
| > -ddump-stg
| > and send us the output.
|
| It's pretty big, so I stuck it on a web page. stdOut is probably what
| you're looking for.
|
| http://www.syntaxpolice.org/tmp/stdErr
| http://www.syntaxpolice.org/tmp/stdOut
|
| peace,
|
| isaac
_______________________________________________
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs