[GHC] #16222: PPC NCG: C calling convention violated for integers smaller than word size
GHC
ghc-devs at haskell.org
Wed Jan 23 18:01:43 UTC 2019
#16222: PPC NCG: C calling convention violated for integers smaller than word size
-------------------------------------+-------------------------------------
Reporter: trommler | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone: 8.10.1
Component: Compiler | Version: 8.7
(FFI) |
Keywords: big endian | Operating System: Unknown/Multiple
Architecture: powerpc64 | Type of failure: Incorrect result
Test Case: | at runtime
primops/should_run/PrimFFIInt8 | Blocked By:
primops/should_run/PrimFFIInt16 |
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
The C calling convention for powerpc64 and powerpc64le require simple
integer types to be zero or sign extended to 64 bit. The PPC NCG assumes
that all values have been promoted to word size but now we introduced
integer operations on smaller than machine word size and in general we
cannot assume that values have been promoted anymore.
When a value is not promoted and passed to a foreign function on the stack
that value will be in the wrong position within the stack slot on big
endian systems and the function will deliver wrong results. On little
endian systems we still get correct results as long as we stay in the
smaller integer range.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16222>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list