On Tue, Jun 15, 2021 at 8:01 AM Trevor Saunders <tbsau...@tbsaunde.org> wrote: > > This ensures callers take ownership of the returned vector. > > Signed-off-by: Trevor Saunders <tbsau...@tbsaunde.org> > > bootstrapped and regtested on x86_64-linux-gnu, ok?
OK. > gcc/ChangeLog: > > * cfgloop.h (get_loop_hot_path): Return auto_vec<basic_block>. > * cfgloopanal.c (get_loop_hot_path): Likewise. > * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Likewise. > --- > gcc/cfgloop.h | 2 +- > gcc/cfgloopanal.c | 2 +- > gcc/tree-ssa-loop-ivcanon.c | 5 ++--- > 3 files changed, 4 insertions(+), 5 deletions(-) > > diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h > index 113241da130..5e699276c88 100644 > --- a/gcc/cfgloop.h > +++ b/gcc/cfgloop.h > @@ -840,7 +840,7 @@ enum > > extern void doloop_optimize_loops (void); > extern void move_loop_invariants (void); > -extern vec<basic_block> get_loop_hot_path (const class loop *loop); > +extern auto_vec<basic_block> get_loop_hot_path (const class loop *loop); > > /* Returns the outermost loop of the loop nest that contains LOOP.*/ > static inline class loop * > diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c > index d0eade3dd34..e7b7ae2163e 100644 > --- a/gcc/cfgloopanal.c > +++ b/gcc/cfgloopanal.c > @@ -500,7 +500,7 @@ single_likely_exit (class loop *loop, vec<edge> exits) > order against direction of edges from latch. Specially, if > header != latch, latch is the 1-st block. */ > > -vec<basic_block> > +auto_vec<basic_block> > get_loop_hot_path (const class loop *loop) > { > basic_block bb = loop->header; > diff --git a/gcc/tree-ssa-loop-ivcanon.c b/gcc/tree-ssa-loop-ivcanon.c > index 3f9e9d0869f..b1971f83544 100644 > --- a/gcc/tree-ssa-loop-ivcanon.c > +++ b/gcc/tree-ssa-loop-ivcanon.c > @@ -218,7 +218,7 @@ tree_estimate_loop_size (class loop *loop, edge exit, > edge edge_to_cancel, > gimple_stmt_iterator gsi; > unsigned int i; > bool after_exit; > - vec<basic_block> path = get_loop_hot_path (loop); > + auto_vec<basic_block> path = get_loop_hot_path (loop); > > size->overall = 0; > size->eliminated_by_peeling = 0; > @@ -342,7 +342,6 @@ tree_estimate_loop_size (class loop *loop, edge exit, > edge edge_to_cancel, > - size->last_iteration_eliminated_by_peeling) > upper_bound) > { > free (body); > - path.release (); > return true; > } > } > @@ -379,7 +378,7 @@ tree_estimate_loop_size (class loop *loop, edge exit, > edge edge_to_cancel, > size->num_branches_on_hot_path++; > } > } > - path.release (); > + > if (dump_file && (dump_flags & TDF_DETAILS)) > fprintf (dump_file, "size: %i-%i, last_iteration: %i-%i\n", > size->overall, > size->eliminated_by_peeling, size->last_iteration, > -- > 2.20.1 >