Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch : master
http://hackage.haskell.org/trac/ghc/changeset/d0faaa6fa0cecd23c5670fd199e9206275313666 >--------------------------------------------------------------- commit d0faaa6fa0cecd23c5670fd199e9206275313666 Author: Johan Tibell <[email protected]> Date: Tue Jun 7 14:44:23 2011 +0200 Fix segfault in array copy primops on 32-bit The second argument to C's memset was passed as a W8 while memset expects an int. Signed-off-by: David Terei <[email protected]> >--------------------------------------------------------------- compiler/codeGen/CgPrimOp.hs | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/compiler/codeGen/CgPrimOp.hs b/compiler/codeGen/CgPrimOp.hs index c5a6644..fa7287d 100644 --- a/compiler/codeGen/CgPrimOp.hs +++ b/compiler/codeGen/CgPrimOp.hs @@ -733,7 +733,7 @@ emitCloneArray info_p res_r src0 src_off0 n0 live = do emitMemcpyCall dst_p src_p (n `cmmMulWord` wordSize) live emitMemsetCall (cmmOffsetExprW dst_p n) - (CmmLit (CmmInt (toInteger (1 :: Int)) W8)) + (CmmLit (mkIntCLit 1)) (card_words `cmmMulWord` wordSize) live stmtC $ CmmAssign (CmmLocal res_r) arr @@ -751,7 +751,7 @@ emitSetCards :: CmmExpr -> CmmExpr -> CmmExpr -> StgLiveVars -> Code emitSetCards dst_start dst_cards_start n live = do start_card <- assignTemp $ card dst_start emitMemsetCall (dst_cards_start `cmmAddWord` start_card) - (CmmLit (CmmInt (toInteger (1 :: Int)) W8)) + (CmmLit (mkIntCLit 1)) ((card (dst_start `cmmAddWord` n) `cmmSubWord` start_card) `cmmAddWord` CmmLit (mkIntCLit 1)) live @@ -795,8 +795,8 @@ emitMemmoveCall dst src n live = do memmove = CmmLit (CmmLabel (mkForeignLabel (fsLit "memmove") Nothing ForeignLabelInExternalPackage IsFunction)) --- | Emit a call to @memset@. The second argument must be of type --- 'W8'. +-- | Emit a call to @memset@. The second argument must fit inside an +-- unsigned char. emitMemsetCall :: CmmExpr -> CmmExpr -> CmmExpr -> StgLiveVars -> Code emitMemsetCall dst c n live = do vols <- getVolatileRegs live _______________________________________________ Cvs-ghc mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-ghc
