summaryrefslogtreecommitdiff
path: root/gcc/config/alpha
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2009-02-26 18:48:34 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2009-02-26 18:48:34 +0000
commitf8fff44ed590f38a03e2aae50f834c2bca6867bd (patch)
treed3db04a04ef8f2f601ab4012f0f8f02ffcfcfd54 /gcc/config/alpha
parentdd9670112ee3485a64802def2d5a0c88249b16e4 (diff)
downloadgcc-f8fff44ed590f38a03e2aae50f834c2bca6867bd.tar.gz
* config/alpha/alpha.h (alpha_expand_mov): Return false if
force_const_mem returns NULL_RTX. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@144450 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/alpha')
-rw-r--r--gcc/config/alpha/alpha.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 7bafb0ae84b..0675916a230 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -2124,6 +2124,8 @@ alpha_split_const_mov (enum machine_mode mode, rtx *operands)
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))
@@ -2132,8 +2134,6 @@ alpha_expand_mov (enum machine_mode mode, rtx *operands)
/* 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)
{
@@ -2158,14 +2158,18 @@ alpha_expand_mov (enum machine_mode mode, rtx *operands)
}
/* 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;
}