mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-19 15:11:08 +08:00
expmed.c (store_bit_field): Don't search for an integer mode unless we need the result.
* expmed.c (store_bit_field): Don't search for an integer mode unless we need the result. From-SVN: r71819
This commit is contained in:
parent
5581fc9110
commit
9f5e2e1108
@ -1,3 +1,8 @@
|
||||
2003-09-26 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
* expmed.c (store_bit_field): Don't search for an integer mode
|
||||
unless we need the result.
|
||||
|
||||
2003-09-26 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
* expr.c (emit_move_insn_1): If there is no move pattern for the
|
||||
|
@ -461,7 +461,9 @@ store_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
|
||||
VOIDmode, because that is what store_field uses to indicate that this
|
||||
is a bit field, but passing VOIDmode to operand_subword_force will
|
||||
result in an abort. */
|
||||
fieldmode = smallest_mode_for_size (nwords * BITS_PER_WORD, MODE_INT);
|
||||
fieldmode = GET_MODE (value);
|
||||
if (fieldmode == VOIDmode)
|
||||
fieldmode = smallest_mode_for_size (nwords * BITS_PER_WORD, MODE_INT);
|
||||
|
||||
for (i = 0; i < nwords; i++)
|
||||
{
|
||||
@ -477,10 +479,7 @@ store_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
|
||||
store_bit_field (op0, MIN (BITS_PER_WORD,
|
||||
bitsize - i * BITS_PER_WORD),
|
||||
bitnum + bit_offset, word_mode,
|
||||
operand_subword_force (value, wordnum,
|
||||
(GET_MODE (value) == VOIDmode
|
||||
? fieldmode
|
||||
: GET_MODE (value))),
|
||||
operand_subword_force (value, wordnum, fieldmode),
|
||||
total_size);
|
||||
}
|
||||
return value;
|
||||
|
Loading…
x
Reference in New Issue
Block a user