Commit a22ad972 by Doug Evans

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
parent 58a32c5c
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment