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

wants to merge 2 commits into
base: trunk


Copy link

commented Apr 12, 2019

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.

Available_regs constant propagation
Reg_with_debug_info and Reg_availability_set improvements

This comment has been minimized.

Copy link

commented Apr 15, 2019

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
2 participants
You can’t perform that action at this time.