On Wed, Jan 31, 2018 at 3:05 PM, Andres Freund <and...@anarazel.de> wrote: > On 2018-01-31 14:42:26 +1300, Thomas Munro wrote: >> I'm just starting to look at this (amazing) work, and I don't have a >> strong opinion yet. But certainly, making it easy for packagers to >> put the -jit stuff into a separate package for the reasons already >> given sounds sensible to me. Some systems package LLVM as one >> gigantic package that'll get you 1GB of compiler/debugger/other stuff >> and perhaps violate local rules by installing a compiler when you >> really just wanted libLLVM{whatever}.so. I guess it should be made >> very clear to users (explain plans, maybe startup message, ...?) > > I'm not quite sure I understand. You mean have it display whether > available? I think my plan is to "just" set jit_expressions=on (or > whatever we're going to name it) fail if the prerequisites aren't > available. I personally don't think this should be enabled by default, > definitely not in the first release.
I assumed (incorrectly) that you wanted it to default to on if available, so I was suggesting making it obvious to end users if they've accidentally forgotten to install -jit. If it's not enabled until you actually ask for it and trying to enable it when it's not installed barfs, then that seems sensible. >> This seems to be a valid complaint. I don't think you should be >> (indirectly) wrapping Types.h in extern "C". At a guess, your >> llvmjit.h should be doing its own #ifdef __cplusplus'd linkage >> specifiers, so you can use it from C or C++, but making sure that you >> don't #include LLVM's headers from a bizarro context where __cplusplus >> is defined but the linkage is unexpectedly already "C"? > > Hm, this seems like a bit of pointless nitpickery by the compiler to me, > but I guess... Well that got me curious about how GCC could possibly be accepting that (it certainly doesn't like extern "C" template ... any more than the next compiler). I dug a bit and realised that it's the stdlib that's different: libstdc++ has its own extern "C++" in <cmath>, while libc++ doesn't. -- Thomas Munro http://www.enterprisedb.com