{ %OPT=-Ooloopunroll -Sg }
{$mode objfpc}

uses
  sysutils;

var
  c,i : Integer;


function f1 : Integer;
  begin
    for Result:=1 to 2 do
      if (i=1234) and (Result=2) then
        Exit;
  end;


function f2 : Integer;
  begin
    for Result:=1 to 2 do
      if (i=1234) and (Result=2) then
        Break;
  end;

function f3 : Integer;
  label
    Stop;
  begin
    for Result:=1 to 2 do
      if (i=1234) and (Result=2) then
        Goto Stop;
  Stop:
  end;

function f4 : Integer;
  begin
    Result:=-1;
    for c:=1 to 2 do
      if (i=1234) and (Result=2) then
        Raise Exception.Create('Test');
  end;

begin
  i:=1234;
  if f1<>2 then
    halt(1);
  if f2<>2 then
    halt(1);
  if f3<>2 then
    halt(1);
  try
    f4;
  except
    if c<>2 then
      halt(1);
  end;
  writeln('ok');
end.