26.02.2014 13:28, Sven Barth пишет:
Am 26.02.2014 09:41, schrieb Sergei Gorelkin:
26.02.2014 12:09, Sven Barth пишет:
Hello together!
In context of Apple's recent security bug where a "goto fail;" at the wrong
place disabled
certificate checking or something along that lines I've thought whether it
would 1) be worthwhile to
extend FPC with the capability to detect such cases as well and 2) to see
whether it would be
currently feasible at all.
So, how hard would it be to let the compiler detect cases like these:
=== code begin ===
procedure Test1;
begin
Writeln('Test1');
Exit;
Writeln('Test1');
end;
procedure Test2;
label
stop;
begin
Writeln('Test2');
goto stop;
Writeln('Test2');
stop:
end;
=== code end ===
and of course potentially more complex ones...
Also would you think it would be worthwhile to spend time on this?
The definite assignment analysis ported by me four years ago
(http://bugs.freepascal.org/view.php?id=15523) detects all cases of unreachable
code, except
backward goto's. Everything but backward goto's is almost trivial, backward
goto's are more
complicated because they require multiple iterations over code tree, but are
certainly feasible.
Nice... does that code still work with current trunk?
Didn't test it, but should not be difficult to fix anyway.
How does it look in light of Florian's recent work on SSA? (though it's not yet
fully in trunk AFAIK)
They are probably two independent things. I've abandoned experiments with trying to use definite
assignment analysis to determine variable lifetime.
Regards,
Sergei
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel