rupprecht added a comment. In D87194#2369485 <https://reviews.llvm.org/D87194#2369485>, @aaronpuchert wrote:
> @rupprecht, maybe you can try it again? Some more interesting errors this time :) The ones I originally saw look correct now (i.e. it's flagging the things that are valid, but not the things out of visibility). I tried building the rest of this package, and I guess scoping isn't considered in this case though? class Foo { public: static void Bar(); private: struct Params { Mutex mu_; } static Params* GetParams(); }; // In the .cc file: void Foo::Bar() { Params& params = *GetParams(); MutexLock lock(params.mu_); // error: acquiring mutex 'params.mu_' requires negative capability '!params.mu_' } /* static */ Params* Foo::GetParams() { static Params params; return ¶ms; } On one hand, it's totally valid. On the other hand, annotating the method like `static void Bar() REQUIRES(!params.mu_);` isn't possible because `params` is a local variable. (I'm new to threading analysis, so maybe I'm just using the wrong annotations) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D87194/new/ https://reviews.llvm.org/D87194 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits