Usage
  • 32 views
  • 18 downloads

Expression data flow graph: precise flow-sensitive pointer analysis for C programs

  • Author / Creator
    Thiessen, Rei
  • Pointer analysis is a program analysis that determines the memory locations pointed to by individual pointers. Imprecise pointer information is a major impediment to data-flow analyses and back-end optimizations that depend on pointer information. Most pointer analyses are based on a points-to abstraction, which is an abstraction of memory that partitions the conceptually infinite number of memory locations into a finite number of abstract objects. In a flow-sensitive pointer-analysis, a points-to relationship between abstract objects is computed at each program point. Our pointer analysis is based on another abstraction called the Expression Data Flow graph, which expresses the memory dependencies between expressions that appear in a program. This abstraction represents pointer information in a more compact and more precise way than a points-to abstraction. We present a flow-sensitive and field-sensitive algorithm that computes a precise Expression Data Flow graph of a program in a negligible amount of time.

  • Subjects / Keywords
  • Graduation date
    2011-11
  • Type of Item
    Thesis
  • Degree
    Master of Science
  • DOI
    https://doi.org/10.7939/R3NW5M
  • License
    This thesis is made available by the University of Alberta Libraries with permission of the copyright owner solely for non-commercial purposes. This thesis, or any portion thereof, may not otherwise be copied or reproduced without the written consent of the copyright owner, except to the extent permitted by Canadian copyright law.
  • Language
    English
  • Institution
    University of Alberta
  • Degree level
    Master's
  • Department
    • Department of Computing Science
  • Supervisor / co-supervisor and their department(s)
    • Amaral, José Nelson (Computing Science)
    • Lhoták, Ondřej (Computing Science)
  • Examining committee members and their departments
    • Hoover, James (Computing Science)
    • Cockburn, Bruce (Electrical and Computer Engineering)