On Mon, Apr 24, 2023 at 10:23:06AM -0500, Peter Bergner wrote:
> On 4/19/23 3:00 PM, Segher Boessenkool wrote:
> > On Wed, Apr 19, 2023 at 11:23:07PM +0530, Ajit Agarwal wrote:
> >>    * common/config/rs6000/rs6000-common.cc: Add REE pass as a
> >>    default rs6000 target pass for O2 and above.
> > 
> > Why only for -O2?  Only when optimising at all makes sense, people use
> > -O0 only when they want to skip as many optimisations as possible, maybe
> > because of compilation time concerns, maybe to avoid an ICE or other
> > bug.  Isn't REE *always* a good thing, it never degrades code quality?
> > Or are there situations where it results in worse code?
> 
> I think this is a case of following what the other architectures are doing.
> Namely, x86, aarch64, riscv, sparc, alpha and h8300 all enable -free at
> -O2 and above, not -O1.  Not to say that is the best answer, but I think
> that is why we did the same.  I agree I don't think -free can produce
> worse code which makes using it with -O1 and above an option.  Maybe someone
> was worried about compile time???  Doesn't seem like an optimization like
> this would be too expensive though.

I thought that
  df_chain_add_problem (DF_UD_CHAIN + DF_DU_CHAIN);
is quite expensive (only other pass which does that is SMS pass) and
  df_mir_add_problem ();
as well (REE pass being the only user of that).  As -O1 is meant to scale
well on huge compiler generated functions, perhaps REE isn't appropriate
for those by default.

        Jakub

Reply via email to