builtins.c (expand_builtin_strlen): Do not call emit_move_insn with a PLUS as source operand.

* builtins.c (expand_builtin_strlen): Do not call emit_move_insn
	with a PLUS as source operand.
	(expand_movstr): Likewise.
	(expand_builtin_stpcpy): Likewise.

From-SVN: r88322
This commit is contained in:
Ulrich Weigand 2004-09-30 01:39:35 +00:00 committed by Ulrich Weigand
parent e670d9e4ce
commit 7ce3fc8ffe
2 changed files with 14 additions and 7 deletions

View File

@ -1,3 +1,10 @@
2004-09-29 Ulrich Weigand <uweigand@de.ibm.com>
* builtins.c (expand_builtin_strlen): Do not call emit_move_insn
with a PLUS as source operand.
(expand_movstr): Likewise.
(expand_builtin_stpcpy): Likewise.
2004-09-29 Richard Henderson <rth@redhat.com>
PR 17739

View File

@ -2433,8 +2433,7 @@ expand_builtin_strlen (tree arglist, rtx target,
/* Now that we are assured of success, expand the source. */
start_sequence ();
pat = memory_address (BLKmode,
expand_expr (src, src_reg, ptr_mode, EXPAND_SUM));
pat = expand_expr (src, src_reg, ptr_mode, EXPAND_NORMAL);
if (pat != src_reg)
emit_move_insn (src_reg, pat);
pat = get_insns ();
@ -3045,8 +3044,10 @@ expand_movstr (tree dest, tree src, rtx target, int endp)
terminator. If the caller requested a mempcpy-like return value,
adjust it. */
if (endp == 1 && target != const0_rtx)
emit_move_insn (target, plus_constant (gen_lowpart (GET_MODE (target),
end), 1));
{
rtx tem = plus_constant (gen_lowpart (GET_MODE (target), end), 1);
emit_move_insn (target, force_operand (tem, NULL_RTX));
}
return target;
}
@ -3156,9 +3157,8 @@ expand_builtin_stpcpy (tree arglist, rtx target, enum machine_mode mode)
if (GET_MODE (target) != GET_MODE (ret))
ret = gen_lowpart (GET_MODE (target), ret);
ret = emit_move_insn (target,
plus_constant (ret,
INTVAL (len_rtx)));
ret = plus_constant (ret, INTVAL (len_rtx));
ret = emit_move_insn (target, force_operand (ret, NULL_RTX));
gcc_assert (ret);
return target;