[Development] thread_local: replacing GCC with Clang for MinGW
Thiago Macieira
thiago.macieira at intel.com
Sat Aug 24 18:04:14 CEST 2019
On Friday, 23 August 2019 11:16:29 PDT Thiago Macieira wrote:
> Simon wrote:
> > I ran into the crash a while ago in the CI. See also
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83562 .
>
> That bug report shows that GCC does not properly implement thread_local on
> MinGW 32-bit over 8 years after the publication of the standard and over 4
> years after the feature became available on other platforms.
Withdrawn.
Looks like Android suffers from the same __emutls bug until Android M:
https://github.com/android-ndk/ndk/issues/687
And looking at the assembly generated by Clang 10 on Windows, it's not right
*either*.
That means we have two major platforms failing to properly implement a C++11
feature over 8 years after the standard. That means we must continue to use
QThreadStorage where we need non-POD thread-local storage, which only works[*]
in QThread-started threads.
[*] it won't crash if you use QThreadStorage with a thread started with
something else, despite what the source code says, but it will leak memory.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel System Software Products
More information about the Development
mailing list