[fpc-devel] Debugging Loop Unroll Optimization

Ondrej Pokorny lazarus at kluug.net
Fri May 18 17:49:21 CEST 2018


On 18.05.2018 17:17, Marco van de Voort wrote:
> To keep in annoying detail mode:
>     for result:=0 to 3 do
>       if x(result) then
>         exit(result)
>
> ...is yet another case since the exit(result) could be taken as an explicit
> assignment of the loopvar to an location outside the loop, after which the
> loopvar scope ends.

It is a yet another case of what?

AFAICS the above code throws a compiler error: Illegal assignment to 
for-loop variable "$result" - and that is correct because you assign a 
value to a loop variable within a loop.

BTW. it's the same as:
function Test: Integer;
begin
   for Result := 1 to 10 do
     Exit(5);
end;

gives a compiler error as well, since you assign 5 to loop variable 
within a loop.

The Exit; (without argument) doesn't assign anything - it should just 
exit the current function without touching any of the variables.

Ondrej



More information about the fpc-devel mailing list