20 lines
575 B
C++
20 lines
575 B
C++
// RUN: %clang_cc1 -verify -fsyntax-only -Wthread-safety %s
|
|
|
|
struct __attribute__((lockable)) Lock {};
|
|
|
|
void sink_protected(int);
|
|
|
|
struct Baz {
|
|
public:
|
|
Lock lock_;
|
|
int protected_num_ __attribute__((guarded_by(lock_))) = 1;
|
|
};
|
|
|
|
void paren_test() {
|
|
Baz baz;
|
|
int& n = baz.protected_num_;
|
|
sink_protected(n); // expected-warning{{reading variable 'protected_num_' requires holding mutex 'baz.lock_'}}
|
|
int& n2 = (baz.protected_num_);
|
|
sink_protected(n2); // expected-warning{{reading variable 'protected_num_' requires holding mutex 'baz.lock_'}}
|
|
}
|