harpoon.Analysis.LowQuad.Loop
Class LoopOptimize

java.lang.Object
  extended by harpoon.Analysis.LowQuad.Loop.LoopOptimize

public final class LoopOptimize
extends Object

LoopOptimize optimizes the code after LoopAnalysis.

Version:
$Id: LoopOptimize.java,v 1.6 2004/02/08 05:09:34 cananian Exp $
Author:
Brian Demsky <bdemsky@mit.edu>

Constructor Summary
LoopOptimize(AllInductionsMap aimap, BasicInductionsMap bimap, InvariantsMap invmap, LoopAnalysis loopanal, TempMap ssitossamap)
          Creates an LoopOptimize.
LoopOptimize(LoopAnalysis lanal, TempMap ssitossamap)
          LoopOptimize constructor.
 
Method Summary
static HCodeFactory codeFactory(HCodeFactory parent)
          Returns a HCodeFactory that uses LoopOptimize.
 HCode optimize(HCode hc)
          optimize takes in a HCode and performs loop optimizations on it.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LoopOptimize

public LoopOptimize(AllInductionsMap aimap,
                    BasicInductionsMap bimap,
                    InvariantsMap invmap,
                    LoopAnalysis loopanal,
                    TempMap ssitossamap)
Creates an LoopOptimize.


LoopOptimize

public LoopOptimize(LoopAnalysis lanal,
                    TempMap ssitossamap)
LoopOptimize constructor. Used internally by codeFactory.

Method Detail

codeFactory

public static HCodeFactory codeFactory(HCodeFactory parent)
Returns a HCodeFactory that uses LoopOptimize.


optimize

public HCode optimize(HCode hc)
optimize takes in a HCode and performs loop optimizations on it. Optimization currently work only on loops with one entrance. Furthermore, optimizations currently only work on loops that the header node is a phi function of arity 2 [ie. natural loops.] This function really needs code that is passed to it to have been run through Deadcode. Otherwise, it may make some very poor decisions on moving test conditions.