summaryrefslogtreecommitdiff
path: root/gcc/reorg.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-19 19:53:17 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-19 19:53:17 +0000
commitf8cacb57679a65b178048215cd4fc0d4e9ebd1a5 (patch)
tree333e24b7a9ae466ce4ae322302b06179b4f1e78c /gcc/reorg.c
parent5ae82b91788514fcd2644d63da436b92ba4fc4c2 (diff)
downloadgcc-f8cacb57679a65b178048215cd4fc0d4e9ebd1a5.tar.gz
* jump.c (redirect_jump): Add delete_unused argument. Don't
remove labels and code following when LABEL_NUSES goes to zero. (invert_jump): Likewise. (jump_optimize_1): Fix redirect/invert arguments. (do_cross_jump, thread_jumps): Likewise. * flow.c (split_edge): Likewise. * reorg.c (optimize_skip): Likewise. (reorg_redirect_jump, relax_delay_slots, dbr_schedule): Likewise. * profile.c (instrument_arcs): Likewise. * loop.c (find_and_verify_loops): Likewise. Fix indentation. * rtl.h: Update prototypes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34033 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reorg.c')
-rw-r--r--gcc/reorg.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c
index cce40c0d7cf..e5c58873aa2 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -733,7 +733,7 @@ optimize_skip (insn)
{
if (eligible_for_annul_false (insn, 0, trial, flags))
{
- if (invert_jump (insn, JUMP_LABEL (insn)))
+ if (invert_jump (insn, JUMP_LABEL (insn), 1))
INSN_FROM_TARGET_P (trial) = 1;
else if (! eligible_for_annul_true (insn, 0, trial, flags))
return 0;
@@ -1888,7 +1888,7 @@ reorg_redirect_jump (jump, nlabel)
rtx nlabel;
{
incr_ticks_for_insn (jump);
- return redirect_jump (jump, nlabel);
+ return redirect_jump (jump, nlabel, 1);
}
/* Called when INSN is being moved forward into a delay slot of DELAYED_INSN.
@@ -3087,7 +3087,7 @@ relax_delay_slots (first)
if (label)
++LABEL_NUSES (label);
- if (invert_jump (insn, label))
+ if (invert_jump (insn, label, 1))
{
delete_insn (next);
next = insn;
@@ -3123,16 +3123,8 @@ relax_delay_slots (first)
rtx other_target = JUMP_LABEL (other);
target_label = JUMP_LABEL (insn);
- /* Increment the count of OTHER_TARGET, so it doesn't get deleted
- as we move the label. */
- if (other_target)
- ++LABEL_NUSES (other_target);
-
- if (invert_jump (other, target_label))
+ if (invert_jump (other, target_label, 0))
reorg_redirect_jump (insn, other_target);
-
- if (other_target)
- --LABEL_NUSES (other_target);
}
/* Now look only at cases where we have filled a delay slot. */
@@ -3338,7 +3330,7 @@ relax_delay_slots (first)
if (old_label)
++LABEL_NUSES (old_label);
- if (invert_jump (delay_insn, label))
+ if (invert_jump (delay_insn, label, 1))
{
int i;
@@ -3570,7 +3562,7 @@ dbr_schedule (first, file)
&& JUMP_LABEL (insn) != 0
&& ((target = prev_label (next_active_insn (JUMP_LABEL (insn))))
!= JUMP_LABEL (insn)))
- redirect_jump (insn, target);
+ redirect_jump (insn, target, 1);
}
init_resource_info (epilogue_insn);