Ticket #7383 (closed bug: fixed)
implement proper type promotion in compilation of C calls
| Reported by: | igloo | Owned by: | |
|---|---|---|---|
| Priority: | high | Milestone: | 7.6.2 |
| Component: | Compiler | Version: | 7.6.1 |
| Keywords: | Cc: | johan.tibell@… | |
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | None/Unknown | Difficulty: | Unknown |
| Test Case: | Blocked By: | ||
| Blocking: | Related Tickets: | 7684 |
Description
> 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#.
Attachments
Change History
Note: See
TracTickets for help on using
tickets.

