aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2009-04-07 12:30:59 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2009-04-07 12:30:59 +0000
commit9a53bc17c486a122b5eb3570f2e1b374b5c35460 (patch)
tree3f4ae47d601564892feee69ecd2e7fa2feac9aca /gcc/expr.c
parent67b8f1c1494dd7e1832030e4f6b1cb8c9ca0427d (diff)
downloadgcc-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.c24
1 files changed, 3 insertions, 21 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index ff3867e..f25ec7b 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -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++)