Automatic generation of bit-vector analyses using OpenAnalysis
Date
2006
Authors
Hovland, Paul, author
Strout, Michelle, author
Behere, Shweta, author
Journal Title
Journal ISSN
Volume Title
Abstract
Effective program analysis is essential for program optimization, program understanding and error detection. Classic data-flow analysis techniques assume only scalar variables within a program. However, real programs consist of pointer usage, structures and arrays. One approach is to lower the higher-level semantics involving structures and arrays to a representation that has only scalar temporaries and accesses to memory. A conservative analysis assumption would be that all accesses to memory possibly overlap. Language-specific transformations must be performed on higher-level representations; therefore the lowering approach is not always applicable. Our aim is to effectively analyze programs containing aliases, arrays and other complex structures at a higher semantic level, while still using data-flow analysis specifications for scalars. In our approach, we describe the data-flow analysis specification in a set-based specification language, and automatically generate an analysis implementation that uses aliasing information to obtain precise dataflow analysis results. We generate the analysis implementations for the OpenAnalysis(OA) framework, so that they are language independent. OA is an open source analysis toolkit that separates program analysis from program representation. OA can be coupled with any imperative or imperative-based object-oriented programming language, by implementing various abstract interfaces. Thus, our data-flow analysis implementations can be used with any compiler infrastructure that has implemented an OA abstract interface. We currently limit our scope to separable bit-vector analyses. Future work includes extending the implementation generation technique to any domain specific data-flow analysis.
Description
Rights Access
Subject
data-flow analysis
bit-vector analysis
aliases
program analysis