From 9dadeeb83c129bc14c56b09bb385f73b36119881 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Thu, 26 Feb 2009 19:48:34 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 21 +++++++++++++-------- gcc/config/alpha/alpha.c | 16 ++++++++++------ 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 27fc7483bdf..9aef9cb0b89 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-02-26 Uros Bizjak + + * config/alpha/alpha.h (alpha_expand_mov): Return false if + force_const_mem returns NULL_RTX. + 2009-02-25 H.J. Lu PR rtl-optimization/39241 @@ -36,8 +41,7 @@ 2009-02-24 Sandra Loosemore * 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 @@ -74,20 +78,21 @@ 2009-02-23 Jan Hubicka 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 - 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 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; }