aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-03-12 23:07:38 +0000
committerRichard Stallman <rms@gnu.org>1993-03-12 23:07:38 +0000
commitc841050eed727c249d687a85c2e991d971cd1ff3 (patch)
tree976651febc8290a711608307a9daa565342d269b
parentdac29d65d8e956f99b5e35f432e9e2baaa396aee (diff)
downloadgcc-c841050eed727c249d687a85c2e991d971cd1ff3.zip
gcc-c841050eed727c249d687a85c2e991d971cd1ff3.tar.gz
gcc-c841050eed727c249d687a85c2e991d971cd1ff3.tar.bz2
(emit_push_insn): Handle failure of gen_movstr...
From-SVN: r3721
-rw-r--r--gcc/expr.c40
1 files changed, 28 insertions, 12 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 3ff238c..e54eeb9 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -1911,9 +1911,13 @@ emit_push_insn (x, mode, type, size, align, partial, reg, extra,
&& ((unsigned) INTVAL (size)
< (1 << (GET_MODE_BITSIZE (QImode) - 1))))
{
- emit_insn (gen_movstrqi (gen_rtx (MEM, BLKmode, temp),
- xinner, size, GEN_INT (align)));
- goto ret;
+ rtx pat = gen_movstrqi (gen_rtx (MEM, BLKmode, temp),
+ xinner, size, GEN_INT (align));
+ if (pat != 0)
+ {
+ emit_insn (pat);
+ goto ret;
+ }
}
#endif
#ifdef HAVE_movstrhi
@@ -1922,25 +1926,37 @@ emit_push_insn (x, mode, type, size, align, partial, reg, extra,
&& ((unsigned) INTVAL (size)
< (1 << (GET_MODE_BITSIZE (HImode) - 1))))
{
- emit_insn (gen_movstrhi (gen_rtx (MEM, BLKmode, temp),
- xinner, size, GEN_INT (align)));
- goto ret;
+ rtx pat = gen_movstrhi (gen_rtx (MEM, BLKmode, temp),
+ xinner, size, GEN_INT (align));
+ if (pat != 0)
+ {
+ emit_insn (pat);
+ goto ret;
+ }
}
#endif
#ifdef HAVE_movstrsi
if (HAVE_movstrsi)
{
- emit_insn (gen_movstrsi (gen_rtx (MEM, BLKmode, temp),
- xinner, size, GEN_INT (align)));
- goto ret;
+ rtx pat = gen_movstrsi (gen_rtx (MEM, BLKmode, temp),
+ xinner, size, GEN_INT (align));
+ if (pat != 0)
+ {
+ emit_insn (pat);
+ goto ret;
+ }
}
#endif
#ifdef HAVE_movstrdi
if (HAVE_movstrdi)
{
- emit_insn (gen_movstrdi (gen_rtx (MEM, BLKmode, temp),
- xinner, size, GEN_INT (align)));
- goto ret;
+ rtx pat = gen_movstrdi (gen_rtx (MEM, BLKmode, temp),
+ xinner, size, GEN_INT (align));
+ if (pat != 0)
+ {
+ emit_insn (pat);
+ goto ret;
+ }
}
#endif