Your SlideShare is downloading. ×
Loop invariant computation
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Loop invariant computation

1,127

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,127
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. PRINCIPLES OF COMPILER DESIGN LOOP INVARIANT COMPUTATION By- Bharat P. Patil M.Sc. C.S.(Part 1) - 41
  • 2. Loop Invariant Computationand Code Motion  Loop-invariant computation  Algorithms for code motion  Summary: 13.1.2 (global CSE), 13.2
  • 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. Example◦ Which statement is a loop-invariant?◦ Which statement can we move to the preheader? I I I
  • 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. 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. Example I(1) I(1) I(1) I(2)
  • 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. 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. 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. Examples I I I I I I outside loop
  • 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. Landing PadsCode for most loops is generated in a test-repeat-until form to simplify dominance

×