aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-07-17 04:24:58 +0000
committerRichard Stallman <rms@gnu.org>1992-07-17 04:24:58 +0000
commit5d901c3182cedd5bfceba3ed4439345f4c06b678 (patch)
tree3fc95f8b7916836cd7d160c9bad191481e1a94d6 /gcc
parentb3d4e1b2a12a6a808ba480b063d5036b3ffe7379 (diff)
downloadgcc-5d901c3182cedd5bfceba3ed4439345f4c06b678.zip
gcc-5d901c3182cedd5bfceba3ed4439345f4c06b678.tar.gz
gcc-5d901c3182cedd5bfceba3ed4439345f4c06b678.tar.bz2
(convert_move): Don't call protect_from_queue.
(emit_block_move): Protect SIZE. From-SVN: r1607
Diffstat (limited to 'gcc')
-rw-r--r--gcc/expr.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index e0a6a80..e2c8197 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -829,7 +829,10 @@ convert_move (to, from, unsignedp)
Both X and MODE may be floating, or both integer.
UNSIGNEDP is nonzero if X is an unsigned value.
This can be done by referring to a part of X in place
- or by copying to a new temporary with conversion. */
+ or by copying to a new temporary with conversion.
+
+ This function *must not* call protect_from_queue
+ except when putting X into an insn (in which case convert_move does it). */
rtx
convert_to_mode (mode, x, unsignedp)
@@ -839,8 +842,6 @@ convert_to_mode (mode, x, unsignedp)
{
register rtx temp;
- x = protect_from_queue (x, 0);
-
if (mode == GET_MODE (x))
return x;
@@ -1118,6 +1119,7 @@ emit_block_move (x, y, size, align)
x = protect_from_queue (x, 1);
y = protect_from_queue (y, 0);
+ size = protect_from_queue (size, 0);
if (GET_CODE (x) != MEM)
abort ();
@@ -1847,6 +1849,9 @@ emit_library_call (va_alist)
val = convert_to_mode (DFmode, val), mode = DFmode;
#endif
+ /* There's no need to call protect_from_queue, because
+ either emit_move_insn or emit_push_insn will do that. */
+
/* Make sure it is a reasonable operand for a move or push insn. */
if (GET_CODE (val) != REG && GET_CODE (val) != MEM
&& ! (CONSTANT_P (val) && LEGITIMATE_CONSTANT_P (val)))