411
Interprocedural Data Flow Analysis Uday Khedker Department of Computer Science and Engineering, Indian Institute of Technology, Bombay October 2017

Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

  • Upload
    lamnhi

  • View
    240

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

Interprocedural Data Flow Analysis

Uday Khedker

Department of Computer Science and Engineering,

Indian Institute of Technology, Bombay

October 2017

Page 2: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

Part 1

About These Slides

Page 3: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: About These Slides 1/98

Copyright

These slides constitute the lecture notes for CS618 Program Analysis course atIIT Bombay and have been made available as teaching material accompanyingthe book:

• Uday Khedker, Amitabha Sanyal, and Bageshri Karkare.

(Indian edition published by Ane Books in 2013) Data Flow Analysis:

Theory and Practice. CRC Press (Taylor and Francis Group). 2009.

Apart from the above book, some slides are based on the material from thefollowing books

• S. S. Muchnick and N. D. Jones. Program Flow Analysis. Prentice HallInc. 1981.

These slides are being made available under GNU FDL v1.2 or later purely for

academic or research use.

Oct 2017 IIT Bombay

Page 4: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Outline 2/98

Outline

• Issues in interprocedural analysis

• Functional approach

• Classical call strings approach

• Value context based approach

Oct 2017 IIT Bombay

Page 5: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

Part 2

Issues in Interprocedural Analysis

Page 6: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 3/98

Interprocedural Analysis: Overview

• Extends the scope of data flow analysis across procedure boundaries

Incorporates the effects of

procedure calls in the caller procedures, and

calling contexts in the callee procedures

• Approaches :

Generic : Call strings approach, functional approach

Problem specific : Alias analysis, Points-to analysis, Partial

redundancy elimination, Constant propagation

Oct 2017 IIT Bombay

Page 7: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 4/98

Why Interprocedural Analysis?

• Answering questions about formal parameters and global variables:

Which variables are constant? Which variables aliased with each other? Which locations can a pointer variable point to?

• Answering questions about side effects of a procedure call:

Which variables are defined or used by a called procedure?(Could be local/global/formal variables)

• Most of the above questions may have a May or Must qualifier

Oct 2017 IIT Bombay

Page 8: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 5/98

Program Representation for Interprocedural Data FlowAnalysis: Call Multi-Graph

Smain

a + b

Call p

a ∗ b

Emain

Sp a ∗ b Sp

Call q

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Eq a ∗ b Eq

Call p

n4 d = c n4

Supergraphs of procedures

Oct 2017 IIT Bombay

Page 9: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 5/98

Program Representation for Interprocedural Data FlowAnalysis: Call Multi-Graph

Smain

a + b

Call p

a ∗ b

Emain

Sp a ∗ b Sp

Call q

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Eq a ∗ b Eq

Call p

n4 d = c n4

Supergraphs of procedures

main

Call multi-graph

Oct 2017 IIT Bombay

Page 10: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 5/98

Program Representation for Interprocedural Data FlowAnalysis: Call Multi-Graph

Smain

a + b

Call p

a ∗ b

Emain

Sp a ∗ b Sp

Call q

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Eq a ∗ b Eq

Call p

n4 d = c n4

Supergraphs of procedures

main

Call multi-graph

proc. p

Oct 2017 IIT Bombay

Page 11: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 5/98

Program Representation for Interprocedural Data FlowAnalysis: Call Multi-Graph

Smain

a + b

Call p

a ∗ b

Emain

Sp a ∗ b Sp

Call q

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Eq a ∗ b Eq

Call p

n4 d = c n4

Supergraphs of procedures

main

Call multi-graph

proc. p

proc. q

Oct 2017 IIT Bombay

Page 12: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 5/98

Program Representation for Interprocedural Data FlowAnalysis: Call Multi-Graph

Smain

a + b

Call p

a ∗ b

Emain

Sp a ∗ b Sp

Call q

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Eq a ∗ b Eq

Call p

n4 d = c n4

Supergraphs of procedures

main

Call multi-graph

proc. p

proc. q

Oct 2017 IIT Bombay

Page 13: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 5/98

Program Representation for Interprocedural Data FlowAnalysis: Call Multi-Graph

Smain

a + b

Call p

a ∗ b

Emain

Sp a ∗ b Sp

Call q

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Eq a ∗ b Eq

Call p

n4 d = c n4

Supergraphs of procedures

main

Call multi-graph

proc. p

proc. q

Oct 2017 IIT Bombay

Page 14: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 6/98

Program Representation for Interprocedural Data FlowAnalysis: Supergraph

Smain

a+ b

Call p

a ∗ b

Emain

Sp a ∗ b Sp

Call q

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Eq a ∗ b Eq

Call p

n4 d = c n4

Oct 2017 IIT Bombay

Page 15: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 6/98

Program Representation for Interprocedural Data FlowAnalysis: Supergraph

Smain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Emain

Sp a ∗ b Sp

C2 Call q C2

R2 Call q R2

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Eq a ∗ b Eq

C4 Call p C4

R4 Call p R4

n4 d = c n4

Oct 2017 IIT Bombay

Page 16: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 6/98

Program Representation for Interprocedural Data FlowAnalysis: Supergraph

Smain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Emain

Sp a ∗ b Sp

C2 Call q C2

R2 Call q R2

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Eq a ∗ b Eq

C4 Call p C4

R4 Call p R4

n4 d = c n4

Oct 2017 IIT Bombay

Page 17: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 6/98

Program Representation for Interprocedural Data FlowAnalysis: Supergraph

Smain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Emain

Sp a ∗ b Sp

C2 Call q C2

R2 Call q R2

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Eq a ∗ b Eq

C4 Call p C4

R4 Call p R4

n4 d = c n4

Oct 2017 IIT Bombay

Page 18: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 6/98

Program Representation for Interprocedural Data FlowAnalysis: Supergraph

Smain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Emain

Sp a ∗ b Sp

C2 Call q C2

R2 Call q R2

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Eq a ∗ b Eq

C4 Call p C4

R4 Call p R4

n4 d = c n4

Oct 2017 IIT Bombay

Page 19: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 6/98

Program Representation for Interprocedural Data FlowAnalysis: Supergraph

Smain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Emain

Sp a ∗ b Sp

C2 Call q C2

R2 Call q R2

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Eq a ∗ b Eq

C4 Call p C4

R4 Call p R4

n4 d = c n4

Oct 2017 IIT Bombay

Page 20: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 7/98

Top-down Vs. Bottom-up Interprocedural Analysis

• Bottom-up approach

Traverses the call graph bottom up

Computes a parameterized summary of each callee

Can be viewed as procedure inliningSummary is inlined at the all site, not the entire procedure body

• Top-down approach

Traverses the call graph top down

Needs to visit a procedure separately for every calling context

Can be viewed as procedure inlining

Oct 2017 IIT Bombay

Page 21: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 8/98

Top-down Vs. Bottom-up Interprocedural Analysis

Top-down Analysis for Available Expressions Analysis

Sp Sp

a ∗ b

Call q

Ep Ep

Sq Sq

a = ...

b + c

Eq Eq

Sr Sr

c ∗ d

Call q

Er Er

Oct 2017 IIT Bombay

Page 22: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 8/98

Top-down Vs. Bottom-up Interprocedural Analysis

Top-down Analysis for Available Expressions Analysis

Procedure q

needs to beprocessed

multiple times

Sp Sp

a ∗ b

Call q

Ep Ep

Sq Sq

a = ...

b + c

Eq Eq

Sr Sr

c ∗ d

Call q

Er Er

Expression b + c is available in procedure p

Expression a ∗ b is not available in procedure p

Oct 2017 IIT Bombay

Page 23: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 8/98

Top-down Vs. Bottom-up Interprocedural Analysis

Top-down Analysis for Available Expressions Analysis

Procedure q

needs to beprocessed

multiple times

Sp Sp

a ∗ b

Call q

Ep Ep

Sq Sq

a = ...

b + c

Eq Eq

Sr Sr

c ∗ d

Call q

Er Er

Expressions b + c and c ∗ d are available in procedure r

Oct 2017 IIT Bombay

Page 24: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 8/98

Top-down Vs. Bottom-up Interprocedural Analysis

Top-down Analysis for Available Expressions AnalysisBottom-Up Analysis for Available Expressions Analysis

Sp Sp

a ∗ b

Call q

Ep Ep

Sq Sq

a = ...

b + c

Eq Eq

Sr Sr

c ∗ d

Call q

Er Er

Oct 2017 IIT Bombay

Page 25: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 8/98

Top-down Vs. Bottom-up Interprocedural Analysis

Top-down Analysis for Available Expressions AnalysisBottom-Up Analysis for Available Expressions Analysis

Call isreplaced byproceduresummary

Sp Sp

a ∗ b

Gen:b + c

Kill:a ∗ b

Ep Ep

Sq Sq

a = ...

b + c

Eq Eq

Sr Sr

c ∗ d

Gen:b + c

Kill:a ∗ b

Er Er

Using procedure summary of g at call sites

Oct 2017 IIT Bombay

Page 26: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 8/98

Top-down Vs. Bottom-up Interprocedural Analysis

Top-down Analysis for Available Expressions AnalysisBottom-Up Analysis for Available Expressions Analysis

Call isreplaced byproceduresummary

Sp Sp

a ∗ b

Gen:b + c

Kill:a ∗ b

Ep Ep

Sq Sq

a = ...

b + c

Eq Eq

Sr Sr

c ∗ d

Gen:b + c

Kill:a ∗ b

Er Er

Expression b + c is available in procedure p

Expression a ∗ b is not available in procedure p

Oct 2017 IIT Bombay

Page 27: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 8/98

Top-down Vs. Bottom-up Interprocedural Analysis

Top-down Analysis for Available Expressions AnalysisBottom-Up Analysis for Available Expressions Analysis

Call isreplaced byproceduresummary

Sp Sp

a ∗ b

Gen:b + c

Kill:a ∗ b

Ep Ep

Sq Sq

a = ...

b + c

Eq Eq

Sr Sr

c ∗ d

Gen:b + c

Kill:a ∗ b

Er Er

Expressions b + c and c ∗ d are available in procedure r

Oct 2017 IIT Bombay

Page 28: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 9/98

Issues in Top-down Vs. Bottom-up Interprocedural Analysis

• Bottom-up approach

Compact representation

Information may depend on the calling context

• Top-down approach

Exponentially large number of calling contexts

Many contexts may have no effect on the procedure

Oct 2017 IIT Bombay

Page 29: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 10/98

Validity of Interprocedural Control Flow Paths

Smain

a + b

C1 Call p C1

R1 Call p R1

a ∗ b

Emain

Sp a ∗ b Sp

C2 Call q C2

R2 Call q R2

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Eq a ∗ b Eq

C4 Call p C4

R4 Call p R4

n4 d = c n4stack q : C2

p : C1

main

stack q : C2

p : C1

main

Interprocedurally valid control flow path

Oct 2017 IIT Bombay

Page 30: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 10/98

Validity of Interprocedural Control Flow Paths

Smain

a + b

C1 Call p C1

R1 Call p R1

a ∗ b

Emain

Sp a ∗ b Sp

C2 Call q C2

R2 Call q R2

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Eq a ∗ b Eq

C4 Call p C4

R4 Call p R4

n4 d = c n4stack q : C2

p : C1

main

stack q : C2

p : C1

main

Interprocedurally valid control flow path

Oct 2017 IIT Bombay

Page 31: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 10/98

Validity of Interprocedural Control Flow Paths

Smain

a + b

C1 Call p C1

R1 Call p R1

a ∗ b

Emain

Sp a ∗ b Sp

C2 Call q C2

R2 Call q R2

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Eq a ∗ b Eq

C4 Call p C4

R4 Call p R4

n4 d = c n4stack q : C2

p : C1

main

stack q : C2

p : C1

main

stack q : C2

p : C1

main

Interprocedurally valid control flow path

Oct 2017 IIT Bombay

Page 32: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 10/98

Validity of Interprocedural Control Flow Paths

Smain

a + b

C1 Call p C1

R1 Call p R1

a ∗ b

Emain

Sp a ∗ b Sp

C2 Call q C2

R2 Call q R2

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Eq a ∗ b Eq

C4 Call p C4

R4 Call p R4

n4 d = c n4stack q : C2

p : C1

main

stack q : C2

p : C1

main

stack q : C2

p : C1

main

×

stack q : C2

p : C1

main

Interprocedurally invalid control flow path

Oct 2017 IIT Bombay

Page 33: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 10/98

Validity of Interprocedural Control Flow Paths

Smain

a + b

C1 Call p C1

R1 Call p R1

a ∗ b

Emain

Sp a ∗ b Sp

C2 Call q C2

R2 Call q R2

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Eq a ∗ b Eq

C4 Call p C4

R4 Call p R4

n4 d = c n4stack q : C2

p : C1

main

stack q : C2

p : C1

main

stack q : C2

p : C1

main

×

stack q : C2

p : C1

main

××

stack q : C2

p : C1

main

Interprocedurally invalid control flow path

Oct 2017 IIT Bombay

Page 34: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 10/98

Validity of Interprocedural Control Flow Paths

Smain

a + b

C1 Call p C1

R1 Call p R1

a ∗ b

Emain

Sp a ∗ b Sp

C2 Call q C2

R2 Call q R2

Ep a ∗ b Ep

Sq a ∗ b Sq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Eq a ∗ b Eq

C4 Call p C4

R4 Call p R4

n4 d = c n4stack q : C2

p : C1

main

stack q : C2

p : C1

main

stack q : C2

p : C1

main

Interprocedurally valid control flow path

Oct 2017 IIT Bombay

Page 35: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 11/98

Soundness, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs to computesummary information along paths

Oct 2017 IIT Bombay

Page 36: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 11/98

Soundness, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs to computesummary information along paths

• Ensuring Soundness. All valid paths must be covered

Oct 2017 IIT Bombay

Page 37: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 11/98

Soundness, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs to computesummary information along paths

• Ensuring Soundness. All valid paths must be covered

A path which representslegal control flow

Oct 2017 IIT Bombay

Page 38: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 11/98

Soundness, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs to computesummary information along paths

• Ensuring Soundness. All valid paths must be covered

• Ensuring Precision . Only valid paths should be covered

A path which representslegal control flow

Oct 2017 IIT Bombay

Page 39: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 11/98

Soundness, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs to computesummary information along paths

• Ensuring Soundness. All valid paths must be covered

• Ensuring Precision . Only valid paths should be covered

A path which representslegal control flow

Subject to merging data flowvalues at shared program pointswithout creating invalid paths

Oct 2017 IIT Bombay

Page 40: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 11/98

Soundness, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs to computesummary information along paths

• Ensuring Soundness. All valid paths must be covered

• Ensuring Precision . Only valid paths should be covered

• Ensuring Efficiency. Only relevant valid paths should be covered

A path which representslegal control flow

Subject to merging data flowvalues at shared program pointswithout creating invalid paths

Oct 2017 IIT Bombay

Page 41: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 11/98

Soundness, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs to computesummary information along paths

• Ensuring Soundness. All valid paths must be covered

• Ensuring Precision . Only valid paths should be covered

• Ensuring Efficiency. Only relevant valid paths should be covered

A path which representslegal control flow

Subject to merging data flowvalues at shared program pointswithout creating invalid paths

A path which yieldsinformation that affectsthe summary information

Oct 2017 IIT Bombay

Page 42: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 12/98

Flow and Context Sensitivity

• Flow sensitive analysis:

Considers intraprocedurally valid paths

Oct 2017 IIT Bombay

Page 43: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 12/98

Flow and Context Sensitivity

• Flow sensitive analysis:

Considers intraprocedurally valid paths

• Context sensitive analysis:

Considers interprocedurally valid paths

Oct 2017 IIT Bombay

Page 44: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 12/98

Flow and Context Sensitivity

• Flow sensitive analysis:

Considers intraprocedurally valid paths

• Context sensitive analysis:

Considers interprocedurally valid paths

• For maximum statically attainable precision , analysis must be both flow

and context sensitive

Oct 2017 IIT Bombay

Page 45: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 12/98

Flow and Context Sensitivity

• Flow sensitive analysis:

Considers intraprocedurally valid paths

• Context sensitive analysis:

Considers interprocedurally valid paths

• For maximum statically attainable precision , analysis must be both flow

and context sensitive

MFP computation restricted to valid paths only

Oct 2017 IIT Bombay

Page 46: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 13/98

Context Sensitivity in Interprocedural Analysis

Sr

Er

Ss

Es

Ci

Ri

ci

St

Et

Cj

Rj

cj

x

x

x ′ = fr (x)

x ′

y

y

y ′ = fr (y)

y ′

fr

Oct 2017 IIT Bombay

Page 47: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 13/98

Context Sensitivity in Interprocedural Analysis

Sr

Er

Ss

Es

Ci

Ri

ci

St

Et

Cj

Rj

cj

x

x

x ′

y

y

y ′

fr

Oct 2017 IIT Bombay

Page 48: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 13/98

Context Sensitivity in Interprocedural Analysis

Sr

Er

Ss

Es

Ci

Ri

ci

St

Et

Cj

Rj

cj

x

x

x ′

y

y

y ′

fr

×

Oct 2017 IIT Bombay

Page 49: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 13/98

Context Sensitivity in Interprocedural Analysis

Sr

Er

Ss

Es

Ci

Ri

ci

St

Et

Cj

Rj

cj

x

x

