common subexpression elimination partial redundancy ...emery/classes/cmpsci710...4 university of...

4
1 UNIVERSITY OF NIVERSITY OF MASSACHUSETTS ASSACHUSETTS, A , AMHERST MHERST Department of Computer Science Department of Computer Science Emery Berger University of Massachusetts, Amherst Advanced Compilers CMPSCI 710 Spring 2003 Partial Redundancy Elimination UNIVERSITY OF NIVERSITY OF MASSACHUSETTS ASSACHUSETTS, A , AMHERST MHERST Department of Computer Science Department of Computer Science 2 Topics Last time Common subexpression elimination Value numbering Global CSE This time Partial redundancy elimination UNIVERSITY OF NIVERSITY OF MASSACHUSETTS ASSACHUSETTS, A , AMHERST MHERST Department of Computer Science Department of Computer Science 3 Partial Redundancy Partial redundancy: Expression computed more than once on some path through control-flow graph Partial-redundancy elimination (PRE): Minimizes partial redundancies Inserts and deletes computations (adds temps) Each path contains no more (usually fewer) occurrences of any computation than before Dominates global CSE & loop-invariant code motion UNIVERSITY OF NIVERSITY OF MASSACHUSETTS ASSACHUSETTS, A , AMHERST MHERST Department of Computer Science Department of Computer Science 4 PRE Example UNIVERSITY OF NIVERSITY OF MASSACHUSETTS ASSACHUSETTS, A , AMHERST MHERST Department of Computer Science Department of Computer Science 5 PRE: Problem Critical edge prevents redundancy elimination Connects node with two or more successors to one with two or more predecessors Why is it a problem? UNIVERSITY OF NIVERSITY OF MASSACHUSETTS ASSACHUSETTS, A , AMHERST MHERST Department of Computer Science Department of Computer Science 6 PRE: Solution Split critical edges! Insert empty basic blocks Allows PRE to continue

Upload: others

Post on 07-Aug-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Common subexpression elimination Partial Redundancy ...emery/classes/cmpsci710...4 UNIVERSITY OF MASSACHUSETTS, A MHERST • Department of Computer Science 19 PRE Transformation We’ll

1

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science

Emery BergerUniversity of Massachusetts, Amherst

Advanced CompilersCMPSCI 710Spring 2003

Partial Redundancy Elimination

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 2

Topics

Last timeCommon subexpression elimination

Value numberingGlobal CSE

This timePartial redundancy elimination

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 3

Partial Redundancy

Partial redundancy:Expression computed more than onceon some path through control-flow graph

Partial-redundancy elimination (PRE):Minimizes partial redundancies

Inserts and deletes computations (adds temps)

Each path contains no more (usually fewer) occurrences of any computation than before

Dominates global CSE & loop-invariant code motion

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 4

PRE Example

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 5

PRE: Problem

Critical edge prevents redundancy eliminationConnects node with two or more successors to one with two or more predecessors

Why is it a problem?

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 6

PRE: Solution

Split critical edges!Insert empty basic blocksAllows PRE to continue

Page 2: Common subexpression elimination Partial Redundancy ...emery/classes/cmpsci710...4 UNIVERSITY OF MASSACHUSETTS, A MHERST • Department of Computer Science 19 PRE Transformation We’ll

2

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 7

Big Example:Critical Edges

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 8

Big Example:Critical Edges Removed

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 9

PRE Dataflow Equations

First formulation [Morel & Renvoise 79]bidirectional dataflow analysis

UglyThis version [Knoop et al. 92]

Based on “lazy code motion”Places computations as late as possibleSame reductions as classic algorithmMinimizes register pressure

Most complex dataflow problem we’ve ever seen…

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 10

Step 1: Local Transparency

Expression’s value is locally transparent in a basic block if

No assignments to variables that occur in expression

Set of locally transparent expressions:TRANSloc(i)

Note: Ignore expressions in branches

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 11

Local Transparency

TransLoc – no assignmentsto variables in expression

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 12

Step 2: Locally Anticipatable

Expression is locally anticipatable in basic block if

There is computation of expression in blockMoving to beginning of block has no effect

No uses of expression nor assignments of variable in block ahead of computation

Set of locally anticipatable expressions:ANTloc(i)

Page 3: Common subexpression elimination Partial Redundancy ...emery/classes/cmpsci710...4 UNIVERSITY OF MASSACHUSETTS, A MHERST • Department of Computer Science 19 PRE Transformation We’ll

3

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 13

Locally Anticipatable

ANTloc – computes expr,can move to front

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 14

Step 3: Globally Anticipatable

Expression’s value globally anticipatableon entry to basic block if

Every path from that point includes computation of expressionExpression yields same value all along path

Set of globally anticipatable expressions:ANTin(i)

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 15

Globally Anticipatable Expressions:Dataflow Equations

ANTout(exit) = ∅ANTin(i) =ANTloc(i) ∪ (TRANSloc(i) ∩ ANTout(i))

ANTout(i) =∩j ∈ Succ(i) ANTin(j)

What’s the analysis direction?

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 16

Globally Anticipatable

ANTout(exit) = ∅ANTin(i) =

ANTloc(i) ∪ (TRANSloc(i) ∩ ANTout(i))

ANTout(i) = ∩j ∈ Succ(i) ANTin(j)

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 17

Step 4: Earliest Expressions

Expression is earliest at entrance to block ifNo block from entry to block both:

Evaluates expression andProduces same value as at entrance to block

Defined in terms of local transparency and globally anticipatable expressions

EARLin(i) = ∪j ∈ Pred(i) EARLout(j)EARLout(i) = inv(TRANSloc(i)) ∪ (inv(ANTin(i)) ∩ EARLin(i))Initialize EARLin(entry) = Uexp

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 18

Early Expressions

EARLin(i) = ∪j ∈ Pred(i)EARLout(j)

EARLout(i) = inv(TRANSloc(i)) ∪(inv(ANTin(i) ∩ EARLin(i))

Page 4: Common subexpression elimination Partial Redundancy ...emery/classes/cmpsci710...4 UNIVERSITY OF MASSACHUSETTS, A MHERST • Department of Computer Science 19 PRE Transformation We’ll

4

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 19

PRE Transformation

We’ll cut to the chase:Latest, Isolated expressions

Use earliest, globally anticipatableOPT(i) = latest but not isolated= LATEin(i) ∩ inv(ISOLout(i))REDN(i) = used but not optimal = ANTloc(i) ∩ inv(LATEin(i) ∪ ISOLout(i))

Insert fresh temporaries for OPT expressions, replace uses in REDN

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 20

OPT, REDN, PRE

OPT(B1) = a+1OPT(B2, B3a) = x*yREDN(B1) = a+1REDN(B2, B4, B7) = x*y

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTSASSACHUSETTS, A, AMHERST • MHERST • Department of Computer ScienceDepartment of Computer Science 21

Conclusion

PRESubsumes global CSE & loop-invariant code motionComplex (but unidirectional) dataflow analysis problemCan only reduce number of computations and register pressure

Next timeRegister allocation: ACDI ch.16, pp. 481-524