mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-13 07:14:25 +08:00
calls.c (expand_call): When copying unaligned values into a register...
* calls.c (expand_call): When copying unaligned values into a register, zero out the register first rather than emitting a clobber. From-SVN: r13898
This commit is contained in:
parent
58a32c5c03
commit
a22ad97227
10
gcc/calls.c
10
gcc/calls.c
@ -1782,9 +1782,15 @@ expand_call (exp, target, ignore)
|
||||
/* Clobber REG and move each partword into it. Ensure we don't
|
||||
go past the end of the structure. Note that the loop below
|
||||
works because we've already verified that padding
|
||||
and endianness are compatible. */
|
||||
and endianness are compatible.
|
||||
|
||||
emit_insn (gen_rtx (CLOBBER, VOIDmode, reg));
|
||||
We use to emit a clobber here but that doesn't let later
|
||||
passes optimize the instructions we emit. By storing 0 into
|
||||
the register later passes know the first AND to zero out the
|
||||
bitfield being set in the register is unnecessary. The store
|
||||
of 0 will be deleted as will at least the first AND. */
|
||||
|
||||
emit_move_insn (reg, const0_rtx);
|
||||
|
||||
for (bitpos = 0;
|
||||
bitpos < BITS_PER_WORD && bytes > 0;
|
||||
|
Loading…
Reference in New Issue
Block a user