Add integer-simple as a build option
authorIan Lynagh <igloo@earth.li>
Wed, 22 Jul 2009 01:31:51 +0000 (01:31 +0000)
committerIan Lynagh <igloo@earth.li>
Wed, 22 Jul 2009 01:31:51 +0000 (01:31 +0000)
GHC/Real.lhs
base.cabal

index 6a3f335..f4d3e5e 100644 (file)
@@ -449,6 +449,7 @@ lcm _ 0         =  0
 lcm 0 _         =  0
 lcm x y         =  abs ((x `quot` (gcd x y)) * y)
 
+#ifdef OPTIMISE_INTEGER_GCD_LCM
 {-# RULES
 "gcd/Int->Int->Int"             gcd = gcdInt
 "gcd/Integer->Integer->Integer" gcd = gcdInteger'
@@ -465,6 +466,7 @@ gcdInteger' a b = gcdInteger a b
 gcdInt :: Int -> Int -> Int
 gcdInt 0 0 = error "GHC.Real.gcdInt: gcd 0 0 is undefined"
 gcdInt a b = fromIntegral (gcdInteger (fromIntegral a) (fromIntegral b))
+#endif
 
 integralEnumFrom :: (Integral a, Bounded a) => a -> [a]
 integralEnumFrom n = map fromInteger [toInteger n .. toInteger (maxBound `asTypeOf` n)]
index f94f185..01fad68 100644 (file)
@@ -23,9 +23,16 @@ source-repository head
     type:     darcs
     location: http://darcs.haskell.org/packages/base/
 
+Flag integer-simple
+    Description: Use integer-simple
+
 Library {
     if impl(ghc) {
-        build-depends: integer-gmp
+        if flag(integer-simple)
+            build-depends: integer-simple
+        else
+            build-depends: integer-gmp
+            ghc-options: -DOPTIMISE_INTEGER_GCD_LCM
         build-depends: rts, ghc-prim
         exposed-modules:
             Foreign.Concurrent,