summaryrefslogtreecommitdiff
path: root/gcc/sched-ebb.c
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@codesourcery.com>2011-07-15 13:20:10 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2011-07-15 13:20:10 +0000
commitaef0e7a8c2a0fc93efb26c35babc92b4d8614c45 (patch)
tree0bb9cddf8c35822d3cea46f03f9830031fecd1a6 /gcc/sched-ebb.c
parentce6e60b2a4e275812c7ffe2fb0f2adb98f4b6677 (diff)
revert: re PR rtl-optimization/11320 (Scheduler bug)
Revert 2003-07-10 Eric Botcazou <ebotcazou@libertysurf.fr> PR rtl-optimization/11320 * sched-int.h (struct deps) [reg_conditional_sets]: New field. (struct sched_info) [compute_jump_reg_dependencies]: New prototype. * sched-deps.c (sched_analyze_insn) [JUMP_INSN]: Update call to current_sched_info->compute_jump_reg_dependencies. Record which registers are used and which registers are set by the jump. Clear deps->reg_conditional_sets after a barrier. Set deps->reg_conditional_sets if the insn is a COND_EXEC. Clear deps->reg_conditional_sets if the insn is not a COND_EXEC. (init_deps): Initialize reg_conditional_sets. (free_deps): Clear reg_conditional_sets. * sched-ebb.c (compute_jump_reg_dependencies): New prototype. Mark registers live on entry of the fallthrough block and conditionally set as set by the jump. Mark registers live on entry of non-fallthrough blocks as used by the jump. * sched-rgn.c (compute_jump_reg_dependencies): New prototype. Mark new parameters as unused. From-SVN: r176315
Diffstat (limited to 'gcc/sched-ebb.c')
-rw-r--r--gcc/sched-ebb.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/gcc/sched-ebb.c b/gcc/sched-ebb.c
index 47ce3421b28..726c7c62511 100644
--- a/gcc/sched-ebb.c
+++ b/gcc/sched-ebb.c
@@ -257,28 +257,18 @@ ebb_contributes_to_priority (rtx next ATTRIBUTE_UNUSED,
return 1;
}
- /* INSN is a JUMP_INSN, COND_SET is the set of registers that are
- conditionally set before INSN. Store the set of registers that
- must be considered as used by this jump in USED and that of
- registers that must be considered as set in SET. */
+ /* INSN is a JUMP_INSN. Store the set of registers that
+ must be considered as used by this jump in USED. */
void
-ebb_compute_jump_reg_dependencies (rtx insn, regset cond_set, regset used,
- regset set)
+ebb_compute_jump_reg_dependencies (rtx insn, regset used)
{
basic_block b = BLOCK_FOR_INSN (insn);
edge e;
edge_iterator ei;
FOR_EACH_EDGE (e, ei, b->succs)
- if (e->flags & EDGE_FALLTHRU)
- /* The jump may be a by-product of a branch that has been merged
- in the main codepath after being conditionalized. Therefore
- it may guard the fallthrough block from using a value that has
- conditionally overwritten that of the main codepath. So we
- consider that it restores the value of the main codepath. */
- bitmap_and (set, df_get_live_in (e->dest), cond_set);
- else
+ if ((e->flags & EDGE_FALLTHRU) == 0)
bitmap_ior_into (used, df_get_live_in (e->dest));
}