Update to 4.8.2.
[platform/upstream/gcc48.git] / gcc / jump.c
index 38ed2d8..54d9860 100644 (file)
@@ -1,7 +1,5 @@
 /* Optimize jump instructions, for GNU compiler.
-   Copyright (C) 1987, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997
-   1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010,
-   2011 Free Software Foundation, Inc.
+   Copyright (C) 1987-2013 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -54,7 +52,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "diagnostic-core.h"
 #include "reload.h"
 #include "predict.h"
-#include "timevar.h"
 #include "tree-pass.h"
 #include "target.h"
 
@@ -147,6 +144,7 @@ struct rtl_opt_pass pass_cleanup_barriers =
  {
   RTL_PASS,
   "barriers",                           /* name */
+  OPTGROUP_NONE,                        /* optinfo_flags */
   NULL,                                 /* gate */
   cleanup_barriers,                     /* execute */
   NULL,                                 /* sub */
@@ -275,13 +273,13 @@ mark_all_labels (rtx f)
          /* In cfglayout mode, there may be non-insns between the
             basic blocks.  If those non-insns represent tablejump data,
             they contain label references that we must record.  */
-         for (insn = bb->il.rtl->header; insn; insn = NEXT_INSN (insn))
+         for (insn = BB_HEADER (bb); insn; insn = NEXT_INSN (insn))
            if (INSN_P (insn))
              {
                gcc_assert (JUMP_TABLE_DATA_P (insn));
                mark_jump_label (PATTERN (insn), insn, 0);
              }
-         for (insn = bb->il.rtl->footer; insn; insn = NEXT_INSN (insn))
+         for (insn = BB_FOOTER (bb); insn; insn = NEXT_INSN (insn))
            if (INSN_P (insn))
              {
                gcc_assert (JUMP_TABLE_DATA_P (insn));
@@ -1079,8 +1077,6 @@ mark_jump_label_1 (rtx x, rtx insn, bool in_mem, bool is_target)
     case PC:
     case CC0:
     case REG:
-    case CONST_INT:
-    case CONST_DOUBLE:
     case CLOBBER:
     case CALL:
       return;
@@ -1754,8 +1750,7 @@ rtx_renumbered_equal_p (const_rtx x, const_rtx y)
     case CC0:
     case ADDR_VEC:
     case ADDR_DIFF_VEC:
-    case CONST_INT:
-    case CONST_DOUBLE:
+    CASE_CONST_UNIQUE:
       return 0;
 
     case LABEL_REF:
@@ -1784,7 +1779,7 @@ 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.  */
+  /* MEMs referring to different address space are not equivalent.  */
   if (code == MEM && MEM_ADDR_SPACE (x) != MEM_ADDR_SPACE (y))
     return 0;
 
@@ -1819,8 +1814,7 @@ rtx_renumbered_equal_p (const_rtx x, const_rtx y)
          if (XINT (x, i) != XINT (y, i))
            {
              if (((code == ASM_OPERANDS && i == 6)
-                  || (code == ASM_INPUT && i == 1))
-                 && locator_eq (XINT (x, i), XINT (y, i)))
+                  || (code == ASM_INPUT && i == 1)))
                break;
              return 0;
            }
@@ -1873,7 +1867,8 @@ true_regnum (const_rtx x)
 {
   if (REG_P (x))
     {
-      if (REGNO (x) >= FIRST_PSEUDO_REGISTER && reg_renumber[REGNO (x)] >= 0)
+      if (REGNO (x) >= FIRST_PSEUDO_REGISTER
+         && (lra_in_progress || reg_renumber[REGNO (x)] >= 0))
        return reg_renumber[REGNO (x)];
       return REGNO (x);
     }
@@ -1885,7 +1880,8 @@ true_regnum (const_rtx x)
        {
          struct subreg_info info;
 
-         subreg_get_info (REGNO (SUBREG_REG (x)),
+         subreg_get_info (lra_in_progress
+                          ? (unsigned) base : REGNO (SUBREG_REG (x)),
                           GET_MODE (SUBREG_REG (x)),
                           SUBREG_BYTE (x), GET_MODE (x), &info);