A Static Heap Analysis for Shape and Connectivity: Unified Memory Analysis: The Base Framework

Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4382)


Modeling the evolution of the state of program memory during program execution is critical to many parallelization techniques. Current memory analysis techniques either provide very accurate information but run prohibitively slowly or produce very conservative results. An approach based on abstract interpretation is presented for analyzing programs at compile time, which can accurately determine many important program properties such as aliasing, logical data structures and shape. These properties are known to be critical for transforming a single threaded program into a version that can be run on multiple execution units in parallel. The analysis is shown to be of polynomial complexity in the size of the memory heap. Experimental results for benchmarks in the Jolden suite are given. These results show that in practice the analysis method is efficient and is capable of accurately determining shape information in programs that create and manipulate complex data structures.


Loop Iteration Abstract Domain List Node Parallelization Technique Layout Type 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Cahoon, B., McKinley, K.S.: Data flow analysis for software prefetching linked data structures in Java. In: PACT (2001)Google Scholar
  2. 2.
    Chase, D.R., Wegman, M.N., Zadeck, F.K.: Analysis of pointers and structures. In: PLDI (1990)Google Scholar
  3. 3.
    Deutsch, A.: Interprocedural may-alias analysis for pointers: Beyond k-limiting. In: PLDI (1994)Google Scholar
  4. 4.
    Ghiya, R., Hendren, L.J.: Is it a tree, a dag, or a cyclic graph? A shape analysis for heap-directed pointers in C. In: POPL (1996)Google Scholar
  5. 5.
    Ghiya, R., Hendren, L.J.: Putting pointer analysis to work. In: POPL (1998)Google Scholar
  6. 6.
    Ghiya, R., Hendren, L.J., Zhu, Y.: Detecting parallelism in C programs with recursive darta structures. In: Koskimies, K. (ed.) CC 1998 and ETAPS 1998. LNCS, vol. 1383, Springer, Heidelberg (1998)CrossRefGoogle Scholar
  7. 7.
    Hackett, B., Rugina, R.: Region-based shape analysis with tracked locations. In: POPL (2005)Google Scholar
  8. 8.
    Hendren, L.J., Nicolau, A.: Parallelizing programs with recursive data structures. IEEE TPDS 1(1) (1990)Google Scholar
  9. 9.
    Jones, N.D., Muchnick, S.S.: Flow analysis and optimization of lisp-like structures. In: POPL (1979)Google Scholar
  10. 10.
    Lattner, C., Adve, V.: Data Structure Analysis: An Efficient Context-Sensitive Heap Analysis. Tech. Report UIUCDCS-R-2003-2340, Computer Science Dept., Univ. of Illinois at Urbana-Champaign (Apr. 2003)Google Scholar
  11. 11.
    Lattner, C., Adve, V.: LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In: CGO (2004)Google Scholar
  12. 12.
    Lev-Ami, T., Sagiv, S.: TVLA: A system for implementing static analyses. In: Palsberg, J. (ed.) SAS 2000. LNCS, vol. 1824, Springer, Heidelberg (2000)Google Scholar
  13. 13.
    Marron, M., Kapur, D., Stefanovic, D., Hermenegildo, M.: Unified memory analysis. Tech. Rep. TR-CS-2006-06, University of New Mexico (Apr. 2006), Available at
  14. 14.
    Rinetzky, N., Sagiv, M., Yahav, E.: Interprocedural shape analysis for cutpoint-free programs. In: Hankin, C., Siveroni, I. (eds.) SAS 2005. LNCS, vol. 3672, Springer, Heidelberg (2005)CrossRefGoogle Scholar
  15. 15.
    Rugina, R., Rinard, M.C.: Automatic parallelization of divide and conquer algorithms. In: PPOPP (1999)Google Scholar
  16. 16.
    Sagiv, S., Reps, T.W., Wilhelm, R.: Solving shape-analysis problems in languages with destructive updating. In: POPL (1996)Google Scholar
  17. 17.
    Sagiv, S., Reps, T.W., Wilhelm, R.: Parametric shape analysis via 3-valued logic. In: POPL (1999)Google Scholar
  18. 18.
    Vallée-Rai, R., et al.: Soot - a Java optimization framework. In: CASCON (1999),
  19. 19.
    Wilson, R.P., Lam, M.S.: Efficient context-sensitive pointer analysis for C programs. In: PLDI (1995)Google Scholar
  20. 20.
    Yahav, E., Ramalingam, G.: Verifying safety properties using separation and heterogeneous abstractions. In: PLDI (2004)Google Scholar

Copyright information

© Springer Berlin Heidelberg 2007

Authors and Affiliations

  1. 1.University of New Mexico, Albuquerque, NM 87131USA

Personalised recommendations