diff options
| author | DeLesley Hutchins <delesley@google.com> | 2012-02-16 17:03:24 +0000 |
|---|---|---|
| committer | DeLesley Hutchins <delesley@google.com> | 2012-02-16 17:03:24 +0000 |
| commit | bc8ffdb68ca93699080cf43f7d46a6a5cc0dba6f (patch) | |
| tree | 18445037c73e022d881b82ddbafd2532728ca90f /clang/test | |
| parent | fbb50f19ad7e627dfe6d384050a253a81b834f81 (diff) | |
| download | bcm5719-llvm-bc8ffdb68ca93699080cf43f7d46a6a5cc0dba6f.tar.gz bcm5719-llvm-bc8ffdb68ca93699080cf43f7d46a6a5cc0dba6f.zip | |
Thread-Safety: added support for 'this' as a lock expression.
llvm-svn: 150700
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/SemaCXX/warn-thread-safety-analysis.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/warn-thread-safety-analysis.cpp b/clang/test/SemaCXX/warn-thread-safety-analysis.cpp index e0fde6b2555..20d816a41d8 100644 --- a/clang/test/SemaCXX/warn-thread-safety-analysis.cpp +++ b/clang/test/SemaCXX/warn-thread-safety-analysis.cpp @@ -2049,5 +2049,35 @@ void test() { // expected-warning {{calling function 'foo' requires exclusive lock on 'mu_'}} } +} // end namespace FunctionDefinitionTest + + +namespace SelfLockingTest { + +class LOCKABLE MyLock { +public: + int foo GUARDED_BY(this); + + void lock() EXCLUSIVE_LOCK_FUNCTION(); + void unlock() UNLOCK_FUNCTION(); + + void doSomething() { + this->lock(); // allow 'this' as a lock expression + foo = 0; + doSomethingElse(); + this->unlock(); + } + + void doSomethingElse() EXCLUSIVE_LOCKS_REQUIRED(this) { + foo = 1; + }; + + void test() { + foo = 2; // \ + // expected-warning {{writing variable 'foo' requires locking 'this' exclusively}} + } }; +} // end namespace SelfLockingTest + + |

