postgresql/src
Andres Freund b96d550eb0 Support for optimizing and emitting code in LLVM JIT provider.
This commit introduces the ability to actually generate code using
LLVM. In particular, this adds:

- Ability to emit code both in heavily optimized and largely
  unoptimized fashion
- Batching facility to allow functions to be defined in small
  increments, but optimized and emitted in executable form in larger
  batches (for performance and memory efficiency)
- Type and function declaration synchronization between runtime
  generated code and normal postgres code. This is critical to be able
  to access struct fields etc.
- Developer oriented jit_dump_bitcode GUC, for inspecting / debugging
  the generated code.
- per JitContext statistics of number of functions, time spent
  generating code, optimizing, and emitting it.  This will later be
  employed for EXPLAIN support.

This commit doesn't yet contain any code actually generating
functions. That'll follow in later commits.

Documentation for GUCs added, and for JIT in general, will be added in
later commits.

Author: Andres Freund, with contributions by Pierre Ducroquet
Testing-By: Thomas Munro, Peter Eisentraut
Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
2018-03-22 11:05:22 -07:00
..
backend Support for optimizing and emitting code in LLVM JIT provider. 2018-03-22 11:05:22 -07:00
bin UINT64CONST'fy long constants in pgbench 2018-03-22 19:38:54 +03:00
common restrict -> pg_restrict 2018-03-15 10:02:59 -03:00
fe_utils Add \if support to pgbench 2018-03-22 17:42:03 +03:00
include Support for optimizing and emitting code in LLVM JIT provider. 2018-03-22 11:05:22 -07:00
interfaces Attempt to fix build with unusual OpenSSL versions 2018-03-20 16:44:52 -04:00
makefiles Always use -fPIC, not -fpic, when building shared libraries with gcc. 2017-06-01 13:32:55 -04:00
pl Fix overflow handling in plpgsql's integer FOR loops. 2018-03-17 15:38:15 -04:00
port Add an assertion that we don't pass NULL to snprintf("%s"). 2018-02-14 15:06:01 -05:00
template Force "restrict" not to be used when compiling with xlc. 2017-10-13 12:15:06 -07:00
test Implement partition-wise grouping/aggregation. 2018-03-22 12:49:48 -04:00
timezone Update time zone data files to tzdata release 2018c. 2018-01-27 16:42:28 -05:00
tools Support for optimizing and emitting code in LLVM JIT provider. 2018-03-22 11:05:22 -07:00
tutorial Update copyright for 2018 2018-01-02 23:30:12 -05:00
.gitignore
DEVELOPERS
Makefile Basic JIT provider and error handling infrastructure. 2018-03-21 19:28:28 -07:00
Makefile.global.in Support for optimizing and emitting code in LLVM JIT provider. 2018-03-22 11:05:22 -07:00
Makefile.shlib Add C++ support to configure. 2018-03-20 15:48:48 -07:00
nls-global.mk nls-global.mk: search build dir for source files, too 2016-06-07 18:55:18 -04:00