Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : ghc-new-co

http://hackage.haskell.org/trac/ghc/changeset/668ac8061c35fd5b72816fd3c4dd4881c46db737

>---------------------------------------------------------------

commit 668ac8061c35fd5b72816fd3c4dd4881c46db737
Author: Simon Peyton Jones <[email protected]>
Date:   Fri May 6 15:35:07 2011 +0100

    Missing coercion case in byte code generation

>---------------------------------------------------------------

 compiler/ghci/ByteCodeGen.lhs |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/compiler/ghci/ByteCodeGen.lhs b/compiler/ghci/ByteCodeGen.lhs
index b1d4bd7..c07073a 100644
--- a/compiler/ghci/ByteCodeGen.lhs
+++ b/compiler/ghci/ByteCodeGen.lhs
@@ -1198,6 +1198,9 @@ pushAtom d p e
    | Just e' <- bcView e 
    = pushAtom d p e'
 
+pushAtom _ _ (AnnCoercion {})  -- Coercions are zero-width things, 
+   = return (nilOL, 0)         -- treated just like a variable VoidArg
+
 pushAtom d p (AnnVar v)
    | idCgRep v == VoidArg
    = return (nilOL, 0)
@@ -1271,9 +1274,6 @@ pushAtom _ _ (AnnLit lit)
                 -- Get the addr on the stack, untaggedly
                 return (unitOL (PUSH_UBX (Right addr) 1), 1)
 
-pushAtom d p (AnnCast e _)
-   = pushAtom d p (snd e)
-
 pushAtom _ _ expr
    = pprPanic "ByteCodeGen.pushAtom" 
               (pprCoreExpr (deAnnotate (undefined, expr)))
@@ -1464,6 +1464,7 @@ bcView _                             = Nothing
 isVoidArgAtom :: AnnExpr' Var ann -> Bool
 isVoidArgAtom e | Just e' <- bcView e = isVoidArgAtom e'
 isVoidArgAtom (AnnVar v)              = typePrimRep (idType v) == VoidRep
+isVoidArgAtom (AnnCoercion {})        = True
 isVoidArgAtom _                      = False
 
 atomPrimRep :: AnnExpr' Id ann -> PrimRep



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to