public void eliminate(Instruction s){
  int i=0;
  for (Enumeration<Operand> defs=s.getDefs(); defs.hasMoreElements(); ) {
    Operand def=defs.nextElement();
    if (def instanceof RegisterOperand) {
      eliminate((RegisterOperand)def);
    }
  }
  if (doMemory) {
    if (LocalCSE.isStoreInstruction(s) || (options.READS_KILL && LocalCSE.isLoadInstruction(s))) {
      LocationOperand sLocation=LocationCarrier.getLocation(s);
      while (i < cache.size()) {
        AvailableExpression ae=cache.get(i);
        if (ae.inst != s) {
          boolean killIt=false;
          if (ae.isLoadOrStore()) {
            if ((sLocation == null) && (ae.location == null)) {
              killIt=true;
            }
 else             if ((sLocation != null) && (ae.location != null)) {
              killIt=LocationOperand.mayBeAliased(sLocation,ae.location);
            }
          }
          if (killIt) {
            cache.remove(i);
            continue;
          }
        }
        i++;
      }
    }
  }
}

public void eliminate ( Instruction s ) { int i = 0 ; for ( Enumeration < Operand > defs = s . getDefs ( ) ; defs . hasMoreElements ( ) ; ) { Operand def = defs . nextElement ( ) ; if ( def instanceof RegisterOperand ) { eliminate ( ( RegisterOperand ) def ) ; } } if ( doMemory ) { if ( LocalCSE . isStoreInstruction ( s ) || ( options . READS_KILL && LocalCSE . isLoadInstruction ( s ) ) ) { LocationOperand sLocation = LocationCarrier . getLocation ( s ) ; while ( i < cache . size ( ) ) { AvailableExpression ae = cache . get ( i ) ; if ( ae . inst != s ) { boolean killIt = false ; if ( ae . isLoadOrStore ( ) ) { if ( ( sLocation == null ) && ( ae . location == null ) ) { killIt = true ; } else if ( ( sLocation != null ) && ( ae . location != null ) ) { killIt = LocationOperand . mayBeAliased ( sLocation , ae . location ) ; } } if ( killIt ) { cache . remove ( i ) ; continue ; } } i ++ ; } } } }
eliminate all ae tuples that are killed by a given instruction
