cs618: program analysis 2016-17 ist semester - pointer...
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/1.jpg)
CS618: Program Analysis
2016-17 Ist Semester
Pointer Analysis
Amey Karkare
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/2.jpg)
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
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/3.jpg)
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
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/4.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/5.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/6.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/7.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/8.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/9.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/10.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/11.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/12.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/13.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/14.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/15.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/16.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/17.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/18.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/19.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/20.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/21.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/22.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/23.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/24.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/25.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/26.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/27.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/28.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/29.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/30.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/31.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/32.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/33.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/34.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/35.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/36.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/37.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/38.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/39.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/40.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/41.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/42.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/43.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/44.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/45.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/46.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/47.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/48.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/49.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/50.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/51.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/52.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/53.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/54.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/55.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/56.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/57.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/58.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/59.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/60.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/61.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/62.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/63.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/64.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/65.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/66.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/67.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/68.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/69.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/70.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/71.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/72.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/73.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/74.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/75.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/76.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/77.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/78.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/79.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/80.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/81.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/82.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/83.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/84.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/85.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/86.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/87.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/88.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/89.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/90.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/91.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/92.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/93.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/94.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/95.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/96.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/97.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/98.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/99.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/100.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/101.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/102.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/103.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/104.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/105.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/106.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/107.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/108.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/109.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/110.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/111.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/112.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/113.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/114.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022041201/5d4a689c88c99330078b8e01/html5/thumbnails/115.jpg)
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