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

From Andres Freund
Subject Re: JIT compiling with LLVM v12.2
Date
Msg-id 20180321205903.ekixkmdygbz4c5pp@alap3.anarazel.de
Whole thread Raw
In response to Re: JIT compiling with LLVM v12.2  (Thomas Munro <thomas.munro@enterprisedb.com>)
Responses Re: JIT compiling with LLVM v12.2
List pgsql-hackers
On 2018-03-22 09:51:01 +1300, Thomas Munro wrote:
> On Thu, Mar 22, 2018 at 9:09 AM, Andres Freund <andres@anarazel.de> wrote:
> > Hi,
> >
> > On 2018-03-22 09:00:19 +1300, Thomas Munro wrote:
> >> 64 bit CPU, 32 bit OS.  I didn't try Debian multi-arch i386 support on
> >> an amd64 system, but that's probably an easier way to do this if you
> >> already have one of those...
> >
> > Ah, then I think I might know what happend. Does it start to work if you
> > replace the auto-detected cpu with "x86"? I think what might happen is
> > that it generates 64bit code, because of the detected CPU name.
> 
> Hah, that makes sense.  I tried setting cpu to "x86", and now it fails
> differently:

Did you change the variable, or replace the value that's passed to the
LLVMCreateTargetMachine() calls?  If you did the former, the error
wouldn't be surprising, because
    LLVMDisposeMessage(cpu);
    cpu = NULL;
will attempt to free the return value of LLVMGetHostCPUName(), which'll
obviously not work if you just set to a constant.

> #1  0xb7593806 in _int_free (av=0xae700220
> <llvm::SystemZ::GRX32BitRegClass>, p=0xae75f273, have_lock=0) at
> malloc.c:3905
> #2  0xabd05cd8 in LLVMDisposeMessage () from
> /usr/lib/i386-linux-gnu/libLLVM-3.9.so.1
> #3  0xae75100b in llvm_session_initialize () at llvmjit.c:636
> #4  llvm_create_context (jitFlags=15) at llvmjit.c:136
> #5  0xae75d3e9 in llvm_compile_expr (state=0x2616e60) at llvmjit_expr.c:132
> #6  0x00650118 in ExecReadyExpr (state=state@entry=0x2616e60) at execExpr.c:627
> #7  0x00652dd7 in ExecInitExpr (node=0x2666bb4, parent=0x261693c) at
> execExpr.c:144
> ...


FWIW, a 32bit chroot, on a 64bit kernel works:

2018-03-21 20:57:56.576 UTC [3708] DEBUG:  successfully loaded LLVM in current session
2018-03-21 20:57:56.577 UTC [3708] DEBUG:  JIT detected CPU "skylake", with features
"+sse2,+cx16,-tbm,-avx512ifma,-avx512dq,-fma4,+prfchw,+bmi2,+xsavec,+fsgsbase,+popcnt,+aes,-pcommit,+xsaves,-avx512er,-clwb,-avx512f,-pku,+smap,+mmx,-xop,+rdseed,+hle,-sse4a,-avx512bw,+clflushopt,+xsave,-avx512vl,+invpcid,-avx512cd,+avx,+rtm,+fma,+bmi,-mwaitx,+rdrnd,+sse4.1,+sse4.2,+avx2,+sse,+lzcnt,+pclmul,-prefetchwt1,+f16c,+ssse3,+sgx,+cmov,-avx512vbmi,+movbe,+xsaveopt,-sha,+adx,-avx512pf,+sse3"
2018-03-21 20:57:56.579 UTC [3708] DEBUG:  time to inline: 0.000s, opt: 0.000s, emit: 0.002s

that's debian testing though.

Greetings,

Andres Freund


pgsql-hackers by date:

Previous
From: Thomas Munro
Date:
Subject: Re: JIT compiling with LLVM v12.2
Next
From: Thomas Munro
Date:
Subject: Re: JIT compiling with LLVM v12.2