aaron.ballman added inline comments.
================ Comment at: clang-tools-extra/test/clang-tidy/bugprone-dynamic-static-initializers.hpp:33-35 + // This may work fine when optimization is enabled because bar() can + // be turned into a constant 7. But without optimization, it can + // cause problems. Therefore, we must err on the side of conservatism. ---------------- czhang wrote: > aaron.ballman wrote: > > What problems can be caused here? Typically, dynamic init is only > > problematic when it happens before main() is executed (because of > > initialization order dependencies), but that doesn't apply to local statics. > Consider the case when synchronization is disabled for static initialization, > and two threads call `foo2` for the first time. It may be the case that they > both try and initialize the static variable at the same time with different > values (since the dynamic initializer may not be pure), creating a race > condition. > Consider the case when synchronization is disabled for static initialization This is a compiler bug, though: http://eel.is/c++draft/stmt.dcl#4.sentence-3 CHANGES SINCE LAST ACTION https://reviews.llvm.org/D62829/new/ https://reviews.llvm.org/D62829 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits