diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-03-05 02:42:22 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-03-05 02:42:22 +0000 |
commit | d743d4f7a39d3be94e1a102a236c33ad8ecb4074 (patch) | |
tree | 486ebb0478e653083409bdc4b857feeee65c7081 /gcc/reload.c | |
parent | 7ce0700a5b6538aa51eff97cd414102f55d6e1c8 (diff) | |
download | gcc-d743d4f7a39d3be94e1a102a236c33ad8ecb4074.tar.gz |
* reload.c (find_reloads): Always force (subreg (mem)) to be
reloaded if WORD_REGISTER_OPERATIONS.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@18416 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reload.c')
-rw-r--r-- | gcc/reload.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/gcc/reload.c b/gcc/reload.c index bd22bbeddb8..4187b120775 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -2753,10 +2753,20 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) register access. If the data is, in fact, in memory we must always load using the size assumed to be in the register and let the insn do the different-sized - accesses. */ + accesses. + + This is doubly true if WORD_REGISTER_OPERATIONS. In + this case eliminate_regs has left non-paradoxical + subregs for push_reloads to see. Make sure it does + by forcing the reload. + + ??? When is it right at this stage to have a subreg + of a mem that is _not_ to be handled specialy? IMO + those should have been reduced to just a mem. */ || ((GET_CODE (operand) == MEM || (GET_CODE (operand)== REG && REGNO (operand) >= FIRST_PSEUDO_REGISTER)) +#ifndef WORD_REGISTER_OPERATIONS && (((GET_MODE_BITSIZE (GET_MODE (operand)) < BIGGEST_ALIGNMENT) && (GET_MODE_SIZE (operand_mode[i]) @@ -2771,7 +2781,9 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) && INTEGRAL_MODE_P (GET_MODE (operand)) && LOAD_EXTEND_OP (GET_MODE (operand)) != NIL) #endif - )) + ) +#endif + ) /* Subreg of a hard reg which can't handle the subreg's mode or which would handle that mode in the wrong number of registers for subregging to work. */ |