[GHC] #8922: GHC unnecessarily sign/zero-extends C call arguments
GHC
ghc-devs at haskell.org
Sun Mar 23 07:46:57 UTC 2014
#8922: GHC unnecessarily sign/zero-extends C call arguments
-------------------------------------+----------------------------------
Reporter: simonmar | Owner:
Type: bug | Status: new
Priority: normal | Milestone: 7.10.1
Component: Compiler (NCG) | Version: 7.6.3
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture: x86_64 (amd64)
Type of failure: None/Unknown | Difficulty: Unknown
Test Case: | Blocked By:
Blocking: | Related Tickets: #7684
-------------------------------------+----------------------------------
Comment (by tibbe):
Note this exchange in the linked email thread above. I'm not sure if
Richard (the editor) is saying that zero extending in the caller is an
optimization:
>>> How? You aren't allowed to access the bits outside the specified
argument
>>> type (which must match on caller and callee side), so you can't
observe
>>> them, so it's not required to specify their content.
>>
>> OK, thanks. It's clear now.
>>
>> The problem is that LLVM assumes that values are extended at a call.
GCC
>> does that, but libffi doesn't. So, calls via libffi to LLVM don't work
>> correctly.
>
> It's an optimization to do so to avoid partial register stalls.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8922#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list