diff --git a/clang/include/clang/Basic/Features.def b/clang/include/clang/Basic/Features.def index 10538f555b418..7f5d26118bdc7 100644 --- a/clang/include/clang/Basic/Features.def +++ b/clang/include/clang/Basic/Features.def @@ -54,6 +54,8 @@ FEATURE(memtag_globals, FEATURE(xray_instrument, LangOpts.XRayInstrument) FEATURE(undefined_behavior_sanitizer, LangOpts.Sanitize.hasOneOf(SanitizerKind::Undefined)) +FEATURE(realtime_sanitizer, + LangOpts.Sanitize.has(SanitizerKind::Realtime)) FEATURE(coverage_sanitizer, LangOpts.SanitizeCoverage) FEATURE(assume_nonnull, true) FEATURE(attribute_analyzer_noreturn, true) diff --git a/clang/test/Lexer/has_feature_realtime_sanitizer.cpp b/clang/test/Lexer/has_feature_realtime_sanitizer.cpp new file mode 100644 index 0000000000000..76febeb6473a4 --- /dev/null +++ b/clang/test/Lexer/has_feature_realtime_sanitizer.cpp @@ -0,0 +1,12 @@ +// RUN: %clang_cc1 -E -fsanitize=realtime %s -o - | FileCheck --check-prefix=CHECK-RTSAN %s +// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-RTSAN %s + +#if __has_feature(realtime_sanitizer) +int RealtimeSanitizerEnabled(); +#else +int RealtimeSanitizerDisabled(); +#endif + +// CHECK-RTSAN: RealtimeSanitizerEnabled + +// CHECK-NO-RTSAN: RealtimeSanitizerDisabled