[Lexer] Add udefined_behavior_sanitizer feature

This can be used to detect whether the code is being built with UBSan using
the __has_feature(undefined_behavior_sanitizer) predicate.

Differential Revision: https://reviews.llvm.org/D52386

llvm-svn: 342793
This commit is contained in:
Leonard Chan 2018-09-22 01:03:16 +00:00
parent 6ce2a2b48e
commit b32d40417e
2 changed files with 15 additions and 0 deletions

View File

@ -38,6 +38,8 @@ FEATURE(hwaddress_sanitizer,
LangOpts.Sanitize.hasOneOf(SanitizerKind::HWAddress |
SanitizerKind::KernelHWAddress))
FEATURE(xray_instrument, LangOpts.XRayInstrument)
FEATURE(undefined_behavior_sanitizer,
LangOpts.Sanitize.hasOneOf(SanitizerKind::Undefined))
FEATURE(assume_nonnull, true)
FEATURE(attribute_analyzer_noreturn, true)
FEATURE(attribute_availability, true)

View File

@ -0,0 +1,13 @@
// RUN: %clang -E -fsanitize=undefined %s -o - | FileCheck --check-prefix=CHECK-UBSAN %s
// RUN: %clang -E -fsanitize=alignment %s -o - | FileCheck --check-prefix=CHECK-ALIGNMENT %s
// RUN: %clang -E %s -o - | FileCheck --check-prefix=CHECK-NO-UBSAN %s
#if __has_feature(undefined_behavior_sanitizer)
int UBSanEnabled();
#else
int UBSanDisabled();
#endif
// CHECK-UBSAN: UBSanEnabled
// CHECK-ALIGNMENT: UBSanEnabled
// CHECK-NO-UBSAN: UBSanDisabled