0% found this document useful (0 votes)
36 views13 pages

Data-Flow Analysis - Part 1: Y.N. Srikant

This document discusses data-flow analysis techniques used to derive information about how data flows through a program during execution. It specifically describes the reaching definitions problem, which analyzes which variable definitions may reach each point in the program. The analysis represents the set of possible program states at each point compactly using a finite domain of data-flow values. It computes an over-approximation of the reaching definitions by iterating to a fixed point of data-flow equations relating the IN and OUT sets of each program point.

Uploaded by

Dilip TheLip
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views13 pages

Data-Flow Analysis - Part 1: Y.N. Srikant

This document discusses data-flow analysis techniques used to derive information about how data flows through a program during execution. It specifically describes the reaching definitions problem, which analyzes which variable definitions may reach each point in the program. The analysis represents the set of possible program states at each point compactly using a finite domain of data-flow values. It computes an over-approximation of the reaching definitions by iterating to a fixed point of data-flow equations relating the IN and OUT sets of each program point.

Uploaded by

Dilip TheLip
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

Data-ow Analysis - Part 1

Y.N. Srikant
Department of Computer Science Indian Institute of Science Bangalore 560 012

NPTEL Course on Compiler Design

Y.N. Srikant

Data-ow Analysis

Data-ow analysis
These are techniques that derive information about the ow of data along program execution paths An execution path (or path) from point p1 to point pn is a sequence of points p1 , p2 , ..., pn such that for each i = 1, 2, ..., n 1, either
1

pi is the point immediately preceding a statement and pi +1 is the point immediately following that same statement, or pi is the end of some block and pi +1 is the beginning of a successor block

In general, there is an innite number of paths through a program and there is no bound on the length of a path Program analyses summarize all possible program states that can occur at a point in the program with a nite set of facts No analysis is necessarily a perfect representation of the state
Y.N. Srikant Data-ow Analysis

Uses of Data-ow Analysis

Program debugging
Which are the denitions (of variables) that may reach a program point? These are the reaching denitions

Program optimizations
Constant folding Copy propagation Common sub-expression elimination etc.

Y.N. Srikant

Data-ow Analysis

Data-Flow Analysis Schema


A data-ow value for a program point represents an abstraction of the set of all possible program states that can be observed for that point The set of all possible data-ow values is the domain for the application under consideration
Example: for the reaching denitions problem, the domain of data-ow values is the set of all subsets of of denitions in the program A particular data-ow value is a set of denitions

IN [s] and OUT [s]: data-ow values before and after each statement s The data-ow problem is to nd a solution to a set of constraints on IN [s] and OUT [s], for all statements s

Y.N. Srikant

Data-ow Analysis

Data-Flow Analysis Schema (2)


Two kinds of constraints
Those based on the semantics of statements (transfer functions) Those based on ow of control

A DFA schema consists of


A control-ow graph A direction of data-ow (forward or backward) A set of data-ow values A conuence operator (normally set union or intersection) Transfer functions for each block

We always compute safe estimates of data-ow values A decision or estimate is safe or conservative, if it never leads to a change in what the program computes (after the change) These safe values may be either subsets or supersets of actual values, based on the application
Y.N. Srikant Data-ow Analysis

The Reaching Denitions Problem


We kill a denition of a variable a, if between two points along the path, there is an assignment to a A denition d reaches a point p, if there is a path from the point immediately following d to p, such that d is not killed along that path Unambiguous and ambiguous denitions of a variable a := b+c (unambiguous denition of a) ... *p := d (ambiguous denition of a, if p may point to variables other than a as well; hence does not kill the above denition of a) ... a := k-m (unambiguous denition of a; kills the above denition of a)
Y.N. Srikant Data-ow Analysis

The Reaching Denitions Problem(2)

Sets of denitions constitute the domain of data-ow values We compute supersets of denitions as safe values It is safe to assume that a denition reaches a point, even if it does not. In the following example, we assume that both a=2 and a=4 reach the point after the complete if-then-else statement, even though the statement a=4 is not reached by control ow if (a==b) a=2; else if (a==b) a=4;

Y.N. Srikant

Data-ow Analysis

The Reaching Denitions Problem (3)


The data-ow equations (constraints) IN [B ] =
P is a predecessor of B

OUT [P ] (IN [B ] KILL[B ])

OUT [B ] = GEN [B ]

IN [B ] = , for all B (initialization only ) If some denitions reach B1 (entry), then IN [B1 ] is initialized to that set Forward ow DFA problem (since OUT [B ] is expressed in terms of IN [B ]), conuence operator is GEN [B ] = set of all denitions inside B that are visible immediately after the block - downwards exposed denitions KILL[B ] = union of the denitions in all the basic blocks of the ow graph, that are killed by individual statements in B
Y.N. Srikant Data-ow Analysis

Reaching Denitions Analysis: An Example - Pass 1

Y.N. Srikant

Data-ow Analysis

Reaching Denitions Analysis: An Example - Pass 2

Y.N. Srikant

Data-ow Analysis

Reaching Denitions Analysis: An Example - Final

Y.N. Srikant

Data-ow Analysis

An Iterative Algorithm for Computing Reaching Denitions


for each block B do { IN [B ] = ; OUT [B ] = GEN [B ]; } change = true; while change do { change = false; for each block B do { IN [B ] =
P a predecessor of B

OUT [P ];

oldout

= OUT [B ]; (IN [B ] KILL[B ]);

OUT [B ] = GEN [B ]

if (OUT [B ] = oldout ) change = true; } } GEN , KILL, IN , and OUT are all represented as bit vectors with one bit for each denition in the ow graph
Y.N. Srikant Data-ow Analysis

Reaching Denitions: Bit Vector Representation

Y.N. Srikant

Data-ow Analysis

You might also like