Re: JIT compiling with LLVM v12.2 - Mailing list pgsql-hackers
From | Catalin Iacob |
---|---|
Subject | Re: JIT compiling with LLVM v12.2 |
Date | |
Msg-id | CAHg_5gpOGxh0-wm=p9-uXidd-E4e5hK5c+1BZWEtjR-tfxv-Gw@mail.gmail.com Whole thread Raw |
In response to | Re: JIT compiling with LLVM v12.2 (Andres Freund <andres@anarazel.de>) |
Responses |
Re: JIT compiling with LLVM v12.2
|
List | pgsql-hackers |
On Wed, Mar 21, 2018 at 4:07 AM, Andres Freund <andres@anarazel.de> wrote: > Indeed. I've pushed a rebased version now, that basically just fixes the > issue Thomas observed. Testing 2d6f2fba from your repository configured --with-llvm I noticed some weird things in the configure output. Without --enable-debug: configure: using compiler=gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) configure: using CFLAGS=-Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 configure: using CPPFLAGS= -D_GNU_SOURCE configure: using LDFLAGS= -L/opt/rh/llvm-toolset-7/root/usr/lib64 -Wl,--as-needed configure: using CXX=g++ configure: using CXXFLAGS=-Wall -Wpointer-arith -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -g -O2 configure: using CLANG=/opt/rh/llvm-toolset-7/root/usr/bin/clang configure: using BITCODE_CFLAGS= -fno-strict-aliasing -fwrapv -O2 configure: using BITCODE_CXXFLAGS= -fno-strict-aliasing -fwrapv -O2 BITCODE_CXXFLAGS With --enable-debug: configure: using compiler=gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) configure: using CFLAGS=-Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O2 configure: using CPPFLAGS= -D_GNU_SOURCE configure: using LDFLAGS= -L/opt/rh/llvm-toolset-7/root/usr/lib64 -Wl,--as-needed configure: using CXX=g++ configure: using CXXFLAGS=-Wall -Wpointer-arith -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -g -g -O2 configure: using CLANG=/opt/rh/llvm-toolset-7/root/usr/bin/clang configure: using BITCODE_CFLAGS= -fno-strict-aliasing -fwrapv -O2 configure: using BITCODE_CXXFLAGS= -fno-strict-aliasing -fwrapv -O2 BITCODE_CXXFLAGS So I unconditionally get one -g added to CXXFLAGS regardless of whether I specify --enable-debug or not. And --enable-debug results in -g -g in CXXFLAGS. Didn't get to look at the code yet, maybe that comes from: $ llvm-config --cxxflags -I/opt/rh/llvm-toolset-7/root/usr/include -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment -std=c++11 -ffunction-sections -fdata-sections -O2 -g -DNDEBUG -fno-exceptions -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS But on the other hand there are lots of other flags in there that don't end up in CXXFLAGS. BTW, you should probably specify -std=c++11 (or whatever you need) as various g++ and clang++ versions default to various things. Will the required C++ standard be based on the requirements of the C++ code in the PG tree or will you take it from LLVM's CXXFLAGS? Can --std=c++11 and --std=c++14 compiled .o files be linked together? Or in other words, in case in the future LLVM starts requiring C++14 but the code in the PG tree you wrote still builds with C++11, will PG upgrade it's requirement with LLVM or will it stay with the older standard? Also, my CXXFLAGS did not get -fexcess-precision=standard neither did BITCODE_CFLAGS nor BITCODE_CXXFLAGS. In case it's interesting: $ llvm-config --cflags -I/opt/rh/llvm-toolset-7/root/usr/include -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC -Wall -W -Wno-unused-parameter -Wwrite-strings -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-comment -ffunction-sections -fdata-sections -O2 -g -DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS 2. Unlike all the other *FLAGS, BITCODE_CXXFLAGS includes itself on the right hand side of the equal configure: using BITCODE_CXXFLAGS= -fno-strict-aliasing -fwrapv -O2 BITCODE_CXXFLAGS
pgsql-hackers by date: