View | Details | Return to bug 56561
Collapse All | Expand All

(-)gcc-4.6.3/gcc/combine.c.~1~ (+28 lines)
Lines 762-767 do_SUBST_MODE (rtx *into, enum machine_m Link Here
762
}
762
}
763
763
764
#define SUBST_MODE(INTO, NEWVAL)  do_SUBST_MODE(&(INTO), (NEWVAL))
764
#define SUBST_MODE(INTO, NEWVAL)  do_SUBST_MODE(&(INTO), (NEWVAL))
765
766
/* Similar to SUBST, but NEWVAL is a LOG_LINKS expression.  */
767
768
static void
769
do_SUBST_LINK (rtx *into, rtx newval)
770
{
771
  struct undo *buf;
772
  rtx oldval = *into;
773
774
  if (oldval == newval)
775
    return;
776
777
  if (undobuf.frees)
778
    buf = undobuf.frees, undobuf.frees = buf->next;
779
  else
780
    buf = XNEW (struct undo);
781
782
  buf->kind = UNDO_RTX;
783
  buf->where.r = into;
784
  buf->old_contents.r = oldval;
785
  *into = newval;
786
787
  buf->next = undobuf.undos, undobuf.undos = buf;
788
}
789
790
#define SUBST_LINK(oldval, newval) do_SUBST_LINK (&oldval, newval)
791
765
792
766
/* Subroutine of try_combine.  Determine whether the combine replacement
793
/* Subroutine of try_combine.  Determine whether the combine replacement
767
   patterns NEWPAT, NEWI2PAT and NEWOTHERPAT are cheaper according to
794
   patterns NEWPAT, NEWI2PAT and NEWOTHERPAT are cheaper according to
Lines 2867-2872 try_combine (rtx i3, rtx i2, rtx i1, rtx Link Here
2867
	  SUBST (PATTERN (i2), XVECEXP (PATTERN (i2), 0, 0));
2894
	  SUBST (PATTERN (i2), XVECEXP (PATTERN (i2), 0, 0));
2868
	  SUBST (XEXP (SET_SRC (PATTERN (i2)), 0),
2895
	  SUBST (XEXP (SET_SRC (PATTERN (i2)), 0),
2869
		 SET_DEST (PATTERN (i1)));
2896
		 SET_DEST (PATTERN (i1)));
2897
	  SUBST_LINK (LOG_LINKS (i2), alloc_INSN_LIST (i1, LOG_LINKS (i2)));
2870
	}
2898
	}
2871
    }
2899
    }
2872
#endif
2900
#endif

Return to bug 56561