aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@redhat.com>2017-03-17 15:39:28 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2017-03-17 15:39:28 +0000
commit6b4c3c7b2334c417b1e06612f717f34ae464f305 (patch)
tree00d926b4d34639dd94d2c86099b21c3fda58987f /gcc
parent4a17943d36f2890fabc5e2f05eb2f8aca4b319c2 (diff)
downloadgcc-6b4c3c7b2334c417b1e06612f717f34ae464f305.zip
gcc-6b4c3c7b2334c417b1e06612f717f34ae464f305.tar.gz
gcc-6b4c3c7b2334c417b1e06612f717f34ae464f305.tar.bz2
reload.c (find_reloads): When reloading a nonoffsettable address...
* reload.c (find_reloads): When reloading a nonoffsettable address, use RELOAD_OTHER for it and its address reloads. From-SVN: r246227
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/reload.c8
2 files changed, 7 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f6caadb..eb0e150 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
2017-03-17 Bernd Schmidt <bschmidt@redhat.com>
+ * reload.c (find_reloads): When reloading a nonoffsettable address,
+ use RELOAD_OTHER for it and its address reloads.
+
PR rtl-optimization/79910
* combine.c (record_used_regs): New static function.
(try_combine): Handle situations where there is an additional
diff --git a/gcc/reload.c b/gcc/reload.c
index 598b78d..8074e54 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -3997,14 +3997,14 @@ find_reloads (rtx_insn *insn, int replace, int ind_levels, int live_known,
&XEXP (recog_data.operand[i], 0), (rtx*) 0,
base_reg_class (VOIDmode, as, MEM, SCRATCH),
address_mode,
- VOIDmode, 0, 0, i, RELOAD_FOR_INPUT);
+ VOIDmode, 0, 0, i, RELOAD_OTHER);
rld[operand_reloadnum[i]].inc
= GET_MODE_SIZE (GET_MODE (recog_data.operand[i]));
/* If this operand is an output, we will have made any
reloads for its address as RELOAD_FOR_OUTPUT_ADDRESS, but
now we are treating part of the operand as an input, so
- we must change these to RELOAD_FOR_INPUT_ADDRESS. */
+ we must change these to RELOAD_FOR_OTHER_ADDRESS. */
if (modified[i] == RELOAD_WRITE)
{
@@ -4013,10 +4013,10 @@ find_reloads (rtx_insn *insn, int replace, int ind_levels, int live_known,
if (rld[j].opnum == i)
{
if (rld[j].when_needed == RELOAD_FOR_OUTPUT_ADDRESS)
- rld[j].when_needed = RELOAD_FOR_INPUT_ADDRESS;
+ rld[j].when_needed = RELOAD_FOR_OTHER_ADDRESS;
else if (rld[j].when_needed
== RELOAD_FOR_OUTADDR_ADDRESS)
- rld[j].when_needed = RELOAD_FOR_INPADDR_ADDRESS;
+ rld[j].when_needed = RELOAD_FOR_OTHER_ADDRESS;
}
}
}