data flow analysis - columbia university

33
Data Flow Analysis Suman Jana Adopted From U Penn CIS 570: Modern Programming Language Implementa=on (Autumn 2006)

Upload: others

Post on 18-Apr-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Data Flow Analysis - Columbia University

Data Flow Analysis SumanJana

AdoptedFromUPennCIS570:ModernProgrammingLanguageImplementa=on(Autumn2006)

Page 2: Data Flow Analysis - Columbia University

Data flow analysis

•  Derivesinforma=onaboutthedynamicbehaviorofaprogrambyonlyexaminingthesta*ccode•  Intraproceduralanalysis•  Flow-sensi=ve:sensi=vetothecontrolflowinafunc=on

•  Examples– Livevariableanalysis– Constantpropaga=on– Commonsubexpressionelimina=on– Deadcodedetec=on

1 a := 0 2 L1: b := a + 1

3 c := c + b 4 a := b * 2 5 if a < 9 goto L1 6 return c

•  Howmanyregistersdoweneed?•  Easybound:#ofusedvariables(3)•  NeedbeTeranswer

Page 3: Data Flow Analysis - Columbia University

Data flow analysis

•  Sta=cally:finiteprogram•  Dynamically:canhaveinfinitelymanypaths•  Dataflowanalysisabstrac=on

•  Foreachpointintheprogram,combinesinforma=onofallinstancesofthesameprogrampoint

Page 4: Data Flow Analysis - Columbia University

Example 1: Liveness Analysis

Page 5: Data Flow Analysis - Columbia University

Liveness Analysis

Defini*on– Avariableisliveatapar=cularpointintheprogramifitsvalueatthatpointwillbeusedinthefuture(dead,otherwise).

– Tocomputelivenessatagivenpoint,weneedtolookintothefutureMo*va*on:RegisterAlloca*on– Aprogramcontainsanunboundednumberofvariables– Mustexecuteonamachinewithaboundednumberofregisters– Twovariablescanusethesameregisteriftheyareneverinuseatthesame=me(i.e,neversimultaneouslylive).

– Registeralloca=onuseslivenessinforma=on

Page 6: Data Flow Analysis - Columbia University

Control Flow Graph

•  Let’sconsiderCFGwherenodescontainprogramstatementinsteadofbasicblock.•  Example

1.  a:=02.  L1:b:=a+13.  c:=c+b4.  a:=b*25.  ifa<9gotoL16.  returnc

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No Yes

Page 7: Data Flow Analysis - Columbia University

Liveness by Example

•  Liverangeofb•  Variablebisreadinline4,sobisliveon3->4edge•  bisalsoreadinline3,sobisliveon(2->3)edge•  Line2assignsb,sovalueofbonedges(1->2)and(5->2)arenotneeded.Sobisdeadalongthoseedges.

• b’sliverangeis(2->3->4)

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No Yes

Page 8: Data Flow Analysis - Columbia University

Liveness by Example

•  Liverangeofa•  (1->2)and(4->5->2)•  aisdeadon(2->3->4)

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No Yes

Page 9: Data Flow Analysis - Columbia University

Terminology •  Flowgraphterms

•  ACFGnodehasout-edgesthatleadtosuccessornodesandin-edgesthatcomefrompredecessornodes

•  pred[n]isthesetofallpredecessorsofnoden

•  succ[n]isthesetofallsuccessorsofnoden

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No Yes

Examples – Out-edgesofnode5:(5→6)and(5→2)

–succ[5]={2,6}–pred[5]={4}–pred[2]={1,5}

Page 10: Data Flow Analysis - Columbia University

Uses and Defs Def(ordefini*on)– Anassignmentofavaluetoavariable– def[v]=setofCFGnodesthatdefinevariablev– def[n]=setofvariablesthataredefinedatnoden

Use– Areadofavariable’svalue– use[v]=setofCFGnodesthatusevariablev– use[n]=setofvariablesthatareusedatnoden

Moreprecisedefini*onofliveness–AvariablevisliveonaCFGedgeif

(1) ∃ adirectedpathfromthatedgetoauseofv(nodeinuse[v]),and

(2) thatpathdoesnotgothroughanydefofv(nonodesindef[v])

a = 0

a < 9

∉ def[v]

∈ use[v]

v live

Page 11: Data Flow Analysis - Columbia University

The Flow of Liveness •  Data-flow•  LivenessofvariablesisapropertythatflowsthroughtheedgesoftheCFG

•  Direc=onofFlow•  LivenessflowsbackwardsthroughtheCFG,becausethebehavioratfuturenodesdetermineslivenessatagivennode

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No Yes

Page 12: Data Flow Analysis - Columbia University

Liveness at Nodes

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No Yes

a = 0

Justbeforecomputa=on

Justamercomputa=on

TwoMoreDefini*ons–Avariableislive-outatanodeifitisliveonanyoutedges

–Avariableislive-inatanodeifitisliveonanyinedges

Page 13: Data Flow Analysis - Columbia University

CompuEng Liveness •  Generateliveness:Ifavariableisinuse[n],itislive-inatnoden•  Pushlivenessacrossedges:

•  Ifavariableislive-inatanoden•  thenitislive-outatallnodesinpred[n]

•  Pushlivenessacrossnodes:•  Ifavariableislive-outatnodenandnotindef[n]•  thenthevariableisalsolive-inatn

•  DataflowEqua=on: in[n] = use[n] ∪ (out[n] – def[n])

out[n] = ∪ in[s] s ∈ succ[n]

Page 14: Data Flow Analysis - Columbia University

Solving Dataflow EquaEon

foreachnodeninCFGin[n]=∅;out[n]=∅repeatforeachnodeninCFGin’[n]=in[n]out’[n]=out[n]in[n]=use[n]∪(out[n]–def[n])out[n]=∪in[s]s∈succ[n]un*lin’[n]=in[n]andout’[n]=out[n]foralln

Ini=alizesolu=ons

Savecurrentresults

Solvedata-flowequa=on

Testforconvergence

Page 15: Data Flow Analysis - Columbia University

CompuEng Liveness Example

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No Yes

Page 16: Data Flow Analysis - Columbia University

IteraEng Backwards: Converges Faster

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No Yes

Page 17: Data Flow Analysis - Columbia University

Liveness Example: Round1

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No Yes

A variable is live at a particular point in the program if its value at that point will be used in the future (dead, otherwise).

Node use def

6 c

5 a

4 b a

3 bc c

2 a b

1 a

Page 18: Data Flow Analysis - Columbia University

Liveness Example: Round1

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No

Yes

Node use def

6 c

5 a

4 b a

3 bc c

2 a b

1 a

in:c

in:ac

out:c

in:bc

out:ac

in:bc

out:bc

in:ac

out:bc

in:c

out:ac

Page 19: Data Flow Analysis - Columbia University

Liveness Example: Round1

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No

Yes

Node use def

6 c

5 a

4 b a

3 bc c

2 a b

1 a

in:c

in:ac

out:ac

in:bc

out:ac

in:bc

out:bc

in:ac

out:bc

in:c

out:ac

Page 20: Data Flow Analysis - Columbia University

ConservaEve ApproximaEon

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No YesSolu*onX:-Fromthepreviousslide

Page 21: Data Flow Analysis - Columbia University

ConservaEve ApproximaEon

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No Yes

Solu*onY:Carriesvariableduselessly–DoesYleadtoacorrectprogram?

Impreciseconserva*vesolu*ons⇒sub-op*malbutcorrectprograms

Page 22: Data Flow Analysis - Columbia University

ConservaEve ApproximaEon

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No Yes

Solu*onZ:Doesnotiden=fycasliveinallcases–DoesZleadtoacorrectprogram?

Non-conserva*vesolu*ons⇒incorrectprograms

Page 23: Data Flow Analysis - Columbia University

Need for approximaEon

•  Sta=cvs.DynamicLiveness:b*bisalwaysnon-nega=ve,soc>=bisalwaystrueanda’svaluewillneverbeusedamernode

Nocompilercansta*callyiden*fyallinfeasiblepaths

Page 24: Data Flow Analysis - Columbia University

Liveness Analysis Example Summary

•  Liverangeofa•  (1->2)and(4->5->2)

•  Liverangeofb•  (2->3->4)

•  Liverangeofc•  Entry->1->2->3->4->5->2,5->6

Youneed2registersWhy?

4.a=b*2

2.b=a+1

1.a=0

3.c=c+b

5.a<9

6.returnc

No Yes

Page 25: Data Flow Analysis - Columbia University

Example 2: Reaching DefiniEon

Page 26: Data Flow Analysis - Columbia University

CompuEng Reaching DefiniEon

• Assump=on:Atmostonedefini=onpernode

• Gen[n]:Defini=onsthataregeneratedbynoden(atmostone)• Kill[n]:Defini=onsthatarekilledbynoden

{y,i}

Page 27: Data Flow Analysis - Columbia University

Data-flow equaEons for Reaching DefiniEon

Page 28: Data Flow Analysis - Columbia University

Recall Liveness Analysis

• Data-flowEqua=onforliveness

•  Livenessequa*onsintermsofGenandKill

Gen:Newinforma=onthat’saddedatanodeKill:Oldinforma=onthat’sremovedatanodeCandefinealmostanydata-flowanalysisintermsofGenandKill

Page 29: Data Flow Analysis - Columbia University

DirecEon of Flow

Page 30: Data Flow Analysis - Columbia University

Data-Flow EquaEon for reaching definiEon

Page 31: Data Flow Analysis - Columbia University

Available Expression

• Anexpression,x+y,isavailableatnodenifeverypathfromtheentrynodetonevaluatesx+y,andtherearenodefini=onsofxoryamerthelastevalua=on.

Page 32: Data Flow Analysis - Columbia University

Available Expression for CSE

• CommonSubexpressioneliminated•  Ifanexpressionisavailableatapointwhereitisevaluated,itneednotberecomputed

Page 33: Data Flow Analysis - Columbia University

Must vs. May analysis

• Mayinforma*on:Iden=fiespossibili=es• Mustinforma*on:Impliesaguarantee

May Must

Forward ReachingDefini=on AvailableExpression

Backward LiveVariables VeryBusyExpression