On Sat, Sep 17, 2022 at 6:45 AM Andres Freund <and...@anarazel.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