diff options
author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-02-26 18:48:34 +0000 |
---|---|---|
committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-02-26 18:48:34 +0000 |
commit | f8fff44ed590f38a03e2aae50f834c2bca6867bd (patch) | |
tree | d3db04a04ef8f2f601ab4012f0f8f02ffcfcfd54 /gcc/config/alpha | |
parent | dd9670112ee3485a64802def2d5a0c88249b16e4 (diff) | |
download | gcc-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.c | 16 |
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; } |