MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Symbolic bounds analysis of pointers, array indices, and accessed memory regions (2000) [78 citations — 13 self]

Download:
Download as a PDF | Download as a PS
by Radu Rugina, Martin Rinard
http://www.cag.lcs.mit.edu/~rugina/papers/pldi00.ps
Add To MetaCart

Abstract:

This paper presents a novel framework for the symbolic bounds analysis of pointers, array indices, and accessed memory regions. Our framework formulates each analysis problem as a system of inequality constraints between symbolic bound polynomials. It then reduces the constraint system to a linear program. The solution to the linear program provides symbolic lower and upper bounds for the values of pointer and array index variables and for the regions of memory that each statement and procedure accesses. This approach eliminates fundamental problems associated with applying standard fixed-point approaches to symbolic analysis problems. Experimental results from our implemented compiler show that the analysis can solve several important problems, including static race detection, automatic parallelization, static detection of array bounds violations, elimination of array bounds checks, and reduction of the number of bits used to store computed values.

Citations

639 Efficiently Computing Static Single Assignment Form and the Control Dependence Graph – Cytron, Ferrante, et al. - 1991
628 Eiffel: The Language – Meyer - 1991
441 Optimizing Supercompilers for Supercomputers – Wolfe - 1989
415 Points-to analysis in almost linear time – Steensgaard - 1996
352 The omega test: a fast and practical integer programming algorithm for dependence analysis – Pugh - 1991
344 Dependence Analysis for Supercomputing – Banerjee - 1988
339 Effective context-sensitive pointer analysis for C programs – Wilson, Lam - 1995
318 Analysis of pointers and structures – Chase, Wegman, et al. - 1990
316 Compiling Fortran D for MIMD distributed-memory machines – Hiranandani, Kennedy, et al. - 1992
310 Parametric shape analysis via 3-valued logic – Sagiv, Reps, et al.
305 Principles of Program Analysis – Nielson, Nielson, et al. - 1999
299 Cilk: An efficient multithreaded runtime system – Blumofe, Joerg, et al. - 1995
270 Extended static checking for Java – Flanagan, Leino, et al. - 2002
256 Enforcing high-level protocols in low-level software – Deline, Fähndrich - 2001
250 Extended static checking – Detlefs, Leino, et al. - 1998
249 Solving shape-analysis problems in languages with destructive updating – Sagiv, Reps, et al. - 1998
224 A First Step towards Automated Detection of Buffer Overrun Vulnerabilities – Wagner, Foster, et al. - 2000
216 The design and implementation of a certifying compiler – Necula, Lee - 1998
195 An implementation of interprocedural bounded regular section analysis – Havlak, Kennedy - 1991
155 Type-based race detection for Java – Flanagan, Freund - 2000
155 Detecting conflicts between structure accesses – Larus, Hilfinger - 1988
152 Is it a Tree, a DAG, or a Cyclic Graph? A shape analysis for heap-directed pointers in C – Ghiya, Hendren - 1996
146 Efficient detection of all pointer and array access errors – Austin, Breach, et al. - 1994
141 Eliminating Array Bound Checking Through Dependent Types – Xi, Pfenning - 1998
137 Practical dependence testing – Goff, Kennedy, et al. - 1991
135 Detecting parallelism in C programs with recursive data structures – Ghiya, Hendren, et al. - 1998
132 Region-based memory management in cyclone – Grossman, Morrisett, et al. - 2002
124 The implementation of the Cilk-5 multithreaded language – Frigo, Leiserson, et al. - 1998
117 Pointer Analysis for Multithreaded Programs – Rugina, Rinard - 1999
117 A parameterized type system for race-free Java programs – Boyapati, Rinard - 2001
110 Efficient and exact data dependence analysis – Maydan, Hennessy, et al.
106 The SUIF compiler for scalable parallel machines – Amarasinghe, Anderson, et al. - 1995
106 Statically detecting likely buffer overflow vulnerabilities – Larochelle, Evans - 2001
100 Direct parallelization of CALL statements – Triolet, Irigoin, et al. - 1986
98 Efficient and precise datarace detection for multithreaded object-oriented programs – Choi, Lee, et al. - 2002
92 A type and effect system for atomicity – Flanagan, Qadeer - 2003
86 Eliminating array bounds checks on demand – Bodik, Gupta, et al. - 2002
86 Abstract Debugging of Higher-Order Imperative Languages – Bourdoncle - 1993
84 Detecting coarse-grain parallelism using an interprocedural parallelizing compiler – Hall, Amarasinghe, et al. - 1995
83 Types for Safe Locking – Flanagan, Abadi - 1999
77 A technique for summarizing data access and its use in parallelism enhancing transformations – Balasundaram, Kennedy - 1989
76 Recursion Leads To Automatic Variable Blocking For Dense Linear-algebra Algorithms – Gustavson - 1997
76 Compiler Analysis of the Value Ranges for Variables – Harrison - 1977
71 Detecting Data Races in Cilk Programs that Use Locks – Cheng, Feng - 1998
68 Auto-blocking matrix multiplication or tracking blas3 performance from source code – Frens, Wise - 1997
63 Detecting Access Anomalies in Programs with Critical Sections – Dinning, Schonberg - 1991
63 Elimination of redundant array subscript range checks – Kolte, Wolfe - 1995
63 Optimizing array bounds checks using flow analysis – Gupta - 1993
63 On-the-fly detection of data races for programs with nested fork-join parallelism – Mellor-Crummey - 1991
62 Bitwidth analysis with application to silicon compilation – Stephenson, Babb, et al. - 2000