[fpc-devel] Data flow analysis (dfa) and "case ... of"
Martin
fpc at mfriebe.de
Thu Jun 29 14:26:46 CEST 2017
On 28/06/2017 20:03, Martok wrote:
> Interestingly, I just ran into "bad" code generation with exactly the properties
> discussed in this thread.
> Because every declared element is covered, the generated code for it ends up
> being a computed goto:
> and most importantly, not into any else statement.
No, it is not bad code generation.
It is exactly the expected result. At least that is what I understood
from previous mails in this thread, specifically (in the context of
out-of-range input):
> Jonas Maebe wrote:
>> That is why I said "If range checking is off there or disabled via an
>> explicit type cast, then the result is undefined by definition."
"undefined result" does include the possibility of a crash.
This is the same as accessing an
Array[enum] of foo;
if enum is out of range, then it may crash, or behave in any undefined way.
The only thing that could be added here is, that if dfa detects that all
enums are used in a case statement, and yet there is an "else", then it
should warn about "unreachable code".
More information about the fpc-devel
mailing list