Index: llvm/lib/Support/Signposts.cpp =================================================================== --- llvm/lib/Support/Signposts.cpp +++ llvm/lib/Support/Signposts.cpp @@ -14,6 +14,7 @@ #if LLVM_SUPPORT_XCODE_SIGNPOSTS #include "llvm/ADT/DenseMap.h" #include "llvm/Support/Mutex.h" +#include #include #endif // if LLVM_SUPPORT_XCODE_SIGNPOSTS @@ -47,30 +48,40 @@ const auto &I = Signposts.find(O); if (I != Signposts.end()) return I->second; - - const auto &Inserted = Signposts.insert( - std::make_pair(O, os_signpost_id_make_with_pointer(getLogger(), O))); + os_signpost_id_t ID = {}; + if (__builtin_available(macos 10.14, iOS 12, tvOS 12, watchOS 5, *)) { + ID = os_signpost_id_make_with_pointer(getLogger(), O); + } + const auto &Inserted = Signposts.insert(std::make_pair(O, ID)); return Inserted.first->second; } public: SignpostEmitterImpl() : SignpostLog(LogCreator(), LogDeleter), Signposts() {} - bool isEnabled() const { return os_signpost_enabled(*SignpostLog); } + bool isEnabled() const { + if (__builtin_available(macos 10.14, iOS 12, tvOS 12, watchOS 5, *)) + return os_signpost_enabled(*SignpostLog); + return false; + } void startInterval(const void *O, llvm::StringRef Name) { if (isEnabled()) { - // Both strings used here are required to be constant literal strings. - os_signpost_interval_begin(getLogger(), getSignpostForObject(O), - "LLVM Timers", "Begin %s", Name.data()); + if (__builtin_available(macos 10.14, iOS 12, tvOS 12, watchOS 5, *)) { + // Both strings used here are required to be constant literal strings. + os_signpost_interval_begin(getLogger(), getSignpostForObject(O), + "LLVM Timers", "Begin %s", Name.data()); + } } } void endInterval(const void *O, llvm::StringRef Name) { if (isEnabled()) { - // Both strings used here are required to be constant literal strings. - os_signpost_interval_end(getLogger(), getSignpostForObject(O), - "LLVM Timers", "End %s", Name.data()); + if (__builtin_available(macos 10.14, iOS 12, tvOS 12, watchOS 5, *)) { + // Both strings used here are required to be constant literal strings. + os_signpost_interval_end(getLogger(), getSignpostForObject(O), + "LLVM Timers", "End %s", Name.data()); + } } } };