Re: JIT compiling with LLVM v12 - Mailing list pgsql-hackers

From Pierre Ducroquet
Subject Re: JIT compiling with LLVM v12
Date
Msg-id 2863348.UHxKUEF1tf@pierred-pdoc
Whole thread Raw
In response to Re: JIT compiling with LLVM v12  (Jesper Pedersen <jesper.pedersen@redhat.com>)
Responses Re: JIT compiling with LLVM v12  (Jesper Pedersen <jesper.pedersen@redhat.com>)
List pgsql-hackers
On Thursday, March 29, 2018 2:39:17 PM CEST Jesper Pedersen wrote:
> Hi Andres,
>
> On 03/28/2018 05:27 PM, Andres Freund wrote:
> > On 2018-03-27 10:34:26 -0700, Andres Freund wrote:
> >> On 2018-03-27 10:05:47 -0400, Peter Eisentraut wrote:
> >>> On 3/13/18 19:40, Andres Freund wrote:
> >>>> I've pushed a revised and rebased version of my JIT patchset.
> >>>
> >>> What is the status of this item as far as the commitfest is concerned?
> >>
> >> 7/10 committed. Inlining, Explain, Docs remain.
> >
> > I've pushed these three.
>
> It seems that clang is being picked up as the main compiler in certain
> situations, ala
>
> ccache gcc -Wall -Wmissing-prototypes -Wpointer-arith
> -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute
> -Wformat-security -fno-strict-aliasing -fwrapv
> -fexcess-precision=standard -g -O0 -fno-omit-frame-pointer
> -I../../../src/include  -D_GNU_SOURCE -I/usr/include/libxml2   -c -o
> auth-scram.o auth-scram.c -MMD -MP -MF .deps/auth-scram.Po
> ccache gcc -Wall -Wmissing-prototypes -Wpointer-arith
> -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute
> -Wformat-security -fno-strict-aliasing -fwrapv
> -fexcess-precision=standard -g -O0 -fno-omit-frame-pointer
> -I../../../src/include  -D_GNU_SOURCE -I/usr/include/libxml2   -c -o
> be-secure-openssl.o be-secure-openssl.c -MMD -MP -MF
> .deps/be-secure-openssl.Po
> /usr/lib64/ccache/clang -Wno-ignored-attributes -fno-strict-aliasing
> -fwrapv -O2  -I../../../src/include  -D_GNU_SOURCE
> -I/usr/include/libxml2  -flto=thin -emit-llvm -c -o be-fsstubs.bc
> be-fsstubs.c
> /usr/lib64/ccache/clang -Wno-ignored-attributes -fno-strict-aliasing
> -fwrapv -O2  -I../../../src/include  -D_GNU_SOURCE
> -I/usr/include/libxml2  -flto=thin -emit-llvm -c -o namespace.bc namespace.c
>
> I would expect LLVM to be isolated to the jit/ hierarchy.

Clang is needed to emit the LLVM bitcode required for inlining. The "-emit-
llvm" flag is used for that. A dual compilation is required for inlining to
work, one compilation with gcc/clang/msvc/… to build the postgresql binary,
one with clang to generate the .bc files for inlining.
It can be surprising, but there is little way around that (or we accept only
clang to build postgresql, but there would be a riot).



pgsql-hackers by date:

Previous
From: David Steele
Date:
Subject: Re: pgsql: Add documentation for the JIT feature.
Next
From: "David G. Johnston"
Date:
Subject: Re: csv format for psql