[GHC] #12134: PowerPC 64-bit: Foreign functions with more than 8 float parameters broken

GHC ghc-devs at haskell.org
Sun May 29 18:19:58 UTC 2016


#12134: PowerPC 64-bit: Foreign functions with more than 8 float parameters broken
-------------------------------------+-------------------------------------
           Reporter:  trommler       |             Owner:  trommler
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.0.1
  (NCG)                              |
           Keywords:  ccall          |  Operating System:  Linux
       Architecture:  powerpc64      |   Type of failure:  Incorrect result
                                     |  at runtime
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 Consider the following:
 {{{#!c
 void many_floats(float f1, float f2, float f3, float f4, float f5,
                  float f6, float f7, float f8, float f9, float f10,
                  float f11, float f12, float f13, float f14) {
   printf("%f\n%f\n%f\n%f\n%f\n%f\n%f\n%f\n%f\n%f\n%f\n%f\n%f\n%f\n",
          f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14);
 }
 }}}
 and
 {{{#!hs
 foreign import ccall "many_floats" many :: CFloat -> CFloat ->
      CFloat -> CFloat -> CFloat -> CFloat -> CFloat -> CFloat ->
      CFloat -> CFloat -> CFloat -> CFloat -> CFloat -> CFloat -> IO ()
 main = many 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5 11.5 12.5 13.5 14.5
 }}}
 gives
 {{{
 1.500000
 2.500000
 3.500000
 4.500000
 5.500000
 6.500000
 7.500000
 8.500000
 0.000000
 0.000000
 3.000000
 14.500000
 13.500000
 0.000000
 }}}
 on PowerPC 64-bit Linux.

 According to the ABI for PowerPC 64-bit ELF v1.9 and ELF v2.0 the first 13
 floating or double parameters are passed in floating point registers.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12134>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list