aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernd Schmidt <crux@pool.informatik.rwth-aachen.de>1998-10-25 05:13:14 -0700
committerJeff Law <law@gcc.gnu.org>1998-10-25 05:13:14 -0700
commit506b3b3ac9c3346cec94d15713ef8e8ae8221212 (patch)
treef1fa8785159e01bc1b37bde52e2d9640ca328c6d
parent9ff16ff2fc8c546b5c03fdeed743bef48ae413c5 (diff)
downloadgcc-506b3b3ac9c3346cec94d15713ef8e8ae8221212.zip
gcc-506b3b3ac9c3346cec94d15713ef8e8ae8221212.tar.gz
gcc-506b3b3ac9c3346cec94d15713ef8e8ae8221212.tar.bz2
reload.c (push_reload): When merging reloads...
� * reload.c (push_reload): When merging reloads, make sure that reload_in_reg and reload_in are from the same reload in all cases. From-SVN: r23303
-rw-r--r--gcc/reload.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/reload.c b/gcc/reload.c
index a7dba55..b6a2ff9 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -1320,6 +1320,7 @@ push_reload (in, out, inloc, outloc, class,
reload_outmode[i] = outmode;
if (in != 0)
{
+ rtx in_reg = inloc ? *inloc : 0;
/* If we merge reloads for two distinct rtl expressions that
are identical in content, there might be duplicate address
reloads. Remove the extra set now, so that if we later find
@@ -1333,12 +1334,13 @@ push_reload (in, out, inloc, outloc, class,
{
remove_address_replacements (in);
in = reload_in[i];
+ in_reg = reload_in_reg[i];
}
else
remove_address_replacements (reload_in[i]);
}
reload_in[i] = in;
- reload_in_reg[i] = inloc ? *inloc : 0;
+ reload_in_reg[i] = in_reg;
}
if (out != 0)
{