Re: clang 15 doesn't like our JIT code

From: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: clang 15 doesn't like our JIT code
Date: 2022-09-16 20:36:08
Message-ID: CA+hUKGJ7nA8+nqq=ZWZHCEVrvB1i=VZx5drWOSj_gT04i8mEGA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Sep 17, 2022 at 6:45 AM Andres Freund <andres(at)anarazel(dot)de> wrote:
> On 2022-09-16 11:40:46 -0400, Tom Lane wrote:
> > According to
> >
> > https://bugzilla.redhat.com/show_bug.cgi?id=2127503
> >
> > bleeding-edge clang complains thusly:
> >
> > llvmjit_inline.cpp: In function 'std::unique_ptr<llvm::ModuleSummaryIndex> llvm_load_summary(llvm::StringRef)':
> > llvmjit_inline.cpp:771:37: error: incomplete type 'llvm::MemoryBuffer' used in nested name specifier
> > 771 | llvm::MemoryBuffer::getFile(path);
> > | ^~~~~~~
> > In file included from /usr/include/c++/12/memory:76,
> > from /usr/include/llvm/ADT/SmallVector.h:28,
> > from /usr/include/llvm/ADT/ArrayRef.h:14,
> > from /usr/include/llvm/ADT/SetVector.h:23,
> > from llvmjit_inline.cpp:48:
> > /usr/include/c++/12/bits/unique_ptr.h: In instantiation of 'void std::default_delete<_Tp>::operator()(_Tp*) const [with _Tp = llvm::MemoryBuffer]':
> > /usr/include/c++/12/bits/unique_ptr.h:396:17: required from 'std::unique_ptr<_Tp, _Dp>::~unique_ptr() [with _Tp = llvm::MemoryBuffer; _Dp = std::default_delete<llvm::MemoryBuffer>]'
> > /usr/include/llvm/Support/ErrorOr.h:142:34: required from 'llvm::ErrorOr<T>::~ErrorOr() [with T = std::unique_ptr<llvm::MemoryBuffer>]'
> > llvmjit_inline.cpp:771:35: required from here
> > /usr/include/c++/12/bits/unique_ptr.h:93:23: error: invalid application of 'sizeof' to incomplete type 'llvm::MemoryBuffer'
> > 93 | static_assert(sizeof(_Tp)>0,
> > | ^~~~~~~~~~~
> >
> > I suspect this is less about clang and more about LLVM APIs,
> > but anyway it seems like we gotta fix something.
>
> Yea, there's definitely a bunch of llvm 15 issues that need to be fixed - this
> particular failure is pretty easy to fix, but there's some others that are
> harder. They redesigned a fairly core part of the IR representation. Thomas
> has a WIP fix, I think.

Yes, I've been working on this and will try to have a patch on the
list in a few days. There are also a few superficial changes to
names, arguments, headers etc like the one reported there, but the
real problem is that it aborts at runtime when JIT stuff happens, so I
didn't want to push changes for the superficial things without
addressing that or someone might get a nasty surprise. Separately,
there's also the walker stuff[1] to address.

[1] https://www.postgresql.org/message-id/flat/CA%2BhUKGKpHPDTv67Y%2Bs6yiC8KH5OXeDg6a-twWo_xznKTcG0kSA%40mail.gmail.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Geoghegan 2022-09-16 22:42:13 Making C function declaration parameter names consistent with corresponding definition names
Previous Message Jacob Champion 2022-09-16 20:29:29 Re: [PoC] Let libpq reject unexpected authentication requests