diff options
| author | bonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-03-11 16:48:28 +0000 |
|---|---|---|
| committer | bonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-03-11 16:48:28 +0000 |
| commit | 8ae2fa3bd7b9696c53bcae6430cc6b60dd4bb4ae (patch) | |
| tree | 3bc543939b042f6d118291537cee9a36da5a4463 | |
| parent | c616456bb7c56351a421993734fb08ca16191095 (diff) | |
| download | ppe42-gcc-8ae2fa3bd7b9696c53bcae6430cc6b60dd4bb4ae.tar.gz ppe42-gcc-8ae2fa3bd7b9696c53bcae6430cc6b60dd4bb4ae.zip | |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@133116 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/expr.c | 6 |
2 files changed, 9 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0c265403fd6..7b7f9d7f735 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 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> + * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete. * langhooks.h (struct lang_hooks): Delete clear_binding_stack member. * toplev.c (compile_file): Don't call it. diff --git a/gcc/expr.c b/gcc/expr.c index 300b63d8816..3294f1a23e0 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -552,15 +552,15 @@ convert_move (rtx to, rtx from, int unsignedp) && ((code = can_extend_p (to_mode, word_mode, unsignedp)) != CODE_FOR_nothing)) { + rtx word_to = gen_reg_rtx (word_mode); if (REG_P (to)) { if (reg_overlap_mentioned_p (to, from)) from = force_reg (from_mode, from); emit_insn (gen_rtx_CLOBBER (VOIDmode, to)); } - convert_move (gen_lowpart (word_mode, to), from, unsignedp); - emit_unop_insn (code, to, - gen_lowpart (word_mode, to), equiv_code); + convert_move (word_to, from, unsignedp); + emit_unop_insn (code, to, word_to, equiv_code); return; } |