x ′

y

y

y ′

fr

Oct 2017 IIT Bombay

Page 50: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 13/98

Context Sensitivity in Interprocedural Analysis

Sr

Er

Ss

Es

Ci

Ri

ci

St

Et

Cj

Rj

cj

x

x

x ′

y

y

y ′

fr

×

Oct 2017 IIT Bombay

Page 51: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 13/98

Context Sensitivity in Interprocedural Analysis

Sr

Er

Ss

Es

Ci

Ri

ci

St

Et

Cj

Rj

cj

x

x

x ′

y

y

y ′

fr

Context sensitivity is all about

• returning the right value from acallee to the right caller, and

• not about passing the right valuefrom a caller to the right callee.

Oct 2017 IIT Bombay

Page 52: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 14/98

Increasing Precision in Data Flow Analysis

Flow insensitiveintraprocedural

Flow sensitiveintraprocedural

Context insensitiveflow insensitive

Context insensitiveflow sensitive

Context sensitiveflow insensitive

Context sensitiveflow sensitive

Oct 2017 IIT Bombay

Page 53: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Issues in Interprocedural Analysis 14/98

Increasing Precision in Data Flow Analysis

Flow insensitiveintraprocedural

Flow sensitiveintraprocedural

Context insensitiveflow insensitive

Context insensitiveflow sensitive

Context sensitiveflow insensitive

Context sensitiveflow sensitive

actually, onlycaller sensitive

Oct 2017 IIT Bombay

Page 54: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

Part 3

Classical Functional Approach

Page 55: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 15/98

Functional Approach

Sr

Er

Ss

Es

Ci

Ri

frci

x

x

x ′ = fr (x)

x ′

Oct 2017 IIT Bombay

Page 56: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 15/98

Functional Approach

Sr

Er

Ss

Es

Ci

Ri

fr

x

x ′ = fr (x)

• Bottom-up Approach

• Compute summary flow functionsfor each procedure

• Use summary flow functions as theflow function for a call block

• Main challenge:

Appropriate representation for

summary flow functions

Oct 2017 IIT Bombay

Page 57: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 16/98

Notation for Summary Flow Function

For simplicity forward flow is assumed

Procedure r

f1

u1

u2

f2

u3

u5

f3

u4

u6

f4

u7

u8

Oct 2017 IIT Bombay

Page 58: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 16/98

Notation for Summary Flow Function

For simplicity forward flow is assumed

Procedure r

f1

u1

u2

f2

u3

u5

f3

u4

u6

f4

u7

u8

• ui : Program points

• fi : Node flow functions

• Φr (ui ): Summary flow functionsmapping data flow value from Sr to ui

Oct 2017 IIT Bombay

Page 59: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 16/98

Notation for Summary Flow Function

For simplicity forward flow is assumed

Procedure r

f1

u1

u2

f2

u3

u5

f3

u4

u6

f4

u7

u8

Φr (u1) ≡ φid

• ui : Program points

• fi : Node flow functions

• Φr (ui ): Summary flow functionsmapping data flow value from Sr to ui

Oct 2017 IIT Bombay

Page 60: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 16/98

Notation for Summary Flow Function

For simplicity forward flow is assumed

Procedure r

f1

u1

u2

f2

u3

u5

f3

u4

u6

f4

u7

u8

Φr (u1) ≡ φid

Φr (u2) ≡ f1

• ui : Program points

• fi : Node flow functions

• Φr (ui ): Summary flow functionsmapping data flow value from Sr to ui

Oct 2017 IIT Bombay

Page 61: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 16/98

Notation for Summary Flow Function

For simplicity forward flow is assumed

Procedure r

f1

u1

u2

f2

u3

u5

f3

u4

u6

f4

u7

u8

Φr (u1) ≡ φid

Φr (u2) ≡ f1

Φr (u3) ≡ f1 Φr (u4) ≡ f1

• ui : Program points

• fi : Node flow functions

• Φr (ui ): Summary flow functionsmapping data flow value from Sr to ui

Oct 2017 IIT Bombay

Page 62: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 16/98

Notation for Summary Flow Function

For simplicity forward flow is assumed

Procedure r

f1

u1

u2

f2

u3

u5

f3

u4

u6

f4

u7

u8

Φr (u1) ≡ φid

Φr (u2) ≡ f1

Φr (u3) ≡ f1 Φr (u4) ≡ f1

Φr (u5) ≡ f2 f1

• ui : Program points

• fi : Node flow functions

• Φr (ui ): Summary flow functionsmapping data flow value from Sr to ui

Oct 2017 IIT Bombay

Page 63: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 16/98

Notation for Summary Flow Function

For simplicity forward flow is assumed

Procedure r

f1

u1

u2

f2

u3

u5

f3

u4

u6

f4

u7

u8

Φr (u1) ≡ φid

Φr (u2) ≡ f1

Φr (u3) ≡ f1 Φr (u4) ≡ f1

Φr (u5) ≡ f2 f1 Φr (u6) ≡ f3 f1

• ui : Program points

• fi : Node flow functions

• Φr (ui ): Summary flow functionsmapping data flow value from Sr to ui

Oct 2017 IIT Bombay

Page 64: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 16/98

Notation for Summary Flow Function

For simplicity forward flow is assumed

Procedure r

f1

u1

u2

f2

u3

u5

f3

u4

u6

f4

u7

u8

Φr (u1) ≡ φid

Φr (u2) ≡ f1

Φr (u3) ≡ f1 Φr (u4) ≡ f1

Φr (u5) ≡ f2 f1 Φr (u6) ≡ f3 f1

Φr (u7) ≡ f2 f1 ⊓ f3 f1

• ui : Program points

• fi : Node flow functions

• Φr (ui ): Summary flow functionsmapping data flow value from Sr to ui

Oct 2017 IIT Bombay

Page 65: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 16/98

Notation for Summary Flow Function

For simplicity forward flow is assumed

Procedure r

f1

u1

u2

f2

u3

u5

f3

u4

u6

f4

u7

u8

Φr (u1) ≡ φid

Φr (u2) ≡ f1

Φr (u3) ≡ f1 Φr (u4) ≡ f1

Φr (u5) ≡ f2 f1 Φr (u6) ≡ f3 f1

Φr (u7) ≡ f2 f1 ⊓ f3 f1

Φr (u8) ≡ f4 (f2 f1 ⊓ f3 f1)

• ui : Program points

• fi : Node flow functions

• Φr (ui ): Summary flow functionsmapping data flow value from Sr to ui

Oct 2017 IIT Bombay

Page 66: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 17/98

Equations for Constructing Summary Flow Functions

For simplicity forward flow is assumed. In is Entry of n, On is Exit of n

Φr (In) =

φid if n is Sr

p∈pred(n)

(Φr (Op)

)otherwise

Φr (On) =

Φs(u) Φr (In)if n calls procedure sand u is OEs

fn Φr (In) otherwise

The summary flow function of a given procedure r

• is influenced by summary flow functions of the callees of r

• is not influenced by summary flow functions of the callers of r

Fixed point computation may be required in the presence of loops or recursion

Oct 2017 IIT Bombay

Page 67: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 18/98

Constructing Summary Flow Functions Iteratively

f1

r

f2

Oct 2017 IIT Bombay

Page 68: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 18/98

Constructing Summary Flow Functions Iteratively

f1

r

f2

Φr (u1) = φid

Φr (u2) = f1

Iteration #1

Φr (u3) = f1

Φr (u4) = f2 f1

Oct 2017 IIT Bombay

Page 69: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 18/98

Constructing Summary Flow Functions Iteratively

f1

r

f2

Φr (u1) = φid

Φr (u2) = f1

Iteration #2

Φr (u3) = f1 ⊓ f2 f1

Φr (u4) = f2 (f1 ⊓ f2 f1)

Oct 2017 IIT Bombay

Page 70: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 18/98

Constructing Summary Flow Functions Iteratively

f1

r

f2

Φr (u1) = φid

Φr (u2) = f1

Iteration #3

Φr (u3) = f1 ⊓ f2 (f1 ⊓ f2 f1)

Φr (u4) = f2 (f1 ⊓ f2 (f1 ⊓ f2 f1))

Termination is possible only if all function compositions and

confluences can be reduced to a finite set of functions

Oct 2017 IIT Bombay

Page 71: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 19/98

Lattice of Flow Functions for Live Variables Analysis

Component functions (i.e. for a single variable)

Lattice ofdata flowvalues

All possible flow functionsLatticeof flowfunctions

⊤ = ∅

⊥ = a

Genn Killn f n f n(x), ∀x ∈ ⊤, ⊥

∅ ∅ φid x

∅ a φ⊤ ⊤

a ∅φ⊥ ⊥

a a

φ⊤

φid

φ⊥

Oct 2017 IIT Bombay

Page 72: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 20/98

Reducing Component Flow Functions for Live VariablesAnalysis

Let φ ∈ φ⊤, φid , φ⊥ and x ∈ 1, 0. Then,

• φ⊤ ⊓ φ = φ (because 0 + x = x)

• φ⊥ ⊓ φ = φ⊥ (because 1 + x = 1)

• φ⊤ φ = φ⊤ (because φ⊤ is a constant function)

• φ⊥ φ = φ⊥ (because φ⊥ is a constant function)

• φid φ = φ (because φid is the identity function)

Oct 2017 IIT Bombay

Page 73: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 21/98

Reducing Function Compositions in Bit Vector Frameworks

Killn denoted by Kn and Genn denoted by Gn

f3(x) = f2(f1(x))

Oct 2017 IIT Bombay

Page 74: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 21/98

Reducing Function Compositions in Bit Vector Frameworks

Killn denoted by Kn and Genn denoted by Gn

f3(x) = f2(f1(x))= f2

((x− K1) ∪ G1

)G1,K1

Oct 2017 IIT Bombay

Page 75: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 21/98

Reducing Function Compositions in Bit Vector Frameworks

Killn denoted by Kn and Genn denoted by Gn

f3(x) = f2(f1(x))= f2

((x− K1) ∪ G1

)

=(((x− K1) ∪ G1

)− K2

)∪ G2

G1,K1

G2,K2

Oct 2017 IIT Bombay

Page 76: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 21/98

Reducing Function Compositions in Bit Vector Frameworks

Killn denoted by Kn and Genn denoted by Gn

f3(x) = f2(f1(x))= f2

((x− K1) ∪ G1

)

=(((x− K1) ∪ G1

)− K2

)∪ G2

=(x− (K1 ∪ K2)

)∪ (G1 − K2) ∪ G2

G1,K1

G2,K2

Oct 2017 IIT Bombay

Page 77: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 21/98

Reducing Function Compositions in Bit Vector Frameworks

Killn denoted by Kn and Genn denoted by Gn

f3(x) = f2(f1(x))= f2

((x− K1) ∪ G1

)

=(((x− K1) ∪ G1

)− K2

)∪ G2

=(x− (K1 ∪ K2)

)∪ (G1 − K2) ∪ G2

Hence,

K3 = K1 ∪ K2

G3 = (G1 − K2) ∪ G2

G1,K1

G2,K2

Oct 2017 IIT Bombay

Page 78: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 22/98

Reducing Bit Vector Flow Function Confluences (1)

Killn denoted by Kn and Genn denoted by Gn

• When ⊓ is ∪,

f3(x) = f2(x) ∪ f1(x)=

((x− K2) ∪ G2

)∪

((x− K1) ∪ G1

)

=(x− (K1 ∩ K2)

)∪

(G1 ∪ G2

)

Hence,

K3 = K1 ∩ K2

G3 = G1 ∪ G2

G1,K1 G2,K2

Oct 2017 IIT Bombay

Page 79: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 22/98

Reducing Bit Vector Flow Function Confluences (1)

Killn denoted by Kn and Genn denoted by Gn

• When ⊓ is ∪,

f3(x) = f2(x) ∪ f1(x)=

((x− K2) ∪ G2

)∪

((x− K1) ∪ G1

)

=(x− (K1 ∩ K2)

)∪

(G1 ∪ G2

)

Hence,

K3 = K1 ∩ K2

G3 = G1 ∪ G2

G1,K1 G2,K2

Oct 2017 IIT Bombay

Page 80: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 23/98

Reducing Bit Vector Flow Function Confluences (2)

Killn denoted by Kn and Genn denoted by Gn

• When ⊓ is ∩,

f3(x) = f2(x) ∩ f1(x)=

((x− K2) ∪ G2

)∩

((x− K1) ∪ G1

)

=(x− (K1 ∪ K2)

)∪

(G1 ∩ G2

)

Hence,

K3 = K1 ∪ K2

G3 = G1 ∩ G2

G1,K1 G2,K2

Oct 2017 IIT Bombay

Page 81: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 23/98

Reducing Bit Vector Flow Function Confluences (2)

Killn denoted by Kn and Genn denoted by Gn

• When ⊓ is ∩,

f3(x) = f2(x) ∩ f1(x)=

((x− K2) ∪ G2

)∩

((x− K1) ∪ G1

)

=(x− (K1 ∪ K2)

)∪

(G1 ∩ G2

)

Hence,

K3 = K1 ∪ K2

G3 = G1 ∩ G2

G1,K1 G2,K2

Oct 2017 IIT Bombay

Page 82: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 24/98

Lattice of Flow Functions for Live Variables Analysis

Flow functions for two variables

• Product of lattices for independent variables (because of separability)

Lattice ofdata flowvalues

All possible flow functionsLattice offlow functions

⊤= ∅

a b

⊥= a, b

Genn Killn fn Genn Killn fn

∅ ∅ φII b ∅ φI⊥

∅ a φ⊤I b a φ⊤⊥

∅ b φI⊤ b b φI⊥

∅ a, b φ⊤⊤ b a, b φ⊤⊥

a ∅ φ⊥I a, b ∅ φ⊥⊥

a a φ⊥I a, b a φ⊥⊥

a b φ⊥⊤ a, b b φ⊥⊥

a a, b φ⊥⊤ a, b a, b φ⊥⊥

φ⊤⊤

φ⊤I φI⊤

φ⊤⊥ φII φ⊥⊤

φI⊥ φ⊥I

φ⊥⊥

Oct 2017 IIT Bombay

Page 83: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 25/98

An Example of Interprocedural Liveness Analysis

a = 5; b = 3c = 7; read d

Smain

Call pc1

n1a = a+ 2e = c + d

n1

n2 d = a ∗ b n2

Call qc2

print a + c + eEmain

b = 2if (b < d)

Sp

n3 c = a + b n3 Call qc4

print c + dEp

T F

a = 1Sq

Call pc3

a = a ∗ bEq

Oct 2017 IIT Bombay

Page 84: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 26/98

Summary Flow Functions for Interprocedural LivenessAnalysis

Proc. Flow

FunctionDefiningExpression

Iteration #1Changes initeration #2

Gen Kill Gen Kill

p

Φp(Ep) fEpc , d ∅

Φp(n3) fn3 Φp(Ep) a, b, d c

Φp(c4) fq Φp(Ep) = φ⊤ ∅ a, b, c , d , e d a, b, c

Φp(Sp) fSp(Φp(n3) ⊓ Φp(c4)

)a, d b, c

fp Φp(Sp) a, d b, c

q

Φq(Eq) fEqa, b a

Φq(c3) fp Φq(Eq) a, d a, b, c

Φq(Sq) fSq Φq(c3) d a, b, c

fq Φq(Sq) d a, b, c

Oct 2017 IIT Bombay

Page 85: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 27/98

Computed Summary Flow Functions

b = 2if (b < d)

Sp

n3 c = a + b n3 Call qc4

print c + dEp

T F

a = 1Sq

Call pc3

a = a ∗ bEq

Summary Flow Function

Φp(Ep) BIp ∪ c , d

Φp(n3)(BIp − c

)∪ a, b, d

Φp(c4)(BIp − a, b, c

)∪ d

Φp(Sp)(BIp − b, c

)∪ a, d

Φq(Eq)(BIq − a

)∪ a, b

Φq(c3)(BIq − a, b, c

)∪ a, d

Φq(Sq)(BIq − a, b, c

)∪ d

Oct 2017 IIT Bombay

Page 86: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 28/98

Result of Interprocedural Liveness Analysis

Data flowvariable

Summary flow function Data flowName Definition value

Procedure main, BI = ∅

InEmΦm(Em) BIm ∪ a, c , e a, c , e

Inc2 Φm(c2)(BIm − a, b, c

)∪ d , e d , e

Inn2 Φm(n2)(BIm − a, b, c , d

)∪ a, b, e a, b, e

Inn1 Φm(n1)(BIm − a, b, c , d , e

)∪ a, b, c , d a, b, c , d

Inc1 Φm(c1)(BIm − a, b, c , d , e

)∪ a, d a, d

InSmΦm(Sm) BIm − a, b, c , d , e ∅

Oct 2017 IIT Bombay

Page 87: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 29/98

Result of Interprocedural Liveness Analysis

Data flowvariable

Summary flow function Data flowName Definition value

Procedure p, BI = a, b, c , d , e

InEpΦp(Ep) BIp ∪ c , d a, b, c , d , e

Inn3 Φp(n3)(BIp − c

)∪ a, b, d a, b, d , e

Inc4 Φp(c4)(BIp − a, b, c

)∪ d d , e

InSpΦp(Sp)

(BIp − b, c

)∪ a, d a, d , e

Procedure q, BI = a, b, c , d , e

InEqΦq(Eq)

(BIq − a

)∪ a, b a, b, c , d , e

