re PR rtl-optimization/35281 (multiply with 0 generated for 64*32->64)

2008-03-11  Paolo Bonzini  <bonzini@gnu.org>

	PR rtl-optimization/35281
	* expr.c (convert_move): Use a new pseudo for the intermediate
	from_mode->word_mode result.

From-SVN: r133116
This commit is contained in:
Paolo Bonzini 2008-03-11 16:48:28 +00:00 committed by Paolo Bonzini
parent 30e257e544
commit 2f6025a15b
2 changed files with 9 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2008-03-11 Paolo Bonzini <bonzini@gnu.org>
PR rtl-optimization/35281
* expr.c (convert_move): Use a new pseudo for the intermediate
from_mode->word_mode result.
2008-03-11 Paolo Bonzini <bonzini@gnu.org> 2008-03-11 Paolo Bonzini <bonzini@gnu.org>
* langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete. * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.

View File

@ -552,15 +552,15 @@ convert_move (rtx to, rtx from, int unsignedp)
&& ((code = can_extend_p (to_mode, word_mode, unsignedp)) && ((code = can_extend_p (to_mode, word_mode, unsignedp))
!= CODE_FOR_nothing)) != CODE_FOR_nothing))
{ {
rtx word_to = gen_reg_rtx (word_mode);
if (REG_P (to)) if (REG_P (to))
{ {
if (reg_overlap_mentioned_p (to, from)) if (reg_overlap_mentioned_p (to, from))
from = force_reg (from_mode, from); from = force_reg (from_mode, from);
emit_insn (gen_rtx_CLOBBER (VOIDmode, to)); emit_insn (gen_rtx_CLOBBER (VOIDmode, to));
} }
convert_move (gen_lowpart (word_mode, to), from, unsignedp); convert_move (word_to, from, unsignedp);
emit_unop_insn (code, to, emit_unop_insn (code, to, word_to, equiv_code);
gen_lowpart (word_mode, to), equiv_code);
return; return;
} }