From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com [IPv6:2a00:1450:4864:20::52f]) by sourceware.org (Postfix) with ESMTPS id A06B23987C18 for ; Tue, 15 Jun 2021 06:49:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A06B23987C18 Received: by mail-ed1-x52f.google.com with SMTP id b11so49605722edy.4 for ; Mon, 14 Jun 2021 23:49:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=zRsoDcYgyJFMCzPAOBtIMm2YGBUQoBmchFLJ6XsLE6c=; b=jVJJP/4ixlJ9J8zFWtpzrWfquDe09b0hY+1KlsMdBKdJRMC6qaMpnFpDtcVW4PFbPJ rWLuukiNqBGoost0o7isSbOmohBBr0aPQ7PLCnQtnYx/++tV9Zq7iLYJTkGrPgxqSGIC TNrEdnJPxORWiNeUIr6scE8caLlcEcUzkPctiFpiA1waPbmHKheg95KWK3L6ZvuxA8bf Lo2ZrDozX1idsyyYgvGHCLajWYsYVeyuJYv2OtyGXb9bU4v2gGaJezqNtAnRyR9VeWjn OPQwU3QzfQ0ndExmoqbeXt/AnakrBOq8olXM8YSj/OfD7Jzxq5qe8pmwccyH363QoNrp 2PPw== X-Gm-Message-State: AOAM533KS+WMIxCHoNpPz5W3z7IzEcJRbbR4b91o5ULZzvhKO5OBFrcA 3P7fXD13O1jhWLrOTdvs3NLlNlPhrU8PE1P10Go= X-Google-Smtp-Source: ABdhPJymjvKNmLqrgbTXirFRjlx/17KLloaNXh/6icwsnzGbRMYbP+ZXqocwUs/yeZrQNG1q/VVzTHlzS/FbYHRfvtw= X-Received: by 2002:a05:6402:175b:: with SMTP id v27mr21373144edx.61.1623739774698; Mon, 14 Jun 2021 23:49:34 -0700 (PDT) MIME-Version: 1.0 References: <20210615055922.27205-1-tbsaunde@tbsaunde.org> <20210615055922.27205-5-tbsaunde@tbsaunde.org> In-Reply-To: <20210615055922.27205-5-tbsaunde@tbsaunde.org> From: Richard Biener Date: Tue, 15 Jun 2021 08:49:23 +0200 Message-ID: Subject: Re: [PATCH 5/6] make get_domminated_by_region return a auto_vec To: Trevor Saunders Cc: GCC Patches Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 06:49:37 -0000 On Tue, Jun 15, 2021 at 8:02 AM Trevor Saunders wrote: > > This makes it clear the caller owns the vector, and ensures it is cleaned up. > > Signed-off-by: Trevor Saunders > > bootstrapped and regtested on x86_64-linux-gnu, ok? OK. Btw, are "standard API" returns places we can use 'auto'? That would avoid excessive indent for - dom_bbs = get_dominated_by_region (CDI_DOMINATORS, - bbs.address (), - bbs.length ()); + auto_vec dom_bbs = get_dominated_by_region (CDI_DOMINATORS, + bbs.address (), + bbs.length ()); and just uses auto dom_bbs = get_dominated_by_region (... Not asking you to do this, just a question for the audience. Thanks, Richard. > gcc/ChangeLog: > > * dominance.c (get_dominated_by_region): Return auto_vec. > * 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. > --- > 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 > +auto_vec > get_dominated_by_region (enum cdi_direction dir, basic_block *region, > unsigned n_region) > { > unsigned i; > basic_block dom; > - vec doms = vNULL; > + auto_vec 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 get_dominated_by (enum cdi_direction, basic_block); > -extern vec get_dominated_by_region (enum cdi_direction, > +extern auto_vec get_dominated_by_region (enum cdi_direction, > basic_block *, > unsigned); > extern vec 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 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 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 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 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 bbs, dom_bbs; > + vec 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 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) > { > -- > 2.20.1 >