summaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-07 12:30:59 +0000
committerbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-07 12:30:59 +0000
commit2040a7e451b5111e9912afdb422604e782d86bef (patch)
tree3f4ae47d601564892feee69ecd2e7fa2feac9aca /gcc/expr.c
parenta5f5a6f73e89b0804d978362a4f9784f829480ce (diff)
downloadgcc-2040a7e451b5111e9912afdb422604e782d86bef.tar.gz
2009-04-07 Paolo Bonzini <bonzini@gnu.org>
* expr.c (convert_move): Use emit_store_flag instead of "emulating" it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145666 138bc75d-0d04-0410-961f-82ee72b054a4
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 ff3867e59ec..f25ec7b4b18 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++)