OPT_AvailableExpression ae = cache.find(inst);
AvailableExpression ae = cache.find(inst);
  private void expressionHelper(OPT_IR ir, OPT_AvExCache cache, 				OPT_Instruction inst) {    // look up the expression in the cache    OPT_AvailableExpression ae = cache.find(inst);    if (ae != null) {      OPT_RegisterOperand dest = ResultCarrier.getClearResult(inst);      if (ae.tmp == null) {        // (1) generate a new temporary, and store in the AE cache	OPT_RegisterOperand newRes = ir.regpool.makeTemp(dest.type);	ae.tmp = newRes.register;	// (2) Modify ae.inst to assign its result to the new temporary	// and then insert a move from the new temporary to the old result	// of ae.inst after ae.inst.	OPT_RegisterOperand res = ResultCarrier.getClearResult(ae.inst);	ResultCarrier.setResult(ae.inst, newRes);	ae.inst.insertAfter(Move.create(getMoveOp(res), res, newRes.copyD2U()));	// (3) replace inst with a move from the new temporary	Move.mutate(inst, getMoveOp(dest), dest, newRes.copyD2U());      } else {        // already have a temp. replace inst with a move	OPT_RegisterOperand newRes = new OPT_RegisterOperand(ae.tmp, dest.type);	Move.mutate(inst, getMoveOp(dest), dest, newRes);      }     } else {      // did not find a match: insert new entry in cache      cache.insert(inst);    }  }