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

Reply via email to