diff options
author | Richard Stallman <rms@gnu.org> | 1992-07-17 04:24:58 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-07-17 04:24:58 +0000 |
commit | 5d901c3182cedd5bfceba3ed4439345f4c06b678 (patch) | |
tree | 3fc95f8b7916836cd7d160c9bad191481e1a94d6 /gcc | |
parent | b3d4e1b2a12a6a808ba480b063d5036b3ffe7379 (diff) | |
download | gcc-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.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -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))) |