OSDN Git Service

* config/alpha/alpha.h (alpha_expand_mov): Return false if
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 Feb 2009 18:48:34 +0000 (18:48 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 Feb 2009 18:48:34 +0000 (18:48 +0000)
force_const_mem returns NULL_RTX.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@144450 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/alpha/alpha.c

index 27fc748..9aef9cb 100644 (file)
@@ -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>
 
 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>
 
index 7bafb0a..0675916 100644 (file)
@@ -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;
 }