Ticket #7383 (closed bug: fixed)
implement proper type promotion in compilation of C calls
|Reported by:||igloo||Owned by:|
|Type of failure:||None/Unknown||Difficulty:||Unknown|
|Test Case:||Blocked By:|
> commit 229323898b0809047b19b79c181085430cce9850 > Author: Ian Lynagh <firstname.lastname@example.org> > 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#.