Подтвердить что ты не робот

Не удается ли этот код построить из-за ошибки компилятора?

Построение, а не просто компиляция, с ошибкой внутреннего компилятора при использовании Delphi 6, если оптимизация включена. Использование задания вместо inc() работает. Это ошибка компилятора? Странные структуры записей связаны с тем, что исходный код был сведен к этому минимальному примеру.

program Project1;

type
  requestCountsType = array[0..1] of
    record
    processed: int64;
    end;

  talliestype = record
    counts: requestCountsType;
    end;

  healthtype = record
    charged: talliestype;
    end;

procedure computeProcessed(const h: healthtype; var requests, bytesin, bytesout: int64);
var i: byte;
begin
requests := 0; bytesin := 0; bytesout := 0;
for i := 0 to 1 do
  begin
  inc(requests, h.charged.counts[i].processed); // including this generates compiler internal error C1405 when optimization is on
  // requests := requests + h.charged.counts[i].processed; // this works
  end;
end;

var ht: healthtype; var r, b1, b2: int64;

begin
computeProcessed(ht, r, b1, b2);
end.
4b9b3361

Ответ 1

См. отчет об ошибке # 109124. Я могу подтвердить проблему в Delphi XE; в отчете об ошибке говорится, что он был исправлен в Delphi XE4.