I have the following:
unit foo;
{$mode objfpc}{$H+}
interface
uses
foobar;
function BitCnt(ABitmap: TBitBoard): Integer;
implementation
{$ifdef cpu386}
function BitCnt(ABitmap: TBitBoard): Integer; assembler; register; nostackframe;
asm
...
end;
{$else}
function BitCnt(ABitmap: TBitBoard): Integer; inline;
begin
...
end;This seems to compile and work as intended, no matter which of the two implementations I choose. But I wonder how this can work? I always thought that what is written in the interface section is authoritative. How can the compiler properly use this unit and call the function when the implementation actually implements a completely different calling convention (inline) than the one that is declared in the interface section?
Bernd
