[llvm-dev] How to force re-evaluate thread_local address?
Juan Wajnerman via llvm-dev
llvm-dev at lists.llvm.org
Mon Feb 1 09:25:26 PST 2016
I’m working on adding multithreading support to our programming language (http://crystal-lang.org <http://crystal-lang.org/>) and I’m facing an issue with thread local variables.
Since the language relies heavily on coroutines, basically the problem is that a function could start running on a thread, get suspended and continue running on a different thread.
So, for example, if I have this pseudocoe:
1. read / write thread local variable
2. do some context switch, might resume in a different thread
3. read / write same thread local variable
Now the real issue is that when compiling with optimizations, LLVM wont re-read the thread local address, and instead it will rely on the address stored on some register.
The question is: is there any way to force LLVM to re-read the thread local address each time? Or even better, is there any way to give hints about where the cached address is not reliable anymore?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev