Skip to content
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

Available_regs, Reg_with_debug_info, Reg_availability_set etc. #8614

Closed
wants to merge 2 commits into from

Conversation

mshinwell
Copy link
Contributor

This patch allows Available_regs to track which registers hold which constants in addition to the values of which variables. New implementations are also provided of Reg_with_debug_info and Reg_availability_set. These two should be read by just looking at the files rather than the diffs.

This whole area, especially the notions of canonical and non-canonical register availability sets, is rather subtle. I think this new version of the code is a substantial improvement and it should be more obviously correct.

Some changes have been necessitated to Compute_ranges as a union operation is not provided on canonical availability sets. Concerned about the correctness of this part, I wrote a specification of a proof in a PDF document and @gretay-js has done the proof in z3.

I've tested all of this on the main gdb-names-gpr branch and everything appears to be ok. It would be nice in the future to try to add some more automated testing in this area (e.g. to make sure that all variables that should be visible in the debugger are visible)---although it's probably difficult.

@lthls @chambart Please could you two look at the various pieces of this, as you were the original reviewers of these files.

Reg_with_debug_info and Reg_availability_set improvements
@gretay-js
Copy link
Contributor

@mshinwell I made a mistake in the encoding. Here is a fixed version, proved with z3.

@mshinwell mshinwell closed this Mar 8, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants