{-# LANGUAGE MagicHash #-}

import GHC.Exts

main :: IO ()
main = go 1000000# 10 (2^100)

go :: Int# -> Integer -> Integer -> IO ()
go 0# _ _ = return ()
go n# a b = (a + b) `seq` go (n# -# 1#) a b
{-# NOINLINE go #-}

{-
This test is based on a strategy from rwbarton relying on the inefficiency
of `Integer` addition as defined by `integer-gmp` without `runRW#`.

    When I was testing the patch interactively, I measured allocations for,
    say, a million (large Integer) + (small Integer) additions.  If that
    addition allocates, say, 6 words, then one can fairly reliably write the
    program so that it will allocate between 6 million and 7 million words,
    total.
-}
