From 00f51c0904dac4983d196e04bffac062edb25511 Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Mon, 17 Sep 2018 05:25:47 +0000 Subject: [PATCH] [Lexer] Add xray_instrument feature This can be used to detect whether the code is being built with XRay instrumentation using the __has_feature(xray_instrument) predicate. Differential Revision: https://reviews.llvm.org/D52159 llvm-svn: 342358 --- clang/include/clang/Basic/Features.def | 1 + clang/test/Lexer/has_feature_xray_instrument.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 clang/test/Lexer/has_feature_xray_instrument.cpp diff --git a/clang/include/clang/Basic/Features.def b/clang/include/clang/Basic/Features.def index 05c5a5b..f816d18 100644 --- a/clang/include/clang/Basic/Features.def +++ b/clang/include/clang/Basic/Features.def @@ -37,6 +37,7 @@ FEATURE(address_sanitizer, FEATURE(hwaddress_sanitizer, LangOpts.Sanitize.hasOneOf(SanitizerKind::HWAddress | SanitizerKind::KernelHWAddress)) +FEATURE(xray_instrument, LangOpts.XRayInstrument) FEATURE(assume_nonnull, true) FEATURE(attribute_analyzer_noreturn, true) FEATURE(attribute_availability, true) diff --git a/clang/test/Lexer/has_feature_xray_instrument.cpp b/clang/test/Lexer/has_feature_xray_instrument.cpp new file mode 100644 index 0000000..cd2750d --- /dev/null +++ b/clang/test/Lexer/has_feature_xray_instrument.cpp @@ -0,0 +1,11 @@ +// RUN: %clang_cc1 -E -fxray-instrument %s -o - | FileCheck --check-prefix=CHECK-XRAY %s +// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-XRAY %s + +#if __has_feature(xray_instrument) +int XRayInstrumentEnabled(); +#else +int XRayInstrumentDisabled(); +#endif + +// CHECK-XRAY: XRayInstrumentEnabled +// CHECK-NO-XRAY: XRayInstrumentDisabled -- 2.7.4