Re: JIT compiling with LLVM v9.1

From: Andreas Karlsson <andreas(at)proxel(dot)se>
To: Pierre Ducroquet <p(dot)psql(at)pinaraf(dot)info>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Cc: Pierre Ducroquet <pierre(dot)ducroquet(at)people-doc(dot)com>, Andres Freund <andres(at)anarazel(dot)de>
Subject: Re: JIT compiling with LLVM v9.1
Date: 2018-02-15 11:54:34
Message-ID: 3bfd9660-756d-a1e2-f8d7-aef498c4c412@proxel.se
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 02/05/2018 10:44 PM, Pierre Ducroquet wrote:
>> psqlscanslash.l: In function ‘psql_scan_slash_option’:
>> psqlscanslash.l:550:8: warning: variable ‘lexresult’ set but not used
>> [-Wunused-but-set-variable]
>> int final_state;
>> ^~~~~~~~~
>
> I'm not sure Andres's patches have anything to do with psql, it's surprising.

I managed to track down the bug and apparently when building with
--with-llvm the -DNDEBUG option is added to CPPFLAGS, but I am not
entirely sure what the code in config/llvm.m4 is trying to do in the
first place.

The two issues I see with what the code does are:

1) Why does config/llvm.m4 modify CPPFLAGS? That affects the building of
the binaries too which may be done with gcc like in my case. Shouldn't
it use a LLVM_CPPFLAGS or something?

2) When I build with --with-cassert I expect the assertions to be there,
both in the binaries and the bitcode. Is that just a bug or is there any
thought behind this?

Below is the diff in src/Makefile.global between when I run configure
with --with-llvm or not.

diff src/Makefile.global-nollvm src/Makefile.global-llvm
78c78
< configure_args = '--prefix=/home/andreas/dev/postgresql-inst'
'--enable-tap-tests' '--enable-cassert' '--enable-debug'
---
> configure_args = '--prefix=/home/andreas/dev/postgresql-inst'
'--enable-tap-tests' '--enable-cassert' '--enable-debug' '--with-llvm'
190c190
< with_llvm = no
---
> with_llvm = yes
227,229c227,229
< LLVM_CONFIG =
< LLVM_BINPATH =
< CLANG =
---
> LLVM_CONFIG = /usr/bin/llvm-config
> LLVM_BINPATH = /usr/lib/llvm-4.0/bin
> CLANG = /usr/bin/clang
238c238
< CPPFLAGS = -D_GNU_SOURCE
---
> CPPFLAGS = -D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS
-D__STDC_CONSTANT_MACROS -D_GNU_SOURCE -DNDEBUG
-I/usr/lib/llvm-4.0/include -D_GNU_SOURCE
261c261
< LLVM_CXXFLAGS =
---
> LLVM_CXXFLAGS = -std=c++0x -std=c++11 -fno-exceptions
283c283
< LLVM_LIBS=
---
> LLVM_LIBS= -lLLVM-4.0
297c297
< LDFLAGS += -Wl,--as-needed
---
> LDFLAGS += -L/usr/lib/llvm-4.0/lib -Wl,--as-needed

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Etsuro Fujita 2018-02-15 12:10:41 Re: non-bulk inserts and tuple routing
Previous Message Pavan Deolasee 2018-02-15 11:19:46 Re: [HACKERS] MERGE SQL Statement for PG11