| From: | Pierre Ducroquet <p(dot)psql(at)pinaraf(dot)info> | 
|---|---|
| To: | pgsql-hackers(at)lists(dot)postgresql(dot)org | 
| Subject: | Re: JIT compiling with LLVM v10.1 | 
| Date: | 2018-02-14 22:32:17 | 
| Message-ID: | 23032905.xQfp2Cdh5V@peanuts2 | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
On Wednesday, February 14, 2018 7:17:10 PM CET Andres Freund wrote:
> Hi,
> 
> On 2018-02-07 06:54:05 -0800, Andres Freund wrote:
> > I've pushed v10.0. The big (and pretty painful to make) change is that
> > now all the LLVM specific code lives in src/backend/jit/llvm, which is
> > built as a shared library which is loaded on demand.
> > 
> > The layout is now as follows:
> > 
> > src/backend/jit/jit.c:
> >     Part of JITing always linked into the server. Supports loading the
> >     LLVM using JIT library.
> > 
> > src/backend/jit/llvm/
> > 
> > Infrastructure:
> >  llvmjit.c:
> >     General code generation and optimization infrastructure
> >  
> >  llvmjit_error.cpp, llvmjit_wrap.cpp:
> >     Error / backward compat wrappers
> >  
> >  llvmjit_inline.cpp:
> >     Cross module inlining support
> > 
> > Code-Gen:
> >   llvmjit_expr.c
> >   
> >     Expression compilation
> >   
> >   llvmjit_deform.c
> >   
> >     Deform compilation
> 
> I've pushed a revised version that hopefully should address Jeff's
> wish/need of being able to experiment with this out of core. There's now
> a "jit_provider" PGC_POSTMASTER GUC that's by default set to
> "llvmjit". llvmjit.so is the .so implementing JIT using LLVM. It fills a
> set of callbacks via
> extern void _PG_jit_provider_init(JitProviderCallbacks *cb);
> which can also be implemented by any other potential provider.
> 
> The other two biggest changes are that I've added a README
> https://git.postgresql.org/gitweb/?p=users/andresfreund/postgres.git;a=blob;
> f=src/backend/jit/README;hb=jit and that I've revised the configure support
> so it does more error
> checks, and moved it into config/llvm.m4.
> 
> There's a larger smattering of small changes too.
> 
> I'm pretty happy with how the separation of core / shlib looks now. I'm
> planning to work on cleaning and then pushing some of the preliminary
> patches (fixed tupledesc, grouping) over the next few days.
> 
> Greetings,
> 
> Andres Freund
Hi
Here are the LLVM4 and LLVM3.9 compatibility patches.
Successfully built, and executed some silly queries with JIT forced to make 
sure it worked.
Pierre
| Attachment | Content-Type | Size | 
|---|---|---|
| 0001-Add-support-for-LLVM4-in-llvmjit.c.patch | text/x-patch | 2.5 KB | 
| 0002-Add-LLVM4-support-in-llvmjit_error.cpp.patch | text/x-patch | 1.4 KB | 
| 0003-Add-LLVM4-support-in-llvmjit_inline.cpp.patch | text/x-patch | 3.2 KB | 
| 0004-Don-t-emit-bitcode-depending-on-an-LLVM-5-function.patch | text/x-patch | 889 bytes | 
| 0006-Ignore-LLVM-.bc-files.patch | text/x-patch | 542 bytes | 
| 0005-Fix-warning.patch | text/x-patch | 1.4 KB | 
| 0007-Fix-building-with-LLVM-3.9.patch | text/x-patch | 2.9 KB | 
| 0008-Fix-segfault-with-LLVM-3.9.patch | text/x-patch | 1.1 KB | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Andres Freund | 2018-02-14 22:44:38 | Re: JIT compiling with LLVM v10.1 | 
| Previous Message | Tatsuo Ishii | 2018-02-14 22:26:44 | Re: Is this a bug? |