Repository : ssh://darcs.haskell.org//srv/darcs/packages/integer-gmp

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/9be779d9025f01badf2afec92fb0c7f3bcf71412

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

commit 9be779d9025f01badf2afec92fb0c7f3bcf71412
Author: Ian Lynagh <[email protected]>
Date:   Thu Jan 26 13:58:04 2012 +0000

    Add some rules; fixes #5767
    
    We now have rules for
        integerToInt    (smallInteger    x) = x
        integerToWord   (wordToInteger   x) = x
        integerToInt64  (int64ToInteger  x) = x
        integerToWord64 (word64ToInteger x) = x

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

 GHC/Integer/Type.lhs |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/GHC/Integer/Type.lhs b/GHC/Integer/Type.lhs
index 401544d..94bd4dd 100644
--- a/GHC/Integer/Type.lhs
+++ b/GHC/Integer/Type.lhs
@@ -90,6 +90,11 @@ smallInteger i = S# i
 wordToInteger :: Word# -> Integer
 wordToInteger w = case word2Integer# w of (# s, d #) -> J# s d
 
+{-# RULES
+"integerToInt/smallInteger"   forall x . integerToInt  (smallInteger  x) = x
+"integerToWord/wordToInteger" forall x . integerToWord (wordToInteger x) = x
+ #-}
+
 {-# NOINLINE integerToWord #-}
 integerToWord :: Integer -> Word#
 integerToWord (S# i) = int2Word# i
@@ -120,6 +125,11 @@ int64ToInteger i = if ((i `leInt64#` intToInt64# 
0x7FFFFFFF#) &&
                    then smallInteger (int64ToInt# i)
                    else case int64ToInteger# i of
                         (# s, d #) -> J# s d
+
+{-# RULES
+"integerToInt64/int64ToInteger"   forall x . integerToInt64  (int64ToInteger  
x) = x
+"integerToWord64/word64ToInteger" forall x . integerToWord64 (word64ToInteger 
x) = x
+ #-}
 #endif
 
 integerToInt :: Integer -> Int#



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

Reply via email to