Inc3 Φq(c3)(BIq − a, b, c

)∪ a, d a, d , e

InSqΦq(Sq)

(BIq − a, b, c

)∪ d d , e

Oct 2017 IIT Bombay

Page 88: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 30/98

Context Sensitivity of Interprocedural Liveness Analysis

a = 5; b = 3c = 7; read d

Smain

Call pc1

a, d

n1a = a+ 2e = c + d

n1

a, b, c , d

n2 d = a ∗ b n2

a, b, e

Call qc2

d , e

print a + c + eEmain

a, c , e

b = 2if (b < d)

Sp

a, d , e

n3 c = a + b n3

a, b, d , e

Call qc4

d , e

print c + dEp

a, b, c , d , e

T F

a = 1

d , e

Sq

Call pc3

a, d , e

a = a ∗ bEq

a, b, c , d , e

Oct 2017 IIT Bombay

Page 89: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 30/98

Context Sensitivity of Interprocedural Liveness Analysis

a = 5; b = 3c = 7; read d

Smain

Call pc1

a, d

n1a = a+ 2e = c + d

n1

a, b, c , d

n2 d = a ∗ b n2

a, b, e

Call qc2

d , e

print a + c + eEmain

a, c , e

b = 2if (b < d)

Sp

a, d , e

n3 c = a + b n3

a, b, d , e

Call qc4

d , e

print c + dEp

a, b, c , d , e

T F

a = 1

d , e

Sq

Call pc3

a, d , e

a = a ∗ bEq

a, b, c , d , e

e ∈ InSpbut e 6∈ Inc1

Oct 2017 IIT Bombay

Page 90: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 31/98

Explaining Context Sensitivity

Sp

Ep

Smain

Emain

call p

Sq

Eq

call p

e isdead

e isdead

e isdead

e isdead

• Flow function of procedure p is identity with respect to variable e

Oct 2017 IIT Bombay

Page 91: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 31/98

Explaining Context Sensitivity

Sp

Ep

Smain

Emain

call p

Sq

Eq

call p

e islive

e islive

e islive

e islive

• Flow function of procedure p is identity with respect to variable e

Oct 2017 IIT Bombay

Page 92: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 31/98

Explaining Context Sensitivity

Sp

Ep

Smain

Emain

call p

Sq

Eq

call p

e isdead

e isdead

e islive

e islive

e isdead

e isdead

e islive

e islive

• Flow function of procedure p is identity with respect to variable e

• Is e live in the body of procedure p?

During the analysis: Depends on the calling context After the analysis: Yes (static approximation across all executions)

Oct 2017 IIT Bombay

Page 93: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 31/98

Explaining Context Sensitivity

Sp

Ep

Smain

Emain

call p

Sq

Eq

call p

e isdead

e isdead

e islive

e islive

e isdead

e isdead

e islive

e islive

• Flow function of procedure p is identity with respect to variable e

• Is e live in the body of procedure p?

During the analysis: Depends on the calling context After the analysis: Yes (static approximation across all executions)

• Distinction between caller’s effect on callee and callee’s effect on caller

Oct 2017 IIT Bombay

Page 94: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 32/98

Tutorial Problem #1

Perform interprocedural live variables analysis for the following program

main()

p();

p()

while (c < 10)

p();

a = a*b;

Oct 2017 IIT Bombay

Page 95: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 33/98

Tutorial Problem #2: Summary Flow Function for ConstantPropagation

b = c + d Sp

n1 a = a+ b n1

Call pC1

n2 a = a− b n2

print c + d Ep

Oct 2017 IIT Bombay

Page 96: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 33/98

Tutorial Problem #2: Summary Flow Function for ConstantPropagation

b = c + d Sp

n1 a = a+ b n1

Call pC1

n2 a = a− b n2

print c + d Ep

Iter. #1 Iter. #2

[Φp(Sp)](〈va, vb〉) 〈va, vb〉 〈va, vb〉

[Φp(n1)](〈va, vb〉) 〈va+vb, vb〉 〈va+vb, vb〉

[Φp(C1)](〈va, vb〉) 〈⊤, ⊤〉 〈va+vb, vb〉

[Φp(n2)](〈va, vb〉) 〈⊤, ⊤〉 〈va, vb〉

[Φp(Ep)](〈va, vb〉) 〈va, vb〉 〈va, vb〉

fp(〈va, vb〉) 〈va, vb〉 〈va, vb〉

Oct 2017 IIT Bombay

Page 97: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 33/98

Tutorial Problem #2: Summary Flow Function for ConstantPropagation

b = c + d Sp

n1 a = a+ b n1

Call pC1

n2 a = a− b n2

print c + d Ep

Iter. #1 Iter. #2

[Φp(Sp)](〈va, vb〉) 〈va, vb〉 〈va, vb〉

[Φp(n1)](〈va, vb〉) 〈va+vb, vb〉 〈va+vb, vb〉

[Φp(C1)](〈va, vb〉) 〈⊤, ⊤〉 〈va+vb, vb〉

[Φp(n2)](〈va, vb〉) 〈⊤, ⊤〉 〈va, vb〉

[Φp(Ep)](〈va, vb〉) 〈va, vb〉 〈va, vb〉

fp(〈va, vb〉) 〈va, vb〉 〈va, vb〉

Will this work always?

Oct 2017 IIT Bombay

Page 98: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 34/98

Tutorial Problem #3

• Is a*b available on line 18? Line 6?

• Perform available expressions analysis by constructing the summary flowfunction for procedure p

1. main()

2.

3. c = a*b;

4. p();

5. a = a*b;

6.

7. p()

8. if (...)

9. a = a*b;

10. p();

11.

12. else if (...)

13. c = a * b;

14. p();

15. c = a;

16.

17. else

18. ; /* ignore */

19.

Oct 2017 IIT Bombay

Page 99: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 35/98

Limitations of Functional Approach to Interprocedural DataFlow Analysis

Problems with constructing summary flow functions

Oct 2017 IIT Bombay

Page 100: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 35/98

Limitations of Functional Approach to Interprocedural DataFlow Analysis

Problems with constructing summary flow functions

• Reducing expressions defining flow functions may not be possible in thepresence of dependent parts

• May work for some instances of some problems but not for all

• Hence basic blocks in pointer analysis and constant propagation contain asingle statement

Oct 2017 IIT Bombay

Page 101: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 36/98

Overall Flow Function and Component Function

• Overall flow function f : L 7→ L is 〈h1, h2, . . . , hm〉

• Component function: hi which computes the value of x i

Oct 2017 IIT Bombay

Page 102: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 36/98

Overall Flow Function and Component Function

• Overall flow function f : L 7→ L is 〈h1, h2, . . . , hm〉

• Component function: hi which computes the value of x i

Separable General Non-Separable

Oct 2017 IIT Bombay

Page 103: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 36/98

Overall Flow Function and Component Function

• Overall flow function f : L 7→ L is 〈h1, h2, . . . , hm〉

• Component function: hi which computes the value of x i

Separable

〈 x1, x2, . . . , xm 〉

f

〈 y1, y 2, . . . , ym 〉

General Non-Separable

〈 x1, x2, . . . , xm 〉

f

〈 y1, y 2, . . . , ym 〉

Oct 2017 IIT Bombay

Page 104: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 36/98

Overall Flow Function and Component Function

• Overall flow function f : L 7→ L is 〈h1, h2, . . . , hm〉

• Component function: hi which computes the value of x i

Separable

〈 x1, x2, . . . , xm 〉

h2

〈 y 1, y2, . . . , ym 〉

General Non-Separable

〈 x1, x2, . . . , xm 〉

f

〈 y1, y 2, . . . , ym 〉

Oct 2017 IIT Bombay

Page 105: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 36/98

Overall Flow Function and Component Function

• Overall flow function f : L 7→ L is 〈h1, h2, . . . , hm〉

• Component function: hi which computes the value of x i

Separable

〈 x1, x2, . . . , xm 〉

h2

〈 y 1, y2, . . . , ym 〉

h : L 7→ L

General Non-Separable

〈 x1, x2, . . . , xm 〉

f

〈 y1, y 2, . . . , ym 〉

Oct 2017 IIT Bombay

Page 106: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 36/98

Overall Flow Function and Component Function

• Overall flow function f : L 7→ L is 〈h1, h2, . . . , hm〉

• Component function: hi which computes the value of x i

Separable

〈 x1, x2, . . . , xm 〉

h2

〈 y 1, y2, . . . , ym 〉

h : L 7→ L

General Non-Separable

〈 x1, x2, . . . , xm 〉

h2

〈 y 1, y2, . . . , ym 〉

Oct 2017 IIT Bombay

Page 107: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 36/98

Overall Flow Function and Component Function

• Overall flow function f : L 7→ L is 〈h1, h2, . . . , hm〉

• Component function: hi which computes the value of x i

Separable

〈 x1, x2, . . . , xm 〉

h2

〈 y 1, y2, . . . , ym 〉

h : L 7→ L

General Non-Separable

〈 x1, x2, . . . , xm 〉

h2

〈 y 1, y2, . . . , ym 〉

h : L 7→ L

Example: All bit vector frameworks Example: Points-To Analysis

Oct 2017 IIT Bombay

Page 108: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 37/98

Entity Functions in Points-to Analysis

Statement witha ∈ L locations Entity functions Closed under

composition?

. . . = null Constant L 7→ L Yes

. . . = &b Constant L 7→ L Yes

. . . = b Identity L 7→ L Yes

. . . = ∗b ? L 7→ L No

Oct 2017 IIT Bombay

Page 109: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 38/98

Entity Functions in Constant Propagation

Statement Entity functions Closed undercomposition?

a = 5 Constant L 7→ L Yes

a = b Constant L 7→ L Yes

a = b + 5 Linear L 7→ L Yes

a = b + c ? L 7→ L No

Oct 2017 IIT Bombay

Page 110: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 39/98

Enumeration Based Functional Approach

• Instead of constructing flow functions, remember the mapping x 7→ y asinput output values

• Reuse output value of a flow function when the same input value isencountered again

Oct 2017 IIT Bombay

Page 111: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Functional Approach 39/98

Enumeration Based Functional Approach

• Instead of constructing flow functions, remember the mapping x 7→ y asinput output values

• Reuse output value of a flow function when the same input value isencountered again

Requires the number of values to be finite

Oct 2017 IIT Bombay

Page 112: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

Part 4

Classical Call Strings Approach

Page 113: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 40/98

Classical Full Call Strings Approach

Most general, flow and context sensitive method

• Remember call history

Information should be propagated back to the correct point

• Call string at a program point:

Sequence of unfinished calls reaching that point Starting from the Smain

A snap-shot of call stack in terms of call sites

Oct 2017 IIT Bombay

Page 114: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

C1

C2

C3

C4 R4

R3 C6 R6 C4

C4 R4

R4 C1

C1

C1

Oct 2017 IIT Bombay

Page 115: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

C1

C2

C3

C4 R4

R3 C6 R6 C4

C4 R4

R4 C1

C1

C1

C2 R2 C3 R3 C4 R4 C5

C5 R5

R5 C6 R6 C7

Oct 2017 IIT Bombay

Page 116: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

C1

C2

C3

C4 R4

R3 C6 R6 C4

C4 R4

R4 C1

C1

C1

C2 R2 C3 R3 C4 R4 C5

C5 R5

R5 C6 R6 C7

• “You can descend only as much as you have ascended!”

Oct 2017 IIT Bombay

Page 117: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

C1

C2

C3

C4 R4

R3 C6 R6 C4

C4 R4

R4 C1

C1

C1

C2 R2 C3 R3 C4 R4 C5

C5 R5

R5 C6 R6 C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

Oct 2017 IIT Bombay

Page 118: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

C1

C2

C3

C4 R4

R3 C6 R6 C4

C4 R4

R4 C1

C1

C1

C2 R2 C3 R3 C4 R4 C5

C5 R5

R5 C6 R6 C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 119: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4 R4

R3 C6 R6 C4

C4 R4

R4 C1

C1

C1

C2 R2 C3 R3 C4 R4 C5

C5 R5

R5 C6 R6 C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 120: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3 C6 R6 C4

C4 R4

R4 C1

C1

C1

C2 R2 C3 R3 C4 R4 C5

C5 R5

R5 C6 R6 C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 121: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3

c1c2

C6 R6 C4

C4 R4

R4 C1

C1

C1

C2 R2 C3 R3 C4 R4 C5

C5 R5

R5 C6 R6 C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 122: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3

c1c2

C6

c1c2c6

R6 C4

C4 R4

R4 C1

C1

C1

C2 R2 C3 R3 C4 R4 C5

C5 R5

R5 C6 R6 C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 123: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3

c1c2

C6

c1c2c6

R6

c1c2

C4

C4 R4

R4 C1

C1

C1

C2 R2 C3 R3 C4 R4 C5

C5 R5

R5 C6 R6 C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 124: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3

c1c2

C6

c1c2c6

R6

c1c2

C4

C4

c1c2c4c4

R4

R4 C1

C1

C1

C2 R2 C3 R3 C4 R4 C5

C5 R5

R5 C6 R6 C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 125: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3

c1c2

C6

c1c2c6

R6

c1c2

C4

C4

c1c2c4c4

R4

R4

c1c2

C1

C1

C1

C2 R2 C3 R3 C4 R4 C5

C5 R5

R5 C6 R6 C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 126: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3

c1c2

C6

c1c2c6

R6

c1c2

C4

C4

c1c2c4c4

R4

R4

c1c2

C1

C1

C1

c1c2c1c1c1

C2 R2 C3 R3 C4 R4 C5

C5 R5

R5 C6 R6 C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 127: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3

c1c2

C6

c1c2c6

R6

c1c2

C4

C4

c1c2c4c4

R4

R4

c1c2

C1

C1

C1

c1c2c1c1c1

λ

C2 R2

λ

C3 R3

λ

C4 R4

λ

C5

C5 R5

R5

λ

C6 R6

λ

C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 128: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3

c1c2

C6

c1c2c6

R6

c1c2

C4

C4

c1c2c4c4

R4

R4

c1c2

C1

C1

C1

c1c2c1c1c1

λ

C2

c2

R2

λ

C3 R3

λ

C4 R4

λ

C5

C5 R5

R5

λ

C6 R6

λ

C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 129: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3

c1c2

C6

c1c2c6

R6

c1c2

C4

C4

c1c2c4c4

R4

R4

c1c2

C1

C1

C1

c1c2c1c1c1

λ

C2

c2

R2

λ

C3

c3

R3

λ

C4 R4

λ

C5

C5 R5

R5

λ

C6 R6

λ

C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 130: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3

c1c2

C6

c1c2c6

R6

c1c2

C4

C4

c1c2c4c4

R4

R4

c1c2

C1

C1

C1

c1c2c1c1c1

λ

C2

c2

R2

λ

C3

c3

R3

λ

C4

c4

R4

λ

C5

C5 R5

R5

λ

C6 R6

λ

C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 131: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3

c1c2

C6

c1c2c6

R6

c1c2

C4

C4

c1c2c4c4

R4

R4

c1c2

C1

C1

C1

c1c2c1c1c1

λ

C2

c2

R2

λ

C3

c3

R3

λ

C4

c4

R4

λ

C5

C5

c5c5

R5

R5

λ

C6 R6

λ

C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 132: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3

c1c2

C6

c1c2c6

R6

c1c2

C4

C4

c1c2c4c4

R4

R4

c1c2

C1

C1

C1

c1c2c1c1c1

λ

C2

c2

R2

λ

C3

c3

R3

λ

C4

c4

R4

λ

C5

C5

c5c5

R5

R5

λ

C6

c6

R6

λ

C7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 133: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 41/98

Interprocedural Validity and Calling Contexts

λ

C1

C2c1c2

C3

C4

c1c2c3c4

R4

R3

c1c2

C6

c1c2c6

R6

c1c2

C4

C4

c1c2c4c4

R4

R4

c1c2

C1

C1

C1

c1c2c1c1c1

λ

C2

c2

R2

λ

C3

c3

R3

λ

C4

c4

R4

λ

C5

C5

c5c5

R5

R5

λ

C6

c6

R6

λ

C7

c7

• “You can descend only as much as you have ascended!”

• Every descending step must match a corresponding ascending step

• Calling context is represented by the remaining descending steps

Oct 2017 IIT Bombay

Page 134: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 42/98

Interprocedural Data Flow Analysis Using Call Strings

• Augmented data flow information

INn and OUTn are partial maps from call strings to L The final data flow information at a program point is

Inn =〈σ, x〉∈ INn

x

Outn =〈σ, x〉∈OUTn

x

(glb of data flow values for all call strings)

• Flow functions to manipulate tagged data flow information

Intraprocedural edges manipulate data flow value x Interprocedural edges manipulate call string σ

Oct 2017 IIT Bombay

Page 135: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 43/98

Augmented Data Flow Equations: Computing INn

INn =

〈λ,BI 〉 n is a Smain⊎

p∈pred(n)

OUTp otherwise

where we merge underlying data flow values only if the contexts are same

Oct 2017 IIT Bombay

Page 136: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 43/98

Augmented Data Flow Equations: Computing INn

INn =

〈λ,BI 〉 n is a Smain⊎

p∈pred(n)

OUTp otherwise

where we merge underlying data flow values only if the contexts are same

Γ1 ⊎ Γ2 =〈σ, z〉 | 〈σ, x〉 ∈ Γ1 ∧ 〈σ, y〉 ∈ Γ2 ⇒ z = x ⊓ y ,

