boolean eliminate(){
  boolean change=false;
  Instruction prev=first;
  for (Instruction inst=first.next; inst != null; inst=inst.next) {
    if (inst.pc != NOTREACHED) {
      prev.next=inst;
      prev=inst;
      inst.pc=NOTREACHED;
    }
 else {
      change=true;
    }
  }
  first.pc=NOTREACHED;
  prev.next=null;
  return change;
}

boolean eliminate ( ) { boolean change = false ; Instruction prev = first ; for ( Instruction inst = first . next ; inst != null ; inst = inst . next ) { if ( inst . pc != NOTREACHED ) { prev . next = inst ; prev = inst ; inst . pc = NOTREACHED ; } else { change = true ; } } first . pc = NOTREACHED ; prev . next = null ; return change ; }
eliminate instructions that are not reached
