220
Interprocedural Data Flow Analysis Uday P. Khedker Department of Computer Science and Engineering, Indian Institute of Technology, Bombay May 2011

Interprocedural Data Flow Analysis

  • Upload
    others

  • View
    24

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Interprocedural Data Flow Analysis

Interprocedural Data Flow Analysis

Uday P. Khedker

Department of Computer Science and Engineering,

Indian Institute of Technology, Bombay

May 2011

Page 2: Interprocedural Data Flow Analysis

Part 1

About These Slides

Page 3: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: About These Slides 1/54

Copyright

These slides constitute the lecture notes for

• MACS L111 Advanced Data Flow Analysis course at CambridgeUniversity, and

• CS 618 Program Analysis course at IIT Bombay.

They have been made available under GNU FDL v1.2 or later (purely foracademic or research use) as teaching material accompanying the book:

• Uday Khedker, Amitabha Sanyal, and Bageshri Karkare. Data Flow

Analysis: Theory and Practice. CRC Press (Taylor and FrancisGroup). 2009.

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

• M. S. Hecht. Flow Analysis of Computer Programs. ElsevierNorth-Holland Inc. 1977.

May 2011 Uday Khedker

Page 4: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Outline 2/54

Outline

• Issues in interprocedural analysis

• Functional approach

• The classical call strings approach

• Modified call strings approach

May 2011 Uday Khedker

Page 5: Interprocedural Data Flow Analysis

Part 3

Issues in Interprocedural Analysis

Page 6: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 3/54

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

May 2011 Uday Khedker

Page 7: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 4/54

Inherited and Synthesized Data Flow Information

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

Data Flow Information

xInherited by procedure r fromcall site ci in procedure s

yInherited by procedure r fromcall site cj in procedure t

x ′Synthesized by procedure r ins at call site procedure ci

y ′ Synthesized by procedure r int at call site procedure cj

May 2011 Uday Khedker

Page 8: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 5/54

Inherited and Synthesized Data Flow Information

• Example of uses of inherited data flow information

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?

• Examples of uses of synthesized data flow information

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.

May 2011 Uday Khedker

Page 9: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 6/54

Program Representation for Interprocedural Data FlowAnalysis: Call Multi-Graph

Startmain

a+ b

Call p

a ∗ b

Endmain

Startp a ∗ b Startp

Call q

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Endq a ∗ b Endq

Call p

n4 d = c n4

Supergraphs of procedures

May 2011 Uday Khedker

Page 10: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 6/54

Program Representation for Interprocedural Data FlowAnalysis: Call Multi-Graph

Startmain

a+ b

Call p

a ∗ b

Endmain

Startp a ∗ b Startp

Call q

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Endq a ∗ b Endq

Call p

n4 d = c n4

Supergraphs of procedures

main

Call multi-graph

May 2011 Uday Khedker

Page 11: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 6/54

Program Representation for Interprocedural Data FlowAnalysis: Call Multi-Graph

Startmain

a+ b

Call p

a ∗ b

Endmain

Startp a ∗ b Startp

Call q

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Endq a ∗ b Endq

Call p

n4 d = c n4

Supergraphs of procedures

main

Call multi-graph

proc. p

May 2011 Uday Khedker

Page 12: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 6/54

Program Representation for Interprocedural Data FlowAnalysis: Call Multi-Graph

Startmain

a+ b

Call p

a ∗ b

Endmain

Startp a ∗ b Startp

Call q

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Endq a ∗ b Endq

Call p

n4 d = c n4

Supergraphs of procedures

main

Call multi-graph

proc. p

proc. q

May 2011 Uday Khedker

Page 13: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 6/54

Program Representation for Interprocedural Data FlowAnalysis: Call Multi-Graph

Startmain

a+ b

Call p

a ∗ b

Endmain

Startp a ∗ b Startp

Call q

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Endq a ∗ b Endq

Call p

n4 d = c n4

Supergraphs of procedures

main

Call multi-graph

proc. p

proc. q

May 2011 Uday Khedker

Page 14: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 6/54

Program Representation for Interprocedural Data FlowAnalysis: Call Multi-Graph

Startmain

a+ b

Call p

a ∗ b

Endmain

Startp a ∗ b Startp

Call q

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Endq a ∗ b Endq

Call p

n4 d = c n4

Supergraphs of procedures

main

Call multi-graph

proc. p

proc. q

May 2011 Uday Khedker

Page 15: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 7/54

Program Representation for Interprocedural Data FlowAnalysis: Supergraph

Startmain

a+ b

Call p

a ∗ b

Endmain

Startp a ∗ b Startp

Call q

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

Call p

n3 d + 1 n3

Endq a ∗ b Endq

Call p

n4 d = c n4

May 2011 Uday Khedker

Page 16: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 7/54

Program Representation for Interprocedural Data FlowAnalysis: Supergraph

Startmain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Endmain

Startp a ∗ b Startp

C2 Call q C2

R2 Call q R2

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Endq a ∗ b Endq

C4 Call p C4

R4 Call p R4

n4 d = c n4

May 2011 Uday Khedker

Page 17: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 7/54

Program Representation for Interprocedural Data FlowAnalysis: Supergraph

Startmain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Endmain

Startp a ∗ b Startp

C2 Call q C2

R2 Call q R2

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Endq a ∗ b Endq

C4 Call p C4

R4 Call p R4

n4 d = c n4

May 2011 Uday Khedker

Page 18: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 7/54

Program Representation for Interprocedural Data FlowAnalysis: Supergraph

Startmain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Endmain

Startp a ∗ b Startp

C2 Call q C2

R2 Call q R2

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Endq a ∗ b Endq

C4 Call p C4

R4 Call p R4

n4 d = c n4

May 2011 Uday Khedker

Page 19: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 7/54

Program Representation for Interprocedural Data FlowAnalysis: Supergraph

Startmain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Endmain

Startp a ∗ b Startp

C2 Call q C2

R2 Call q R2

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Endq a ∗ b Endq

C4 Call p C4

R4 Call p R4

n4 d = c n4

May 2011 Uday Khedker

Page 20: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 7/54

Program Representation for Interprocedural Data FlowAnalysis: Supergraph

