summaryrefslogtreecommitdiff
path: root/gcc/reload.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-10-25 12:13:14 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-10-25 12:13:14 +0000
commitbeb4ed48a3fb8d4a63fb16ad73eaea76a2d846c1 (patch)
treef1fa8785159e01bc1b37bde52e2d9640ca328c6d /gcc/reload.c
parent8c7ec50fe6166d959b57854d8d36f6c76f816abf (diff)
downloadgcc-beb4ed48a3fb8d4a63fb16ad73eaea76a2d846c1.tar.gz
* reload.c (push_reload): When merging reloads, make sure that reload_in_reg and reload_in are from the same reload in all cases. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23303 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reload.c')
-rw-r--r--gcc/reload.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/reload.c b/gcc/reload.c
index a7dba557070..b6a2ff95916 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)
{