Successfully reported this slideshow.
Upcoming SlideShare
×

# Loop invariant computation

3,308 views

Published on

Published in: Education
• Full Name
Comment goes here.

Are you sure you want to Yes No
• 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