diff options
author | Bernd Schmidt <bernds@redhat.com> | 2017-03-17 15:39:28 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2017-03-17 15:39:28 +0000 |
commit | 6b4c3c7b2334c417b1e06612f717f34ae464f305 (patch) | |
tree | 00d926b4d34639dd94d2c86099b21c3fda58987f /gcc | |
parent | 4a17943d36f2890fabc5e2f05eb2f8aca4b319c2 (diff) | |
download | gcc-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/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/reload.c | 8 |
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; } } } |