Fix Ticky histogram on Windows
authorTamar Christina <tamar@zhox.com>
Thu, 9 Jun 2016 15:49:20 +0000 (17:49 +0200)
committerBen Gamari <ben@smart-cactus.org>
Mon, 25 Jul 2016 15:06:07 +0000 (17:06 +0200)
commitb2796aaee78f1e7d9dcd5285e48c955b390f514e
treeaea7e087659cb46b71e79e68dd78c7aa566b1da5
parentf0eb4f7a1a63da057016fb93f009c7b57f481096
Fix Ticky histogram on Windows

The histogram types are defined in `Ticky.c` as `StgInt` values.

```
EXTERN StgInt RET_NEW_hst[TICKY_BIN_COUNT] INIT({0});
EXTERN StgInt RET_OLD_hst[TICKY_BIN_COUNT] INIT({0});
EXTERN StgInt RET_UNBOXED_TUP_hst[TICKY_BIN_COUNT] INIT({0});
```

which means they'll be `32-bits` on `x86` and `64-bits` on `x86_64`.

However the `bumpHistogram` in `StgCmmTicky` is incrementing them as if
they're a `cLong`. A long on Windows `x86_64` is `32-bit`.

As such when then value for the `_hst_1` is being set what it's actually doing
is setting the value of the high bits of the first entry.

This ends up giving us `0b‭100000000000000000000000000000000‬` or `4294967296`
as is displayed in the ticket on #8308.

Since `StgInt` is defined using the `WORD` size. Just use that directly in
`bumpHistogram`.

Also since `cLong` is no longer used after this commit it will also be dropped.

Test Plan: make TEST=T8308

Reviewers: mlen, jstolarek, bgamari, thomie, goldfire, simonmar, austin

Reviewed By: bgamari, thomie

Subscribers: #ghc_windows_task_force

Differential Revision: https://phabricator.haskell.org/D2318

GHC Trac Issues: #8308

(cherry picked from commit b020db2a841c397a02ec352f8b6dc110b38b927b)
compiler/cmm/CmmType.hs
compiler/codeGen/StgCmmTicky.hs