Re: WIP: expression evaluation improvements

Andreas Karlsson <andreas@proxel.se>

From: Andreas Karlsson <andreas@proxel.se>
To: Andres Freund <andres@anarazel.de>, pgsql-hackers@postgresql.org
Date: 2019-10-24T22:43:37Z
Lists: pgsql-hackers
On 10/23/19 6:38 PM, Andres Freund wrote:
> In the attached *prototype* patch series there's a lot of incremental
> improvements (and some cleanups) (in time, not importance order):

You may already know this but your patch set seems to require clang 9.

I get the below compilation error which is probably cause by 
https://github.com/llvm/llvm-project/commit/90868bb0584f first being 
committed for clang 9 (I run "clang version 7.0.1-8 
(tags/RELEASE_701/final)").

In file included from gistutil.c:24:
../../../../src/include/utils/float.h:103:7: error: invalid output 
constraint '=@ccae' in asm
                          : "=@ccae"(ret), [clobber_reg]"=&x"(clobber_reg)
                            ^
1 error generated.




Commits

  1. Add special case fast-paths for strict functions

  2. Replace EEOP_DONE with special steps for return/no return

  3. jit: Reference expression step functions via llvmjit_types.

  4. jit: Remove redundancies in expression evaluation code generation.

  5. expression eval: Don't redundantly keep track of AggState.

  6. jit: Reference functions by name in IOCOERCE steps.

  7. expression eval, jit: Minor code cleanups.