Fix fwrite$UNIX2003 symbols when cross-compiling for Tiger
[ghc-hetmet.git] / compiler / codeGen / CgHpc.hs
index ed58daa..0d0fdb1 100644 (file)
@@ -1,3 +1,10 @@
+{-# 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/Commentary/CodingStyle#Warnings
+-- for details
+
 -----------------------------------------------------------------------------
 --
 -- Code generation for coverage
@@ -24,6 +31,8 @@ import Char
 import StaticFlags
 import PackageConfig 
 
+import Data.Word
+
 cgTickBox :: Module -> Int -> Code
 cgTickBox mod n = do
        let tick_box = (cmmIndex I64
@@ -48,7 +57,7 @@ hpcTable this_mod (HpcInfo hpc_tickCount _) = do
                         emitData Data $ [ CmmDataLabel (mkHpcTicksLabel this_mod)
                                         ] ++
                                         [ CmmStaticLit (CmmInt 0 I64)
-                                        | _ <- take hpc_tickCount [0..]
+                                        | _ <- take hpc_tickCount [0::Int ..]
                                         ]
   where
     module_name_str = moduleNameString (Module.moduleName this_mod)
@@ -57,26 +66,28 @@ hpcTable this_mod (HpcInfo hpc_tickCount _) = do
                      else packageIdString (modulePackageId this_mod) ++ "/" ++
                           module_name_str
 
-hpcTable this_mod (NoHpcInfo) = error "TODO: impossible"
+hpcTable this_mod (NoHpcInfo {}) = error "TODO: impossible"
 
 initHpc :: Module -> HpcInfo -> Code
 initHpc this_mod (HpcInfo tickCount hashNo)
   = do { id <- newNonPtrTemp wordRep -- TODO FIXME NOW
        ; emitForeignCall'
                PlayRisky
-               [(id,NoHint)]
-               (CmmForeignCall
+               [CmmKinded id NoHint]
+               (CmmCallee
                  (CmmLit $ CmmLabel $ mkForeignLabel mod_alloc Nothing False)
                   CCallConv
                )
-               [ (mkLblExpr mkHpcModuleNameLabel,PtrHint)
-               , (CmmLit $ mkIntCLit tickCount,NoHint)
-               , (CmmLit $ mkIntCLit hashNo,NoHint)
-               , (CmmLit $ CmmLabel $ mkHpcTicksLabel $ this_mod,PtrHint)
+               [ CmmKinded (mkLblExpr mkHpcModuleNameLabel) PtrHint
+               , CmmKinded (word32 tickCount) NoHint
+               , CmmKinded (word32 hashNo)    NoHint
+               , CmmKinded (CmmLit $ CmmLabel $ mkHpcTicksLabel $ this_mod) PtrHint
                ]
                (Just [])
                NoC_SRT -- No SRT b/c we PlayRisky
+               CmmMayReturn
        }
   where
+       word32 i = CmmLit (CmmInt (fromIntegral (fromIntegral i :: Word32)) I32)
        mod_alloc = mkFastString "hs_hpc_module"