252-210: Compiler Design 9.2 Points and paths 9.3 - - PowerPoint PPT Presentation

252 210 compiler design 9 2 points and paths 9 3 transfer
SMART_READER_LITE
LIVE PREVIEW

252-210: Compiler Design 9.2 Points and paths 9.3 - - PowerPoint PPT Presentation

252-210: Compiler Design 9.2 Points and paths 9.3 Transfer func6ons Thomas R. Gross Computer Science Department ETH Zurich, Switzerland Outline


slide-1
SLIDE 1

252-­‑210: ¡Compiler ¡Design ¡ ¡ 9.2 ¡Points ¡and ¡paths ¡ 9.3 ¡Transfer ¡func6ons ¡

Thomas ¡R. ¡Gross ¡ ¡ Computer ¡Science ¡Department ¡ ETH ¡Zurich, ¡Switzerland ¡

slide-2
SLIDE 2

Outline ¡

§ Points ¡ § Paths ¡ § Transfer ¡funcEons ¡

2 ¡

slide-3
SLIDE 3

Terminology ¡

§ Local ¡{analysis ¡| ¡transformaEon}: ¡inside ¡a ¡basic ¡block ¡ § Global ¡{analysis ¡| ¡transformaEon}: ¡inside ¡a ¡method/funcEon ¡

§ Intra-­‑procedural ¡.. ¡

§ Inter-­‑procedural ¡{analysis ¡| ¡transformaEon}: ¡across ¡ methods/funcEons ¡

3 ¡

slide-4
SLIDE 4

9.2 ¡Paths ¡and ¡points ¡ ¡

§ Want ¡to ¡talk ¡about ¡flow ¡of ¡data ¡in ¡program ¡ § Point: ¡a ¡place ¡in ¡the ¡program ¡

§ Given ¡a ¡statement ¡S ¡ § Pbefore_S: ¡point ¡before ¡statement ¡S ¡is ¡executed ¡ § PaBer_S: ¡ ¡point ¡aBer ¡statement ¡S ¡is ¡executed ¡ § Drop ¡S ¡if ¡no ¡risk ¡of ¡confusion ¡

§ Example ¡ a = b + c; //S1 x = a + 2; //S2

4 ¡

slide-5
SLIDE 5

5 ¡

slide-6
SLIDE 6

§ Point: ¡a ¡place ¡in ¡a ¡program ¡

§ ¡Given ¡a ¡basic ¡block ¡B ¡ § Pbefore_B: ¡point ¡before ¡basic ¡block ¡B ¡is ¡executed ¡ § PaBer_B: ¡ ¡point ¡aBer ¡basic ¡block ¡B ¡is ¡executed ¡ § Drop ¡B ¡if ¡no ¡risk ¡of ¡confusion ¡

6 ¡

slide-7
SLIDE 7

k = 1 minVal = A[0] L: TCond1 = k < max if (TCond1) TCond2 = A[k] < minVal if (TCond2) minVal = A[k] k = k + 1 Goto L return minVal

7 ¡

B0 ¡ B1 ¡ B2 ¡ B3 ¡ B4 ¡ B5 ¡

slide-8
SLIDE 8

§ A ¡path ¡is ¡a ¡sequence ¡of ¡points ¡(x0, ¡x1, ¡x2, ¡…, ¡xn) ¡such ¡that ¡for ¡ any ¡pair ¡(xj, ¡xj+1) ¡with ¡0≤j<n ¡one ¡of ¡these ¡condiEons ¡holds ¡

  • 1. xj ¡is ¡the ¡point ¡before ¡basic ¡block ¡B ¡and ¡xj+1 ¡is ¡the ¡point ¡

aBer ¡basic ¡block ¡B ¡

  • 2. xj ¡is ¡the ¡point ¡aBer ¡basic ¡block ¡Bk ¡and ¡xj+1 ¡is ¡the ¡point ¡

before ¡basic ¡block ¡Bm ¡and ¡there ¡is ¡an ¡edge ¡from ¡Bk ¡to ¡Bm ¡ in ¡the ¡CFG ¡ § DefiniEon ¡can ¡be ¡extended ¡to ¡deal ¡with ¡points ¡before ¡

  • statements. ¡

8 ¡

slide-9
SLIDE 9

Comments ¡

§ Points ¡may ¡have ¡mulEple ¡predecessors ¡

§ Join ¡points ¡ § Join ¡nodes ¡(in ¡the ¡CFG) ¡

