public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r12-1557] make get_domminated_by_region return a auto_vec
@ 2021-06-17 9:12 Trevor Saunders
0 siblings, 0 replies; only message in thread
From: Trevor Saunders @ 2021-06-17 9:12 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:4541b5ec16178a1954066c54cd9220b7c8f74309
commit r12-1557-g4541b5ec16178a1954066c54cd9220b7c8f74309
Author: Trevor Saunders <tbsaunde@tbsaunde.org>
Date: Sat Jun 12 14:18:05 2021 -0400
make get_domminated_by_region return a auto_vec
This makes it clear the caller owns the vector, and ensures it is cleaned up.
Signed-off-by: Trevor Saunders <tbsaunde@tbsaunde.org>
gcc/ChangeLog:
* dominance.c (get_dominated_by_region): Return auto_vec<basic_block>.
* dominance.h (get_dominated_by_region): Likewise.
* tree-cfg.c (gimple_duplicate_sese_region): Adjust.
(gimple_duplicate_sese_tail): Likewise.
(move_sese_region_to_fn): Likewise.
Diff:
---
gcc/dominance.c | 4 ++--
gcc/dominance.h | 2 +-
gcc/tree-cfg.c | 18 +++++++-----------
3 files changed, 10 insertions(+), 14 deletions(-)
diff --git a/gcc/dominance.c b/gcc/dominance.c
index 0e464cb7282..4943102ff1d 100644
--- a/gcc/dominance.c
+++ b/gcc/dominance.c
@@ -906,13 +906,13 @@ get_dominated_by (enum cdi_direction dir, basic_block bb)
direction DIR) by some block between N_REGION ones stored in REGION,
except for blocks in the REGION itself. */
-vec<basic_block>
+auto_vec<basic_block>
get_dominated_by_region (enum cdi_direction dir, basic_block *region,
unsigned n_region)
{
unsigned i;
basic_block dom;
- vec<basic_block> doms = vNULL;
+ auto_vec<basic_block> doms;
for (i = 0; i < n_region; i++)
region[i]->flags |= BB_DUPLICATED;
diff --git a/gcc/dominance.h b/gcc/dominance.h
index 515a369aacf..c74ad297c6a 100644
--- a/gcc/dominance.h
+++ b/gcc/dominance.h
@@ -47,7 +47,7 @@ extern basic_block get_immediate_dominator (enum cdi_direction, basic_block);
extern void set_immediate_dominator (enum cdi_direction, basic_block,
basic_block);
extern auto_vec<basic_block> get_dominated_by (enum cdi_direction, basic_block);
-extern vec<basic_block> get_dominated_by_region (enum cdi_direction,
+extern auto_vec<basic_block> get_dominated_by_region (enum cdi_direction,
basic_block *,
unsigned);
extern vec<basic_block> get_dominated_to_depth (enum cdi_direction,
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 6bdd1a561fd..c9403deed19 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -6495,7 +6495,6 @@ gimple_duplicate_sese_region (edge entry, edge exit,
bool free_region_copy = false, copying_header = false;
class loop *loop = entry->dest->loop_father;
edge exit_copy;
- vec<basic_block> doms = vNULL;
edge redirected;
profile_count total_count = profile_count::uninitialized ();
profile_count entry_count = profile_count::uninitialized ();
@@ -6549,9 +6548,9 @@ gimple_duplicate_sese_region (edge entry, edge exit,
/* Record blocks outside the region that are dominated by something
inside. */
+ auto_vec<basic_block> doms;
if (update_dominance)
{
- doms.create (0);
doms = get_dominated_by_region (CDI_DOMINATORS, region, n_region);
}
@@ -6596,7 +6595,6 @@ gimple_duplicate_sese_region (edge entry, edge exit,
set_immediate_dominator (CDI_DOMINATORS, entry->dest, entry->src);
doms.safe_push (get_bb_original (entry->dest));
iterate_fix_dominators (CDI_DOMINATORS, doms, false);
- doms.release ();
}
/* Add the other PHI node arguments. */
@@ -6662,7 +6660,6 @@ gimple_duplicate_sese_tail (edge entry, edge exit,
class loop *loop = exit->dest->loop_father;
class loop *orig_loop = entry->dest->loop_father;
basic_block switch_bb, entry_bb, nentry_bb;
- vec<basic_block> doms;
profile_count total_count = profile_count::uninitialized (),
exit_count = profile_count::uninitialized ();
edge exits[2], nexits[2], e;
@@ -6705,7 +6702,8 @@ gimple_duplicate_sese_tail (edge entry, edge exit,
/* Record blocks outside the region that are dominated by something
inside. */
- doms = get_dominated_by_region (CDI_DOMINATORS, region, n_region);
+ auto_vec<basic_block> doms = get_dominated_by_region (CDI_DOMINATORS, region,
+ n_region);
total_count = exit->src->count;
exit_count = exit->count ();
@@ -6785,7 +6783,6 @@ gimple_duplicate_sese_tail (edge entry, edge exit,
/* Anything that is outside of the region, but was dominated by something
inside needs to update dominance info. */
iterate_fix_dominators (CDI_DOMINATORS, doms, false);
- doms.release ();
/* Update the SSA web. */
update_ssa (TODO_update_ssa);
@@ -7567,7 +7564,7 @@ basic_block
move_sese_region_to_fn (struct function *dest_cfun, basic_block entry_bb,
basic_block exit_bb, tree orig_block)
{
- vec<basic_block> bbs, dom_bbs;
+ vec<basic_block> bbs;
basic_block dom_entry = get_immediate_dominator (CDI_DOMINATORS, entry_bb);
basic_block after, bb, *entry_pred, *exit_succ, abb;
struct function *saved_cfun = cfun;
@@ -7599,9 +7596,9 @@ move_sese_region_to_fn (struct function *dest_cfun, basic_block entry_bb,
/* The blocks that used to be dominated by something in BBS will now be
dominated by the new block. */
- dom_bbs = get_dominated_by_region (CDI_DOMINATORS,
- bbs.address (),
- bbs.length ());
+ auto_vec<basic_block> dom_bbs = get_dominated_by_region (CDI_DOMINATORS,
+ bbs.address (),
+ bbs.length ());
/* Detach ENTRY_BB and EXIT_BB from CFUN->CFG. We need to remember
the predecessor edges to ENTRY_BB and the successor edges to
@@ -7937,7 +7934,6 @@ move_sese_region_to_fn (struct function *dest_cfun, basic_block entry_bb,
set_immediate_dominator (CDI_DOMINATORS, bb, dom_entry);
FOR_EACH_VEC_ELT (dom_bbs, i, abb)
set_immediate_dominator (CDI_DOMINATORS, abb, bb);
- dom_bbs.release ();
if (exit_bb)
{
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-06-17 9:12 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-17 9:12 [gcc r12-1557] make get_domminated_by_region return a auto_vec Trevor Saunders
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).