diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2009-02-26 19:48:34 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2009-02-26 19:48:34 +0100 |
commit | 9dadeeb83c129bc14c56b09bb385f73b36119881 (patch) | |
tree | d3db04a04ef8f2f601ab4012f0f8f02ffcfcfd54 | |
parent | 489ec4e3bd232d184845a5b71322dfe18e65529f (diff) | |
download | gcc-9dadeeb83c129bc14c56b09bb385f73b36119881.zip gcc-9dadeeb83c129bc14c56b09bb385f73b36119881.tar.gz gcc-9dadeeb83c129bc14c56b09bb385f73b36119881.tar.bz2 |
alpha.h (alpha_expand_mov): Return false if force_const_mem returns NULL_RTX.
* config/alpha/alpha.h (alpha_expand_mov): Return false if
force_const_mem returns NULL_RTX.
From-SVN: r144450
-rw-r--r-- | gcc/ChangeLog | 21 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 16 |
2 files changed, 23 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 27fc748..9aef9cb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +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-25 H.J. Lu <hongjiu.lu@intel.com> PR rtl-optimization/39241 @@ -36,8 +41,7 @@ 2009-02-24 Sandra Loosemore <sandra@codesourcery.com> * doc/invoke.texi (Link Options): Document an easier way to pass - options that take arguments to the GNU linker using -Xlinker and - -Wl. + options that take arguments to the GNU linker using -Xlinker and -Wl. 2009-02-24 Steve Ellcey <sje@cup.hp.com> @@ -74,20 +78,21 @@ 2009-02-23 Jan Hubicka <jh@suse.cz> PR c/12245 - * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when resizing. + * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when + resizing. 2009-02-23 Jan Hubicka <jh@suse.cz> - PR tree-optimization/37709 - * tree.c (block_ultimate_origin): Move here from dwarf2out. - * tree.h (block_ultimate_origin): Declare. - * dwarf2out.c (block_ultimate_origin): Move to tree.c + PR tree-optimization/37709 + * tree.c (block_ultimate_origin): Move here from dwarf2out. + * tree.h (block_ultimate_origin): Declare. + * dwarf2out.c (block_ultimate_origin): Move to tree.c * tree-ssa-live.c (remove_unused_scope_block_p): Eliminate blocks containig no instructions nor live variables nor nested blocks. (dump_scope_block): New function. (remove_unused_locals): Enable removal of dead blocks by default; - enable dumping at TDF_DETAILS. + enable dumping at TDF_DETAILS. 2009-02-21 H.J. Lu <hongjiu.lu@intel.com> diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 7bafb0a..0675916 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; } |