[fpc-devel] Debugging Loop Unroll Optimization
    Ondrej Pokorny 
    lazarus at kluug.net
       
    Mon May 21 20:58:41 CEST 2018
    
    
  
On 21.05.2018 20:43, Florian Klämpfl wrote:
> What do you expect?
That it writes a sequence from 1 to 10 to console. Instead, it writes 10 
times "-1431655766".
> That it just works?
Please define what you understand with "it just works". (If you agree 
with me on the sequence from 1 to 10, my answer is yes.)
> If yes, what about
> program LoopUnrollTest;
> procedure Test;
> var
>    I: Integer;
>    procedure Test2;
>    begin
>      Writeln(I);
>      I:=1;
>    end;
> begin
>    for I := 1 to 10 do
>      Test2;
> end;
> begin
>    Test;
> end.
In this (your) case I don't expect anything - it is one of FPC's 
favorites "undefined behaviour" because as documented, it is not allowed 
to change the loop variable value within a for loop.
In my case (without the I:=1 assignment) I don't change the loop 
variable value - it is absolutely valid to read from it.
Ondrej
    
    
More information about the fpc-devel
mailing list