Linker: Fix type in m32_free_internal
authorErik de Castro Lopo <erikd@mega-nerd.com>
Fri, 30 Oct 2015 04:07:21 +0000 (15:07 +1100)
committerErik de Castro Lopo <erikd@mega-nerd.com>
Fri, 30 Oct 2015 08:51:36 +0000 (19:51 +1100)
commit8ddf41744ea8b0c1d034f9c5e062b0112d3d3aff
tree754642bb43e0181343fc352627471316604cd6cf
parente272ab99f60884e5c510c9597fbdb1a570eedcaa
Linker: Fix type in m32_free_internal

The code:

    uint64_t c = __sync_sub_and_fetch((uint64_t*)addr, 1);

was causing GCC to emit atomic instructions for 64 bit values which
are not available on PowerPC. However, since PowerPC only has a 32
bit address space, use of a 64 bit value is superflous.

Switching the type from `uint64_t` to `uintptr_t` should simply do
the correct thing on all 32 and 64 bit architectures.

Reviewers: austin, bgamari, simonmar

Subscribers: thomie

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

GHC Trac Issues: #11036
rts/Linker.c