〈σ, x〉 ∈ Γ1 ∧ 〈σ, y〉 /∈ Γ2 ⇒ z = x ,〈σ, x〉 /∈ Γ1 ∧ 〈σ, y〉 ∈ Γ2 ⇒ z = y

Oct 2017 IIT Bombay

Page 137: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 44/98

Augmented Data Flow Equations: Computing OUTn

• Call node Ci

Append ci to every σ

Propagate the data flow values unchanged

Oct 2017 IIT Bombay

Page 138: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 44/98

Augmented Data Flow Equations: Computing OUTn

• Call node Ci

Append ci to every σ

Propagate the data flow values unchanged

• Return node Ri

If the last call site is ci , remove it andpropagate the data flow value unchanged

Block other data flow values

Oct 2017 IIT Bombay

Page 139: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 44/98

Augmented Data Flow Equations: Computing OUTn

• Call node Ci

Append ci to every σ

Propagate the data flow values unchangedAscend

• Return node Ri

If the last call site is ci , remove it andpropagate the data flow value unchanged

Block other data flow values

Descend

Oct 2017 IIT Bombay

Page 140: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 44/98

Augmented Data Flow Equations: Computing OUTn

• Call node Ci

Append ci to every σ

Propagate the data flow values unchangedAscend

• Return node Ri

If the last call site is ci , remove it andpropagate the data flow value unchanged

Block other data flow values

Descend

OUTn(X ) =

〈σ · ci , x〉 | 〈σ, x〉 ∈ INn

n is Ci

〈σ, x〉 | 〈σ · ci , x〉 ∈ INn

n is Ri

〈σ, fn(x)〉 | 〈σ, x〉 ∈ INn

otherwise

Oct 2017 IIT Bombay

Page 141: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 45/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Oct 2017 IIT Bombay

Page 142: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 45/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Is a ∗ bavailable?

Oct 2017 IIT Bombay

Page 143: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 45/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Is a ∗ bavailable?

int a, b, t;

void p()

if (a == 0)

a = a-1;

p();

t = a∗b;

Oct 2017 IIT Bombay

Page 144: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 45/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Is a ∗ bavailable?

int a, b, t;

void p()

if (a == 0)

a = a-1;

p();

t = a∗b;

Yes!

Oct 2017 IIT Bombay

Page 145: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 46/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Kill

Oct 2017 IIT Bombay

Page 146: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 46/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Kill

Oct 2017 IIT Bombay

Page 147: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 46/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Kill

×

Oct 2017 IIT Bombay

Page 148: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 46/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Kill

Gen

Oct 2017 IIT Bombay

Page 149: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 46/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Kill

Gen

Oct 2017 IIT Bombay

Page 150: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 47/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Maintain a worklist ofnodes to be processed

Smainread a, bt := a ∗ b Smain

Oct 2017 IIT Bombay

Page 151: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 47/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

〈λ, 1〉

Maintain a worklist ofnodes to be processed

C1 call p C1

Oct 2017 IIT Bombay

Page 152: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 47/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

〈λ, 1〉

〈c1, 1〉Maintain a worklist ofnodes to be processed

Sp if a == 0 Sp

Oct 2017 IIT Bombay

Page 153: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 47/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

〈λ, 1〉

〈c1, 1〉

〈c1, 1〉

Maintain a worklist ofnodes to be processed

n2 a = a − 1 n2

Ep a ∗ b Ep

Oct 2017 IIT Bombay

Page 154: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 47/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

〈λ, 1〉

〈c1, 1〉

〈c1, 1〉

〈c1, 0〉

Maintain a worklist ofnodes to be processed

Ep a ∗ b Ep

C2 call p C2

Oct 2017 IIT Bombay

Page 155: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 47/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

〈λ, 1〉

〈c1, 1〉

〈c1, 1〉

〈c1, 0〉

〈c1c2, 0〉Maintain a worklist ofnodes to be processed

Sp if a == 0 Sp

Ep a ∗ b Ep

Oct 2017 IIT Bombay

Page 156: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 47/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

〈λ, 1〉

〈c1, 1〉

〈c1, 1〉

〈c1, 0〉

〈c1c2, 0〉

〈c1, 1〉〈c1c2, 0〉

Maintain a worklist ofnodes to be processed

n2 a = a − 1 n2

Ep a ∗ b Ep

Oct 2017 IIT Bombay

Page 157: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 47/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

〈λ, 1〉

〈c1, 1〉

〈c1, 1〉

〈c1c2, 0〉, 〈c1c2c2, 0〉, . . .

〈c1, 0〉, 〈c1c2, 0〉, . . .

〈c1, 1〉〈c1c2, 0〉

〈c1c2c2, 0〉. . .

Maintain a worklist ofnodes to be processed

Sp if a == 0 Sp

Ep a ∗ b Ep

Oct 2017 IIT Bombay

Page 158: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 47/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

〈λ, 1〉

〈c1, 1〉

〈c1, 1〉

〈c1c2, 0〉, 〈c1c2c2, 0〉, . . .

〈c1, 0〉, 〈c1c2, 0〉, . . .

〈c1, 1〉〈c1c2, 0〉

〈c1c2c2, 0〉. . .

〈c1, 1〉〈c1c2, 0〉〈c1c2c2, 0〉. . .

Maintain a worklist ofnodes to be processed

R2 call p R2

Oct 2017 IIT Bombay

Page 159: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 47/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

〈λ, 1〉

〈c1, 1〉

〈c1, 1〉

〈c1c2, 0〉, 〈c1c2c2, 0〉, . . .

〈c1, 0〉, 〈c1c2, 0〉, . . .

〈c1, 1〉〈c1c2, 0〉

〈c1c2c2, 0〉. . .

〈c1, 1〉〈c1c2, 0〉〈c1c2c2, 0〉. . .〈c1, 0〉 〈c1c2, 0〉

Maintain a worklist ofnodes to be processed

n3 t = a ∗ b n3

Oct 2017 IIT Bombay

Page 160: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 47/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

〈λ, 1〉

〈c1, 1〉

〈c1, 1〉

〈c1c2, 0〉, 〈c1c2c2, 0〉, . . .

〈c1, 0〉, 〈c1c2, 0〉, . . .

〈c1, 1〉〈c1c2, 0〉

〈c1c2c2, 0〉. . .

〈c1, 1〉〈c1c2, 0〉〈c1c2c2, 0〉. . .〈c1, 0〉 〈c1c2, 0〉

〈c1, 1〉〈c1c2, 1〉

Maintain a worklist ofnodes to be processed

Ep a ∗ b Ep

Oct 2017 IIT Bombay

Page 161: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 47/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

〈λ, 1〉

〈c1, 1〉

〈c1, 1〉

〈c1c2, 0〉, 〈c1c2c2, 0〉, . . .

〈c1, 0〉, 〈c1c2, 0〉, . . .

〈c1, 1〉〈c1c2, 0〉

〈c1c2c2, 0〉. . .

〈c1, 1〉〈c1c2, 0〉〈c1c2c2, 0〉. . .〈c1, 0〉 〈c1c2, 0〉

〈c1, 1〉〈c1c2, 1〉

〈c1, 1〉〈c1c2, 0〉

Maintain a worklist ofnodes to be processed

R1 call p R1

Oct 2017 IIT Bombay

Page 162: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 47/98

Available Expressions Analysis Using Call Strings Approach

Smainread a, bt := a ∗ b Smain

C1 call p C1

R1 call p R1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

R2 call p R2

n3 t = a ∗ b n3

Ep a ∗ b Ep

〈λ, 1〉

〈c1, 1〉

〈c1, 1〉

〈c1c2, 0〉, 〈c1c2c2, 0〉, . . .

〈c1, 0〉, 〈c1c2, 0〉, . . .

〈c1, 1〉〈c1c2, 0〉

〈c1c2c2, 0〉. . .

〈c1, 1〉〈c1c2, 0〉〈c1c2c2, 0〉. . .〈c1, 0〉 〈c1c2, 0〉

〈c1, 1〉〈c1c2, 1〉

〈c1, 1〉〈c1c2, 0〉

〈λ, 1〉

Maintain a worklist ofnodes to be processed

n1 print a ∗ b n1

Oct 2017 IIT Bombay

Page 163: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 48/98

Tutorial Problem #1

Perform available expressions analysis for the following program

main()

a = b*c;

p(); /* C1 */

d = b*c; /* avail b*c? */

q(); /* C2 */

p()

q()

b = 5;

p(); /* C3 */

Oct 2017 IIT Bombay

Page 164: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 49/98

The Need for Multiple Occurrences of a Call Site

Even if data flow values in cyclic call sequence do not change

1. int a,b,c;

2. void main()

3. c = a*b;

4. p();

5. 6. void p()

7. if (...)

8. p();

9. /*Is a*b available?*/10. a = a*b;

11. 12.

Oct 2017 IIT Bombay

Page 165: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 49/98

The Need for Multiple Occurrences of a Call Site

Even if data flow values in cyclic call sequence do not change

1. int a,b,c;

2. void main()

3. c = a*b;

4. p();

5. 6. void p()

7. if (...)

8. p();

9. /*Is a*b available?*/10. a = a*b;

11. 12.

Path 1

3 Gen4

78

712

910 Kill1112

5

Recursive calls: 1

Oct 2017 IIT Bombay

Page 166: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 49/98

The Need for Multiple Occurrences of a Call Site

Even if data flow values in cyclic call sequence do not change

1. int a,b,c;

2. void main()

3. c = a*b;

4. p();

5. 6. void p()

7. if (...)

8. p();

9. /*Is a*b available?*/10. a = a*b;

11. 12.

Path 1

3 Gen4

78

712

910 Kill1112

5

Recursive calls: 1

Path 2

3 Gen4

78

78

712

910 Kill1112

910 Kill

Recursive calls: 2

Oct 2017 IIT Bombay

Page 167: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 50/98

The Need for Multiple Occurrences of a Call Site

Even if data flow values in cyclic call sequence do not change

1. int a,b,c;

2. void main()

3. c = a*b;

4. p();

5. 6. void p()

7. if (...)

8. p();

9. Is a*b available?10. a = a*b;

11. 12.

Oct 2017 IIT Bombay

Page 168: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 50/98

The Need for Multiple Occurrences of a Call Site

Even if data flow values in cyclic call sequence do not change

1. int a,b,c;

2. void main()

3. c = a*b;

4. p();

5. 6. void p()

7. if (...)

8. p();

9. Is a*b available?10. a = a*b;

11. 12.

a = a ∗ bSmain

c = a ∗ bn1

c = a ∗ bC1

c = a ∗ bR1

c = a ∗ bEmain

a = a ∗ b Sp

c = a ∗ bC2

c = a ∗ bR2

a = a ∗ bn2

c = a ∗ b Ep

Oct 2017 IIT Bombay

Page 169: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 50/98

The Need for Multiple Occurrences of a Call Site

Even if data flow values in cyclic call sequence do not change

1. int a,b,c;

2. void main()

3. c = a*b;

4. p();

5. 6. void p()

7. if (...)

8. p();

9. Is a*b available?10. a = a*b;

11. 12.

a = a ∗ bSmain

c = a ∗ bn1

c = a ∗ bC1

c = a ∗ bR1

c = a ∗ bEmain

a = a ∗ b Sp

〈c1c2, 1〉,〈c1c2c2, 1〉〈c1, 1〉

c = a ∗ bC2

c = a ∗ bR2

a = a ∗ bn2

c = a ∗ b Ep

Oct 2017 IIT Bombay

Page 170: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 50/98

The Need for Multiple Occurrences of a Call Site

Even if data flow values in cyclic call sequence do not change

1. int a,b,c;

2. void main()

3. c = a*b;

4. p();

5. 6. void p()

7. if (...)

8. p();

9. Is a*b available?10. a = a*b;

11. 12.

a = a ∗ bSmain

c = a ∗ bn1

c = a ∗ bC1

c = a ∗ bR1

c = a ∗ bEmain

a = a ∗ b Sp

〈c1c2, 1〉,〈c1c2c2, 1〉〈c1, 1〉

c = a ∗ bC2

c = a ∗ bR2

a = a ∗ bn2

c = a ∗ b Ep

• Interprocedurally valid IFPKilln2 ,Ep,R2, n2

Oct 2017 IIT Bombay

Page 171: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 50/98

The Need for Multiple Occurrences of a Call Site

Even if data flow values in cyclic call sequence do not change

1. int a,b,c;

2. void main()

3. c = a*b;

4. p();

5. 6. void p()

7. if (...)

8. p();

9. Is a*b available?10. a = a*b;

11. 12.

a = a ∗ bSmain

c = a ∗ bn1

c = a ∗ bC1

c = a ∗ bR1

c = a ∗ bEmain

a = a ∗ b Sp

〈c1c2, 1〉,〈c1c2c2, 1〉〈c1, 1〉

c = a ∗ bC2

c = a ∗ bR2

a = a ∗ bn2

c = a ∗ b Ep

• Interprocedurally valid IFP

C2, Sp ,Ep,R2,Killn2 ,Ep,R2, n2

Oct 2017 IIT Bombay

Page 172: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 50/98

The Need for Multiple Occurrences of a Call Site

Even if data flow values in cyclic call sequence do not change

1. int a,b,c;

2. void main()

3. c = a*b;

4. p();

5. 6. void p()

7. if (...)

8. p();

9. Is a*b available?10. a = a*b;

11. 12.

a = a ∗ bSmain

c = a ∗ bn1

c = a ∗ bC1

c = a ∗ bR1

c = a ∗ bEmain

a = a ∗ b Sp

〈c1c2, 1〉,〈c1c2c2, 1〉〈c1, 1〉

c = a ∗ bC2

c = a ∗ bR2

a = a ∗ bn2

c = a ∗ b Ep

• Interprocedurally valid IFP

C2, Sp,C2, Sp ,Ep,R2,Killn2 ,Ep,R2, n2

Oct 2017 IIT Bombay

Page 173: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 50/98

The Need for Multiple Occurrences of a Call Site

Even if data flow values in cyclic call sequence do not change

1. int a,b,c;

2. void main()

3. c = a*b;

4. p();

5. 6. void p()

7. if (...)

8. p();

9. Is a*b available?10. a = a*b;

11. 12.

a = a ∗ bSmain

c = a ∗ bn1

c = a ∗ bC1

c = a ∗ bR1

c = a ∗ bEmain

a = a ∗ b Sp

〈c1c2, 1〉,〈c1c2c2, 1〉〈c1, 1〉

c = a ∗ bC2

c = a ∗ bR2

a = a ∗ bn2

c = a ∗ b Ep

• Interprocedurally valid IFP

Sm, n1,C1, Sp ,C2, Sp,C2, Sp ,Ep,R2,Killn2 ,Ep,R2, n2

Oct 2017 IIT Bombay

Page 174: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 51/98

The Need for Multiple Occurrences of a Call Site

Even if data flow values in cyclic call sequence do not change

In terms of staircase diagram

• Interprocedurally valid IFP

Sm, n1,C1, Sp ,C2, Sp,C2, Sp ,Ep,R2,Killn2 ,Ep,R2, n2

Oct 2017 IIT Bombay

Page 175: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 51/98

The Need for Multiple Occurrences of a Call Site

Even if data flow values in cyclic call sequence do not change

In terms of staircase diagram

• Interprocedurally valid IFP

Sm, n1,C1, Sp ,C2, Sp,C2, Sp ,Ep,R2,Killn2 ,Ep,R2, n2

• You cannot descend twice, unless you ascend twice

C1

C2

C2 R2

R2

R1

Oct 2017 IIT Bombay

Page 176: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 51/98

The Need for Multiple Occurrences of a Call Site

Even if data flow values in cyclic call sequence do not change

In terms of staircase diagram

• Interprocedurally valid IFP

Sm, n1,C1, Sp ,C2, Sp,C2, Sp ,Ep,R2,Killn2 ,Ep,R2, n2

• You cannot descend twice, unless you ascend twice

C1

C2

C2 R2

R2

R1

• Even if the data flow values do not change while ascending, you need toascend because they may change while descending

Oct 2017 IIT Bombay

Page 177: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 52/98

Tutorial Problem #2

Is a*b available on line 18 in the following program? On line 15? Construct itssupergraph and argue in terms of interprocedurally valid paths

1. main()

2.

3. c = a*b;

4. p();

5. a = a*b;

6.

7. p()

8. if (...)

9. a = a*b;

10. p();

11.

12. else if (...)

13. c = a * b;

14. p();

15. c = a;

16.

17. else

18. ; /* ignore */

19.

Oct 2017 IIT Bombay

Page 178: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 53/98

Terminating Call String Construction

• For non-recursive programs: Number of call strings is finite

Oct 2017 IIT Bombay

Page 179: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 53/98

Terminating Call String Construction

• For non-recursive programs: Number of call strings is finite

• For recursive programs: Number of call strings could be infinite

Fortunately, the problem is decidable for finite lattices

Oct 2017 IIT Bombay

Page 180: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 53/98

Terminating Call String Construction

• For non-recursive programs: Number of call strings is finite

• For recursive programs: Number of call strings could be infinite

Fortunately, the problem is decidable for finite lattices

All call strings upto the following length must be constructed

Oct 2017 IIT Bombay

Page 181: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 53/98

Terminating Call String Construction

• For non-recursive programs: Number of call strings is finite