§ Points ¡may ¡have ¡mulEple ¡successors ¡

§ Split ¡points ¡ § Split ¡nodes ¡

§ When ¡summarizing ¡paths ¡we ¡may ¡just ¡list ¡the ¡basic ¡blocks ¡

9 ¡

slide-10
SLIDE 10

Paths ¡

10 ¡

B2 ¡ ¡ B0 ¡ ¡ B1 ¡ ¡ B3 ¡ ¡

slide-11
SLIDE 11

Paths ¡

11 ¡

i ¡= ¡0 ¡ if ¡(i>0) ¡ ¡

B2 ¡ ¡ B0 ¡ ¡ B1 ¡ ¡ B3 ¡ ¡

slide-12
SLIDE 12

Paths ¡

12 ¡

if ¡(i>0) ¡ ¡ if ¡(i<0) ¡ ¡

B2 ¡ ¡ B0 ¡ ¡ B1 ¡ ¡ B3 ¡ ¡ B4 ¡ ¡ B5 ¡ ¡ B6 ¡ ¡

slide-13
SLIDE 13

Paths ¡

§ We ¡are ¡interested ¡in ¡all ¡paths ¡in ¡a ¡CFG ¡

§ Even ¡if ¡they ¡can ¡never ¡be ¡taken ¡in ¡an ¡execu6on ¡

§ Need ¡summary ¡informaEon ¡

§ There ¡can ¡be ¡arbitrarily ¡many ¡paths ¡

13 ¡

slide-14
SLIDE 14

Loops ¡

14 ¡

if ¡(COND) ¡ ¡

B0 ¡ B1 ¡ B2 ¡ B3 ¡

slide-15
SLIDE 15

Loops ¡

15 ¡

if ¡(COND) ¡ ¡

§ B0 ¡B1 ¡B3 ¡ § B0 ¡B1 ¡B2 ¡B1 ¡B3 ¡ § B0 ¡B1 ¡B2 ¡B1 ¡B2 ¡B1 ¡B3 ¡ § B0 ¡B1 ¡B2 ¡B1 ¡B2 ¡B1 ¡B2 ¡B1 ¡B2 ¡B1 ¡B2 ¡B1 ¡B2 ¡B1 ¡B2 ¡B1 ¡B2 ¡B1 ¡B2 ¡… ¡ B0 ¡ B1 ¡ B2 ¡ B3 ¡

slide-16
SLIDE 16

Paths ¡

§ We ¡deal ¡only ¡with ¡finite ¡paths ¡ § PracEcal ¡view: ¡what ¡has ¡happened ¡when ¡program ¡execuEon ¡ reaches ¡B3 ¡

§ Pbefore_B3 ¡ § Execu6on ¡(for ¡some ¡input) ¡may ¡never ¡reach ¡B3 ¡…. ¡

§ Summary ¡informaEon ¡is ¡needed ¡

16 ¡

slide-17
SLIDE 17

9.3 ¡Transfer ¡funcEons ¡

§ We ¡are ¡interested ¡in ¡knowing ¡that ¡a ¡variable ¡has ¡a ¡constant ¡ value ¡at ¡a ¡given ¡point ¡in ¡the ¡program. ¡

17 ¡

slide-18
SLIDE 18

a = 4; if (…) { c = 7; } else { b = d + 2; } // S: d = a * 2; …

18 ¡

slide-19
SLIDE 19

a = 4; if (…) { c = 7; } else { b = d + 2; } // S: d = a * 2; …

19 ¡

slide-20
SLIDE 20

9.3 ¡Transfer ¡funcEons ¡

§ We ¡are ¡interested ¡in ¡knowing ¡that ¡a ¡variable ¡has ¡a ¡constant ¡ value ¡at ¡a ¡given ¡point ¡in ¡the ¡program. ¡ § Can ¡we ¡establish ¡that ¡“a ¡= ¡4” ¡ ¡before ¡statement ¡S ¡is ¡ executed? ¡ § Need ¡to ¡consider ¡all ¡paths ¡that ¡lead ¡to ¡point ¡Pbefore_S ¡

20 ¡

slide-21
SLIDE 21

a = 4; if (…) { c = 7; } else { b = d + 2; } // S: d = a * 2; …

21 ¡

a = 4 Tcond = if (Tcond) b = d + 2 c = 7 d = a * 2 Pbefore ¡

slide-22
SLIDE 22

a = 4; if (…) { c = 7; } else { b = d + 2; } // S: d = a * 2; …

22 ¡

a = 4 Tcond = if (Tcond) b = d + 2 c = 7 d = a * 2 Pbefore ¡

slide-23
SLIDE 23

a = 4; if (…) { c = 7; } else { b = d + 2; } // S: d = a * 2; …

23 ¡

a = 4 Tcond = if (Tcond) b = d + 2 c = 7 d = a * 2 Pbefore ¡

slide-24
SLIDE 24

9.3 ¡Transfer ¡funcEons ¡

§ We ¡are ¡interested ¡in ¡knowing ¡that ¡a ¡variable ¡has ¡a ¡constant ¡ value ¡at ¡a ¡given ¡point ¡in ¡the ¡program. ¡ § Can ¡we ¡establish ¡that ¡“a ¡= ¡4” ¡ ¡before ¡statement ¡S ¡is ¡ executed? ¡ § Need ¡to ¡consider ¡all ¡paths ¡that ¡lead ¡to ¡point ¡Pbefore_S ¡ § What ¡is ¡the ¡effect ¡of ¡statements ¡along ¡these ¡paths? ¡

24 ¡

slide-25
SLIDE 25

Path ¡(basic ¡blocks) ¡

§ A ¡path ¡is ¡a ¡sequence ¡of ¡points ¡(x0, ¡x1, ¡x2, ¡…, ¡xn) ¡such ¡that ¡for ¡ any ¡pair ¡(xj, ¡xj+1) ¡with ¡0≤j<n ¡one ¡of ¡these ¡condiEons ¡holds ¡

  • 1. xj ¡is ¡the ¡point ¡before ¡basic ¡block ¡B ¡and ¡xj+1 ¡is ¡the ¡point ¡

aBer ¡basic ¡block ¡B ¡

  • 2. xj ¡is ¡the ¡point ¡aBer ¡basic ¡block ¡Bk ¡and ¡xj+1 ¡is ¡the ¡point ¡

before ¡basic ¡block ¡Bm ¡and ¡there ¡is ¡an ¡edge ¡from ¡Bk ¡to ¡Bm ¡ in ¡the ¡CFG ¡ § DefiniEon ¡can ¡be ¡extended ¡to ¡deal ¡with ¡points ¡before ¡

  • statements. ¡

25 ¡

slide-26
SLIDE 26

Path ¡(for ¡statements) ¡

§ Given ¡a ¡CFG. ¡For ¡each ¡node ¡B ¡(i.e., ¡basic ¡block) ¡there ¡exists ¡ an ¡(ordered) ¡sequence ¡of ¡statements ¡SB,0, ¡SB,1, ¡… ¡SB,m. ¡

§ Empty ¡basic ¡block? ¡ ¡-­‑-­‑ ¡Allow ¡“no ¡op ¡statement” ¡ § SB,0: ¡first ¡statement, ¡SB,m: ¡last ¡statement ¡ § Order: ¡program ¡order ¡ ¡

§ A ¡path ¡is ¡a ¡sequence ¡of ¡points ¡(x0, ¡x1, ¡x2, ¡…, ¡xn) ¡such ¡that ¡for ¡ any ¡pair ¡(xj, ¡xj+1) ¡with ¡0≤j<n ¡one ¡of ¡these ¡condiEons ¡holds ¡

  • 1. xj ¡is ¡the ¡point ¡before ¡statement ¡S ¡and ¡xj+1 ¡is ¡the ¡point ¡

aBer ¡statement ¡S ¡

  • 2. xj ¡is ¡the ¡point ¡aBer ¡the ¡last ¡statement ¡S’ ¡of ¡basic ¡block ¡Bk ¡

and ¡xj+1 ¡is ¡the ¡point ¡before ¡the ¡first ¡statement ¡S” ¡of ¡basic ¡ block ¡Bm ¡and ¡there ¡is ¡an ¡edge ¡from ¡Bk ¡to ¡Bm ¡in ¡the ¡CFG ¡ ¡

26 ¡

slide-27
SLIDE 27

Claim: ¡a=4 ¡@ ¡S ¡

§ What ¡is ¡the ¡effect ¡of ¡statements ¡along ¡the ¡ ¡paths ¡that ¡end ¡at ¡ Pbefore_S? ¡ § Consider ¡each ¡statement ¡on ¡a ¡path ¡

§ If ¡the ¡last ¡assignment ¡to ¡variable ¡ ¡a ¡supports ¡the ¡claim ¡then ¡the ¡claim ¡ is ¡valid ¡

§ If ¡the ¡claim ¡is ¡valid ¡along ¡all ¡paths ¡then ¡it’s ¡valid ¡at ¡Pbefore_S ¡

27 ¡

slide-28
SLIDE 28

Transfer ¡funcEon ¡

§ The ¡transfer ¡funcEon ¡captures ¡the ¡effect ¡of ¡a ¡statement ¡S ¡on ¡

  • ur ¡claim ¡

§ Claim ¡In ¡(at ¡Pbefore_S) ¡ ¡➞ ¡Claim ¡Out ¡(at ¡PaBer_S) ¡

§ (AlternaEvely) ¡The ¡transfer ¡funcEon ¡captures ¡the ¡effect ¡of ¡ the ¡statements ¡in ¡a ¡basic ¡block ¡on ¡our ¡claim. ¡

¡

28 ¡

Claim ¡(for ¡x ¡and ¡v) ¡at ¡Pbefore_S ¡ Claim ¡(for ¡x ¡and ¡v) ¡at ¡PaBer_S ¡ T: ¡Transfer ¡func,on ¡

slide-29
SLIDE 29

§ Transfer ¡funcEon ¡for ¡each ¡claim ¡(analysis) ¡

§ Here: ¡want ¡to ¡see ¡if ¡variable ¡x ¡has ¡a ¡value ¡v, ¡with ¡v ¡a ¡constant ¡

§ Transfer ¡funcEon ¡(for ¡S) ¡maps ¡input ¡claim ¡to ¡output ¡claim ¡ § Here, ¡the ¡transfer ¡funcEon ¡allows ¡three ¡different ¡input ¡or ¡

  • utput ¡values ¡for ¡our ¡claim: ¡

§ ⟙: ¡(for ¡Top) ¡Variable ¡x ¡is ¡not ¡a ¡constant ¡ ¡ § value: ¡x ¡has ¡the ¡(constant) ¡value ¡value ¡

§ Different ¡variables ¡imply ¡different ¡claims ¡

§ ⊥: ¡(for ¡Boiom) ¡we ¡don’t ¡know; ¡statement ¡is ¡as ¡far ¡as ¡we ¡know ¡not ¡ executed ¡

29 ¡

slide-30
SLIDE 30

Transfer ¡funcEon ¡

§ Transfer ¡funcEon ¡must ¡be ¡conservaEve. ¡

§ Do ¡not ¡mislead ¡the ¡compiler ¡

§ Variable ¡x ¡has ¡constant ¡value ¡v ¡but ¡transfer ¡funcEon ¡returns ¡⟙. ¡

§ Acceptable ¡

§ Variable ¡x ¡has ¡constant ¡value ¡v ¡but ¡transfer ¡funcEon ¡returns ¡v. ¡

§ Great ¡

§ Variable ¡x ¡has ¡constant ¡value ¡v ¡but ¡transfer ¡funcEon ¡returns ¡ ¡k ¡ with ¡k≠v. ¡

§ Not ¡OK ¡

30 ¡

slide-31
SLIDE 31

§ Given ¡variable ¡x, ¡constant ¡value ¡

31 ¡

x = value

Claim ¡ ¡In ¡ ⟙ ¡ value ¡ ⊥ ¡ Claim ¡Out ¡

slide-32
SLIDE 32

§ Given ¡variable ¡x, ¡constant ¡value ¡

32 ¡

x = value

Claim ¡ ¡In ¡ ⟙ ¡ value ¡ ⊥ ¡ Claim ¡Out ¡ value ¡ value ¡ value ¡

slide-33
SLIDE 33

§ Given ¡variable ¡x, ¡expression ¡expr ¡that ¡is ¡not ¡constant ¡ ¡ ¡

33 ¡

x = expr

Claim ¡ ¡In ¡ ⟙ ¡ value ¡ ⊥ ¡ Claim ¡Out ¡

slide-34
SLIDE 34

§ Given ¡variable ¡x, ¡expression ¡expr ¡that ¡is ¡not ¡constant ¡ ¡ ¡

34 ¡

x = expr

Claim ¡ ¡In ¡ ⟙ ¡ value ¡ ⊥ ¡ Claim ¡Out ¡ ⟙ ¡ ⟙ ¡ ⟙ ¡

slide-35
SLIDE 35

§ Given ¡variables ¡x ¡and ¡y, ¡x ¡and ¡y ¡not ¡aliased ¡

§ Recall ¡that ¡our ¡claim ¡refers ¡to ¡x ¡

35 ¡

y = …

Claim ¡ ¡In ¡ ⟙ ¡ value ¡ ⊥ ¡ Claim ¡Out ¡

slide-36
SLIDE 36

§ Given ¡variables ¡x ¡and ¡y, ¡x ¡and ¡y ¡not ¡aliased ¡

§ Recall ¡that ¡our ¡claim ¡refers ¡to ¡x ¡

36 ¡

y = …

Claim ¡ ¡In ¡ ⟙ ¡ value ¡ ⊥ ¡ Claim ¡Out ¡ ⟙ ¡ value ¡ ⊥ ¡

slide-37
SLIDE 37

§ Given ¡variable ¡x ¡ § Must ¡consider ¡ claims ¡along ¡P1 ¡ and ¡P2 ¡

§ Maybe ¡different ¡ values ¡(value1 ¡ and ¡value2) ¡

37 ¡

Path ¡P2 ¡ Path ¡P1 ¡

¡

P1 ¡

⟙ ¡ value2 ¡ ⊥ ¡ ⟙ ¡ value1 ¡ ⊥ ¡

P2 ¡ ??? ¡

slide-38
SLIDE 38

§ Given ¡variable ¡x ¡ § Must ¡consider ¡ claims ¡along ¡P1 ¡ and ¡P2 ¡

§ Maybe ¡different ¡ values ¡(value1 ¡ and ¡value2) ¡

38 ¡

Path ¡P2 ¡ Path ¡P1 ¡

¡

P1 ¡

⟙ ¡ value2 ¡ ⊥ ¡ ⟙ ¡ ⟙ ¡ ⟙ ¡ ⟙ ¡ value1 ¡ ⟙ ¡ value1 ¡ ¡ ¡if ¡(value1=value2) ¡ ¡ ⟙ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡otherwise ¡⟙ ¡ value1 ¡ ¡ ⊥ ¡ ⟙ ¡ value2 ¡ ⊥ ¡

P2 ¡

slide-39
SLIDE 39

Transfer ¡funcEon ¡and ¡paths ¡

§ In ¡general ¡arbitrary ¡number ¡of ¡paths ¡

§ Can’t ¡check ¡them ¡all ¡

§ IteraEon: ¡ ¡

1. Start ¡with ¡es6mate ¡for ¡each ¡point’s ¡input ¡claim ¡ 2. Apply ¡transfer ¡func6on ¡for ¡all ¡statements ¡ 3. Con6nue ¡un6l ¡no ¡more ¡changes ¡to ¡output ¡claim ¡

39 ¡

slide-40
SLIDE 40

IniEal ¡approximaEon ¡

§ ⟙ ¡is ¡a ¡safe ¡approximaEon ¡ § Assume ¡all ¡input ¡claims ¡are ¡⟙ ¡ § (Back ¡to ¡example, ¡interested ¡in ¡variable ¡a) ¡

40 ¡

slide-41
SLIDE 41

41 ¡

a = 4 Tcond = if (Tcond) b = d + 2 c = 7 d = a * 2 ⟙ ¡ ⟙ ¡ ⟙ ¡ ⟙ ¡

slide-42
SLIDE 42

42 ¡

a = 4 Tcond = if (Tcond) b = d + 2 c = 7 d = a * 2 ⟙ ¡ 4 ¡ 4 ¡ 4 ¡ 4 ¡ 4 ¡ 4 ¡

slide-43
SLIDE 43

43 ¡

a = 4 Tcond = if (Tcond) a = 8 c = 7 d = a * 2 ⟙ ¡ ⟙ ¡ ⟙ ¡ ⟙ ¡

slide-44
SLIDE 44

44 ¡

a = 4 Tcond = if (Tcond) a = 8 c = 7 d = a * 2 ⟙ ¡ 4 ¡ 4 ¡ ⟙ ¡ 4 ¡ 8 ¡ 4 ¡

slide-45
SLIDE 45

45 ¡

a = 4 Tcond = if (Tcond) a = b c = 7 d = a * 2 ⟙ ¡ ⟙ ¡ ⟙ ¡ ⟙ ¡

slide-46
SLIDE 46

46 ¡

a = 4 Tcond = if (Tcond) a = b c = 7 d = a * 2 ⟙ ¡ 4 ¡ ⟙ ¡ 4 ¡ ⟙ ¡ 4 ¡ ⟙ ¡ 4 ¡

slide-47
SLIDE 47

Loops ¡

§ What ¡about ¡loops? ¡ § Will ¡iteraEon ¡produce ¡the ¡correct ¡value? ¡ § Will ¡the ¡iteraEon ¡terminate? ¡ § Comment: ¡Loops ¡provide ¡moEvaEon ¡for ¡⟘ ¡

47 ¡

slide-48
SLIDE 48

48 ¡

a = 4 Tcond = if (Tcond) b = 7 b = 0 d = a * 2 Tcond2 = if (Tcond2)

slide-49
SLIDE 49

§ What ¡would ¡be ¡a ¡good ¡approximaEon ¡for ¡points ¡in ¡the ¡loop? ¡ ¡ § Loop ¡is ¡not ¡really ¡a ¡JavaLi ¡loop ¡

§ But ¡making ¡it ¡conform ¡JavaLi ¡rules ¡takes ¡space ¡and ¡the ¡problems ¡ persist ¡ ¡

49 ¡

slide-50
SLIDE 50

50 ¡

a = 4 Tcond = if (Tcond) b = 7 b = 0 d = a * 2 Tcond2 = if (Tcond2) ⟙ ¡ ⟙ ¡ ⟙ ¡

slide-51
SLIDE 51

51 ¡

slide-52
SLIDE 52

§ Break ¡cycle ¡of ¡reasoning ¡with ¡⟘ ¡ § ⟘ ¡means ¡“as ¡far ¡as ¡we ¡know” ¡this ¡path ¡is ¡not ¡executed ¡

§ But ¡we ¡can ¡learn ¡as ¡we ¡analyze ¡the ¡program ¡ § Use ¡⟘ ¡as ¡ini6al ¡value ¡for ¡all ¡nodes ¡but ¡the ¡START ¡node ¡

52 ¡

slide-53
SLIDE 53

53 ¡

a = 4 Tcond = if (Tcond) b = 7 b = 0 d = a * 2 Tcond2 = if (Tcond2) ⟘ ¡ ⟙ ¡ ⟘ ¡ ⟘ ¡ ⟘ ¡

slide-54
SLIDE 54

54 ¡

a = 4 Tcond = if (Tcond) b = 7 b = 0 d = a * 2 Tcond2 = if (Tcond2) ⟙ ¡ 4 4 ¡ 4 ¡ 4 ¡ 4 ¡ 4 ¡ 4 ¡ 4 ¡

slide-55
SLIDE 55

TerminaEon ¡

§ Will ¡iteraEon ¡stop? ¡ § Yes. ¡ § Possible ¡values ¡from ¡a ¡lapce ¡ § At ¡most ¡2 ¡transiEons ¡at ¡each ¡point ¡

§ ⟘ ¡ ¡→ ¡constant ¡ § constant ¡→ ¡⟙ ¡ § Finite ¡number ¡of ¡points ¡

55 ¡

slide-56
SLIDE 56

ImplementaEon ¡

§ Want ¡to ¡idenEfy ¡variables ¡with ¡constant ¡value ¡ ¡

§ At ¡all ¡points ¡in ¡the ¡program ¡

§ Deal ¡with ¡mulEple ¡variables ¡at ¡the ¡same ¡Eme ¡ § Transfer ¡funcEon ¡depends ¡on ¡statement ¡and ¡variable ¡

§ But ¡can ¡evaluate ¡N ¡transfer ¡func6ons ¡in ¡parallel ¡ § Extend ¡to ¡basic ¡blocks: ¡only ¡the ¡last ¡statement ¡maiers ¡

§ Bitvector ¡implementaEon ¡with ¡special ¡treatment ¡of ¡those ¡ variables ¡that ¡have ¡a ¡constant ¡value ¡

56 ¡

slide-57
SLIDE 57

§ Need ¡to ¡find ¡appropriate ¡transfer ¡funcEons ¡for ¡other ¡ analysis ¡problems ¡ § Same ¡paqern ¡

§ Claim ¡is ¡false ¡(⟙) ¡ § Claim ¡is ¡true ¡ § We ¡don’t ¡know ¡(yet) ¡

57 ¡