https://bugs.llvm.org/show_bug.cgi?id=46354

            Bug ID: 46354
           Summary: Missing warning -Wthread-safety-negative when using
                    capabilities in namespace scope
           Product: clang
           Version: trunk
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Frontend
          Assignee: unassignedclangb...@nondot.org
          Reporter: aaronpuch...@alice-dsl.net
                CC: llvm-bugs@lists.llvm.org, neeil...@live.com,
                    richard-l...@metafoo.co.uk

With mutex.h from https://clang.llvm.org/docs/ThreadSafetyAnalysis.html#mutex-h
and -Wthread-safety-negative, there is a warning on

class Foo {
  Mutex mu;

public:
  void foo() {
    mu.Lock(); // acquiring mutex 'mu' requires negative capability '!mu'
    mu.Unlock();
  }
};

but not on

Mutex mu;

void foo() {
  mu.Lock();
  mu.Unlock();
}

That's inconsistent, and probably also unintended: "The analyzer assumes that
it holds a negative capability for any object that is not defined within the
current lexical scope. The scope of a class member is assumed to be its
enclosing class, while the scope of a global variable is the translation unit
in which it is defined." [1]

[1]
https://static.googleusercontent.com/media/research.google.com/en/us/pubs/archive/42958.pdf

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to