From c3a02afeaec436e35ae59b65fb879c7eb54a0a96 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Mon, 6 Dec 1993 20:55:51 -0500 Subject: [PATCH] (move_block_{to,from}_reg): Check HAVE_{load,store}_multiple value; don't just #idef the symbol. From-SVN: r6192 --- gcc/expr.c | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/gcc/expr.c b/gcc/expr.c index 4e2c712bfce..a6248be5049 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -1573,16 +1573,19 @@ move_block_to_reg (regno, x, nregs, mode) /* See if the machine can do this with a load multiple insn. */ #ifdef HAVE_load_multiple - last = get_last_insn (); - pat = gen_load_multiple (gen_rtx (REG, word_mode, regno), x, - GEN_INT (nregs)); - if (pat) + if (HAVE_load_multiple) { - emit_insn (pat); - return; + last = get_last_insn (); + pat = gen_load_multiple (gen_rtx (REG, word_mode, regno), x, + GEN_INT (nregs)); + if (pat) + { + emit_insn (pat); + return; + } + else + delete_insns_since (last); } - else - delete_insns_since (last); #endif for (i = 0; i < nregs; i++) @@ -1625,16 +1628,19 @@ move_block_from_reg (regno, x, nregs, size) /* See if the machine can do this with a store multiple insn. */ #ifdef HAVE_store_multiple - last = get_last_insn (); - pat = gen_store_multiple (x, gen_rtx (REG, word_mode, regno), - GEN_INT (nregs)); - if (pat) + if (HAVE_store_multiple) { - emit_insn (pat); - return; + last = get_last_insn (); + pat = gen_store_multiple (x, gen_rtx (REG, word_mode, regno), + GEN_INT (nregs)); + if (pat) + { + emit_insn (pat); + return; + } + else + delete_insns_since (last); } - else - delete_insns_since (last); #endif for (i = 0; i < nregs; i++) -- 2.30.2