fix-32-bit-unreg
authorDebian Haskell Group <pkg-haskell-maintainers@lists.alioth.debian.org>
Mon, 19 Feb 2024 16:12:25 +0000 (17:12 +0100)
committerGianfranco Costamagna <locutusofborg@debian.org>
Mon, 19 Feb 2024 16:12:25 +0000 (17:12 +0100)
commitd6bcd83dfd7f83378ba34ee861e74c9e7ee31555
treeddf5d62ca7d17cbc6a770135a850b3d69c552ecf
parentd40178e76b2c8700bc8fbb1e780624d578bf19bd
fix-32-bit-unreg

commit 9194c9c066a31cbb7a49830e4b5e2454fd4af6ba
Author: Cheng Shao <terrorjack@type.dance>
Date:   Mon Jan 23 13:17:07 2023 +0000

    CmmToC: fix CmmRegOff for 64-bit register on a 32-bit target

    We used to print the offset value to a platform word sized integer.
    This is incorrect when the offset is negative (e.g. output of cmm
    constant folding) and the register is 64-bit but on a 32-bit target,
    and may lead to incorrect runtime result (e.g. #22607).

    The fix is simple: just treat it as a proper MO_Add, with the correct
    width info inferred from the register itself.

    Metric Increase:
        T12707
        T13379
        T4801
        T5321FD
        T5321Fun

    (cherry picked from commit d151546e59a50158f25c3df6728b00d3c27bb4b9)

Gbp-Pq: Name fix-32-bit-unreg
compiler/GHC/CmmToC.hs