jit: Don't inline functions that access thread-locals.
Code inlined by LLVM can crash or fail with "Relocation type not
implemented yet!" if it tries to access thread local variables.  Don't
inline such code.
Back-patch to 11, where LLVM arrived.  Bug
Author: Dmitry Marakasov
Discussion:
@@ -608,6 +608,17 @@ function_inlinable(llvm::Function &F,
if (rv->materialize())
elog(FATAL, "failed to materialize metadata");
+ /*
+ * Don't inline functions that access thread local variables. That
+ * doesn't work on current LLVM releases (but might in future).
+ */
+ if (rv->isThreadLocal())
+ {
+ ilog(DEBUG1, "cannot inline %s due to thread-local variable %s",
+ F.getName().data(), rv->getName().data());
+ return false;
+ }
+
/*
* Never want to inline externally visible vars, cheap enough to
* reference.
