Effects of Pointers on Data Dependences
Loading...
Author(s)
Advisor(s)
Editor(s)
Collections
Supplementary to:
Permanent Link
Abstract
Data dependences, which relate statements that compute data value to
statements that use those values, are useful for automating a variety of
program-comprehension-related activities, such as reverse engineering,
impact analysis, and debugging. Unfortunately, data dependences are
difficult to compute and understand in the presence of commonly-used
language features such as pointers, arrays, and structures. To facilitate
the comprehension of data dependences in programs that use such features,
we define a technique for computing and classifying data dependences that
takes into account the complexities introduced by specific language
constructs. The classification that we present is finer-grained than
previously proposed classification. Moreover, unlike previous work, we
present empirical results that illustrate the distribution of data
dependences for a set of C subjects. We also present a potential application
for the proposed classification: program slicing. We propose a technique
that allows for computing slices based on data-dependence types. This
technique facilitates the use of slicing for understanding a program because
a user can either incrementally augment a slice by incorporating data
dependences based on their relevance, or focus on specific kinds of
dependences. Finally, we present a case study that shows how the incremental
computation of slices can (1) highlight subtle data dependences within a
program, and (2) provide useful information about those dependences.
Sponsor
Date
2000
Extent
300900 bytes
Resource Type
Text
Resource Subtype
Technical Report