Pop OS X stack padding even if the foreign call is stdcall (#5052)
authorMax Bolingbroke <batterseapower@hotmail.com>
Fri, 1 Apr 2011 23:06:16 +0000 (00:06 +0100)
committerMax Bolingbroke <batterseapower@hotmail.com>
Fri, 1 Apr 2011 23:20:48 +0000 (00:20 +0100)
commit7a29845e5ed105fcbd6ccadb8061bae2c124f817
tree46f76e1e28558de16a658ce0062324e8518d0c14
parent9aa71a3ee0361c4796586b61bb2ab2beaeec1dc5
Pop OS X stack padding even if the foreign call is stdcall (#5052)

The problem was that the codegen for foreign calls makes sure the stack
is 16-byte aligned on OS X by pushing some padding. In the case where the
foreign call is cdecl, that padding gets popped after the call, but if the
convention is stdcall then it doesn't generate any popping code at all.

However, this is incorrect because the stdcall only promises to pop the
arguments, not the padding. The fix is to generate code to pop the padding
(if any) on OS X.
compiler/nativeGen/X86/CodeGen.hs