aaron.ballman accepted this revision. aaron.ballman added a comment. In D112081#3073291 <https://reviews.llvm.org/D112081#3073291>, @rjmccall wrote:
> The standard answer is that compilers are designed to work with a specific > set of system headers. In the Clang-on-Windows case, that's complicated by > the fact that many people acquire Clang separately from the rest of the build > environment (although Microsoft does distribute Clang officially now, > right?), but I think the standard answer is still ultimately the correct one: > Clang is designed to support the MSVC system headers that are currently out > in the world, and whenever Microsoft releases new system headers, it's > possible that you will need a new version of Clang. > > As an aside, it's unfortunate that the name of this define makes it sound > like not defining it implies that the environment is not concurrent. Oh > well; if the standard says it's tied to the header, then obviously it's right > to not define it. Yeah... I wish it was this clean and clear cut. :-D N2731 (the latest C2x working draft) says in 6.10.8.3p1: __STDC_NO_THREADS__ The integer constant 1, intended to indicate that the implementation does not support the <threads.h> header. Which seems pretty straight-forward, until you get to 7.26.1p2: Implementations that define the macro __STDC_NO_THREADS__ need not provide this header nor support any of its facilities. and those facilities includes `thread_local` (the macro that expands to `_Thread_local`, the keyword), which got me wondering whether `_Thread_local` has any relationship with `__STDC_NO_THREADS__`. The standard did not claim there was, which supports the changes in this patch, but I remember this discussion happening in WG14. I dug around and found http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2291.htm that deals with exactly this question, and there was no consensus to adopt this proposal in WG14, so I eventually convinced myself this implementation is valid. LGTM. :-) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112081/new/ https://reviews.llvm.org/D112081 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits