This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH GCC][6/6]Restrict predcom using register pressure information


On Tue, 2018-05-29 at 17:04 +0100, Bin.Cheng wrote:
> On Fri, May 4, 2018 at 5:24 PM, Bin Cheng <Bin.Cheng@arm.com> wrote:
> > Hi,
> > This patch restricts predcom pass using register pressure
> > information.
> > In case of high register pressure, we now prune additional chains
> > as well
> > as disable unrolling in predcom.  In generally, I think this patch
> > set is
> > useful.
> > 
> > Bootstrap and test on x86_64 ongoing.  Any comments?
> 
> Simple update in line with changes in previous patch.
> 
> Thanks,
> bin
> > 
> > Thanks,
> > bin
> > 2018-04-27  Bin Cheng  <bin.cheng@arm.com>
> > 
> >         * tree-predcom.c (stor-layout.h, tree-ssa-live.h): Include.
> >         (REG_RELAX_RATIO, prune_chains): New.
> >         (tree_predictive_commoning_loop): Compute reg pressure
> > using class
> >         region.  Prune chains based on reg pressure.  Force to not
> > unroll
> >         if reg pressure is high.

[...snip...]

> @@ -3239,6 +3301,11 @@ tree_predictive_commoning_loop (struct loop *loop)
>    /* Try to combine the chains that are always worked with together.  */
>    try_combine_chains (loop, &chains);
>  
> +  region = new lr_region (loop, max_pressure, NULL, NULL, NULL);
> +  high_pressure_p = region->calculate_pressure ();
> +  delete region;
> +  prune_chains (&chains, max_pressure);
> +

Possibly a silly question, but why the new/delete of "region" here?
Couldn't this just be an on-stack object, with something like:

  lr_region region (loop, max_pressure, NULL, NULL, NULL);
  high_pressure_p = region.calculate_pressure ();
  prune_chains (&chains, max_pressure);

or:

  {
    lr_region region (loop, max_pressure, NULL, NULL, NULL);
    high_pressure_p = region.calculate_pressure ();
  }
  prune_chains (&chains, max_pressure);

if it's important to do the cleanup before prune_chains?

Dave


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]