ACM Home Page
Please provide us with feedback. Feedback
Unification-based pointer analysis with directional assignments
Full text PdfPdf (553 KB)
Source Conference on Programming Language Design and Implementation archive
Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation table of contents
Vancouver, British Columbia, Canada
Pages: 35 - 46  
Year of Publication: 2000
ISBN:1-58113-199-2
Also published in ...
Author
Manuvir Das  Microsoft Research, Redmond, WA
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
SIGSOFT: ACM Special Interest Group on Software Engineering
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 11,   Downloads (12 Months): 102,   Citation Count: 84
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/349299.349309
What is a DOI?

ABSTRACT

This paper describes a new algorithm for flow and context insensitive pointer analysis of C programs. Our studies show that the most common use of pointers in C programs is in passing the addresses of composite objects or updateable values as arguments to procedures. Therefore, we have designed a low-cost algorithm that handles this common case accurately. In terms of both precision and running time, this algorithm lies between Steensgaard's algorithm, which treats assignments bi-directionally using unification, and Andersen's algorithm, which treats assignments directionally using subtyping. Our “one level flow” algorithm uses a restricted form of subtyping to avoid unification of symbols at the top levels of pointer chains in the points-to graph, while using unification elsewhere in the graph. The method scales easily to large programs. For instance, we are able to analyze a 1.4 MLOC (million lines of code) program in two minutes, using less than 200MB of memory. At the same time, the precision of our algorithm is very close to that of Andersen's algorithm. On all of the integer benchmark programs from SPEC95, the one level flow algorithm and Andersen's algorithm produce either identical or essentially identical points-to information. Therefore, we claim that our algorithm provides a method for obtaining precise flow-insensitive points-to information for large C programs.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

AG98
 
And94
L. Andersen. Program analysis and specialization for the C programming language. PhD thesis, DIKU, University of Copenhagen, May 1994. DIKU report 94/19.
 
AST
AST Toolkit documentation. //research. microsoft, corn /sbt / ast t o olkit / ast. htm
CBC93
EGH94
FFSA98
 
FRD99
M. FShndrich, J. Rehof, and M. Das. From polymorphic subtyping to CFL Reachability: Context-sensitive flow analysis using instantiation constraints. Technical Report MSR-TR-99- 84, Microsoft Research, Redmond, WA, November 1999.
FRD00
GH96
 
Hen91
 
Hen92
Fritz Henglein. Simple closure analysis. DIKU Semantics Report D-193, DIKU, University of Copenhagen, Universitetsparken 1, DK-2100 Copenhagen East, Denmark, March 1992.
LH99
LR92
RC00
RFT99
SFA00
 
SH97a
SH97b
SRW99
 
Ste96a
Ste96b
 
Tar83
WL95
YHR99

CITED BY  84