CSC D70: Compiler Optimization Static Single Assignment (SSA)
|
|
- Roberta Cummings
- 5 years ago
- Views:
Transcription
1 CSC D70: Compiler Optimization Static Single Assignment (SSA) Prof. Gennady Pekhimenko University of Toronto Winter 08 The content of this lecture is adapted from the lectures of Todd Mowry and Phillip Gibbons
2 From Last Lecture What is a Loop? Dominator Tree Natural Loops Back Edges
3 Finding Loops: Summary Define loops in graph theoretic terms Definitions and algorithms for: Dominators Back edges Natural loops 3
4 Where Is a Variable Defined or Used? Example: Loop-Invariant Code Motion Are B, C, and D only defined outside the loop? Other definitions of A inside the loop? Uses of A inside the loop? Example: Copy Propagation For a given use of X: Are all reaching definitions of X: copies from same variable: e.g., X = Y Where Y is not redefined since that copy? If so, substitute use of X with use of Y X = Y A = B + C E = A + D X = Y X = Y W = X + Z It would be nice if we could traverse directly between related uses and def s this would enable a form of sparse code analysis (skip over don t care cases) 4
5 Appearances of Same Variable Name May Be Unrelated X = A + Y = X + B F = F = 3 X = F + 7 C = X + D The values in reused storage locations may be provably independent in which case the compiler can optimize them as separate values Compiler could use renaming to make these different versions more explicit 5
6 Definition-Use and Use-Definition Chains X = A + Y = X + B F = F = 3 X = F + 7 C = X + D Use-Definition (UD) Chains: for a given definition of a variable X, what are all of its uses? Definition-Use (DU) Chains: for a given use of a variable X, what are all of the reaching definitions of X? 6
7 DU and UD Chains Can Be Expensive foo(int i, int j) { switch (i) { case 0: x=3;break; case : x=; break; case : x=6; break; case 3: x=7; break; default: x = ; } switch (j) { case 0: y=x+7; break; case : y=x+4; break; case : y=x-; break; case 3: y=x+; break; default: y=x+9; } In general, N defs M uses O(NM) space and time One solution: limit each variable to ONE definition site 7
8 DU and UD Chains Can Be Expensive () foo(int i, int j) { switch (i) { case 0: x=3; break; case : x=; break; case : x=6; case 3: x=7; default: x = ; } x is one of the above x s switch (j) { case 0: y=x+7; case : y=x+4; case : y=x-; case 3: y=x+; default: y=x+9; } One solution: limit each variable to ONE definition site 8
9 Static Single Assignment (SSA) Static single assignment is an IR where every variable is assigned a value at most once in the program text Easy for a basic block (reminiscent of Value Numbering): Visit each instruction in program order: LHS: assign to a fresh version of the variable RHS: use the most recent version of each variable a x + y b a + x a b + c y + a c + a a x + y b a + x a b + c y + a 3 c + a 9
10 What about Joins in the CFG? c if (i) { a x + y b a + x } else { } a b + c y + a c + a a x + y b a + x c if (i) a b + c y + a 4 c? + a? Use a notational fiction: a function 0
11 Merging at Joins: the function c if (i) a x + y b a + x a b + c y + a 3 (a,a ) c 3 (c,c ) b (b,?) a 4 c 3 + a 3
12 The function merges multiple definitions along multiple control paths into a single definition. At a basic block with p predecessors, there are p arguments to the function. x new (x, x, x,, x p ) How do we choose which x i to use? We don t really care! If we care, use moves on each incoming edge
13 Implementing c if (i) a x + y b a + x a 3 a c 3 c a b + c y + a 3 a c 3 c a 3 (a,a ) c 3 (c,c ) a 4 c 3 + a 3 3
14 Trivial SSA Each assignment generates a fresh variable. At each join point insert functions for all live variables. x x y x y y x y z y + x Too many functions inserted. x (x,x ) y 3 (y,y ) z y 3 + x 4
15 Minimal SSA Each assignment generates a fresh variable. At each join point insert functions for all live variables with multiple outstanding defs. x x y x y y x y z y + x y 3 (y,y ) z y 3 + x 5
16 Another Example a 0 a 0 b a + c c + b a b * if a < N a 3 (a,a ) c 3 (c,c ) b a 3 + c c 3 + b a b * if a < N return c Notice use of c return c 6
17 When Do We Insert? 5 9 If there is a def of a in block 5, which nodes need a ()? CFG 7
18 When do we insert? We insert a function for variable A in block Z iff: A was defined more than once before (i.e., A defined in X and Y AND X Y) There exists a non-empty path from x to z, P xz, and a non-empty path from y to z, P yz, s.t. P xz P yz = { z } (Z is only common block along paths) z P xq or z P yr where P xz = P xq z and P yz = P yr z (at least one path reaches Z for first time) Entry block contains an implicit def of all vars Note: v = ( ) is a def of v 8
19 Dominance Property of SSA In SSA, definitions dominate uses. If x i is used in x (, x i, ), then BB(x i ) dominates i th predecessor of BB(PHI) If x is used in y x, then BB(x) dominates BB(y) We can use this for an efficient algorithm to convert to SSA 9
20 Dominance If there is a def of a in block 5, which nodes need a ()? 3 CFG D-Tree x strictly dominates w (x sdom w) iff x dom w AND x w 0
21 Dominance Frontier The Dominance Frontier of a node x = { w x dom pred(w) AND!(x sdom w)} CFG D-Tree x strictly dominates w (x sdom w) iff x dom w AND x w
22 Dominance Frontier and Path Convergence
23 Using Dominance Frontier to Compute SSA place all () Rename all variables 3
24 Using Dominance Frontier to Place () Gather all the defsites of every variable Then, for every variable foreach defsite foreach node in DominanceFrontier(defsite) if we haven t put () in node, then put one in if this node didn t define the variable before, then add this node to the defsites This essentially computes the Iterated Dominance Frontier on the fly, inserting the minimal number of () neccesary 4
25 Using Dominance Frontier to Place () foreach node n { foreach variable v defined in n { orig[n] = {v} defsites[v] = {n} } } foreach variable v { W = defsites[v] while W not empty { n = remove node from W foreach y in DF[n] if y PHI[v] { insert v (v,v, ) at top of y PHI[v] = PHI[v] {y} if v orig[y]: W = W {y} } } } 5
26 Renaming Variables Algorithm: Walk the D-tree, renaming variables as you go Replace uses with more recent renamed def For straight-line code this is easy What if there are branches and joins? use the closest def such that the def is above the use in the D-tree Easy implementation: for each var: rename (v) rename(v): replace uses with top of stack at def: push onto stack call rename(v) on all children in D-tree for each def in this block pop from stack 6
27 Compute Dominance Tree 3 5 j < 0? i j k 0 k < 00? j i k k return j j k k k + D-tree
28 Compute Dominance Frontiers 3 5 j < 0? i j k 0 k < 00? j i k k return j j k k k + DFs {} {} 3 {} 4 {} 5 {7} 6 {7} 7 {}
29 Insert () 3 5 j < 0? i j k 0 k < 00? j i k k return j j k k k + DFs {} {} 3 {} 4 {} 5 {7} 6 {7} 7 {} DFs orig[n] { i,j,k} {} 3 {} 4 {} 5 {j,k} 6 {j,k} 7 {} var i: W={} var j: W={,5,6} DF{} DF{5} defsites[v] i {} j {,5,6} k {,5,6} DF{} 9
30 Insert () 3 j < 0? i j k 0 k < 00? 4 return j DFs {} {} 3 {} 4 {} 5 {7} 6 {7} 7 {} orig[n] { i,j,k} {} 3 {} 4 {} 5 {j,k} 6 {j,k} 7 {} defsites[v] i {} j {,5,6} k {,5,6} 5 j i k k + 6 j k k k + DFs var j: W={,5,6} 7 j (j,j) DF{} DF{5} 30
31 3 5 j < 0? j i k k + 7 i j k 0 j (j,j) k < 00? 4 6 j (j,j) return j j k k k + DFs {} {} 3 {} 4 {} 5 {7} 6 {7} 7 {} DFs orig[n] { i,j,k} {} 3 {} 4 {} 5 {j,k} 6 {j,k} 7 {} var j: W={,5,6,7} defsites[v] DF{} DF{5} DF{7} i {} j {,5,6,7} k {,5,6} 3
32 3 5 j < 0? j i k k + 7 i j k 0 j (j,j) k < 00? 4 6 j (j,j) return j j k k k + DFs {} {} 3 {} 4 {} 5 {7} 6 {7} 7 {} DFs orig[n] { i,j,k} {} 3 {} 4 {} 5 {j,k} 6 {j,k} 7 {} var j: W={,5,6,7} defsites[v] i {} j {,5,6} k {,5,6} DF{} DF{5} DF{7} DF{6} 3
33 i j k 0 j (j,j) k (k,k) k < 00? DFs {} {} 3 {} 4 {} 5 {7} 6 {7} 7 {} orig[n] { i,j,k} {} 3 {} 4 {} 5 {j,k} 6 {j,k} 7 {} Def sites[v] i {} j {,5,6} k {,5,6} 3 j < 0? 4 return j DFs 5 j i k k + 6 j k k k + var k: W={,5,6} 7 j (j,j) k (k,k) 33
34 i j k 0 Rename Vars 3 5 j < 0? j i k k + j (j,j ) k (k,k) k < 00? 4 6 return j j k k k j (j,j) k (k,k) 34
35 i j k 0 Rename Vars 3 5 j (j 4,j ) k (k 4,k ) k < 00? j < 0? return j j 3 i k 3 k j 5 k k 5 k j 4 (j 3,j 5 ) k 4 (k 3,k 5 ) 35
36 Computing DF(n) n a b c n dom a n dom b!n dom c 36
37 Computing DF(n) n a b c x DF(a) DF(b) n dom a n dom b!n dom c 37
38 Computing the Dominance Frontier compute-df(n) S = {} foreach node y in succ[n] if idom(y) n S = S { y } foreach child of n, c, in D-tree DF[n] = S compute-df(c) foreach w in DF[c] The Dominance Frontier of a node x = { w x dom pred(w) AND!(x sdom w)} if!n dom w S = S { w } 38
39 SSA Properties Only assignment per variable Definitions dominate uses 39
40 Constant Propagation If v c, replace all uses of v with c If v (c,c,c) (each input is the same constant), replace all uses of v with c W list of all defs while!w.isempty { } Stmt S W.removeOne if ((S has form v c ) } (S has form v (c,,c) )) then { } delete S foreach stmt U that uses v { replace v with c in U W.add(U) 40
41 Other Optimizations with SSA Copy propogation delete x (y,y,y) and replace all x with y delete x y and replace all x with y Constant Folding (Also, constant conditions too!) 4
42 Constant Propagation 3 j < 0? i j k 0 k < 00? 4 Convert to SSA Form return j 3 i j k 0 j (j 4,j ) k (k 4,k ) k < 00? 4 j < 0? return j 5 j i k k + 6 j k k k + 5 j 3 i k 3 k + 6 j 5 k k 5 k j 4 (j 3,j 5 ) k 4 (k 3,k 5 ) 4
43 i j k 0 3 j (j 4,j ) k (k 4,k ) k < 00? 4 j < 0? return j 5 j 3 i k 3 k + 6 j 5 k k 5 k + 7 j 4 (j 3,j 5 ) k 4 (k 3,k 5 ) 43
44 i j k 0 3 j (j 4,) k (k 4,0) k < 00? 4 j < 0? return j 5 j 3 k 3 k + 6 j 5 k k 5 k + 7 j 4 (j 3,j 5 ) k 4 (k 3,k 5 ) 44
45 i j k 0 3 j (j 4,) k (k 4,0) k < 00? 4 j < 0? return j 5 j 3 k 3 k j 4 (,j 5 ) k 4 (k 3,k 5 ) j 5 k k 5 k + Not a very exciting result (yet) 45
46 i j k 0 Conditional Constant Propagation 3 5 j (j 4,) k (k 4,) k < 00? j < 0? return j j 3 k 3 k j 5 k k 5 k + Does block 6 ever execute? Simple Constant Propagation can t tell But Conditional Const. Prop. can tell: Assumes blocks don t execute until proven otherwise Assumes values are constants until proven otherwise 7 j 4 (,j 5 ) k 4 (k 3,k 5 ) 46
47 Conditional Constant Propagation Algorithm Keeps track of: Blocks assume unexecuted until proven otherwise Variables assume not executed (only with proof of assignments of a non-constant value do we assume not constant) Lattice for representing variables: not executed we have seen evidence that the variable has been assigned a constant with the value we have seen evidence that the variable can hold different values at different times 47
48 Conditional Constant Propagation i j k 0 3 j (j 4,) k (k 4,0) k < 00? 4 j < 0? return j 5 j 3 k 3 k + 6 j 5 k k 5 k + 7 j 4 (,j 5 ) k 4 (k 3,k 5 ) 48
49 i j k 0 3 j (j 4,) k (k 4,0) k < 00? 4 j < 0? return j 5 j 3 k 3 k j 5 k k 5 k + 7 j 4 (,j 5 ) k 4 (k 3,k 5 ) 49
50 Conditional Constant Propagation i j k 0 3 j (j 4,) k (k 4,0) k < 00? 4 j < 0? return j k (k 3,0) k < 00? k 3 k + return 5 j 3 k 3 k j 5 k k 5 k + 7 j 4 (,j 5 ) k 4 (k 3,k 5 ) 50
51 CSC D70: Compiler Optimization Static Single Assignment (SSA) Prof. Gennady Pekhimenko University of Toronto Winter 08 The content of this lecture is adapted from the lectures of Todd Mowry and Phillip Gibbons
52 Backup Slides 5
Dataflow Analysis. A sample program int fib10(void) { int n = 10; int older = 0; int old = 1; Simple Constant Propagation
-74 Lecture 2 Dataflow Analysis Basic Blocks Related Optimizations SSA Copyright Seth Copen Goldstein 200-8 Dataflow Analysis Last time we looked at code transformations Constant propagation Copy propagation
More informationCSC D70: Compiler Optimization Dataflow-2 and Loops
CSC D70: Compiler Optimization Dataflow-2 and Loops Prof. Gennady Pekhimenko University of Toronto Winter 2018 The content of this lecture is adapted from the lectures of Todd Mowry and Phillip Gibbons
More informationComputing Static Single Assignment (SSA) Form
Computing Static Single Assignment (SSA) Form Overview What is SSA? Advantages of SSA over use-def chains Flavors of SSA Dominance frontiers revisited Inserting φ-nodes Renaming the variables Translating
More informationWhat is SSA? each assignment to a variable is given a unique name all of the uses reached by that assignment are renamed
Another Form of Data-Flow Analysis Propagation of values for a variable reference, where is the value produced? for a variable definition, where is the value consumed? Possible answers reaching definitions,
More information: Advanced Compiler Design Compu=ng DF(X) 3.4 Algorithm for inser=on of φ func=ons 3.5 Algorithm for variable renaming
263-2810: Advanced Compiler Design 3.3.2 Compu=ng DF(X) 3.4 Algorithm for inser=on of φ func=ons 3.5 Algorithm for variable renaming Thomas R. Gross Computer Science Department ETH Zurich, Switzerland
More informationLecture Overview SSA Maximal SSA Semipruned SSA o Placing -functions o Renaming Translation out of SSA Using SSA: Sparse Simple Constant Propagation
1 Lecture Overview SSA Maximal SSA Semipruned SSA o Placing -functions o Renaming Translation out of SSA Using SSA: Sparse Simple Constant Propagation [Chapter 9] 2 SSA Revisited It is desirable to use
More informationConstruction of Static Single-Assignment Form
COMP 506 Rice University Spring 2018 Construction of Static Single-Assignment Form Part II source IR IR target code Front End Optimizer Back End code Copyright 2018, Keith D. Cooper & Linda Torczon, all
More informationClass 5. Review; questions. Data-flow Analysis Review. Slicing overview Problem Set 2: due 9/3/09 Problem Set 3: due 9/8/09
Class 5 Review; questions Assign (see Schedule for links) Slicing overview Problem Set 2: due 9/3/09 Problem Set 3: due 9/8/09 1 Data-flow Analysis Review Start at slide 21 of Basic Analysis 3 1 Static
More informationLecture 11: Data Flow Analysis III
CS 515 Programming Language and Compilers I Lecture 11: Data Flow Analysis III (The lectures are based on the slides copyrighted by Keith Cooper and Linda Torczon from Rice University.) Zheng (Eddy) Zhang
More informationStatic Program Analysis
Static Program Analysis Xiangyu Zhang The slides are compiled from Alex Aiken s Michael D. Ernst s Sorin Lerner s A Scary Outline Type-based analysis Data-flow analysis Abstract interpretation Theorem
More informationDataflow Analysis Lecture 2. Simple Constant Propagation. A sample program int fib10(void) {
-4 Lecture Dataflow Analysis Basic Blocks Related Optimizations Copyright Seth Copen Goldstein 00 Dataflow Analysis Last time we looked at code transformations Constant propagation Copy propagation Common
More informationTopics on Compilers
Assignment 2 4541.775 Topics on Compilers Sample Solution 1. Test for dependences on S. Write down the subscripts. Which positions are separable, which are coupled? Which dependence test would you apply
More informationLecture 10: Data Flow Analysis II
CS 515 Programming Language and Compilers I Lecture 10: Data Flow Analysis II (The lectures are based on the slides copyrighted by Keith Cooper and Linda Torczon from Rice University.) Zheng (Eddy) Zhang
More informationTopic-I-C Dataflow Analysis
Topic-I-C Dataflow Analysis 2012/3/2 \course\cpeg421-08s\topic4-a.ppt 1 Global Dataflow Analysis Motivation We need to know variable def and use information between basic blocks for: constant folding dead-code
More informationGeneralizing Data-flow Analysis
Generalizing Data-flow Analysis Announcements PA1 grades have been posted Today Other types of data-flow analysis Reaching definitions, available expressions, reaching constants Abstracting data-flow analysis
More informationCompiler Design. Data Flow Analysis. Hwansoo Han
Compiler Design Data Flow Analysis Hwansoo Han Control Flow Graph What is CFG? Represents program structure for internal use of compilers Used in various program analyses Generated from AST or a sequential
More informationCOSE312: Compilers. Lecture 17 Intermediate Representation (2)
COSE312: Compilers Lecture 17 Intermediate Representation (2) Hakjoo Oh 2017 Spring Hakjoo Oh COSE312 2017 Spring, Lecture 17 May 31, 2017 1 / 19 Common Intermediate Representations Three-address code
More informationCompiler Design Spring 2017
Compiler Design Spring 2017 8.5 Reaching definitions Dr. Zoltán Majó Compiler Group Java HotSpot Virtual Machine Oracle Corporation Admin issues Brief reminder: Code review takes place today @ 15:15 You
More informationSpace-aware data flow analysis
Space-aware data flow analysis C. Bernardeschi, G. Lettieri, L. Martini, P. Masci Dip. di Ingegneria dell Informazione, Università di Pisa, Via Diotisalvi 2, 56126 Pisa, Italy {cinzia,g.lettieri,luca.martini,paolo.masci}@iet.unipi.it
More informationModels of Computation, Recall Register Machines. A register machine (sometimes abbreviated to RM) is specified by:
Models of Computation, 2010 1 Definition Recall Register Machines A register machine (sometimes abbreviated M) is specified by: Slide 1 finitely many registers R 0, R 1,..., R n, each capable of storing
More informationTute 10. Liam O'Connor. May 23, 2017
Tute 10 Liam O'Connor May 23, 2017 proc Search(value g : G, value s : V g, value k : K, result v : T, result f : B) Where a graph g : G is dened as a 4-tuple (V, Γ, κ, λ) containing a set of vertices V,
More informationMIT Loop Optimizations. Martin Rinard
MIT 6.035 Loop Optimizations Martin Rinard Loop Optimizations Important because lots of computation occurs in loops We will study two optimizations Loop-invariant code motion Induction variable elimination
More informationComputational Models - Lecture 4
Computational Models - Lecture 4 Regular languages: The Myhill-Nerode Theorem Context-free Grammars Chomsky Normal Form Pumping Lemma for context free languages Non context-free languages: Examples Push
More informationData-Flow Analysis. Compiler Design CSE 504. Preliminaries
Data-Flow Analysis Compiler Design CSE 504 1 Preliminaries 2 Live Variables 3 Data Flow Equations 4 Other Analyses Last modifled: Thu May 02 2013 at 09:01:11 EDT Version: 1.3 15:28:44 2015/01/25 Compiled
More informationCMSC 631 Program Analysis and Understanding. Spring Data Flow Analysis
CMSC 631 Program Analysis and Understanding Spring 2013 Data Flow Analysis Data Flow Analysis A framework for proving facts about programs Reasons about lots of little facts Little or no interaction between
More informationData Flow Analysis (I)
Compiler Design Data Flow Analysis (I) Hwansoo Han Control Flow Graph What is CFG? Represents program structure for internal use of compilers Used in various program analyses Generated from AST or a sequential
More informationCompiler Design Spring 2017
Compiler Design Spring 2017 8.6 Live variables Dr. Zoltán Majó Compiler Group Java HotSpot Virtual Machine Oracle Corporation Last lecture Definition: A variable V is live at point P if there is a path
More informationDFA of non-distributive properties
DFA of non-distributive properties The general pattern of Dataflow Analysis GA (p)= i if p E { GA (q) q F } otherwise GA (p)= f p ( GA (p) ) where : E is the set of initial/final points of the control-flow
More informationIntroduction to data-flow analysis. Data-flow analysis. Control-flow graphs. Data-flow analysis. Example: liveness. Requirements
Data-flow analysis Michel Schinz based on material by Erik Stenman and Michael Schwartzbach Introduction to data-flow analysis Data-flow analysis Example: liveness Data-flow analysis is a global analysis
More informationCTL satisfability via tableau A C++ implementation
CTL satisfability via tableau A C++ implementation Nicola Prezza April 30, 2015 Outline 1 Introduction 2 Parsing 3 Data structures 4 Initial sets of labels and edges 5 Cull 6 Examples and benchmarks The
More informationComputational Models Lecture 8 1
Computational Models Lecture 8 1 Handout Mode Ronitt Rubinfeld and Iftach Haitner. Tel Aviv University. May 11/13, 2015 1 Based on frames by Benny Chor, Tel Aviv University, modifying frames by Maurice
More informationECE 5775 (Fall 17) High-Level Digital Design Automation. Scheduling: Exact Methods
ECE 5775 (Fall 17) High-Level Digital Design Automation Scheduling: Exact Methods Announcements Sign up for the first student-led discussions today One slot remaining Presenters for the 1st session will
More informationCSE P 501 Compilers. Value Numbering & Op;miza;ons Hal Perkins Winter UW CSE P 501 Winter 2016 S-1
CSE P 501 Compilers Value Numbering & Op;miza;ons Hal Perkins Winter 2016 UW CSE P 501 Winter 2016 S-1 Agenda Op;miza;on (Review) Goals Scope: local, superlocal, regional, global (intraprocedural), interprocedural
More information: Compiler Design. 9.5 Live variables 9.6 Available expressions. Thomas R. Gross. Computer Science Department ETH Zurich, Switzerland
252-210: Compiler Design 9.5 Live variables 9.6 Available expressions Thomas R. Gross Computer Science Department ETH Zurich, Switzerland Outline Warp up reaching definifons Live variables Available expressions
More informationECE 5775 (Fall 17) High-Level Digital Design Automation. Control Flow Graph
ECE 5775 (Fall 17) High-Level Digital Design Automation Control Flow Graph Announcements ECE colloquium on Monday 9/11 from 4:30pm, PHL 233 Smart Healthcare by Prof. Niraj Jha of Princeton Lab 1 is due
More informationDataflow Analysis. Chapter 9, Section 9.2, 9.3, 9.4
Dataflow Analysis Chapter 9, Section 9.2, 9.3, 9.4 2 Dataflow Analysis Dataflow analysis is a sub area of static program analysis Used in the compiler back end for optimizations of three address code and
More informationData Structures for Disjoint Sets
Data Structures for Disjoint Sets Advanced Data Structures and Algorithms (CLRS, Chapter 2) James Worrell Oxford University Computing Laboratory, UK HT 200 Disjoint-set data structures Also known as union
More information1 Matchings in Non-Bipartite Graphs
CS 598CSC: Combinatorial Optimization Lecture date: Feb 9, 010 Instructor: Chandra Chekuri Scribe: Matthew Yancey 1 Matchings in Non-Bipartite Graphs We discuss matching in general undirected graphs. Given
More informationCS 553 Compiler Construction Fall 2006 Homework #2 Dominators, Loops, SSA, and Value Numbering
CS 553 Compiler Construction Fall 2006 Homework #2 Dominators, Loops, SSA, and Value Numbering Answers Write your answers on another sheet of paper. Homework assignments are to be completed individually.
More informationVerifying the LLVM. Steve Zdancewic DeepSpec Summer School 2017
Verifying the LLVM Steve Zdancewic DeepSpec Summer School 2017 Vminus OperaAonal SemanAcs Only 5 kinds of instrucaons: Binary arithmeac Memory Load Memory Store Terminators Phi nodes What is the state
More informationMTH401A Theory of Computation. Lecture 17
MTH401A Theory of Computation Lecture 17 Chomsky Normal Form for CFG s Chomsky Normal Form for CFG s For every context free language, L, the language L {ε} has a grammar in which every production looks
More informationDataflow analysis. Theory and Applications. cs6463 1
Dataflow analysis Theory and Applications cs6463 1 Control-flow graph Graphical representation of runtime control-flow paths Nodes of graph: basic blocks (straight-line computations) Edges of graph: flows
More informationComputational Models Lecture 8 1
Computational Models Lecture 8 1 Handout Mode Nachum Dershowitz & Yishay Mansour. Tel Aviv University. May 17 22, 2017 1 Based on frames by Benny Chor, Tel Aviv University, modifying frames by Maurice
More informationComputational Models Lecture 8 1
Computational Models Lecture 8 1 Handout Mode Ronitt Rubinfeld and Iftach Haitner. Tel Aviv University. April 18/ May 2, 2016 1 Based on frames by Benny Chor, Tel Aviv University, modifying frames by Maurice
More informationSyntactic Analysis. Top-Down Parsing
Syntactic Analysis Top-Down Parsing Copyright 2015, Pedro C. Diniz, all rights reserved. Students enrolled in Compilers class at University of Southern California (USC) have explicit permission to make
More informationFunctional Dependencies. Getting a good DB design Lisa Ball November 2012
Functional Dependencies Getting a good DB design Lisa Ball November 2012 Outline (2012) SEE NEXT SLIDE FOR ALL TOPICS (some for you to read) Normalization covered by Dr Sanchez Armstrong s Axioms other
More informationPath Testing and Test Coverage. Chapter 9
Path Testing and Test Coverage Chapter 9 Structural Testing Also known as glass/white/open box testing Structural testing is based on using specific knowledge of the program source text to define test
More informationPath Testing and Test Coverage. Chapter 9
Path Testing and Test Coverage Chapter 9 Structural Testing Also known as glass/white/open box testing Structural testing is based on using specific knowledge of the program source text to define test
More informationData flow analysis. DataFlow analysis
Data flow analysis DataFlow analysis compile time reasoning about the runtime flow of values in the program represent facts about runtime behavior represent effect of executing each basic block propagate
More informationPlease give details of your answer. A direct answer without explanation is not counted.
Please give details of your answer. A direct answer without explanation is not counted. Your answers must be in English. Please carefully read problem statements. During the exam you are not allowed to
More informationLecture 5 Introduction to Data Flow Analysis
Lecture 5 Introduction to Data Flow Analysis I. Structure of data flow analysis II. III. IV. Example 1: Reaching definition analysis Example 2: Liveness analysis Framework Phillip B. Gibbons 15-745: Intro
More informationCMSC 132, Object-Oriented Programming II Summer Lecture 12
CMSC 132, Object-Oriented Programming II Summer 2016 Lecturer: Anwar Mamat Lecture 12 Disclaimer: These notes may be distributed outside this class only with the permission of the Instructor. 12.1 Trees
More informationLOWELL JOURNAL. MUST APOLOGIZE. such communication with the shore as Is m i Boimhle, noewwary and proper for the comfort
- 7 7 Z 8 q ) V x - X > q - < Y Y X V - z - - - - V - V - q \ - q q < -- V - - - x - - V q > x - x q - x q - x - - - 7 -» - - - - 6 q x - > - - x - - - x- - - q q - V - x - - ( Y q Y7 - >»> - x Y - ] [
More informationSpecial Nodes for Interface
fi fi Special Nodes for Interface SW on processors Chip-level HW Board-level HW fi fi C code VHDL VHDL code retargetable compilation high-level synthesis SW costs HW costs partitioning (solve ILP) cluster
More informationBeyond Superlocal: Dominators, Data-Flow Analysis, and DVNT. COMP 506 Rice University Spring target code. source code OpJmizer
COMP 506 Rice University Spring 2017 Beyond Superlocal: Dominators, Data-Flow Analysis, and DVNT source code Front End IR OpJmizer IR Back End target code Copyright 2017, Keith D. Cooper & Linda Torczon,
More informationA DARK GREY P O N T, with a Switch Tail, and a small Star on the Forehead. Any
Y Y Y X X «/ YY Y Y ««Y x ) & \ & & } # Y \#$& / Y Y X» \\ / X X X x & Y Y X «q «z \x» = q Y # % \ & [ & Z \ & { + % ) / / «q zy» / & / / / & x x X / % % ) Y x X Y $ Z % Y Y x x } / % «] «] # z» & Y X»
More informationCS 301. Lecture 18 Decidable languages. Stephen Checkoway. April 2, 2018
CS 301 Lecture 18 Decidable languages Stephen Checkoway April 2, 2018 1 / 26 Decidable language Recall, a language A is decidable if there is some TM M that 1 recognizes A (i.e., L(M) = A), and 2 halts
More informationUC Berkeley Department of Electrical Engineering and Computer Science Department of Statistics. EECS 281A / STAT 241A Statistical Learning Theory
UC Berkeley Department of Electrical Engineering and Computer Science Department of Statistics EECS 281A / STAT 241A Statistical Learning Theory Solutions to Problem Set 2 Fall 2011 Issued: Wednesday,
More informationSection Summary. Relations and Functions Properties of Relations. Combining Relations
Chapter 9 Chapter Summary Relations and Their Properties n-ary Relations and Their Applications (not currently included in overheads) Representing Relations Closures of Relations (not currently included
More informationFoundations of
91.304 Foundations of (Theoretical) Computer Science Chapter 3 Lecture Notes (Section 3.2: Variants of Turing Machines) David Martin dm@cs.uml.edu With some modifications by Prof. Karen Daniels, Fall 2012
More informationProgram Analysis Part I : Sequential Programs
Program Analysis Part I : Sequential Programs IN5170/IN9170 Models of concurrency Program Analysis, lecture 5 Fall 2018 26. 9. 2018 2 / 44 Program correctness Is my program correct? Central question for
More informationCISC4090: Theory of Computation
CISC4090: Theory of Computation Chapter 2 Context-Free Languages Courtesy of Prof. Arthur G. Werschulz Fordham University Department of Computer and Information Sciences Spring, 2014 Overview In Chapter
More informationUndirected Graphs. V = { 1, 2, 3, 4, 5, 6, 7, 8 } E = { 1-2, 1-3, 2-3, 2-4, 2-5, 3-5, 3-7, 3-8, 4-5, 5-6 } n = 8 m = 11
Undirected Graphs Undirected graph. G = (V, E) V = nodes. E = edges between pairs of nodes. Captures pairwise relationship between objects. Graph size parameters: n = V, m = E. V = {, 2, 3,,,, 7, 8 } E
More informationOutline. CS21 Decidability and Tractability. Machine view of FA. Machine view of FA. Machine view of FA. Machine view of FA.
Outline CS21 Decidability and Tractability Lecture 5 January 16, 219 and Languages equivalence of NPDAs and CFGs non context-free languages January 16, 219 CS21 Lecture 5 1 January 16, 219 CS21 Lecture
More informationProperties of Context-Free Languages. Closure Properties Decision Properties
Properties of Context-Free Languages Closure Properties Decision Properties 1 Closure Properties of CFL s CFL s are closed under union, concatenation, and Kleene closure. Also, under reversal, homomorphisms
More informationData Flow Analysis. Lecture 6 ECS 240. ECS 240 Data Flow Analysis 1
Data Flow Analysis Lecture 6 ECS 240 ECS 240 Data Flow Analysis 1 The Plan Introduce a few example analyses Generalize to see the underlying theory Discuss some more advanced issues ECS 240 Data Flow Analysis
More informationReduced Ordered Binary Decision Diagrams
Reduced Ordered Binary Decision Diagrams Lecture #12 of Advanced Model Checking Joost-Pieter Katoen Lehrstuhl 2: Software Modeling & Verification E-mail: katoen@cs.rwth-aachen.de December 13, 2016 c JPK
More informationPrinciples of Program Analysis: A Sampler of Approaches
Principles of Program Analysis: A Sampler of Approaches Transparencies based on Chapter 1 of the book: Flemming Nielson, Hanne Riis Nielson and Chris Hankin: Principles of Program Analysis Springer Verlag
More informationCompiling Techniques
Lecture 6: 9 October 2015 Announcement New tutorial session: Friday 2pm check ct course webpage to find your allocated group Table of contents 1 2 Ambiguity s Bottom-Up Parser A bottom-up parser builds
More informationThe Reachability-Bound Problem. Gulwani and Zuleger PLDI 10
The Reachability-Bound Problem Gulwani and Zuleger PLDI 10 CS252r Spring 2011 The Reachability-Bound problem Find a symbolic worst case bound on the number of times a program point is reached Intra-procedural:
More informationSyntax Analysis, VI Examples from LR Parsing. Comp 412
COMP 412 FALL 2017 Syntax Analysis, VI Examples from LR Parsing Comp 412 source code IR IR target code Front End Optimizer Back End Copyright 2017, Keith D. Cooper & Linda Torczon, all rights reserved.
More informationEECS 495: Randomized Algorithms Lecture 14 Random Walks. j p ij = 1. Pr[X t+1 = j X 0 = i 0,..., X t 1 = i t 1, X t = i] = Pr[X t+
EECS 495: Randomized Algorithms Lecture 14 Random Walks Reading: Motwani-Raghavan Chapter 6 Powerful tool for sampling complicated distributions since use only local moves Given: to explore state space.
More informationSymbolic Model Checking with ROBDDs
Symbolic Model Checking with ROBDDs Lecture #13 of Advanced Model Checking Joost-Pieter Katoen Lehrstuhl 2: Software Modeling & Verification E-mail: katoen@cs.rwth-aachen.de December 14, 2016 c JPK Symbolic
More informationAutomata and Computability. Solutions to Exercises
Automata and Computability Solutions to Exercises Spring 27 Alexis Maciel Department of Computer Science Clarkson University Copyright c 27 Alexis Maciel ii Contents Preface vii Introduction 2 Finite Automata
More informationAdvanced Implementations of Tables: Balanced Search Trees and Hashing
Advanced Implementations of Tables: Balanced Search Trees and Hashing Balanced Search Trees Binary search tree operations such as insert, delete, retrieve, etc. depend on the length of the path to the
More informationOctober 6, Equivalence of Pushdown Automata with Context-Free Gramm
Equivalence of Pushdown Automata with Context-Free Grammar October 6, 2013 Motivation Motivation CFG and PDA are equivalent in power: a CFG generates a context-free language and a PDA recognizes a context-free
More informationCS415 Compilers Syntax Analysis Top-down Parsing
CS415 Compilers Syntax Analysis Top-down Parsing These slides are based on slides copyrighted by Keith Cooper, Ken Kennedy & Linda Torczon at Rice University Announcements Midterm on Thursday, March 13
More informationCS 314 Principles of Programming Languages
CS 314 Principles of Programming Languages Lecture 7: LL(1) Parsing Zheng (Eddy) Zhang Rutgers University February 7, 2018 Class Information Homework 3 will be posted this coming Monday. 2 Review: Top-Down
More informationMore Dynamic Programming
CS 374: Algorithms & Models of Computation, Spring 2017 More Dynamic Programming Lecture 14 March 9, 2017 Chandra Chekuri (UIUC) CS374 1 Spring 2017 1 / 42 What is the running time of the following? Consider
More informationAlgorithms for Computing the Static Single Assignment Form
Algorithms for Computing the Static Single Assignment Form GIANFRANCO BILARDI Università di Padova, Padova, Italy AND KESHAV PINGALI Cornell University, Ithaca, New York Abstract. The Static Single Assignment
More informationReading: Chapter 9.3. Carnegie Mellon
I II Lecture 3 Foundation of Data Flow Analysis Semi-lattice (set of values, meet operator) Transfer functions III Correctness, precision and convergence IV Meaning of Data Flow Solution Reading: Chapter
More informationCSE 105 THEORY OF COMPUTATION
CSE 105 THEORY OF COMPUTATION Spring 2016 http://cseweb.ucsd.edu/classes/sp16/cse105-ab/ Today's learning goals Sipser Ch 3.3, 4.1 State and use the Church-Turing thesis. Give examples of decidable problems.
More informationTop-Down Parsing and Intro to Bottom-Up Parsing
Predictive Parsers op-down Parsing and Intro to Bottom-Up Parsing Lecture 7 Like recursive-descent but parser can predict which production to use By looking at the next few tokens No backtracking Predictive
More informationNotes for Comp 497 (454) Week 10
Notes for Comp 497 (454) Week 10 Today we look at the last two chapters in Part II. Cohen presents some results concerning the two categories of language we have seen so far: Regular languages (RL). Context-free
More informationG54FOP: Lecture 17 & 18 Denotational Semantics and Domain Theory III & IV
G54FOP: Lecture 17 & 18 Denotational Semantics and Domain Theory III & IV Henrik Nilsson University of Nottingham, UK G54FOP: Lecture 17 & 18 p.1/33 These Two Lectures Revisit attempt to define denotational
More informationAdministrivia. Test I during class on 10 March. Bottom-Up Parsing. Lecture An Introductory Example
Administrivia Test I during class on 10 March. Bottom-Up Parsing Lecture 11-12 From slides by G. Necula & R. Bodik) 2/20/08 Prof. Hilfinger CS14 Lecture 11 1 2/20/08 Prof. Hilfinger CS14 Lecture 11 2 Bottom-Up
More informationMore Dynamic Programming
Algorithms & Models of Computation CS/ECE 374, Fall 2017 More Dynamic Programming Lecture 14 Tuesday, October 17, 2017 Sariel Har-Peled (UIUC) CS374 1 Fall 2017 1 / 48 What is the running time of the following?
More informationALG 5.4. Lexicographical Search: Applied to Scheduling Theory. Professor John Reif
Algorithms Professor John Reif ALG 54 input assume problem Scheduling Problems Set of n tasks in precidence relation on tasks Also, given m processors Unit time cost to process task using single processor
More informationNote: In any grammar here, the meaning and usage of P (productions) is equivalent to R (rules).
Note: In any grammar here, the meaning and usage of P (productions) is equivalent to R (rules). 1a) G = ({R, S, T}, {0,1}, P, S) where P is: S R0R R R0R1R R1R0R T T 0T ε (S generates the first 0. R generates
More informationSanjit A. Seshia EECS, UC Berkeley
EECS 219C: Computer-Aided Verification Explicit-State Model Checking: Additional Material Sanjit A. Seshia EECS, UC Berkeley Acknowledgments: G. Holzmann Checking if M satisfies : Steps 1. Compute Buchi
More informationRecursion: Introduction and Correctness
Recursion: Introduction and Correctness CSE21 Winter 2017, Day 7 (B00), Day 4-5 (A00) January 25, 2017 http://vlsicad.ucsd.edu/courses/cse21-w17 Today s Plan From last time: intersecting sorted lists and
More informationReduced Ordered Binary Decision Diagrams
Reduced Ordered Binary Decision Diagrams Lecture #13 of Advanced Model Checking Joost-Pieter Katoen Lehrstuhl 2: Software Modeling & Verification E-mail: katoen@cs.rwth-aachen.de June 5, 2012 c JPK Switching
More informationStacks. Definitions Operations Implementation (Arrays and Linked Lists) Applications (system stack, expression evaluation) Data Structures 1 Stacks
Stacks Definitions Operations Implementation (Arrays and Linked Lists) Applications (system stack, expression evaluation) Data Structures 1 Stacks Stacks: Definitions and Operations A LIFO list: Last In,
More information1. Problem I calculated these out by hand. It was tedious, but kind of fun, in a a computer should really be doing this sort of way.
. Problem 5.2-. I calculated these out by hand. It was tedious, but kind of fun, in a a computer should really be doing this sort of way. 2 655 95 45 243 77 33 33 93 86 5 36 8 3 5 2 4 2 2 2 4 2 2 4 4 2
More informationDiscrete Wiskunde II. Lecture 5: Shortest Paths & Spanning Trees
, 2009 Lecture 5: Shortest Paths & Spanning Trees University of Twente m.uetz@utwente.nl wwwhome.math.utwente.nl/~uetzm/dw/ Shortest Path Problem "#$%&'%()*%"()$#+,&- Given directed "#$%&'()*+,%+('-*.#/'01234564'.*,'7+"-%/8',&'5"4'84%#3
More informationWhat happens to the value of the expression x + y every time we execute this loop? while x>0 do ( y := y+z ; x := x:= x z )
Starter Questions Feel free to discuss these with your neighbour: Consider two states s 1 and s 2 such that s 1, x := x + 1 s 2 If predicate P (x = y + 1) is true for s 2 then what does that tell us about
More informationHow to Use Calculus Like a Physicist
How to Use Calculus Like a Physicist Physics A300 Fall 2004 The purpose of these notes is to make contact between the abstract descriptions you may have seen in your calculus classes and the applications
More informationLanguages, regular languages, finite automata
Notes on Computer Theory Last updated: January, 2018 Languages, regular languages, finite automata Content largely taken from Richards [1] and Sipser [2] 1 Languages An alphabet is a finite set of characters,
More informationCS1800: Mathematical Induction. Professor Kevin Gold
CS1800: Mathematical Induction Professor Kevin Gold Induction: Used to Prove Patterns Just Keep Going For an algorithm, we may want to prove that it just keeps working, no matter how big the input size
More informationScalar Optimisation Part 2
Scalar Optimisation Part 2 Michael O Boyle January 2014 1 Course Structure L1 Introduction and Recap 4-5 lectures on classical optimisation 2 lectures on scalar optimisation Last lecture on redundant expressions
More information