The documentation (http://www.freepascal.org/docs-html/ref/refsu56.html) says "A constant argument is passed by reference if its size is larger than a pointer. It is passed by value if the size is equal or is less then the size of a native pointer."
I have a packed record type defined which contains two 64-bit integers (so it's obviously bigger than a pointer). I wrote a routine that takes one of these records as a constant argument (eg., "procedure Doit(const rec : TMyRecord);") I compiled it and looked at the assembly being generated, and sure enough it was being passed by reference, just as the documentation says. However, if the procedure is declared as "cdecl" the record itself (its contents) are copied onto the stack. Should the documentation be updated? Or is this incorrect behavior? Thanks, -SG -- This email is fiction. Any resemblance to actual events or persons living or dead is purely coincidental. Seth Grover sethdgrover[at]gmail[dot]com _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel