1a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier//===----------------------------------------------------------------------===//
2a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier//
3a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier//                     The LLVM Compiler Infrastructure
4a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier//
5a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier// This file is dual licensed under the MIT and the University of Illinois Open
6a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier// Source Licenses. See LICENSE.TXT for details.
7a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier//
8a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier//===----------------------------------------------------------------------===//
9a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier
10037efda0aca532bfbc0c15ca7503ded40161df42Richard Barton// UNSUPPORTED: libcpp-has-no-threads
11a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier// REQUIRES: thread-safety
12a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier
13a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier// <mutex>
14a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier
15bca6de0e4edf5de16fad3566645db68966fede58Eric Fiselier// MODULES_DEFINES: _LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS
16a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier#define _LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS
17a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier
18a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier#include <mutex>
19a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier
20a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselierstd::mutex m;
21a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier
22a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselierint main() {
23a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier  m.lock();
24a15e8c3a182f38bb1f64a8ba0f615ab422a025e6Eric Fiselier} // expected-error {{mutex 'm' is still held at the end of function}}
25