-
-
Notifications
You must be signed in to change notification settings - Fork 655
[DO NOT MERGE] Implement PoC DFA engine for nullability and truthiness #21494
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Thanks for your pull request and interest in making D better, @rikkimax! We are looking forward to reviewing it, and you should be hearing from a maintainer soon.
Please see CONTRIBUTING.md for more information. If you have addressed all reviews or aren't sure how to proceed, don't hesitate to ping us with a simple comment. Bugzilla referencesYour PR doesn't reference any Bugzilla issue. If your PR contains non-trivial changes, please reference a Bugzilla issue or create a manual changelog. Testing this PR locallyIf you don't have a local development environment setup, you can use Digger to test this PR: dub run digger -- build "master + dmd#21494" |
c1f7ebf
to
f85972d
Compare
Ugh |
a4354e5
to
b741ece
Compare
The changes to foreachvar module will need to be considered separately. First, I need to confirm that it helps eliminate all memory leaks. |
Normally the CI runners will build dmd once as debug and then rebuild with release.
|
These timeouts appear on different Azure pipelines. As part of the test run there is a build of the druntime unittests with version=PRINTF that usually runs for a couple of seconds, but sometimes for 15-20 minutes. You can find it in the logs starting with "Testing printf" and then producing a wall of "_d_arraysetlength..." lines. Enable timestamps to see how slow it runs. |
More null deref:
Test that is ok, but will need DFA turned off for it:
Four of the other tests that are broken are a me to be fixed, and the timetrace test is once again needing its DFA specific output added. |
dmd/compiler/test/runnable/interpret.d Line 2406 in b91bb61
|
078636e
to
d33288f
Compare
I'm attempting to disable the tests:
If that fails I'll remove them. They are supposed to fail. But I need the CI to continue and if they exist it won't. |
a5e2aa1
to
f8aa4d5
Compare
Looks like I'm due for another rebase, BUT: I'm down to one report that I'd like to keep that isn't being emitted. After that its just rewrite the reporting, hope nothing else comes up and it should be more or less done. |
and an update to |
Yeah that gave it away that I need a rebase. |
scope (exit) | ||
{ | ||
if (result !is null) | ||
result.rvalue = exp.rvalue; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
presumably these changes can be done now to reduce the diff?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@@ -6367,7 +6371,7 @@ private extern (C++) final class ExpressionSemanticVisitor : Visitor | |||
{ | |||
setError(); | |||
} | |||
else | |||
else if (result !is null) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ditto
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Throwing the experimental fast DFA engine at CI to see what happens, this PR is not going to be merged can be ignored.