Re: JIT compiling with LLVM v9.0 - Mailing list pgsql-hackers
From | Tomas Vondra |
---|---|
Subject | Re: JIT compiling with LLVM v9.0 |
Date | |
Msg-id | ae2ff34f-900f-ddc1-91e0-8561883d19de@2ndquadrant.com Whole thread Raw |
In response to | Re: JIT compiling with LLVM v9.0 (Andres Freund <andres@anarazel.de>) |
Responses |
Re: JIT compiling with LLVM v9.0
Re: JIT compiling with LLVM v9.0 |
List | pgsql-hackers |
On 01/29/2018 11:17 PM, Andres Freund wrote: > On 2018-01-29 23:01:14 +0100, Tomas Vondra wrote: >> On 01/29/2018 10:57 PM, Andres Freund wrote: >>> Hi, >>> >>> On 2018-01-29 22:51:38 +0100, Tomas Vondra wrote: >>>> Hi, I wanted to look at this, but my attempts to build the jit branch >>>> fail with some compile-time warnings (uninitialized variables) and >>>> errors (unknown types, incorrect number of arguments). See the file >>>> attached. >>> >>> Which git hash are you building? What llvm version is this building >>> against? If you didn't specify LLVM_CONFIG=... what does llvm-config >>> --version return? >>> >> >> I'm building against fdc6c7a6dddbd6df63717f2375637660bcd00fc6 (current >> HEAD in the jit branch, AFAICS). > > The warnings come from an incomplete patch I probably shouldn't have > pushed (Heavily-WIP: JIT hashing.). They should largely be irrelevant > (although will cause a handful of "ERROR: hm" regression failures), > but I'll definitely pop that commit on the next rebase. If you want you > can just reset --hard to its parent. > OK > > That errors are weird however: > >> ... ^ > >> I'm building like this: >> >> $ ./configure --enable-debug CFLAGS="-fno-omit-frame-pointer -O2" \ >> --with-llvm --prefix=/home/postgres/pg-llvm >> >> $ make -s -j4 install >> >> and llvm-config --version says this: >> >> $ llvm-config --version >> 5.0.0svn > > Is thta llvm-config the one in /usr/local/include/ referenced by the > error message above? I don't see it referenced anywhere, but it comes from here: $ which llvm-config /usr/local/bin/llvm-config > Or is it possible that llvm-config is from a different version than > the one the compiler picks the headers up from? > I don't think so. I don't have any other llvm versions installed, AFAICS. > could you go to src/backend/lib, rm llvmjit.o, and show the full output > of make llvmjit.o? > Attached. > I wonder whether the issue is that my configure patch does > -I*|-D*) CPPFLAGS="$CPPFLAGS $pgac_option";; > rather than > -I*|-D*) CPPFLAGS="$pgac_option $CPPFLAGS";; > and that it thus picks up the wrong header first? > I've tried this configure tweak: if test -n "$LLVM_CONFIG"; then for pgac_option in `$LLVM_CONFIG --cflags`; do case $pgac_option in - -I*|-D*) CPPFLAGS="$CPPFLAGS $pgac_option";; + -I*|-D*) CPPFLAGS="$pgac_option $CPPFLAGS";; esac done and that indeed changes the failure to this: Writing postgres.bki Writing schemapg.h Writing postgres.description Writing postgres.shdescription llvmjit_error.cpp: In function ‘void llvm_enter_fatal_on_oom()’: llvmjit_error.cpp:61:3: error: ‘install_bad_alloc_error_handler’ is not a member of ‘llvm’ llvm::install_bad_alloc_error_handler(fatal_llvm_new_handler); ^~~~ llvmjit_error.cpp: In function ‘void llvm_leave_fatal_on_oom()’: llvmjit_error.cpp:77:3: error: ‘remove_bad_alloc_error_handler’ is not a member of ‘llvm’ llvm::remove_bad_alloc_error_handler(); ^~~~ llvmjit_error.cpp: In function ‘void llvm_reset_fatal_on_oom()’: llvmjit_error.cpp:92:3: error: ‘remove_bad_alloc_error_handler’ is not a member of ‘llvm’ llvm::remove_bad_alloc_error_handler(); ^~~~ make[3]: *** [<builtin>: llvmjit_error.o] Error 1 make[2]: *** [common.mk:45: lib-recursive] Error 2 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [Makefile:38: all-backend-recurse] Error 2 make: *** [GNUmakefile:11: all-src-recurse] Error 2 I'm not sure what that means, though ... maybe I really have system broken in some strange way. regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachment
pgsql-hackers by date: