Fix Trac #3966: warn about useless UNPACK pragmas
[ghc-hetmet.git] / compiler / iface / BinIface.hs
index 323e269..e608421 100644 (file)
@@ -17,7 +17,7 @@ import TcRnMonad
 import IfaceEnv
 import HscTypes
 import BasicTypes
-import NewDemand
+import Demand
 import Annotations
 import IfaceSyn
 import Module
@@ -335,7 +335,7 @@ data BinDictionary = BinDictionary {
 {-! for StrictnessMark derive: Binary !-}
 {-! for Activation derive: Binary !-}
 
--- NewDemand
+-- Demand
 {-! for Demand derive: Binary !-}
 {-! for Demands derive: Binary !-}
 {-! for DmdResult derive: Binary !-}
@@ -600,27 +600,31 @@ instance Binary RuleMatchInfo where
                       else return FunLike
 
 instance Binary InlinePragma where
-    put_ bh (InlinePragma a b c) = do
+    put_ bh (InlinePragma a b c d) = do
             put_ bh a
             put_ bh b
             put_ bh c
+            put_ bh d
 
     get bh = do
            a <- get bh
            b <- get bh
            c <- get bh
-           return (InlinePragma a b c)
-
-instance Binary StrictnessMark where
-    put_ bh MarkedStrict    = putByte bh 0
-    put_ bh MarkedUnboxed   = putByte bh 1
-    put_ bh NotMarkedStrict = putByte bh 2
+           d <- get bh
+           return (InlinePragma a b c d)
+
+instance Binary HsBang where
+    put_ bh HsNoBang        = putByte bh 0
+    put_ bh HsStrict        = putByte bh 1
+    put_ bh HsUnpack        = putByte bh 2
+    put_ bh HsUnpackFailed  = putByte bh 3
     get bh = do
            h <- getByte bh
            case h of
-             0 -> do return MarkedStrict
-             1 -> do return MarkedUnboxed
-             _ -> do return NotMarkedStrict
+             0 -> do return HsNoBang
+             1 -> do return HsStrict
+             2 -> do return HsUnpack
+             _ -> do return HsUnpackFailed
 
 instance Binary Boxity where
     put_ bh Boxed   = putByte bh 0
@@ -1161,8 +1165,9 @@ instance Binary IfaceInfoItem where
     put_ bh (HsStrictness ab) = do
            putByte bh 1
            put_ bh ab
-    put_ bh (HsUnfold ad) = do
+    put_ bh (HsUnfold lb ad) = do
            putByte bh 2
+           put_ bh lb
            put_ bh ad
     put_ bh (HsInline ad) = do
            putByte bh 3
@@ -1176,8 +1181,9 @@ instance Binary IfaceInfoItem where
                      return (HsArity aa)
              1 -> do ab <- get bh
                      return (HsStrictness ab)
-             2 -> do ad <- get bh
-                     return (HsUnfold ad)
+             2 -> do lb <- get bh
+                     ad <- get bh
+                      return (HsUnfold lb ad)
              3 -> do ad <- get bh
                      return (HsInline ad)
              _ -> do return HsNoCafRefs
@@ -1186,11 +1192,12 @@ instance Binary IfaceUnfolding where
     put_ bh (IfCoreUnfold e) = do
        putByte bh 0
        put_ bh e
-    put_ bh (IfInlineRule a b e) = do
+    put_ bh (IfInlineRule a b c d) = do
        putByte bh 1
        put_ bh a
        put_ bh b
-       put_ bh e
+       put_ bh c
+       put_ bh d
     put_ bh (IfWrapper a n) = do
        putByte bh 2
        put_ bh a
@@ -1198,6 +1205,9 @@ instance Binary IfaceUnfolding where
     put_ bh (IfDFunUnfold as) = do
        putByte bh 3
        put_ bh as
+    put_ bh (IfCompulsory e) = do
+       putByte bh 4
+       put_ bh e
     get bh = do
        h <- getByte bh
        case h of
@@ -1205,13 +1215,16 @@ instance Binary IfaceUnfolding where
                  return (IfCoreUnfold e)
          1 -> do a <- get bh
                  b <- get bh
-                 e <- get bh
-                 return (IfInlineRule a b e)
+                 c <- get bh
+                 d <- get bh
+                 return (IfInlineRule a b c d)
          2 -> do a <- get bh
                  n <- get bh
                  return (IfWrapper a n)
-         _ -> do as <- get bh
+         3 -> do as <- get bh
                  return (IfDFunUnfold as)
+         _ -> do e <- get bh
+                 return (IfCompulsory e)
 
 instance Binary IfaceNote where
     put_ bh (IfaceSCC aa) = do