From e6d1592492a3a379186bfb02bd0f4eda0669c0d5 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Tue, 20 Aug 2019 20:50:12 +0000 Subject: Vendor import of stripped llvm trunk r366426 (just before the release_90 branch point): https://llvm.org/svn/llvm-project/llvm/trunk@366426 --- include/llvm/Support/Signposts.h | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 include/llvm/Support/Signposts.h (limited to 'include/llvm/Support/Signposts.h') diff --git a/include/llvm/Support/Signposts.h b/include/llvm/Support/Signposts.h new file mode 100644 index 000000000000..b5a8c3d61e3e --- /dev/null +++ b/include/llvm/Support/Signposts.h @@ -0,0 +1,43 @@ +//===-- llvm/Support/Signposts.h - Interval debug annotations ---*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +/// \file Some OS's provide profilers that allow applications to provide custom +/// annotations to the profiler. For example, on Xcode 10 and later 'signposts' +/// can be emitted by the application and these will be rendered to the Points +/// of Interest track on the instruments timeline. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_SUPPORT_SIGNPOSTS_H +#define LLVM_SUPPORT_SIGNPOSTS_H + +namespace llvm { +class SignpostEmitterImpl; +class Timer; + +/// Manages the emission of signposts into the recording method supported by +/// the OS. +class SignpostEmitter { + SignpostEmitterImpl *Impl; + +public: + SignpostEmitter(); + ~SignpostEmitter(); + + bool isEnabled() const; + + /// Begin a signposted interval for the given timer. + void startTimerInterval(Timer *T); + /// End a signposted interval for the given timer. + void endTimerInterval(Timer *T); +}; + +} // end namespace llvm + +#endif // ifndef LLVM_SUPPORT_SIGNPOSTS_H -- cgit v1.3