coins.backend.ana
Class LoopAnalysis

java.lang.Object
  extended bycoins.backend.ana.LoopAnalysis
All Implemented Interfaces:
LocalAnalysis

public class LoopAnalysis
extends java.lang.Object
implements LocalAnalysis

Detect loop structures in the flow graph.
Algorithm used is taken from:
R. Endre Tarjan, "Testing Flow Graph Reducibility", Journal of Computer and System Sciences 9, 355-365 (1974).


Field Summary
static coins.backend.ana.LoopAnalysis.Analyzer analyzer
           
 boolean[] hasExit
          hasExii[i] is true if the loop beginning at basic block i has exit.
 boolean[] isLoop
          isLoop[i] is true if basic block i is a loop entry.
 BiList[] kids
          Children of blocks in the loop tree.
 BasicBlk[] loopHeader
          loopHeader[i] is a entry block of basic block i.
 boolean[] multiEntry
          isLoop[i] is true if the loop beginning at basic block i has multiple entries (i.e.
 int[] nestLevel
          nestLevel[i] is depth of the loop beginning at basic block i.
 
Method Summary
 boolean isUpToDate()
          Return true if this analysis is up to date.
 void printAfterBlock(BasicBlk blk, java.io.PrintWriter output)
          Called after each Basic Block.
 void printAfterFunction(java.io.PrintWriter out)
          Print loop structure.
 void printAfterStmt(LirNode stmt, java.io.PrintWriter output)
          Called after each statement.
 void printBeforeBlock(BasicBlk blk, java.io.PrintWriter output)
          Called before each Basic Block.
 void printBeforeFunction(java.io.PrintWriter output)
          Debug print entries required by interface.
 void printBeforeStmt(LirNode stmt, java.io.PrintWriter output)
          Called before each statement.
 void printIt(java.io.PrintWriter out)
          Print loop structure (OBSOLETED).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

analyzer

public static final coins.backend.ana.LoopAnalysis.Analyzer analyzer

isLoop

public final boolean[] isLoop
isLoop[i] is true if basic block i is a loop entry.


loopHeader

public final BasicBlk[] loopHeader
loopHeader[i] is a entry block of basic block i.


multiEntry

public final boolean[] multiEntry
isLoop[i] is true if the loop beginning at basic block i has multiple entries (i.e. irreducible).


hasExit

public final boolean[] hasExit
hasExii[i] is true if the loop beginning at basic block i has exit.


nestLevel

public final int[] nestLevel
nestLevel[i] is depth of the loop beginning at basic block i.


kids

public final BiList[] kids
Children of blocks in the loop tree.

Method Detail

isUpToDate

public boolean isUpToDate()
Return true if this analysis is up to date.

Specified by:
isUpToDate in interface LocalAnalysis

printIt

public void printIt(java.io.PrintWriter out)
Print loop structure (OBSOLETED).


printBeforeFunction

public void printBeforeFunction(java.io.PrintWriter output)
Debug print entries required by interface.

Specified by:
printBeforeFunction in interface LocalAnalysis

printBeforeBlock

public void printBeforeBlock(BasicBlk blk,
                             java.io.PrintWriter output)
Description copied from interface: LocalAnalysis
Called before each Basic Block.

Specified by:
printBeforeBlock in interface LocalAnalysis

printAfterBlock

public void printAfterBlock(BasicBlk blk,
                            java.io.PrintWriter output)
Description copied from interface: LocalAnalysis
Called after each Basic Block.

Specified by:
printAfterBlock in interface LocalAnalysis

printBeforeStmt

public void printBeforeStmt(LirNode stmt,
                            java.io.PrintWriter output)
Description copied from interface: LocalAnalysis
Called before each statement.

Specified by:
printBeforeStmt in interface LocalAnalysis

printAfterStmt

public void printAfterStmt(LirNode stmt,
                           java.io.PrintWriter output)
Description copied from interface: LocalAnalysis
Called after each statement.

Specified by:
printAfterStmt in interface LocalAnalysis

printAfterFunction

public void printAfterFunction(java.io.PrintWriter out)
Print loop structure.

Specified by:
printAfterFunction in interface LocalAnalysis