Re: LLVM 16 (opaque pointers) - Mailing list pgsql-hackers

From Dmitry Dolgov
Subject Re: LLVM 16 (opaque pointers)
Date
Msg-id 20231013090621.jmnlnij5slwiwwym@erthalion.local
Whole thread Raw
In response to Re: LLVM 16 (opaque pointers)  (Andres Freund <andres@anarazel.de>)
Responses Re: LLVM 16 (opaque pointers)
Re: LLVM 16 (opaque pointers)
List pgsql-hackers
> 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.



pgsql-hackers by date:

Previous
From: Andrei Lepikhov
Date:
Subject: Re: Removing unneeded self joins
Next
From: Benoit Lobréau
Date:
Subject: Re: Questions about the new subscription parameter: password_required