I found a difference between how return value in FPC 3.2.2 vs 3.3.1.
Let's say we have this two functions:
function F1(A: SizeUInt; B: SizeUInt): SizeUInt;assembler;nostackframe;
asm
mov Result,0
end;
And:
function F1(A: SizeUInt; B: SizeUInt): SizeUInt;assembler;
asm
mov Result,0
end;
The thing I discovered in FPC 3.3.1 is that the first function return result via rax, the second function use stack. In FPC 3.2.2 both functions use rax.
The question is why this behavior was changed? Isn't returning through stack is less performant?