
#9281: Rewrite `integer-gmp` to use only non-allocating GMP functions -------------------------------------+------------------------------------- Reporter: hvr | Owner: hvr Type: task | Status: patch Priority: normal | Milestone: 7.10.1 Component: libraries | Version: (other) | Keywords: integer-gmp Resolution: | Operating System: Unknown/Multiple Differential Revisions: Phab:D82 | Type of failure: None/Unknown Architecture: | Test Case: Unknown/Multiple | Blocking: Difficulty: Unknown | Blocked By: | Related Tickets: #8647 | -------------------------------------+------------------------------------- Comment (by simonmar): `foreign import prim` has a different calling convention from `foreign import ccall` (obviously) and they look different at the `Cmm` level. The code generation for these two is quite different - the former is a `StgPrimCallOp` while the latter is a `StgFCallOp`. But I think all the machinery to do this already exists, as Simon said. When we foreign-import something with an IO type there's a wrapper around the primitive foreign call to add the IO, but the primitive call itself will have a type of the form `State# s -> (# State# s, a #)`, so we can already codegen these properly. All we need to do is make sure that there is no wrapper, which might already happen automatically if the typechecker is changed to allow `State#` arguments and `State#` or `(# State# s, a #)` results with `UnliftedFFITypes`. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9281#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler