aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-02-21 06:51:56 +0000
committerRichard Stallman <rms@gnu.org>1993-02-21 06:51:56 +0000
commite365422628db9bfbd314fbdea7a380701c3d85de (patch)
treefa7b5c9ab4e8144395e1f3ff81e78232354d80b3 /gcc
parent261c4230db075ad59116a75be8961fbee10d60e9 (diff)
downloadgcc-e365422628db9bfbd314fbdea7a380701c3d85de.zip
gcc-e365422628db9bfbd314fbdea7a380701c3d85de.tar.gz
gcc-e365422628db9bfbd314fbdea7a380701c3d85de.tar.bz2
(gen_move_insn): Use emit_move_insn_1.
From-SVN: r3506
Diffstat (limited to 'gcc')
-rw-r--r--gcc/optabs.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 9c14cf2..087dfda 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -2557,7 +2557,8 @@ have_sub2_insn (mode)
return sub_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing;
}
-/* Generate the body of an instruction to copy Y into X. */
+/* Generate the body of an instruction to copy Y into X.
+ It may be a SEQUENCE, if one insn isn't enough. */
rtx
gen_move_insn (x, y)
@@ -2565,6 +2566,7 @@ gen_move_insn (x, y)
{
register enum machine_mode mode = GET_MODE (x);
enum insn_code insn_code;
+ rtx seq;
if (mode == VOIDmode)
mode = GET_MODE (y);
@@ -2628,9 +2630,14 @@ gen_move_insn (x, y)
}
insn_code = mov_optab->handlers[(int) tmode].insn_code;
+ return (GEN_FCN (insn_code) (x, y));
}
- return (GEN_FCN (insn_code) (x, y));
+ start_sequence ();
+ emit_move_insn_1 (x, y);
+ seq = gen_sequence ();
+ end_sequence ();
+ return seq;
}
/* Tables of patterns for extending one integer mode to another. */