OSDN Git Service

2010-04-08 Manuel López-Ibáñez <manu@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / jump.c
index a12d040..6ce989d 100644 (file)
@@ -48,7 +48,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "recog.h"
 #include "function.h"
 #include "expr.h"
-#include "real.h"
 #include "except.h"
 #include "diagnostic.h"
 #include "toplev.h"
@@ -233,7 +232,7 @@ mark_all_labels (rtx f)
                            && (rtx_equal_p (label_dest, XEXP (pc_src, 1))
                                || rtx_equal_p (label_dest,
                                                XEXP (pc_src, 2))))))
-                               
+
                  {
                    /* The CODE_LABEL referred to in the note must be the
                       CODE_LABEL in the LABEL_REF of the "set".  We can
@@ -1452,7 +1451,7 @@ redirect_jump (rtx jump, rtx nlabel, int delete_unused)
 }
 
 /* Fix up JUMP_LABEL and label ref counts after OLABEL has been replaced with
-   NLABEL in JUMP.  
+   NLABEL in JUMP.
    If DELETE_UNUSED is positive, delete related insn to OLABEL if its ref
    count has dropped to zero.  */
 void
@@ -1547,7 +1546,7 @@ invert_jump_1 (rtx jump, rtx nlabel)
     return 0;
   ok = invert_exp_1 (SET_SRC (x), jump);
   gcc_assert (ok);
-  
+
   if (num_validated_changes () == ochanges)
     return 0;
 
@@ -1695,6 +1694,10 @@ rtx_renumbered_equal_p (const_rtx x, const_rtx y)
   if (GET_MODE (x) != GET_MODE (y))
     return 0;
 
+  /* MEMs refering to different address space are not equivalent.  */
+  if (code == MEM && MEM_ADDR_SPACE (x) != MEM_ADDR_SPACE (y))
+    return 0;
+
   /* For commutative operations, the RTX match if the operand match in any
      order.  Also handle the simple binary and unary cases without a loop.  */
   if (targetm.commutative_p (x, UNKNOWN))