mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-11 15:31:06 +08:00
reload.c (find_reloads): Always force (subreg (mem)) to be reloaded if WORD_REGISTER_OPERATIONS.
* reload.c (find_reloads): Always force (subreg (mem)) to be reloaded if WORD_REGISTER_OPERATIONS. From-SVN: r18416
This commit is contained in:
parent
ebb7b10b6d
commit
5ec105cd71
@ -1,3 +1,8 @@
|
||||
Thu Mar 5 02:41:27 1998 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* reload.c (find_reloads): Always force (subreg (mem)) to be
|
||||
reloaded if WORD_REGISTER_OPERATIONS.
|
||||
|
||||
Thu Mar 5 02:14:44 1998 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* haifa-sched.c (free_list): Rename from free_pnd_lst.
|
||||
|
16
gcc/reload.c
16
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. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user