I'd like to reproduce this.

Are you speaking of the (current, up to date) HEAD?  Assuming so, you
say what code to add to the simplifier, but you don't say what to
compile to elicit the bug.

Simon

| -----Original Message-----
| From: Samuel Bronson [mailto:[EMAIL PROTECTED]
| Sent: 04 November 2006 23:55
| To: [EMAIL PROTECTED]; Simon Peyton-Jones
| Subject: obscure impossible problem with simplifier
| 
| I think the simplifier is doing something iffy with types, because
| when I try to call exprType from SimplUtils.interestingArg, I get
| this:
| 
| ghc-6.5: panic! (the 'impossible' happened)
|   (GHC version 6.5 for i386-unknown-linux):
|         applyTypeToArgs
|     a98{v a1eB} [lid] ex{v aqZ} [lid]
|     a{tv a1et} [tv]
| 
| Please report this as a GHC bug:
http://www.haskell.org/ghc/reportabug
| 
| make: *** [GHC/TopHandler.o] Error 1
| 
| I think you only need to add this code:
| 
| interestingArg expr | pprTrace "interestingArg" (ppr expr) $
|                       isUnLiftedType (exprType expr) =
|         -- Unlifted args are only ever interesting if we know what
| they are
|                         case expr of
|                         Lit lit -> True
|                         _       -> False
| 
| at the top of the "interestingArg" function to get this error.
| The call chain looks like:
| completeCall -> interestingArg -> exprType -> applyTypeToArgs
| 
| I think somehow an ill-typed variable has been stuffed into the
| SimplCont? Or perhaps contArgs isn't substituting right? Anyway I
| can't find anything in the immediate area to indicate what the problem
| might be caused by... and I really hope it *is* a bug.
| 
| Btw, here is some relevant trace info:
| 
| completeCall
|     var: base:GHC.IOBase.>>{v rgF} [gid]
|     cont: ApplyTo nodup TYPE base:GHC.Base.(){(w) tc 40}
|           ApplyTo nodup TYPE a{tv a13f} [sk]
|           ApplyTo nodup handler{v ar2} [lid] ex{v aqZ} [lid]
|           ApplyTo nodup lvl_s1dT{v} [lid] @ a{tv a13f} [sk]
|           CoerceIt (base:GHC.IOBase.:CoIO{tc r3v}) a{tv a13f} [sk]
|           ApplyTo nodup new_s{v a1eg} [lid]
|           Stop[arg] (# base:GHC.Prim.State#{(w) tc 32q}
| base:GHC.Prim.RealWorld{(w) tc 31E},
|                        a{tv a13f} [sk] #)
| contArgs
|     -> ([TYPE base:GHC.Base.(){(w) tc 40}, TYPE a{tv a13f} [sk],
|          a98{v a1eh} [lid] ex{v aqZ} [lid],
|          lvl_s1dT{v} [lid] @ a{tv a13f} [sk]],
|         CoerceIt (base:GHC.IOBase.:CoIO{tc r3v}) a{tv a13f} [sk]
|         ApplyTo nodup new_s{v a1eg} [lid]
|         Stop[arg] (# base:GHC.Prim.State#{(w) tc 32q}
| base:GHC.Prim.RealWorld{(w) tc 31E},
|                      a{tv a13f} [sk] #))
| 
| If you can guess what that might mean, great. If not, well, you could
| do your own tracing. Now if you'll excuse me I have a headache :-(.
| Potentially related to trying to follow the simplifier.
| 
| This definately didn't happen before the recent simplifier changes.
_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to