OSDN Git Service

2009-01-29 Robert Millan <rmh@aybabtu.com>
[pf3gnuchains/gcc-fork.git] / gcc / jump.c
index 595363b..bacb7f4 100644 (file)
@@ -351,7 +351,7 @@ reversed_comparison_code_parts (enum rtx_code code, const_rtx arg0,
        return UNKNOWN;
 
       /* These CONST_CAST's are okay because prev_nonnote_insn just
-        returns it's argument and we assign it to a const_rtx
+        returns its argument and we assign it to a const_rtx
         variable.  */
       for (prev = prev_nonnote_insn (CONST_CAST_RTX(insn));
           prev != 0 && !LABEL_P (prev);
@@ -1552,12 +1552,22 @@ rtx_renumbered_equal_p (const_rtx x, const_rtx y)
 
          if (reg_renumber[reg_x] >= 0)
            {
+             if (!subreg_offset_representable_p (reg_renumber[reg_x],
+                                                 GET_MODE (SUBREG_REG (x)),
+                                                 byte_x,
+                                                 GET_MODE (x)))
+               return 0;
              reg_x = subreg_regno_offset (reg_renumber[reg_x],
                                           GET_MODE (SUBREG_REG (x)),
                                           byte_x,
                                           GET_MODE (x));
              byte_x = 0;
            }
+         else if (!subreg_offset_representable_p (reg_x,
+                                                  GET_MODE (SUBREG_REG (x)),
+                                                  byte_x,
+                                                  GET_MODE (x)))
+           return 0;
        }
       else
        {
@@ -1573,12 +1583,22 @@ rtx_renumbered_equal_p (const_rtx x, const_rtx y)
 
          if (reg_renumber[reg_y] >= 0)
            {
+             if (!subreg_offset_representable_p (reg_renumber[reg_y],
+                                                 GET_MODE (SUBREG_REG (y)),
+                                                 byte_y,
+                                                 GET_MODE (y)))
+               return 0;
              reg_y = subreg_regno_offset (reg_renumber[reg_y],
                                           GET_MODE (SUBREG_REG (y)),
                                           byte_y,
                                           GET_MODE (y));
              byte_y = 0;
            }
+         else if (!subreg_offset_representable_p (reg_y,
+                                                  GET_MODE (SUBREG_REG (y)),
+                                                  byte_y,
+                                                  GET_MODE (y)))
+           return 0;
        }
       else
        {