Line 0
Link Here
|
|
|
1 |
Do not inline functions which access TLS in LLVM JIT, as |
2 |
this leads to crashes with unsupported relocation error |
3 |
|
4 |
diff --git src/backend/jit/llvm/llvmjit_inline.cpp src/backend/jit/llvm/llvmjit_inline.cpp |
5 |
index 2617a46..a063edb 100644 |
6 |
--- src/backend/jit/llvm/llvmjit_inline.cpp |
7 |
+++ src/backend/jit/llvm/llvmjit_inline.cpp |
8 |
@@ -608,6 +608,16 @@ function_inlinable(llvm::Function &F, |
9 |
if (rv->materialize()) |
10 |
elog(FATAL, "failed to materialize metadata"); |
11 |
|
12 |
+ /* |
13 |
+ * Don't inline functions with thread-local variables until |
14 |
+ * related crashes are investigated (see BUG #16696) |
15 |
+ */ |
16 |
+ if (rv->isThreadLocal()) { |
17 |
+ ilog(DEBUG1, "cannot inline %s due to thread-local variable %s", |
18 |
+ F.getName().data(), rv->getName().data()); |
19 |
+ return false; |
20 |
+ } |
21 |
+ |
22 |
/* |
23 |
* Never want to inline externally visible vars, cheap enough to |
24 |
* reference. |