17738db2cSMark de Wever //===----------------------------------------------------------------------===//
27738db2cSMark de Wever //
37738db2cSMark de Wever // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
47738db2cSMark de Wever // See https://llvm.org/LICENSE.txt for license information.
57738db2cSMark de Wever // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
67738db2cSMark de Wever //
77738db2cSMark de Wever //===----------------------------------------------------------------------===//
87738db2cSMark de Wever //
9*a7f9895cSLouis Dionne // UNSUPPORTED: no-monotonic-clock
107738db2cSMark de Wever
117738db2cSMark de Wever // Due to C++17 inline variables ASAN flags this test as containing an ODR
127738db2cSMark de Wever // violation because Clock::is_steady is defined in both the dylib and this TU.
137738db2cSMark de Wever // UNSUPPORTED: asan
147738db2cSMark de Wever
157738db2cSMark de Wever // <chrono>
167738db2cSMark de Wever
177738db2cSMark de Wever // steady_clock
187738db2cSMark de Wever
197738db2cSMark de Wever // check clock invariants
207738db2cSMark de Wever
217738db2cSMark de Wever #include <chrono>
227738db2cSMark de Wever #include <type_traits>
237738db2cSMark de Wever
247738db2cSMark de Wever #include "test_macros.h"
257738db2cSMark de Wever
267738db2cSMark de Wever template <class T>
test(const T &)277738db2cSMark de Wever void test(const T &) {}
287738db2cSMark de Wever
main(int,char **)297738db2cSMark de Wever int main(int, char**)
307738db2cSMark de Wever {
317738db2cSMark de Wever typedef std::chrono::steady_clock C;
327738db2cSMark de Wever static_assert((std::is_same<C::rep, C::duration::rep>::value), "");
337738db2cSMark de Wever static_assert((std::is_same<C::period, C::duration::period>::value), "");
347738db2cSMark de Wever static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
357738db2cSMark de Wever static_assert(C::is_steady, "");
367738db2cSMark de Wever test(std::chrono::steady_clock::is_steady);
377738db2cSMark de Wever
387738db2cSMark de Wever return 0;
397738db2cSMark de Wever }
40