Recap from last time - PowerPoint PPT Presentation

About This Presentation
Title:

Recap from last time

Description:

carve out some part of your current research, and do it for the project ... and fix it using program analysis techniques. Ideas for generating project ideas ... – PowerPoint PPT presentation

Number of Views:19
Avg rating:3.0/5.0
Slides: 47
Provided by: csewe4
Learn more at: https://cseweb.ucsd.edu
Category:
Tags: last | recap | time

less

Transcript and Presenter's Notes

Title: Recap from last time


1
Recap from last time
  • We saw various different issues related to
    program analysis and program transformations
  • You were not expected to know all of these things
  • We will learn more about each one of the topics
    we touched upon last time

2
Project schedule
  • Find groups a week from today
  • groups of 2-3
  • groups of 1 possible if you ask me
  • Project proposal due the following Tuesday
  • but... how are we supposed to come up with
    ideas!!!!

3
Ideas for generating project ideas
  • If you are currently doing research
  • that is related to programming languages/compilers
  • carve out some part of your current research, and
    do it for the project
  • Think about what annoys you the most
  • in programming
  • and fix it using program analysis techniques

4
Ideas for generating project ideas
  • Think about technology trends
  • iphone, mobile devices
  • multicore, parallelism
  • web browsers, java scripts, etc.
  • bluetooth, ad-hoc networks
  • how do these change the way we program/compile?
  • Try to find bugs in real programs using PL
    techniques
  • search for Dawson Engler and look at some of
    his papers. Try to use similar techniques to find
    real bugs.

5
Ideas for generating project ideas
  • How can I use information that is out there?
  • ask yourself what information is out there? And
    how can I record it/analyze it/use it to improve
    programmer productivity?
  • For example cvs logs, bugzilla, keystrokes,
    mouse movements, etc.
  • Talk to your neighbor
  • in the 231 class, that is
  • have a discussion

6
Tour of common optimizations
7
Simple example
foo(z) x 3 6 y x 5
return z y
8
Simple example
foo(z) x 3 6 y x 5
return z y
9
Another example
x a b ... y a b
10
Another example
x a b ... y a b
11
Another example
if (...) x a b ...
y a b
12
Another example
if (...) x a b ...
y a b
13
Another example
x y ... z z x
14
Another example
x y ... z z x
15
Another example
x y ... z z y
What if we run CSE now?
16
Another example
x y ... z z y
What if we run CSE now?
17
Another example
x yz ... x ...
18
Another example
x yz ... x ...
  • Often used as a clean-up pass

Copy prop
DAE
x y z z x
x y z z y
x y z z y
19
Another example
if (false) ...
20
Another example
if (false) ...
21
Another example
  • In Java

a new int 10 for (index 0 index lt 10
index ) aindex 100
22
Another example
  • In lowered Java

a new int 10 for (index 0 index lt 10
index ) if (index lt 0 index gt
a.length()) throw OutOfBoundsException
aindex 0
23
Another example
  • In lowered Java

a new int 10 for (index 0 index lt 10
index ) if (index lt 0 index gt
a.length()) throw OutOfBoundsException
aindex 0
24
Another example
p x p 5 y x 1
25
Another example
p x p 5 y x 1
x 5 p 3 y x 1
???
26
Another example
for j 1 to N for i 1 to M ai
ai bj
27
Another example
for j 1 to N for i 1 to M ai
ai bj
28
Another example
area(h,w) return h w h ... w 4 a
area(h,w)
29
Another example
area(h,w) return h w h ... w 4 a
area(h,w)
30
Optimization themes
  • Dont compute if you dont have to
  • unused assignment elimination
  • Compute at compile-time if possible
  • constant folding, loop unrolling, inlining
  • Compute it as few times as possible
  • CSE, PRE, PDE, loop invariant code motion
  • Compute it as cheaply as possible
  • strength reduction
  • Enable other optimizations
  • constant and copy prop, pointer analysis
  • Compute it with as little code space as possible
  • unreachable code elimination

