aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.3/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-56.C
blob: 71221eb5f653fe32a2c45cf1fcd2655fdd8f3a39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Test the handling of a method with lock annotations accessed through a
// smart/scoped pointer.
// { dg-do compile }
// { dg-options "-Wthread-safety -O" }

#include "thread_annot_common.h"

template<class T>
class scoped_ptr {
 public:
  typedef T element_type;

  explicit scoped_ptr(T * p = 0);
  ~scoped_ptr();

  void reset(T * p = 0);

  T & operator*() const;
  T * operator->() const;
  T * get() const;
};

class LOCKABLE Foo {
 public:
  Mutex *mutex_;
  int x;
  int GetValue() EXCLUSIVE_LOCKS_REQUIRED(mutex);
};

scoped_ptr<Foo> b;

main()
{
  int a;
  a = b->GetValue(); // { dg-warning "Calling function 'GetValue' requires" }
}