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 |