• For recursive programs: Number of call strings could be infinite

Fortunately, the problem is decidable for finite lattices

All call strings upto the following length must be constructed

K · (|L|+ 1)2 for general bounded frameworks(L is the overall lattice of data flow values)

Oct 2017 IIT Bombay

Page 182: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 53/98

Terminating Call String Construction

• For non-recursive programs: Number of call strings is finite

• For recursive programs: Number of call strings could be infinite

Fortunately, the problem is decidable for finite lattices

All call strings upto the following length must be constructed

K · (|L|+ 1)2 for general bounded frameworks(L is the overall lattice of data flow values)

K · (|L|+ 1)2 for separable bounded frameworks

(L is the component lattice for an entity)

Oct 2017 IIT Bombay

Page 183: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 53/98

Terminating Call String Construction

• For non-recursive programs: Number of call strings is finite

• For recursive programs: Number of call strings could be infinite

Fortunately, the problem is decidable for finite lattices

All call strings upto the following length must be constructed

K · (|L|+ 1)2 for general bounded frameworks(L is the overall lattice of data flow values)

K · (|L|+ 1)2 for separable bounded frameworks

(L is the component lattice for an entity) K · 3 for bit vector frameworks

Oct 2017 IIT Bombay

Page 184: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 53/98

Terminating Call String Construction

• For non-recursive programs: Number of call strings is finite

• For recursive programs: Number of call strings could be infinite

Fortunately, the problem is decidable for finite lattices

All call strings upto the following length must be constructed

K · (|L|+ 1)2 for general bounded frameworks(L is the overall lattice of data flow values)

K · (|L|+ 1)2 for separable bounded frameworks

(L is the component lattice for an entity) K · 3 for bit vector frameworks 3 occurrences of any call site in a call string for bit vector frameworks

⇒ Not a bound but prescribed necessary length

Oct 2017 IIT Bombay

Page 185: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 53/98

Terminating Call String Construction

• For non-recursive programs: Number of call strings is finite

• For recursive programs: Number of call strings could be infinite

Fortunately, the problem is decidable for finite lattices

All call strings upto the following length must be constructed

K · (|L|+ 1)2 for general bounded frameworks(L is the overall lattice of data flow values)

K · (|L|+ 1)2 for separable bounded frameworks

(L is the component lattice for an entity) K · 3 for bit vector frameworks 3 occurrences of any call site in a call string for bit vector frameworks

⇒ Not a bound but prescribed necessary length

⇒ Large number of long call strings

Oct 2017 IIT Bombay

Page 186: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 54/98

Classical Call String Length

• Notation

IVP(n,m): Interprocedurally valid path from block n to block m CS(ρ): Number of call nodes in ρ that do not have the matching

return node in ρ(length of the call string representing IVP(n,m))

• Claim

Let M = K · (|L|+ 1)2 where K is the number of distinct call sites in anycall chain

Then, for any ρ = IVP(Smain,m) such that

CS(ρ) > M ,

∃ ρ′ = IVP(Smain,m) such that

CS(ρ′) ≤ M, and fρ(BI) = fρ′(BI)

⇒ ρ, the longer path, is redundant for data flow analysis

Oct 2017 IIT Bombay

Page 187: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 55/98

Classical Call String Length

Sharir-Pnueli [1981]

• Consider the smallest prefix ρ0 of ρ such that CS(ρ0) > M

• Consider a triple 〈ci , αi , βi〉 where

αi is the data flow value reaching call node Ci along ρ and βi is the data flow value reaching the corresponding return node Ri

along ρIf Ri is not in ρ, then βi = Ω (undefined)

Oct 2017 IIT Bombay

Page 188: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 56/98

Classical Call String Length

M

ρ0 ρ

Oct 2017 IIT Bombay

Page 189: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 56/98

Classical Call String Length

M

ρ0 ρ

αi βi

〈ci , αi , βi〉

Oct 2017 IIT Bombay

Page 190: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 56/98

Classical Call String Length

M

ρ0 ρ

αj〈cj , αi ,Ω〉

Oct 2017 IIT Bombay

Page 191: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 56/98

Classical Call String Length

M

ρ0 ρ

• Number of distinct triples 〈ci , αi , βi 〉 is M = K · (|L|+ 1)2.

Oct 2017 IIT Bombay

Page 192: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 56/98

Classical Call String Length

M

ρ0 ρ

• Number of distinct triples 〈ci , αi , βi 〉 is M = K · (|L|+ 1)2.

• There are at least two calls from the same call site that have the sameeffect on data flow values

Oct 2017 IIT Bombay

Page 193: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 57/98

Classical Call String Length

When βi is not Ω

M

ρ0 ρ

Oct 2017 IIT Bombay

Page 194: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 57/98

Classical Call String Length

When βi is not Ω

M

ρ0 ρ

αi

αi βi

βi

Oct 2017 IIT Bombay

Page 195: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 57/98

Classical Call String Length

When βi is not Ω

M

ρ′

αi βi

Oct 2017 IIT Bombay

Page 196: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 58/98

Classical Call String Length

When βi is Ω

M

ρ0 ρ

Oct 2017 IIT Bombay

Page 197: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 58/98

Classical Call String Length

When βi is Ω

M

ρ0 ρ

αi

αi

Oct 2017 IIT Bombay

Page 198: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 58/98

Classical Call String Length

When βi is Ω

M

ρ′

αi

Oct 2017 IIT Bombay

Page 199: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 59/98

Tighter Bound for Bit Vector Frameworks

• L is 0, 1, L is 0, 1m

• ⊓ is either boolean AND or boolean OR

• ⊤ and ⊥ are 0 or 1 depending on ⊓.

• h is a bit function and could be one of the following:

Raise Lower Propagate

Oct 2017 IIT Bombay

Page 200: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 60/98

Tighter Bound for Bit Vector Frameworks

Karkare Khedker 2007

• Validity constraints are imposed by the presence of return nodes

• For every cyclic path consisting on Propagate functions, there exists anacyclic path consisting of Propagate functions

• Source of information is a Raise or Lower function

• Target is a point reachable by a series of Propagate functions

• Identifies interesting path segments that we need to consider fordetermining a sufficient set of call strings

Oct 2017 IIT Bombay

Page 201: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 61/98

Relevant Path Segments for Tigher Bound for Bit VectorFrameworks

Source Target

Oct 2017 IIT Bombay

Page 202: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 61/98

Relevant Path Segments for Tigher Bound for Bit VectorFrameworks

Source Target

Oct 2017 IIT Bombay

Page 203: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 61/98

Relevant Path Segments for Tigher Bound for Bit VectorFrameworks

Source Target

• All paths from Ci to Ri are abstracted away when a callnode Cj is reached after Ri

• Consider maximal interprocedurally valid paths in whichthere is no path from a return node to a call node

Oct 2017 IIT Bombay

Page 204: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 62/98

Relevant Path Segments for Tigher Bound for Bit VectorFrameworks

Consider all four combinations

• Case A: Source is a call node and target is a call node

• Case B: Source is a call node and target is a return node

• Case C: Source is a return node and target is also a return node

• Case D: Source is a return node and target is a call node:

Not relevant

Oct 2017 IIT Bombay

Page 205: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 63/98

Tighter Length for Bit Vector Frameworks

Case A:Source is a call node and target is also a call node P(I CS CT )

• No return node, no validity constraints

• Paths P(I CS ) and Paths P(CS CT ) can be acyclic

• A call node may be common to both segments

• At most 2 occurrences of a call site

Oct 2017 IIT Bombay

Page 206: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 64/98

Tighter Length for Bit Vector Frameworks

Case B:Source is a call node CS and target is some return node RT

Oct 2017 IIT Bombay

Page 207: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 64/98

Tighter Length for Bit Vector Frameworks

Case B:Source is a call node CS and target is some return node RT

• P(I CS CT RT )

• P(I CT CS RS RT )

Oct 2017 IIT Bombay

Page 208: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 64/98

Tighter Length for Bit Vector Frameworks

Case B:Source is a call node CS and target is some return node RT

• P(I CS CT RT )

Call strings are derived from the paths P(I CS CT CL) whereCL is the last call node

Oct 2017 IIT Bombay

Page 209: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 64/98

Tighter Length for Bit Vector Frameworks

Case B:Source is a call node CS and target is some return node RT

• P(I CS CT RT )

Call strings are derived from the paths P(I CS CT CL) whereCL is the last call node

Thus there are three acyclic segmentsP(I CS), P(CS CT ), and P(CT CL)

Oct 2017 IIT Bombay

Page 210: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 64/98

Tighter Length for Bit Vector Frameworks

Case B:Source is a call node CS and target is some return node RT

• P(I CS CT RT )

Call strings are derived from the paths P(I CS CT CL) whereCL is the last call node

Thus there are three acyclic segmentsP(I CS), P(CS CT ), and P(CT CL)

A call node may be shared in all three⇒ At most 3 occurrences of a call site

Oct 2017 IIT Bombay

Page 211: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 64/98

Tighter Length for Bit Vector Frameworks

Case B:Source is a call node CS and target is some return node RT

• P(I CS CT RT )

Call strings are derived from the paths P(I CS CT CL) whereCL is the last call node

Thus there are three acyclic segmentsP(I CS), P(CS CT ), and P(CT CL)

A call node may be shared in all three⇒ At most 3 occurrences of a call site

• P(I CT CS RS RT )

CT is required because of validity constraints

Oct 2017 IIT Bombay

Page 212: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 64/98

Tighter Length for Bit Vector Frameworks

Case B:Source is a call node CS and target is some return node RT

• P(I CS CT RT )

Call strings are derived from the paths P(I CS CT CL) whereCL is the last call node

Thus there are three acyclic segmentsP(I CS), P(CS CT ), and P(CT CL)

A call node may be shared in all three⇒ At most 3 occurrences of a call site

• P(I CT CS RS RT )

CT is required because of validity constraints Call strings are derived from the paths P(I CT CS CL) where

CL is the last call node

Oct 2017 IIT Bombay

Page 213: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 64/98

Tighter Length for Bit Vector Frameworks

Case B:Source is a call node CS and target is some return node RT

• P(I CS CT RT )

Call strings are derived from the paths P(I CS CT CL) whereCL is the last call node

Thus there are three acyclic segmentsP(I CS), P(CS CT ), and P(CT CL)

A call node may be shared in all three⇒ At most 3 occurrences of a call site

• P(I CT CS RS RT )

CT is required because of validity constraints Call strings are derived from the paths P(I CT CS CL) where

CL is the last call node Again, there are three acyclic segments and at most 3 occurrences of

a call site

Oct 2017 IIT Bombay

Page 214: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 65/98

Tighter Length for Bit Vector Frameworks

Case C:Source is a return node RS and target is also some return node RT

• P(I CT CS RS RT )

• CT and CS are required because of validity constraints

• Call strings are derived from the paths P(I CT CS CL) where CL isthe last call node

• Again, there are three acyclic segments and at most 3 occurrences of acall site

Oct 2017 IIT Bombay

Page 215: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

Oct 2017 IIT Bombay

Page 216: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim−1 | x〉Call string of length m − 1

Oct 2017 IIT Bombay

Page 217: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim−1 | x〉Call string of length m − 1

〈Ci1 · Ci2 . . .Cim−1 · Ca | x〉Call string of length m

Oct 2017 IIT Bombay

Page 218: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim−1 | x〉Call string of length m − 1

〈Ci1 · Ci2 . . .Cim−1 · Ca | x〉Call string of length m

〈Ci1 · Ci2 . . .Cim−1 · Ca | y〉

Oct 2017 IIT Bombay

Page 219: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim−1 | x〉Call string of length m − 1

〈Ci1 · Ci2 . . .Cim−1 · Ca | x〉Call string of length m

〈Ci1 · Ci2 . . .Cim−1 · Ca | y〉

〈Ci1 · Ci2 . . .Cim−1 | y〉

Oct 2017 IIT Bombay

Page 220: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim | x〉Call string of length m

Oct 2017 IIT Bombay

Page 221: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim | x〉Call string of length m

〈Ci2 . . .Cim · Ca | x〉Call string of length m

(First call site ci1 removedfrom incoming call stringand call site ca attached)

Oct 2017 IIT Bombay

Page 222: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim | x〉Call string of length m

〈Ci2 . . .Cim · Ca | x〉Call string of length m

(First call site ci1 removedfrom incoming call stringand call site ca attached) 〈Ci2 . . .Cim · Ca | y〉

Oct 2017 IIT Bombay

Page 223: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim | x〉Call string of length m

〈Ci2 . . .Cim · Ca | x〉Call string of length m

(First call site ci1 removedfrom incoming call stringand call site ca attached) 〈Ci2 . . .Cim · Ca | y〉

〈Ci1 · Ci2 . . .Cim | y〉

Oct 2017 IIT Bombay

Page 224: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim | x1〉

Oct 2017 IIT Bombay

Page 225: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim | x1〉 〈Cj1 · Ci2 . . .Cim | x2〉

Oct 2017 IIT Bombay

Page 226: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim | x1〉 〈Cj1 · Ci2 . . .Cim | x2〉

〈Ci2 · Ci3 . . .Cim · Ca | x1 ⊓ x2〉

Oct 2017 IIT Bombay

Page 227: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim | x1〉 〈Cj1 · Ci2 . . .Cim | x2〉

〈Ci2 · Ci3 . . .Cim · Ca | x1 ⊓ x2〉

〈Ci2 · Ci3 . . .Cim · Ca | y〉

Oct 2017 IIT Bombay

Page 228: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim | x1〉 〈Cj1 · Ci2 . . .Cim | x2〉

〈Ci2 · Ci3 . . .Cim · Ca | x1 ⊓ x2〉

〈Ci2 · Ci3 . . .Cim · Ca | y〉

〈Ci1 · Ci2 . . .Cim | y〉 〈Cj1 · Ci2 . . .Cim | y〉

Oct 2017 IIT Bombay

Page 229: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 66/98

Classical Approximate Call Strings Approach

• Maintain call string suffixes of upto a given length m

Ca

Ra

〈Ci1 · Ci2 . . .Cim | x1〉 〈Cj1 · Ci2 . . .Cim | x2〉

〈Ci2 · Ci3 . . .Cim · Ca | x1 ⊓ x2〉

〈Ci2 · Ci3 . . .Cim · Ca | y〉

〈Ci1 · Ci2 . . .Cim | y〉 〈Cj1 · Ci2 . . .Cim | y〉

• Practical choices of m have been 1 or 2

Oct 2017 IIT Bombay

Page 230: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 67/98

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉

Oct 2017 IIT Bombay

Page 231: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 67/98

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉

〈Cb · Ca | x1〉

Oct 2017 IIT Bombay

Page 232: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 67/98

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉

〈Cb · Ca | x1〉

〈Cb · Ca | x2〉

Oct 2017 IIT Bombay

Page 233: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 67/98

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉 〈Cb · Ca | x2〉

〈Cb · Ca | x1〉, 〈Ca · Ca | x2〉

Oct 2017 IIT Bombay

Page 234: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 67/98

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉

〈Cb · Ca | x1〉, 〈Ca · Ca | x2〉

〈Cb · Ca | x2〉, 〈Ca · Ca | x3〉

Oct 2017 IIT Bombay

Page 235: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 67/98

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉 〈Cb · Ca | x2〉, 〈Ca · Ca | x3〉

〈Cb · Ca | x1〉, 〈Ca · Ca | x2 ⊓ x3〉

Oct 2017 IIT Bombay

Page 236: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 67/98

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉

〈Cb · Ca | x1〉, 〈Ca · Ca | x2 ⊓ x3〉

〈Cb · Ca | x2〉, 〈Ca · Ca | x4〉

Oct 2017 IIT Bombay

Page 237: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 67/98

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉 〈Cb · Ca | x2〉, 〈Ca · Ca | x4〉

〈Cb · Ca | x1〉, 〈Ca · Ca | x5〉

Oct 2017 IIT Bombay

Page 238: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 67/98

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉 〈Cb · Ca | x2〉, 〈Ca · Ca | x4〉

〈Cb · Ca | x1〉, 〈Ca · Ca | x5〉

〈Cb · Ca | y1〉, 〈Ca · Ca | y2〉

Oct 2017 IIT Bombay

Page 239: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 67/98

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉 〈Cb · Ca | x2〉, 〈Ca · Ca | x4〉

〈Cb · Ca | x1〉, 〈Ca · Ca | x5〉

〈Cb · Ca | y1〉, 〈Ca · Ca | y2〉

〈Cb | y1〉 〈Cb · Ca | y2〉, 〈Ca · Ca | y2〉

Oct 2017 IIT Bombay

Page 240: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: Classical Call Strings Approach 67/98

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉 〈Cb · Ca | x2〉, 〈Ca · Ca | x4〉

〈Cb · Ca | x1〉, 〈Ca · Ca | x5〉

〈Cb · Ca | y1〉, 〈Ca · Ca | y2〉

〈Cb | y1〉 〈Cb · Ca | y2〉, 〈Ca · Ca | y2〉

Oct 2017 IIT Bombay

Page 241: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

Part 5

IPDFA Using Value Contexts

Page 242: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 68/98

Value Contexts: Key Ideas

Consider call chains σ1 and σ2 reaching Sp

• Data flow value invariant:

If the data flow reaching Sp along σ1 and σ2 are identical, then

Oct 2017 IIT Bombay

Page 243: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 68/98

Value Contexts: Key Ideas

