Commit b3d4e1b2 by Richard Stallman

(expand_shift, expand_set_flag):

Call protect_from_queue before convert_to_mode.

From-SVN: r1606
parent 06e40b26
...@@ -763,7 +763,6 @@ extract_bit_field (str_rtx, bitsize, bitnum, unsignedp, ...@@ -763,7 +763,6 @@ extract_bit_field (str_rtx, bitsize, bitnum, unsignedp,
if (tmode == VOIDmode) if (tmode == VOIDmode)
tmode = mode; tmode = mode;
while (GET_CODE (op0) == SUBREG) while (GET_CODE (op0) == SUBREG)
{ {
offset += SUBREG_WORD (op0); offset += SUBREG_WORD (op0);
...@@ -1581,8 +1580,9 @@ expand_shift (code, mode, shifted, amount, target, unsignedp) ...@@ -1581,8 +1580,9 @@ expand_shift (code, mode, shifted, amount, target, unsignedp)
|| (methods == OPTAB_WIDEN || (methods == OPTAB_WIDEN
&& GET_MODE_SIZE (mode) < GET_MODE_SIZE (output_mode))) && GET_MODE_SIZE (mode) < GET_MODE_SIZE (output_mode)))
{ {
/* Note convert_to_mode does protect_from_queue. */ rtx shifted1 = convert_to_mode (output_mode,
rtx shifted1 = convert_to_mode (output_mode, shifted, 1); protect_from_queue (shifted, 0),
1);
enum machine_mode length_mode enum machine_mode length_mode
= insn_operand_mode[(int) CODE_FOR_extzv][2]; = insn_operand_mode[(int) CODE_FOR_extzv][2];
enum machine_mode pos_mode enum machine_mode pos_mode
...@@ -1610,6 +1610,7 @@ expand_shift (code, mode, shifted, amount, target, unsignedp) ...@@ -1610,6 +1610,7 @@ expand_shift (code, mode, shifted, amount, target, unsignedp)
(target1, output_mode))) (target1, output_mode)))
target1 = gen_reg_rtx (output_mode); target1 = gen_reg_rtx (output_mode);
xop1 = protect_from_queue (xop1, 0);
xop1 = convert_to_mode (pos_mode, xop1, xop1 = convert_to_mode (pos_mode, xop1,
TREE_UNSIGNED (TREE_TYPE (amount))); TREE_UNSIGNED (TREE_TYPE (amount)));
...@@ -1626,6 +1627,7 @@ expand_shift (code, mode, shifted, amount, target, unsignedp) ...@@ -1626,6 +1627,7 @@ expand_shift (code, mode, shifted, amount, target, unsignedp)
else else
{ {
/* Now get the width in the proper mode. */ /* Now get the width in the proper mode. */
op1 = protect_from_queue (op1, 0);
width = convert_to_mode (length_mode, op1, width = convert_to_mode (length_mode, op1,
TREE_UNSIGNED (TREE_TYPE (amount))); TREE_UNSIGNED (TREE_TYPE (amount)));
...@@ -2709,6 +2711,7 @@ emit_store_flag (target, code, op0, op1, mode, unsignedp, normalizep) ...@@ -2709,6 +2711,7 @@ emit_store_flag (target, code, op0, op1, mode, unsignedp, normalizep)
first. */ first. */
if (GET_MODE_SIZE (target_mode) > GET_MODE_SIZE (mode)) if (GET_MODE_SIZE (target_mode) > GET_MODE_SIZE (mode))
{ {
op0 = protect_from_queue (op0, 0);
op0 = convert_to_mode (target_mode, op0, 0); op0 = convert_to_mode (target_mode, op0, 0);
mode = target_mode; mode = target_mode;
} }
...@@ -2943,6 +2946,7 @@ emit_store_flag (target, code, op0, op1, mode, unsignedp, normalizep) ...@@ -2943,6 +2946,7 @@ emit_store_flag (target, code, op0, op1, mode, unsignedp, normalizep)
else if (GET_MODE_SIZE (mode) < UNITS_PER_WORD) else if (GET_MODE_SIZE (mode) < UNITS_PER_WORD)
{ {
mode = word_mode; mode = word_mode;
op0 = protect_from_queue (op0, 0);
tem = convert_to_mode (mode, op0, 1); tem = convert_to_mode (mode, op0, 1);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment