AHCC widens a char parameter to its 16 bit equivalent before pushing.
Hmm if AHCC does something like ext.w d0; move.w d0,-(sp) it breaks PureC ABI, doesn't it? I've just checked it, move.b d0,-(sp) stores char value and then reserve empty space, not vice versa.
I consider the way Pure C behaves as a bug (or at least a mistake).
To me it looks like neat optimization and taking advantage of m68k CPU feature ;-)
--
MiKRO / Mystic Bytes