Partial Redundancy Elimination Finding the Right Place to
















![Example: Anticipated Expressions Anticipated = x+y 17 Backwards; Intersection; IN[B] = (OUT[B] – Def(B)) Example: Anticipated Expressions Anticipated = x+y 17 Backwards; Intersection; IN[B] = (OUT[B] – Def(B))](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-17.jpg)


![Earliest Placement ux+y is in Earliest[B] if it is anticipated at the beginning of Earliest Placement ux+y is in Earliest[B] if it is anticipated at the beginning of](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-20.jpg)




![Postponable Expressions --- (4) u. Confluence = intersection. u. Transfer function: OUT[B] = (IN[B] Postponable Expressions --- (4) u. Confluence = intersection. u. Transfer function: OUT[B] = (IN[B]](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-25.jpg)


![Latest[B] u For x+y to be in latest[B]: 1. x+y is either in earliest[B] Latest[B] u For x+y to be in latest[B]: 1. x+y is either in earliest[B]](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-28.jpg)


![Used Expressions --- (2) uused[B] = expressions used along some path from the exit Used Expressions --- (2) uused[B] = expressions used along some path from the exit](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-31.jpg)
![Example: Used Recall: Latest = x+y Used = x+y 32 Backwards; Union; IN[B] = Example: Used Recall: Latest = x+y Used = x+y 32 Backwards; Union; IN[B] =](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-32.jpg)
![Rules for Introducing Temporaries 1. If x+y is in both Latest[B] and OUTUSED[B], introduce Rules for Introducing Temporaries 1. If x+y is in both Latest[B] and OUTUSED[B], introduce](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-33.jpg)


- Slides: 35

Partial Redundancy Elimination Finding the Right Place to Evaluate Expressions Four Necessary Data-Flow Problems 1

Role of PRE u Generalizes: 1. Moving loop-invariant computations outside the loop. 2. Eliminating common subexpressions. 3. True partial redundancy: an expression is sometimes available, sometimes not. 2

Convention u. Throughout, assume that neither argument of an expression x+y is modified unless we explicitly assign to x or y. u. And of course, we assume x+y is the only expression anyone would ever want to compute. 3

Example: Loop-Invariant Code Motion t = x+y = t 4

Example: Common Subexpression Elimination = x+y t = x+y = t 5

Example: True Partial Redundancy = x+y t = x+y = t 6

Modifying the Flow Graph 1. Add a new block along an edge. w Only necessary if the edge enters a block with several predecessors. 2. Duplicate blocks so an expression x+y is evaluated only along paths where it is needed. 7

Example: Node Splitting = x+y t = x+y = t 8

Problem With Node-Splitting u. Can exponentiate the number of nodes. u. Our PRE algorithm needs to move code to new blocks along edges, but will not split blocks. u. Convention: All new instructions are either inserted at the beginning of a block or placed in a new block. 9

Da Plan Boss --- Da Plan 1. Determine for each expression the earliest place(s) it can be computed while still being sure that it will be used. 2. Postpone the expressions as long as possible without introducing redundancy. w We trade space for time --- an expression can be computed in many places, but never if it is already computed. 10

The Guarantee u. No expression is computed at a place where it its value might have been computed previously, and preserved instead. w Even along a subset of the possible paths. 11

More About the Plan u. We use four data-flow analyses, in succession, plus some set operations on the results of these analyses. u. After the first, each analysis uses the results of the previous ones in a role similar to that of Gen (for RD’s) or Use (for LV’s). 12

Anticipated Expressions u. Expression x+y is anticipated at a point if x+y is certain to be evaluated along any computation path, before any recomputation of x or y. u. An example of the fourth kind of DF schema: backwards-intersection. 13

Example: Anticipated Expressions x+y is anticipated here and could be computed now rather than later. = x+y is anticipated here, but is also available. No computation is needed. = x+y 14

Computing Anticipated Expressions u. Use(B) = set of expressions x+y evaluated in B before any assignment to x or y. u. Def(B) = set of expressions one of whose arguments is assigned in B. 15

Computing Anticipated Expressions --- (2) u. Direction = backwards. u. Meet = intersection. u. Boundary condition: IN[exit] = ∅. u. Transfer function: IN[B] = (OUT[B] – Def(B)) ∪ Use(B) 16
![Example Anticipated Expressions Anticipated xy 17 Backwards Intersection INB OUTB DefB Example: Anticipated Expressions Anticipated = x+y 17 Backwards; Intersection; IN[B] = (OUT[B] – Def(B))](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-17.jpg)
Example: Anticipated Expressions Anticipated = x+y 17 Backwards; Intersection; IN[B] = (OUT[B] – Def(B)) ∪ Use(B)

“Available” Expressions u Modification of the usual AE. u x+y is “available” at a point if either: 1. It is available in the usual sense; i. e. , it has been computed and not killed, or 2. It is anticipated; i. e. , it could be available if we chose to precompute it there. 18

“Available” Expressions ux+y is in Kill(B) if x or y is defined, and x+y is not later recomputed (same as previously). u. Confluence = intersection. u. Transfer function: OUT[B] = (IN[B] ∪ INANTICIPATED[B]) – Kill(B) 19
![Earliest Placement uxy is in EarliestB if it is anticipated at the beginning of Earliest Placement ux+y is in Earliest[B] if it is anticipated at the beginning of](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-20.jpg)
Earliest Placement ux+y is in Earliest[B] if it is anticipated at the beginning of B but not “available” there. w That is: when we compute anticipated expressions, x+y is in IN[B], but w When we compute “available” expressions, x+y is not in IN[B]. u. I. e. , x+y is anticipated at B, but not anticipated at OUT of some predecessor. 20

Example: Available/Earliest = anticipated but not available Anticipated “Available” = x+y 21 Forward; Intersection; OUT[B] = (IN[B] ∪ INANTICIPATED[B]) – Kill(B)

Postponable Expressions u Now, we need to delay the evaluation of expressions as long as possible. 1. Not past the use of the expression. 2. Not so far that we wind up computing an expression that is already evaluated. u Note viewpoint: It is OK to use code space if we save register use. 22

Postponable Expressions --- (2) u x+y is postponable to a point p if on every path from the entry to p: 1. There is a block B for which x+y is in earliest[B], and 2. After that block, there is no use of x+y. 23

Postponable Expressions --- (3) u Computed like “available” expressions, with two differences: 1. In place of killing an expression (assigning to one of its arguments): Use(B), the set of expressions used in block B. 2. In place of INANTICIPATED[B]: earliest[B]. 24
![Postponable Expressions 4 u Confluence intersection u Transfer function OUTB INB Postponable Expressions --- (4) u. Confluence = intersection. u. Transfer function: OUT[B] = (IN[B]](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-25.jpg)
Postponable Expressions --- (4) u. Confluence = intersection. u. Transfer function: OUT[B] = (IN[B] ∪ earliest[B]) – Use(B) 25

Example: Postponable Expressions Earliest Postponable = x+y Three places to compute x+y = x+y 26 Forward; Intersection; OUT[B] = (IN[B] ∪ earliest[B]) – Use(B)

Latest Placement u. We want to postpone as far as possible. u. How do we compute the “winners” --- the blocks such that we can postpone no further? u. Remember --- postponing stops at a use or at a block with another predecessor where x+y is not postponable. 27
![LatestB u For xy to be in latestB 1 xy is either in earliestB Latest[B] u For x+y to be in latest[B]: 1. x+y is either in earliest[B]](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-28.jpg)
Latest[B] u For x+y to be in latest[B]: 1. x+y is either in earliest[B] or in INPOSTPONABLE[B]. u I. e. , we can place the computation at B. 2. x+y is either used in B or there is some successor of B for which (1) does not hold. u I. e. , we cannot postpone further along all branches. 28

Example: Latest Earliest Or Postponable to beginning Latest = green and red. = x+y Used Or has a successor not red. = x+y 29

Final Touch --- Used Expressions u. We’re now ready to introduce a temporary t to hold the value of expression x+y everywhere. u. But there is a small glitch: t may be totally unnecessary. w E. g. , x+y is computed in exactly one place. 30
![Used Expressions 2 uusedB expressions used along some path from the exit Used Expressions --- (2) uused[B] = expressions used along some path from the exit](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-31.jpg)
Used Expressions --- (2) uused[B] = expressions used along some path from the exit of B. u. Backward flow analysis. u. Confluence = union. u. Transfer function: IN[B] = (OUT[B] ∪ e-used[B]) – Latest(B) w e-used = “expression is used in B. ” 31
![Example Used Recall Latest xy Used xy 32 Backwards Union INB Example: Used Recall: Latest = x+y Used = x+y 32 Backwards; Union; IN[B] =](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-32.jpg)
Example: Used Recall: Latest = x+y Used = x+y 32 Backwards; Union; IN[B] = (OUT[B] ∪ e-used[B]) – Latest(B)
![Rules for Introducing Temporaries 1 If xy is in both LatestB and OUTUSEDB introduce Rules for Introducing Temporaries 1. If x+y is in both Latest[B] and OUTUSED[B], introduce](https://slidetodoc.com/presentation_image_h/d541d9ce2fa7f7ca9fc60b34baf723b6/image-33.jpg)
Rules for Introducing Temporaries 1. If x+y is in both Latest[B] and OUTUSED[B], introduce t = x+y at the beginning of B. 2. If x+y is used in B, but either 1. Is not in Latest[B] or 2. Is in OUTUSED[B], replace the use(s) of x+y by uses of t. 33

Example: Where is a Temporary Used? Recall: Latest Create temporary here = x+y Recall OUTUSED But not here --x+y is in Latest and not in OUTUSED = x+y Use it here = x+y 34

Example: Here’s Where It’s Used = x+y t = x+y = t 35
Right product right place right time right price
Family time
Partial redundancy elimination
Partial redundancy elimination
Partial redundancy elimination
The right man on the right place at the right time
Gaussian elimination method
Finding partial pressure
A poem of free verse that the japanese like
Finding angle of right triangle
A disturbance in a field that carries energy
A disturbance that transfers energy from place to place
Millions billions trillions chart
Scsb redundancy
Qchecksum
Boolean algebra
Cyclic redundancy check
Dependability via redundancy
A characteristic or quality describing an entity is called
Nwen243
Redundancy and wordiness
Psychovisual redundancy
Coding redundancy works on
Interpixel redundancy
Retrenchment strategy meaning
Lan redundancy
Data redundancy and consistency
Spatial redundancy in video compression
Rfbme
Psychovisual redundancy
Digital image processing
Dependability via redundancy
Wordiness and redundancy practice
Oklahoma bridge collapse
Ups redundancy
Redundancy ratio