[fpc-devel] Dangerous optimization in CASE..OF
Florian Klämpfl
florian at freepascal.org
Sun Jul 16 22:39:41 CEST 2017
Am 16.07.2017 um 22:15 schrieb Martok:
>
> However:
> ---------------------------
> {$mode objfpc}
> type
> TExplEnum = (a=1, b=3, c=5, d=7);
> TSubEnum = a..d;
> TEnArr = array[TSubEnum] of Byte;
>
> begin
> WriteLn('SizeOf(TEnArr) = ', SizeOf(TEnArr));
> WriteLn('Low(TEnArr) = ', Low(TEnArr), ', ', Ord(Low(TEnArr)));
> WriteLn('High(TEnArr) = ', High(TEnArr), ', ', Ord(High(TEnArr)));
> end.
> ---------------------------
> SizeOf(TEnArr) = 7
> Low(TEnArr) = a, 1
> High(TEnArr) = d, 7
> ---------------------------
>
> That difference was unexpected. At least for me.
Indeed, this is a bug. IMO the declaration of TSubEnum should not be allowed.
More information about the fpc-devel
mailing list