On 24/08/2012 12:04, Jonas Maebe wrote:
Martin wrote on Fri, 24 Aug 2012:
On 08/08/2012 15:37, Jonas Maebe wrote:
Martin wrote on Wed, 08 Aug 2012:
Out of curiosity. Is there an optimization like this
[removing calculation/load of unused parameters]
No.
Are you sure? It seems the compiler disagrees with you.
I tested with 2.7.1 (updated yesterday):
function Foo(s:string): string;
begin
Result := s;
Form1.Caption := s;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//DebugLn(['abc']);
//DebugLn('abc');
DebugLn(foo('abc'));
end;
The assembler for FormCreate (no optimization used). It even omits
the call to "Foo"...
How is debugln defined?
The above takes the first of the overloaded.
All bodies are empty.
procedure DebugLn(const s: string = ''); inline; overload;
procedure DebugLn(Args: array of const); {inline;} overload;
procedure DebugLn(const S: String; Args: array of const); {inline;}
overload;// similar to Format(s,Args)
procedure DebugLn(const s1, s2: string; const s3: string = '';
const s4: string = ''; const s5: string = ''; const
s6: string = '';
const s7: string = ''; const s8: string = ''; const
s9: string = '';
const s10: string = ''; const s11: string = ''; const
s12: string = '';
const s13: string = ''; const s14: string = ''; const
s15: string = '';
const s16: string = ''; const s17: string = ''; const
s18: string = ''); inline; overload;
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel