cs618: program analysis 2016-17 ist semester - pointer...

115
CS618: Program Analysis 2016-17 I st Semester Pointer Analysis Amey Karkare [email protected] [email protected] Department of CSE, IIT Kanpur/Bombay karkare, CSE, IITK/B CS618 1/27

Upload: nguyenhanh

Post on 07-Aug-2019

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

CS618: Program Analysis

2016-17 Ist Semester

Pointer Analysis

Amey Karkare

[email protected]

[email protected]

Department of CSE, IIT Kanpur/Bombay

karkare, CSE, IITK/B CS618 1/27

Page 2: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Why Pointer Analysis?

Static analysis of pointers & references

S1. . . .

S2. q = p;S3. do {S4. q = q.next ;S5. } while (. . .)S6. p.data = r1;S7. q.data = q.data + r2;S8. p.data = r1;S9. r3 = p.data + r2;S10. . . .

p

q

m1 m2 m3 mkp next next

qq

q

HeapStack

Superimposition of memory graphs after do-while loop

p and q are definitely not aliases statement S6 onwards.

Statement S8 is redundant.

karkare, CSE, IITK/B CS618 2/27

Page 3: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Why Pointer Analysis?

Static analysis of pointers & references

S1. . . .

S2. q = p;S3. while (. . .) {S4. q = q.next ;S5. }S6. p.data = r1;S7. q.data = q.data + r2;S8. p.data = r1;S9. r3 = p.data + r2;S10. . . .

p

q

m1 m2 m3 mkp next next

qq

q

q

HeapStack

Superimposition of memory graphs after while loop

p and q may be aliases statement S6 onwards.

Statement S8 is not redundant.

karkare, CSE, IITK/B CS618 2/27

Page 4: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Why Pointer Analysis?

x = &a;

a = 5; *x = 15;

c = a + 1;

Reaching definitions analysis

karkare, CSE, IITK/B CS618 3/27

Page 5: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Why Pointer Analysis?

x = &a;

a = 5; *x = 15;

c = a + 1;

Reaching definitions analysis

Which defs

of a reach

here?

karkare, CSE, IITK/B CS618 3/27

Page 6: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Sensitivity in Data Flow Analysis

Flow Sensitive Analysis

karkare, CSE, IITK/B CS618 4/27

Page 7: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Sensitivity in Data Flow Analysis

Flow Sensitive Analysis

Order of execution: Determined by the semantics of

language

karkare, CSE, IITK/B CS618 4/27

Page 8: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Sensitivity in Data Flow Analysis

Flow Sensitive Analysis

Order of execution: Determined by the semantics of

language

Point-specific information computed at each program point

within a procedure

karkare, CSE, IITK/B CS618 4/27

Page 9: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Sensitivity in Data Flow Analysis

Flow Sensitive Analysis

Order of execution: Determined by the semantics of

language

Point-specific information computed at each program point

within a procedureA statement can “override” information computed by aprevious statement

karkare, CSE, IITK/B CS618 4/27

Page 10: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Sensitivity in Data Flow Analysis

Flow Sensitive Analysis

Order of execution: Determined by the semantics of

language

Point-specific information computed at each program point

within a procedureA statement can “override” information computed by aprevious statement

Kill component in the flow function

karkare, CSE, IITK/B CS618 4/27

Page 11: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Sensitivity in Data Flow Analysis

Flow Insensitive Analysis

karkare, CSE, IITK/B CS618 5/27

Page 12: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Sensitivity in Data Flow Analysis

Flow Insensitive Analysis

Order of execution: Statements are assumed to execute in

any order

karkare, CSE, IITK/B CS618 5/27

Page 13: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Sensitivity in Data Flow Analysis

Flow Insensitive Analysis

Order of execution: Statements are assumed to execute in

any orderAs a result, all the program points in a procedure receiveidentical data flow information.

karkare, CSE, IITK/B CS618 5/27

Page 14: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Sensitivity in Data Flow Analysis

Flow Insensitive Analysis

Order of execution: Statements are assumed to execute in

any orderAs a result, all the program points in a procedure receiveidentical data flow information.

“Summary” for the procedure

karkare, CSE, IITK/B CS618 5/27

Page 15: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Sensitivity in Data Flow Analysis

Flow Insensitive Analysis

Order of execution: Statements are assumed to execute in

any orderAs a result, all the program points in a procedure receiveidentical data flow information.

“Summary” for the procedure

Safe approximation of flow-sensitive point-specific

information for any point, for any given execution order

karkare, CSE, IITK/B CS618 5/27

Page 16: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Sensitivity in Data Flow Analysis

Flow Insensitive Analysis

Order of execution: Statements are assumed to execute in

any orderAs a result, all the program points in a procedure receiveidentical data flow information.

“Summary” for the procedure

Safe approximation of flow-sensitive point-specific

information for any point, for any given execution order

A statement can not “override” information computed byanother statement

karkare, CSE, IITK/B CS618 5/27

Page 17: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Sensitivity in Data Flow Analysis

Flow Insensitive Analysis

Order of execution: Statements are assumed to execute in

any orderAs a result, all the program points in a procedure receiveidentical data flow information.

“Summary” for the procedure

Safe approximation of flow-sensitive point-specific

information for any point, for any given execution order

A statement can not “override” information computed byanother statement

NO Kill component in the flow function

karkare, CSE, IITK/B CS618 5/27

Page 18: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Sensitivity in Data Flow Analysis

Flow Insensitive Analysis

Order of execution: Statements are assumed to execute in

any orderAs a result, all the program points in a procedure receiveidentical data flow information.

“Summary” for the procedure

Safe approximation of flow-sensitive point-specific

information for any point, for any given execution order

A statement can not “override” information computed byanother statement

NO Kill component in the flow function

If statement s kills some data flow information, there is an

alternate path that excludes s

karkare, CSE, IITK/B CS618 5/27

Page 19: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Examples of Flow Insensitive Analyses

Type checking, Type inferencing

karkare, CSE, IITK/B CS618 6/27

Page 20: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Examples of Flow Insensitive Analyses

Type checking, Type inferencing

Compute/Verify type of a variable/expression

karkare, CSE, IITK/B CS618 6/27

Page 21: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Examples of Flow Insensitive Analyses

Type checking, Type inferencing

Compute/Verify type of a variable/expression

Address taken analysis

karkare, CSE, IITK/B CS618 6/27

Page 22: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Examples of Flow Insensitive Analyses

Type checking, Type inferencing

Compute/Verify type of a variable/expression

Address taken analysis

Which variables have their addresses taken?

karkare, CSE, IITK/B CS618 6/27

Page 23: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Examples of Flow Insensitive Analyses

Type checking, Type inferencing

Compute/Verify type of a variable/expression

Address taken analysis

Which variables have their addresses taken?

A very simple form of pointer analysis

karkare, CSE, IITK/B CS618 6/27

Page 24: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Examples of Flow Insensitive Analyses

Type checking, Type inferencing

Compute/Verify type of a variable/expression

Address taken analysis

Which variables have their addresses taken?

A very simple form of pointer analysis

Side effects analysis

karkare, CSE, IITK/B CS618 6/27

Page 25: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Examples of Flow Insensitive Analyses

Type checking, Type inferencing

Compute/Verify type of a variable/expression

Address taken analysis

Which variables have their addresses taken?

A very simple form of pointer analysis

Side effects analysis

Does a procedure modify address / global variable /

reference parameter / . . . ?

karkare, CSE, IITK/B CS618 6/27

Page 26: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Realizing Flow Insensitivity

b0

b1

b2 b3

b4

b5

karkare, CSE, IITK/B CS618 7/27

Page 27: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Realizing Flow Insensitivity

b0

b1

b2 b3

b4

b5

ENTRY

b0 b1 b2 b3 b4 b5

EXIT

karkare, CSE, IITK/B CS618 7/27

Page 28: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Realizing Flow Insensitivity

b0

b1

b2 b3

b4

b5

ENTRY

b0 b1 b2 b3 b4 b5

EXIT

Allows arbitrary compositions of flow functions in any order ⇒Flow insensitivity

karkare, CSE, IITK/B CS618 7/27

Page 29: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Realizing Flow Insensitivity

b0

b1

b2 b3

b4

b5

ENTRY

b0 b1 b2 b3 b4 b5

EXIT

In practice, dependent constraints are collected in a global

repository in one pass and solved independently

karkare, CSE, IITK/B CS618 7/27

Page 30: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Alias Analysis vs. Points-to Analysis

Points-to Analysis Alias Analysis

x = &a x = a

x points-to a x and a are aliases

karkare, CSE, IITK/B CS618 8/27

Page 31: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Alias Analysis vs. Points-to Analysis

Points-to Analysis Alias Analysis

x = &a x = a

x points-to a x and a are aliases

x → a x ≡ a

karkare, CSE, IITK/B CS618 8/27

Page 32: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Alias Analysis vs. Points-to Analysis

Points-to Analysis Alias Analysis

x = &a x = a

x points-to a x and a are aliases

x → a x ≡ a

Reflexive?

karkare, CSE, IITK/B CS618 8/27

Page 33: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Alias Analysis vs. Points-to Analysis

Points-to Analysis Alias Analysis

x = &a x = a

x points-to a x and a are aliases

x → a x ≡ a

Reflexive? No Yes

karkare, CSE, IITK/B CS618 8/27

Page 34: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Alias Analysis vs. Points-to Analysis

Points-to Analysis Alias Analysis

x = &a x = a

x points-to a x and a are aliases

x → a x ≡ a

Reflexive? No Yes

Symmetric?

karkare, CSE, IITK/B CS618 8/27

Page 35: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Alias Analysis vs. Points-to Analysis

Points-to Analysis Alias Analysis

x = &a x = a

x points-to a x and a are aliases

x → a x ≡ a

Reflexive? No Yes

Symmetric? No Yes

karkare, CSE, IITK/B CS618 8/27

Page 36: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Alias Analysis vs. Points-to Analysis

Points-to Analysis Alias Analysis

x = &a x = a

x points-to a x and a are aliases

x → a x ≡ a

Reflexive? No Yes

Symmetric? No Yes

Transitive?

karkare, CSE, IITK/B CS618 8/27

Page 37: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Alias Analysis vs. Points-to Analysis

Points-to Analysis Alias Analysis

x = &a x = a

x points-to a x and a are aliases

x → a x ≡ a

Reflexive? No Yes

Symmetric? No Yes

Transitive? No

karkare, CSE, IITK/B CS618 8/27

Page 38: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Alias Analysis vs. Points-to Analysis

Points-to Analysis Alias Analysis

x = &a x = a

x points-to a x and a are aliases

x → a x ≡ a

Reflexive? No Yes

Symmetric? No Yes

Transitive? No Must alias: Yes,

May alias: No

karkare, CSE, IITK/B CS618 8/27

Page 39: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Andersen’s Flow Insensitive Points-to Analysis

Subset based analysis

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

karkare, CSE, IITK/B CS618 9/27

Page 40: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Andersen’s Flow Insensitive Points-to Analysis

Subset based analysis

Plhs ⊇ Prhs

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

karkare, CSE, IITK/B CS618 9/27

Page 41: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Andersen’s Flow Insensitive Points-to Analysis

Subset based analysis

Plhs ⊇ Prhs

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

1 Pa ⊇ {b}a b

karkare, CSE, IITK/B CS618 9/27

Page 42: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Andersen’s Flow Insensitive Points-to Analysis

Subset based analysis

Plhs ⊇ Prhs

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

1 Pa ⊇ {b}2 Pc ⊇ Pa

a

c

b

karkare, CSE, IITK/B CS618 9/27

Page 43: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Andersen’s Flow Insensitive Points-to Analysis

Subset based analysis

Plhs ⊇ Prhs

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

1 Pa ⊇ {b}2 Pc ⊇ Pa

3 Pa ⊇ {d}

a

c

b

d

karkare, CSE, IITK/B CS618 9/27

Page 44: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Andersen’s Flow Insensitive Points-to Analysis

Subset based analysis

Plhs ⊇ Prhs

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

1 Pa ⊇ {b}2 Pc ⊇ Pa

3 Pa ⊇ {d}4 Pa ⊇ {e}

a

c

b

d

e

karkare, CSE, IITK/B CS618 9/27

Page 45: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Andersen’s Flow Insensitive Points-to Analysis

Subset based analysis

Plhs ⊇ Prhs

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

1 Pa ⊇ {b}2 Pc ⊇ Pa

3 Pa ⊇ {d}4 Pa ⊇ {e}5 Pb ⊇ Pa

a

c

b

d

eb

karkare, CSE, IITK/B CS618 9/27

Page 46: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Andersen’s Flow Insensitive Points-to Analysis

Subset based analysis

Plhs ⊇ Prhs

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

1 Pa ⊇ {b}2 Pc ⊇ Pa

3 Pa ⊇ {d}4 Pa ⊇ {e}5 Pb ⊇ Pa

a

c

b

d

e

karkare, CSE, IITK/B CS618 9/27

Page 47: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Steensgaard’s Flow Insensitive Points-to Analysis

Equality based analysis: Plhs ≡ Prhs

Only one Points-to successor at any time, merge

(potential) multiple successors

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

karkare, CSE, IITK/B CS618 10/27

Page 48: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Steensgaard’s Flow Insensitive Points-to Analysis

Equality based analysis: Plhs ≡ Prhs

Only one Points-to successor at any time, merge

(potential) multiple successors

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

1 Pa ⊇ {b}

a b

karkare, CSE, IITK/B CS618 10/27

Page 49: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Steensgaard’s Flow Insensitive Points-to Analysis

Equality based analysis: Plhs ≡ Prhs

Only one Points-to successor at any time, merge

(potential) multiple successors

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

1 Pa ⊇ {b}2 MERGE(Pc ,Pa)

a

c

b

karkare, CSE, IITK/B CS618 10/27

Page 50: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Steensgaard’s Flow Insensitive Points-to Analysis

Equality based analysis: Plhs ≡ Prhs

Only one Points-to successor at any time, merge

(potential) multiple successors

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

1 Pa ⊇ {b}2 MERGE(Pc ,Pa)

3 Pa ⊇ {d}

a

c

b

d

karkare, CSE, IITK/B CS618 10/27

Page 51: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Steensgaard’s Flow Insensitive Points-to Analysis

Equality based analysis: Plhs ≡ Prhs

Only one Points-to successor at any time, merge

(potential) multiple successors

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

1 Pa ⊇ {b}2 MERGE(Pc ,Pa)

3 Pa ⊇ {d}4 Pa ⊇ {e}

a

c

b

d

e

karkare, CSE, IITK/B CS618 10/27

Page 52: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Steensgaard’s Flow Insensitive Points-to Analysis

Equality based analysis: Plhs ≡ Prhs

Only one Points-to successor at any time, merge

(potential) multiple successors

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

1 Pa ⊇ {b}2 MERGE(Pc ,Pa)

3 Pa ⊇ {d}4 Pa ⊇ {e}5 MERGE(Pb,Pa)

a

c

b

d

e

karkare, CSE, IITK/B CS618 10/27

Page 53: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Steensgaard’s Flow Insensitive Points-to Analysis

Equality based analysis: Plhs ≡ Prhs

Only one Points-to successor at any time, merge

(potential) multiple successors

Program Constraints Points-to Graph

1 a = &b

2 c = a

3 a = &d 4 a = &e

5 b = a

# Constraint

1 Pa ⊇ {b}2 MERGE(Pc ,Pa)

3 Pa ⊇ {d}4 Pa ⊇ {e}5 MERGE(Pb,Pa)

a

c

b

d

e

karkare, CSE, IITK/B CS618 10/27

Page 54: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Comparing Anderson’s and Steensgaard’s Analyses

Program Subset based Equality based

Points-to Graph Points-to Graph

a = &b

c = a

a = &d a = &e

b = a

a

c

b

d

e

a

c

b

d

e

karkare, CSE, IITK/B CS618 11/27

Page 55: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Comparing Anderson’s and Steensgaard’s Analyses

a = &b;

karkare, CSE, IITK/B CS618 12/27

Page 56: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Comparing Anderson’s and Steensgaard’s Analyses

a = &b;

a b

karkare, CSE, IITK/B CS618 12/27

Page 57: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Comparing Anderson’s and Steensgaard’s Analyses

a = &b;

a b

b = &c;

karkare, CSE, IITK/B CS618 12/27

Page 58: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Comparing Anderson’s and Steensgaard’s Analyses

a = &b;

a b

b = &c;

a b c

karkare, CSE, IITK/B CS618 12/27

Page 59: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Comparing Anderson’s and Steensgaard’s Analyses

a = &b;

a b

b = &c;

a b c

d = &e;

karkare, CSE, IITK/B CS618 12/27

Page 60: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Comparing Anderson’s and Steensgaard’s Analyses

a = &b;

a b

b = &c;

a b c

d = &e;

a b c

d e

karkare, CSE, IITK/B CS618 12/27

Page 61: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Comparing Anderson’s and Steensgaard’s Analyses

a = &b;

a b

b = &c;

a b c

d = &e;

a b c

d e

a = &d;

karkare, CSE, IITK/B CS618 12/27

Page 62: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Comparing Anderson’s and Steensgaard’s Analyses

a = &b;

a b

b = &c;

a b c

d = &e;

a b c

d e

a = &d;

Subset based Equality based

a

b c

d e

a b,c d,e

karkare, CSE, IITK/B CS618 12/27

Page 63: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Pointer Indirection Constraints

Stmt Subset based Equality based

a = *b Pa ⊇ Pc , ∀c ∈ Pb MERGE(Pa,Pc), ∀c ∈ Pb

*a = b Pc ⊇ Pb, ∀c ∈ Pa MERGE(Pb,Pc), ∀c ∈ Pa

karkare, CSE, IITK/B CS618 13/27

Page 64: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Must Points-to Analysis

1 x = &a;

2 3

4

x definitely points-to a at various points in the program

xD→ a

karkare, CSE, IITK/B CS618 14/27

Page 65: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

May Points-to Analysis

1 x = &a;

2 x = &b; 3

4

At OUT of 2, x definitely points-to b

At OUT of 3, x definitely points-to a

At IN of 4, x possibly points-to a (or b)

xP→ a, x

P→ b

karkare, CSE, IITK/B CS618 15/27

Page 66: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

May Points-to Analysis

1 x = &a;

2 x = &b; 3

4

At OUT of 2, x definitely points-to b

At OUT of 3, x definitely points-to a

At IN of 4, x possibly points-to a (or b)

xP→ {a,b}

karkare, CSE, IITK/B CS618 15/27

Page 67: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Must Alias Analysis

1 x = a;

2 3

4 y = a;

x and a always refer to same memory location

xD

≡ a

karkare, CSE, IITK/B CS618 16/27

Page 68: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Must Alias Analysis

1 x = a;

2 3

4 y = a;

x and a always refer to same memory location

xD

≡ a

x , y and a refer to same location at OUT of 4.

xD

≡ yD

≡ a

karkare, CSE, IITK/B CS618 16/27

Page 69: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

May Alias Analysis

1 x = a;

2 x = b; 3

4

At OUT of 2, x and b are must aliases

At OUT of 3, x and a are must aliasesAt IN of 4, x can possibly be aliased with either a (or b)

xP

≡ a, xP

≡ b

karkare, CSE, IITK/B CS618 17/27

Page 70: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

May Alias Analysis

1 x = a;

2 x = b; 3

4

At OUT of 2, x and b are must aliases

At OUT of 3, x and a are must aliasesAt IN of 4, x can possibly be aliased with either a (or b)

(x ,a), (x ,b)

karkare, CSE, IITK/B CS618 17/27

Page 71: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

May Alias Analysis

1 x = a;

2 x = b; 3

4

At OUT of 2, x and b are must aliases

At OUT of 3, x and a are must aliasesAt IN of 4, x can possibly be aliased with either a (or b)

(x ,a), (x ,b)

If we say: (x , a, b), Is it Precise?

karkare, CSE, IITK/B CS618 17/27

Page 72: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

May Alias Analysis

1 x = a;

2 x = b; 3

4

At OUT of 2, x and b are must aliases

At OUT of 3, x and a are must aliasesAt IN of 4, x can possibly be aliased with either a (or b)

(x ,a), (x ,b)

If we say: (x , a, b), Is it Precise? Safe?

karkare, CSE, IITK/B CS618 17/27

Page 73: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Must Pointer Analysis

Makes sense only for Flow Sensitive analysis

karkare, CSE, IITK/B CS618 18/27

Page 74: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Must Pointer Analysis

Makes sense only for Flow Sensitive analysis

Why?

karkare, CSE, IITK/B CS618 18/27

Page 75: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Must Pointer Analysis

Makes sense only for Flow Sensitive analysis

Why?

Must analysis ⇒ Flow sensitive analysis

karkare, CSE, IITK/B CS618 18/27

Page 76: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Must Pointer Analysis

Makes sense only for Flow Sensitive analysis

Why?

Must analysis ⇒ Flow sensitive analysis

Flow insensitive analysis ⇒ May analysis

karkare, CSE, IITK/B CS618 18/27

Page 77: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Must Pointer Analysis

Makes sense only for Flow Sensitive analysis

Why?

Must analysis ⇒ Flow sensitive analysis

Flow insensitive analysis ⇒ May analysis

Why?

karkare, CSE, IITK/B CS618 18/27

Page 78: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Updating Information: When Can We Kill?

Never if flow insensitive analysis

karkare, CSE, IITK/B CS618 19/27

Page 79: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Updating Information: When Can We Kill?

Never if flow insensitive analysis

For flow sensitive

1 x = &a;

2y = &b;

w = &c;

3 z = &x ; 4 z = &y ;

5∗z = NULL;

∗w = NULL;

karkare, CSE, IITK/B CS618 19/27

Page 80: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Updating Information: When Can We Kill?

Never if flow insensitive analysis

For flow sensitive

1 x = &a;

2y = &b;

w = &c;

3 z = &x ; 4 z = &y ;

5∗z = NULL;

∗w = NULL;

x , y may or may not get modified in 5: Weak update

karkare, CSE, IITK/B CS618 19/27

Page 81: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Updating Information: When Can We Kill?

Never if flow insensitive analysis

For flow sensitive

1 x = &a;

2y = &b;

w = &c;

3 z = &x ; 4 z = &y ;

5∗z = NULL;

∗w = NULL;

x , y may or may not get modified in 5: Weak update

c definitely gets modified in 5: Strong update

karkare, CSE, IITK/B CS618 19/27

Page 82: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Updating Information: When Can We Kill?

Never if flow insensitive analysis

For flow sensitive

1 x = &a;

2y = &b;

w = &c;

3 z = &x ; 4 z = &y ;

5∗z = NULL;

∗w = NULL;

x , y may or may not get modified in 5: Weak update

c definitely gets modified in 5: Strong update

Must information is killed by Strong and Weak updates

karkare, CSE, IITK/B CS618 19/27

Page 83: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Updating Information: When Can We Kill?

Never if flow insensitive analysis

For flow sensitive

1 x = &a;

2y = &b;

w = &c;

3 z = &x ; 4 z = &y ;

5∗z = NULL;

∗w = NULL;

x , y may or may not get modified in 5: Weak update

c definitely gets modified in 5: Strong update

Must information is killed by Strong and Weak updates

May information is killed only by Strong updates

karkare, CSE, IITK/B CS618 19/27

Page 84: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Functions for Points-to Analysis

Basic statements for pointer manipulation

karkare, CSE, IITK/B CS618 20/27

Page 85: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Functions for Points-to Analysis

Basic statements for pointer manipulation

x = y

karkare, CSE, IITK/B CS618 20/27

Page 86: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Functions for Points-to Analysis

Basic statements for pointer manipulation

x = y

x = &y

karkare, CSE, IITK/B CS618 20/27

Page 87: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Functions for Points-to Analysis

Basic statements for pointer manipulation

x = y

x = &y

x = *y

karkare, CSE, IITK/B CS618 20/27

Page 88: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Functions for Points-to Analysis

Basic statements for pointer manipulation

x = y

x = &y

x = *y

*x = y

karkare, CSE, IITK/B CS618 20/27

Page 89: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Functions for Points-to Analysis

Basic statements for pointer manipulation

x = y

x = &y

x = *y

*x = y

Other statements can be rewritten in terms of above

karkare, CSE, IITK/B CS618 20/27

Page 90: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Functions for Points-to Analysis

Basic statements for pointer manipulation

x = y

x = &y

x = *y

*x = y

Other statements can be rewritten in terms of above

*x = *y ⇒ t = *y, *x = t

karkare, CSE, IITK/B CS618 20/27

Page 91: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Functions for Points-to Analysis

Basic statements for pointer manipulation

x = y

x = &y

x = *y

*x = y

Other statements can be rewritten in terms of above

*x = *y ⇒ t = *y, *x = t

x = NULL ⇒ treat NULL as a special variable

karkare, CSE, IITK/B CS618 20/27

Page 92: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Functions for Points-to Analysis

Basic statements for pointer manipulation

x = y

x = &y

x = *y

*x = y

Other statements can be rewritten in terms of above

*x = *y ⇒ t = *y, *x = t

x = NULL ⇒ treat NULL as a special variable

OUT = IN − kill ∪ gen

karkare, CSE, IITK/B CS618 20/27

Page 93: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Functions for Points-to Analysis

Basic statements for pointer manipulation

x = y

x = &y

x = *y

*x = y

Other statements can be rewritten in terms of above

*x = *y ⇒ t = *y, *x = t

x = NULL ⇒ treat NULL as a special variable

OUT = IN − kill ∪ gen

with a twist!

karkare, CSE, IITK/B CS618 20/27

Page 94: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Function: x = y

Maygen = {x → p | y → p ∈ MayIN}

Maykill =⋃

p∈Vars

{x → p}

karkare, CSE, IITK/B CS618 21/27

Page 95: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Function: x = y

Maygen = {x → p | y → p ∈ MayIN}

Maykill =⋃

p∈Vars

{x → p}

Mustgen = {x → p | y → p ∈ MustIN}

Mustkill =⋃

p∈Vars

{x → p}

karkare, CSE, IITK/B CS618 21/27

Page 96: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Function: x = &y

Maygen = {x → y}

Maykill =⋃

p∈Vars

{x → p}

karkare, CSE, IITK/B CS618 22/27

Page 97: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Function: x = &y

Maygen = {x → y}

Maykill =⋃

p∈Vars

{x → p}

Mustgen = {x → y}

Mustkill =⋃

p∈Vars

{x → p}

karkare, CSE, IITK/B CS618 22/27

Page 98: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Function: x = *y

Maygen = {x → p | y → p′ ∈ MayIN and p′ → p ∈ MayIN}

Maykill =⋃

p∈Vars

{x → p}

karkare, CSE, IITK/B CS618 23/27

Page 99: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Function: x = *y

Maygen = {x → p | y → p′ ∈ MayIN and p′ → p ∈ MayIN}

Maykill =⋃

p∈Vars

{x → p}

Maygen = {x → p | y → p′ ∈ MustIN and p′ → p ∈ tin}

Maykill =⋃

p∈Vars

{x → p}

karkare, CSE, IITK/B CS618 23/27

Page 100: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Function: *x = y

Maygen = {p → p′ | x → p ∈ MayIN , y → p′ ∈ MayIN}

Maykill =⋃

p′∈Vars

{p → p′ | x → p ∈ MustIN}

karkare, CSE, IITK/B CS618 24/27

Page 101: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Function: *x = y

Maygen = {p → p′ | x → p ∈ MayIN , y → p′ ∈ MayIN}

Maykill =⋃

p′∈Vars

{p → p′ | x → p ∈ MustIN}

Mustgen = {p → p′ | x → p ∈ MustIN , y → p′ ∈ MustIN}

Mustkill =⋃

p′∈Vars

{p → p′ | x → p ∈ MayIN}

karkare, CSE, IITK/B CS618 24/27

Page 102: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Flow Function: *x = y

Maygen = {p → p′ | x → p ∈ MayIN , y → p′ ∈ MayIN}

Maykill =⋃

p′∈Vars

{p → p′ | x → p ∈ MustIN} Strong update!!

Mustgen = {p → p′ | x → p ∈ MustIN , y → p′ ∈ MustIN}

Mustkill =⋃

p′∈Vars

{p → p′ | x → p ∈ MayIN} Weak update!!

karkare, CSE, IITK/B CS618 24/27

Page 103: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Summarizing Flow Functions

May Points-To analysis

karkare, CSE, IITK/B CS618 25/27

Page 104: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Summarizing Flow Functions

May Points-To analysis

A points-to pair should be removed only if it must be

removed along all paths

karkare, CSE, IITK/B CS618 25/27

Page 105: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Summarizing Flow Functions

May Points-To analysis

A points-to pair should be removed only if it must be

removed along all paths

⇒ should remove only strong updates

karkare, CSE, IITK/B CS618 25/27

Page 106: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Summarizing Flow Functions

May Points-To analysis

A points-to pair should be removed only if it must be

removed along all paths

⇒ should remove only strong updates

⇒ should kill using Must Points-To information

karkare, CSE, IITK/B CS618 25/27

Page 107: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Summarizing Flow Functions

May Points-To analysis

A points-to pair should be removed only if it must be

removed along all paths

⇒ should remove only strong updates

⇒ should kill using Must Points-To information

Must Points-To analysis

karkare, CSE, IITK/B CS618 25/27

Page 108: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Summarizing Flow Functions

May Points-To analysis

A points-to pair should be removed only if it must be

removed along all paths

⇒ should remove only strong updates

⇒ should kill using Must Points-To information

Must Points-To analysis

A points-to pair should be removed if it can be removed

along some path

karkare, CSE, IITK/B CS618 25/27

Page 109: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Summarizing Flow Functions

May Points-To analysis

A points-to pair should be removed only if it must be

removed along all paths

⇒ should remove only strong updates

⇒ should kill using Must Points-To information

Must Points-To analysis

A points-to pair should be removed if it can be removed

along some path

⇒ should remove all weak updates

karkare, CSE, IITK/B CS618 25/27

Page 110: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Summarizing Flow Functions

May Points-To analysis

A points-to pair should be removed only if it must be

removed along all paths

⇒ should remove only strong updates

⇒ should kill using Must Points-To information

Must Points-To analysis

A points-to pair should be removed if it can be removed

along some path

⇒ should remove all weak updates

⇒ should kill using May Points-To information

karkare, CSE, IITK/B CS618 25/27

Page 111: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Summarizing Flow Functions

May Points-To analysis

A points-to pair should be removed only if it must be

removed along all paths

⇒ should remove only strong updates

⇒ should kill using Must Points-To information

Must Points-To analysis

A points-to pair should be removed if it can be removed

along some path

⇒ should remove all weak updates

⇒ should kill using May Points-To information

Must Points-To ⊆ May Points-To

karkare, CSE, IITK/B CS618 25/27

Page 112: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Safe Approximations for May and Must Points-to

A pointer variable

May Must

Points-to points to every possible

location

points to nothing

Alias aliased to every other

pointer variable

only to itself

karkare, CSE, IITK/B CS618 26/27

Page 113: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Non-Distributivity of Points-to Analysis

May Information Must Information

1

2 x = &z 3 y = &w

4 ∗x = y

1 x = a;

2b = &c

c = &d3

b = &e

e = &d

4 a = ∗b

karkare, CSE, IITK/B CS618 27/27

Page 114: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Non-Distributivity of Points-to Analysis

May Information Must Information

1

2 x = &z 3 y = &w

4 ∗x = y

1 x = a;

2b = &c

c = &d3

b = &e

e = &d

4 a = ∗b

z → w is spurious

karkare, CSE, IITK/B CS618 27/27

Page 115: CS618: Program Analysis 2016-17 Ist Semester - Pointer ...karkare/cs618/lecturenotes/17PointerAnalysisSlides.pdf · CS618: Program Analysis 2016-17 Ist Semester Pointer Analysis Amey

Non-Distributivity of Points-to Analysis

May Information Must Information

1

2 x = &z 3 y = &w

4 ∗x = y

1 x = a;

2b = &c

c = &d3

b = &e

e = &d

4 a = ∗b

z → w is spurious a → d is missing

karkare, CSE, IITK/B CS618 27/27