Your SlideShare is downloading. ×
0
Loop invariant computation
Loop invariant computation
Loop invariant computation
Loop invariant computation
Loop invariant computation
Loop invariant computation
Loop invariant computation
Loop invariant computation
Loop invariant computation
Loop invariant computation
Loop invariant computation
Loop invariant computation
Loop invariant computation
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,190

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,190
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
17
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

×