From dbf85761b58b9dcc84cc4c5bebe4f77d8140c097 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Mon, 14 Jun 1993 08:47:36 +0000 Subject: [PATCH] (make_memloc): Don't reuse a memloc. From-SVN: r4675 --- gcc/reload.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gcc/reload.c b/gcc/reload.c index 08a21c677ff..868c96780fc 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -3794,6 +3794,9 @@ find_reloads_toplev (x, opnum, type, ind_levels, is_set_dest) return x; } +/* Return a mem ref for the memory equivalent of reg REGNO. + This mem ref is not shared with anything. */ + static rtx make_memloc (ad, regno) rtx ad; @@ -3801,9 +3804,16 @@ make_memloc (ad, regno) { register int i; rtx tem = reg_equiv_address[regno]; + +#if 0 /* We cannot safely reuse a memloc made here; + if the pseudo appears twice, and its mem needs a reload, + it gets two separate reloads assigned, but it only + gets substituted with the second of them; + then it can get used before that reload reg gets loaded up. */ for (i = 0; i < n_memlocs; i++) if (rtx_equal_p (tem, XEXP (memlocs[i], 0))) return memlocs[i]; +#endif /* If TEM might contain a pseudo, we must copy it to avoid modifying it when we do the substitution for the reload. */