diff options
Diffstat (limited to 'include/clang/Basic/Features.def')
-rw-r--r-- | include/clang/Basic/Features.def | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/include/clang/Basic/Features.def b/include/clang/Basic/Features.def index a0e0ce4560abe..05464ed85f136 100644 --- a/include/clang/Basic/Features.def +++ b/include/clang/Basic/Features.def @@ -17,6 +17,12 @@ // // The Predicate field dictates the conditions under which the feature or // extension will be made available. +// +// FEATURE(...) should be used to advertise support for standard language +// features, whereas EXTENSION(...) should be used for clang extensions. Note +// that many of the identifiers in this file don't follow this rule for backward +// compatibility reasons. +// //===----------------------------------------------------------------------===// #if !defined(FEATURE) && !defined(EXTENSION) @@ -37,6 +43,9 @@ FEATURE(address_sanitizer, 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) @@ -48,6 +57,7 @@ FEATURE(attribute_availability_watchos, true) FEATURE(attribute_availability_with_strict, true) FEATURE(attribute_availability_with_replacement, true) FEATURE(attribute_availability_in_templates, true) +FEATURE(attribute_availability_swift, true) FEATURE(attribute_cf_returns_not_retained, true) FEATURE(attribute_cf_returns_retained, true) FEATURE(attribute_cf_returns_on_parameters, true) @@ -72,7 +82,9 @@ FEATURE(cxx_rtti, LangOpts.RTTI &&LangOpts.RTTIData) FEATURE(enumerator_attributes, true) FEATURE(nullability, true) FEATURE(nullability_on_arrays, true) -FEATURE(memory_sanitizer, LangOpts.Sanitize.has(SanitizerKind::Memory)) +FEATURE(memory_sanitizer, + LangOpts.Sanitize.hasOneOf(SanitizerKind::Memory | + SanitizerKind::KernelMemory)) FEATURE(thread_sanitizer, LangOpts.Sanitize.has(SanitizerKind::Thread)) FEATURE(dataflow_sanitizer, LangOpts.Sanitize.has(SanitizerKind::DataFlow)) FEATURE(efficiency_sanitizer, @@ -83,11 +95,11 @@ FEATURE(objc_arr, LangOpts.ObjCAutoRefCount) // FIXME: REMOVE? FEATURE(objc_arc, LangOpts.ObjCAutoRefCount) FEATURE(objc_arc_fields, true) FEATURE(objc_arc_weak, LangOpts.ObjCWeak) -FEATURE(objc_default_synthesize_properties, LangOpts.ObjC2) -FEATURE(objc_fixed_enum, LangOpts.ObjC2) -FEATURE(objc_instancetype, LangOpts.ObjC2) -FEATURE(objc_kindof, LangOpts.ObjC2) -FEATURE(objc_modules, LangOpts.ObjC2 &&LangOpts.Modules) +FEATURE(objc_default_synthesize_properties, LangOpts.ObjC) +FEATURE(objc_fixed_enum, true) +FEATURE(objc_instancetype, LangOpts.ObjC) +FEATURE(objc_kindof, LangOpts.ObjC) +FEATURE(objc_modules, LangOpts.ObjC && LangOpts.Modules) FEATURE(objc_nonfragile_abi, LangOpts.ObjCRuntime.isNonFragile()) FEATURE(objc_property_explicit_atomic, true) FEATURE(objc_protocol_qualifier_mangling, true) @@ -97,16 +109,16 @@ FEATURE(ownership_returns, true) FEATURE(ownership_takes, true) FEATURE(objc_bool, true) FEATURE(objc_subscripting, LangOpts.ObjCRuntime.isNonFragile()) -FEATURE(objc_array_literals, LangOpts.ObjC2) -FEATURE(objc_dictionary_literals, LangOpts.ObjC2) -FEATURE(objc_boxed_expressions, LangOpts.ObjC2) -FEATURE(objc_boxed_nsvalue_expressions, LangOpts.ObjC2) +FEATURE(objc_array_literals, LangOpts.ObjC) +FEATURE(objc_dictionary_literals, LangOpts.ObjC) +FEATURE(objc_boxed_expressions, LangOpts.ObjC) +FEATURE(objc_boxed_nsvalue_expressions, LangOpts.ObjC) FEATURE(arc_cf_code_audited, true) FEATURE(objc_bridge_id, true) FEATURE(objc_bridge_id_on_typedefs, true) -FEATURE(objc_generics, LangOpts.ObjC2) -FEATURE(objc_generics_variance, LangOpts.ObjC2) -FEATURE(objc_class_property, LangOpts.ObjC2) +FEATURE(objc_generics, LangOpts.ObjC) +FEATURE(objc_generics_variance, LangOpts.ObjC) +FEATURE(objc_class_property, LangOpts.ObjC) // C11 features FEATURE(c_alignas, LangOpts.C11) FEATURE(c_alignof, LangOpts.C11) @@ -227,12 +239,14 @@ EXTENSION(cxx_range_for, LangOpts.CPlusPlus) EXTENSION(cxx_reference_qualified_functions, LangOpts.CPlusPlus) EXTENSION(cxx_rvalue_references, LangOpts.CPlusPlus) EXTENSION(cxx_variadic_templates, LangOpts.CPlusPlus) +EXTENSION(cxx_fixed_enum, true) // C++14 features supported by other languages as extensions. EXTENSION(cxx_binary_literals, true) EXTENSION(cxx_init_captures, LangOpts.CPlusPlus11) EXTENSION(cxx_variable_templates, LangOpts.CPlusPlus) // Miscellaneous language extensions EXTENSION(overloadable_unmarked, true) +EXTENSION(pragma_clang_attribute_namespaces, true) #undef EXTENSION #undef FEATURE |