Consider call chains σ1 and σ2 reaching Sp

• Data flow value invariant:

If the data flow reaching Sp along σ1 and σ2 are identical, then

the data flow values reaching Ep for the two contexts will also beidentical

Oct 2017 IIT Bombay

Page 244: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 68/98

Value Contexts: Key Ideas

Consider call chains σ1 and σ2 reaching Sp

• Data flow value invariant:

If the data flow reaching Sp along σ1 and σ2 are identical, then

the data flow values reaching Ep for the two contexts will also beidentical

• We can reduce the amount of effort by using

Data flow values at Sp as value contexts Maintaining distinct data flow values in p for each value context

Oct 2017 IIT Bombay

Page 245: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 69/98

Interprocedural Data Flow Analysis Using Value Contexts

• A value context is defined by a particular input data flow value reaching aprocedure

• It is used to enumerate the summary flow functions in terms of(input 7→ output) pairs

• In order to compute these pairs, data flow analysis within a procedure isperformed separately for each context (i.e. input data flow value)

• When a new call to a procedure is encounterd, the pairs are consulted dodecide if the procedure needs to be analysed again

If it was already analysed once for the input value, output can bedirectly processed

Otherwise, a new context is created and the procedure is analysed forthis new context

Oct 2017 IIT Bombay

Page 246: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 70/98

Understanding Value Contexts

Sp

Ci

Ri

Ep

Sq

Eq

Call q

σ0x0

σ1x1

σ2x1

σ3x2

σ4x3

Oct 2017 IIT Bombay

Page 247: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 70/98

Understanding Value Contexts

Sp

Ci

Ri

Ep

Sq

Eq

Call q

σ0x0

σ1x1

σ2x1

σ3x2

σ4x3

s0 s1 s2 s3

Separate contexts arecreated for each uniquedata flow value

Oct 2017 IIT Bombay

Page 248: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 70/98

Understanding Value Contexts

Sp

Ci

Ri

Ep

Sq

Eq

Call q

σ0x0

σ1x1

σ2x1

σ3x2

σ4x3

s0 s1 s2 s3

Oct 2017 IIT Bombay

Page 249: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 70/98

Understanding Value Contexts

Sp

Ci

Ri

Ep

Sq

Eq

Call q

σ0x0

σ1x1

σ2x1

σ3x2

σ4x3

s0 s1 s2 s3

s3x ′3

s2x ′1

s1x ′1

s0x ′0

Distinct data flow values aremaintained for each context

(i.e. each procedure is analysedseparately for each context)

Oct 2017 IIT Bombay

Page 250: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 70/98

Understanding Value Contexts

Sp

Ci

Ri

Ep

Sq

Eq

σ0x0

σ1x1

σ2x1

σ3x2

σ4x3

s0 s1 s2 s3

s3x ′3

s2x ′1

s1x ′1

s0x ′0

s0cix ′0

s1cix ′1

s2cix ′1

s3cix ′3

New contexts are created fordata flow values reaching q

Context transitions on callsites are recorded globally

Oct 2017 IIT Bombay

Page 251: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 70/98

Understanding Value Contexts

Sp

Ci

Ri

Ep

Sq

Eq

σ0x0

σ1x1

σ2x1

σ3x2

σ4x3

s0 s1 s2 s3

s3x ′3

s2x ′1

s1x ′1

s0x ′0

s0cix ′0

s1cix ′1

s2cix ′1

s3cix ′3

s4 s5 s6

s0

s1

s2

s3

s4

s5

s6

ci

ci

ci

ci

New contexts are created fordata flow values reaching q

Context transitions on callsites are recorded globally

Oct 2017 IIT Bombay

Page 252: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 70/98

Understanding Value Contexts

Sp

Ci

Ri

Ep

Sq

Eq

σ0x0

σ1x1

σ2x1

σ3x2

σ4x3

s0 s1 s2 s3

s3x ′3

s2x ′1

s1x ′1

s0x ′0

s0cix ′0

s1cix ′1

s2cix ′1

s3cix ′3

s4 s5 s6

s4x ′0

s5x ′1

s6x ′3

s0

s1

s2

s3

s4

s5

s6

ci

ci

ci

ci

Oct 2017 IIT Bombay

Page 253: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 70/98

Understanding Value Contexts

Sp

Ci

Ri

Ep

Sq

Eq

σ0x0

σ1x1

σ2x1

σ3x2

σ4x3

s0 s1 s2 s3

s3x ′3

s2x ′1

s1x ′1

s0x ′0

s0cix ′0

s1cix ′1

s2cix ′1

s3cix ′3

s4 s5 s6

s4x ′0

s5x ′1

s6x ′3

s4y ′0

s5y ′1

s6y ′3

s0

s1

s2

s3

s4

s5

s6

ci

ci

ci

ci

Oct 2017 IIT Bombay

Page 254: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 70/98

Understanding Value Contexts

Sp

Ci

Ri

Ep

Sq

Eq

σ0x0

σ1x1

σ2x1

σ3x2

σ4x3

s0 s1 s2 s3

s3x ′3

s2x ′1

s1x ′1

s0x ′0

s0cix ′0

s1cix ′1

s2cix ′1

s3cix ′3

s4 s5 s6

s4x ′0

s5x ′1

s6x ′3

s4y ′0

s5y ′1

s6y ′3

s0ciy ′0

s1ciy ′1

s2ciy ′1

s3ciy ′3

s0

s1

s2

s3

s4

s5

s6

ci

ci

ci

ci

Context transitions are con-sulted to transfer data flowvalues to calling contexts

Oct 2017 IIT Bombay

Page 255: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 70/98

Understanding Value Contexts

Sp

Ci

Ri

Ep

Sq

Eq

σ0x0

σ1x1

σ2x1

σ3x2

σ4x3

s0 s1 s2 s3

s3x ′3

s2x ′1

s1x ′1

s0x ′0

s0cix ′0

s1cix ′1

s2cix ′1

s3cix ′3

s4 s5 s6

s4x ′0

s5x ′1

s6x ′3

s4y ′0

s5y ′1

s6y ′3

s0ciy ′0

s1ciy ′1

s2ciy ′1

s3ciy ′3

s3y ′3

s2y ′1

s1y ′1

s0y ′0

s0

s1

s2

s3

s4

s5

s6

ci

ci

ci

ci

Context transitions are con-sulted to transfer data flowvalues to calling contexts

Oct 2017 IIT Bombay

Page 256: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 70/98

Understanding Value Contexts

Sp

Ci

Ri

Ep

Sq

Eq

σ0x0

σ1x1

σ2x1

σ3x2

σ4x3

s0 s1 s2 s3

s3x ′3

s2x ′1

s1x ′1

s0x ′0

s0cix ′0

s1cix ′1

s2cix ′1

s3cix ′3

s4 s5 s6

s4x ′0

s5x ′1

s6x ′3

s4y ′0

s5y ′1

s6y ′3

s0ciy ′0

s1ciy ′1

s2ciy ′1

s3ciy ′3

s3y ′3

s2y ′1

s1y ′1

s0y ′0

s3y3

s2y1

s1y1

s0y0

s0

s1

s2

s3

s4

s5

s6

ci

ci

ci

ci

Oct 2017 IIT Bombay

Page 257: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 70/98

Understanding Value Contexts

Sp

Ci

Ri

Ep

Sq

Eq

σ0x0

σ1x1

σ2x1

σ3x2

σ4x3

s0 s1 s2 s3

s3x ′3

s2x ′1

s1x ′1

s0x ′0

s0cix ′0

s1cix ′1

s2cix ′1

s3cix ′3

s4 s5 s6

s4x ′0

s5x ′1

s6x ′3

s4y ′0

s5y ′1

s6y ′3

s0ciy ′0

s1ciy ′1

s2ciy ′1

s3ciy ′3

s3y ′3

s2y ′1

s1y ′1

s0y ′0

s3y3

s2y1

s1y1

s0y0

s0

s1

s2

s3

s4

s5

s6

ci

ci

ci

ci

σ0y0

σ1y1

σ2y1

σ3y1

σ4y3

Oct 2017 IIT Bombay

Page 258: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 70/98

Understanding Value Contexts

Sp

Ci

Ri

Ep

Sq

Eq

σ0x0

σ1x1

σ2x1

σ3x2

σ4x3

s0 s1 s2 s3

s3x ′3

s2x ′1

s1x ′1

s0x ′0

s0cix ′0

s1cix ′1

s2cix ′1

s3cix ′3

s4 s5 s6

s4x ′0

s5x ′1

s6x ′3

s4y ′0

s5y ′1

s6y ′3

s0ciy ′0

s1ciy ′1

s2ciy ′1

s3ciy ′3

s3y ′3

s2y ′1

s1y ′1

s0y ′0

s3y3

s2y1

s1y1

s0y0

s0

s1

s2

s3

s4

s5

s6

ci

ci

ci

ci

σ0y0

σ1y1

σ2y1

σ3y1

σ4y3

Oct 2017 IIT Bombay

Page 259: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 71/98

Defining Value Contexts

• The set of value contexts is VC = Procs× L

A value context X = 〈proc , entryValue〉 ∈ VC

where proc ∈ Procs and entryValue ∈ L

Oct 2017 IIT Bombay

Page 260: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 71/98

Defining Value Contexts

• The set of value contexts is VC = Procs× L

A value context X = 〈proc , entryValue〉 ∈ VC

where proc ∈ Procs and entryValue ∈ L

• Supporting functions (CS is the set of call sites)

exitValue : VC 7→ L

transitions : (VC× CS) 7→ VC

Oct 2017 IIT Bombay

Page 261: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 71/98

Defining Value Contexts

• The set of value contexts is VC = Procs× L

A value context X = 〈proc , entryValue〉 ∈ VC

where proc ∈ Procs and entryValue ∈ L

• Supporting functions (CS is the set of call sites)

exitValue : VC 7→ L eg. exitValue(X ) = v

transitions : (VC× CS) 7→ VC eg. XCi→ Y

Oct 2017 IIT Bombay

Page 262: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 72/98

Interprocedural Data Flow Analysis Using Value Contexts

• The method works with a collection of control flow graphs

No need of supergraph

No need to distinguish between Ci and Ri

No need of call (Ci → Sp) and return (Ep → Ei) edges

• Maintain a work list WL of entries 〈context, node〉

(in reverse post order of nodes within a procedure for forward flows)

• Notation:

〈p,v〉 Context for procedure p with data flow value v

X |m Work list entry for context X for node m

X .v Data flow value in context X is v

Outm[X ] Data flow value of context X in Outm

XCi→ Y Transition from context X to context Y at call site Ci

Oct 2017 IIT Bombay

Page 263: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 73/98

Interprocedural Data Flow Analysis Using Value Contexts:An Overview

• Select X |n from WL. Compute Inn.

Oct 2017 IIT Bombay

Page 264: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 73/98

Interprocedural Data Flow Analysis Using Value Contexts:An Overview

• Select X |n from WL. Compute Inn.

If n = Ci calling procedure p

If n = Ep

If n is some other node

Oct 2017 IIT Bombay

Page 265: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 73/98

Interprocedural Data Flow Analysis Using Value Contexts:An Overview

• Select X |n from WL. Compute Inn.

If n = Ci calling procedure p

Propagate Inn to appropriate value context of the callee procedure p

If n = Ep

If n is some other node

Oct 2017 IIT Bombay

Page 266: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 73/98

Interprocedural Data Flow Analysis Using Value Contexts:An Overview

• Select X |n from WL. Compute Inn.

If n = Ci calling procedure p

If n = Ep

Propagate Inn to appropriate value contexts of the callers of p

If n is some other node

Oct 2017 IIT Bombay

Page 267: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 73/98

Interprocedural Data Flow Analysis Using Value Contexts:An Overview

• Select X |n from WL. Compute Inn.

If n = Ci calling procedure p

If n = Ep

If n is some other nodeCompute Outn

Oct 2017 IIT Bombay

Page 268: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 73/98

Interprocedural Data Flow Analysis Using Value Contexts:An Overview

• Select X |n from WL. Compute Inn.

If n = Ci calling procedure p

If n = Ep

If n is some other node

Update WL

Oct 2017 IIT Bombay

Page 269: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 73/98

Interprocedural Data Flow Analysis Using Value Contexts:An Overview

• Select X |n from WL. Compute Inn.

If n = Ci calling procedure p

Propagate Inn to appropriate value context of the callee procedure p

If n = Ep

Propagate Inn to appropriate value contexts of the callers of p

If n is some other nodeCompute Outn

Update WL

Oct 2017 IIT Bombay

Page 270: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 73/98

Interprocedural Data Flow Analysis Using Value Contexts:An Overview

• Select X |n from WL. Compute Inn.

If n = Ci calling procedure p

Propagate Inn to appropriate value context of the callee procedure p

If n = Ep

Propagate Inn to appropriate value contexts of the callers of p

If n is some other nodeCompute Outn

Update WL

• Repeat until WL is empty

Oct 2017 IIT Bombay

Page 271: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 74/98

Interprocedural Data Flow Analysis Using Value Contexts (2)

Select X |n from WL. Compute Inn. Let X .v be in Inn

Oct 2017 IIT Bombay

Page 272: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 74/98

Interprocedural Data Flow Analysis Using Value Contexts (2)

Select X |n from WL. Compute Inn. Let X .v be in Inn

• If n = Ci calling procedure p

Oct 2017 IIT Bombay

Page 273: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 74/98

Interprocedural Data Flow Analysis Using Value Contexts (2)

Select X |n from WL. Compute Inn. Let X .v be in Inn

• If n = Ci calling procedure p

If some context 〈p,v〉 exists (say Y ) /* p is the callee */

If it does not exist

Oct 2017 IIT Bombay

Page 274: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 74/98

Interprocedural Data Flow Analysis Using Value Contexts (2)

Select X |n from WL. Compute Inn. Let X .v be in Inn

• If n = Ci calling procedure p

If some context 〈p,v〉 exists (say Y ) /* p is the callee */

record the transition XCi→ Y

OutCi[X ] = OutCi

[X ] ⊓ exitValue(Y ) if there is a change, add X |m, ∀m ∈ succ(Ci ) to WL

If it does not exist

Oct 2017 IIT Bombay

Page 275: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 74/98

Interprocedural Data Flow Analysis Using Value Contexts (2)

Select X |n from WL. Compute Inn. Let X .v be in Inn

• If n = Ci calling procedure p

If some context 〈p,v〉 exists (say Y ) /* p is the callee */

If it does not exist create a new context Y = 〈p,v〉 /* p is the callee */ initialize exitValue(Y ) = ⊤

record the transition XCi→ Y

initialize Outm[Y ] = ⊤ for all nodes m of procedure p

add entries Y |m for all nodes m of procedure p to WL

Oct 2017 IIT Bombay

Page 276: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 74/98

Interprocedural Data Flow Analysis Using Value Contexts (2)

Select X |n from WL. Compute Inn. Let X .v be in Inn

• If n = Ci calling procedure p

If some context 〈p,v〉 exists (say Y ) /* p is the callee */

record the transition XCi→ Y

OutCi[X ] = OutCi

[X ] ⊓ exitValue(Y ) if there is a change, add X |m, ∀m ∈ succ(Ci ) to WL

If it does not exist create a new context Y = 〈p,v〉 /* p is the callee */ initialize exitValue(Y ) = ⊤

record the transition XCi→ Y

initialize Outm[Y ] = ⊤ for all nodes m of procedure p

add entries Y |m for all nodes m of procedure p to WL

Oct 2017 IIT Bombay

Page 277: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 75/98

Interprocedural Data Flow Analysis Using Value Contexts (3)

Select X |n from WL. Compute Inn. Let X .v be in Inn

Oct 2017 IIT Bombay

Page 278: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 75/98

Interprocedural Data Flow Analysis Using Value Contexts (3)

Select X |n from WL. Compute Inn. Let X .v be in Inn

• If n = Ep

• For all other nodes

Oct 2017 IIT Bombay

Page 279: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 75/98

Interprocedural Data Flow Analysis Using Value Contexts (3)

Select X |n from WL. Compute Inn. Let X .v be in Inn

• If n = Ep

Set exitValue(X ) = v /* Ep is an empty block */

• For all other nodes

Oct 2017 IIT Bombay

Page 280: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 75/98

Interprocedural Data Flow Analysis Using Value Contexts (3)

Select X |n from WL. Compute Inn. Let X .v be in Inn

• If n = Ep

Set exitValue(X ) = v /* Ep is an empty block */

Find out all transitions ZCj

→ X

Set OutCj[Z ] = OutCj

[Z ] ⊓ v

If there is a change, add Z |m, ∀m ∈ succ(Cj) to WL

• For all other nodes

Oct 2017 IIT Bombay

Page 281: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 75/98

Interprocedural Data Flow Analysis Using Value Contexts (3)

Select X |n from WL. Compute Inn. Let X .v be in Inn

• If n = Ep

• For all other nodes

Set Outn[X ] = fn(v)

Oct 2017 IIT Bombay

Page 282: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 75/98

Interprocedural Data Flow Analysis Using Value Contexts (3)

Select X |n from WL. Compute Inn. Let X .v be in Inn

• If n = Ep

Set exitValue(X ) = v /* Ep is an empty block */

Find out all transitions ZCj

→ X

Set OutCj[Z ] = OutCj

[Z ] ⊓ v

If there is a change, add Z |m, ∀m ∈ succ(Cj) to WL

