df-scan.c (df_ref_chain_change_bb): Simplify.

* df-scan.c (df_ref_chain_change_bb): Simplify.
(df_insn_change_bb): Add new_bb argument.  Simplify.  Call
set_block_for_insn if there's any change.
* df.h ((df_insn_change_bb): Fix prototype.
* cfgrtl.c (update_bb_for_insn_chain): Pass bb to
df_insn_change_bb, don't call set_block_for_insn.
* emit-rtl.c (reorder_insns): Likewise.
* haifa-sched.c (move_insn): Likewise.

From-SVN: r132795
This commit is contained in:
Alexandre Oliva 2008-03-01 03:36:43 +00:00 committed by Alexandre Oliva
parent e065105898
commit 63642d5a8d
6 changed files with 37 additions and 50 deletions

View File

@ -1,3 +1,14 @@
2008-03-01 Alexandre Oliva <aoliva@redhat.com>
* df-scan.c (df_ref_chain_change_bb): Simplify.
(df_insn_change_bb): Add new_bb argument. Simplify. Call
set_block_for_insn if there's any change.
* df.h ((df_insn_change_bb): Fix prototype.
* cfgrtl.c (update_bb_for_insn_chain): Pass bb to
df_insn_change_bb, don't call set_block_for_insn.
* emit-rtl.c (reorder_insns): Likewise.
* haifa-sched.c (move_insn): Likewise.
2008-03-01 Alexandre Oliva <aoliva@redhat.com>
* rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.

View File

@ -1,6 +1,6 @@
/* Control flow graph manipulation code for GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
This file is part of GCC.
@ -477,13 +477,8 @@ update_bb_for_insn_chain (rtx begin, rtx end, basic_block bb)
end = NEXT_INSN (end);
for (insn = begin; insn != end; insn = NEXT_INSN (insn))
{
if (!BARRIER_P (insn))
{
set_block_for_insn (insn, bb);
df_insn_change_bb (insn);
}
}
if (!BARRIER_P (insn))
df_insn_change_bb (insn, bb);
}
/* Update BLOCK_FOR_INSN of insns in BB to BB,

View File

@ -1,6 +1,6 @@
/* Scanning of rtl for dataflow analysis.
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
Free Software Foundation, Inc.
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
2008 Free Software Foundation, Inc.
Originally contributed by Michael P. Hayes
(m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com)
Major rewrite contributed by Danny Berlin (dberlin@dberlin.org)
@ -1753,14 +1753,10 @@ df_maybe_reorganize_def_refs (enum df_ref_order order)
}
/* Change the BB of all refs in the ref chain to NEW_BB.
Assumes that all refs in the chain have the same BB.
If changed, return the original bb the chain belonged to
(or .
If no change, return NEW_BB.
If something's wrong, it will return NULL. */
/* Change the BB of all refs in the ref chain from OLD_BB to NEW_BB.
Assumes that all refs in the chain have the same BB. */
static basic_block
static void
df_ref_chain_change_bb (struct df_ref **ref_rec,
basic_block old_bb,
basic_block new_bb)
@ -1769,18 +1765,10 @@ df_ref_chain_change_bb (struct df_ref **ref_rec,
{
struct df_ref *ref = *ref_rec;
if (DF_REF_BB (ref) == new_bb)
return new_bb;
else
{
gcc_assert (old_bb == NULL || DF_REF_BB (ref) == old_bb);
old_bb = DF_REF_BB (ref);
DF_REF_BB (ref) = new_bb;
}
gcc_assert (DF_REF_BB (ref) == old_bb);
DF_REF_BB (ref) = new_bb;
ref_rec++;
}
return old_bb;
}
@ -1789,13 +1777,17 @@ df_ref_chain_change_bb (struct df_ref **ref_rec,
instructions from one block to another. */
void
df_insn_change_bb (rtx insn)
df_insn_change_bb (rtx insn, basic_block new_bb)
{
basic_block new_bb = BLOCK_FOR_INSN (insn);
basic_block old_bb = NULL;
basic_block old_bb = BLOCK_FOR_INSN (insn);
struct df_insn_info *insn_info;
unsigned int uid = INSN_UID (insn);
if (old_bb == new_bb)
return;
set_block_for_insn (insn, new_bb);
if (!df)
return;
@ -1814,17 +1806,9 @@ df_insn_change_bb (rtx insn)
if (!INSN_P (insn))
return;
old_bb = df_ref_chain_change_bb (insn_info->defs, old_bb, new_bb);
if (old_bb == new_bb)
return;
old_bb = df_ref_chain_change_bb (insn_info->uses, old_bb, new_bb);
if (old_bb == new_bb)
return;
old_bb = df_ref_chain_change_bb (insn_info->eq_uses, old_bb, new_bb);
if (old_bb == new_bb)
return;
df_ref_chain_change_bb (insn_info->defs, old_bb, new_bb);
df_ref_chain_change_bb (insn_info->uses, old_bb, new_bb);
df_ref_chain_change_bb (insn_info->eq_uses, old_bb, new_bb);
df_set_bb_dirty (new_bb);
if (old_bb)

View File

@ -1,6 +1,6 @@
/* Form lists of pseudo register references for autoinc optimization
for GNU compiler. This is part of flow optimization.
Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007
Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Originally contributed by Michael P. Hayes
(m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com)
@ -871,7 +871,7 @@ extern bool df_insn_rescan (rtx);
extern void df_insn_rescan_all (void);
extern void df_process_deferred_rescans (void);
extern void df_recompute_luids (basic_block);
extern void df_insn_change_bb (rtx);
extern void df_insn_change_bb (rtx, basic_block);
extern void df_maybe_reorganize_use_refs (enum df_ref_order);
extern void df_maybe_reorganize_def_refs (enum df_ref_order);
extern void df_ref_change_reg_with_loc (int, int, rtx);

View File

@ -3737,10 +3737,7 @@ reorder_insns (rtx from, rtx to, rtx after)
for (x = from; x != NEXT_INSN (to); x = NEXT_INSN (x))
if (!BARRIER_P (x))
{
set_block_for_insn (x, bb);
df_insn_change_bb (x);
}
df_insn_change_bb (x, bb);
}
}

View File

@ -1,6 +1,7 @@
/* Instruction scheduling pass.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by,
and currently maintained by, Jim Wilson (wilson@cygnus.com)
@ -1835,8 +1836,7 @@ move_insn (rtx insn)
gcc_assert (BB_END (bb) == last);
}
set_block_for_insn (insn, bb);
df_insn_change_bb (insn);
df_insn_change_bb (insn, bb);
/* Update BB_END, if needed. */
if (BB_END (bb) == last)