Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   [D2006] Bug im Optimizer? (https://www.delphipraxis.net/130109-%5Bd2006%5D-bug-im-optimizer.html)

gsh 3. Mär 2009 16:03


[D2006] Bug im Optimizer?
 
Hi

Gestern bin ich beim Programmieren auf glaube ich einen Bug im Optimizer gestossen. Heute habe ich ihn mit "einfacheren" Code reproduzieren können.
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  txt : String;
begin
  txt := 'LALA';
  if txt = 'LALA' then
  begin
    exit;
  end;
  ShowMessage('LALA');
end;
Man sieht dies gut, weil kein blauer Punkt auf der Seite von exit auftaucht. Man kann dort auch keinen Haltepunkt setzten. Das beste an der Sache ist aber das es trotzdem funktioniert!
Wenn ich vor dem exit z.b. einen sleep(0) befehl einfüge dann werden plötzlich die blauen punkte auf der Seite angezeigt und ich kann auf das exit auch debuggen.

Könnt ihr das auch reproduzieren?

himitsu 3. Mär 2009 16:37

Re: [D2006] Bug im Optimizer?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die Codeoptimierung hat nur den Verglech "umgedreht", das Jump vom Exit wegoptimiert und das Jump vom If-Then dafür mißbraucht ... heißt, das EXIT ist jetzt für den Debugger in der selben Zeile wie If-Then und hat daher keinen eigenen Haltepunkt.

gsh 3. Mär 2009 18:04

Re: [D2006] Bug im Optimizer?
 
Zitat:

Zitat von himitsu
Die Codeoptimierung hat nur den Verglech "umgedreht", das Jump vom Exit wegoptimiert und das Jump vom If-Then dafür mißbraucht ... heißt, das EXIT ist jetzt für den Debugger in der selben Zeile wie If-Then und hat daher keinen eigenen Haltepunkt.

Danke das klingt einleuchtend. Delphi optimiert einfach zu gut :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz