Ernst Slicing 5/97 Page 1
Practical fine-grained static slicing
- f optimized code
of optimized code Michael Ernst University of Washington (work - - PowerPoint PPT Presentation
Practical fine-grained static slicing of optimized code Michael Ernst University of Washington (work done at Microsoft Research) Ernst Slicing 5/97 Page 1 Simple example Ernst Slicing 5/97 Page 2 Example: function calls and pointers Ernst
Ernst Slicing 5/97 Page 1
Ernst Slicing 5/97 Page 2
Ernst Slicing 5/97 Page 3
Ernst Slicing 5/97 Page 4
Ernst Slicing 5/97 Page 5
Ernst Slicing 5/97 Page 6
Ernst Slicing 5/97 Page 7
Ernst Slicing 5/97 Page 8
+
Call 5 + x Update Store x
Ernst Slicing 5/97 Page 9
n I/O
* <
+ Call
Call + 1
sum i sum product product
Call
I/O
"Sum..."
printf void sum_product(int n) { int sum = 0; int product = 0; int i = 0; while (i++ < n) { sum = sum + i; product = product * i; } printf("Sum %d, product %d", sum, product); }
Ernst Slicing 5/97 Page 10
n I/O
* <
+ Call
Call + 1
sum i sum product product
Call
"Sum..."
I/O
printf
Ernst Slicing 5/97 Page 11
Simple, fast algorithm Fine granularity One graph directly links producers and consumers All values are explicit
Ernst Slicing 5/97 Page 12
Ernst Slicing 5/97 Page 13
Ernst Slicing 5/97 Page 14
Ernst Slicing 5/97 Page 15
Summarize dependences of returns on formals Separately include appropriate portions of body When slicing criterion is within a procedure,
Ernst Slicing 5/97 Page 16
Ernst Slicing 5/97 Page 17
Ernst Slicing 5/97 Page 18
x
store
Lookup store x Lookup store x Lookup
Ernst Slicing 5/97 Page 19
Lookup store x Update a store 22 store
Ernst Slicing 5/97 Page 20
Ernst Slicing 5/97 Page 21
Ernst Slicing 5/97 Page 22
Ernst Slicing 5/97 Page 23
Ernst Slicing 5/97 Page 24
Ernst Slicing 5/97 Page 25
Ernst Slicing 5/97 Page 26
Ernst Slicing 5/97 Page 27
Ernst Slicing 5/97 Page 28
Ernst Slicing 5/97 Page 29
Ernst Slicing 5/97 Page 30
Ernst Slicing 5/97 Page 31
Ernst Slicing 5/97 Page 32
Ernst Slicing 5/97 Page 33
+
c
Update a
b
store +
y
Update z
x
store +
y
Update z
x
+
c
Update a
b
store (a,b,c) store (a,b,c) store (x,y,z) store (x,y,z)
Ernst Slicing 5/97 Page 34