https://gcc.gnu.org/bugzilla/show_bug.cgi?id=26461
cbcode at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |cbcode at gmail dot com --- Comment #19 from cbcode at gmail dot com --- As a compromise, I would like to suggest that '__thread volatile' or 'volatile __thread' always reloads the thread-local storage while __thread without volatile keeps the current caching behavior. The C and C++ standards recognize that stack-switching exists and indicate existing situations where variables need to be volatile-qualified in order to survive a task-switch, see e.g. http://en.cppreference.com/w/cpp/utility/program/setjmp .