Startmain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Endmain

Startp a ∗ b Startp

C2 Call q C2

R2 Call q R2

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Endq a ∗ b Endq

C4 Call p C4

R4 Call p R4

n4 d = c n4

May 2011 Uday Khedker

Page 21: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 8/54

Validity of Interprocedural Control Flow Paths

Startmain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Endmain

Startp a ∗ b Startp

C2 Call q C2

R2 Call q R2

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Endq a ∗ b Endq

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

May 2011 Uday Khedker

Page 22: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 8/54

Validity of Interprocedural Control Flow Paths

Startmain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Endmain

Startp a ∗ b Startp

C2 Call q C2

R2 Call q R2

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Endq a ∗ b Endq

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

May 2011 Uday Khedker

Page 23: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 8/54

Validity of Interprocedural Control Flow Paths

Startmain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Endmain

Startp a ∗ b Startp

C2 Call q C2

R2 Call q R2

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Endq a ∗ b Endq

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

May 2011 Uday Khedker

Page 24: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 8/54

Validity of Interprocedural Control Flow Paths

Startmain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Endmain

Startp a ∗ b Startp

C2 Call q C2

R2 Call q R2

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Endq a ∗ b Endq

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

May 2011 Uday Khedker

Page 25: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 8/54

Validity of Interprocedural Control Flow Paths

Startmain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Endmain

Startp a ∗ b Startp

C2 Call q C2

R2 Call q R2

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Endq a ∗ b Endq

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

May 2011 Uday Khedker

Page 26: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 8/54

Validity of Interprocedural Control Flow Paths

Startmain

a+ b

C1 Call p C1

R1 Call p R1

a ∗ b

Endmain

Startp a ∗ b Startp

C2 Call q C2

R2 Call q R2

Endp a ∗ b Endp

Startq a ∗ b Startq

n1 d=a+b n1n2 a = 1 n2

C3 Call p C3

R3 Call p R3

n3 d + 1 n3

Endq a ∗ b Endq

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

May 2011 Uday Khedker

Page 27: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 9/54

Safety, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs tocompute summary information along paths

May 2011 Uday Khedker

Page 28: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 9/54

Safety, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs tocompute summary information along paths

• Ensuring Safety. All valid paths must be covered

May 2011 Uday Khedker

Page 29: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 9/54

Safety, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs tocompute summary information along paths

• Ensuring Safety. All valid paths must be covered

A path which representslegal control flow

May 2011 Uday Khedker

Page 30: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 9/54

Safety, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs tocompute summary information along paths

• Ensuring Safety. All valid paths must be covered

• Ensuring Precision . Only valid paths should be covered.

A path which representslegal control flow

May 2011 Uday Khedker

Page 31: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 9/54

Safety, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs tocompute summary information along paths

• Ensuring Safety. 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

May 2011 Uday Khedker

Page 32: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 9/54

Safety, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs tocompute summary information along paths

• Ensuring Safety. 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

May 2011 Uday Khedker

Page 33: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 9/54

Safety, Precision, and Efficiency of Data Flow Analysis

• Data flow analysis uses static representation of programs tocompute summary information along paths

• Ensuring Safety. 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.

May 2011 Uday Khedker

Page 34: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 10/54

Flow and Context Sensitivity

• Flow sensitive analysis:Considers intraprocedurally valid paths

May 2011 Uday Khedker

Page 35: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 10/54

Flow and Context Sensitivity

• Flow sensitive analysis:Considers intraprocedurally valid paths

• Context sensitive analysis:Considers interprocedurally valid paths

May 2011 Uday Khedker

Page 36: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 10/54

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 beboth flow and context sensitive.

May 2011 Uday Khedker

Page 37: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 10/54

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 beboth flow and context sensitive.

MFP computation restricted to valid paths only

May 2011 Uday Khedker

Page 38: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 11/54

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

May 2011 Uday Khedker

Page 39: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 11/54

Context Sensitivity in Interprocedural Analysis

Sr

Er

Ss

Es

Ci

Ri

ci

St

Et

Cj

Rj

cj

x

x

x ′

y

y

y ′

fr

May 2011 Uday Khedker

Page 40: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 11/54

Context Sensitivity in Interprocedural Analysis

Sr

Er

Ss

Es

Ci

Ri

ci

St

Et

Cj

Rj

cj

x

x

x ′

y

y

y ′

fr

×

May 2011 Uday Khedker

Page 41: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 11/54

Context Sensitivity in Interprocedural Analysis

Sr

Er

Ss

Es

Ci

Ri

ci

St

Et

Cj

Rj

cj

x

x

x ′

y

y

y ′

fr

May 2011 Uday Khedker

Page 42: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 11/54

Context Sensitivity in Interprocedural Analysis

Sr

Er

Ss

Es

Ci

Ri

ci

St

Et

Cj

Rj

cj

x

x

x ′

y

y

y ′

fr

×

May 2011 Uday Khedker

Page 43: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 12/54

Staircase Diagrams of Interprocedurally Valid Paths

C1

C2

C3

C4 R4

R3 C6 R6 C4

C4 R4

R4 C1

C1

C1

May 2011 Uday Khedker

Page 44: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 12/54

Staircase Diagrams of Interprocedurally Valid Paths

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

May 2011 Uday Khedker

Page 45: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 12/54

Staircase Diagrams of Interprocedurally Valid Paths

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!”

May 2011 Uday Khedker

Page 46: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 12/54

Staircase Diagrams of Interprocedurally Valid Paths

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.

May 2011 Uday Khedker

Page 47: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 13/54

Context Sensitivity in Presence of Recursion

Sp

Si Sq

Sj

SrSk

Ep

Ek Er

Ej

EqEi

u

v

May 2011 Uday Khedker

Page 48: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 13/54

Context Sensitivity in Presence of Recursion

Sp

Si Sq

Sj

SrSk

Ep

Ek Er

Ej

EqEi

u

v

f ′

May 2011 Uday Khedker

Page 49: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 13/54

Context Sensitivity in Presence of Recursion

Sp

Si Sq

Sj

SrSk

Ep

Ek Er

Ej

EqEi

u

v

f ′

f

May 2011 Uday Khedker

Page 50: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 13/54

Context Sensitivity in Presence of Recursion

Sp

Si Sq

Sj

SrSk

Ep

Ek Er

Ej

EqEi

u

v

f ′

f

h

May 2011 Uday Khedker

Page 51: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 13/54

Context Sensitivity in Presence of Recursion

Sp

Si Sq

Sj

SrSk

Ep

Ek Er

Ej

EqEi

u

v

f ′

f

h

g

g ′

May 2011 Uday Khedker

Page 52: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 13/54

Context Sensitivity in Presence of Recursion

Sp

Si Sq

Sj

SrSk

Ep

Ek Er

Ej

EqEi

u

v

f ′

f

h

g

g ′

May 2011 Uday Khedker

Page 53: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 13/54

Context Sensitivity in Presence of Recursion

Sp

Si Sq

Sj

SrSk

Ep

Ek Er

Ej

EqEi

u

v

f ′

f

h

g

g ′

u

v

f ′

g ′

h

May 2011 Uday Khedker

Page 54: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 13/54

Context Sensitivity in Presence of Recursion

Sp

Si Sq

Sj

SrSk

Ep

Ek Er

Ej

EqEi

u

v

f ′

f

h

g

g ′

u

v

f ′

g ′

h

u

v

f ′

g ′

h

f

g

May 2011 Uday Khedker

Page 55: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 13/54

Context Sensitivity in Presence of Recursion

Sp

Si Sq

Sj

SrSk

Ep

Ek Er

Ej

EqEi

u

v

f ′

f

h

g

g ′

u

v

f ′

g ′

h

u

v

f ′

g ′

h

f

g

u

v

f ′

g ′

h

f

g

f

g

May 2011 Uday Khedker

Page 56: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 13/54

Context Sensitivity in Presence of Recursion

Sp

Si Sq

Sj

SrSk

Ep

Ek Er

Ej

EqEi

u

v

f ′

f

h

g

g ′

u

v

f ′

g ′

h

u

v

f ′

g ′

h

f

g

u

v

f ′

g ′

h

f

g

f

g

u

v

f ′

g ′

h

f

g

f

g

f

g

May 2011 Uday Khedker

Page 57: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 13/54

Context Sensitivity in Presence of Recursion

Sp

Si Sq

Sj

SrSk

Ep

Ek Er

Ej

EqEi

u

v

f ′

f

h

g

g ′

u

v

f ′

g ′

h

u

v

f ′

g ′

h

f

g

u

v

f ′

g ′

h

f

g

f

g

u

v

f ′

g ′

h

f

g

f

g

f

g

. . .

May 2011 Uday Khedker

Page 58: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 13/54

Context Sensitivity in Presence of Recursion

Sp

Si Sq

Sj

SrSk

Ep

Ek Er

Ej

EqEi

u

v

f ′

f

h

g

g ′

u

v

f ′

g ′

h

u

v

f ′

g ′

h

f

g

u

v

f ′

g ′

h

f

g

f

g

u

v

f ′

g ′

h

f

g

f

g

f

g

. . .

• For a path from u tov , g must be appliedexactly the samenumber of times as f .

• For a prefix of theabove path, g can beapplied only at mostas many times as f .

May 2011 Uday Khedker

Page 59: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 14/54

Staircase Diagrams of Interprocedurally Valid Paths

Cp

Ci Cq

Cj

CrCk

Rp

Rk Rr

Rj

RqRi

u

v

May 2011 Uday Khedker

Page 60: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 14/54

Staircase Diagrams of Interprocedurally Valid Paths

Cp

Ci Cq

Cj

CrCk

Rp

Rk Rr

Rj

RqRi

u

v

f ′

Cp

Ci

Cq

May 2011 Uday Khedker

Page 61: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 14/54

Staircase Diagrams of Interprocedurally Valid Paths

Cp

Ci Cq

Cj

CrCk

Rp

Rk Rr

Rj

RqRi

u

v

f ′

Cp

Ci

Cqh

May 2011 Uday Khedker

Page 62: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 14/54

Staircase Diagrams of Interprocedurally Valid Paths

Cp

Ci Cq

Cj

CrCk

Rp

Rk Rr

Rj

RqRi

u

v

f ′

Cp

Ci

Cqh Rq

Ri

Rp

May 2011 Uday Khedker

Page 63: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 14/54

Staircase Diagrams of Interprocedurally Valid Paths

Cp

Ci Cq

Cj

CrCk

Rp

Rk Rr

Rj

RqRi

u

v

f ′

f

Cp

Ci

Cq

Cj

Cr

Ck

Cp

Ci

Cq

May 2011 Uday Khedker

Page 64: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 14/54

Staircase Diagrams of Interprocedurally Valid Paths

Cp

Ci Cq

Cj

CrCk

Rp

Rk Rr

Rj

RqRi

u

v

hf ′

f

Cp

Ci

Cq

Cj

Cr

Ck

Cp

Ci

Cq

May 2011 Uday Khedker

Page 65: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 14/54

Staircase Diagrams of Interprocedurally Valid Paths

Cp

Ci Cq

Cj

CrCk

Rp

Rk Rr

Rj

RqRi

u

v

h

g

Cp

Ci

Cq

Cj

Cr

Ck

Cp

Ci

Cq Rq

Ri

Rp

Rk

Rr

Rj

May 2011 Uday Khedker

Page 66: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 15/54

Flow Insensitivity in Data Flow Analysis

• Assumption: Statements can be executed in any order.

• Instead of computing point-specific data flow information, summarydata flow information is computed.The summary information is required to be a safe approximation ofpoint-specific information for each point.

• Killn(x) component is ignored.If statement n kills data flow information, there is an alternate paththat excludes n.

May 2011 Uday Khedker

Page 67: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 16/54

Flow Insensitivity in Data Flow Analysis

Assuming that DepGenn(x) = ∅, and Killn(X ) is ignored for all n

0 f0 0

1 f1 1

2 f2 23 f3 3

i fi i

m fm m

Start

0 f0 01 f1 12 f2 23 f3 3. . . i fi i . . . m fm m

End

Control flow graph Flow insensitive analysis

May 2011 Uday Khedker

Page 68: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 16/54

Flow Insensitivity in Data Flow Analysis

Assuming that DepGenn(x) = ∅, and Killn(X ) is ignored for all n

0 f0 0

1 f1 1

2 f2 23 f3 3

i fi i

m fm m

Start

0 f0 01 f1 12 f2 23 f3 3. . . i fi i . . . m fm m

End

Control flow graph Flow insensitive analysis

Function composition is replaced by function confluence

May 2011 Uday Khedker

Page 69: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 17/54

Flow Insensitivity in Data Flow Analysis

If DepGenn(x) 6= ∅

0 f0 0

1 f1 1

2 f2 2 3 f3 3

i fi i

m fm m

Start

0 f0 01 f1 12 f2 23 f3 3. . . i fi i . . . m fm m

End

May 2011 Uday Khedker

Page 70: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 17/54

Flow Insensitivity in Data Flow Analysis

If DepGenn(x) 6= ∅

0 f0 0

1 f1 1

2 f2 2 3 f3 3

i fi i

m fm m

Start

0 f0 01 f1 12 f2 23 f3 3. . . i fi i . . . m fm m

End

Allows arbitrary compositions of flow functions

in any order ⇒ Flow insensitivity

May 2011 Uday Khedker

Page 71: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 17/54

Flow Insensitivity in Data Flow Analysis

If DepGenn(x) 6= ∅

0 f0 0

1 f1 1

2 f2 2 3 f3 3

i fi i

m fm m

Start

0 f0 01 f1 12 f2 23 f3 3. . . i fi i . . . m fm m

End

In practice, dependent constraints are collected in a global

repository in one pass and then are solved independently

May 2011 Uday Khedker

Page 72: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 18/54

Example of Flow Insensitive Analysis

Flow insensitive points-to analysis⇒ Same points-to information at each program point

May 2011 Uday Khedker

Page 73: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 18/54

Example of Flow Insensitive Analysis

Flow insensitive points-to analysis⇒ Same points-to information at each program point

a = &b

Program

1

c = a2

a = &d3 a = &e4

b = a5

May 2011 Uday Khedker

Page 74: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 18/54

Example of Flow Insensitive Analysis

Flow insensitive points-to analysis⇒ Same points-to information at each program point

a = &b

Program

1

c = a2

a = &d3 a = &e4

b = a5

Node Constraint

1 Pa ⊇ {b}2 Pc ⊇ Pa

3 Pa ⊇ {d}

4 Pa ⊇ {e}5 Pb ⊇ Pa

Constraints

May 2011 Uday Khedker

Page 75: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 18/54

Example of Flow Insensitive Analysis

Flow insensitive points-to analysis⇒ Same points-to information at each program point

a = &b

Program

1

c = a2

a = &d3 a = &e4

b = a5

Node Constraint

1 Pa ⊇ {b}2 Pc ⊇ Pa

3 Pa ⊇ {d}

4 Pa ⊇ {e}5 Pb ⊇ Pa

Constraints Points-to Graph

ad

b

e

May 2011 Uday Khedker

Page 76: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 18/54

Example of Flow Insensitive Analysis

Flow insensitive points-to analysis⇒ Same points-to information at each program point

a = &b

Program

1

c = a2

a = &d3 a = &e4

b = a5

Node Constraint

1 Pa ⊇ {b}2 Pc ⊇ Pa

3 Pa ⊇ {d}

4 Pa ⊇ {e}5 Pb ⊇ Pa

Constraints Points-to Graph

ad

b

e

c

May 2011 Uday Khedker

Page 77: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 18/54

Example of Flow Insensitive Analysis

Flow insensitive points-to analysis⇒ Same points-to information at each program point

a = &b

Program

1

c = a2

a = &d3 a = &e4

b = a5

Node Constraint

1 Pa ⊇ {b}2 Pc ⊇ Pa

3 Pa ⊇ {d}

4 Pa ⊇ {e}5 Pb ⊇ Pa

Constraints Points-to Graph

ad

b

e

c

May 2011 Uday Khedker

Page 78: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 18/54

Example of Flow Insensitive Analysis

Flow insensitive points-to analysis⇒ Same points-to information at each program point

a = &b

Program

1

c = a2

a = &d3 a = &e4

b = a5

Node Constraint

1 Pa ⊇ {b}2 Pc ⊇ Pa

3 Pa ⊇ {d}

4 Pa ⊇ {e}5 Pb ⊇ Pa

Constraints Points-to Graph

ad

b

e

c

• c does not point to any location in block 1

• a does not point b in block 5

• b does not point to itself at any time

May 2011 Uday Khedker

Page 79: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 19/54

Increasing Precision in Data Flow Analysis

Flow insensitiveintraprocedural

Flow sensitiveintraprocedural

Context insensitiveflow insensitive

Context insensitiveflow sensitive

Context sensitiveflow insensitive

Context sensitiveflow sensitive

May 2011 Uday Khedker

Page 80: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Issues in Interprocedural Analysis 19/54

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

May 2011 Uday Khedker

Page 81: Interprocedural Data Flow Analysis

Part 4

Classical Functional Approach

Page 82: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 20/54

Functional Approach

Sr

Er

Ss

Es

Ci

Ri

frci

x

x

x ′ = fr (x)

x ′

May 2011 Uday Khedker

Page 83: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 20/54

Functional Approach

Sr

Er

Ss

Es

Ci

Ri

fr

x

x ′ = fr (x)

• Compute summary flowfunctions for each procedure

• Use summary flow functions asthe flow function for a call block

May 2011 Uday Khedker

Page 84: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 21/54

Notation for Summary Flow Function

For simplicity forward flow is assumed.

Procedure r

f1

f2 f3

f4

May 2011 Uday Khedker

Page 85: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 21/54

Notation for Summary Flow Function

For simplicity forward flow is assumed.

Procedure r

f1

f2 f3

f4

Φr (u1) ≡ φid

May 2011 Uday Khedker

Page 86: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 21/54

Notation for Summary Flow Function

For simplicity forward flow is assumed.

Procedure r

f1

f2 f3

f4

Φr (u1) ≡ φid

Φr (u2) ≡ f1

May 2011 Uday Khedker

Page 87: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 21/54

Notation for Summary Flow Function

For simplicity forward flow is assumed.

Procedure r

f1

f2 f3

f4

Φr (u1) ≡ φid

Φr (u2) ≡ f1

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

May 2011 Uday Khedker

Page 88: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 21/54

Notation for Summary Flow Function

For simplicity forward flow is assumed.

Procedure r

f1

f2 f3

f4

Φr (u1) ≡ φid

Φr (u2) ≡ f1

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

Φr (u5) ≡ f2 ◦ f1

May 2011 Uday Khedker

Page 89: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 21/54

Notation for Summary Flow Function

For simplicity forward flow is assumed.

Procedure r

f1

f2 f3

f4

Φr (u1) ≡ φid

Φr (u2) ≡ f1

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

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

May 2011 Uday Khedker

Page 90: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 21/54

Notation for Summary Flow Function

For simplicity forward flow is assumed.

Procedure r

f1

f2 f3

f4

Φ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

May 2011 Uday Khedker

Page 91: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 21/54

Notation for Summary Flow Function

For simplicity forward flow is assumed.

Procedure r

f1

f2 f3

f4

Φ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)

May 2011 Uday Khedker

Page 92: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 22/54

Reducing Flow Compositions and Meets

f2 ◦ f1 = f3 ⇔ ∀x ∈ L, f2(f1(x)) = f3(x)

f2 ⊓ f1 = f3 ⇔ ∀x ∈ L, f2(x) ⊓ f1(x) = f3(x)

May 2011 Uday Khedker

Page 93: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 23/54

Reducing Function Compositions

Assumption: No dependent parts (as in bit vector frameworks).Killn is ConstKilln and Genn is ConstGenn.

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

= f2((x− Kill1) ∪ Gen1

)

=

(((x− Kill1) ∪ Gen1

)− Kill2

)∪ Gen2

=(x− (Kill1 ∪ Kill2)

)∪ (Gen1 − Kill2) ∪ Gen2

Hence,

Kill3 = Kill1 ∪ Kill2

Gen3 = (Gen1 − Kill2) ∪ Gen2

May 2011 Uday Khedker

Page 94: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 24/54

Reducing Function Confluences

Assumption: No dependent parts (as in bit vector frameworks).Killn is ConstKilln and Genn is ConstGenn.

• When ⊓ is ∪,

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

=((x− Kill2) ∪ Gen2

)∪

((x− Kill1) ∪ Gen1

)

=(x− (Kill1 ∩ Kill2)

)∪

(Gen1 ∪ Gen2

)

Hence,

Kill3 = Kill1 ∩ Kill2

Gen3 = Gen1 ∪ Gen2

May 2011 Uday Khedker

Page 95: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 25/54

Reducing Function Confluences

Assumption: No dependent parts (as in bit vector frameworks).Killn is ConstKilln and Genn is ConstGenn.

• When ⊓ is ∩,

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

=((x− Kill2) ∪ Gen2

)∩

((x− Kill1) ∪ Gen1

)

=(x− (Kill1 ∪ Kill2)

)∪

(Gen1 ∩ Gen2

)

Hence

Kill3 = Kill1 ∪ Kill2

Gen3 = Gen1 ∩ Gen2

May 2011 Uday Khedker

Page 96: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 26/54

Constructing Summary Flow Function

For simplicity forward flow is assumed.

Φr (Entry(n)) =

φid if n is Startr

p∈pred(n)

(Φr (Exit(p))

)otherwise

Φr (Exit(n)) =

Φs(u) ◦Φr (Entry(n))if n calls procedure sand u is Exit(Ends)

fn ◦ Φr (Entry(n)) otherwise

May 2011 Uday Khedker

Page 97: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 27/54

Constructing Summary Flow Functions

f1Startr

r

f2

May 2011 Uday Khedker

Page 98: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 27/54

Constructing Summary Flow Functions

f1Startr

r

f2

Φr (u1) = φid

Φr (u2) = f1

Iteration #1

Φr (u3) = f1

Φr (u4) = f2 ◦ f1

May 2011 Uday Khedker

Page 99: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 27/54

Constructing Summary Flow Functions

f1Startr

r

f2

Φr (u1) = φid

Φr (u2) = f1

Iteration #2

Φr (u3) = f1 ⊓ f2 ◦ f1

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

May 2011 Uday Khedker

Page 100: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 27/54

Constructing Summary Flow Functions

f1Startr

r

f2

Φr (u1) = φid

Φr (u2) = f1

Iteration #3

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

Φr (u4) = f2 ◦ (f1 ⊓ 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

May 2011 Uday Khedker

Page 101: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 28/54

Lattice of Flow Functions for Live Variables Analysis

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

Lattice ofdata flow values All possible flow functions

Lattice offlow functions

⊤̂ = ∅

⊥̂ = {a}

Genn Killn f̂ n

∅ ∅ φ̂id

∅ {a} φ̂⊤

{a} ∅ φ̂⊥

φ̂⊤

φ̂id

φ̂⊥

May 2011 Uday Khedker

Page 102: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 29/54

Lattice of Flow Functions for Live Variables Analysis

Flow functions for two variables

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

φ⊥⊥

May 2011 Uday Khedker

Page 103: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 29/54

Lattice of Flow Functions for Live Variables Analysis

Flow functions for two variables

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

φ⊥⊥

Essentially, a prod-uct lattice of thetwo componentlattices

May 2011 Uday Khedker

Page 104: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 30/54

An Example of Interprocedural Liveness Analysis

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

Smain

Call pc1

n1a = a + 2print c + d

n1

n2 d = a ∗ b n2

Call qc2

print a + cEmain

b = 2if (b < d)

Sp

n3 c = a + b n3 Call qc4

print c + dEp

T F

a = 1Sq

Call pc3

a = a ∗ bEq

May 2011 Uday Khedker

Page 105: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 31/54

Summary Flow Functions for Interprocedural LivenessAnalysis

Proc. Flow

FunctionDefiningExpression

Iteration #1Changes initeration #2

Gen Kill Gen Kill

p

Φp(Ep) fEp{c , d} ∅

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

Φp(c4) fq ◦ Φp(Ep) = φ⊤ ∅ {a, b, c , d} {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) fEq{a, 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}

May 2011 Uday Khedker

Page 106: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 32/54

Computed Summary Flow Function

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}

May 2011 Uday Khedker

Page 107: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 33/54

Result of Interprocedural Liveness Analysis

Data flowvariable

Summary flow function Data flowName Definition value

Procedure main, BI = ∅

InEmΦm(Em) BIm ∪ {a, c} {a, c}

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

)∪ {d} {d}

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

)∪ {a, b} {a, b}

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

)∪ {a, b, c , d} {a, b, c , d}

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

)∪ {a, d} {a, d}

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

May 2011 Uday Khedker

Page 108: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 34/54

Result of Interprocedural Liveness Analysis

Data flowvariable

Summary flow function Data flowName Definition value

Procedure p, BI = {a, b, c , d}

InEpΦp(Ep) BIp ∪ {c , d}

{a, b,c , d}

Inn3 Φp(n3)(BIp − {c}

)∪ {a, b, d} {a, b, d}

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

)∪ {d} {d}

InSp Φp(Sp)(BIp − {b, c}

)∪ {a, d} {a, d}

Procedure q, BI = {a, b, c , d}

InEqΦq(Eq)

(BIq − {a}

)∪ {a, b} {a, b, c , d}

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

)∪ {a, d} {a, d}

InSq Φq(Sq)(BIq − {a, b, c}

)∪ {d} {d}

May 2011 Uday Khedker

Page 109: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 35/54

Result of Interprocedural Liveness Analysis

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

Smain

Call pc1

{a, d}

n1a = a + 2print c + d

n1

{a, b, c , d}

n2 d = a ∗ b n2

{a, b}

Call qc2

{d}

print a + cEmain

{a, c}

b = 2if (b < d)

Sp

{a, d}

n3 c = a + b n3

{a, b, d}

Call qc4

{d}

print c + dEp

{a, b, c , d}

T F

a = 1

{d}

Sq

Call pc3

{a, d}

a = a ∗ bEq

{a, b, c , d}

May 2011 Uday Khedker

Page 110: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 36/54

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}

May 2011 Uday Khedker

Page 111: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 36/54

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}

• fp and fq remain same• e ∈ InSp but e 6∈ Inc1

May 2011 Uday Khedker

Page 112: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 37/54

Limitations of Functional Approach to Interprocedural DataFlow Analysis

• Problems with constructing summary flow functions

May 2011 Uday Khedker

Page 113: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 37/54

Limitations of Functional Approach to Interprocedural DataFlow Analysis

• Problems with constructing summary flow functions

◮ Reducing expressions defining flow functions may not be possiblewhen DepGenn 6= ∅

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

May 2011 Uday Khedker

Page 114: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 37/54

Limitations of Functional Approach to Interprocedural DataFlow Analysis

• Problems with constructing summary flow functions

◮ Reducing expressions defining flow functions may not be possiblewhen DepGenn 6= ∅

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

• Enumeration based approach

◮ Instead of constructing flow functions, remember the mapping x 7→ y

as input output values◮ Reuse output value of a flow function when the same input value is

encountered again

May 2011 Uday Khedker

Page 115: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Functional Approach 37/54

Limitations of Functional Approach to Interprocedural DataFlow Analysis

• Problems with constructing summary flow functions

◮ Reducing expressions defining flow functions may not be possiblewhen DepGenn 6= ∅

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

• Enumeration based approach

◮ Instead of constructing flow functions, remember the mapping x 7→ y

as input output values◮ Reuse output value of a flow function when the same input value is

encountered again

Requires the number of values to be finite

May 2011 Uday Khedker

Page 116: Interprocedural Data Flow Analysis

Part 5

Classical Call Strings Approach

Page 117: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 38/54

Classical Full Call Strings Approach

Most general, flow and context sensitive method

• Remember call historyInformation 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

May 2011 Uday Khedker

Page 118: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 39/54

Interprocedural Data Flow Analysis Using Call Strings

• Tagged data flow information

◮ INn and OUTn are sets of the form {〈σ, x〉 | σ is a call string , x ∈ L}◮ The final data flow information is

Inn =〈σ, x〉∈INn

x

Outn =〈σ, x〉∈OUTn

x

• Flow functions to manipulate tagged data flow information◮ Intraprocedural edges manipulate data flow value x◮ Interprocedural edges manipulate call string σ

May 2011 Uday Khedker

Page 119: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 40/54

Overall Data Flow Equations

INn =

〈λ,BI 〉 n is a Smain⊎

p∈pred(n)

OUTp otherwise

OUTn = DepGENn

Effectively, ConstGENn = ConstKILLn = ∅ and DepKILLn(X ) = X.

X ⊎ Y ={〈σ, x ⊓ y〉 | 〈σ, x〉 ∈ X, 〈σ, y〉 ∈ Y

}∪{

〈σ, x〉 | 〈σ, x〉 ∈ X, ∀z ∈ L, 〈σ, z〉 6∈ Y}∪{

〈σ, y〉 | 〈σ, y〉 ∈ Y, ∀z ∈ L, 〈σ, z〉 6∈ X}

(We merge underlying data flow values only if the contexts are same.)

May 2011 Uday Khedker

Page 120: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

Interprocedural Validity and Calling Contexts

C1

C2

C3

C4 R4

R3 C6 R6 C4

C4 R4

R4 C1

C1

C1

May 2011 Uday Khedker

Page 121: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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

May 2011 Uday Khedker

Page 122: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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!”

May 2011 Uday Khedker

Page 123: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 124: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 125: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 126: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 127: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 128: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 129: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 130: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 131: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 132: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 133: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 134: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 135: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 136: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 137: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 138: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 139: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 41/54

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.

May 2011 Uday Khedker

Page 140: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 42/54

Manipulating Values

• Call edge Ci → Sp (i.e. call site ci calling procedure p).◮ Append ci to every σ.

◮ Propagate the data flow valuesunchanged.

May 2011 Uday Khedker

Page 141: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 42/54

Manipulating Values

• Call edge Ci → Sp (i.e. call site ci calling procedure p).◮ Append ci to every σ.

◮ Propagate the data flow valuesunchanged.

• Return edge Ep → Ri (i.e. p returning the control to call site ci ).◮ If the last call site is ci , remove it and

propagate the data flow value unchanged.

◮ Block other data flow values.

May 2011 Uday Khedker

Page 142: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 42/54

Manipulating Values

• Call edge Ci → Sp (i.e. call site ci calling procedure p).◮ Append ci to every σ.

◮ Propagate the data flow valuesunchanged.

Ascend

• Return edge Ep → Ri (i.e. p returning the control to call site ci ).◮ If the last call site is ci , remove it and

propagate the data flow value unchanged.

◮ Block other data flow values.

Descend

May 2011 Uday Khedker

Page 143: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 42/54

Manipulating Values

• Call edge Ci → Sp (i.e. call site ci calling procedure p).◮ Append ci to every σ.

◮ Propagate the data flow valuesunchanged.

Ascend

• Return edge Ep → Ri (i.e. p returning the control to call site ci ).◮ If the last call site is ci , remove it and

propagate the data flow value unchanged.

◮ Block other data flow values.

Descend

DepGENn(X ) =

{〈σ · ci , x〉 | 〈σ, x〉 ∈ X

}n is Ci

{〈σ, x〉 | 〈σ · ci , x〉 ∈ X

}n is Ri

{〈σ, fn(x)〉 | 〈σ, x〉 ∈ X

}otherwise

May 2011 Uday Khedker

Page 144: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 43/54

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

May 2011 Uday Khedker

Page 145: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 43/54

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?

May 2011 Uday Khedker

Page 146: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 43/54

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;}

}

May 2011 Uday Khedker

Page 147: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 43/54

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!

May 2011 Uday Khedker

Page 148: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 44/54

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

May 2011 Uday Khedker

Page 149: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 44/54

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

May 2011 Uday Khedker

Page 150: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 44/54

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

×

May 2011 Uday Khedker

Page 151: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 44/54

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

May 2011 Uday Khedker

Page 152: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 44/54

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

May 2011 Uday Khedker

Page 153: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 45/54

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

May 2011 Uday Khedker

Page 154: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 45/54

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

May 2011 Uday Khedker

Page 155: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 45/54

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

May 2011 Uday Khedker

Page 156: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 45/54

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

May 2011 Uday Khedker

Page 157: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 45/54

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

May 2011 Uday Khedker

Page 158: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 45/54

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

May 2011 Uday Khedker

Page 159: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 45/54

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

May 2011 Uday Khedker

Page 160: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 45/54

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

May 2011 Uday Khedker

Page 161: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 45/54

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〉. . .

〈c1c2|0〉〈c1c2c2|0〉. . .

Maintain a worklist ofnodes to be processed

R2 call p R2

May 2011 Uday Khedker

Page 162: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 45/54

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〉. . .

〈c1c2|0〉〈c1c2c2|0〉. . .

〈c1|0〉 〈c1c2|0〉

Maintain a worklist ofnodes to be processed

n3 t = a ∗ b n3

May 2011 Uday Khedker

Page 163: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 45/54

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〉. . .

〈c1c2|0〉〈c1c2c2|0〉. . .

〈c1|0〉 〈c1c2|0〉

〈c1|1〉〈c1c2|1〉

Maintain a worklist ofnodes to be processed

Ep a ∗ b Ep

May 2011 Uday Khedker

Page 164: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 45/54

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〉. . .

〈c1c2|0〉〈c1c2c2|0〉. . .

〈c1|0〉 〈c1c2|0〉

〈c1|1〉〈c1c2|1〉

〈c1|1〉

Maintain a worklist ofnodes to be processed

R1 call p R1

May 2011 Uday Khedker

Page 165: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 45/54

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〉. . .

〈c1c2|0〉〈c1c2c2|0〉. . .

〈c1|0〉 〈c1c2|0〉

〈c1|1〉〈c1c2|1〉

〈c1|1〉

〈λ|1〉

Maintain a worklist ofnodes to be processed

n1 print a ∗ b n1

May 2011 Uday Khedker

Page 166: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 46/54

Tutorial Problem

Generate a trace of the preceding example in the following format:

StepNo.

SelectedNode

Qualified DataFlow Value Remaining

Work ListINn OUTn

• Assume that call site ci appended to a call string σ only if there areat most 2 occurences of ci in σ

• What about work list organization?

May 2011 Uday Khedker

Page 167: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 47/54

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. }

May 2011 Uday Khedker

Page 168: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 47/54

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 : Gen478712910 : Kill11125

May 2011 Uday Khedker

Page 169: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 47/54

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 : Gen478712910 : Kill11125

Path 2

3 : Gen478787

129

10 : Kill11129

10 : Kill

May 2011 Uday Khedker

Page 170: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 48/54

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. }

May 2011 Uday Khedker

Page 171: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 48/54

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

May 2011 Uday Khedker

Page 172: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 48/54

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

May 2011 Uday Khedker

Page 173: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 48/54

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

May 2011 Uday Khedker

Page 174: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 48/54

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

May 2011 Uday Khedker

Page 175: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 48/54

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

May 2011 Uday Khedker

Page 176: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 48/54

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

May 2011 Uday Khedker

Page 177: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 49/54

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

May 2011 Uday Khedker

Page 178: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 49/54

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

May 2011 Uday Khedker

Page 179: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 49/54

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, youneed to ascend because they may change while descending

May 2011 Uday Khedker

Page 180: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 50/54

Terminating Call String Construction

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

May 2011 Uday Khedker

Page 181: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 50/54

Terminating Call String Construction

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

• For recursive programs: Number of call strings could be infiniteFortunately, the problem is decidable for finite lattices.

May 2011 Uday Khedker

Page 182: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 50/54

Terminating Call String Construction

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

• For recursive programs: Number of call strings could be infiniteFortunately, the problem is decidable for finite lattices.

◮ All call strings upto the following length must be constructed

May 2011 Uday Khedker

Page 183: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 50/54

Terminating Call String Construction

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

