Nonresident and Endangered Variables: The Effects of Code Generation Optimizations on Symbolic Debugging
Abstract
Instruction scheduling and register allocation/assignment are two optimizations that are commonly used in the code generation phase of modern compilers. These optimizations are important for processors with exposed instruction-level parallelism and large register files. These optimizations, however, impact the task of the symbolic debugger which attempts to present to the user a source-level view of program execution. The debuggers for most systems today usually punt the issue of optimized code, either by turning optimizations off whenever the user asks for source level debugging, or by not detecting the effects of optimizations on the source-level state. To not mislead the user, the debugger must provide feedback of the effects of optimizations. In this paper, we investigate the effects of instruction scheduling and global register allocation/assignment on symbolic debugging and present approaches that a debugger can take.
Document Details
- Document Type
- Technical Report
- Publication Date
- Dec 01, 1992
- Accession Number
- ADA263149
Entities
People
- Ali-reza Adl-tabatabai
Organizations
- Carnegie Institute of Technology