diff options
author | Simon Marlow <simonmar@microsoft.com> | 2007-10-19 13:32:43 +0000 |
---|---|---|
committer | Simon Marlow <simonmar@microsoft.com> | 2007-10-19 13:32:43 +0000 |
commit | a0d2d5bb9a949bc683d1fe576260f8c09930948a (patch) | |
tree | 056ed0dcda0f48f1d886fcb3176581a7876e9e75 /compiler/codeGen | |
parent | cad764aa566442b08b1e68bf2c937772442a87cd (diff) | |
download | haskell-a0d2d5bb9a949bc683d1fe576260f8c09930948a.tar.gz |
second attempt to fix C compiler warnings with -fhpc
The hs_hpc_module() prototype in RtsExternal.h didn't match its usage:
we were passing StgWord-sized parameters but the prototype used C
ints. I think it accidentally worked because we only ever passed
constants that got promoted. The constants unfortunately were
sometimes negative, which caused the C compiler to emit warnings.
I suspect PprC.pprHexVal may be wrong to emit negative constants in
the generated C, but I'm not completely sure. Anyway, it's easy to
fix this in CgHpc, which is what I've done.
Diffstat (limited to 'compiler/codeGen')
-rw-r--r-- | compiler/codeGen/CgHpc.hs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/codeGen/CgHpc.hs b/compiler/codeGen/CgHpc.hs index f44289d1db..516a9c7674 100644 --- a/compiler/codeGen/CgHpc.hs +++ b/compiler/codeGen/CgHpc.hs @@ -31,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 @@ -77,8 +79,8 @@ initHpc this_mod (HpcInfo tickCount hashNo) CCallConv ) [ (mkLblExpr mkHpcModuleNameLabel,PtrHint) - , (CmmLit $ mkIntCLit tickCount,NoHint) - , (CmmLit $ mkIntCLit hashNo,NoHint) + , (word32 tickCount, NoHint) + , (word32 hashNo, NoHint) , (CmmLit $ CmmLabel $ mkHpcTicksLabel $ this_mod,PtrHint) ] (Just []) @@ -86,5 +88,6 @@ initHpc this_mod (HpcInfo tickCount hashNo) CmmMayReturn } where + word32 i = CmmLit (CmmInt (fromIntegral (fromIntegral i :: Word32)) I32) mod_alloc = mkFastString "hs_hpc_module" |