[fpc-devel] Unreachable code warnings
Daniël Mantione
daniel.mantione at freepascal.org
Sun Oct 14 19:56:47 CEST 2007
Op Sun, 14 Oct 2007, schreef Micha Nelissen:
> Hi,
>
> I want to bring up the warning of unreachable code. If one is
> implementing code according to some spec, e.g. RFC, or what else, it
> occurs that that requires a sanity check on user input. If it now
> happens that the type of variable by accident guarantees that this is
> true; this is fine, the compiler might optimize the check away. The
> compiler should not give a warning though IMHO, because the check is
> necessary according to spec, and it might become necessary if someone
> decides to change the type of the variable being checked to have a wider
> range. Furthermore, the warning is not suppressible.
You mean this:
var b:byte;
f:file;
begin
{...}
blockread(f,b,sizeof(b))l
if (b<0) or (b>255) then
begin
writeln('Error: Invalid value');
halt(255);
end;
{...}
end;
IMO the compiler in the case above totally correct to let you know the
error condition can never occur. Even if a specification says 255 is the
maximum, the code is totally bogus.
It is justified to warn, since in some cases an error situation can occur
but the way the check is written causes a dead code check. We found a few
of these in the compiler sources.
Daniël
More information about the fpc-devel
mailing list