• For recursive programs: Number of call strings could be infiniteFortunately, 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)

May 2011 Uday Khedker

Page 184: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 50/54

Terminating Call String Construction

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

• For recursive programs: Number of call strings could be infiniteFortunately, 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)

May 2011 Uday Khedker

Page 185: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 50/54

Terminating Call String Construction

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

• For recursive programs: Number of call strings could be infiniteFortunately, 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

May 2011 Uday Khedker

Page 186: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 50/54

Terminating Call String Construction

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

• For recursive programs: Number of call strings could be infiniteFortunately, 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

May 2011 Uday Khedker

Page 187: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 50/54

Terminating Call String Construction

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

• For recursive programs: Number of call strings could be infiniteFortunately, 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

May 2011 Uday Khedker

Page 188: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate Approach

• Maintain call string suffixes of upto a given length m.

Ca

Ra

May 2011 Uday Khedker

Page 189: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate Approach

• Maintain call string suffixes of upto a given length m.

Ca

Ra

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

May 2011 Uday Khedker

Page 190: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate 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

May 2011 Uday Khedker

Page 191: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate 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〉

May 2011 Uday Khedker

Page 192: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate 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〉

May 2011 Uday Khedker

Page 193: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate Approach

• Maintain call string suffixes of upto a given length m.

Ca

Ra

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

May 2011 Uday Khedker

Page 194: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate 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)

May 2011 Uday Khedker

Page 195: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate 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〉

May 2011 Uday Khedker

Page 196: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate 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〉

May 2011 Uday Khedker

Page 197: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate Approach

• Maintain call string suffixes of upto a given length m.

Ca

Ra

〈Ci1 · Ci2 . . .Cim | x1〉

May 2011 Uday Khedker

Page 198: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate Approach

• Maintain call string suffixes of upto a given length m.

Ca

Ra

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

May 2011 Uday Khedker

Page 199: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate 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〉

May 2011 Uday Khedker

Page 200: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate 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〉

May 2011 Uday Khedker

Page 201: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate 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〉

May 2011 Uday Khedker

Page 202: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 51/54

Classical Approximate 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.

May 2011 Uday Khedker

Page 203: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 52/54

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉

May 2011 Uday Khedker

Page 204: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 52/54

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉

〈Cb · Ca | x1〉

May 2011 Uday Khedker

Page 205: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 52/54

Approximate Call Strings in Presence of Recursion

• For simplicity, assume m = 2

Ca

Ra

〈Cb | x1〉

〈Cb · Ca | x1〉

〈Cb · Ca | x2〉

May 2011 Uday Khedker

Page 206: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 52/54

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〉

May 2011 Uday Khedker

Page 207: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 52/54

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〉

May 2011 Uday Khedker

Page 208: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 52/54

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〉

May 2011 Uday Khedker

Page 209: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 52/54

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〉

May 2011 Uday Khedker

Page 210: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 52/54

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〉

May 2011 Uday Khedker

Page 211: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 52/54

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〉

May 2011 Uday Khedker

Page 212: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 52/54

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〉

May 2011 Uday Khedker

Page 213: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 52/54

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〉

May 2011 Uday Khedker

Page 214: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 53/54

Non-Examinable

Value Based Termination of Call String Construction

• Clearly identifies the exact set of call strings required.

• Value based termination of call string construction. No need toconstruct call strings upto a fixed length.

• Only as many call strings are constructed as are required.

• Significant reduction in space and time.

• Worst case call string length becomes linear in the size of the latticeinstead of the original quadratic.

May 2011 Uday Khedker

Page 215: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 53/54

Non-Examinable

Value Based Termination of Call String Construction

• Clearly identifies the exact set of call strings required.

• Value based termination of call string construction. No need toconstruct call strings upto a fixed length.

• Only as many call strings are constructed as are required.

• Significant reduction in space and time.

• Worst case call string length becomes linear in the size of the latticeinstead of the original quadratic.

May 2011 Uday Khedker

Page 216: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 53/54

Non-Examinable

Value Based Termination of Call String Construction

• Clearly identifies the exact set of call strings required.

• Value based termination of call string construction. No need toconstruct call strings upto a fixed length.

• Only as many call strings are constructed as are required.

• Significant reduction in space and time.

• Worst case call string length becomes linear in the size of the latticeinstead of the original quadratic.

May 2011 Uday Khedker

Page 217: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 53/54

Non-Examinable

Value Based Termination of Call String Construction

• Clearly identifies the exact set of call strings required.

• Value based termination of call string construction. No need toconstruct call strings upto a fixed length.

• Only as many call strings are constructed as are required.

• Significant reduction in space and time.

• Worst case call string length becomes linear in the size of the latticeinstead of the original quadratic.

May 2011 Uday Khedker

Page 218: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 53/54

Non-Examinable

Value Based Termination of Call String Construction

• Clearly identifies the exact set of call strings required.

• Value based termination of call string construction. No need toconstruct call strings upto a fixed length.

• Only as many call strings are constructed as are required.

• Significant reduction in space and time.

• Worst case call string length becomes linear in the size of the latticeinstead of the original quadratic.

May 2011 Uday Khedker

Page 219: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 53/54

Non-Examinable

Value Based Termination of Call String Construction

• Clearly identifies the exact set of call strings required.

• Value based termination of call string construction. No need toconstruct call strings upto a fixed length.

• Only as many call strings are constructed as are required.

• Significant reduction in space and time.

• Worst case call string length becomes linear in the size of the latticeinstead of the original quadratic.

All this is achieved by a simple change without compromising on the

precision, simplicity, and generality of the classical method.

May 2011 Uday Khedker

Page 220: Interprocedural Data Flow Analysis

MACS L111 Interprocedural DFA: Classical Call Strings Approach 54/54

Some Observations

• Compromising on precision may not be necessary for efficiency.

• Separating the necessary information from redundant information ismuch more significant.

• Data flow propagation in real programs seems to involve only asmall subset of all possible values.Much fewer changes than the theoretically possible worst casenumber of changes.

• A precise modelling of the process of analysis is often an eye opener.

May 2011 Uday Khedker