31
Dataflow analysis
32
Dataflow analysis what is it?
  • A common framework for expressing algorithms that
    compute information about a program
  • Why is such a framework useful?

33
Dataflow analysis what is it?
  • A common framework for expressing algorithms that
    compute information about a program
  • Why is such a framework useful?
  • Provides a common language, which makes it easier
    to
  • communicate your analysis to others
  • compare analyses
  • adapt techniques from one analysis to another
  • reuse implementations (eg dataflow analysis
    frameworks)

34
Control Flow Graphs
  • For now, we will use a Control Flow Graph
    representation of programs
  • each statement becomes a node
  • edges between nodes represent control flow
  • Later we will see other program representations
  • variations on the CFG (eg CFG with basic blocks)
  • other graph based representations

35
Example CFG
x ...
y ...
x ... y ... y ... p ... if (...)
... x ... x ... ... y ... else
... x ... x ... p ... ... x
... ... y ... y ...
y ...
p ...
if (...)
... x ...
... x ...
x ...
x ...
... y ...
p ...
... x ...
... x ...
y ...
36
An example DFA reaching definitions
  • For each use of a variable, determine what
    assignments could have set the value being read
    from the variable
  • Information useful for
  • performing constant and copy prop
  • detecting references to undefined variables
  • presenting def/use chains to the programmer
  • building other representations, like the DFG
  • Lets try this out on an example

37
x ...
Visual sugar
y ...
1 x ... 2 y ... 3 y ... 4 p ...
y ...
p ...
if (...)
... x ... 5 x ... ... y ...
... x ... 6 x ... 7 p ...
... x ...
... x ...
x ...
x ...
... y ...
p ...
... x ... ... y ... 8 y ...
... x ...
... x ...
y ...
38
1 x ... 2 y ... 3 y ... 4 p ...
... x ... 5 x ... ... y ...
... x ... 6 x ... 7 p ...
... x ... ... y ... 8 y ...
39
1 x ... 2 y ... 3 y ... 4 p ...
... x ... 5 x ... ... y ...
... x ... 6 x ... 7 p ...
... x ... ... y ... 8 y ...
40
Safety
  • Recall intended use of this info
  • performing constant and copy prop
  • detecting references to undefined variables
  • presenting def/use chains to the programmer
  • building other representations, like the DFG
  • Safety
  • can have more bindings than the true answer,
    but cant miss any

41
Reaching definitions generalized
  • DFA framework is geared towards computing
    information at each program point (edge) in the
    CFG
  • So generalize the reaching definitions problem by
    stating what should be computed at each program
    point
  • For each program point in the CFG, compute the
    set of definitions (statements) that may reach
    that point
  • Notion of safety remains the same

42
Reaching definitions generalized
  • Computed information at a program point is a set
    of var ! stmt bindings
  • eg x ! s1, x ! s2, y ! s3
  • How do we get the previous info we wanted?
  • if a var x is used in a stmt whose incoming info
    is in, then

43
Reaching definitions generalized
  • Computed information at a program point is a set
    of var ! stmt bindings
  • eg x ! s1, x ! s2, y ! s3
  • How do we get the previous info we wanted?
  • if a var x is used in a stmt whose incoming info
    is in, then s (x ! s) 2 in
  • This is a common pattern
  • generalize the problem to define what information
    should be computed at each program point
  • use the computed information at the program
    points to get the original info we wanted

44
1 x ... 2 y ... 3 y ... 4 p ...
... x ... 5 x ... ... y ...
... x ... 6 x ... 7 p ...
... x ... ... y ... 8 y ...
45
1 x ... 2 y ... 3 y ... 4 p ...
... x ... 5 x ... ... y ...
... x ... 6 x ... 7 p ...
... x ... ... y ... 8 y ...
46
Using constraints to formalize DFA
  • Now that weve gone through some examples, lets
    try to precisely express the algorithms for
    computing dataflow information
  • Well model DFA as solving a system of
    constraints
  • Each node in the CFG will impose constraints
    relating information at predecessor and successor
    points
  • Solution to constraints is result of analysis
Write a Comment
User Comments (0)
About PowerShow.com