Commit 8f4e6caf by Richard Henderson Committed by Richard Henderson

re PR rtl-optimization/10315 ([powerpc] ICE: in extract_insn, at recog.c:2175)

        PR opt/10315
        * config/rs6000/rs6000.c (rs6000_emit_move): Only elide proper
        checks during reload; use validize_mem instead of adjust_address.

From-SVN: r66071
parent bb751e47
2003-04-25 Richard Henderson <rth@redhat.com>
PR opt/10315
* config/rs6000/rs6000.c (rs6000_emit_move): Only elide proper
checks during reload; use validize_mem instead of adjust_address.
2003-04-26 Ben Elliston <bje@wasabisystems.com> 2003-04-26 Ben Elliston <bje@wasabisystems.com>
* config/arm/arm.c (arm_adjust_cost): Correct logic that tests the * config/arm/arm.c (arm_adjust_cost): Correct logic that tests the
......
...@@ -2851,16 +2851,15 @@ rs6000_emit_move (dest, source, mode) ...@@ -2851,16 +2851,15 @@ rs6000_emit_move (dest, source, mode)
} }
} }
/* Handle the case where reload calls us with an invalid address; /* Handle the case where reload calls us with an invalid address. */
and the case of CONSTANT_P_RTX. */ if (reload_in_progress && mode == Pmode
if (!ALTIVEC_VECTOR_MODE (mode)
&& (! general_operand (operands[1], mode) && (! general_operand (operands[1], mode)
|| ! nonimmediate_operand (operands[0], mode) || ! nonimmediate_operand (operands[0], mode)))
|| GET_CODE (operands[1]) == CONSTANT_P_RTX)) goto emit_set;
{
emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1])); /* Handle the case of CONSTANT_P_RTX. */
return; if (GET_CODE (operands[1]) == CONSTANT_P_RTX)
} goto emit_set;
/* FIXME: In the long term, this switch statement should go away /* FIXME: In the long term, this switch statement should go away
and be replaced by a sequence of tests based on things like and be replaced by a sequence of tests based on things like
...@@ -3088,13 +3087,11 @@ rs6000_emit_move (dest, source, mode) ...@@ -3088,13 +3087,11 @@ rs6000_emit_move (dest, source, mode)
/* Above, we may have called force_const_mem which may have returned /* Above, we may have called force_const_mem which may have returned
an invalid address. If we can, fix this up; otherwise, reload will an invalid address. If we can, fix this up; otherwise, reload will
have to deal with it. */ have to deal with it. */
if (GET_CODE (operands[1]) == MEM if (GET_CODE (operands[1]) == MEM && ! reload_in_progress)
&& ! memory_address_p (mode, XEXP (operands[1], 0)) operands[1] = validize_mem (operands[1]);
&& ! reload_in_progress)
operands[1] = adjust_address (operands[1], mode, 0);
emit_set:
emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1])); emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1]));
return;
} }
/* Initialize a variable CUM of type CUMULATIVE_ARGS /* Initialize a variable CUM of type CUMULATIVE_ARGS
......
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