diff options
author | Bernd Schmidt <crux@pool.informatik.rwth-aachen.de> | 1998-10-25 05:13:14 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-10-25 05:13:14 -0700 |
commit | 506b3b3ac9c3346cec94d15713ef8e8ae8221212 (patch) | |
tree | f1fa8785159e01bc1b37bde52e2d9640ca328c6d /gcc | |
parent | 9ff16ff2fc8c546b5c03fdeed743bef48ae413c5 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/reload.c | 4 |
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) { |