aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-08-21 17:40:27 +0000
committerRichard Stallman <rms@gnu.org>1992-08-21 17:40:27 +0000
commitd3b9996a9873aede974b52497fad10fc8fad9b85 (patch)
tree7abc61ac0239faa1a871bf6a018df4bb5a519927 /gcc
parent144499abeb7161ac622f294de3736ed5a3a1d99c (diff)
downloadgcc-d3b9996a9873aede974b52497fad10fc8fad9b85.zip
gcc-d3b9996a9873aede974b52497fad10fc8fad9b85.tar.gz
gcc-d3b9996a9873aede974b52497fad10fc8fad9b85.tar.bz2
(find_dummy_reload): Restore original RTX instead of passed IN rtx.
From-SVN: r1928
Diffstat (limited to 'gcc')
-rw-r--r--gcc/reload.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/reload.c b/gcc/reload.c
index ccaa4b7..3809423 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -1382,6 +1382,7 @@ find_dummy_reload (real_in, real_out, inloc, outloc, class, for_real)
{
register int regno = REGNO (out) + out_offset;
int nwords = HARD_REGNO_NREGS (regno, GET_MODE (real_out));
+ rtx saved_rtx;
/* When we consider whether the insn uses OUT,
ignore references within IN. They don't prevent us
@@ -1392,6 +1393,7 @@ find_dummy_reload (real_in, real_out, inloc, outloc, class, for_real)
If the insn uses IN elsewhere and it contains OUT,
that counts. We can't be sure it's the "same" operand
so it might not go through this reload. */
+ saved_rtx = *inloc;
*inloc = const0_rtx;
if (regno < FIRST_PSEUDO_REGISTER
@@ -1418,7 +1420,7 @@ find_dummy_reload (real_in, real_out, inloc, outloc, class, for_real)
}
}
- *inloc = real_in;
+ *inloc = saved_rtx;
}
/* Consider using IN if OUT was not acceptable