• For all other nodes

Set Outn[X ] = fn(v) If there is a change, add X |m, ∀m ∈ succ(n) to WL

Oct 2017 IIT Bombay

Page 283: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 76/98

Available Expressions Analysis Using Value Contexts

Smainread a, bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Oct 2017 IIT Bombay

Page 284: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 76/98

Available Expressions Analysis Using Value Contexts

Smainread a, bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Is a ∗ bavailable?

Oct 2017 IIT Bombay

Page 285: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 76/98

Available Expressions Analysis Using Value Contexts

Smainread a, bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Is a ∗ bavailable?

int a, b, t;

void p()

if (a == 0)

a = a-1;

p();

t = a∗b;

Oct 2017 IIT Bombay

Page 286: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 76/98

Available Expressions Analysis Using Value Contexts

Smainread a, bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a − 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Is a ∗ bavailable?

int a, b, t;

void p()

if (a == 0)

a = a-1;

p();

t = a∗b;

Yes!

Oct 2017 IIT Bombay

Page 287: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Oct 2017 IIT Bombay

Page 288: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Create a new context X0 with BI whichis 0 for available expressions analysis

X0.0

Oct 2017 IIT Bombay

Page 289: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1X0

Create a new context X0 with BI whichis 0 for available expressions analysis

Initialize exitValue(X0) to ⊤ = 1

Initialize the work list with all nodes inprocedure main for X0

Initialize Outn[X0] for all n in main to ⊤

WL = [X0|Sm,X0|C1,X0|n1,X0|Em]

X0.0

Oct 2017 IIT Bombay

Page 290: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1X0

Compute the data flow values forSm for context X0

WL = [X0|Sm,X0|C1,X0|n1,X0|Em]

X0.0

Oct 2017 IIT Bombay

Page 291: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1X0

Compute the data flow values forSm for context X0

It does not change

WL = [X0|C1,X0|n1,X0|Em]

X0.0

X0.1

Oct 2017 IIT Bombay

Page 292: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1X0

WL = [X0|C1,X0|n1,X0|Em]

X0.0

X0.1

Oct 2017 IIT Bombay

Page 293: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X0 X1C1

Create a new context X1 with entryvalue 1

Record the transition to X1

Initialize exitValue(X1) to ⊤ = 1

Add all nodes of procedure p to thework list for X1

Initialize Outn[X1] for all n in p to ⊤

