JIT compiling with LLVM v12

From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-hackers(at)postgresql(dot)org
Subject: JIT compiling with LLVM v12
Date: 2018-03-13 23:40:32
Message-ID: 20180313234032.mdvxcmdttqpe4m6h@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

I've pushed a revised and rebased version of my JIT patchset.
The git tree is at
https://git.postgresql.org/git/users/andresfreund/postgres.git
in the jit branch
https://git.postgresql.org/gitweb/?p=users/andresfreund/postgres.git;a=shortlog;h=refs/heads/jit

There's nothing hugely exciting, mostly lots of cleanups.

- added some basic EXPLAIN output, displaying JIT options and time spent
jitting (see todo below)

JIT:
Functions: 9
Generation Time: 4.604
Inlining: false
Inlining Time: 0.000
Optimization: false
Optimization Time: 0.585
Emission Time: 12.858

- Fixed bugs around alignment computations in tuple deforming. Wasn't
able to trigger any bad consequences, but it was clearly wrong.
- Worked a lot on making code more pgindent safe. There's still some
minor layout damage, but it's mostly ok now. For that I had to add a
bunch of helpers that make the code shorter
- Freshly emitted functions now have proper attributes indicating
architecture, floating point behaviour etc. That's what previously
prevented the inliner of doing its job without forcing its hand. That
yields a bit of a speedup.
- reduced size of code a bit by deduplicating code, in particular
don't "manually" create signatures for function declarations
anymore. Besides deduplicating, this also ensures code generation time
errors when function signatures change.
- fixed a number of FIXMEs etc
- added a lot of comments
- portability fixes (OSX, freebsd)

Todo:
- some build issues with old clang versions pointed out by Thomas Munro
- when to take jit_expressions into account (both exec and plan or just
latter)
- EXPLAIN for queries that are JITed should display units. Starting
thread about effort to not duplicate code for that
- more explanations of type & function signature syncing
- GUC docs (including postgresql.conf.sample)

Thanks everyone, particularly Peter in this update, for helping me
along!

Regards,

Andres

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Stephen Frost 2018-03-13 23:49:11 Re: PATCH: Configurable file mode mask
Previous Message Tom Lane 2018-03-13 23:29:38 Re: neqjoinsel versus "refresh materialized view concurrently"