Schleifen werden so optimiert, damit die Zählvariable immer gegen 0 zählt.
Die Optimierung kann die Reihenfolge ändern, in der Anweisungen ausgeführt werden.
Normalerweise nur, wenn keine Abhängigkeit zwischen den Anweisungen besteht.
Ich würde als erstes alle Warnungen anschalten und prüfen.

Vieleicht werden bestimmte Zeilen im Debug-Build nicht übersetzt.
Delphi-Quellcode:
{$ifdef debug}
// mach schwarz
{$else}
// mach bunt
{$endif}
{$ifdef release}
// mach bunt
{$else}
// mach schwarz
{$endif}