[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