+2009-02-28 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline:
+ 2009-02-26 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/alpha/alpha.h (alpha_expand_mov): Return false if
+ force_const_mem returns NULL_RTX.
+
2009-02-26 Uros Bizjak <ubizjak@gmail.com>
Backport from mainline:
Backport from mainline
2009-02-05 Daniel Berlin <dberlin@dberlin.org>
- Richard Guenther <rguenther@suse.de>
+ Richard Guenther <rguenther@suse.de>
PR tree-optimization/39100
* tree-ssa-structalias.c (do_ds_constraint): Actually do what the
bool
alpha_expand_mov (enum machine_mode mode, rtx *operands)
{
+ rtx tmp;
+
/* If the output is not a register, the input must be. */
if (GET_CODE (operands[0]) == MEM
&& ! reg_or_0_operand (operands[1], mode))
/* Allow legitimize_address to perform some simplifications. */
if (mode == Pmode && symbolic_operand (operands[1], mode))
{
- rtx tmp;
-
tmp = alpha_legitimize_address (operands[1], operands[0], mode);
if (tmp)
{
}
/* Otherwise we've nothing left but to drop the thing to memory. */
- operands[1] = force_const_mem (mode, operands[1]);
+ tmp = force_const_mem (mode, operands[1]);
+
+ if (tmp == NULL_RTX)
+ return false;
+
if (reload_in_progress)
{
- emit_move_insn (operands[0], XEXP (operands[1], 0));
- operands[1] = replace_equiv_address (operands[1], operands[0]);
+ emit_move_insn (operands[0], XEXP (tmp, 0));
+ operands[1] = replace_equiv_address (tmp, operands[0]);
}
else
- operands[1] = validize_mem (operands[1]);
+ operands[1] = validize_mem (tmp);
return false;
}