/* 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.
#include "diagnostic-core.h"
#include "reload.h"
#include "predict.h"
-#include "timevar.h"
#include "tree-pass.h"
#include "target.h"
{
RTL_PASS,
"barriers", /* name */
+ OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
cleanup_barriers, /* execute */
NULL, /* sub */
/* 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));
case PC:
case CC0:
case REG:
- case CONST_INT:
- case CONST_DOUBLE:
case CLOBBER:
case CALL:
return;
case CC0:
case ADDR_VEC:
case ADDR_DIFF_VEC:
- case CONST_INT:
- case CONST_DOUBLE:
+ CASE_CONST_UNIQUE:
return 0;
case LABEL_REF:
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;
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;
}
{
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);
}
{
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);