Use OPTIONS rather than OPTIONS_GHC for pragmas
[ghc-hetmet.git] / compiler / utils / FiniteMap.lhs
index 6ac6b09..bb73d0f 100644 (file)
@@ -18,6 +18,12 @@ The code is SPECIALIZEd to various highly-desirable types (e.g., Id)
 near the end.
 
 \begin{code}
+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+--     http://hackage.haskell.org/trac/ghc/wiki/CodingStyle#Warnings
+-- for details
 
 module FiniteMap (
        FiniteMap,              -- abstract type
@@ -49,7 +55,6 @@ module FiniteMap (
     ) where
 
 #include "HsVersions.h"
-#define IF_NOT_GHC(a) {--}
 
 #if defined(DEBUG_FINITEMAPS)/* NB NB NB */
 #define OUTPUTABLE_key , Outputable key
@@ -62,21 +67,21 @@ import Bag    ( Bag, foldrBag )
 import Util
 import Outputable
 
+#if 0
 import GHC.Exts
+-- was this import only needed for I#, or does it have something
+-- to do with the (not-presently-used) IF_NCG also?
+#endif
+
+import Data.List
 
+#if 0
 #if ! OMIT_NATIVE_CODEGEN
 #  define IF_NCG(a) a
 #else
 #  define IF_NCG(a) {--}
 #endif
-
-
--- SIGH: but we use unboxed "sizes"...
-#if __GLASGOW_HASKELL__
-#define IF_GHC(a,b) a
-#else /* not GHC */
-#define IF_GHC(a,b) b
-#endif /* not GHC */
+#endif
 \end{code}
 
 
@@ -179,9 +184,9 @@ factor of at most \tr{sIZE_RATIO}
 \begin{code}
 data FiniteMap key elt
   = EmptyFM
-  | Branch key elt             -- Key and elt stored here
-    IF_GHC(Int#,Int{-STRICT-}) -- Size >= 1
-    (FiniteMap key elt)                -- Children
+  | Branch key elt        -- Key and elt stored here
+    {-# UNPACK #-} !Int   -- Size >= 1
+    (FiniteMap key elt)   -- Children
     (FiniteMap key elt)
 \end{code}
 
@@ -189,14 +194,14 @@ data FiniteMap key elt
 emptyFM = EmptyFM
 {-
 emptyFM
-  = Branch bottom bottom IF_GHC(0#,0) bottom bottom
+  = Branch bottom bottom 0 bottom bottom
   where
     bottom = panic "emptyFM"
 -}
 
---  #define EmptyFM (Branch _ _ IF_GHC(0#,0) _ _)
+--  #define EmptyFM (Branch _ _ 0 _ _)
 
-unitFM key elt = Branch key elt IF_GHC(1#,1) emptyFM emptyFM
+unitFM key elt = Branch key elt 1 emptyFM emptyFM
 
 listToFM = addListToFM emptyFM
 
@@ -333,7 +338,7 @@ filterFM p (Branch key elt _ fm_l fm_r)
 \begin{code}
 --{-# INLINE sizeFM #-}
 sizeFM EmptyFM              = 0
-sizeFM (Branch _ _ size _ _) = IF_GHC(I# size, size)
+sizeFM (Branch _ _ size _ _) = size
 
 isEmptyFM fm = sizeFM fm == 0
 
@@ -402,7 +407,7 @@ mkBranch which key elt fm_l fm_r
     else
 #endif
     let
-       result = Branch key elt (unbox (1 + left_size + right_size)) fm_l fm_r
+       result = Branch key elt (1 + left_size + right_size) fm_l fm_r
     in
 --    if sizeFM result <= 8 then
        result
@@ -438,14 +443,6 @@ mkBranch which key elt fm_l fm_r
 
     left_size  = sizeFM fm_l
     right_size = sizeFM fm_r
-
-#ifdef __GLASGOW_HASKELL__
-    unbox :: Int -> Int#
-    unbox (I# size) = size
-#else
-    unbox :: Int -> Int
-    unbox x = x
-#endif
 \end{code}
 
 %************************************************************************
@@ -649,7 +646,7 @@ instance (Outputable key) => Outputable (FiniteMap key elt) where
 pprX EmptyFM = char '!'
 pprX (Branch key elt sz fm_l fm_r)
  = parens (hcat [pprX fm_l, space,
-                     ppr key, space, int (IF_GHC(I# sz, sz)), space,
+                     ppr key, space, int sz, space,
                      pprX fm_r])
 #else
 -- and when not debugging the package itself...