Download presentation

Presentation is loading. Please wait.

Published byAdrienne Fullwood Modified over 3 years ago

1
1 Code Optimization

2
2 The Code Optimizer Control flow analysis: control flow graph Data-flow analysis Transformations Front end Code generator Code optimizer Control- flow analysis Data- flow analysis Transfor- mations

3
3 Determining Loops in Flow Graphs: Dominators Dominators: d dom n –Node d of a CFG dominates node n if every path from the initial node of the CFG to n goes through d –The loop entry dominates all nodes in the loop The immediate dominator m of a node n is the last dominator on the path from the initial node to n –If d n and d dom n then d dom m

4
4 Dominator Trees 1 2 3 4 56 7 8 910 1 23 4 657 8 9 CFGDominator tree

5
5 Natural Loops A back edge is is an edge a b whose head b dominates its tail a Given a back edge n d –The natural loop consists of d plus the nodes that can reach n without going through d –The loop header is node d In other words –A natural loop must have a single-entry node d –There must be a back edge that enters node d

6
6 Natural Inner/Outer Loops Unless two loops have the same header, they are disjoint or one is nested within the other A nested loop is an inner loop if it contains no other loops A loop is an outer loop if it is not contained within another loop

7
7 Natural Inner Loops Example 1 2 3 4 56 7 8 910 1 23 4 657 8 9 CFGDominator tree Natural loop for 7 dom 10 Natural loop for 3 dom 4 Natural loop for 4 dom 7

8
8 Natural Outer Loops Example 1 2 3 4 56 7 8 910 1 23 4 657 8 9 CFGDominator tree Natural loop for 1 dom 9 Natural loop for 3 dom 8

9
9 Pre-Headers To facilitate loop transformations, a compiler often adds a preheader to a loop Code motion, strength reduction, and other loop transformations populate the preheader Header Preheader

10
10 Reducible Flow Graphs 1 2 3 4 Example of a reducible CFG 1 23 Example of a nonreducible CFG (not a natural loop: no back edge to dominator 1) Reducible graph = disjoint partition in forward and back edges such that the forward edges form an acyclic (sub)graph

11
11 Global Data-Flow Analysis To apply global optimizations on basic blocks, data-flow information is collected by solving systems of data-flow equations Suppose we need to determine the live-variables for a sequence of statements S in[S] = use[S] (out[S] - def[S]) i := m-1 j := n j := j-1 := i+j B1: B2: B3: Solution: in[B1] = { m, n } ({ i, j }–{ i, j }) = { m, n } out[B1] = in[B2] = { i, j } in[B2] = { j } ({ i, j } – { j }) = { i, j } out[B2] = in[B3] = { i, j }

12
12 Live-Variable Analysis S d: a:=b+c Then, the data-flow equations for S are: use[S]= { b, c } def[S]= { a } in[S]= use[S] (out[S] – def[S]) is of the form out[S] in[S] applies transfer function: f [S] (x) = use [S] (x - def [S] ) backwards

13
13 Live-Variable Analysis S in[S]= in[S 1 ] in[S 1 ]= use[S 1 ] (out[S 1 ] – def[S 1 ]) out[S 1 ]= in[S 2 ] in[S 2 ]= use[S 2 ] (out[S 2 ] – def[S 2 ]) out[S 2 ]= out[S] is of the form S2S2 S1S1

14
14 Live-Variable Analysis S in[S]= in[S 1 ] in[S 2 ] in[S 1 ]= use[S 1 ] (out[S 1 ] – def[S 1 ]) in[S 2 ]= use[S 2 ] (out[S 2 ] – def[S 2 ]) out[S 1 ]= out[S] out[S 2 ]= out[S] is of the form S2S2 S1S1

15
15 Live-Variable Analysis S in[S]= in[S 1 ] in[S 1 ]= use[S 1 ] (out[S 1 ] – def[S 1 ]) out[S 1 ]= out[S] use[S 1 ] is of the form S1S1 non-iterative solution

16
16 Global Data-Flow Analysis Suppose we need to determine the reaching definitions for a sequence of statements S out[S] = gen[S] (in[S] - kill[S]) d1: i := m-1 d2: j := n d3: j := j-1 B1: B2: B3: out[B1] = gen[B1] = {d1, d2} out[B2] = gen[B2] {d1} = {d1, d3} d1 reaches B2 and B3 and d2 reaches B2, but not B3 because d2 is killed in B2

Similar presentations

OK

Machine-Independent Optimizations Ⅳ CS308 Compiler Theory1.

Machine-Independent Optimizations Ⅳ CS308 Compiler Theory1.

© 2018 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Ppt on bluetooth based smart sensor networks Ppt on the solar system Ppt on content development strategy Ppt on computer application in daily life Ppt on smoking and drinking Ppt online downloader video Ppt on op amp circuits resistor Ppt on event handling in javascript which term Ppt on cross-site scripting message turn off Ppt on ip addressing and subnetting