diff options
author | Paolo Bonzini <bonzini@gnu.org> | 2009-04-07 12:30:59 +0000 |
---|---|---|
committer | Paolo Bonzini <bonzini@gcc.gnu.org> | 2009-04-07 12:30:59 +0000 |
commit | 9a53bc17c486a122b5eb3570f2e1b374b5c35460 (patch) | |
tree | 3f4ae47d601564892feee69ecd2e7fa2feac9aca /gcc/expr.c | |
parent | 67b8f1c1494dd7e1832030e4f6b1cb8c9ca0427d (diff) | |
download | gcc-9a53bc17c486a122b5eb3570f2e1b374b5c35460.zip gcc-9a53bc17c486a122b5eb3570f2e1b374b5c35460.tar.gz gcc-9a53bc17c486a122b5eb3570f2e1b374b5c35460.tar.bz2 |
expr.c (convert_move): Use emit_store_flag instead of "emulating" it.
2009-04-07 Paolo Bonzini <bonzini@gnu.org>
* expr.c (convert_move): Use emit_store_flag instead of
"emulating" it.
From-SVN: r145666
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 24 |
1 files changed, 3 insertions, 21 deletions
@@ -588,27 +588,9 @@ convert_move (rtx to, rtx from, int unsignedp) if (unsignedp) fill_value = const0_rtx; else - { -#ifdef HAVE_slt - if (HAVE_slt - && insn_data[(int) CODE_FOR_slt].operand[0].mode == word_mode - && STORE_FLAG_VALUE == -1) - { - emit_cmp_insn (lowfrom, const0_rtx, NE, NULL_RTX, - lowpart_mode, 0); - fill_value = gen_reg_rtx (word_mode); - emit_insn (gen_slt (fill_value)); - } - else -#endif - { - fill_value - = expand_shift (RSHIFT_EXPR, lowpart_mode, lowfrom, - size_int (GET_MODE_BITSIZE (lowpart_mode) - 1), - NULL_RTX, 0); - fill_value = convert_to_mode (word_mode, fill_value, 1); - } - } + fill_value = emit_store_flag (gen_reg_rtx (word_mode), + LT, lowfrom, const0_rtx, + VOIDmode, 0, -1); /* Fill the remaining words. */ for (i = GET_MODE_SIZE (lowpart_mode) / UNITS_PER_WORD; i < nwords; i++) |