Evicted Variables and the Interaction of Global Register
Allocation and Symbolic Debugging
A. Adl-Tabatabai and T. Gross, "Evicted Variables and the Interaction
of Global Register Allocation and Symbolic Debugging", Proc. 20th
POPL Conf., January, 1993, 371-383.
A symbolic debugger allows a user to display the values of program
variables at a breakpoint. However, problems arise if the program is
translated by an optimizing compiler. This paper addresses the
effects of global register allocation and assignment: a register
assigned to a variable V may not be holding V's value at a breakpoint
since the register can also be assigned to other variables. We define
the problem of determining whether a variable is in its assigned
register as the residence problem. Prior work on debugging
of optimized code has focused on the currency problem; detecting
whether a variable's run-time value is the expected value.
Determining residence is a more serious problem than currency
detection. We present a data flow algorithm that accurately computes
a variable's residency, by determining when a variable becomes
evicted from its register. We measure the effectiveness of
different approaches to determine variable residence for three C
programs from the SPEC suite.
Other papers .
Ali's home page.