Static Program Analysis via Dependence Graphs

Static Program Analysis via Dependence Graphs

1/28/99


Click here to start


Table of Contents

Static Program Analysis via Dependence Graphs

Outline

Outline

Program Slicing

Backward Slice

Backward Slice

Forward Slice

Forward Slice

Chop

Empty Chop

What Are Slices Useful For?

Examples of Specialization

Line-Character-Count Program

Character-Count Program

Line-Character-Count Program

Line-Count Program

Outline

Intraprocedural Slicing

Control Flow Graph

Control Flow Graph Vertices

Control Dependence Graph

Flow Dependence Graph

Program Dependence Graph (PDG)

Program Dependence Graph (PDG)

Backward Slice

Backward Slice (2)

Backward Slice (3)

Backward Slice (4)

Slice Extraction

Outline

Interprocedural Slicing

Interprocedural Slice

Interprocedural Slice

Interprocedural Slice

System Dependence Graph (SDG)

SDG for the Sum Program

Interprocedural Backward Slice

Interprocedural Backward Slice (2)

Interprocedural Backward Slice (3)

Interprocedural Backward Slice (4)

Interprocedural Backward Slice (5)

Interprocedural Backward Slice (6)

Matched-Parenthesis Path

Interprocedural Backward Slice (6)

Interprocedural Backward Slice (7)

Slice Extraction

Slice of the Sum Program

Outline

Non-Local Variables

Non-Local Variables

Backward Slice

Backward Slice

Non-Locals Translated to Parameters

Backward Slice

Data Predecessors

Data Predecessors

Parameters for Non-Locals Filtered Out

Filtered Data Predecessors

Outline

Pointer Analysis

Need for Pointer Analysis

Backwards Slice

Flow-Insensitive Points-To Analysis [Andersen 94, Shapiro & Horwitz 97]

Outline

DARPA SBIR Project

Outline

CodeSurfer Demo

Author: GrammaTech, Inc