Lines Matching full:feature
10 // via __has_extension. Users of this file must either define the FEATURE or
17 // The Predicate field dictates the conditions under which the feature or
20 // FEATURE(...) should be used to advertise support for standard language
27 #if !defined(FEATURE) && !defined(EXTENSION)
28 # error Define either the FEATURE or EXTENSION macro to handle features
31 #ifndef FEATURE
32 #define FEATURE(Name, Predicate)
39 FEATURE(speculative_load_hardening, LangOpts.SpeculativeLoadHardening)
40 FEATURE(address_sanitizer,
43 FEATURE(leak_sanitizer,
45 FEATURE(hwaddress_sanitizer,
48 FEATURE(memtag_stack,
50 FEATURE(memtag_heap,
52 FEATURE(memtag_globals,
54 FEATURE(xray_instrument, LangOpts.XRayInstrument)
55 FEATURE(undefined_behavior_sanitizer,
57 FEATURE(realtime_sanitizer,
59 FEATURE(coverage_sanitizer, LangOpts.SanitizeCoverage)
60 FEATURE(assume_nonnull, true)
61 FEATURE(attribute_analyzer_noreturn, true)
62 FEATURE(attribute_availability, true)
63 FEATURE(attribute_availability_with_message, true)
64 FEATURE(attribute_availability_app_extension, true)
65 FEATURE(attribute_availability_with_version_underscores, true)
66 FEATURE(attribute_availability_tvos, true)
67 FEATURE(attribute_availability_watchos, true)
68 FEATURE(attribute_availability_driverkit, true)
69 FEATURE(attribute_availability_with_strict, true)
70 FEATURE(attribute_availability_with_replacement, true)
71 FEATURE(attribute_availability_in_templates, true)
72 FEATURE(attribute_availability_swift, true)
73 FEATURE(attribute_cf_returns_not_retained, true)
74 FEATURE(attribute_cf_returns_retained, true)
75 FEATURE(attribute_cf_returns_on_parameters, true)
76 FEATURE(attribute_deprecated_with_message, true)
77 FEATURE(attribute_deprecated_with_replacement, true)
78 FEATURE(attribute_ext_vector_type, true)
79 FEATURE(attribute_ns_returns_not_retained, true)
80 FEATURE(attribute_ns_returns_retained, true)
81 FEATURE(attribute_ns_consumes_self, true)
82 FEATURE(attribute_ns_consumed, true)
83 FEATURE(attribute_cf_consumed, true)
84 FEATURE(attribute_objc_ivar_unused, true)
85 FEATURE(attribute_objc_method_family, true)
86 FEATURE(attribute_overloadable, true)
87 FEATURE(attribute_unavailable_with_message, true)
88 FEATURE(attribute_unused_on_fields, true)
89 FEATURE(attribute_diagnose_if_objc, true)
90 FEATURE(blocks, LangOpts.Blocks)
91 FEATURE(c_thread_safety_attributes, true)
92 FEATURE(cxx_exceptions, LangOpts.CXXExceptions)
93 FEATURE(cxx_rtti, LangOpts.RTTI &&LangOpts.RTTIData)
96 FEATURE(enumerator_attributes, true)
97 FEATURE(nullability, true)
98 FEATURE(nullability_on_arrays, true)
99 FEATURE(nullability_on_classes, true)
100 FEATURE(nullability_nullable_result, true)
101 FEATURE(numerical_stability_sanitizer, LangOpts.Sanitize.has(SanitizerKind::NumericalStability))
102 FEATURE(memory_sanitizer,
105 FEATURE(type_sanitizer, LangOpts.Sanitize.has(SanitizerKind::Type))
106 FEATURE(thread_sanitizer, LangOpts.Sanitize.has(SanitizerKind::Thread))
107 FEATURE(dataflow_sanitizer, LangOpts.Sanitize.has(SanitizerKind::DataFlow))
108 FEATURE(scudo, LangOpts.Sanitize.hasOneOf(SanitizerKind::Scudo))
109 FEATURE(ptrauth_intrinsics, LangOpts.PointerAuthIntrinsics)
110 FEATURE(ptrauth_calls, LangOpts.PointerAuthCalls)
111 FEATURE(ptrauth_returns, LangOpts.PointerAuthReturns)
112 FEATURE(ptrauth_vtable_pointer_address_discrimination, LangOpts.PointerAuthVTPtrAddressDiscrimination)
113 FEATURE(ptrauth_vtable_pointer_type_discrimination, LangOpts.PointerAuthVTPtrTypeDiscrimination)
114 FEATURE(ptrauth_type_info_vtable_pointer_discrimination, LangOpts.PointerAuthTypeInfoVTPtrDiscrimination)
115 FEATURE(ptrauth_member_function_pointer_type_discrimination, LangOpts.PointerAuthCalls)
116 FEATURE(ptrauth_function_pointer_type_discrimination, LangOpts.PointerAuthFunctionTypeDiscrimination)
117 FEATURE(ptrauth_indirect_gotos, LangOpts.PointerAuthIndirectGotos)
118 FEATURE(ptrauth_init_fini, LangOpts.PointerAuthInitFini)
119 FEATURE(ptrauth_init_fini_address_discrimination, LangOpts.PointerAuthInitFiniAddressDiscrimination)
120 FEATURE(ptrauth_elf_got, LangOpts.PointerAuthELFGOT)
127 FEATURE(pragma_stdc_cx_limited_range, true)
129 FEATURE(objc_arr, LangOpts.ObjCAutoRefCount) // FIXME: REMOVE?
130 FEATURE(objc_arc, LangOpts.ObjCAutoRefCount)
131 FEATURE(objc_arc_fields, true)
132 FEATURE(objc_arc_weak, LangOpts.ObjCWeak)
133 FEATURE(objc_default_synthesize_properties, LangOpts.ObjC)
134 FEATURE(objc_fixed_enum, LangOpts.ObjC)
135 FEATURE(objc_instancetype, LangOpts.ObjC)
136 FEATURE(objc_kindof, LangOpts.ObjC)
137 FEATURE(objc_modules, LangOpts.ObjC && LangOpts.Modules)
138 FEATURE(objc_nonfragile_abi, LangOpts.ObjCRuntime.isNonFragile())
139 FEATURE(objc_property_explicit_atomic, true)
140 FEATURE(objc_protocol_qualifier_mangling, true)
141 FEATURE(objc_weak_class, LangOpts.ObjCRuntime.hasWeakClassImport())
142 FEATURE(ownership_holds, true)
143 FEATURE(ownership_returns, true)
144 FEATURE(ownership_takes, true)
145 FEATURE(objc_bool, true)
146 FEATURE(objc_subscripting, LangOpts.ObjCRuntime.isNonFragile())
147 FEATURE(objc_array_literals, LangOpts.ObjC)
148 FEATURE(objc_dictionary_literals, LangOpts.ObjC)
149 FEATURE(objc_boxed_expressions, LangOpts.ObjC)
150 FEATURE(objc_boxed_nsvalue_expressions, LangOpts.ObjC)
151 FEATURE(arc_cf_code_audited, true)
152 FEATURE(objc_bridge_id, true)
153 FEATURE(objc_bridge_id_on_typedefs, true)
154 FEATURE(objc_generics, LangOpts.ObjC)
155 FEATURE(objc_generics_variance, LangOpts.ObjC)
156 FEATURE(objc_class_property, LangOpts.ObjC)
157 FEATURE(objc_c_static_assert, LangOpts.C11)
158 FEATURE(objc_cxx_static_assert, LangOpts.CPlusPlus11)
161 FEATURE(c_alignas, LangOpts.C11)
162 FEATURE(c_alignof, LangOpts.C11)
163 FEATURE(c_atomic, LangOpts.C11)
164 FEATURE(c_generic_selections, LangOpts.C11)
165 FEATURE(c_static_assert, LangOpts.C11)
166 FEATURE(c_thread_local, LangOpts.C11 &&PP.getTargetInfo().isTLSSupported())
168 FEATURE(c_fixed_enum, LangOpts.C23)
170 FEATURE(cxx_access_control_sfinae, LangOpts.CPlusPlus11)
171 FEATURE(cxx_alias_templates, LangOpts.CPlusPlus11)
172 FEATURE(cxx_alignas, LangOpts.CPlusPlus11)
173 FEATURE(cxx_alignof, LangOpts.CPlusPlus11)
174 FEATURE(cxx_atomic, LangOpts.CPlusPlus11)
175 FEATURE(cxx_attributes, LangOpts.CPlusPlus11)
176 FEATURE(cxx_auto_type, LangOpts.CPlusPlus11)
177 FEATURE(cxx_constexpr, LangOpts.CPlusPlus11)
178 FEATURE(cxx_constexpr_string_builtins, LangOpts.CPlusPlus11)
179 FEATURE(cxx_decltype, LangOpts.CPlusPlus11)
180 FEATURE(cxx_decltype_incomplete_return_types, LangOpts.CPlusPlus11)
181 FEATURE(cxx_default_function_template_args, LangOpts.CPlusPlus11)
182 FEATURE(cxx_defaulted_functions, LangOpts.CPlusPlus11)
183 FEATURE(cxx_delegating_constructors, LangOpts.CPlusPlus11)
184 FEATURE(cxx_deleted_functions, LangOpts.CPlusPlus11)
185 FEATURE(cxx_explicit_conversions, LangOpts.CPlusPlus11)
186 FEATURE(cxx_generalized_initializers, LangOpts.CPlusPlus11)
187 FEATURE(cxx_implicit_moves, LangOpts.CPlusPlus11)
188 FEATURE(cxx_inheriting_constructors, LangOpts.CPlusPlus11)
189 FEATURE(cxx_inline_namespaces, LangOpts.CPlusPlus11)
190 FEATURE(cxx_lambdas, LangOpts.CPlusPlus11)
191 FEATURE(cxx_local_type_template_args, LangOpts.CPlusPlus11)
192 FEATURE(cxx_nonstatic_member_init, LangOpts.CPlusPlus11)
193 FEATURE(cxx_noexcept, LangOpts.CPlusPlus11)
194 FEATURE(cxx_nullptr, LangOpts.CPlusPlus11)
195 FEATURE(cxx_override_control, LangOpts.CPlusPlus11)
196 FEATURE(cxx_range_for, LangOpts.CPlusPlus11)
197 FEATURE(cxx_raw_string_literals, LangOpts.CPlusPlus11)
198 FEATURE(cxx_reference_qualified_functions, LangOpts.CPlusPlus11)
199 FEATURE(cxx_rvalue_references, LangOpts.CPlusPlus11)
200 FEATURE(cxx_strong_enums, LangOpts.CPlusPlus11)
201 FEATURE(cxx_static_assert, LangOpts.CPlusPlus11)
202 FEATURE(cxx_thread_local,
204 FEATURE(cxx_trailing_return, LangOpts.CPlusPlus11)
205 FEATURE(cxx_unicode_literals, LangOpts.CPlusPlus11)
206 FEATURE(cxx_unrestricted_unions, LangOpts.CPlusPlus11)
207 FEATURE(cxx_user_literals, LangOpts.CPlusPlus11)
208 FEATURE(cxx_variadic_templates, LangOpts.CPlusPlus11)
210 FEATURE(cxx_aggregate_nsdmi, LangOpts.CPlusPlus14)
211 FEATURE(cxx_binary_literals, LangOpts.CPlusPlus14)
212 FEATURE(cxx_contextual_conversions, LangOpts.CPlusPlus14)
213 FEATURE(cxx_decltype_auto, LangOpts.CPlusPlus14)
214 FEATURE(cxx_generic_lambdas, LangOpts.CPlusPlus14)
215 FEATURE(cxx_init_captures, LangOpts.CPlusPlus14)
216 FEATURE(cxx_relaxed_constexpr, LangOpts.CPlusPlus14)
217 FEATURE(cxx_return_type_deduction, LangOpts.CPlusPlus14)
218 FEATURE(cxx_variable_templates, LangOpts.CPlusPlus14)
223 // FEATURE(cxx_runtime_arrays, LangOpts.CPlusPlusTSArrays)
224 // FEATURE(cxx_concepts, LangOpts.CPlusPlusTSConcepts)
226 // FEATURE(raw_invocation_type, LangOpts.CPlusPlus)
230 FEATURE(has_nothrow_assign, LangOpts.CPlusPlus)
231 FEATURE(has_nothrow_copy, LangOpts.CPlusPlus)
232 FEATURE(has_nothrow_constructor, LangOpts.CPlusPlus)
233 FEATURE(has_trivial_assign, LangOpts.CPlusPlus)
234 FEATURE(has_trivial_copy, LangOpts.CPlusPlus)
235 FEATURE(has_trivial_constructor, LangOpts.CPlusPlus)
236 FEATURE(has_trivial_destructor, LangOpts.CPlusPlus)
237 FEATURE(has_virtual_destructor, LangOpts.CPlusPlus)
238 FEATURE(is_abstract, LangOpts.CPlusPlus)
239 FEATURE(is_base_of, LangOpts.CPlusPlus)
240 FEATURE(is_class, LangOpts.CPlusPlus)
241 FEATURE(is_constructible, LangOpts.CPlusPlus)
242 FEATURE(is_convertible_to, LangOpts.CPlusPlus)
243 FEATURE(is_empty, LangOpts.CPlusPlus)
244 FEATURE(is_enum, LangOpts.CPlusPlus)
245 FEATURE(is_final, LangOpts.CPlusPlus)
246 FEATURE(is_literal, LangOpts.CPlusPlus)
247 FEATURE(is_standard_layout, LangOpts.CPlusPlus)
248 FEATURE(is_pod, LangOpts.CPlusPlus)
249 FEATURE(is_polymorphic, LangOpts.CPlusPlus)
250 FEATURE(is_sealed, LangOpts.CPlusPlus &&LangOpts.MicrosoftExt)
251 FEATURE(is_trivial, LangOpts.CPlusPlus)
252 FEATURE(is_trivially_assignable, LangOpts.CPlusPlus)
253 FEATURE(is_trivially_constructible, LangOpts.CPlusPlus)
254 FEATURE(is_trivially_copyable, LangOpts.CPlusPlus)
255 FEATURE(is_union, LangOpts.CPlusPlus)
256 FEATURE(kcfi, LangOpts.Sanitize.has(SanitizerKind::KCFI))
257 FEATURE(modules, LangOpts.Modules)
258 FEATURE(safe_stack, LangOpts.Sanitize.has(SanitizerKind::SafeStack))
259 FEATURE(shadow_call_stack,
261 FEATURE(tls, PP.getTargetInfo().isTLSSupported())
262 FEATURE(underlying_type, LangOpts.CPlusPlus)
263 FEATURE(experimental_library, LangOpts.ExperimentalLibrary)
313 FEATURE(cxx_abi_relative_vtable, LangOpts.CPlusPlus && LangOpts.RelativeCXXABIVTables)
316 FEATURE(cuda_noinline_keyword, LangOpts.CUDA)
320 #undef FEATURE