> On Thu, Oct 12, 2023 at 04:31:20PM -0700, Andres Freund wrote:
> Hi,
>
> On 2023-10-11 21:59:50 +1300, Thomas Munro wrote:
> > +#else
> > +   LLVMPassBuilderOptionsRef options;
> > +   LLVMErrorRef err;
> > +   int                     compile_optlevel;
> > +   char       *passes;
> > +
> > +   if (context->base.flags & PGJIT_OPT3)
> > +           compile_optlevel = 3;
> > +   else
> > +           compile_optlevel = 0;
> > +
> > +   passes = 
> > psprintf("default<O%d>,mem2reg,function(no-op-function),no-op-module",
> > +                                     compile_optlevel);
>
> I don't think the "function(no-op-function),no-op-module" bit does something
> particularly useful?

Right, looks like leftovers after verifying which passes were actually
applied. My bad, could be removed.

> I also don't think we should add the mem2reg pass outside of -O0 - running it
> after a real optimization pipeline doesn't seem useful and might even make the
> code worse? mem2reg is included in default<O1> (and obviously also in O3).

My understanding was that while mem2reg is included everywhere above
-O0, this set of passes won't hurt. But yeah, if you say it could
degrade the final result, it's better to not do this. I'll update this
part.


Reply via email to