summaryrefslogtreecommitdiff
path: root/libraries/base/GHC
diff options
context:
space:
mode:
authorsimonpj@microsoft.com <unknown>2009-10-29 13:50:41 +0000
committersimonpj@microsoft.com <unknown>2009-10-29 13:50:41 +0000
commit5a1ec040ff922538af05a3f4bf18a5a29a84d1db (patch)
tree63a6507a69022cc10c723984adc06f7bb2d2acb8 /libraries/base/GHC
parent763bea6a0fda5fcf83c2bee734bfecab089db63f (diff)
downloadhaskell-5a1ec040ff922538af05a3f4bf18a5a29a84d1db.tar.gz
Exploit now-working default-method INLINE pragmas for Data.Bits
* Add INLINE pragmas to default methods for class Bits * Remove redundant instance methods elsewhere, now that the default method will do the job
Diffstat (limited to 'libraries/base/GHC')
-rw-r--r--libraries/base/GHC/Int.hs23
-rw-r--r--libraries/base/GHC/Word.hs28
2 files changed, 0 insertions, 51 deletions
diff --git a/libraries/base/GHC/Int.hs b/libraries/base/GHC/Int.hs
index 0c70d02ee7..9f53937cc7 100644
--- a/libraries/base/GHC/Int.hs
+++ b/libraries/base/GHC/Int.hs
@@ -147,10 +147,6 @@ instance Bits Int8 where
bitSize _ = 8
isSigned _ = True
- {-# INLINE shiftR #-}
- -- same as the default definition, but we want it inlined (#2376)
- x `shiftR` i = x `shift` (-i)
-
{-# RULES
"fromIntegral/Int8->Int8" fromIntegral = id :: Int8 -> Int8
"fromIntegral/a->Int8" fromIntegral = \x -> case fromIntegral x of I# x# -> I8# (narrow8Int# x#)
@@ -263,9 +259,6 @@ instance Bits Int16 where
bitSize _ = 16
isSigned _ = True
- {-# INLINE shiftR #-}
- -- same as the default definition, but we want it inlined (#2376)
- x `shiftR` i = x `shift` (-i)
{-# RULES
"fromIntegral/Word8->Int16" fromIntegral = \(W8# x#) -> I16# (word2Int# x#)
@@ -399,9 +392,6 @@ instance Bits Int32 where
bitSize _ = 32
isSigned _ = True
- {-# INLINE shiftR #-}
- -- same as the default definition, but we want it inlined (#2376)
- x `shiftR` i = x `shift` (-i)
{-# RULES
"fromIntegral/Int->Int32" fromIntegral = \(I# x#) -> I32# (intToInt32# x#)
@@ -512,10 +502,6 @@ instance Bits Int32 where
bitSize _ = 32
isSigned _ = True
- {-# INLINE shiftR #-}
- -- same as the default definition, but we want it inlined (#2376)
- x `shiftR` i = x `shift` (-i)
-
{-# RULES
"fromIntegral/Word8->Int32" fromIntegral = \(W8# x#) -> I32# (word2Int# x#)
"fromIntegral/Word16->Int32" fromIntegral = \(W16# x#) -> I32# (word2Int# x#)
@@ -661,11 +647,6 @@ instance Bits Int64 where
bitSize _ = 64
isSigned _ = True
- {-# INLINE shiftR #-}
- -- same as the default definition, but we want it inlined (#2376)
- x `shiftR` i = x `shift` (-i)
-
-
-- give the 64-bit shift operations the same treatment as the 32-bit
-- ones (see GHC.Base), namely we wrap them in tests to catch the
-- cases when we're shifting more than 64 bits to avoid unspecified
@@ -779,10 +760,6 @@ instance Bits Int64 where
bitSize _ = 64
isSigned _ = True
- {-# INLINE shiftR #-}
- -- same as the default definition, but we want it inlined (#2376)
- x `shiftR` i = x `shift` (-i)
-
{-# RULES
"fromIntegral/a->Int64" fromIntegral = \x -> case fromIntegral x of I# x# -> I64# x#
"fromIntegral/Int64->a" fromIntegral = \(I64# x#) -> fromIntegral (I# x#)
diff --git a/libraries/base/GHC/Word.hs b/libraries/base/GHC/Word.hs
index c4e3278e06..079f49425d 100644
--- a/libraries/base/GHC/Word.hs
+++ b/libraries/base/GHC/Word.hs
@@ -181,10 +181,6 @@ instance Bits Word where
bitSize _ = WORD_SIZE_IN_BITS
isSigned _ = False
- {-# INLINE shiftR #-}
- -- same as the default definition, but we want it inlined (#2376)
- x `shiftR` i = x `shift` (-i)
-
{-# RULES
"fromIntegral/Int->Word" fromIntegral = \(I# x#) -> W# (int2Word# x#)
"fromIntegral/Word->Int" fromIntegral = \(W# x#) -> I# (word2Int# x#)
@@ -285,10 +281,6 @@ instance Bits Word8 where
bitSize _ = 8
isSigned _ = False
- {-# INLINE shiftR #-}
- -- same as the default definition, but we want it inlined (#2376)
- x `shiftR` i = x `shift` (-i)
-
{-# RULES
"fromIntegral/Word8->Word8" fromIntegral = id :: Word8 -> Word8
"fromIntegral/Word8->Integer" fromIntegral = toInteger :: Word8 -> Integer
@@ -390,10 +382,6 @@ instance Bits Word16 where
bitSize _ = 16
isSigned _ = False
- {-# INLINE shiftR #-}
- -- same as the default definition, but we want it inlined (#2376)
- x `shiftR` i = x `shift` (-i)
-
{-# RULES
"fromIntegral/Word8->Word16" fromIntegral = \(W8# x#) -> W16# x#
"fromIntegral/Word16->Word16" fromIntegral = id :: Word16 -> Word16
@@ -493,10 +481,6 @@ instance Bits Word32 where
bitSize _ = 32
isSigned _ = False
- {-# INLINE shiftR #-}
- -- same as the default definition, but we want it inlined (#2376)
- x `shiftR` i = x `shift` (-i)
-
{-# RULES
"fromIntegral/Int->Word32" fromIntegral = \(I# x#) -> W32# (int32ToWord32# (intToInt32# x#))
"fromIntegral/Word->Word32" fromIntegral = \(W# x#) -> W32# (wordToWord32# x#)
@@ -604,10 +588,6 @@ instance Bits Word32 where
bitSize _ = 32
isSigned _ = False
- {-# INLINE shiftR #-}
- -- same as the default definition, but we want it inlined (#2376)
- x `shiftR` i = x `shift` (-i)
-
{-# RULES
"fromIntegral/Word8->Word32" fromIntegral = \(W8# x#) -> W32# x#
"fromIntegral/Word16->Word32" fromIntegral = \(W16# x#) -> W32# x#
@@ -734,10 +714,6 @@ instance Bits Word64 where
bitSize _ = 64
isSigned _ = False
- {-# INLINE shiftR #-}
- -- same as the default definition, but we want it inlined (#2376)
- x `shiftR` i = x `shift` (-i)
-
-- give the 64-bit shift operations the same treatment as the 32-bit
-- ones (see GHC.Base), namely we wrap them in tests to catch the
-- cases when we're shifting more than 64 bits to avoid unspecified
@@ -842,10 +818,6 @@ instance Bits Word64 where
bitSize _ = 64
isSigned _ = False
- {-# INLINE shiftR #-}
- -- same as the default definition, but we want it inlined (#2376)
- x `shiftR` i = x `shift` (-i)
-
{-# RULES
"fromIntegral/a->Word64" fromIntegral = \x -> case fromIntegral x of W# x# -> W64# x#
"fromIntegral/Word64->a" fromIntegral = \(W64# x#) -> fromIntegral (W# x#)