WL = [X1|Sp,X1|n2,X1|C2,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

Oct 2017 IIT Bombay

Page 294: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X0 X1C1

WL = [X1|Sp,X1|n2,X1|C2,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

Oct 2017 IIT Bombay

Page 295: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X0 X1C1

WL = [X1|n2,X1|C2,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

Oct 2017 IIT Bombay

Page 296: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X0 X1C1

WL = [X1|n2,X1|C2,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

Oct 2017 IIT Bombay

Page 297: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X0 X1C1

WL = [X1|n2,X1|C2,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

Oct 2017 IIT Bombay

Page 298: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X0 X1C1

WL = [X1|C2,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

Oct 2017 IIT Bombay

Page 299: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X0 X1C1

WL = [X1|C2,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

Oct 2017 IIT Bombay

Page 300: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 1

X0 X1C1

X2C2

Since there is no context for p

with value 0, create context X2

Record the transition to X2

Initialize exitValue(X2) to ⊤ = 1

Add all nodes of procedure p

to the work list for X2 Initialize

Outn[X2] for all n in p to ⊤

WL = [X1|C2,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

Oct 2017 IIT Bombay

Page 301: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 1

X0 X1C1

X2C2

WL = [X2|Sp,X2|n2,X2|C2,X2|n3,X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

Oct 2017 IIT Bombay

Page 302: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 1

X0 X1C1

X2C2

WL = [X2|Sp,X2|n2,X2|C2,X2|n3,X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

Oct 2017 IIT Bombay

Page 303: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 1

X0 X1C1

X2C2

WL = [X2|n2,X2|C2,X2|n3,X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

Oct 2017 IIT Bombay

Page 304: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 1

X0 X1C1

X2C2

WL = [X2|n2,X2|C2,X2|n3,X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

Oct 2017 IIT Bombay

Page 305: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 1

X0 X1C1

X2C2

WL = [X2|C2,X2|n3,X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

Oct 2017 IIT Bombay

Page 306: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 1

X0 X1C1

X2C2

p has context X2 with value 0 sono need to create a new context

WL = [X2|C2,X2|n3,X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

Oct 2017 IIT Bombay

Page 307: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 1

X0 X1C1

X2C2

C2

p has context X2 with value 0 sono need to create a new context

Record the transition from con-text X2 to itself

WL = [X2|C2,X2|n3,X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

Oct 2017 IIT Bombay

Page 308: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 1

X0 X1C1

X2C2

C2

p has context X2 with value 0 sono need to create a new context

Record the transition from con-text X2 to itself

Use the exitValue(X2) to computeOutC2 [X2]

WL = [X2|C2,X2|n3,X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1

Oct 2017 IIT Bombay

Page 309: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 1

X0 X1C1

X2C2

C2

WL = [X2|n3,X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1

Oct 2017 IIT Bombay

Page 310: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 1

X0 X1C1

X2C2

C2

WL = [X2|n3,X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1

X2.1

Oct 2017 IIT Bombay

Page 311: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 1

X0 X1C1

X2C2

C2

WL = [X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1

X2.1

Oct 2017 IIT Bombay

Page 312: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 1

X0 X1C1

X2C2

C2

At Ep the values from Sp and n3are merged for context X2

WL = [X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1

X2.1X2.0

Oct 2017 IIT Bombay

Page 313: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

At Ep the values from Sp and n3are merged for context X2

exitValue(X2) is set to 0

WL = [X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1

X2.1X2.0

X2.0

Oct 2017 IIT Bombay

Page 314: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

At Ep the values from Sp and n3are merged for context X2

exitValue(X2) is set to 0

Since X2 has transitions X1C2→ X2

and X2C2→ X2, OutC2 [X1] and

OutC2 [X2] become 0

WL = [X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

Oct 2017 IIT Bombay

Page 315: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

At Ep the values from Sp and n3are merged for context X2

exitValue(X2) is set to 0

Since X2 has transitions X1C2→ X2

and X2C2→ X2, OutC2 [X1] and

OutC2 [X2] become 0

Since OutC2 [X2] changes, X2|n3 isadded to the work list

WL = [X2|n3,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

Oct 2017 IIT Bombay

Page 316: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

There is no change in Outn3 [X2]

(because it was initialized to ⊤)

WL = [X2|n3,X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

Oct 2017 IIT Bombay

Page 317: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

There is no change in Outn3 [X2]

(because it was initialized to ⊤)

WL = [X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

Oct 2017 IIT Bombay

Page 318: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

There is no change in Outn3 [X1]either

WL = [X1|n3,X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

Oct 2017 IIT Bombay

Page 319: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

There is no change in Outn3 [X1]either

WL = [X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

Oct 2017 IIT Bombay

Page 320: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

At Ep the values from Sp and n3are merged for context X1

WL = [X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

X1.1

X1.1

Oct 2017 IIT Bombay

Page 321: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

At Ep the values from Sp and n3are merged for context X1

exitValue(X1) remains 1

WL = [X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

X1.1

X1.1

Oct 2017 IIT Bombay

Page 322: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

At Ep the values from Sp and n3are merged for context X1

exitValue(X1) remains 1

Since X1 has transition X0C1→ X1,

OutC1 [X0] becomes 1

WL = [X1|Ep ,X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

X1.1

X1.1

X0.1

Oct 2017 IIT Bombay

Page 323: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

WL = [X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

X1.1

X1.1

X0.1

Oct 2017 IIT Bombay

Page 324: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

WL = [X0|n1,X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

X1.1

X1.1

X0.1

X0.1

Oct 2017 IIT Bombay

Page 325: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

WL = [X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

X1.1

X1.1

X0.1

X0.1

Oct 2017 IIT Bombay

Page 326: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

WL = [X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

X1.1

X1.1

X0.1

X0.1

X0.1

Oct 2017 IIT Bombay

Page 327: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

WL = [X0|Em]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

X1.1

X1.1

X0.1

X0.1

X0.1

Oct 2017 IIT Bombay

Page 328: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 77/98

Available Expressions Analysis Using Value Contexts

Smainread a,bt := a ∗ b Smain

C1 call p C1

n1 print a ∗ b n1

Emain a ∗ b Emain

Sp if a == 0 Sp

n2 a = a− 1 n2

C2 call p C2

n3 t = a ∗ b n3

Ep a ∗ b Ep

Context exitValue

X0 = 〈main,0〉 1

X1 = 〈p,1〉 1

X2 = 〈p,0〉 0

X0 X1C1

X2C2

C2

Work list is empty and theanalysis is over

WL = [ ]

X0.0

X0.1

X1.1

X1.1

X1.0

X2.0

X2.0

X2.0

X2.1X2.0

X2.0

X2.0X1.0

X1.1

X1.1

X0.1

X0.1

X0.1

Oct 2017 IIT Bombay

Page 329: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 78/98

A Trace of Value Context Based Analysis (1)

S.No. Work List

Sel.node

Data flowvalue

Newcontext

Newtrans.

exitvalue

Additionto thework list

1 X0= 〈m,0〉 X0.1X0|Sm,X0|C1,

X0|n1,X0|Em

2X0|Sm,X0|C1,X0|n1,X0|Em

Sm OutSm [X0]=1

3 X0|C1,X0|n1,X0|Em C1 X1= 〈p,1〉 X0C1→ X1 X1.1

X1|Sp ,X1|n2,X1|C2,X1|n3,X1|Ep

4X1|Sp ,X1|n2,X1|C2,

X1|n3,X1|Ep ,X0|n1,X0|Em

Sp OutSp [X1]=1

5X1|n2,X1|C2,X1|n3,X1|Ep ,X0|n1,X0|Em

n2 Outn2 [X1]=0

6X1|C2,X1|n3,X1|Ep ,

X0|n1,X0|EmC2 X2= 〈p,0〉 X1

C2→ X2 X2.1X2|Sp ,X2|n2,X2|C2,X2|n3,X2|Ep

7X2|Sp ,X2|n2,X2|C2,

X2|n3,X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em

Sp OutSp [X2]=0

Oct 2017 IIT Bombay

Page 330: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 79/98

A Trace of Value Context Based Analysis (2)

S.No. Work List

Sel.node

Data flowvalue

Newcontext

Newtrans.

exitvalue

Additionto thework list

8X2|n2,X2|C2,X2|n3,X2|Ep,

X1|n3,X1|Ep ,X0|n1,X0|Emn2 Outn2 [X2]=0

9X2|C2,X2|n3,X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em

C2 OutC2 [X2]=1 X2C2→ X2

10X2|n3,X2|Ep ,X1|n3,X1|Ep ,

X0|n1,X0|Emn3 Outn3 [X2]=1

11X2|Ep ,X1|n3,X1|Ep ,X0|n1,X0|Em

Ep

OutEp [X2]=0OutC2 [X2]=0OutC2 [X1]=0

X2.0 X2|n3

12X2|n3,X1|n3,X1|Ep ,X0|n1,X0|Em

n3 No change

13 X1|n3,X1|Ep ,X0|n1,X0|Em n3 Outn3 [X1]=1

14 X1|Ep ,X0|n1,X0|Em EpOutEp [X1]=1OutC1 [X0]=1

X1.1

15 X0|n1,X0|Em n1 Outn1 [X0]=1

16 X0|Em Em OutEm [X0]=1

Oct 2017 IIT Bombay

Page 331: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 80/98

Merging ExitValue with Previous Out Value at the Call Site

Select X |n from WL. Compute Inn. Let X .v be in Inn

• If n = Ci calling procedure p

If some context 〈p,v〉 exists (say Y ) /* p is the callee */

record the transition XCi→ Y

OutCi[X ] = OutCi

[X ] ⊓ exitValue(Y )

if there is a change, add X |m, ∀m ∈ succ(Ci ) to WL

Oct 2017 IIT Bombay

Page 332: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 80/98

Merging ExitValue with Previous Out Value at the Call Site

Select X |n from WL. Compute Inn. Let X .v be in Inn

• If n = Ci calling procedure p

If some context 〈p,v〉 exists (say Y ) /* p is the callee */

record the transition XCi→ Y

OutCi[X ] = OutCi

[X ] ⊓ exitValue(Y )

if there is a change, add X |m, ∀m ∈ succ(Ci ) to WL

Oct 2017 IIT Bombay

Page 333: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 80/98

Merging ExitValue with Previous Out Value at the Call Site

Select X |n from WL. Compute Inn. Let X .v be in Inn

• If n = Ci calling procedure p

If some context 〈p,v〉 exists (say Y ) /* p is the callee */

record the transition XCi→ Y

OutCi[X ] = OutCi

[X ] ⊓ exitValue(Y )

if there is a change, add X |m, ∀m ∈ succ(Ci ) to WL

Analogy:

At the intraprocedural level, we merge the values at the entry ofa loop to compute the glb across all iterations of the loop

At the interprocedural level, we want to compute the glb acrossrepeated calls at the same call site (perhaps in a loop)

Oct 2017 IIT Bombay

Page 334: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

This example illustrates non-termination of analysis if theexitValue is not merged with the previous Out value

We assume thatprocedure main callsprocedure p (and notq) and the expressiona ∗ b is partiallyavailable on entry to p

Oct 2017 IIT Bombay

Page 335: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

0

X1.1

We create context X1

for entry value 1 withexitValue as 0 (⊤ forpartially availableexpressions analysis)

Oct 2017 IIT Bombay

Page 336: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

0

X1.1

X1.1

Oct 2017 IIT Bombay

Page 337: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

0

X1.1

X1.1

X1.1

Value 1 reaches qand a new contextmust be created for it

Oct 2017 IIT Bombay

Page 338: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

0

X1 X2C2

X1.1

X1.1

X1.1

X2.1

We create context X2

for value 1 reaching q

and record atransition from X1 toX2 on C2

Oct 2017 IIT Bombay

Page 339: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

0

X1 X2C2

X1.1

X1.1

X1.1

X2.1

X2.1

Oct 2017 IIT Bombay

Page 340: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

0

X1 X2C2

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0 The expression iskilled in node n2 anddata flow value 0reaches the call siteC3 that calls p

Oct 2017 IIT Bombay

Page 341: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

0

X1 X2C2

X3C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

We create context X3

for the new value (0)reaching p and recordtransition from X2 toX3 on C3

Oct 2017 IIT Bombay

Page 342: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

0

X1 X2C2

X3C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

Oct 2017 IIT Bombay

Page 343: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

0

X1 X2C2

X3C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

And now the value 0reaches q at call site C2

Oct 2017 IIT Bombay

Page 344: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 0

X1 X2C2

X3C3

X4C2

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

We create context X4

for the new value (0)reaching p and recordtransition from X3 toX4 on C2

Oct 2017 IIT Bombay

Page 345: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 0

X1 X2C2

X3C3

X4C2

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

Oct 2017 IIT Bombay

Page 346: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 0

X1 X2C2

X3C3

X4C2

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

And now the value 0reaches p at call site C3

Oct 2017 IIT Bombay

Page 347: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 0

X1 X2C2

X3C3

X4C2

C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0 We already havecontext X3 with entryvalue 0 for p so noneed to analyse p

again

Oct 2017 IIT Bombay

Page 348: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 0

X1 X2C2

X3C3

X4C2

C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

We use the exitValue forX3 to compute OutC3 forthe context X4 (because of

the transition X4C3→ X3)

The analysis of p is not yetover for any context, andso we get the ⊤ value

Oct 2017 IIT Bombay

Page 349: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 0

X1 X2C2

X3C3

X4C2

C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

X4.1

Oct 2017 IIT Bombay

Page 350: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 0

X1 X2C2

X3C3

X4C2

C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

X4.1

X4.1

The analysis of q for X4 isnow and the exitValue ofX4 becomes 1

This change in X4 must bepropagated to X3 in thecaller p (identified from

the transition X3C2→ X4)

Oct 2017 IIT Bombay

Page 351: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 1

X1 X2C2

X3C3

X4C2

C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

X4.1

X4.1

The analysis of q for X4 isnow and the exitValue ofX4 becomes 1

This change in X4 must bepropagated to X3 in thecaller p (identified from

the transition X3C2→ X4)

Oct 2017 IIT Bombay

Page 352: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 1

X1 X2C2

X3C3

X4C2

C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

X4.1

X4.1

X3.1

OutC2 becomes 1 for X3

which changes the valueat Inn2 for X3 to 1

Oct 2017 IIT Bombay

Page 353: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 1

X1 X2C2

X3C3

X4C2

C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

X4.1

X4.1

X3.1

X3.1

OutC2 becomes 1 for X3

which changes the valueat Inn2 for X3 to 1

Oct 2017 IIT Bombay

Page 354: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 1

X1 X2C2

X3C3

X4C2

C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

X4.1

X4.1

X3.1

X3.1

X3.1InC2 becomes 1 for X3

Since we have a contextfor q with entry value 1(X2), we remove the

transition X3C2→ X4 and

add the transitionX3

C2→ X2

Oct 2017 IIT Bombay

Page 355: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 1

X1 X2C2

X3C3

X4C2×

C2 C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

X4.1

X4.1

X3.1

X3.1

X3.1InC2 becomes 1 for X3

Since we have a contextfor q with entry value 1(X2), we remove the

transition X3C2→ X4 and

add the transitionX3

C2→ X2

Oct 2017 IIT Bombay

Page 356: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 1

X1 X2C2

X3C3

X4C2×

C2 C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

X4.1

X4.1

X3.1

X3.1

X3.1

X3.0

We use the exitValue ofX2 to compute thevalue of X3 in OutC2

Oct 2017 IIT Bombay

Page 357: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 1

X1 X2C2

X3C3

X4C2×

C2 C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

X4.1

X4.1

X3.1

X3.1

X3.1

X3.0The value of X3 in Inn2once again becomes 0

Oct 2017 IIT Bombay

Page 358: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 1

X1 X2C2

X3C3

X4C2×

C2 C3

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

X4.1

X4.1

X3.1

X3.1

X3.1

X3.0

The value of X3 in InC2

once again becomes 0

The transition from X3

needs to be restored toX3

C2→ X4 removing the

transition X3C2→ X2

Oct 2017 IIT Bombay

Page 359: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 1

X1 X2C2

X3C3

X4C2

C2 C3×

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

X4.1

X4.1

X3.1

X3.1

X3.1

X3.0

The value of X3 in InC2

once again becomes 0

The transition from X3

needs to be restored toX3

C2→ X4 removing the

transition X3C2→ X2

Oct 2017 IIT Bombay

Page 360: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 1

X1 X2C2

X3C3

X4C2

C2 C3×

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

X4.1

X4.1

X3.1

X3.1

X3.1

X3.0

We use the exitValue ofX4 to compute OutC2

for X3 which once againbecomes 0

Thus we are back to thesame situation

Oct 2017 IIT Bombay

Page 361: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 81/98

Partially Available Expressions Analysis Using Value Contexts

Sp if a = Sp

n2 a = 5 n2

C2 call q C2

Ep a ∗ b Ep

Sq if a = Sq

n2 a = 5 n2

C3 call p C2

n3 a ∗ b n3

Eq a ∗ b Eq

Context exitValue

X1 = 〈p,1〉 0

X2 = 〈q,1〉 0

X3 = 〈p,0〉 0

X4 = 〈q,0〉 1

X1 X2C2

X3C3

X4C2

C2 C3×

X1.1

X1.1

X1.1

X2.1

X2.1

X2.0

X3.0

X3.0

X3.0

X4.0

X4.0

X4.0

X4.0

X4.1

X4.1

X3.1

X3.1

X3.1

X3.0

• The process would not terminate so long as the processing ofthe nodes in the loop continues

• If the work list organization allows processing of Ep, then theexitValue of X3 will also change to 1 which will lead totermination

• Our underlying flow functions are monotonic and a fixed pointexists; non-termination is caused by the algorithm because itsprogress depends on the order of the nodes in the work list

• We avoid this problem by taking a meet at the exit of callnodes when the exit values of existing contexts are used at thecall sites in the callers

Oct 2017 IIT Bombay

Page 362: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 82/98

Defining Value Context Method Using Data Flow Equations

• The overall data flow values Γ are sets of X .v where X is a context andv ∈ L is the underlying data flow value.

• We merge underlying data flow values only if the contexts are same

Γ1 ⊎ Γ2 =X .w | X .u ∈ Γ1 ∧ X .v ∈ Γ2 ⇒ w = u ⊓ v ,

X .u ∈ Γ1 ∧ X .v /∈ Γ2 ⇒ w = u,X .u /∈ Γ1 ∧ X .v ∈ Γ2 ⇒ w = v

Effectively, if a context does not exist in Γ, its value is ⊤ in Γ

• Data flow variables for node n in procedure p are In(p, n) and Out (p, n)

• The flow function for node n in procedure p is f (p, n)

Oct 2017 IIT Bombay

Page 363: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 83/98

Defining Value Context Method Using Data Flow Equations

We assume the following auxiliary functions

• Function context maintains the context information

context(p, v) returns the context of procedure p for entry value v

If no such context exists, the function creates a new context and returns it

• Function exitValue(X ) returns the exit valus of context X

If context X does not exist, the function returns ⊤ ∈ L

• Function gpred extends the predcessor relation pred (which is local to aprocedure) to a global level across procedures

gpred(p, n) =

(q,m) | call site m in q calls p

n is Sp

(p,m) | m ∈ pred(n)

otherwise

Oct 2017 IIT Bombay

Page 364: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 84/98

Defining Value Context Method Using Data Flow Equations

We define data flow equations for a forward data flow analysis

In(p, n) =

X .v | X = context(p, v),Y .v ∈ In(q,m),

(q,m) ∈ gpred(p, n) n is Sp

⊎(p,m)∈gpred(p,n)

Out (p,m) otherwise

Out (p, n) =

Out (p, n)⊎

X .v | X .v ′ ∈ In(p,m),

Y = context(q, v ′),

v = exitValue(Y )

n calls q

X .v | X .v ′ ∈ In(p,m), v = f (p, n)(v ′)

otherwise

Oct 2017 IIT Bombay

Page 365: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 85/98

Value Contexts and Interprocedurally Valid Paths

The role of value contexts in context sensitivity

• Value contexts preserve interprocedurally valid paths

• Value contexts consider only interprocedurally valid paths

We explain this with the help of an example by illustrating paths using a

staircase diagram

Oct 2017 IIT Bombay

Page 366: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 86/98

Value Contexts and Interprocedurally Valid Paths: Example

if (. . .)Smain

call pC1

f a ∗ bEmain

X0.1

X0.0

if (. . .)Sp

call pC2

a = 5n1

call p C3

a ∗ 5 n2

if (. . .)Ep

X1.1,X2.1

X1.0,X2.1

X1.1,X2.1

X1.1,X2.1

Context Transition Table

Context exitValue

X0 : 〈main, 0〉 1X1 : 〈p, 0〉 1X2 : 〈p, 1〉 1

Context Transition Graph

X0 X1 X2

C1C3

C2

C2

C3

Oct 2017 IIT Bombay

Page 367: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 87/98

Value Contexts and Interprocedurally Valid Paths: Example

We explain the data flow value at the entry of C2 by dividing the paths into thefollowing two categories:

A. Paths in which the innermost recursion is along the call at C2.

B. Paths in which the innermost recursion is along the call at C3.

We draw the staircase diagrams of the example paths in the two categories

Oct 2017 IIT Bombay

Page 368: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1 Em

Oct 2017 IIT Bombay

Page 369: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2 n1 Ep

Em

Oct 2017 IIT Bombay

Page 370: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2

Sp C3 n2 Ep

n1 Ep

Em

Oct 2017 IIT Bombay

Page 371: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2

Sp C3

Sp C2 n1 Ep

n2 Ep

n1 Ep

Em

Oct 2017 IIT Bombay

Page 372: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2

Sp C3

Sp C2

Sp Ep

n1 Ep

n2 Ep

n1 Ep

Em

Oct 2017 IIT Bombay

Page 373: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2

Sp C3

Sp C2

Sp Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

BIis 0

Oct 2017 IIT Bombay

Page 374: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2

Sp C3

Sp C2

Sp Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

BIis 0

Oct 2017 IIT Bombay

Page 375: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2

Sp C3

Sp C2

Sp Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

n1 kills the liveness of aNew context is not required

Oct 2017 IIT Bombay

Page 376: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2

Sp C3

Sp C2

Sp Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

n2 generates the liveness of aNew context is required

Oct 2017 IIT Bombay

Page 377: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2

Sp C3

Sp C2

Sp EpX1 (X1.0)

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

exitValue of X1 is 0

(X1.0)

Oct 2017 IIT Bombay

Page 378: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2

Sp C3

Sp C2

Sp EpX1 (X1.0)

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

(X1.0)

exitValue of X2 is 0

(X2.0)

Oct 2017 IIT Bombay

Page 379: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2

Sp C3

Sp C2

Sp EpX1 (X1.0)

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

(X1.0)

(X2.0)

exitValue ofX1 remains 0

(X1.0)

Oct 2017 IIT Bombay

Page 380: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2

Sp C3

Sp C2

Sp EpX1 (X1.0)

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

(X1.0)

(X2.0)

(X1.0)

exitValue ofX1 remains 0

(X1.0)

Oct 2017 IIT Bombay

Page 381: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2

Sp C3

Sp C2

Sp EpX1 (X1.0)

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

(X1.0)

(X2.0)

(X1.0)

(X1.0)

exitValue of X0 is 0

(X0.0)

Oct 2017 IIT Bombay

Page 382: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 88/98

Innermost Recursion Along the Call at C2

Sm C1

Sp C2

Sp C3

Sp C2

Sp EpX1 (X1.0)

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

(X1.0)

(X2.0)

(X1.0)

(X1.0)

(X0.0)

For this example, the innermost calldetermines the exitValue of contexts

Oct 2017 IIT Bombay

Page 383: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1 Em

Oct 2017 IIT Bombay

Page 384: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2 n1 Ep

Em

Oct 2017 IIT Bombay

Page 385: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3 n2 Ep

n1 Ep

Em

Oct 2017 IIT Bombay

Page 386: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2 n1 Ep

n2 Ep

n1 Ep

Em

Oct 2017 IIT Bombay

Page 387: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3 n2 Ep

n1 Ep

n2 Ep

n1 Ep

Em

Oct 2017 IIT Bombay

Page 388: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp Ep

n2 Ep

n1 Ep

n2 Ep

n1 Ep

Em

Oct 2017 IIT Bombay

Page 389: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp Ep

n2 Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

BIis 0

Oct 2017 IIT Bombay

Page 390: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp Ep

n2 Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

n1 kills the liveness of aNew context is not required

Oct 2017 IIT Bombay

Page 391: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp Ep

n2 Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

n1 kills the liveness of aNew context is not required

Oct 2017 IIT Bombay

Page 392: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp Ep

n2 Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

n2 generates the liveness of aNew context is required

Oct 2017 IIT Bombay

Page 393: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp Ep

n2 Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

X1 (X1.0)

n1 kills the liveness of aNew context is not required

Oct 2017 IIT Bombay

Page 394: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp EpX2 (X2.1)

n2 Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

X1 (X1.0)

n2 generates the liveness of aNew context is not required

Oct 2017 IIT Bombay

Page 395: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp EpX2 (X2.1)

n2 Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

X1 (X1.0)

exitValue of X2 is 1 (aftermerging with previous value 0)

(X2.1)

Oct 2017 IIT Bombay

Page 396: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp EpX2 (X2.1)

n2 Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

X1 (X1.0)

(X2.1)

exitValue of X1 is 1 (aftermerging with previous value 0)

(X1.1)

Oct 2017 IIT Bombay

Page 397: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp EpX2 (X2.1)

n2 Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

X1 (X1.0)

(X2.1)

(X1.1)

exitValue ofX2 remains 1

(X2.1)

Oct 2017 IIT Bombay

Page 398: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp EpX2 (X2.1)

n2 Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

X1 (X1.0)

(X2.1)

(X1.1)

(X2.1)

exitValue ofX1 remains 1

(X1.1)

Oct 2017 IIT Bombay

Page 399: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp EpX2 (X2.1)

n2 Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

X1 (X1.0)

(X2.1)

(X1.1)

(X2.1)

(X1.1)

exitValue ofX1 remains 1

(X1.1)

Oct 2017 IIT Bombay

Page 400: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp EpX2 (X2.1)

n2 Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

X1 (X1.0)

(X2.1)

(X1.1)

(X2.1)

(X1.1)

(X1.1)

exitValue of X0 is 1 (aftermerging with previous value 0)

(X0.1)

Oct 2017 IIT Bombay

Page 401: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 89/98

Innermost Recursion Along the Call at C3

Sm C1

Sp C2

Sp C3

Sp C2

Sp C3

Sp EpX2 (X2.1)

n2 Ep

n1 Ep

n2 Ep

n1 Ep

EmX0 (X0.0)

X1 (X1.0)

X1 (X1.0)

X2 (X2.1)

X1 (X1.0)

(X2.1)

(X1.1)

(X2.1)

(X1.1)

(X1.1)

(X0.1)

Again, the innermost call determines the exitValue of contextsThe final values at the entry of C3 are 1 (union of 1 and 0)

Oct 2017 IIT Bombay

Page 402: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 90/98

Tutorial Problem #1 for Value Contexts

1. int a,b,c;

2. void main()

3. c = a*b;

4. p();

5. 6. void p()

7. if (...)

8. p();

9. Is a*b available?10. a = a*b;

11. 12.

a = a ∗ bSmain

c = a ∗ bn1

Call pC1

c = a ∗ bEmain

a = a ∗ b Sp

Call pC2

a = a ∗ bn2

c = a ∗ b Ep

Oct 2017 IIT Bombay

Page 403: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 91/98

Tutorial Problem #2 for Value Contexts

Perform interprocedural live variables analysis using value contexts

main()

p();

p()

while (...)

printf ("%d\n",a);

p();

Observe the change in edges in the transition diagram

Oct 2017 IIT Bombay

Page 404: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 92/98

Tutorial Problem #3 for Value Contexts

Perform interprocedural available expressions analysis using value contexts

main()

c = a*b;

p();

p()

while (a > b)

p();

a = a*b;

Observe the change in edges in the transition diagram

Oct 2017 IIT Bombay

Page 405: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 93/98

Tutorial Problem #4 for Value Contexts

Perform interprocedural available expressions analysis using value contexts

1. main()

2.

3. c = a*b;

4. p();

5. a = a*b;

6.

7. p()

8. if (...)

9. a = a*b;

10. p();

11.

12. else if (...)

13. c = a * b;

14. p();

15. c = a;

16.

17. else

18. ; /* ignore */

19.

Oct 2017 IIT Bombay

Page 406: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 94/98

Tutorial Problem #5 for Value Contexts

Perform interprocedural live variables analysis using value contexts

main()

a = 5; b = 3;

c = 7; d = 2;

p();

a = a + 2;

e = c+d;

d = a*b;

q();

print a+c+e;

p()

b = 2;

if (b<d)

c = a+b;

else

q();

print c+d;

q()

a = 1;

p();

a = a*b;

Context sensitivity: e is live on entry to p but not before its call in main

Oct 2017 IIT Bombay

Page 407: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 95/98

Result of Tutorial #5

main()

a = 5; b = 3;

c = 7; d = 2;

/*a,d*/

p();

/*a,b,c,d*/

a = a + 2;

e = c+d;

/*a,b,e*/

d = a*b;

/*d,e*/

q();

/*a,c,e*/

print a+c+e;

p()

/*a,d,e*/

b = 2;

if (b<d)

/*a,b,d,e*/

c = a+b;

else

/*d,e*/

q();

/*a,b,c,d,e*/

print c+d;

q()

/*d,e*/

a = 1;

/*a,d,e*/

p();

/*a,b,c,d,e*/

a = a*b;

Oct 2017 IIT Bombay

Page 408: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 96/98

Tutorial Problem #6: Interprocedural Points-to Analysis

main()

x = &y;

z = &x;

y = &z;

p(); /* C1 */

p()

if (...)

p(); /* C2 */

x = *x;

Value contexts method requires three contexts asshown below in the transition diagram

X0 X1C1

C2

Oct 2017 IIT Bombay

Page 409: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 97/98

Reaching Definitions Analysis in GCC 4.0

Program LoC #F #C 3K length bound Proposed ApproachK #CS Max Time #CS Max Time

hanoi 33 2 4 4 100000+ 99922 3973 ×103 8 7 2.37bit gray 53 5 11 7 100000+ 31374 2705 ×103 17 6 3.83analyzer 288 14 20 2 21 4 20.33 21 4 1.39distray 331 9 21 6 96 28 322.41 22 4 1.11mason 350 9 13 8 100000+ 22143 432 ×103 14 4 0.43fourinarow 676 17 45 5 510 158 397.76 46 7 1.86sim 1146 13 45 8 100000+ 33546 1427 ×103 211 105 234.16181 mcf 1299 17 24 6 32789 32767 484 ×103 41 11 5.15256 bzip2 3320 63 198 7 492 63 258.33 406 34 200.19

• LoC is the number of lines of code,• #F is the number of procedures,• #C is the number of call sites,• #CS is the number of call strings• Max denotes the maximum number of call strings reaching any node.• Analysis time is in milliseconds.

(Implementation was carried out by Seema Ravandale.)

Oct 2017 IIT Bombay

Page 410: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 98/98

Some Observations

• Compromising on precision may not be necessary for efficiency.

• Separating the necessary information from redundant information is muchmore significant.

• Data flow propagation in real programs seems to involve only a smallsubset of all possible values.

Much fewer changes than the theoretically possible worst case number ofchanges.

• A precise modelling of the process of analysis is often an eye opener.

Oct 2017 IIT Bombay

Page 411: Interprocedural Data Flow Analysis - CSE, IIT Bombayuday/soft-copies/ip-dfa.pdf · CS 618 Interprocedural DFA: ... Program Representation for Interprocedural Data Flow Analysis: Call

CS 618 Interprocedural DFA: IPDFA Using Value Contexts 98/98

Some Observations

• Compromising on precision may not be necessary for efficiency.

• Separating the necessary information from redundant information is muchmore significant.

• Data flow propagation in real programs seems to involve only a smallsubset of all possible values.

Much fewer changes than the theoretically possible worst case number ofchanges.

• A precise modelling of the process of analysis is often an eye opener.

# distinct tagged values =Min (# actual contexts, # actual data flow values)

Oct 2017 IIT Bombay