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

Reply via email to