Ok.. assume this gets optimized to pointer even without const:
[pascal]function MyPoint(X,Y: Integer): TMyPoint;
begin
Result.X := X;
Result.Y := Y;
end; [/pascal]

But does compiler then recognize to not optimize this?

[pascal]function MyPoint(X,Y: Integer): TMyPoint;
begin
X:=X+10; // If it was pointer it would modify origin...
Result.X := X;
Result.Y := Y;
end;[/pascal]