record_base_value (REGNO (tem), bl->biv->add_val);
final_biv_value (bl, loop_start, loop_end)     struct iv_class *bl;     rtx loop_start, loop_end;{  rtx increment, tem;  /* ??? This only works for MODE_INT biv's.  Reject all others for now.  */  if (GET_MODE_CLASS (bl->biv->mode) != MODE_INT)    return 0;  /* The final value for reversed bivs must be calculated differently than      for ordinary bivs.  In this case, there is already an insn after the     loop which sets this biv's final value (if necessary), and there are     no other loop exits, so we can return any value.  */  if (bl->reversed)    {      if (loop_dump_stream)	fprintf (loop_dump_stream,		 "Final biv value for %d, reversed biv.\n", bl->regno);		       return const0_rtx;    }  /* Try to calculate the final value as initial value + (number of iterations     * increment).  For this to work, increment must be invariant, the only     exit from the loop must be the fall through at the bottom (otherwise     it may not have its final value when the loop exits), and the initial     value of the biv must be invariant.  */  if (loop_n_iterations != 0      && ! loop_number_exit_count[uid_loop_num[INSN_UID (loop_start)]]      && invariant_p (bl->initial_value))    {      increment = biv_total_increment (bl, loop_start, loop_end);            if (increment && invariant_p (increment))	{	  /* Can calculate the loop exit value, emit insns after loop	     end to calculate this value into a temporary register in	     case it is needed later.  */	  tem = gen_reg_rtx (bl->biv->mode);	  /* Make sure loop_end is not the last insn.  */	  if (NEXT_INSN (loop_end) == 0)	    emit_note_after (NOTE_INSN_DELETED, loop_end);	  emit_iv_add_mult (increment, GEN_INT (loop_n_iterations),			    bl->initial_value, tem, NEXT_INSN (loop_end));	  if (loop_dump_stream)	    fprintf (loop_dump_stream,		     "Final biv value for %d, calculated.\n", bl->regno);	  	  return tem;	}    }  /* Check to see if the biv is dead at all loop exits.  */  if (reg_dead_after_loop (bl->biv->src_reg, loop_start, loop_end))    {      if (loop_dump_stream)	fprintf (loop_dump_stream,		 "Final biv value for %d, biv dead after loop exit.\n",		 bl->regno);      return const0_rtx;    }  return 0;}