From 6b4c3c7b2334c417b1e06612f717f34ae464f305 Mon Sep 17 00:00:00 2001 From: Bernd Schmidt Date: Fri, 17 Mar 2017 15:39:28 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 3 +++ gcc/reload.c | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f6caadb967f..eb0e150d051 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2017-03-17 Bernd Schmidt + * 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 598b78d6ef4..8074e541cee 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; } } } -- 2.30.2