aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgrtl.c
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2014-05-19 06:49:58 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2014-05-19 06:49:58 +0000
commit339ba33b4f6f90b30f41705cfc71e1ec2b81ac27 (patch)
tree17c4d542445096d484b3cb4f6aa83da151b3ee6b /gcc/cfgrtl.c
parenta65d5b87d1af187a2811c36a3c632cd168336d42 (diff)
downloadgcc-339ba33b4f6f90b30f41705cfc71e1ec2b81ac27.zip
gcc-339ba33b4f6f90b30f41705cfc71e1ec2b81ac27.tar.gz
gcc-339ba33b4f6f90b30f41705cfc71e1ec2b81ac27.tar.bz2
reg-notes.def (CROSSING_JUMP): Likewise.
gcc/ * reg-notes.def (CROSSING_JUMP): Likewise. * rtl.h (rtx_def): Update comment for jump flag. (CROSSING_JUMP_P): Define. * cfgcleanup.c (try_forward_edges, try_optimize_cfg): Use it instead of a REG_CROSSING_JUMP note. * cfghooks.c (tidy_fallthru_edges): Likewise. * cfgrtl.c (fixup_partition_crossing, rtl_verify_edges): Likewise. * emit-rtl.c (try_split): Likewise. * haifa-sched.c (sched_create_recovery_edges): Likewise. * ifcvt.c (find_if_case_1, find_if_case_2): Likewise. * jump.c (redirect_jump_2): Likewise. * reorg.c (follow_jumps, fill_slots_from_thread): Likewise. (relax_delay_slots): Likewise. * config/arc/arc.md (jump_i, cbranchsi4_scratch, *bbit): Likewise. (bbit_di): Likewise. * config/arc/arc.c (arc_reorg, arc_can_follow_jump): Likewise. * config/sh/sh.md (jump_compact): Likewise. * bb-reorder.c (rotate_loop): Likewise. (pass_duplicate_computed_gotos::execute): Likewise. (add_reg_crossing_jump_notes): Rename to... (update_crossing_jump_flags): ...this. (pass_partition_blocks::execute): Update accordingly. From-SVN: r210603
Diffstat (limited to 'gcc/cfgrtl.c')
-rw-r--r--gcc/cfgrtl.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 51dbb9e..eb25e89 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -1325,8 +1325,6 @@ redirect_branch_edge (edge e, basic_block target)
static void
fixup_partition_crossing (edge e)
{
- rtx note;
-
if (e->src == ENTRY_BLOCK_PTR_FOR_FN (cfun) || e->dest
== EXIT_BLOCK_PTR_FOR_FN (cfun))
return;
@@ -1337,10 +1335,9 @@ fixup_partition_crossing (edge e)
if (BB_PARTITION (e->src) != BB_PARTITION (e->dest))
{
e->flags |= EDGE_CROSSING;
- note = find_reg_note (BB_END (e->src), REG_CROSSING_JUMP, NULL_RTX);
if (JUMP_P (BB_END (e->src))
- && !note)
- add_reg_note (BB_END (e->src), REG_CROSSING_JUMP, NULL_RTX);
+ && !CROSSING_JUMP_P (BB_END (e->src)))
+ CROSSING_JUMP_P (BB_END (e->src)) = 1;
}
else if (BB_PARTITION (e->src) == BB_PARTITION (e->dest))
{
@@ -1348,8 +1345,7 @@ fixup_partition_crossing (edge e)
/* Remove the section crossing note from jump at end of
src if it exists, and if no other successors are
still crossing. */
- note = find_reg_note (BB_END (e->src), REG_CROSSING_JUMP, NULL_RTX);
- if (note)
+ if (JUMP_P (BB_END (e->src)) && CROSSING_JUMP_P (BB_END (e->src)))
{
bool has_crossing_succ = false;
edge e2;
@@ -1361,7 +1357,7 @@ fixup_partition_crossing (edge e)
break;
}
if (!has_crossing_succ)
- remove_note (BB_END (e->src), note);
+ CROSSING_JUMP_P (BB_END (e->src)) = 0;
}
}
}
@@ -2460,8 +2456,7 @@ rtl_verify_edges (void)
e->src->index);
err = 1;
}
- if (JUMP_P (BB_END (bb))
- && !find_reg_note (BB_END (bb), REG_CROSSING_JUMP, NULL_RTX))
+ if (JUMP_P (BB_END (bb)) && !CROSSING_JUMP_P (BB_END (bb)))
{
error ("No region crossing jump at section boundary in bb %i",
bb->index);
@@ -2496,7 +2491,8 @@ rtl_verify_edges (void)
}
if (!has_crossing_edge
- && find_reg_note (BB_END (bb), REG_CROSSING_JUMP, NULL_RTX))
+ && JUMP_P (BB_END (bb))
+ && CROSSING_JUMP_P (BB_END (bb)))
{
print_rtl_with_bb (stderr, get_insns (), TDF_RTL | TDF_BLOCKS | TDF_DETAILS);
error ("Region crossing jump across same section in bb %i",