implement proper type promotion in compilation of C calls
> commit 229323898b0809047b19b79c181085430cce9850
> Author: Ian Lynagh <ian@well-typed.com>
> Date: Thu Nov 1 14:13:05 2012 +0000
>
> Fix popcnt calls
>
> We don't want to narrow the argument size before making the foreign
> call: Word8 still gets passed as a Word-sized argument
I'm not sure this is right (I added the narrowing, FWIW). The fact that
Word8 gets promoted to Word is part of the C ABI, and we don't want to
do that when popcnt is being implemented directly by the native codegen.
I know it is currently broken on some platforms, but I think the fix
is to implement the proper type promotion in the compilation of C calls.
A useful test for this is cgrun071. If we get it wrong then it fails on x86, as the stack alignment is wrong when calling e.g. popCnt8#.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.6.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | high |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |