-
Notifications
You must be signed in to change notification settings - Fork 75
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
Implement liveness computation #105
Conversation
The current version seems to work, but I am not happy about generating an entire new I haven't yet written extensive tests, but I think it makes some sort of sense to go ahead with the extensions to rustc to produce the new facts so as to have some sort of ability to generate input data. Additionally, I am unsure how to handle a possible off by one situation when doing CFG traversal. In particular, is there a difference between considering a variable as dead or alive in the point where the assignment ("death") happens? I am even unsure of what I am doing now, but I think the correct way would be to have the variable die after assignment, while being alive at the assignment, but I don't know enough about Miri to know if this ever becomes a problem. If calculations of values used in assignments always happens in a point before the assignment itself both variants should be equivalent, right? Or are the points mapped to actual Rust lines of code? |
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.
I think everything up to this point looks good, IIRC. (I didn't do a detailed re-read.) As we noted elsewhere, creating a new relation to invert the CFG is just how datafrog works -- we need to re-index by the reverse edge, essentially.
This is marked WIP again as I might as well roll the entire region logic into this PR as per #104. |
Also: add .DS_Store to .gitignore (sorry, Mac user), and a *very* simple shell script for regneerating facts because I got tired of doing it by hand.
This is a work in progress on issue #104.
Sorry for the poorly named branch; I started it to fix a silly compiler warning and ended up using it for the implementation.