Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
PRINCIPLES OF COMPILER DESIGN LOOP INVARIANT COMPUTATION                  By- Bharat P. Patil                  M.Sc. C.S.(...
Loop Invariant Computationand Code Motion   Loop-invariant computation   Algorithms for code motion   Summary: 13.1.2 (...
Loop-Invariant Computationand Code Motion   Loop invariant computation    ◦ A computation whose value does not change as ...
Example◦ Which statement is a loop-invariant?◦ Which statement can we move to the preheader?                   I        I ...
LICM AlgorithmObservations ◦ Loop invariant: operands are defined   outside loop or are defined by loop   invariants ◦ Co...
Detecting loop invariantcomputationCompute reaching definitionsRepeat: mark A=B+C as invariant if ◦ All reaching definit...
Example                  I(1)          I(1)           I(1)                 I(2)
Conditions for Code Motion  Correctness: movement does not change the program   semantics  Performance: code should not ...
Code Motion AlgorithmGiven a set of nodes in a loop Compute reaching definitions Compute loop invariant computation Com...
Code Motion Details Candidate statement for code motion  ◦   Loop invariant  ◦   Located in a block that dominates all th...
Examples           I                 I               I           I                 I               I                   out...
More AggressiveOptimizationsGamble on: most loops get executed ◦ Can we relax constraint of dominating all   exits?    I...
Landing PadsCode for most loops is generated in a test-repeat-until form to simplify dominance
Loop invariant computation
Upcoming SlideShare
Loading in …5
×

Loop invariant computation

3,308 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

Loop invariant computation

  1. 1. PRINCIPLES OF COMPILER DESIGN LOOP INVARIANT COMPUTATION By- Bharat P. Patil M.Sc. C.S.(Part 1) - 41
  2. 2. Loop Invariant Computationand Code Motion  Loop-invariant computation  Algorithms for code motion  Summary: 13.1.2 (global CSE), 13.2
  3. 3. Loop-Invariant Computationand Code Motion  Loop invariant computation ◦ A computation whose value does not change as long as control stays within the loop  Loop invariant code motion (LICM) ◦ Move a loop invariant statement within a loop to the pre-header of the loop
  4. 4. Example◦ Which statement is a loop-invariant?◦ Which statement can we move to the preheader? I I I
  5. 5. LICM AlgorithmObservations ◦ Loop invariant: operands are defined outside loop or are defined by loop invariants ◦ Code motion: not all invariant statements can be moved to the pre-headerAlgorithm ◦ Detect loop invariant computations ◦ Check conditions for code motion ◦ Code transformation
  6. 6. Detecting loop invariantcomputationCompute reaching definitionsRepeat: mark A=B+C as invariant if ◦ All reaching definitions of B are outside of the loop, or there is exactly one reaching definition for B and it is from a loop-invariant statement inside the loop ◦ Check similarly for CUntil no changes to the set of loop- invariant statements occur
  7. 7. Example I(1) I(1) I(1) I(2)
  8. 8. Conditions for Code Motion  Correctness: movement does not change the program semantics  Performance: code should not be slowed down OK? I Need information on  Control flow of the loop: dominate all the exits  Other definitions: no other definitions of A  Other uses: all uses of A are dominated by block b
  9. 9. Code Motion AlgorithmGiven a set of nodes in a loop Compute reaching definitions Compute loop invariant computation Compute dominators Find the exits of the loop, which are nodes whose successors are located outside loop
  10. 10. Code Motion Details Candidate statement for code motion ◦ Loop invariant ◦ Located in a block that dominates all the exits of the loop ◦ Assign to a variable not assigned to elsewhere in the loop ◦ Located in a block that dominate all blocks in the loop that contain the use of the variable Visit blocks in a reverse-postorder ◦ Move the candidate statement to pre-header if all the invariant operations it depends on have been moved
  11. 11. Examples I I I I I I outside loop
  12. 12. More AggressiveOptimizationsGamble on: most loops get executed ◦ Can we relax constraint of dominating all exits?  If liveness check and exception check is satisfied
  13. 13. Landing PadsCode for most loops is generated in a test-repeat-until form to simplify dominance

×