diff options
Diffstat (limited to 'clang-r353983/include/clang/Basic')
122 files changed, 41216 insertions, 0 deletions
diff --git a/clang-r353983/include/clang/Basic/ABI.h b/clang-r353983/include/clang/Basic/ABI.h new file mode 100644 index 00000000..2401ffa2 --- /dev/null +++ b/clang-r353983/include/clang/Basic/ABI.h @@ -0,0 +1,210 @@ +//===----- ABI.h - ABI related declarations ---------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Enums/classes describing ABI related information about constructors, +/// destructors and thunks. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_ABI_H +#define LLVM_CLANG_BASIC_ABI_H + +#include "llvm/Support/DataTypes.h" +#include <cstring> + +namespace clang { + +/// C++ constructor types. +enum CXXCtorType { + Ctor_Complete, ///< Complete object ctor + Ctor_Base, ///< Base object ctor + Ctor_Comdat, ///< The COMDAT used for ctors + Ctor_CopyingClosure, ///< Copying closure variant of a ctor + Ctor_DefaultClosure, ///< Default closure variant of a ctor +}; + +/// C++ destructor types. +enum CXXDtorType { + Dtor_Deleting, ///< Deleting dtor + Dtor_Complete, ///< Complete object dtor + Dtor_Base, ///< Base object dtor + Dtor_Comdat ///< The COMDAT used for dtors +}; + +/// A return adjustment. +struct ReturnAdjustment { + /// The non-virtual adjustment from the derived object to its + /// nearest virtual base. + int64_t NonVirtual; + + /// Holds the ABI-specific information about the virtual return + /// adjustment, if needed. + union VirtualAdjustment { + // Itanium ABI + struct { + /// The offset (in bytes), relative to the address point + /// of the virtual base class offset. + int64_t VBaseOffsetOffset; + } Itanium; + + // Microsoft ABI + struct { + /// The offset (in bytes) of the vbptr, relative to the beginning + /// of the derived class. + uint32_t VBPtrOffset; + + /// Index of the virtual base in the vbtable. + uint32_t VBIndex; + } Microsoft; + + VirtualAdjustment() { + memset(this, 0, sizeof(*this)); + } + + bool Equals(const VirtualAdjustment &Other) const { + return memcmp(this, &Other, sizeof(Other)) == 0; + } + + bool isEmpty() const { + VirtualAdjustment Zero; + return Equals(Zero); + } + + bool Less(const VirtualAdjustment &RHS) const { + return memcmp(this, &RHS, sizeof(RHS)) < 0; + } + } Virtual; + + ReturnAdjustment() : NonVirtual(0) {} + + bool isEmpty() const { return !NonVirtual && Virtual.isEmpty(); } + + friend bool operator==(const ReturnAdjustment &LHS, + const ReturnAdjustment &RHS) { + return LHS.NonVirtual == RHS.NonVirtual && LHS.Virtual.Equals(RHS.Virtual); + } + + friend bool operator!=(const ReturnAdjustment &LHS, const ReturnAdjustment &RHS) { + return !(LHS == RHS); + } + + friend bool operator<(const ReturnAdjustment &LHS, + const ReturnAdjustment &RHS) { + if (LHS.NonVirtual < RHS.NonVirtual) + return true; + + return LHS.NonVirtual == RHS.NonVirtual && LHS.Virtual.Less(RHS.Virtual); + } +}; + +/// A \c this pointer adjustment. +struct ThisAdjustment { + /// The non-virtual adjustment from the derived object to its + /// nearest virtual base. + int64_t NonVirtual; + + /// Holds the ABI-specific information about the virtual this + /// adjustment, if needed. + union VirtualAdjustment { + // Itanium ABI + struct { + /// The offset (in bytes), relative to the address point, + /// of the virtual call offset. + int64_t VCallOffsetOffset; + } Itanium; + + struct { + /// The offset of the vtordisp (in bytes), relative to the ECX. + int32_t VtordispOffset; + + /// The offset of the vbptr of the derived class (in bytes), + /// relative to the ECX after vtordisp adjustment. + int32_t VBPtrOffset; + + /// The offset (in bytes) of the vbase offset in the vbtable. + int32_t VBOffsetOffset; + } Microsoft; + + VirtualAdjustment() { + memset(this, 0, sizeof(*this)); + } + + bool Equals(const VirtualAdjustment &Other) const { + return memcmp(this, &Other, sizeof(Other)) == 0; + } + + bool isEmpty() const { + VirtualAdjustment Zero; + return Equals(Zero); + } + + bool Less(const VirtualAdjustment &RHS) const { + return memcmp(this, &RHS, sizeof(RHS)) < 0; + } + } Virtual; + + ThisAdjustment() : NonVirtual(0) { } + + bool isEmpty() const { return !NonVirtual && Virtual.isEmpty(); } + + friend bool operator==(const ThisAdjustment &LHS, + const ThisAdjustment &RHS) { + return LHS.NonVirtual == RHS.NonVirtual && LHS.Virtual.Equals(RHS.Virtual); + } + + friend bool operator!=(const ThisAdjustment &LHS, const ThisAdjustment &RHS) { + return !(LHS == RHS); + } + + friend bool operator<(const ThisAdjustment &LHS, + const ThisAdjustment &RHS) { + if (LHS.NonVirtual < RHS.NonVirtual) + return true; + + return LHS.NonVirtual == RHS.NonVirtual && LHS.Virtual.Less(RHS.Virtual); + } +}; + +class CXXMethodDecl; + +/// The \c this pointer adjustment as well as an optional return +/// adjustment for a thunk. +struct ThunkInfo { + /// The \c this pointer adjustment. + ThisAdjustment This; + + /// The return adjustment. + ReturnAdjustment Return; + + /// Holds a pointer to the overridden method this thunk is for, + /// if needed by the ABI to distinguish different thunks with equal + /// adjustments. Otherwise, null. + /// CAUTION: In the unlikely event you need to sort ThunkInfos, consider using + /// an ABI-specific comparator. + const CXXMethodDecl *Method; + + ThunkInfo() : Method(nullptr) { } + + ThunkInfo(const ThisAdjustment &This, const ReturnAdjustment &Return, + const CXXMethodDecl *Method = nullptr) + : This(This), Return(Return), Method(Method) {} + + friend bool operator==(const ThunkInfo &LHS, const ThunkInfo &RHS) { + return LHS.This == RHS.This && LHS.Return == RHS.Return && + LHS.Method == RHS.Method; + } + + bool isEmpty() const { + return This.isEmpty() && Return.isEmpty() && Method == nullptr; + } +}; + +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/AddressSpaces.h b/clang-r353983/include/clang/Basic/AddressSpaces.h new file mode 100644 index 00000000..2cc67474 --- /dev/null +++ b/clang-r353983/include/clang/Basic/AddressSpaces.h @@ -0,0 +1,73 @@ +//===- AddressSpaces.h - Language-specific address spaces -------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Provides definitions for the various language-specific address +/// spaces. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_ADDRESSSPACES_H +#define LLVM_CLANG_BASIC_ADDRESSSPACES_H + +#include <cassert> + +namespace clang { + +/// Defines the address space values used by the address space qualifier +/// of QualType. +/// +enum class LangAS : unsigned { + // The default value 0 is the value used in QualType for the situation + // where there is no address space qualifier. + Default = 0, + + // OpenCL specific address spaces. + // In OpenCL each l-value must have certain non-default address space, each + // r-value must have no address space (i.e. the default address space). The + // pointee of a pointer must have non-default address space. + opencl_global, + opencl_local, + opencl_constant, + opencl_private, + opencl_generic, + + // CUDA specific address spaces. + cuda_device, + cuda_constant, + cuda_shared, + + // This denotes the count of language-specific address spaces and also + // the offset added to the target-specific address spaces, which are usually + // specified by address space attributes __attribute__(address_space(n))). + FirstTargetAddressSpace +}; + +/// The type of a lookup table which maps from language-specific address spaces +/// to target-specific ones. +using LangASMap = unsigned[(unsigned)LangAS::FirstTargetAddressSpace]; + +/// \return whether \p AS is a target-specific address space rather than a +/// clang AST address space +inline bool isTargetAddressSpace(LangAS AS) { + return (unsigned)AS >= (unsigned)LangAS::FirstTargetAddressSpace; +} + +inline unsigned toTargetAddressSpace(LangAS AS) { + assert(isTargetAddressSpace(AS)); + return (unsigned)AS - (unsigned)LangAS::FirstTargetAddressSpace; +} + +inline LangAS getLangASFromTargetAS(unsigned TargetAS) { + return static_cast<LangAS>((TargetAS) + + (unsigned)LangAS::FirstTargetAddressSpace); +} + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_ADDRESSSPACES_H diff --git a/clang-r353983/include/clang/Basic/AlignedAllocation.h b/clang-r353983/include/clang/Basic/AlignedAllocation.h new file mode 100644 index 00000000..88410c5c --- /dev/null +++ b/clang-r353983/include/clang/Basic/AlignedAllocation.h @@ -0,0 +1,43 @@ +//===--- AlignedAllocation.h - Aligned Allocation ---------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines a function that returns the minimum OS versions supporting +/// C++17's aligned allocation functions. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_ALIGNED_ALLOCATION_H +#define LLVM_CLANG_BASIC_ALIGNED_ALLOCATION_H + +#include "llvm/ADT/Triple.h" +#include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/VersionTuple.h" + +namespace clang { + +inline llvm::VersionTuple alignedAllocMinVersion(llvm::Triple::OSType OS) { + switch (OS) { + default: + break; + case llvm::Triple::Darwin: + case llvm::Triple::MacOSX: // Earliest supporting version is 10.14. + return llvm::VersionTuple(10U, 14U); + case llvm::Triple::IOS: + case llvm::Triple::TvOS: // Earliest supporting version is 11.0.0. + return llvm::VersionTuple(11U); + case llvm::Triple::WatchOS: // Earliest supporting version is 4.0.0. + return llvm::VersionTuple(4U); + } + + llvm_unreachable("Unexpected OS"); +} + +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_ALIGNED_ALLOCATION_H diff --git a/clang-r353983/include/clang/Basic/AllDiagnostics.h b/clang-r353983/include/clang/Basic/AllDiagnostics.h new file mode 100644 index 00000000..cc6aa631 --- /dev/null +++ b/clang-r353983/include/clang/Basic/AllDiagnostics.h @@ -0,0 +1,41 @@ +//===--- AllDiagnostics.h - Aggregate Diagnostic headers --------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Includes all the separate Diagnostic headers & some related helpers. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_ALLDIAGNOSTICS_H +#define LLVM_CLANG_BASIC_ALLDIAGNOSTICS_H + +#include "clang/Basic/DiagnosticAST.h" +#include "clang/Basic/DiagnosticAnalysis.h" +#include "clang/Basic/DiagnosticComment.h" +#include "clang/Basic/DiagnosticCrossTU.h" +#include "clang/Basic/DiagnosticDriver.h" +#include "clang/Basic/DiagnosticFrontend.h" +#include "clang/Basic/DiagnosticLex.h" +#include "clang/Basic/DiagnosticParse.h" +#include "clang/Basic/DiagnosticSema.h" +#include "clang/Basic/DiagnosticSerialization.h" +#include "clang/Basic/DiagnosticRefactoring.h" + +namespace clang { +template <size_t SizeOfStr, typename FieldType> +class StringSizerHelper { + static_assert(SizeOfStr <= FieldType(~0U), "Field too small!"); +public: + enum { Size = SizeOfStr }; +}; +} // end namespace clang + +#define STR_SIZE(str, fieldTy) clang::StringSizerHelper<sizeof(str)-1, \ + fieldTy>::Size + +#endif diff --git a/clang-r353983/include/clang/Basic/AttrHasAttributeImpl.inc b/clang-r353983/include/clang/Basic/AttrHasAttributeImpl.inc new file mode 100644 index 00000000..bd8bdcc9 --- /dev/null +++ b/clang-r353983/include/clang/Basic/AttrHasAttributeImpl.inc @@ -0,0 +1,843 @@ +/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ +|* *| +|* Code to implement the __has_attribute logic *| +|* *| +|* Automatically generated file, do not edit! *| +|* *| +\*===----------------------------------------------------------------------===*/ + +const llvm::Triple &T = Target.getTriple(); +switch (Syntax) { +case AttrSyntax::GNU: + return llvm::StringSwitch<int>(Name) + .Case("aarch64_vector_pcs", 1) + .Case("amdgpu_flat_work_group_size", 1) + .Case("amdgpu_num_sgpr", 1) + .Case("amdgpu_num_vgpr", 1) + .Case("amdgpu_waves_per_eu", 1) + .Case("interrupt", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) ? 1 : 0) + .Case("interrupt", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0) + .Case("signal", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0) + .Case("abi_tag", 1) + .Case("acquire_capability", 1) + .Case("acquire_shared_capability", 1) + .Case("exclusive_lock_function", 1) + .Case("shared_lock_function", 1) + .Case("acquire_capability", 1) + .Case("acquire_shared_capability", 1) + .Case("exclusive_lock_function", 1) + .Case("shared_lock_function", 1) + .Case("acquire_capability", 1) + .Case("acquire_shared_capability", 1) + .Case("exclusive_lock_function", 1) + .Case("shared_lock_function", 1) + .Case("acquire_capability", 1) + .Case("acquire_shared_capability", 1) + .Case("exclusive_lock_function", 1) + .Case("shared_lock_function", 1) + .Case("acquired_after", 1) + .Case("acquired_before", 1) + .Case("address_space", 1) + .Case("alias", 1) + .Case("align_value", 1) + .Case("aligned", 1) + .Case("alloc_align", 1) + .Case("alloc_size", 1) + .Case("always_destroy", 1) + .Case("always_inline", 1) + .Case("analyzer_noreturn", 1) + .Case("annotate", 1) + .Case("interrupt", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0) + .Case("no_caller_saved_registers", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0) + .Case("nocf_check", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0) + .Case("objc_arc_weak_reference_unavailable", 1) + .Case("argument_with_type_tag", 1) + .Case("pointer_with_type_tag", 1) + .Case("argument_with_type_tag", 1) + .Case("pointer_with_type_tag", 1) + .Case("artificial", 1) + .Case("assert_capability", 1) + .Case("assert_shared_capability", 1) + .Case("assert_capability", 1) + .Case("assert_shared_capability", 1) + .Case("assert_exclusive_lock", 1) + .Case("assert_shared_lock", 1) + .Case("assume_aligned", 1) + .Case("availability", 1) + .Case("blocks", 1) + .Case("bounded", 1) + .Case("cdecl", 1) + .Case("cf_audited_transfer", 1) + .Case("cf_consumed", 1) + .Case("cf_returns_not_retained", 1) + .Case("cf_returns_retained", 1) + .Case("cf_unknown_transfer", 1) + .Case("cpu_dispatch", 1) + .Case("cpu_specific", 1) + .Case("constant", 1) + .Case("cudart_builtin", 1) + .Case("device", 1) + .Case("device_builtin", 1) + .Case("device_builtin_surface_type", 1) + .Case("device_builtin_texture_type", 1) + .Case("global", 1) + .Case("host", 1) + .Case("launch_bounds", 1) + .Case("shared", 1) + .Case("callable_when", 1) + .Case("callback", 1) + .Case("capability", 1) + .Case("shared_capability", 1) + .Case("capability", 1) + .Case("shared_capability", 1) + .Case("carries_dependency", 1) + .Case("cleanup", 1) + .Case("cold", 1) + .Case("common", 1) + .Case("const", 1) + .Case("__const", 1) + .Case("const", 1) + .Case("__const", 1) + .Case("constructor", 1) + .Case("consumable", 1) + .Case("consumable_auto_cast_state", 1) + .Case("consumable_set_state_on_read", 1) + .Case("convergent", 1) + .Case("dllexport", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::aarch64) && (T.getOS() == llvm::Triple::Win32) ? 1 : 0) + .Case("dllimport", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::aarch64) && (T.getOS() == llvm::Triple::Win32) ? 1 : 0) + .Case("deprecated", 1) + .Case("destructor", 1) + .Case("diagnose_if", 1) + .Case("disable_tail_calls", 1) + .Case("enable_if", 1) + .Case("enum_extensibility", 1) + .Case("exclude_from_explicit_instantiation", 1) + .Case("exclusive_trylock_function", 1) + .Case("ext_vector_type", 1) + .Case("external_source_symbol", 1) + .Case("fastcall", 1) + .Case("flag_enum", 1) + .Case("flatten", 1) + .Case("format", 1) + .Case("format_arg", 1) + .Case("fortify_stdlib", 1) + .Case("gnu_inline", 1) + .Case("guarded_by", 1) + .Case("guarded_var", 1) + .Case("hot", 1) + .Case("ibaction", 1) + .Case("iboutlet", 1) + .Case("iboutletcollection", 1) + .Case("ifunc", true && (T.getObjectFormat() == llvm::Triple::ELF) ? 1 : 0) + .Case("init_priority", 1) + .Case("intel_ocl_bicc", 1) + .Case("internal_linkage", 1) + .Case("lto_visibility_public", 1) + .Case("lifetimebound", 1) + .Case("lock_returned", 1) + .Case("lockable", 1) + .Case("locks_excluded", 1) + .Case("ms_abi", 1) + .Case("interrupt", true && (T.getArch() == llvm::Triple::msp430) ? 1 : 0) + .Case("ms_struct", 1) + .Case("may_alias", 1) + .Case("micromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0) + .Case("minsize", 1) + .Case("min_vector_width", 1) + .Case("mips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0) + .Case("interrupt", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0) + .Case("long_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) + .Case("far", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) + .Case("long_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) + .Case("far", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) + .Case("short_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) + .Case("near", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) + .Case("short_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) + .Case("near", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) + .Case("mode", 1) + .Case("ns_consumed", 1) + .Case("ns_consumes_self", 1) + .Case("ns_returns_autoreleased", 1) + .Case("ns_returns_not_retained", 1) + .Case("ns_returns_retained", 1) + .Case("naked", 1) + .Case("neon_polyvector_type", 1) + .Case("neon_vector_type", 1) + .Case("nocommon", 1) + .Case("nodebug", 1) + .Case("noderef", 1) + .Case("no_destroy", 1) + .Case("noduplicate", 1) + .Case("noescape", 1) + .Case("noinline", 1) + .Case("no_instrument_function", 1) + .Case("nomicromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0) + .Case("nomips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0) + .Case("noreturn", 1) + .Case("no_sanitize", 1) + .Case("no_address_safety_analysis", 1) + .Case("no_sanitize_address", 1) + .Case("no_sanitize_thread", 1) + .Case("no_sanitize_memory", 1) + .Case("no_address_safety_analysis", 1) + .Case("no_sanitize_address", 1) + .Case("no_sanitize_thread", 1) + .Case("no_sanitize_memory", 1) + .Case("no_address_safety_analysis", 1) + .Case("no_sanitize_address", 1) + .Case("no_sanitize_thread", 1) + .Case("no_sanitize_memory", 1) + .Case("no_address_safety_analysis", 1) + .Case("no_sanitize_address", 1) + .Case("no_sanitize_thread", 1) + .Case("no_sanitize_memory", 1) + .Case("no_speculative_load_hardening", 1) + .Case("no_split_stack", 1) + .Case("no_stack_protector", 1) + .Case("no_thread_safety_analysis", 1) + .Case("nothrow", 1) + .Case("nonnull", 1) + .Case("not_tail_called", 1) + .Case("nv_weak", 1) + .Case("os_consumed", 1) + .Case("os_consumes_this", 1) + .Case("os_returns_not_retained", 1) + .Case("os_returns_retained", 1) + .Case("os_returns_retained_on_non_zero", 1) + .Case("os_returns_retained_on_zero", 1) + .Case("objc_boxable", 1) + .Case("objc_bridge", 1) + .Case("objc_bridge_mutable", 1) + .Case("objc_bridge_related", 1) + .Case("objc_designated_initializer", 1) + .Case("objc_exception", 1) + .Case("objc_protocol_requires_explicit_implementation", 1) + .Case("objc_externally_retained", 1) + .Case("objc_gc", 1) + .Case("objc_independent_class", 1) + .Case("objc_method_family", 1) + .Case("NSObject", 1) + .Case("objc_nonlazy_class", 1) + .Case("objc_ownership", 1) + .Case("objc_precise_lifetime", 1) + .Case("objc_requires_property_definitions", 1) + .Case("objc_requires_super", 1) + .Case("objc_returns_inner_pointer", 1) + .Case("objc_root_class", 1) + .Case("objc_runtime_name", 1) + .Case("objc_runtime_visible", 1) + .Case("objc_subclassing_restricted", 1) + .Case("intel_reqd_sub_group_size", 1) + .Case("nosvm", 1) + .Case("opencl_unroll_hint", 1) + .Case("optnone", 1) + .Case("overloadable", 1) + .Case("ownership_holds", 1) + .Case("ownership_returns", 1) + .Case("ownership_takes", 1) + .Case("ownership_holds", 1) + .Case("ownership_returns", 1) + .Case("ownership_takes", 1) + .Case("ownership_holds", 1) + .Case("ownership_returns", 1) + .Case("ownership_takes", 1) + .Case("packed", 1) + .Case("param_typestate", 1) + .Case("pascal", 1) + .Case("pass_object_size", 1) + .Case("pcs", 1) + .Case("preserve_all", 1) + .Case("preserve_most", 1) + .Case("pt_guarded_by", 1) + .Case("pt_guarded_var", 1) + .Case("pure", 1) + .Case("interrupt", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0) + .Case("regcall", 1) + .Case("regparm", 1) + .Case("reinitializes", 1) + .Case("release_capability", 1) + .Case("release_shared_capability", 1) + .Case("release_generic_capability", 1) + .Case("unlock_function", 1) + .Case("release_capability", 1) + .Case("release_shared_capability", 1) + .Case("release_generic_capability", 1) + .Case("unlock_function", 1) + .Case("release_capability", 1) + .Case("release_shared_capability", 1) + .Case("release_generic_capability", 1) + .Case("unlock_function", 1) + .Case("release_capability", 1) + .Case("release_shared_capability", 1) + .Case("release_generic_capability", 1) + .Case("unlock_function", 1) + .Case("kernel", 1) + .Case("reqd_work_group_size", 1) + .Case("require_constant_initialization", 1) + .Case("requires_capability", 1) + .Case("exclusive_locks_required", 1) + .Case("requires_shared_capability", 1) + .Case("shared_locks_required", 1) + .Case("requires_capability", 1) + .Case("exclusive_locks_required", 1) + .Case("requires_shared_capability", 1) + .Case("shared_locks_required", 1) + .Case("requires_capability", 1) + .Case("exclusive_locks_required", 1) + .Case("requires_shared_capability", 1) + .Case("shared_locks_required", 1) + .Case("requires_capability", 1) + .Case("exclusive_locks_required", 1) + .Case("requires_shared_capability", 1) + .Case("shared_locks_required", 1) + .Case("malloc", 1) + .Case("return_typestate", 1) + .Case("returns_nonnull", 1) + .Case("returns_twice", 1) + .Case("scoped_lockable", 1) + .Case("section", 1) + .Case("selectany", 1) + .Case("sentinel", 1) + .Case("set_typestate", 1) + .Case("shared_trylock_function", 1) + .Case("speculative_load_hardening", 1) + .Case("stdcall", 1) + .Case("swiftcall", 1) + .Case("swift_context", 1) + .Case("swift_error_result", 1) + .Case("swift_indirect_result", 1) + .Case("sysv_abi", 1) + .Case("tls_model", 1) + .Case("target", 1) + .Case("test_typestate", 1) + .Case("thiscall", 1) + .Case("transparent_union", 1) + .Case("trivial_abi", 1) + .Case("try_acquire_capability", 1) + .Case("try_acquire_shared_capability", 1) + .Case("try_acquire_capability", 1) + .Case("try_acquire_shared_capability", 1) + .Case("type_tag_for_datatype", 1) + .Case("type_visibility", 1) + .Case("unavailable", 1) + .Case("uninitialized", 1) + .Case("unused", 1) + .Case("used", 1) + .Case("vecreturn", 1) + .Case("vec_type_hint", 1) + .Case("vectorcall", 1) + .Case("vector_size", 1) + .Case("visibility", 1) + .Case("warn_unused", 1) + .Case("warn_unused_result", 1) + .Case("weak", 1) + .Case("weak_import", 1) + .Case("weakref", 1) + .Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0) + .Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0) + .Case("work_group_size_hint", 1) + .Case("force_align_arg_pointer", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0) + .Case("xray_always_instrument", 1) + .Case("xray_never_instrument", 1) + .Case("xray_always_instrument", 1) + .Case("xray_never_instrument", 1) + .Case("xray_log_args", 1) + .Default(0); +case AttrSyntax::Declspec: + return llvm::StringSwitch<int>(Name) + .Case("align", 1) + .Case("cpu_dispatch", 1) + .Case("cpu_specific", 1) + .Case("__constant__", 1) + .Case("__cudart_builtin__", 1) + .Case("__device__", 1) + .Case("__device_builtin__", 1) + .Case("__device_builtin_surface_type__", 1) + .Case("__device_builtin_texture_type__", 1) + .Case("__global__", 1) + .Case("__host__", 1) + .Case("__launch_bounds__", 1) + .Case("__shared__", 1) + .Case("code_seg", 1) + .Case("dllexport", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::aarch64) && (T.getOS() == llvm::Triple::Win32) ? 1 : 0) + .Case("dllimport", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::aarch64) && (T.getOS() == llvm::Triple::Win32) ? 1 : 0) + .Case("deprecated", 1) + .Case("empty_bases", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::aarch64) && (Target.getCXXABI().getKind() == TargetCXXABI::Microsoft) ? 1 : 0) + .Case("layout_version", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::aarch64) && (Target.getCXXABI().getKind() == TargetCXXABI::Microsoft) ? 1 : 0) + .Case("novtable", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::aarch64) && (Target.getCXXABI().getKind() == TargetCXXABI::Microsoft) ? 1 : 0) + .Case("naked", 1) + .Case("noalias", 1) + .Case("noinline", 1) + .Case("noreturn", 1) + .Case("nothrow", 1) + .Case("restrict", 1) + .Case("allocate", 1) + .Case("selectany", 1) + .Case("thread", 1) + .Case("uuid", 1) + .Case("property", 1) + .Default(0); +case AttrSyntax::Microsoft: + return llvm::StringSwitch<int>(Name) + .Case("uuid", 1) + .Default(0); +case AttrSyntax::Pragma: + return llvm::StringSwitch<int>(Name) + .Case("init_seg", 1) + .Case("loop", 1) + .Case("unroll", 1) + .Case("nounroll", 1) + .Case("unroll_and_jam", 1) + .Case("nounroll_and_jam", 1) + .Case("loop", 1) + .Case("unroll", 1) + .Case("nounroll", 1) + .Case("unroll_and_jam", 1) + .Case("nounroll_and_jam", 1) + .Case("loop", 1) + .Case("unroll", 1) + .Case("nounroll", 1) + .Case("unroll_and_jam", 1) + .Case("nounroll_and_jam", 1) + .Case("loop", 1) + .Case("unroll", 1) + .Case("nounroll", 1) + .Case("unroll_and_jam", 1) + .Case("nounroll_and_jam", 1) + .Case("loop", 1) + .Case("unroll", 1) + .Case("nounroll", 1) + .Case("unroll_and_jam", 1) + .Case("nounroll_and_jam", 1) + .Case("declare simd", 1) + .Case("declare target", 1) + .Default(0); +case AttrSyntax::CXX: { +if (ScopeName == "") { + return llvm::StringSwitch<int>(Name) + .Case("noreturn", LangOpts.CPlusPlus11 ? 200809 : 0) + .Case("carries_dependency", LangOpts.CPlusPlus11 ? 200809 : 0) + .Case("deprecated", LangOpts.CPlusPlus11 ? 201309 : 0) + .Case("deprecated", LangOpts.CPlusPlus11 ? 201309 : 0) + .Case("fallthrough", LangOpts.CPlusPlus11 ? 201603 : 0) + .Case("fallthrough", LangOpts.CPlusPlus11 ? 201603 : 0) + .Case("maybe_unused", LangOpts.CPlusPlus11 ? 201603 : 0) + .Case("unused", LangOpts.CPlusPlus11 ? 201603 : 0) + .Case("nodiscard", LangOpts.CPlusPlus11 ? 201603 : 0) + .Case("warn_unused_result", LangOpts.CPlusPlus11 ? 201603 : 0) + .Case("warn_unused_result", LangOpts.CPlusPlus11 ? 201603 : 0) + .Default(0); +} else if (ScopeName == "clang") { + return llvm::StringSwitch<int>(Name) + .Case("aarch64_vector_pcs", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("amdgpu_flat_work_group_size", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("amdgpu_num_sgpr", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("amdgpu_num_vgpr", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("amdgpu_waves_per_eu", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("acquire_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("acquire_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("acquire_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("acquire_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("address_space", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("always_destroy", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("annotate", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_arc_weak_reference_unavailable", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("argument_with_type_tag", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("pointer_with_type_tag", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("argument_with_type_tag", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("pointer_with_type_tag", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("assert_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("assert_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("assert_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("assert_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("availability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("blocks", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("cf_audited_transfer", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("cf_consumed", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("cf_returns_not_retained", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("cf_returns_retained", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("cf_unknown_transfer", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("cpu_dispatch", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("cpu_specific", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("callable_when", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("callback", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("consumable", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("consumable_auto_cast_state", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("consumable_set_state_on_read", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("convergent", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("disable_tail_calls", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("enum_extensibility", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("exclude_from_explicit_instantiation", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("external_source_symbol", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("fallthrough", LangOpts.CPlusPlus11 ? 201603 : 0) + .Case("flag_enum", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("fortify_stdlib", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("guarded_var", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ibaction", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("iboutlet", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("iboutletcollection", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("intel_ocl_bicc", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("internal_linkage", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("lto_visibility_public", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("lifetimebound", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("minsize", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("min_vector_width", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ns_consumed", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ns_consumes_self", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ns_returns_autoreleased", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ns_returns_not_retained", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ns_returns_retained", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("neon_polyvector_type", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("neon_vector_type", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("noderef", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_destroy", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("noduplicate", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("noescape", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_sanitize", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_sanitize_memory", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_speculative_load_hardening", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_stack_protector", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_thread_safety_analysis", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("not_tail_called", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("os_consumed", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("os_consumes_this", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("os_returns_not_retained", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("os_returns_retained", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("os_returns_retained_on_non_zero", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("os_returns_retained_on_zero", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_boxable", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_bridge", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_bridge_mutable", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_bridge_related", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_designated_initializer", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_exception", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_protocol_requires_explicit_implementation", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_externally_retained", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_gc", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_independent_class", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_method_family", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("NSObject", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_nonlazy_class", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_ownership", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_precise_lifetime", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_requires_property_definitions", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_requires_super", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_returns_inner_pointer", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_root_class", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_runtime_name", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_runtime_visible", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("objc_subclassing_restricted", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("optnone", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("overloadable", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ownership_holds", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ownership_returns", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ownership_takes", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ownership_holds", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ownership_returns", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ownership_takes", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ownership_holds", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ownership_returns", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ownership_takes", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("param_typestate", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("pascal", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("pass_object_size", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("preserve_all", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("preserve_most", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("pt_guarded_var", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("reinitializes", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("release_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("release_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("release_generic_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("unlock_function", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("release_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("release_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("release_generic_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("unlock_function", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("release_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("release_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("release_generic_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("unlock_function", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("release_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("release_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("release_generic_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("unlock_function", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("require_constant_initialization", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("requires_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("exclusive_locks_required", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("requires_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("shared_locks_required", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("requires_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("exclusive_locks_required", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("requires_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("shared_locks_required", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("requires_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("exclusive_locks_required", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("requires_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("shared_locks_required", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("requires_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("exclusive_locks_required", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("requires_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("shared_locks_required", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("return_typestate", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("scoped_lockable", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("set_typestate", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("speculative_load_hardening", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("swiftcall", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("swift_context", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("swift_error_result", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("swift_indirect_result", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("test_typestate", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("trivial_abi", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("try_acquire_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("try_acquire_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("try_acquire_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("try_acquire_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("type_tag_for_datatype", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("type_visibility", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("unavailable", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("uninitialized", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("vecreturn", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("vectorcall", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("warn_unused_result", LangOpts.CPlusPlus11 ? 201603 : 0) + .Case("weak_import", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("xray_always_instrument", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("xray_never_instrument", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("xray_always_instrument", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("xray_never_instrument", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("xray_log_args", LangOpts.CPlusPlus11 ? 1 : 0) + .Default(0); +} else if (ScopeName == "gnu") { + return llvm::StringSwitch<int>(Name) + .Case("interrupt", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("interrupt", true && (T.getArch() == llvm::Triple::avr) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("signal", true && (T.getArch() == llvm::Triple::avr) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("abi_tag", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("alias", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("aligned", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("alloc_align", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("alloc_size", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("always_inline", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("interrupt", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_caller_saved_registers", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("nocf_check", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("artificial", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("assume_aligned", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("cdecl", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("cleanup", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("cold", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("common", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("const", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("__const", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("const", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("__const", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("constructor", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("dllexport", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::aarch64) && (T.getOS() == llvm::Triple::Win32) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("dllimport", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::aarch64) && (T.getOS() == llvm::Triple::Win32) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("deprecated", LangOpts.CPlusPlus11 ? 201309 : 0) + .Case("destructor", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("fastcall", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("flatten", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("format", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("format_arg", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("gnu_inline", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("hot", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ifunc", true && (T.getObjectFormat() == llvm::Triple::ELF) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("init_priority", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ms_abi", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("interrupt", true && (T.getArch() == llvm::Triple::msp430) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("ms_struct", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("may_alias", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("micromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("mips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("interrupt", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("long_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("far", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("long_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("far", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("short_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("near", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("short_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("near", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("mode", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("naked", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("nocommon", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("nodebug", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("noinline", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_instrument_function", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("nomicromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("nomips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("noreturn", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_address_safety_analysis", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_sanitize_address", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_sanitize_thread", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_address_safety_analysis", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_sanitize_address", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_sanitize_thread", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_address_safety_analysis", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_sanitize_address", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_sanitize_thread", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("no_split_stack", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("nothrow", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("nonnull", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("packed", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("pcs", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("pure", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("interrupt", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) && LangOpts.CPlusPlus11 ? 1 : 0) + .Case("regcall", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("regparm", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("malloc", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("returns_nonnull", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("returns_twice", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("section", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("selectany", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("sentinel", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("stdcall", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("sysv_abi", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("tls_model", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("target", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("thiscall", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("transparent_union", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("unused", LangOpts.CPlusPlus11 ? 201603 : 0) + .Case("used", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("vector_size", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("visibility", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("warn_unused", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("warn_unused_result", LangOpts.CPlusPlus11 ? 201603 : 0) + .Case("weak", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("weakref", LangOpts.CPlusPlus11 ? 1 : 0) + .Case("force_align_arg_pointer", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) && LangOpts.CPlusPlus11 ? 1 : 0) + .Default(0); +} else if (ScopeName == "gsl") { + return llvm::StringSwitch<int>(Name) + .Case("suppress", LangOpts.CPlusPlus11 ? 1 : 0) + .Default(0); +} +} break; +case AttrSyntax::C: { +if (ScopeName == "") { + return llvm::StringSwitch<int>(Name) + .Case("deprecated", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("fallthrough", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("maybe_unused", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("nodiscard", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Default(0); +} else if (ScopeName == "clang") { + return llvm::StringSwitch<int>(Name) + .Case("aarch64_vector_pcs", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("address_space", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("annotate", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_arc_weak_reference_unavailable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("argument_with_type_tag", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("pointer_with_type_tag", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("argument_with_type_tag", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("pointer_with_type_tag", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("availability", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("blocks", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("cf_audited_transfer", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("cf_consumed", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("cf_returns_not_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("cf_returns_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("cf_unknown_transfer", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("cpu_dispatch", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("cpu_specific", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("callback", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("convergent", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("disable_tail_calls", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("enum_extensibility", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("exclude_from_explicit_instantiation", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("external_source_symbol", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("flag_enum", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("fortify_stdlib", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ibaction", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("iboutlet", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("iboutletcollection", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("internal_linkage", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("lto_visibility_public", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("minsize", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("min_vector_width", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ns_consumed", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ns_consumes_self", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ns_returns_autoreleased", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ns_returns_not_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ns_returns_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("neon_polyvector_type", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("neon_vector_type", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("noderef", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("noduplicate", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("noescape", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("no_sanitize", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("no_sanitize_memory", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("no_speculative_load_hardening", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("no_stack_protector", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("no_thread_safety_analysis", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("not_tail_called", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("os_consumed", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("os_consumes_this", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("os_returns_not_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("os_returns_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("os_returns_retained_on_non_zero", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("os_returns_retained_on_zero", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_boxable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_bridge", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_bridge_mutable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_bridge_related", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_designated_initializer", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_exception", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_protocol_requires_explicit_implementation", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_externally_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_gc", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_independent_class", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_method_family", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("NSObject", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_nonlazy_class", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_ownership", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_precise_lifetime", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_requires_property_definitions", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_requires_super", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_returns_inner_pointer", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_root_class", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_runtime_name", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_runtime_visible", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("objc_subclassing_restricted", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("optnone", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("overloadable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ownership_holds", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ownership_returns", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ownership_takes", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ownership_holds", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ownership_returns", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ownership_takes", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ownership_holds", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ownership_returns", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("ownership_takes", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("pascal", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("pass_object_size", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("preserve_all", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("preserve_most", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("speculative_load_hardening", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("swiftcall", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("swift_context", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("swift_error_result", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("swift_indirect_result", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("type_tag_for_datatype", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("type_visibility", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("unavailable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("vectorcall", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("weak_import", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) && LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) && LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("xray_always_instrument", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("xray_never_instrument", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("xray_always_instrument", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("xray_never_instrument", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Case("xray_log_args", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) + .Default(0); +} +} break; +} diff --git a/clang-r353983/include/clang/Basic/AttrKinds.h b/clang-r353983/include/clang/Basic/AttrKinds.h new file mode 100644 index 00000000..ec0052df --- /dev/null +++ b/clang-r353983/include/clang/Basic/AttrKinds.h @@ -0,0 +1,33 @@ +//===----- Attr.h - Enum values for C Attribute Kinds ----------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the clang::attr::Kind enum. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_ATTRKINDS_H +#define LLVM_CLANG_BASIC_ATTRKINDS_H + +namespace clang { + +namespace attr { + +// A list of all the recognized kinds of attributes. +enum Kind { +#define ATTR(X) X, +#define ATTR_RANGE(CLASS, FIRST_NAME, LAST_NAME) \ + First##CLASS = FIRST_NAME, \ + Last##CLASS = LAST_NAME, +#include "clang/Basic/AttrList.inc" +}; + +} // end namespace attr +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/AttrList.inc b/clang-r353983/include/clang/Basic/AttrList.inc new file mode 100644 index 00000000..156a2a43 --- /dev/null +++ b/clang-r353983/include/clang/Basic/AttrList.inc @@ -0,0 +1,334 @@ +/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ +|* *| +|* List of all attributes that Clang recognizes *| +|* *| +|* Automatically generated file, do not edit! *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef TYPE_ATTR +#define TYPE_ATTR(NAME) ATTR(NAME) +#endif + +#ifndef STMT_ATTR +#define STMT_ATTR(NAME) ATTR(NAME) +#endif + +#ifndef INHERITABLE_ATTR +#define INHERITABLE_ATTR(NAME) ATTR(NAME) +#endif + +#ifndef DECL_OR_TYPE_ATTR +#define DECL_OR_TYPE_ATTR(NAME) INHERITABLE_ATTR(NAME) +#endif + +#ifndef INHERITABLE_PARAM_ATTR +#define INHERITABLE_PARAM_ATTR(NAME) INHERITABLE_ATTR(NAME) +#endif + +#ifndef PARAMETER_ABI_ATTR +#define PARAMETER_ABI_ATTR(NAME) INHERITABLE_PARAM_ATTR(NAME) +#endif + +#ifndef PRAGMA_SPELLING_ATTR +#define PRAGMA_SPELLING_ATTR(NAME) +#endif + +TYPE_ATTR(AddressSpace) +TYPE_ATTR(NoDeref) +TYPE_ATTR(ObjCGC) +TYPE_ATTR(ObjCInertUnsafeUnretained) +TYPE_ATTR(ObjCKindOf) +TYPE_ATTR(OpenCLConstantAddressSpace) +TYPE_ATTR(OpenCLGenericAddressSpace) +TYPE_ATTR(OpenCLGlobalAddressSpace) +TYPE_ATTR(OpenCLLocalAddressSpace) +TYPE_ATTR(OpenCLPrivateAddressSpace) +TYPE_ATTR(Ptr32) +TYPE_ATTR(Ptr64) +TYPE_ATTR(SPtr) +TYPE_ATTR(TypeNonNull) +TYPE_ATTR(TypeNullUnspecified) +TYPE_ATTR(TypeNullable) +TYPE_ATTR(UPtr) +STMT_ATTR(FallThrough) +STMT_ATTR(Suppress) +DECL_OR_TYPE_ATTR(AArch64VectorPcs) +DECL_OR_TYPE_ATTR(AnyX86NoCfCheck) +DECL_OR_TYPE_ATTR(CDecl) +DECL_OR_TYPE_ATTR(FastCall) +DECL_OR_TYPE_ATTR(IntelOclBicc) +DECL_OR_TYPE_ATTR(LifetimeBound) +DECL_OR_TYPE_ATTR(MSABI) +DECL_OR_TYPE_ATTR(NSReturnsRetained) +DECL_OR_TYPE_ATTR(ObjCOwnership) +DECL_OR_TYPE_ATTR(Pascal) +DECL_OR_TYPE_ATTR(Pcs) +DECL_OR_TYPE_ATTR(PreserveAll) +DECL_OR_TYPE_ATTR(PreserveMost) +DECL_OR_TYPE_ATTR(RegCall) +DECL_OR_TYPE_ATTR(StdCall) +DECL_OR_TYPE_ATTR(SwiftCall) +DECL_OR_TYPE_ATTR(SysVABI) +DECL_OR_TYPE_ATTR(ThisCall) +DECL_OR_TYPE_ATTR(VectorCall) +PARAMETER_ABI_ATTR(SwiftContext) +PARAMETER_ABI_ATTR(SwiftErrorResult) +PARAMETER_ABI_ATTR(SwiftIndirectResult) +INHERITABLE_PARAM_ATTR(Annotate) +INHERITABLE_PARAM_ATTR(CFConsumed) +INHERITABLE_PARAM_ATTR(CarriesDependency) +INHERITABLE_PARAM_ATTR(NSConsumed) +INHERITABLE_PARAM_ATTR(NonNull) +INHERITABLE_PARAM_ATTR(OSConsumed) +INHERITABLE_PARAM_ATTR(PassObjectSize) +INHERITABLE_ATTR(AMDGPUFlatWorkGroupSize) +INHERITABLE_ATTR(AMDGPUNumSGPR) +INHERITABLE_ATTR(AMDGPUNumVGPR) +INHERITABLE_ATTR(AMDGPUWavesPerEU) +INHERITABLE_ATTR(ARMInterrupt) +INHERITABLE_ATTR(AVRInterrupt) +INHERITABLE_ATTR(AVRSignal) +INHERITABLE_ATTR(AcquireCapability) +INHERITABLE_ATTR(AcquiredAfter) +INHERITABLE_ATTR(AcquiredBefore) +INHERITABLE_ATTR(AlignMac68k) +INHERITABLE_ATTR(Aligned) +INHERITABLE_ATTR(AllocAlign) +INHERITABLE_ATTR(AllocSize) +INHERITABLE_ATTR(AlwaysDestroy) +INHERITABLE_ATTR(AlwaysInline) +INHERITABLE_ATTR(AnalyzerNoReturn) +INHERITABLE_ATTR(AnyX86Interrupt) +INHERITABLE_ATTR(AnyX86NoCallerSavedRegisters) +INHERITABLE_ATTR(ArcWeakrefUnavailable) +INHERITABLE_ATTR(ArgumentWithTypeTag) +INHERITABLE_ATTR(Artificial) +INHERITABLE_ATTR(AsmLabel) +INHERITABLE_ATTR(AssertCapability) +INHERITABLE_ATTR(AssertExclusiveLock) +INHERITABLE_ATTR(AssertSharedLock) +INHERITABLE_ATTR(AssumeAligned) +INHERITABLE_ATTR(Availability) +INHERITABLE_ATTR(Blocks) +INHERITABLE_ATTR(C11NoReturn) +INHERITABLE_ATTR(CFAuditedTransfer) +INHERITABLE_ATTR(CFReturnsNotRetained) +INHERITABLE_ATTR(CFReturnsRetained) +INHERITABLE_ATTR(CFUnknownTransfer) +INHERITABLE_ATTR(CPUDispatch) +INHERITABLE_ATTR(CPUSpecific) +INHERITABLE_ATTR(CUDAConstant) +INHERITABLE_ATTR(CUDADevice) +INHERITABLE_ATTR(CUDAGlobal) +INHERITABLE_ATTR(CUDAHost) +INHERITABLE_ATTR(CUDAInvalidTarget) +INHERITABLE_ATTR(CUDALaunchBounds) +INHERITABLE_ATTR(CUDAShared) +INHERITABLE_ATTR(CXX11NoReturn) +INHERITABLE_ATTR(CallableWhen) +INHERITABLE_ATTR(Callback) +INHERITABLE_ATTR(Capability) +INHERITABLE_ATTR(CapturedRecord) +INHERITABLE_ATTR(Cleanup) +INHERITABLE_ATTR(CodeSeg) +INHERITABLE_ATTR(Cold) +INHERITABLE_ATTR(Common) +INHERITABLE_ATTR(Const) +INHERITABLE_ATTR(Constructor) +INHERITABLE_ATTR(Consumable) +INHERITABLE_ATTR(ConsumableAutoCast) +INHERITABLE_ATTR(ConsumableSetOnRead) +INHERITABLE_ATTR(Convergent) +INHERITABLE_ATTR(DLLExport) +INHERITABLE_ATTR(DLLExportStaticLocal) +INHERITABLE_ATTR(DLLImport) +INHERITABLE_ATTR(DLLImportStaticLocal) +INHERITABLE_ATTR(Deprecated) +INHERITABLE_ATTR(Destructor) +INHERITABLE_ATTR(DiagnoseIf) +INHERITABLE_ATTR(DisableTailCalls) +INHERITABLE_ATTR(EmptyBases) +INHERITABLE_ATTR(EnableIf) +INHERITABLE_ATTR(EnumExtensibility) +INHERITABLE_ATTR(ExcludeFromExplicitInstantiation) +INHERITABLE_ATTR(ExclusiveTrylockFunction) +INHERITABLE_ATTR(ExternalSourceSymbol) +INHERITABLE_ATTR(Final) +INHERITABLE_ATTR(FlagEnum) +INHERITABLE_ATTR(Flatten) +INHERITABLE_ATTR(Format) +INHERITABLE_ATTR(FormatArg) +INHERITABLE_ATTR(FortifyStdLib) +INHERITABLE_ATTR(GNUInline) +INHERITABLE_ATTR(GuardedBy) +INHERITABLE_ATTR(GuardedVar) +INHERITABLE_ATTR(Hot) +INHERITABLE_ATTR(IBAction) +INHERITABLE_ATTR(IBOutlet) +INHERITABLE_ATTR(IBOutletCollection) +INHERITABLE_ATTR(InitPriority) +INHERITABLE_ATTR(InternalLinkage) +INHERITABLE_ATTR(LTOVisibilityPublic) +INHERITABLE_ATTR(LayoutVersion) +INHERITABLE_ATTR(LockReturned) +INHERITABLE_ATTR(LocksExcluded) +INHERITABLE_ATTR(MSInheritance) +INHERITABLE_ATTR(MSNoVTable) +INHERITABLE_ATTR(MSP430Interrupt) +INHERITABLE_ATTR(MSStruct) +INHERITABLE_ATTR(MSVtorDisp) +INHERITABLE_ATTR(MaxFieldAlignment) +INHERITABLE_ATTR(MayAlias) +INHERITABLE_ATTR(MicroMips) +INHERITABLE_ATTR(MinSize) +INHERITABLE_ATTR(MinVectorWidth) +INHERITABLE_ATTR(Mips16) +INHERITABLE_ATTR(MipsInterrupt) +INHERITABLE_ATTR(MipsLongCall) +INHERITABLE_ATTR(MipsShortCall) +INHERITABLE_ATTR(NSConsumesSelf) +INHERITABLE_ATTR(NSReturnsAutoreleased) +INHERITABLE_ATTR(NSReturnsNotRetained) +INHERITABLE_ATTR(Naked) +INHERITABLE_ATTR(NoAlias) +INHERITABLE_ATTR(NoCommon) +INHERITABLE_ATTR(NoDebug) +INHERITABLE_ATTR(NoDestroy) +INHERITABLE_ATTR(NoDuplicate) +INHERITABLE_ATTR(NoInline) +INHERITABLE_ATTR(NoInstrumentFunction) +INHERITABLE_ATTR(NoMicroMips) +INHERITABLE_ATTR(NoMips16) +INHERITABLE_ATTR(NoReturn) +INHERITABLE_ATTR(NoSanitize) +INHERITABLE_ATTR(NoSpeculativeLoadHardening) +INHERITABLE_ATTR(NoSplitStack) +INHERITABLE_ATTR(NoStackProtector) +INHERITABLE_ATTR(NoThreadSafetyAnalysis) +INHERITABLE_ATTR(NoThrow) +INHERITABLE_ATTR(NotTailCalled) +INHERITABLE_ATTR(OMPCaptureNoInit) +INHERITABLE_ATTR(OMPDeclareTargetDecl) +INHERITABLE_ATTR(OMPThreadPrivateDecl) +INHERITABLE_ATTR(OSConsumesThis) +INHERITABLE_ATTR(OSReturnsNotRetained) +INHERITABLE_ATTR(OSReturnsRetained) +INHERITABLE_ATTR(OSReturnsRetainedOnNonZero) +INHERITABLE_ATTR(OSReturnsRetainedOnZero) +INHERITABLE_ATTR(ObjCBridge) +INHERITABLE_ATTR(ObjCBridgeMutable) +INHERITABLE_ATTR(ObjCBridgeRelated) +INHERITABLE_ATTR(ObjCException) +INHERITABLE_ATTR(ObjCExplicitProtocolImpl) +INHERITABLE_ATTR(ObjCExternallyRetained) +INHERITABLE_ATTR(ObjCIndependentClass) +INHERITABLE_ATTR(ObjCMethodFamily) +INHERITABLE_ATTR(ObjCNSObject) +INHERITABLE_ATTR(ObjCPreciseLifetime) +INHERITABLE_ATTR(ObjCRequiresPropertyDefs) +INHERITABLE_ATTR(ObjCRequiresSuper) +INHERITABLE_ATTR(ObjCReturnsInnerPointer) +INHERITABLE_ATTR(ObjCRootClass) +INHERITABLE_ATTR(ObjCSubclassingRestricted) +INHERITABLE_ATTR(OpenCLIntelReqdSubGroupSize) +INHERITABLE_ATTR(OpenCLKernel) +INHERITABLE_ATTR(OpenCLUnrollHint) +INHERITABLE_ATTR(OptimizeNone) +INHERITABLE_ATTR(Override) +INHERITABLE_ATTR(Ownership) +INHERITABLE_ATTR(Packed) +INHERITABLE_ATTR(ParamTypestate) +INHERITABLE_ATTR(PragmaClangBSSSection) +INHERITABLE_ATTR(PragmaClangDataSection) +INHERITABLE_ATTR(PragmaClangRodataSection) +INHERITABLE_ATTR(PragmaClangTextSection) +INHERITABLE_ATTR(PtGuardedBy) +INHERITABLE_ATTR(PtGuardedVar) +INHERITABLE_ATTR(Pure) +INHERITABLE_ATTR(RISCVInterrupt) +INHERITABLE_ATTR(Reinitializes) +INHERITABLE_ATTR(ReleaseCapability) +INHERITABLE_ATTR(ReqdWorkGroupSize) +INHERITABLE_ATTR(RequireConstantInit) +INHERITABLE_ATTR(RequiresCapability) +INHERITABLE_ATTR(Restrict) +INHERITABLE_ATTR(ReturnTypestate) +INHERITABLE_ATTR(ReturnsNonNull) +INHERITABLE_ATTR(ReturnsTwice) +INHERITABLE_ATTR(ScopedLockable) +INHERITABLE_ATTR(Section) +INHERITABLE_ATTR(SelectAny) +INHERITABLE_ATTR(Sentinel) +INHERITABLE_ATTR(SetTypestate) +INHERITABLE_ATTR(SharedTrylockFunction) +INHERITABLE_ATTR(SpeculativeLoadHardening) +INHERITABLE_ATTR(TLSModel) +INHERITABLE_ATTR(Target) +INHERITABLE_ATTR(TestTypestate) +INHERITABLE_ATTR(TransparentUnion) +INHERITABLE_ATTR(TrivialABI) +INHERITABLE_ATTR(TryAcquireCapability) +INHERITABLE_ATTR(TypeTagForDatatype) +INHERITABLE_ATTR(TypeVisibility) +INHERITABLE_ATTR(Unavailable) +INHERITABLE_ATTR(Uninitialized) +INHERITABLE_ATTR(Unused) +INHERITABLE_ATTR(Used) +INHERITABLE_ATTR(Uuid) +INHERITABLE_ATTR(VecReturn) +INHERITABLE_ATTR(VecTypeHint) +INHERITABLE_ATTR(Visibility) +INHERITABLE_ATTR(WarnUnused) +INHERITABLE_ATTR(WarnUnusedResult) +INHERITABLE_ATTR(Weak) +INHERITABLE_ATTR(WeakImport) +INHERITABLE_ATTR(WeakRef) +INHERITABLE_ATTR(WebAssemblyImportModule) +INHERITABLE_ATTR(WebAssemblyImportName) +INHERITABLE_ATTR(WorkGroupSizeHint) +INHERITABLE_ATTR(X86ForceAlignArgPointer) +INHERITABLE_ATTR(XRayInstrument) +INHERITABLE_ATTR(XRayLogArgs) +ATTR(AbiTag) +ATTR(Alias) +ATTR(AlignValue) +ATTR(IFunc) +ATTR(InitSeg) +ATTR(LoopHint) +ATTR(Mode) +ATTR(NoEscape) +ATTR(OMPCaptureKind) +ATTR(OMPDeclareSimdDecl) +ATTR(OMPReferencedVar) +ATTR(ObjCBoxable) +ATTR(ObjCDesignatedInitializer) +ATTR(ObjCNonLazyClass) +ATTR(ObjCRuntimeName) +ATTR(ObjCRuntimeVisible) +ATTR(OpenCLAccess) +ATTR(Overloadable) +ATTR(RenderScriptKernel) +ATTR(Thread) +PRAGMA_SPELLING_ATTR(InitSeg) +PRAGMA_SPELLING_ATTR(LoopHint) +PRAGMA_SPELLING_ATTR(OMPDeclareSimdDecl) +PRAGMA_SPELLING_ATTR(OMPDeclareTargetDecl) +#ifdef ATTR_RANGE +ATTR_RANGE(Attr, AddressSpace, Thread) +ATTR_RANGE(TypeAttr, AddressSpace, UPtr) +ATTR_RANGE(StmtAttr, FallThrough, Suppress) +ATTR_RANGE(InheritableAttr, AArch64VectorPcs, XRayLogArgs) +ATTR_RANGE(DeclOrTypeAttr, AArch64VectorPcs, VectorCall) +ATTR_RANGE(InheritableParamAttr, SwiftContext, PassObjectSize) +ATTR_RANGE(ParameterABIAttr, SwiftContext, SwiftIndirectResult) +#undef ATTR_RANGE +#endif +#undef ATTR +#undef TYPE_ATTR +#undef STMT_ATTR +#undef INHERITABLE_ATTR +#undef DECL_OR_TYPE_ATTR +#undef INHERITABLE_PARAM_ATTR +#undef PARAMETER_ABI_ATTR +#undef PRAGMA_SPELLING_ATTR diff --git a/clang-r353983/include/clang/Basic/AttrSubMatchRulesList.inc b/clang-r353983/include/clang/Basic/AttrSubMatchRulesList.inc new file mode 100644 index 00000000..2004ded4 --- /dev/null +++ b/clang-r353983/include/clang/Basic/AttrSubMatchRulesList.inc @@ -0,0 +1,40 @@ +/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ +|* *| +|* List of all attribute subject matching rules that Clang recognizes *| +|* *| +|* Automatically generated file, do not edit! *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef ATTR_MATCH_RULE +#define ATTR_MATCH_RULE(NAME) +#endif + +#ifndef ATTR_MATCH_SUB_RULE +#define ATTR_MATCH_SUB_RULE(Value, Spelling, IsAbstract, Parent, IsNegated) ATTR_MATCH_RULE(Value, Spelling, IsAbstract) +#endif +ATTR_MATCH_RULE(SubjectMatchRule_block, "block", 0) +ATTR_MATCH_RULE(SubjectMatchRule_enum, "enum", 0) +ATTR_MATCH_RULE(SubjectMatchRule_enum_constant, "enum_constant", 0) +ATTR_MATCH_RULE(SubjectMatchRule_field, "field", 0) +ATTR_MATCH_RULE(SubjectMatchRule_function, "function", 0) +ATTR_MATCH_SUB_RULE(SubjectMatchRule_function_is_member, "function(is_member)", 0, attr::SubjectMatchRule_function, 0) +ATTR_MATCH_RULE(SubjectMatchRule_namespace, "namespace", 0) +ATTR_MATCH_RULE(SubjectMatchRule_objc_category, "objc_category", 0) +ATTR_MATCH_RULE(SubjectMatchRule_objc_interface, "objc_interface", 0) +ATTR_MATCH_RULE(SubjectMatchRule_objc_method, "objc_method", 0) +ATTR_MATCH_SUB_RULE(SubjectMatchRule_objc_method_is_instance, "objc_method(is_instance)", 0, attr::SubjectMatchRule_objc_method, 0) +ATTR_MATCH_RULE(SubjectMatchRule_objc_property, "objc_property", 0) +ATTR_MATCH_RULE(SubjectMatchRule_objc_protocol, "objc_protocol", 0) +ATTR_MATCH_RULE(SubjectMatchRule_record, "record", 0) +ATTR_MATCH_SUB_RULE(SubjectMatchRule_record_not_is_union, "record(unless(is_union))", 0, attr::SubjectMatchRule_record, 1) +ATTR_MATCH_RULE(SubjectMatchRule_hasType_abstract, "hasType", 1) +ATTR_MATCH_SUB_RULE(SubjectMatchRule_hasType_functionType, "hasType(functionType)", 0, attr::SubjectMatchRule_hasType_abstract, 0) +ATTR_MATCH_RULE(SubjectMatchRule_type_alias, "type_alias", 0) +ATTR_MATCH_RULE(SubjectMatchRule_variable, "variable", 0) +ATTR_MATCH_SUB_RULE(SubjectMatchRule_variable_is_thread_local, "variable(is_thread_local)", 0, attr::SubjectMatchRule_variable, 0) +ATTR_MATCH_SUB_RULE(SubjectMatchRule_variable_is_global, "variable(is_global)", 0, attr::SubjectMatchRule_variable, 0) +ATTR_MATCH_SUB_RULE(SubjectMatchRule_variable_is_parameter, "variable(is_parameter)", 0, attr::SubjectMatchRule_variable, 0) +ATTR_MATCH_SUB_RULE(SubjectMatchRule_variable_not_is_parameter, "variable(unless(is_parameter))", 0, attr::SubjectMatchRule_variable, 1) +#undef ATTR_MATCH_SUB_RULE +#undef ATTR_MATCH_RULE diff --git a/clang-r353983/include/clang/Basic/AttrSubjectMatchRules.h b/clang-r353983/include/clang/Basic/AttrSubjectMatchRules.h new file mode 100644 index 00000000..010cefca --- /dev/null +++ b/clang-r353983/include/clang/Basic/AttrSubjectMatchRules.h @@ -0,0 +1,31 @@ +//===-- AttrSubjectMatchRules.h - Attribute subject match rules -*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_ATTR_SUBJECT_MATCH_RULES_H +#define LLVM_CLANG_BASIC_ATTR_SUBJECT_MATCH_RULES_H + +#include "clang/Basic/SourceLocation.h" +#include "llvm/ADT/DenseMap.h" + +namespace clang { +namespace attr { + +/// A list of all the recognized kinds of attributes. +enum SubjectMatchRule { +#define ATTR_MATCH_RULE(X, Spelling, IsAbstract) X, +#include "clang/Basic/AttrSubMatchRulesList.inc" +}; + +const char *getSubjectMatchRuleSpelling(SubjectMatchRule Rule); + +using ParsedSubjectMatchRuleSet = llvm::DenseMap<int, SourceRange>; + +} // end namespace attr +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/Attributes.h b/clang-r353983/include/clang/Basic/Attributes.h new file mode 100644 index 00000000..c69633de --- /dev/null +++ b/clang-r353983/include/clang/Basic/Attributes.h @@ -0,0 +1,42 @@ +//===--- Attributes.h - Attributes header -----------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_ATTRIBUTES_H +#define LLVM_CLANG_BASIC_ATTRIBUTES_H + +#include "clang/Basic/LangOptions.h" +#include "clang/Basic/TargetInfo.h" + +namespace clang { + +class IdentifierInfo; + +enum class AttrSyntax { + /// Is the identifier known as a GNU-style attribute? + GNU, + /// Is the identifier known as a __declspec-style attribute? + Declspec, + /// Is the identifier known as a [] Microsoft-style attribute? + Microsoft, + // Is the identifier known as a C++-style attribute? + CXX, + // Is the identifier known as a C-style attribute? + C, + // Is the identifier known as a pragma attribute? + Pragma +}; + +/// Return the version number associated with the attribute if we +/// recognize and implement the attribute specified by the given information. +int hasAttribute(AttrSyntax Syntax, const IdentifierInfo *Scope, + const IdentifierInfo *Attr, const TargetInfo &Target, + const LangOptions &LangOpts); + +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_ATTRIBUTES_H diff --git a/clang-r353983/include/clang/Basic/BitmaskEnum.h b/clang-r353983/include/clang/Basic/BitmaskEnum.h new file mode 100644 index 00000000..34bfa176 --- /dev/null +++ b/clang-r353983/include/clang/Basic/BitmaskEnum.h @@ -0,0 +1,24 @@ +//===--- BitmaskEnum.h - wrapper of LLVM's bitmask enum facility-*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Provides LLVM's BitmaskEnum facility to enumeration types declared in +/// namespace clang. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_BITMASKENUM_H +#define LLVM_CLANG_BASIC_BITMASKENUM_H + +#include "llvm/ADT/BitmaskEnum.h" + +namespace clang { + LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE(); +} + +#endif diff --git a/clang-r353983/include/clang/Basic/Builtins.def b/clang-r353983/include/clang/Basic/Builtins.def new file mode 100644 index 00000000..2e8c6d97 --- /dev/null +++ b/clang-r353983/include/clang/Basic/Builtins.def @@ -0,0 +1,1529 @@ +//===--- Builtins.def - Builtin function info database ----------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the standard builtin function database. Users of this file +// must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// FIXME: This should really be a .td file, but that requires modifying tblgen. +// Perhaps tblgen should have plugins. + +// The first value provided to the macro specifies the function name of the +// builtin, and results in a clang::builtin::BIXX enum value for XX. + +// The second value provided to the macro specifies the type of the function +// (result value, then each argument) as follows: +// v -> void +// b -> boolean +// c -> char +// s -> short +// i -> int +// h -> half +// f -> float +// d -> double +// z -> size_t +// w -> wchar_t +// F -> constant CFString +// G -> id +// H -> SEL +// M -> struct objc_super +// a -> __builtin_va_list +// A -> "reference" to __builtin_va_list +// V -> Vector, followed by the number of elements and the base type. +// E -> ext_vector, followed by the number of elements and the base type. +// X -> _Complex, followed by the base type. +// Y -> ptrdiff_t +// P -> FILE +// J -> jmp_buf +// SJ -> sigjmp_buf +// K -> ucontext_t +// p -> pid_t +// . -> "...". This may only occur at the end of the function list. +// +// Types may be prefixed with the following modifiers: +// L -> long (e.g. Li for 'long int', Ld for 'long double') +// LL -> long long (e.g. LLi for 'long long int', LLd for __float128) +// LLL -> __int128_t (e.g. LLLi) +// W -> int64_t +// N -> 'int' size if target is LP64, 'L' otherwise. +// S -> signed +// U -> unsigned +// I -> Required to constant fold to an integer constant expression. +// +// Types may be postfixed with the following modifiers: +// * -> pointer (optionally followed by an address space number, if no address +// space is specified than any address space will be accepted) +// & -> reference (optionally followed by an address space number) +// C -> const +// D -> volatile + +// The third value provided to the macro specifies information about attributes +// of the function. These must be kept in sync with the predicates in the +// Builtin::Context class. Currently we have: +// n -> nothrow +// r -> noreturn +// U -> pure +// c -> const +// t -> signature is meaningless, use custom typechecking +// F -> this is a libc/libm function with a '__builtin_' prefix added. +// f -> this is a libc/libm function without the '__builtin_' prefix. It can +// be followed by ':headername:' to state which header this function +// comes from. +// h -> this function requires a specific header or an explicit declaration. +// i -> this is a runtime library implemented function without the +// '__builtin_' prefix. It will be implemented in compiler-rt or libgcc. +// p:N: -> this is a printf-like function whose Nth argument is the format +// string. +// P:N: -> similar to the p:N: attribute, but the function is like vprintf +// in that it accepts its arguments as a va_list rather than +// through an ellipsis +// s:N: -> this is a scanf-like function whose Nth argument is the format +// string. +// S:N: -> similar to the s:N: attribute, but the function is like vscanf +// in that it accepts its arguments as a va_list rather than +// through an ellipsis +// e -> const, but only when -fno-math-errno +// j -> returns_twice (like setjmp) +// u -> arguments are not evaluated for their side-effects +// V:N: -> requires vectors of at least N bits to be legal +// C<N,M_0,...,M_k> -> callback behavior: argument N is called with argument +// M_0, ..., M_k as payload +// FIXME: gcc has nonnull + +#if defined(BUILTIN) && !defined(LIBBUILTIN) +# define LIBBUILTIN(ID, TYPE, ATTRS, HEADER, BUILTIN_LANG) BUILTIN(ID, TYPE, ATTRS) +#endif + +#if defined(BUILTIN) && !defined(LANGBUILTIN) +# define LANGBUILTIN(ID, TYPE, ATTRS, BUILTIN_LANG) BUILTIN(ID, TYPE, ATTRS) +#endif + +// Standard libc/libm functions: +BUILTIN(__builtin_atan2 , "ddd" , "Fne") +BUILTIN(__builtin_atan2f, "fff" , "Fne") +BUILTIN(__builtin_atan2l, "LdLdLd", "Fne") +BUILTIN(__builtin_abs , "ii" , "ncF") +BUILTIN(__builtin_copysign, "ddd", "ncF") +BUILTIN(__builtin_copysignf, "fff", "ncF") +BUILTIN(__builtin_copysignl, "LdLdLd", "ncF") +BUILTIN(__builtin_copysignf128, "LLdLLdLLd", "ncF") +BUILTIN(__builtin_fabs , "dd" , "ncF") +BUILTIN(__builtin_fabsf, "ff" , "ncF") +BUILTIN(__builtin_fabsl, "LdLd", "ncF") +BUILTIN(__builtin_fabsf128, "LLdLLd", "ncF") +BUILTIN(__builtin_fmod , "ddd" , "Fne") +BUILTIN(__builtin_fmodf, "fff" , "Fne") +BUILTIN(__builtin_fmodl, "LdLdLd", "Fne") +BUILTIN(__builtin_frexp , "ddi*" , "Fn") +BUILTIN(__builtin_frexpf, "ffi*" , "Fn") +BUILTIN(__builtin_frexpl, "LdLdi*", "Fn") +BUILTIN(__builtin_huge_val, "d", "nc") +BUILTIN(__builtin_huge_valf, "f", "nc") +BUILTIN(__builtin_huge_vall, "Ld", "nc") +BUILTIN(__builtin_huge_valf128, "LLd", "nc") +BUILTIN(__builtin_inf , "d" , "nc") +BUILTIN(__builtin_inff , "f" , "nc") +BUILTIN(__builtin_infl , "Ld" , "nc") +BUILTIN(__builtin_inff128 , "LLd" , "nc") +BUILTIN(__builtin_labs , "LiLi" , "Fnc") +BUILTIN(__builtin_llabs, "LLiLLi", "Fnc") +BUILTIN(__builtin_ldexp , "ddi" , "Fne") +BUILTIN(__builtin_ldexpf, "ffi" , "Fne") +BUILTIN(__builtin_ldexpl, "LdLdi", "Fne") +BUILTIN(__builtin_modf , "ddd*" , "Fn") +BUILTIN(__builtin_modff, "fff*" , "Fn") +BUILTIN(__builtin_modfl, "LdLdLd*", "Fn") +BUILTIN(__builtin_nan, "dcC*" , "FnU") +BUILTIN(__builtin_nanf, "fcC*" , "FnU") +BUILTIN(__builtin_nanl, "LdcC*", "FnU") +BUILTIN(__builtin_nanf128, "LLdcC*", "FnU") +BUILTIN(__builtin_nans, "dcC*" , "FnU") +BUILTIN(__builtin_nansf, "fcC*" , "FnU") +BUILTIN(__builtin_nansl, "LdcC*", "FnU") +BUILTIN(__builtin_nansf128, "LLdcC*", "FnU") +BUILTIN(__builtin_powi , "ddi" , "Fnc") +BUILTIN(__builtin_powif, "ffi" , "Fnc") +BUILTIN(__builtin_powil, "LdLdi", "Fnc") +BUILTIN(__builtin_pow , "ddd" , "Fne") +BUILTIN(__builtin_powf, "fff" , "Fne") +BUILTIN(__builtin_powl, "LdLdLd", "Fne") + +// Standard unary libc/libm functions with double/float/long double variants: +BUILTIN(__builtin_acos , "dd" , "Fne") +BUILTIN(__builtin_acosf, "ff" , "Fne") +BUILTIN(__builtin_acosl, "LdLd", "Fne") +BUILTIN(__builtin_acosh , "dd" , "Fne") +BUILTIN(__builtin_acoshf, "ff" , "Fne") +BUILTIN(__builtin_acoshl, "LdLd", "Fne") +BUILTIN(__builtin_asin , "dd" , "Fne") +BUILTIN(__builtin_asinf, "ff" , "Fne") +BUILTIN(__builtin_asinl, "LdLd", "Fne") +BUILTIN(__builtin_asinh , "dd" , "Fne") +BUILTIN(__builtin_asinhf, "ff" , "Fne") +BUILTIN(__builtin_asinhl, "LdLd", "Fne") +BUILTIN(__builtin_atan , "dd" , "Fne") +BUILTIN(__builtin_atanf, "ff" , "Fne") +BUILTIN(__builtin_atanl, "LdLd", "Fne") +BUILTIN(__builtin_atanh , "dd", "Fne") +BUILTIN(__builtin_atanhf, "ff", "Fne") +BUILTIN(__builtin_atanhl, "LdLd", "Fne") +BUILTIN(__builtin_cbrt , "dd", "Fnc") +BUILTIN(__builtin_cbrtf, "ff", "Fnc") +BUILTIN(__builtin_cbrtl, "LdLd", "Fnc") +BUILTIN(__builtin_ceil , "dd" , "Fnc") +BUILTIN(__builtin_ceilf, "ff" , "Fnc") +BUILTIN(__builtin_ceill, "LdLd", "Fnc") +BUILTIN(__builtin_cos , "dd" , "Fne") +BUILTIN(__builtin_cosf, "ff" , "Fne") +BUILTIN(__builtin_cosh , "dd" , "Fne") +BUILTIN(__builtin_coshf, "ff" , "Fne") +BUILTIN(__builtin_coshl, "LdLd", "Fne") +BUILTIN(__builtin_cosl, "LdLd", "Fne") +BUILTIN(__builtin_erf , "dd", "Fne") +BUILTIN(__builtin_erff, "ff", "Fne") +BUILTIN(__builtin_erfl, "LdLd", "Fne") +BUILTIN(__builtin_erfc , "dd", "Fne") +BUILTIN(__builtin_erfcf, "ff", "Fne") +BUILTIN(__builtin_erfcl, "LdLd", "Fne") +BUILTIN(__builtin_exp , "dd" , "Fne") +BUILTIN(__builtin_expf, "ff" , "Fne") +BUILTIN(__builtin_expl, "LdLd", "Fne") +BUILTIN(__builtin_exp2 , "dd" , "Fne") +BUILTIN(__builtin_exp2f, "ff" , "Fne") +BUILTIN(__builtin_exp2l, "LdLd", "Fne") +BUILTIN(__builtin_expm1 , "dd", "Fne") +BUILTIN(__builtin_expm1f, "ff", "Fne") +BUILTIN(__builtin_expm1l, "LdLd", "Fne") +BUILTIN(__builtin_fdim, "ddd", "Fne") +BUILTIN(__builtin_fdimf, "fff", "Fne") +BUILTIN(__builtin_fdiml, "LdLdLd", "Fne") +BUILTIN(__builtin_floor , "dd" , "Fnc") +BUILTIN(__builtin_floorf, "ff" , "Fnc") +BUILTIN(__builtin_floorl, "LdLd", "Fnc") +BUILTIN(__builtin_fma, "dddd", "Fne") +BUILTIN(__builtin_fmaf, "ffff", "Fne") +BUILTIN(__builtin_fmal, "LdLdLdLd", "Fne") +BUILTIN(__builtin_fmax, "ddd", "Fnc") +BUILTIN(__builtin_fmaxf, "fff", "Fnc") +BUILTIN(__builtin_fmaxl, "LdLdLd", "Fnc") +BUILTIN(__builtin_fmin, "ddd", "Fnc") +BUILTIN(__builtin_fminf, "fff", "Fnc") +BUILTIN(__builtin_fminl, "LdLdLd", "Fnc") +BUILTIN(__builtin_hypot , "ddd" , "Fne") +BUILTIN(__builtin_hypotf, "fff" , "Fne") +BUILTIN(__builtin_hypotl, "LdLdLd", "Fne") +BUILTIN(__builtin_ilogb , "id", "Fne") +BUILTIN(__builtin_ilogbf, "if", "Fne") +BUILTIN(__builtin_ilogbl, "iLd", "Fne") +BUILTIN(__builtin_lgamma , "dd", "Fn") +BUILTIN(__builtin_lgammaf, "ff", "Fn") +BUILTIN(__builtin_lgammal, "LdLd", "Fn") +BUILTIN(__builtin_llrint, "LLid", "Fne") +BUILTIN(__builtin_llrintf, "LLif", "Fne") +BUILTIN(__builtin_llrintl, "LLiLd", "Fne") +BUILTIN(__builtin_llround , "LLid", "Fne") +BUILTIN(__builtin_llroundf, "LLif", "Fne") +BUILTIN(__builtin_llroundl, "LLiLd", "Fne") +BUILTIN(__builtin_log , "dd" , "Fne") +BUILTIN(__builtin_log10 , "dd" , "Fne") +BUILTIN(__builtin_log10f, "ff" , "Fne") +BUILTIN(__builtin_log10l, "LdLd", "Fne") +BUILTIN(__builtin_log1p , "dd" , "Fne") +BUILTIN(__builtin_log1pf, "ff" , "Fne") +BUILTIN(__builtin_log1pl, "LdLd", "Fne") +BUILTIN(__builtin_log2, "dd" , "Fne") +BUILTIN(__builtin_log2f, "ff" , "Fne") +BUILTIN(__builtin_log2l, "LdLd" , "Fne") +BUILTIN(__builtin_logb , "dd", "Fne") +BUILTIN(__builtin_logbf, "ff", "Fne") +BUILTIN(__builtin_logbl, "LdLd", "Fne") +BUILTIN(__builtin_logf, "ff" , "Fne") +BUILTIN(__builtin_logl, "LdLd", "Fne") +BUILTIN(__builtin_lrint , "Lid", "Fne") +BUILTIN(__builtin_lrintf, "Lif", "Fne") +BUILTIN(__builtin_lrintl, "LiLd", "Fne") +BUILTIN(__builtin_lround , "Lid", "Fne") +BUILTIN(__builtin_lroundf, "Lif", "Fne") +BUILTIN(__builtin_lroundl, "LiLd", "Fne") +BUILTIN(__builtin_nearbyint , "dd", "Fnc") +BUILTIN(__builtin_nearbyintf, "ff", "Fnc") +BUILTIN(__builtin_nearbyintl, "LdLd", "Fnc") +BUILTIN(__builtin_nextafter , "ddd", "Fne") +BUILTIN(__builtin_nextafterf, "fff", "Fne") +BUILTIN(__builtin_nextafterl, "LdLdLd", "Fne") +BUILTIN(__builtin_nexttoward , "ddLd", "Fne") +BUILTIN(__builtin_nexttowardf, "ffLd", "Fne") +BUILTIN(__builtin_nexttowardl, "LdLdLd", "Fne") +BUILTIN(__builtin_remainder , "ddd", "Fne") +BUILTIN(__builtin_remainderf, "fff", "Fne") +BUILTIN(__builtin_remainderl, "LdLdLd", "Fne") +BUILTIN(__builtin_remquo , "dddi*", "Fn") +BUILTIN(__builtin_remquof, "fffi*", "Fn") +BUILTIN(__builtin_remquol, "LdLdLdi*", "Fn") +BUILTIN(__builtin_rint , "dd", "Fnc") +BUILTIN(__builtin_rintf, "ff", "Fnc") +BUILTIN(__builtin_rintl, "LdLd", "Fnc") +BUILTIN(__builtin_round, "dd" , "Fnc") +BUILTIN(__builtin_roundf, "ff" , "Fnc") +BUILTIN(__builtin_roundl, "LdLd" , "Fnc") +BUILTIN(__builtin_scalbln , "ddLi", "Fne") +BUILTIN(__builtin_scalblnf, "ffLi", "Fne") +BUILTIN(__builtin_scalblnl, "LdLdLi", "Fne") +BUILTIN(__builtin_scalbn , "ddi", "Fne") +BUILTIN(__builtin_scalbnf, "ffi", "Fne") +BUILTIN(__builtin_scalbnl, "LdLdi", "Fne") +BUILTIN(__builtin_sin , "dd" , "Fne") +BUILTIN(__builtin_sinf, "ff" , "Fne") +BUILTIN(__builtin_sinh , "dd" , "Fne") +BUILTIN(__builtin_sinhf, "ff" , "Fne") +BUILTIN(__builtin_sinhl, "LdLd", "Fne") +BUILTIN(__builtin_sinl, "LdLd", "Fne") +BUILTIN(__builtin_sqrt , "dd" , "Fne") +BUILTIN(__builtin_sqrtf, "ff" , "Fne") +BUILTIN(__builtin_sqrtl, "LdLd", "Fne") +BUILTIN(__builtin_tan , "dd" , "Fne") +BUILTIN(__builtin_tanf, "ff" , "Fne") +BUILTIN(__builtin_tanh , "dd" , "Fne") +BUILTIN(__builtin_tanhf, "ff" , "Fne") +BUILTIN(__builtin_tanhl, "LdLd", "Fne") +BUILTIN(__builtin_tanl, "LdLd", "Fne") +BUILTIN(__builtin_tgamma , "dd", "Fne") +BUILTIN(__builtin_tgammaf, "ff", "Fne") +BUILTIN(__builtin_tgammal, "LdLd", "Fne") +BUILTIN(__builtin_trunc , "dd", "Fnc") +BUILTIN(__builtin_truncf, "ff", "Fnc") +BUILTIN(__builtin_truncl, "LdLd", "Fnc") + +// C99 complex builtins +BUILTIN(__builtin_cabs, "dXd", "Fne") +BUILTIN(__builtin_cabsf, "fXf", "Fne") +BUILTIN(__builtin_cabsl, "LdXLd", "Fne") +BUILTIN(__builtin_cacos, "XdXd", "Fne") +BUILTIN(__builtin_cacosf, "XfXf", "Fne") +BUILTIN(__builtin_cacosh, "XdXd", "Fne") +BUILTIN(__builtin_cacoshf, "XfXf", "Fne") +BUILTIN(__builtin_cacoshl, "XLdXLd", "Fne") +BUILTIN(__builtin_cacosl, "XLdXLd", "Fne") +BUILTIN(__builtin_carg, "dXd", "Fne") +BUILTIN(__builtin_cargf, "fXf", "Fne") +BUILTIN(__builtin_cargl, "LdXLd", "Fne") +BUILTIN(__builtin_casin, "XdXd", "Fne") +BUILTIN(__builtin_casinf, "XfXf", "Fne") +BUILTIN(__builtin_casinh, "XdXd", "Fne") +BUILTIN(__builtin_casinhf, "XfXf", "Fne") +BUILTIN(__builtin_casinhl, "XLdXLd", "Fne") +BUILTIN(__builtin_casinl, "XLdXLd", "Fne") +BUILTIN(__builtin_catan, "XdXd", "Fne") +BUILTIN(__builtin_catanf, "XfXf", "Fne") +BUILTIN(__builtin_catanh, "XdXd", "Fne") +BUILTIN(__builtin_catanhf, "XfXf", "Fne") +BUILTIN(__builtin_catanhl, "XLdXLd", "Fne") +BUILTIN(__builtin_catanl, "XLdXLd", "Fne") +BUILTIN(__builtin_ccos, "XdXd", "Fne") +BUILTIN(__builtin_ccosf, "XfXf", "Fne") +BUILTIN(__builtin_ccosl, "XLdXLd", "Fne") +BUILTIN(__builtin_ccosh, "XdXd", "Fne") +BUILTIN(__builtin_ccoshf, "XfXf", "Fne") +BUILTIN(__builtin_ccoshl, "XLdXLd", "Fne") +BUILTIN(__builtin_cexp, "XdXd", "Fne") +BUILTIN(__builtin_cexpf, "XfXf", "Fne") +BUILTIN(__builtin_cexpl, "XLdXLd", "Fne") +BUILTIN(__builtin_cimag, "dXd", "Fnc") +BUILTIN(__builtin_cimagf, "fXf", "Fnc") +BUILTIN(__builtin_cimagl, "LdXLd", "Fnc") +BUILTIN(__builtin_conj, "XdXd", "Fnc") +BUILTIN(__builtin_conjf, "XfXf", "Fnc") +BUILTIN(__builtin_conjl, "XLdXLd", "Fnc") +BUILTIN(__builtin_clog, "XdXd", "Fne") +BUILTIN(__builtin_clogf, "XfXf", "Fne") +BUILTIN(__builtin_clogl, "XLdXLd", "Fne") +BUILTIN(__builtin_cproj, "XdXd", "Fnc") +BUILTIN(__builtin_cprojf, "XfXf", "Fnc") +BUILTIN(__builtin_cprojl, "XLdXLd", "Fnc") +BUILTIN(__builtin_cpow, "XdXdXd", "Fne") +BUILTIN(__builtin_cpowf, "XfXfXf", "Fne") +BUILTIN(__builtin_cpowl, "XLdXLdXLd", "Fne") +BUILTIN(__builtin_creal, "dXd", "Fnc") +BUILTIN(__builtin_crealf, "fXf", "Fnc") +BUILTIN(__builtin_creall, "LdXLd", "Fnc") +BUILTIN(__builtin_csin, "XdXd", "Fne") +BUILTIN(__builtin_csinf, "XfXf", "Fne") +BUILTIN(__builtin_csinl, "XLdXLd", "Fne") +BUILTIN(__builtin_csinh, "XdXd", "Fne") +BUILTIN(__builtin_csinhf, "XfXf", "Fne") +BUILTIN(__builtin_csinhl, "XLdXLd", "Fne") +BUILTIN(__builtin_csqrt, "XdXd", "Fne") +BUILTIN(__builtin_csqrtf, "XfXf", "Fne") +BUILTIN(__builtin_csqrtl, "XLdXLd", "Fne") +BUILTIN(__builtin_ctan, "XdXd", "Fne") +BUILTIN(__builtin_ctanf, "XfXf", "Fne") +BUILTIN(__builtin_ctanl, "XLdXLd", "Fne") +BUILTIN(__builtin_ctanh, "XdXd", "Fne") +BUILTIN(__builtin_ctanhf, "XfXf", "Fne") +BUILTIN(__builtin_ctanhl, "XLdXLd", "Fne") + +// FP Comparisons. +BUILTIN(__builtin_isgreater , "i.", "Fnc") +BUILTIN(__builtin_isgreaterequal, "i.", "Fnc") +BUILTIN(__builtin_isless , "i.", "Fnc") +BUILTIN(__builtin_islessequal , "i.", "Fnc") +BUILTIN(__builtin_islessgreater , "i.", "Fnc") +BUILTIN(__builtin_isunordered , "i.", "Fnc") + +// Unary FP classification +BUILTIN(__builtin_fpclassify, "iiiiii.", "Fnc") +BUILTIN(__builtin_isfinite, "i.", "Fnc") +BUILTIN(__builtin_isinf, "i.", "Fnc") +BUILTIN(__builtin_isinf_sign, "i.", "Fnc") +BUILTIN(__builtin_isnan, "i.", "Fnc") +BUILTIN(__builtin_isnormal, "i.", "Fnc") + +// FP signbit builtins +BUILTIN(__builtin_signbit, "i.", "Fnc") +BUILTIN(__builtin_signbitf, "if", "Fnc") +BUILTIN(__builtin_signbitl, "iLd", "Fnc") + +// Special FP builtins. +BUILTIN(__builtin_canonicalize, "dd", "nc") +BUILTIN(__builtin_canonicalizef, "ff", "nc") +BUILTIN(__builtin_canonicalizel, "LdLd", "nc") + +// Builtins for arithmetic. +BUILTIN(__builtin_clzs , "iUs" , "nc") +BUILTIN(__builtin_clz , "iUi" , "nc") +BUILTIN(__builtin_clzl , "iULi" , "nc") +BUILTIN(__builtin_clzll, "iULLi", "nc") +// TODO: int clzimax(uintmax_t) +BUILTIN(__builtin_ctzs , "iUs" , "nc") +BUILTIN(__builtin_ctz , "iUi" , "nc") +BUILTIN(__builtin_ctzl , "iULi" , "nc") +BUILTIN(__builtin_ctzll, "iULLi", "nc") +// TODO: int ctzimax(uintmax_t) +BUILTIN(__builtin_ffs , "ii" , "Fnc") +BUILTIN(__builtin_ffsl , "iLi" , "Fnc") +BUILTIN(__builtin_ffsll, "iLLi", "Fnc") +BUILTIN(__builtin_parity , "iUi" , "nc") +BUILTIN(__builtin_parityl , "iULi" , "nc") +BUILTIN(__builtin_parityll, "iULLi", "nc") +BUILTIN(__builtin_popcount , "iUi" , "nc") +BUILTIN(__builtin_popcountl , "iULi" , "nc") +BUILTIN(__builtin_popcountll, "iULLi", "nc") +BUILTIN(__builtin_clrsb , "ii" , "nc") +BUILTIN(__builtin_clrsbl , "iLi" , "nc") +BUILTIN(__builtin_clrsbll, "iLLi", "nc") + +// FIXME: These type signatures are not correct for targets with int != 32-bits +// or with ULL != 64-bits. +BUILTIN(__builtin_bswap16, "UsUs", "nc") +BUILTIN(__builtin_bswap32, "UiUi", "nc") +BUILTIN(__builtin_bswap64, "ULLiULLi", "nc") + +BUILTIN(__builtin_bitreverse8, "UcUc", "nc") +BUILTIN(__builtin_bitreverse16, "UsUs", "nc") +BUILTIN(__builtin_bitreverse32, "UiUi", "nc") +BUILTIN(__builtin_bitreverse64, "ULLiULLi", "nc") + +BUILTIN(__builtin_rotateleft8, "UcUcUc", "nc") +BUILTIN(__builtin_rotateleft16, "UsUsUs", "nc") +BUILTIN(__builtin_rotateleft32, "UiUiUi", "nc") +BUILTIN(__builtin_rotateleft64, "ULLiULLiULLi", "nc") +BUILTIN(__builtin_rotateright8, "UcUcUc", "nc") +BUILTIN(__builtin_rotateright16, "UsUsUs", "nc") +BUILTIN(__builtin_rotateright32, "UiUiUi", "nc") +BUILTIN(__builtin_rotateright64, "ULLiULLiULLi", "nc") + +// Random GCC builtins +BUILTIN(__builtin_constant_p, "i.", "nctu") +BUILTIN(__builtin_classify_type, "i.", "nctu") +BUILTIN(__builtin___CFStringMakeConstantString, "FC*cC*", "nc") +BUILTIN(__builtin___NSStringMakeConstantString, "FC*cC*", "nc") +BUILTIN(__builtin_va_start, "vA.", "nt") +BUILTIN(__builtin_va_end, "vA", "n") +BUILTIN(__builtin_va_copy, "vAA", "n") +BUILTIN(__builtin_stdarg_start, "vA.", "n") +BUILTIN(__builtin_assume_aligned, "v*vC*z.", "nc") +BUILTIN(__builtin_bcmp, "iv*v*z", "Fn") +BUILTIN(__builtin_bcopy, "vv*v*z", "n") +BUILTIN(__builtin_bzero, "vv*z", "nF") +BUILTIN(__builtin_fprintf, "iP*cC*.", "Fp:1:") +BUILTIN(__builtin_memchr, "v*vC*iz", "nF") +BUILTIN(__builtin_memcmp, "ivC*vC*z", "nF") +BUILTIN(__builtin_memcpy, "v*v*vC*z", "nF") +BUILTIN(__builtin_memmove, "v*v*vC*z", "nF") +BUILTIN(__builtin_mempcpy, "v*v*vC*z", "nF") +BUILTIN(__builtin_memset, "v*v*iz", "nF") +BUILTIN(__builtin_printf, "icC*.", "Fp:0:") +BUILTIN(__builtin_stpcpy, "c*c*cC*", "nF") +BUILTIN(__builtin_stpncpy, "c*c*cC*z", "nF") +BUILTIN(__builtin_strcasecmp, "icC*cC*", "nF") +BUILTIN(__builtin_strcat, "c*c*cC*", "nF") +BUILTIN(__builtin_strchr, "c*cC*i", "nF") +BUILTIN(__builtin_strcmp, "icC*cC*", "nF") +BUILTIN(__builtin_strcpy, "c*c*cC*", "nF") +BUILTIN(__builtin_strcspn, "zcC*cC*", "nF") +BUILTIN(__builtin_strdup, "c*cC*", "nF") +BUILTIN(__builtin_strlen, "zcC*", "nF") +BUILTIN(__builtin_strncasecmp, "icC*cC*z", "nF") +BUILTIN(__builtin_strncat, "c*c*cC*z", "nF") +BUILTIN(__builtin_strncmp, "icC*cC*z", "nF") +BUILTIN(__builtin_strncpy, "c*c*cC*z", "nF") +BUILTIN(__builtin_strndup, "c*cC*z", "nF") +BUILTIN(__builtin_strpbrk, "c*cC*cC*", "nF") +BUILTIN(__builtin_strrchr, "c*cC*i", "nF") +BUILTIN(__builtin_strspn, "zcC*cC*", "nF") +BUILTIN(__builtin_strstr, "c*cC*cC*", "nF") +BUILTIN(__builtin_wcschr, "w*wC*w", "nF") +BUILTIN(__builtin_wcscmp, "iwC*wC*", "nF") +BUILTIN(__builtin_wcslen, "zwC*", "nF") +BUILTIN(__builtin_wcsncmp, "iwC*wC*z", "nF") +BUILTIN(__builtin_wmemchr, "w*wC*wz", "nF") +BUILTIN(__builtin_wmemcmp, "iwC*wC*z", "nF") +BUILTIN(__builtin_wmemcpy, "w*w*wC*z", "nF") +BUILTIN(__builtin_wmemmove, "w*w*wC*z", "nF") +BUILTIN(__builtin_return_address, "v*IUi", "n") +BUILTIN(__builtin_extract_return_addr, "v*v*", "n") +BUILTIN(__builtin_frame_address, "v*IUi", "n") +BUILTIN(__builtin___clear_cache, "vc*c*", "n") +BUILTIN(__builtin_flt_rounds, "i", "nc") +BUILTIN(__builtin_setjmp, "iv**", "j") +BUILTIN(__builtin_longjmp, "vv**i", "r") +BUILTIN(__builtin_unwind_init, "v", "") +BUILTIN(__builtin_eh_return_data_regno, "iIi", "nc") +BUILTIN(__builtin_snprintf, "ic*zcC*.", "nFp:2:") +BUILTIN(__builtin_vsprintf, "ic*cC*a", "nFP:1:") +BUILTIN(__builtin_vsnprintf, "ic*zcC*a", "nFP:2:") +BUILTIN(__builtin_thread_pointer, "v*", "nc") +BUILTIN(__builtin_launder, "v*v*", "nt") + +// GCC exception builtins +BUILTIN(__builtin_eh_return, "vzv*", "r") // FIXME: Takes intptr_t, not size_t! +BUILTIN(__builtin_frob_return_addr, "v*v*", "n") +BUILTIN(__builtin_dwarf_cfa, "v*", "n") +BUILTIN(__builtin_init_dwarf_reg_size_table, "vv*", "n") +BUILTIN(__builtin_dwarf_sp_column, "Ui", "n") +BUILTIN(__builtin_extend_pointer, "ULLiv*", "n") // _Unwind_Word == uint64_t + +// GCC Object size checking builtins +BUILTIN(__builtin_object_size, "zvC*i", "nu") +BUILTIN(__builtin_dynamic_object_size, "zvC*i", "nu") // Clang only. +BUILTIN(__builtin___memcpy_chk, "v*v*vC*zz", "nF") +BUILTIN(__builtin___memccpy_chk, "v*v*vC*izz", "nF") +BUILTIN(__builtin___memmove_chk, "v*v*vC*zz", "nF") +BUILTIN(__builtin___mempcpy_chk, "v*v*vC*zz", "nF") +BUILTIN(__builtin___memset_chk, "v*v*izz", "nF") +BUILTIN(__builtin___stpcpy_chk, "c*c*cC*z", "nF") +BUILTIN(__builtin___strcat_chk, "c*c*cC*z", "nF") +BUILTIN(__builtin___strcpy_chk, "c*c*cC*z", "nF") +BUILTIN(__builtin___strlcat_chk, "zc*cC*zz", "nF") +BUILTIN(__builtin___strlcpy_chk, "zc*cC*zz", "nF") +BUILTIN(__builtin___strncat_chk, "c*c*cC*zz", "nF") +BUILTIN(__builtin___strncpy_chk, "c*c*cC*zz", "nF") +BUILTIN(__builtin___stpncpy_chk, "c*c*cC*zz", "nF") +BUILTIN(__builtin___snprintf_chk, "ic*zizcC*.", "Fp:4:") +BUILTIN(__builtin___sprintf_chk, "ic*izcC*.", "Fp:3:") +BUILTIN(__builtin___vsnprintf_chk, "ic*zizcC*a", "FP:4:") +BUILTIN(__builtin___vsprintf_chk, "ic*izcC*a", "FP:3:") +BUILTIN(__builtin___fprintf_chk, "iP*icC*.", "Fp:2:") +BUILTIN(__builtin___printf_chk, "iicC*.", "Fp:1:") +BUILTIN(__builtin___vfprintf_chk, "iP*icC*a", "FP:2:") +BUILTIN(__builtin___vprintf_chk, "iicC*a", "FP:1:") + +BUILTIN(__builtin_unpredictable, "LiLi" , "nc") +BUILTIN(__builtin_expect, "LiLiLi" , "nc") +BUILTIN(__builtin_prefetch, "vvC*.", "nc") +BUILTIN(__builtin_readcyclecounter, "ULLi", "n") +BUILTIN(__builtin_trap, "v", "nr") +BUILTIN(__builtin_debugtrap, "v", "n") +BUILTIN(__builtin_unreachable, "v", "nr") +BUILTIN(__builtin_shufflevector, "v." , "nct") +BUILTIN(__builtin_convertvector, "v." , "nct") +BUILTIN(__builtin_alloca, "v*z" , "Fn") +BUILTIN(__builtin_alloca_with_align, "v*zIz", "Fn") +BUILTIN(__builtin_call_with_static_chain, "v.", "nt") + +// "Overloaded" Atomic operator builtins. These are overloaded to support data +// types of i8, i16, i32, i64, and i128. The front-end sees calls to the +// non-suffixed version of these (which has a bogus type) and transforms them to +// the right overloaded version in Sema (plus casts). + +// FIXME: These assume that char -> i8, short -> i16, int -> i32, +// long long -> i64. + +BUILTIN(__sync_fetch_and_add, "v.", "t") +BUILTIN(__sync_fetch_and_add_1, "ccD*c.", "nt") +BUILTIN(__sync_fetch_and_add_2, "ssD*s.", "nt") +BUILTIN(__sync_fetch_and_add_4, "iiD*i.", "nt") +BUILTIN(__sync_fetch_and_add_8, "LLiLLiD*LLi.", "nt") +BUILTIN(__sync_fetch_and_add_16, "LLLiLLLiD*LLLi.", "nt") + +BUILTIN(__sync_fetch_and_sub, "v.", "t") +BUILTIN(__sync_fetch_and_sub_1, "ccD*c.", "nt") +BUILTIN(__sync_fetch_and_sub_2, "ssD*s.", "nt") +BUILTIN(__sync_fetch_and_sub_4, "iiD*i.", "nt") +BUILTIN(__sync_fetch_and_sub_8, "LLiLLiD*LLi.", "nt") +BUILTIN(__sync_fetch_and_sub_16, "LLLiLLLiD*LLLi.", "nt") + +BUILTIN(__sync_fetch_and_or, "v.", "t") +BUILTIN(__sync_fetch_and_or_1, "ccD*c.", "nt") +BUILTIN(__sync_fetch_and_or_2, "ssD*s.", "nt") +BUILTIN(__sync_fetch_and_or_4, "iiD*i.", "nt") +BUILTIN(__sync_fetch_and_or_8, "LLiLLiD*LLi.", "nt") +BUILTIN(__sync_fetch_and_or_16, "LLLiLLLiD*LLLi.", "nt") + +BUILTIN(__sync_fetch_and_and, "v.", "t") +BUILTIN(__sync_fetch_and_and_1, "ccD*c.", "tn") +BUILTIN(__sync_fetch_and_and_2, "ssD*s.", "tn") +BUILTIN(__sync_fetch_and_and_4, "iiD*i.", "tn") +BUILTIN(__sync_fetch_and_and_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_fetch_and_and_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_fetch_and_xor, "v.", "t") +BUILTIN(__sync_fetch_and_xor_1, "ccD*c.", "tn") +BUILTIN(__sync_fetch_and_xor_2, "ssD*s.", "tn") +BUILTIN(__sync_fetch_and_xor_4, "iiD*i.", "tn") +BUILTIN(__sync_fetch_and_xor_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_fetch_and_xor_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_fetch_and_nand, "v.", "t") +BUILTIN(__sync_fetch_and_nand_1, "ccD*c.", "tn") +BUILTIN(__sync_fetch_and_nand_2, "ssD*s.", "tn") +BUILTIN(__sync_fetch_and_nand_4, "iiD*i.", "tn") +BUILTIN(__sync_fetch_and_nand_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_fetch_and_nand_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_add_and_fetch, "v.", "t") +BUILTIN(__sync_add_and_fetch_1, "ccD*c.", "tn") +BUILTIN(__sync_add_and_fetch_2, "ssD*s.", "tn") +BUILTIN(__sync_add_and_fetch_4, "iiD*i.", "tn") +BUILTIN(__sync_add_and_fetch_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_add_and_fetch_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_sub_and_fetch, "v.", "t") +BUILTIN(__sync_sub_and_fetch_1, "ccD*c.", "tn") +BUILTIN(__sync_sub_and_fetch_2, "ssD*s.", "tn") +BUILTIN(__sync_sub_and_fetch_4, "iiD*i.", "tn") +BUILTIN(__sync_sub_and_fetch_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_sub_and_fetch_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_or_and_fetch, "v.", "t") +BUILTIN(__sync_or_and_fetch_1, "ccD*c.", "tn") +BUILTIN(__sync_or_and_fetch_2, "ssD*s.", "tn") +BUILTIN(__sync_or_and_fetch_4, "iiD*i.", "tn") +BUILTIN(__sync_or_and_fetch_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_or_and_fetch_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_and_and_fetch, "v.", "t") +BUILTIN(__sync_and_and_fetch_1, "ccD*c.", "tn") +BUILTIN(__sync_and_and_fetch_2, "ssD*s.", "tn") +BUILTIN(__sync_and_and_fetch_4, "iiD*i.", "tn") +BUILTIN(__sync_and_and_fetch_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_and_and_fetch_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_xor_and_fetch, "v.", "t") +BUILTIN(__sync_xor_and_fetch_1, "ccD*c.", "tn") +BUILTIN(__sync_xor_and_fetch_2, "ssD*s.", "tn") +BUILTIN(__sync_xor_and_fetch_4, "iiD*i.", "tn") +BUILTIN(__sync_xor_and_fetch_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_xor_and_fetch_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_nand_and_fetch, "v.", "t") +BUILTIN(__sync_nand_and_fetch_1, "ccD*c.", "tn") +BUILTIN(__sync_nand_and_fetch_2, "ssD*s.", "tn") +BUILTIN(__sync_nand_and_fetch_4, "iiD*i.", "tn") +BUILTIN(__sync_nand_and_fetch_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_nand_and_fetch_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_bool_compare_and_swap, "v.", "t") +BUILTIN(__sync_bool_compare_and_swap_1, "bcD*cc.", "tn") +BUILTIN(__sync_bool_compare_and_swap_2, "bsD*ss.", "tn") +BUILTIN(__sync_bool_compare_and_swap_4, "biD*ii.", "tn") +BUILTIN(__sync_bool_compare_and_swap_8, "bLLiD*LLiLLi.", "tn") +BUILTIN(__sync_bool_compare_and_swap_16, "bLLLiD*LLLiLLLi.", "tn") + +BUILTIN(__sync_val_compare_and_swap, "v.", "t") +BUILTIN(__sync_val_compare_and_swap_1, "ccD*cc.", "tn") +BUILTIN(__sync_val_compare_and_swap_2, "ssD*ss.", "tn") +BUILTIN(__sync_val_compare_and_swap_4, "iiD*ii.", "tn") +BUILTIN(__sync_val_compare_and_swap_8, "LLiLLiD*LLiLLi.", "tn") +BUILTIN(__sync_val_compare_and_swap_16, "LLLiLLLiD*LLLiLLLi.", "tn") + +BUILTIN(__sync_lock_test_and_set, "v.", "t") +BUILTIN(__sync_lock_test_and_set_1, "ccD*c.", "tn") +BUILTIN(__sync_lock_test_and_set_2, "ssD*s.", "tn") +BUILTIN(__sync_lock_test_and_set_4, "iiD*i.", "tn") +BUILTIN(__sync_lock_test_and_set_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_lock_test_and_set_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_lock_release, "v.", "t") +BUILTIN(__sync_lock_release_1, "vcD*.", "tn") +BUILTIN(__sync_lock_release_2, "vsD*.", "tn") +BUILTIN(__sync_lock_release_4, "viD*.", "tn") +BUILTIN(__sync_lock_release_8, "vLLiD*.", "tn") +BUILTIN(__sync_lock_release_16, "vLLLiD*.", "tn") + +BUILTIN(__sync_swap, "v.", "t") +BUILTIN(__sync_swap_1, "ccD*c.", "tn") +BUILTIN(__sync_swap_2, "ssD*s.", "tn") +BUILTIN(__sync_swap_4, "iiD*i.", "tn") +BUILTIN(__sync_swap_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_swap_16, "LLLiLLLiD*LLLi.", "tn") + +// Some of our atomics builtins are handled by AtomicExpr rather than +// as normal builtin CallExprs. This macro is used for such builtins. +#ifndef ATOMIC_BUILTIN +#define ATOMIC_BUILTIN(ID, TYPE, ATTRS) BUILTIN(ID, TYPE, ATTRS) +#endif + +// C11 _Atomic operations for <stdatomic.h>. +ATOMIC_BUILTIN(__c11_atomic_init, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_load, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_store, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_exchange, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_compare_exchange_strong, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_compare_exchange_weak, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_fetch_add, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_fetch_sub, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_fetch_and, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_fetch_or, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_fetch_xor, "v.", "t") +BUILTIN(__c11_atomic_thread_fence, "vi", "n") +BUILTIN(__c11_atomic_signal_fence, "vi", "n") +BUILTIN(__c11_atomic_is_lock_free, "iz", "n") + +// GNU atomic builtins. +ATOMIC_BUILTIN(__atomic_load, "v.", "t") +ATOMIC_BUILTIN(__atomic_load_n, "v.", "t") +ATOMIC_BUILTIN(__atomic_store, "v.", "t") +ATOMIC_BUILTIN(__atomic_store_n, "v.", "t") +ATOMIC_BUILTIN(__atomic_exchange, "v.", "t") +ATOMIC_BUILTIN(__atomic_exchange_n, "v.", "t") +ATOMIC_BUILTIN(__atomic_compare_exchange, "v.", "t") +ATOMIC_BUILTIN(__atomic_compare_exchange_n, "v.", "t") +ATOMIC_BUILTIN(__atomic_fetch_add, "v.", "t") +ATOMIC_BUILTIN(__atomic_fetch_sub, "v.", "t") +ATOMIC_BUILTIN(__atomic_fetch_and, "v.", "t") +ATOMIC_BUILTIN(__atomic_fetch_or, "v.", "t") +ATOMIC_BUILTIN(__atomic_fetch_xor, "v.", "t") +ATOMIC_BUILTIN(__atomic_fetch_nand, "v.", "t") +ATOMIC_BUILTIN(__atomic_add_fetch, "v.", "t") +ATOMIC_BUILTIN(__atomic_sub_fetch, "v.", "t") +ATOMIC_BUILTIN(__atomic_and_fetch, "v.", "t") +ATOMIC_BUILTIN(__atomic_or_fetch, "v.", "t") +ATOMIC_BUILTIN(__atomic_xor_fetch, "v.", "t") +ATOMIC_BUILTIN(__atomic_nand_fetch, "v.", "t") +BUILTIN(__atomic_test_and_set, "bvD*i", "n") +BUILTIN(__atomic_clear, "vvD*i", "n") +BUILTIN(__atomic_thread_fence, "vi", "n") +BUILTIN(__atomic_signal_fence, "vi", "n") +BUILTIN(__atomic_always_lock_free, "izvCD*", "n") +BUILTIN(__atomic_is_lock_free, "izvCD*", "n") + +// OpenCL 2.0 atomic builtins. +ATOMIC_BUILTIN(__opencl_atomic_init, "v.", "t") +ATOMIC_BUILTIN(__opencl_atomic_load, "v.", "t") +ATOMIC_BUILTIN(__opencl_atomic_store, "v.", "t") +ATOMIC_BUILTIN(__opencl_atomic_exchange, "v.", "t") +ATOMIC_BUILTIN(__opencl_atomic_compare_exchange_strong, "v.", "t") +ATOMIC_BUILTIN(__opencl_atomic_compare_exchange_weak, "v.", "t") +ATOMIC_BUILTIN(__opencl_atomic_fetch_add, "v.", "t") +ATOMIC_BUILTIN(__opencl_atomic_fetch_sub, "v.", "t") +ATOMIC_BUILTIN(__opencl_atomic_fetch_and, "v.", "t") +ATOMIC_BUILTIN(__opencl_atomic_fetch_or, "v.", "t") +ATOMIC_BUILTIN(__opencl_atomic_fetch_xor, "v.", "t") +ATOMIC_BUILTIN(__opencl_atomic_fetch_min, "v.", "t") +ATOMIC_BUILTIN(__opencl_atomic_fetch_max, "v.", "t") + +// GCC does not support these, they are a Clang extension. +ATOMIC_BUILTIN(__atomic_fetch_min, "v.", "t") +ATOMIC_BUILTIN(__atomic_fetch_max, "v.", "t") + +#undef ATOMIC_BUILTIN + +// Non-overloaded atomic builtins. +BUILTIN(__sync_synchronize, "v", "n") +// GCC does not support these, they are a Clang extension. +BUILTIN(__sync_fetch_and_min, "iiD*i", "n") +BUILTIN(__sync_fetch_and_max, "iiD*i", "n") +BUILTIN(__sync_fetch_and_umin, "UiUiD*Ui", "n") +BUILTIN(__sync_fetch_and_umax, "UiUiD*Ui", "n") + +// Random libc builtins. +BUILTIN(__builtin_abort, "v", "Fnr") +BUILTIN(__builtin_index, "c*cC*i", "Fn") +BUILTIN(__builtin_rindex, "c*cC*i", "Fn") + +// Microsoft builtins. These are only active with -fms-extensions. +LANGBUILTIN(_alloca, "v*z", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__annotation, "wC*.","n", ALL_MS_LANGUAGES) +LANGBUILTIN(__assume, "vb", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_bittest, "UcNiC*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_bittestandcomplement, "UcNi*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_bittestandreset, "UcNi*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_bittestandset, "UcNi*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_bittest64, "UcWiC*Wi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_bittestandcomplement64, "UcWi*Wi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_bittestandreset64, "UcWi*Wi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_bittestandset64, "UcWi*Wi", "n", ALL_MS_LANGUAGES) +LIBBUILTIN(_byteswap_ushort, "UsUs", "fnc", "stdlib.h", ALL_MS_LANGUAGES) +LIBBUILTIN(_byteswap_ulong, "UNiUNi", "fnc", "stdlib.h", ALL_MS_LANGUAGES) +LIBBUILTIN(_byteswap_uint64, "ULLiULLi", "fnc", "stdlib.h", ALL_MS_LANGUAGES) +LANGBUILTIN(__debugbreak, "v", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__exception_code, "UNi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_exception_code, "UNi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__exception_info, "v*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_exception_info, "v*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__abnormal_termination, "i", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_abnormal_termination, "i", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__GetExceptionInfo, "v*.", "ntu", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedAnd8, "ccD*c", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedAnd16, "ssD*s", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedAnd, "NiNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedCompareExchange8, "ccD*cc", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedCompareExchange16, "ssD*ss", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedCompareExchange, "NiNiD*NiNi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedCompareExchange64, "LLiLLiD*LLiLLi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedCompareExchangePointer, "v*v*D*v*v*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedCompareExchangePointer_nf, "v*v*D*v*v*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedDecrement16, "ssD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedDecrement, "NiNiD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedExchange, "NiNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedExchange8, "ccD*c", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedExchange16, "ssD*s", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedExchangeAdd8, "ccD*c", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedExchangeAdd16, "ssD*s", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedExchangeAdd, "NiNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedExchangePointer, "v*v*D*v*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedExchangeSub8, "ccD*c", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedExchangeSub16, "ssD*s", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedExchangeSub, "NiNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedIncrement16, "ssD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedIncrement, "NiNiD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedOr8, "ccD*c", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedOr16, "ssD*s", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedOr, "NiNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedXor8, "ccD*c", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedXor16, "ssD*s", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedXor, "NiNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_interlockedbittestandreset, "UcNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_interlockedbittestandreset64, "UcWiD*Wi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_interlockedbittestandreset_acq, "UcNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_interlockedbittestandreset_nf, "UcNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_interlockedbittestandreset_rel, "UcNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_interlockedbittestandset, "UcNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_interlockedbittestandset64, "UcWiD*Wi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_interlockedbittestandset_acq, "UcNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_interlockedbittestandset_nf, "UcNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_interlockedbittestandset_rel, "UcNiD*Ni", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__noop, "i.", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__lzcnt16, "UsUs", "nc", ALL_MS_LANGUAGES) +LANGBUILTIN(__lzcnt, "UiUi", "nc", ALL_MS_LANGUAGES) +LANGBUILTIN(__lzcnt64, "UWiUWi", "nc", ALL_MS_LANGUAGES) +LANGBUILTIN(__popcnt16, "UsUs", "nc", ALL_MS_LANGUAGES) +LANGBUILTIN(__popcnt, "UiUi", "nc", ALL_MS_LANGUAGES) +LANGBUILTIN(__popcnt64, "UWiUWi", "nc", ALL_MS_LANGUAGES) +LANGBUILTIN(_ReturnAddress, "v*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_rotl8, "UcUcUc", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_rotl16, "UsUsUc", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_rotl, "UiUii", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_lrotl, "UNiUNii", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_rotl64, "UWiUWii", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_rotr8, "UcUcUc", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_rotr16, "UsUsUc", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_rotr, "UiUii", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_lrotr, "UNiUNii", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_rotr64, "UWiUWii", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__va_start, "vc**.", "nt", ALL_MS_LANGUAGES) +LANGBUILTIN(__fastfail, "vUi", "nr", ALL_MS_LANGUAGES) + +// Microsoft library builtins. +LIBBUILTIN(_setjmpex, "iJ", "fj", "setjmpex.h", ALL_MS_LANGUAGES) + +// C99 library functions +// C99 stdarg.h +LIBBUILTIN(va_start, "vA.", "fn", "stdarg.h", ALL_LANGUAGES) +LIBBUILTIN(va_end, "vA", "fn", "stdarg.h", ALL_LANGUAGES) +LIBBUILTIN(va_copy, "vAA", "fn", "stdarg.h", ALL_LANGUAGES) +// C99 stdlib.h +LIBBUILTIN(abort, "v", "fr", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(calloc, "v*zz", "f", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(exit, "vi", "fr", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(_Exit, "vi", "fr", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(malloc, "v*z", "f", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(realloc, "v*v*z", "f", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(strtod, "dcC*c**", "f", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(strtof, "fcC*c**", "f", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(strtold, "LdcC*c**", "f", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(strtol, "LicC*c**i", "f", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(strtoll, "LLicC*c**i", "f", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(strtoul, "ULicC*c**i", "f", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(strtoull, "ULLicC*c**i", "f", "stdlib.h", ALL_LANGUAGES) +// C99 string.h +LIBBUILTIN(memcpy, "v*v*vC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(memcmp, "ivC*vC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(memmove, "v*v*vC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strcpy, "c*c*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strncpy, "c*c*cC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strcmp, "icC*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strncmp, "icC*cC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strcat, "c*c*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strncat, "c*c*cC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strxfrm, "zc*cC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(memchr, "v*vC*iz", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strchr, "c*cC*i", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strcspn, "zcC*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strpbrk, "c*cC*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strrchr, "c*cC*i", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strspn, "zcC*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strstr, "c*cC*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strtok, "c*c*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(memset, "v*v*iz", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strerror, "c*i", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strlen, "zcC*", "f", "string.h", ALL_LANGUAGES) +// C99 stdio.h +// FIXME: This list is incomplete. +LIBBUILTIN(printf, "icC*.", "fp:0:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(fprintf, "iP*cC*.", "fp:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(snprintf, "ic*zcC*.", "fp:2:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(sprintf, "ic*cC*.", "fp:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vprintf, "icC*a", "fP:0:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vfprintf, "iP*cC*a", "fP:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vsnprintf, "ic*zcC*a", "fP:2:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vsprintf, "ic*cC*a", "fP:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(scanf, "icC*R.", "fs:0:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(fscanf, "iP*RcC*R.", "fs:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(sscanf, "icC*RcC*R.", "fs:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vscanf, "icC*Ra", "fS:0:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vfscanf, "iP*RcC*Ra", "fS:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vsscanf, "icC*RcC*Ra", "fS:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(fopen, "P*cC*cC*", "f", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(fread, "zv*zzP*", "f", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(fwrite, "zvC*zzP*", "f", "stdio.h", ALL_LANGUAGES) + +// C99 ctype.h +LIBBUILTIN(isalnum, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +LIBBUILTIN(isalpha, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +LIBBUILTIN(isblank, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +LIBBUILTIN(iscntrl, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +LIBBUILTIN(isdigit, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +LIBBUILTIN(isgraph, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +LIBBUILTIN(islower, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +LIBBUILTIN(isprint, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +LIBBUILTIN(ispunct, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +LIBBUILTIN(isspace, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +LIBBUILTIN(isupper, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +LIBBUILTIN(isxdigit, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +LIBBUILTIN(tolower, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +LIBBUILTIN(toupper, "ii", "fnU", "ctype.h", ALL_LANGUAGES) +// C99 wchar.h +// FIXME: This list is incomplete. We should cover at least the functions that +// take format strings. +LIBBUILTIN(wcschr, "w*wC*w", "f", "wchar.h", ALL_LANGUAGES) +LIBBUILTIN(wcscmp, "iwC*wC*", "f", "wchar.h", ALL_LANGUAGES) +LIBBUILTIN(wcslen, "zwC*", "f", "wchar.h", ALL_LANGUAGES) +LIBBUILTIN(wcsncmp, "iwC*wC*z", "f", "wchar.h", ALL_LANGUAGES) +LIBBUILTIN(wmemchr, "w*wC*wz", "f", "wchar.h", ALL_LANGUAGES) +LIBBUILTIN(wmemcmp, "iwC*wC*z", "f", "wchar.h", ALL_LANGUAGES) +LIBBUILTIN(wmemcpy, "w*w*wC*z", "f", "wchar.h", ALL_LANGUAGES) +LIBBUILTIN(wmemmove,"w*w*wC*z", "f", "wchar.h", ALL_LANGUAGES) + +// C99 +// In some systems setjmp is a macro that expands to _setjmp. We undefine +// it here to avoid having two identical LIBBUILTIN entries. +#undef setjmp +LIBBUILTIN(setjmp, "iJ", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(longjmp, "vJi", "fr", "setjmp.h", ALL_LANGUAGES) + +// Non-C library functions, active in GNU mode only. +// Functions with (returns_twice) attribute (marked as "j") are still active in +// all languages, because losing this attribute would result in miscompilation +// when these functions are used in non-GNU mode. PR16138. +LIBBUILTIN(alloca, "v*z", "f", "stdlib.h", ALL_GNU_LANGUAGES) +// POSIX string.h +LIBBUILTIN(stpcpy, "c*c*cC*", "f", "string.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(stpncpy, "c*c*cC*z", "f", "string.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(strdup, "c*cC*", "f", "string.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(strndup, "c*cC*z", "f", "string.h", ALL_GNU_LANGUAGES) +// POSIX strings.h +LIBBUILTIN(index, "c*cC*i", "f", "strings.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(rindex, "c*cC*i", "f", "strings.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(bzero, "vv*z", "f", "strings.h", ALL_GNU_LANGUAGES) +// In some systems str[n]casejmp is a macro that expands to _str[n]icmp. +// We undefine then here to avoid wrong name. +#undef strcasecmp +#undef strncasecmp +LIBBUILTIN(strcasecmp, "icC*cC*", "f", "strings.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(strncasecmp, "icC*cC*z", "f", "strings.h", ALL_GNU_LANGUAGES) +// POSIX unistd.h +LIBBUILTIN(_exit, "vi", "fr", "unistd.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(vfork, "p", "fj", "unistd.h", ALL_LANGUAGES) +// POSIX pthread.h +LIBBUILTIN(pthread_create, "", "fC<2,3>", "pthread.h", ALL_GNU_LANGUAGES) + +// POSIX setjmp.h + +LIBBUILTIN(_setjmp, "iJ", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(__sigsetjmp, "iSJi", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(sigsetjmp, "iSJi", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(setjmp_syscall, "iJ", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(savectx, "iJ", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(qsetjmp, "iJ", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(getcontext, "iK*", "fj", "setjmp.h", ALL_LANGUAGES) + +LIBBUILTIN(_longjmp, "vJi", "fr", "setjmp.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(siglongjmp, "vSJi", "fr", "setjmp.h", ALL_GNU_LANGUAGES) +// non-standard but very common +LIBBUILTIN(strlcpy, "zc*cC*z", "f", "string.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(strlcat, "zc*cC*z", "f", "string.h", ALL_GNU_LANGUAGES) +// id objc_msgSend(id, SEL, ...) +LIBBUILTIN(objc_msgSend, "GGH.", "f", "objc/message.h", OBJC_LANG) +// long double objc_msgSend_fpret(id self, SEL op, ...) +LIBBUILTIN(objc_msgSend_fpret, "LdGH.", "f", "objc/message.h", OBJC_LANG) +// _Complex long double objc_msgSend_fp2ret(id self, SEL op, ...) +LIBBUILTIN(objc_msgSend_fp2ret, "XLdGH.", "f", "objc/message.h", OBJC_LANG) +// void objc_msgSend_stret (id, SEL, ...) +LIBBUILTIN(objc_msgSend_stret, "vGH.", "f", "objc/message.h", OBJC_LANG) +// id objc_msgSendSuper(struct objc_super *super, SEL op, ...) +LIBBUILTIN(objc_msgSendSuper, "GM*H.", "f", "objc/message.h", OBJC_LANG) +// void objc_msgSendSuper_stret(struct objc_super *super, SEL op, ...) +LIBBUILTIN(objc_msgSendSuper_stret, "vM*H.", "f", "objc/message.h", OBJC_LANG) +// id objc_getClass(const char *name) +LIBBUILTIN(objc_getClass, "GcC*", "f", "objc/runtime.h", OBJC_LANG) +// id objc_getMetaClass(const char *name) +LIBBUILTIN(objc_getMetaClass, "GcC*", "f", "objc/runtime.h", OBJC_LANG) +// void objc_enumerationMutation(id) +LIBBUILTIN(objc_enumerationMutation, "vG", "f", "objc/runtime.h", OBJC_LANG) + +// id objc_read_weak(id *location) +LIBBUILTIN(objc_read_weak, "GG*", "f", "objc/objc-auto.h", OBJC_LANG) +// id objc_assign_weak(id value, id *location) +LIBBUILTIN(objc_assign_weak, "GGG*", "f", "objc/objc-auto.h", OBJC_LANG) +// id objc_assign_ivar(id value, id dest, ptrdiff_t offset) +LIBBUILTIN(objc_assign_ivar, "GGGY", "f", "objc/objc-auto.h", OBJC_LANG) +// id objc_assign_global(id val, id *dest) +LIBBUILTIN(objc_assign_global, "GGG*", "f", "objc/objc-auto.h", OBJC_LANG) +// id objc_assign_strongCast(id val, id *dest +LIBBUILTIN(objc_assign_strongCast, "GGG*", "f", "objc/objc-auto.h", OBJC_LANG) + +// id objc_exception_extract(void *localExceptionData) +LIBBUILTIN(objc_exception_extract, "Gv*", "f", "objc/objc-exception.h", OBJC_LANG) +// void objc_exception_try_enter(void *localExceptionData) +LIBBUILTIN(objc_exception_try_enter, "vv*", "f", "objc/objc-exception.h", OBJC_LANG) +// void objc_exception_try_exit(void *localExceptionData) +LIBBUILTIN(objc_exception_try_exit, "vv*", "f", "objc/objc-exception.h", OBJC_LANG) +// int objc_exception_match(Class exceptionClass, id exception) +LIBBUILTIN(objc_exception_match, "iGG", "f", "objc/objc-exception.h", OBJC_LANG) +// void objc_exception_throw(id exception) +LIBBUILTIN(objc_exception_throw, "vG", "f", "objc/objc-exception.h", OBJC_LANG) + +// int objc_sync_enter(id obj) +LIBBUILTIN(objc_sync_enter, "iG", "f", "objc/objc-sync.h", OBJC_LANG) +// int objc_sync_exit(id obj) +LIBBUILTIN(objc_sync_exit, "iG", "f", "objc/objc-sync.h", OBJC_LANG) + +BUILTIN(__builtin_objc_memmove_collectable, "v*v*vC*z", "nF") + +// void NSLog(NSString *fmt, ...) +LIBBUILTIN(NSLog, "vG.", "fp:0:", "Foundation/NSObjCRuntime.h", OBJC_LANG) +// void NSLogv(NSString *fmt, va_list args) +LIBBUILTIN(NSLogv, "vGa", "fP:0:", "Foundation/NSObjCRuntime.h", OBJC_LANG) + +// Builtin math library functions +LIBBUILTIN(atan2, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(atan2f, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(atan2l, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(abs, "ii", "fnc", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(labs, "LiLi", "fnc", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(llabs, "LLiLLi", "fnc", "stdlib.h", ALL_LANGUAGES) + +LIBBUILTIN(copysign, "ddd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(copysignf, "fff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(copysignl, "LdLdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(fabs, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fabsf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fabsl, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +// Some systems define finitef as alias of _finitef. +#if defined (finitef) +#undef finitef +#endif +LIBBUILTIN(finite, "id", "fnc", "math.h", GNU_LANG) +LIBBUILTIN(finitef, "if", "fnc", "math.h", GNU_LANG) +LIBBUILTIN(finitel, "iLd", "fnc", "math.h", GNU_LANG) +// glibc's math.h generates calls to __finite +LIBBUILTIN(__finite, "id", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__finitef, "if", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__finitel, "iLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(fmod, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fmodf, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fmodl, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(frexp, "ddi*", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(frexpf, "ffi*", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(frexpl, "LdLdi*", "fn", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(ldexp, "ddi", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(ldexpf, "ffi", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(ldexpl, "LdLdi", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(modf, "ddd*", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(modff, "fff*", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(modfl, "LdLdLd*", "fn", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(nan, "dcC*", "fUn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nanf, "fcC*", "fUn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nanl, "LdcC*", "fUn", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(pow, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(powf, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(powl, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(acos, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(acosf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(acosl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(acosh, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(acoshf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(acoshl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(asin, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(asinf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(asinl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(asinh, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(asinhf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(asinhl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(atan, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(atanf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(atanl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(atanh, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(atanhf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(atanhl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(cbrt, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(cbrtf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(cbrtl, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(ceil, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(ceilf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(ceill, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(cos, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(cosf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(cosl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(cosh, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(coshf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(coshl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(erf, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(erff, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(erfl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(erfc, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(erfcf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(erfcl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(exp, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(expf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(expl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(exp2, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(exp2f, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(exp2l, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(expm1, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(expm1f, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(expm1l, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(fdim, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fdimf, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fdiml, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(floor, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(floorf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(floorl, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(fma, "dddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fmaf, "ffff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fmal, "LdLdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(fmax, "ddd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fmaxf, "fff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fmaxl, "LdLdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(fmin, "ddd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fminf, "fff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fminl, "LdLdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(hypot, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(hypotf, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(hypotl, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(ilogb, "id", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(ilogbf, "if", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(ilogbl, "iLd", "fne", "math.h", ALL_LANGUAGES) + +// POSIX math.h declares a global, signgam, that lgamma writes to, so these +// shouldn't have "e" or "c" attributes +LIBBUILTIN(lgamma, "dd", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lgammaf, "ff", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lgammal, "LdLd", "fn", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(llrint, "LLid", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(llrintf, "LLif", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(llrintl, "LLiLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(llround, "LLid", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(llroundf, "LLif", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(llroundl, "LLiLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(log, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(logf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(logl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(log10, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(log10f, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(log10l, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(log1p, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(log1pf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(log1pl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(log2, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(log2f, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(log2l, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(logb, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(logbf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(logbl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(lrint, "Lid", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lrintf, "Lif", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lrintl, "LiLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(lround, "Lid", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lroundf, "Lif", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lroundl, "LiLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(nearbyint, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nearbyintf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nearbyintl, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(nextafter, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nextafterf, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nextafterl, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(nexttoward, "ddLd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nexttowardf, "ffLd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nexttowardl, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(remainder, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(remainderf, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(remainderl, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(remquo, "dddi*", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(remquof, "fffi*", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(remquol, "LdLdLdi*", "fn", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(rint, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(rintf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(rintl, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(round, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(roundf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(roundl, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(scalbln, "ddLi", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(scalblnf, "ffLi", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(scalblnl, "LdLdLi", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(scalbn, "ddi", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(scalbnf, "ffi", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(scalbnl, "LdLdi", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(sin, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(sinf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(sinl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(sinh, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(sinhf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(sinhl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(sqrt, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(sqrtf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(sqrtl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(tan, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(tanf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(tanl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(tanh, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(tanhf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(tanhl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(tgamma, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(tgammaf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(tgammal, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(trunc, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(truncf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(truncl, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(cabs, "dXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cabsf, "fXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cabsl, "LdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(cacos, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cacosf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cacosl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(cacosh, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cacoshf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cacoshl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(carg, "dXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cargf, "fXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cargl, "LdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(casin, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(casinf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(casinl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(casinh, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(casinhf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(casinhl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(catan, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(catanf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(catanl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(catanh, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(catanhf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(catanhl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(ccos, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ccosf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ccosl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(ccosh, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ccoshf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ccoshl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(cexp, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cexpf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cexpl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(cimag, "dXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cimagf, "fXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cimagl, "LdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(conj, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(conjf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(conjl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(clog, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(clogf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(clogl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(cproj, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cprojf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cprojl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(cpow, "XdXdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cpowf, "XfXfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cpowl, "XLdXLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(creal, "dXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(crealf, "fXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(creall, "LdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(csin, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(csinf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(csinl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(csinh, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(csinhf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(csinhl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(csqrt, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(csqrtf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(csqrtl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(ctan, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ctanf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ctanl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(ctanh, "XdXd", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ctanhf, "XfXf", "fne", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ctanhl, "XLdXLd", "fne", "complex.h", ALL_LANGUAGES) + +// __sinpi and friends are OS X specific library functions, but otherwise much +// like the standard (non-complex) sin (etc). +LIBBUILTIN(__sinpi, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__sinpif, "ff", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(__cospi, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__cospif, "ff", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(__tanpi, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__tanpif, "ff", "fne", "math.h", ALL_LANGUAGES) + +// Similarly, __exp10 is OS X only +LIBBUILTIN(__exp10, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__exp10f, "ff", "fne", "math.h", ALL_LANGUAGES) + +// Blocks runtime Builtin math library functions +LIBBUILTIN(_Block_object_assign, "vv*vC*iC", "f", "Blocks.h", ALL_LANGUAGES) +LIBBUILTIN(_Block_object_dispose, "vvC*iC", "f", "Blocks.h", ALL_LANGUAGES) +// FIXME: Also declare NSConcreteGlobalBlock and NSConcreteStackBlock. + +// Annotation function +BUILTIN(__builtin_annotation, "v.", "tn") + +// Invariants +BUILTIN(__builtin_assume, "vb", "n") + +// Multiprecision Arithmetic Builtins. +BUILTIN(__builtin_addcb, "UcUcCUcCUcCUc*", "n") +BUILTIN(__builtin_addcs, "UsUsCUsCUsCUs*", "n") +BUILTIN(__builtin_addc, "UiUiCUiCUiCUi*", "n") +BUILTIN(__builtin_addcl, "ULiULiCULiCULiCULi*", "n") +BUILTIN(__builtin_addcll, "ULLiULLiCULLiCULLiCULLi*", "n") +BUILTIN(__builtin_subcb, "UcUcCUcCUcCUc*", "n") +BUILTIN(__builtin_subcs, "UsUsCUsCUsCUs*", "n") +BUILTIN(__builtin_subc, "UiUiCUiCUiCUi*", "n") +BUILTIN(__builtin_subcl, "ULiULiCULiCULiCULi*", "n") +BUILTIN(__builtin_subcll, "ULLiULLiCULLiCULLiCULLi*", "n") + +// Checked Arithmetic Builtins for Security. +BUILTIN(__builtin_add_overflow, "b.", "nt") +BUILTIN(__builtin_sub_overflow, "b.", "nt") +BUILTIN(__builtin_mul_overflow, "b.", "nt") +BUILTIN(__builtin_uadd_overflow, "bUiCUiCUi*", "n") +BUILTIN(__builtin_uaddl_overflow, "bULiCULiCULi*", "n") +BUILTIN(__builtin_uaddll_overflow, "bULLiCULLiCULLi*", "n") +BUILTIN(__builtin_usub_overflow, "bUiCUiCUi*", "n") +BUILTIN(__builtin_usubl_overflow, "bULiCULiCULi*", "n") +BUILTIN(__builtin_usubll_overflow, "bULLiCULLiCULLi*", "n") +BUILTIN(__builtin_umul_overflow, "bUiCUiCUi*", "n") +BUILTIN(__builtin_umull_overflow, "bULiCULiCULi*", "n") +BUILTIN(__builtin_umulll_overflow, "bULLiCULLiCULLi*", "n") +BUILTIN(__builtin_sadd_overflow, "bSiCSiCSi*", "n") +BUILTIN(__builtin_saddl_overflow, "bSLiCSLiCSLi*", "n") +BUILTIN(__builtin_saddll_overflow, "bSLLiCSLLiCSLLi*", "n") +BUILTIN(__builtin_ssub_overflow, "bSiCSiCSi*", "n") +BUILTIN(__builtin_ssubl_overflow, "bSLiCSLiCSLi*", "n") +BUILTIN(__builtin_ssubll_overflow, "bSLLiCSLLiCSLLi*", "n") +BUILTIN(__builtin_smul_overflow, "bSiCSiCSi*", "n") +BUILTIN(__builtin_smull_overflow, "bSLiCSLiCSLi*", "n") +BUILTIN(__builtin_smulll_overflow, "bSLLiCSLLiCSLLi*", "n") + +// Clang builtins (not available in GCC). +BUILTIN(__builtin_addressof, "v*v&", "nct") +BUILTIN(__builtin_operator_new, "v*z", "tc") +BUILTIN(__builtin_operator_delete, "vv*", "tn") +BUILTIN(__builtin_char_memchr, "c*cC*iz", "n") +BUILTIN(__builtin_dump_struct, "ivC*v*", "tn") + +// Safestack builtins +BUILTIN(__builtin___get_unsafe_stack_start, "v*", "Fn") +BUILTIN(__builtin___get_unsafe_stack_bottom, "v*", "Fn") +BUILTIN(__builtin___get_unsafe_stack_top, "v*", "Fn") +BUILTIN(__builtin___get_unsafe_stack_ptr, "v*", "Fn") + +// Nontemporal loads/stores builtins +BUILTIN(__builtin_nontemporal_store, "v.", "t") +BUILTIN(__builtin_nontemporal_load, "v.", "t") + +// Coroutine intrinsics. +BUILTIN(__builtin_coro_resume, "vv*", "") +BUILTIN(__builtin_coro_destroy, "vv*", "") +BUILTIN(__builtin_coro_done, "bv*", "n") +BUILTIN(__builtin_coro_promise, "v*v*IiIb", "n") + +BUILTIN(__builtin_coro_size, "z", "n") +BUILTIN(__builtin_coro_frame, "v*", "n") +BUILTIN(__builtin_coro_noop, "v*", "n") +BUILTIN(__builtin_coro_free, "v*v*", "n") + +BUILTIN(__builtin_coro_id, "v*Iiv*v*v*", "n") +BUILTIN(__builtin_coro_alloc, "b", "n") +BUILTIN(__builtin_coro_begin, "v*v*", "n") +BUILTIN(__builtin_coro_end, "bv*Ib", "n") +BUILTIN(__builtin_coro_suspend, "cIb", "n") +BUILTIN(__builtin_coro_param, "bv*v*", "n") +// OpenCL v2.0 s6.13.16, s9.17.3.5 - Pipe functions. +// We need the generic prototype, since the packet type could be anything. +LANGBUILTIN(read_pipe, "i.", "tn", OCLC20_LANG) +LANGBUILTIN(write_pipe, "i.", "tn", OCLC20_LANG) + +LANGBUILTIN(reserve_read_pipe, "i.", "tn", OCLC20_LANG) +LANGBUILTIN(reserve_write_pipe, "i.", "tn", OCLC20_LANG) + +LANGBUILTIN(commit_write_pipe, "v.", "tn", OCLC20_LANG) +LANGBUILTIN(commit_read_pipe, "v.", "tn", OCLC20_LANG) + +LANGBUILTIN(sub_group_reserve_read_pipe, "i.", "tn", OCLC20_LANG) +LANGBUILTIN(sub_group_reserve_write_pipe, "i.", "tn", OCLC20_LANG) + +LANGBUILTIN(sub_group_commit_read_pipe, "v.", "tn", OCLC20_LANG) +LANGBUILTIN(sub_group_commit_write_pipe, "v.", "tn", OCLC20_LANG) + +LANGBUILTIN(work_group_reserve_read_pipe, "i.", "tn", OCLC20_LANG) +LANGBUILTIN(work_group_reserve_write_pipe, "i.", "tn", OCLC20_LANG) + +LANGBUILTIN(work_group_commit_read_pipe, "v.", "tn", OCLC20_LANG) +LANGBUILTIN(work_group_commit_write_pipe, "v.", "tn", OCLC20_LANG) + +LANGBUILTIN(get_pipe_num_packets, "Ui.", "tn", OCLC20_LANG) +LANGBUILTIN(get_pipe_max_packets, "Ui.", "tn", OCLC20_LANG) + +// OpenCL v2.0 s6.13.17 - Enqueue kernel functions. +// Custom builtin check allows to perform special check of passed block arguments. +LANGBUILTIN(enqueue_kernel, "i.", "tn", OCLC20_LANG) +LANGBUILTIN(get_kernel_work_group_size, "Ui.", "tn", OCLC20_LANG) +LANGBUILTIN(get_kernel_preferred_work_group_size_multiple, "Ui.", "tn", OCLC20_LANG) +LANGBUILTIN(get_kernel_max_sub_group_size_for_ndrange, "Ui.", "tn", OCLC20_LANG) +LANGBUILTIN(get_kernel_sub_group_count_for_ndrange, "Ui.", "tn", OCLC20_LANG) + +// OpenCL v2.0 s6.13.9 - Address space qualifier functions. +LANGBUILTIN(to_global, "v*v*", "tn", OCLC20_LANG) +LANGBUILTIN(to_local, "v*v*", "tn", OCLC20_LANG) +LANGBUILTIN(to_private, "v*v*", "tn", OCLC20_LANG) + +// OpenCL half load/store builtin +LANGBUILTIN(__builtin_store_half, "vdh*", "n", ALL_OCLC_LANGUAGES) +LANGBUILTIN(__builtin_store_halff, "vfh*", "n", ALL_OCLC_LANGUAGES) +LANGBUILTIN(__builtin_load_half, "dhC*", "nc", ALL_OCLC_LANGUAGES) +LANGBUILTIN(__builtin_load_halff, "fhC*", "nc", ALL_OCLC_LANGUAGES) + +// Builtins for os_log/os_trace +BUILTIN(__builtin_os_log_format_buffer_size, "zcC*.", "p:0:nut") +BUILTIN(__builtin_os_log_format, "v*v*cC*.", "p:0:nt") + +// OpenMP 4.0 +LANGBUILTIN(omp_is_initial_device, "i", "nc", OMP_LANG) + +// Builtins for XRay +BUILTIN(__xray_customevent, "vcC*z", "") +BUILTIN(__xray_typedevent, "vzcC*z", "") + +// Win64-compatible va_list functions +BUILTIN(__builtin_ms_va_start, "vc*&.", "nt") +BUILTIN(__builtin_ms_va_end, "vc*&", "n") +BUILTIN(__builtin_ms_va_copy, "vc*&c*&", "n") + +#undef BUILTIN +#undef LIBBUILTIN +#undef LANGBUILTIN diff --git a/clang-r353983/include/clang/Basic/Builtins.h b/clang-r353983/include/clang/Basic/Builtins.h new file mode 100644 index 00000000..b3d6e456 --- /dev/null +++ b/clang-r353983/include/clang/Basic/Builtins.h @@ -0,0 +1,263 @@ +//===--- Builtins.h - Builtin function header -------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines enum values for all the target-independent builtin +/// functions. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_BUILTINS_H +#define LLVM_CLANG_BASIC_BUILTINS_H + +#include "llvm/ADT/ArrayRef.h" +#include <cstring> + +// VC++ defines 'alloca' as an object-like macro, which interferes with our +// builtins. +#undef alloca + +namespace clang { +class TargetInfo; +class IdentifierTable; +class ASTContext; +class QualType; +class LangOptions; + +enum LanguageID { + GNU_LANG = 0x1, // builtin requires GNU mode. + C_LANG = 0x2, // builtin for c only. + CXX_LANG = 0x4, // builtin for cplusplus only. + OBJC_LANG = 0x8, // builtin for objective-c and objective-c++ + MS_LANG = 0x10, // builtin requires MS mode. + OCLC20_LANG = 0x20, // builtin for OpenCL C 2.0 only. + OCLC1X_LANG = 0x40, // builtin for OpenCL C 1.x only. + OMP_LANG = 0x80, // builtin requires OpenMP. + ALL_LANGUAGES = C_LANG | CXX_LANG | OBJC_LANG, // builtin for all languages. + ALL_GNU_LANGUAGES = ALL_LANGUAGES | GNU_LANG, // builtin requires GNU mode. + ALL_MS_LANGUAGES = ALL_LANGUAGES | MS_LANG, // builtin requires MS mode. + ALL_OCLC_LANGUAGES = OCLC1X_LANG | OCLC20_LANG // builtin for OCLC languages. +}; + +namespace Builtin { +enum ID { + NotBuiltin = 0, // This is not a builtin function. +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/Builtins.def" + FirstTSBuiltin +}; + +struct Info { + const char *Name, *Type, *Attributes, *HeaderName; + LanguageID Langs; + const char *Features; +}; + +/// Holds information about both target-independent and +/// target-specific builtins, allowing easy queries by clients. +/// +/// Builtins from an optional auxiliary target are stored in +/// AuxTSRecords. Their IDs are shifted up by TSRecords.size() and need to +/// be translated back with getAuxBuiltinID() before use. +class Context { + llvm::ArrayRef<Info> TSRecords; + llvm::ArrayRef<Info> AuxTSRecords; + +public: + Context() {} + + /// Perform target-specific initialization + /// \param AuxTarget Target info to incorporate builtins from. May be nullptr. + void InitializeTarget(const TargetInfo &Target, const TargetInfo *AuxTarget); + + /// Mark the identifiers for all the builtins with their + /// appropriate builtin ID # and mark any non-portable builtin identifiers as + /// such. + void initializeBuiltins(IdentifierTable &Table, const LangOptions& LangOpts); + + /// Return the identifier name for the specified builtin, + /// e.g. "__builtin_abs". + const char *getName(unsigned ID) const { + return getRecord(ID).Name; + } + + /// Get the type descriptor string for the specified builtin. + const char *getTypeString(unsigned ID) const { + return getRecord(ID).Type; + } + + /// Return true if this function is a target-specific builtin. + bool isTSBuiltin(unsigned ID) const { + return ID >= Builtin::FirstTSBuiltin; + } + + /// Return true if this function has no side effects. + bool isPure(unsigned ID) const { + return strchr(getRecord(ID).Attributes, 'U') != nullptr; + } + + /// Return true if this function has no side effects and doesn't + /// read memory. + bool isConst(unsigned ID) const { + return strchr(getRecord(ID).Attributes, 'c') != nullptr; + } + + /// Return true if we know this builtin never throws an exception. + bool isNoThrow(unsigned ID) const { + return strchr(getRecord(ID).Attributes, 'n') != nullptr; + } + + /// Return true if we know this builtin never returns. + bool isNoReturn(unsigned ID) const { + return strchr(getRecord(ID).Attributes, 'r') != nullptr; + } + + /// Return true if we know this builtin can return twice. + bool isReturnsTwice(unsigned ID) const { + return strchr(getRecord(ID).Attributes, 'j') != nullptr; + } + + /// Returns true if this builtin does not perform the side-effects + /// of its arguments. + bool isUnevaluated(unsigned ID) const { + return strchr(getRecord(ID).Attributes, 'u') != nullptr; + } + + /// Return true if this is a builtin for a libc/libm function, + /// with a "__builtin_" prefix (e.g. __builtin_abs). + bool isLibFunction(unsigned ID) const { + return strchr(getRecord(ID).Attributes, 'F') != nullptr; + } + + /// Determines whether this builtin is a predefined libc/libm + /// function, such as "malloc", where we know the signature a + /// priori. + bool isPredefinedLibFunction(unsigned ID) const { + return strchr(getRecord(ID).Attributes, 'f') != nullptr; + } + + /// Returns true if this builtin requires appropriate header in other + /// compilers. In Clang it will work even without including it, but we can emit + /// a warning about missing header. + bool isHeaderDependentFunction(unsigned ID) const { + return strchr(getRecord(ID).Attributes, 'h') != nullptr; + } + + /// Determines whether this builtin is a predefined compiler-rt/libgcc + /// function, such as "__clear_cache", where we know the signature a + /// priori. + bool isPredefinedRuntimeFunction(unsigned ID) const { + return strchr(getRecord(ID).Attributes, 'i') != nullptr; + } + + /// Determines whether this builtin has custom typechecking. + bool hasCustomTypechecking(unsigned ID) const { + return strchr(getRecord(ID).Attributes, 't') != nullptr; + } + + /// Determines whether this builtin has a result or any arguments which + /// are pointer types. + bool hasPtrArgsOrResult(unsigned ID) const { + return strchr(getRecord(ID).Type, '*') != nullptr; + } + + /// Return true if this builtin has a result or any arguments which are + /// reference types. + bool hasReferenceArgsOrResult(unsigned ID) const { + return strchr(getRecord(ID).Type, '&') != nullptr || + strchr(getRecord(ID).Type, 'A') != nullptr; + } + + /// Completely forget that the given ID was ever considered a builtin, + /// e.g., because the user provided a conflicting signature. + void forgetBuiltin(unsigned ID, IdentifierTable &Table); + + /// If this is a library function that comes from a specific + /// header, retrieve that header name. + const char *getHeaderName(unsigned ID) const { + return getRecord(ID).HeaderName; + } + + /// Determine whether this builtin is like printf in its + /// formatting rules and, if so, set the index to the format string + /// argument and whether this function as a va_list argument. + bool isPrintfLike(unsigned ID, unsigned &FormatIdx, bool &HasVAListArg); + + /// Determine whether this builtin is like scanf in its + /// formatting rules and, if so, set the index to the format string + /// argument and whether this function as a va_list argument. + bool isScanfLike(unsigned ID, unsigned &FormatIdx, bool &HasVAListArg); + + /// Determine whether this builtin has callback behavior (see + /// llvm::AbstractCallSites for details). If so, add the index to the + /// callback callee argument and the callback payload arguments. + bool performsCallback(unsigned ID, + llvm::SmallVectorImpl<int> &Encoding) const; + + /// Return true if this function has no side effects and doesn't + /// read memory, except for possibly errno. + /// + /// Such functions can be const when the MathErrno lang option is disabled. + bool isConstWithoutErrno(unsigned ID) const { + return strchr(getRecord(ID).Attributes, 'e') != nullptr; + } + + const char *getRequiredFeatures(unsigned ID) const { + return getRecord(ID).Features; + } + + unsigned getRequiredVectorWidth(unsigned ID) const; + + /// Return true if builtin ID belongs to AuxTarget. + bool isAuxBuiltinID(unsigned ID) const { + return ID >= (Builtin::FirstTSBuiltin + TSRecords.size()); + } + + /// Return real builtin ID (i.e. ID it would have during compilation + /// for AuxTarget). + unsigned getAuxBuiltinID(unsigned ID) const { return ID - TSRecords.size(); } + + /// Returns true if this is a libc/libm function without the '__builtin_' + /// prefix. + static bool isBuiltinFunc(const char *Name); + + /// Returns true if this is a builtin that can be redeclared. Returns true + /// for non-builtins. + bool canBeRedeclared(unsigned ID) const; + +private: + const Info &getRecord(unsigned ID) const; + + /// Is this builtin supported according to the given language options? + bool builtinIsSupported(const Builtin::Info &BuiltinInfo, + const LangOptions &LangOpts); + + /// Helper function for isPrintfLike and isScanfLike. + bool isLike(unsigned ID, unsigned &FormatIdx, bool &HasVAListArg, + const char *Fmt) const; +}; + +/// For a given BuiltinID, return the ID of the fortified variant function. For +/// instance, if Builtin::BIsprintf is passed, this function will return +/// Builtin::BI__builtin___sprintf_chk. If BuiltinID doesn't have a fortified +/// variant, 0 is returned. +unsigned getFortifiedVariantFunction(unsigned BuiltinID); + +} // end namespace Builtin + +/// Kinds of BuiltinTemplateDecl. +enum BuiltinTemplateKind : int { + /// This names the __make_integer_seq BuiltinTemplateDecl. + BTK__make_integer_seq, + + /// This names the __type_pack_element BuiltinTemplateDecl. + BTK__type_pack_element +}; + +} // end namespace clang +#endif diff --git a/clang-r353983/include/clang/Basic/BuiltinsAArch64.def b/clang-r353983/include/clang/Basic/BuiltinsAArch64.def new file mode 100644 index 00000000..e9a8a2c4 --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsAArch64.def @@ -0,0 +1,212 @@ +//==- BuiltinsAArch64.def - AArch64 Builtin function database ----*- C++ -*-==// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the AArch64-specific builtin function database. Users of +// this file must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// The format of this database matches clang/Basic/Builtins.def. + +#if defined(BUILTIN) && !defined(LANGBUILTIN) +# define LANGBUILTIN(ID, TYPE, ATTRS, BUILTIN_LANG) BUILTIN(ID, TYPE, ATTRS) +#endif + +#if defined(BUILTIN) && !defined(TARGET_HEADER_BUILTIN) +# define TARGET_HEADER_BUILTIN(ID, TYPE, ATTRS, HEADER, LANG, FEATURE) BUILTIN(ID, TYPE, ATTRS) +#endif + +// In libgcc +BUILTIN(__clear_cache, "vv*v*", "i") + +BUILTIN(__builtin_arm_ldrex, "v.", "t") +BUILTIN(__builtin_arm_ldaex, "v.", "t") +BUILTIN(__builtin_arm_strex, "i.", "t") +BUILTIN(__builtin_arm_stlex, "i.", "t") +BUILTIN(__builtin_arm_clrex, "v", "") + +// Bit manipulation +BUILTIN(__builtin_arm_rbit, "UiUi", "nc") +BUILTIN(__builtin_arm_rbit64, "WUiWUi", "nc") + +// HINT +BUILTIN(__builtin_arm_nop, "v", "") +BUILTIN(__builtin_arm_yield, "v", "") +BUILTIN(__builtin_arm_wfe, "v", "") +BUILTIN(__builtin_arm_wfi, "v", "") +BUILTIN(__builtin_arm_sev, "v", "") +BUILTIN(__builtin_arm_sevl, "v", "") + +// CRC32 +BUILTIN(__builtin_arm_crc32b, "UiUiUc", "nc") +BUILTIN(__builtin_arm_crc32cb, "UiUiUc", "nc") +BUILTIN(__builtin_arm_crc32h, "UiUiUs", "nc") +BUILTIN(__builtin_arm_crc32ch, "UiUiUs", "nc") +BUILTIN(__builtin_arm_crc32w, "UiUiUi", "nc") +BUILTIN(__builtin_arm_crc32cw, "UiUiUi", "nc") +BUILTIN(__builtin_arm_crc32d, "UiUiWUi", "nc") +BUILTIN(__builtin_arm_crc32cd, "UiUiWUi", "nc") + +// Memory barrier +BUILTIN(__builtin_arm_dmb, "vUi", "nc") +BUILTIN(__builtin_arm_dsb, "vUi", "nc") +BUILTIN(__builtin_arm_isb, "vUi", "nc") + +// Prefetch +BUILTIN(__builtin_arm_prefetch, "vvC*UiUiUiUi", "nc") + +// System Registers +BUILTIN(__builtin_arm_rsr, "UicC*", "nc") +BUILTIN(__builtin_arm_rsr64, "WUicC*", "nc") +BUILTIN(__builtin_arm_rsrp, "v*cC*", "nc") +BUILTIN(__builtin_arm_wsr, "vcC*Ui", "nc") +BUILTIN(__builtin_arm_wsr64, "vcC*WUi", "nc") +BUILTIN(__builtin_arm_wsrp, "vcC*vC*", "nc") + +// MSVC +LANGBUILTIN(__dmb, "vUi", "nc", ALL_MS_LANGUAGES) +LANGBUILTIN(__dsb, "vUi", "nc", ALL_MS_LANGUAGES) +LANGBUILTIN(__isb, "vUi", "nc", ALL_MS_LANGUAGES) +LANGBUILTIN(__yield, "v", "", ALL_MS_LANGUAGES) +LANGBUILTIN(__wfe, "v", "", ALL_MS_LANGUAGES) +LANGBUILTIN(__wfi, "v", "", ALL_MS_LANGUAGES) +LANGBUILTIN(__sev, "v", "", ALL_MS_LANGUAGES) +LANGBUILTIN(__sevl, "v", "", ALL_MS_LANGUAGES) + +// MSVC intrinsics for volatile but non-acquire/release loads and stores +LANGBUILTIN(__iso_volatile_load8, "ccCD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_load16, "ssCD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_load32, "iiCD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_load64, "LLiLLiCD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_store8, "vcD*c", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_store16, "vsD*s", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_store32, "viD*i", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_store64, "vLLiD*LLi", "n", ALL_MS_LANGUAGES) + +TARGET_HEADER_BUILTIN(_BitScanForward, "UcUNi*UNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_BitScanReverse, "UcUNi*UNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_BitScanForward64, "UcUNi*ULLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_BitScanReverse64, "UcUNi*ULLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedAdd, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement64, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeSub64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement64, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedExchange8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_acq, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_nf, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_rel, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_acq, "ssD*ss", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_nf, "ssD*ss", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_rel, "ssD*ss", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_acq, "LiLiD*LiLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_nf, "LiLiD*LiLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_rel, "LiLiD*LiLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_acq, "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_nf, "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_rel, "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedOr8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedXor8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedAnd8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedIncrement16_acq, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement16_nf, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement16_rel, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement_acq, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement_nf, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement_rel, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement64_acq, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement64_nf, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement64_rel, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedDecrement16_acq, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement16_nf, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement16_rel, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement_acq, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement_nf, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement_rel, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement64_acq, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement64_nf, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement64_rel, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_ReadStatusReg, "LLii", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_WriteStatusReg, "viLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_AddressOfReturnAddress, "v*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +#undef BUILTIN +#undef LANGBUILTIN +#undef TARGET_HEADER_BUILTIN diff --git a/clang-r353983/include/clang/Basic/BuiltinsAMDGPU.def b/clang-r353983/include/clang/Basic/BuiltinsAMDGPU.def new file mode 100644 index 00000000..20592c7b --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsAMDGPU.def @@ -0,0 +1,181 @@ +//==- BuiltinsAMDGPU.def - AMDGPU Builtin function database ------*- C++ -*-==// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the AMDGPU-specific builtin function database. Users of +// this file must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// The format of this database matches clang/Basic/Builtins.def. + +#if defined(BUILTIN) && !defined(TARGET_BUILTIN) +# define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS) +#endif +//===----------------------------------------------------------------------===// +// SI+ only builtins. +//===----------------------------------------------------------------------===// + +BUILTIN(__builtin_amdgcn_dispatch_ptr, "v*4", "nc") +BUILTIN(__builtin_amdgcn_kernarg_segment_ptr, "v*4", "nc") +BUILTIN(__builtin_amdgcn_implicitarg_ptr, "v*4", "nc") +BUILTIN(__builtin_amdgcn_queue_ptr, "v*4", "nc") + +BUILTIN(__builtin_amdgcn_workgroup_id_x, "Ui", "nc") +BUILTIN(__builtin_amdgcn_workgroup_id_y, "Ui", "nc") +BUILTIN(__builtin_amdgcn_workgroup_id_z, "Ui", "nc") + +BUILTIN(__builtin_amdgcn_workitem_id_x, "Ui", "nc") +BUILTIN(__builtin_amdgcn_workitem_id_y, "Ui", "nc") +BUILTIN(__builtin_amdgcn_workitem_id_z, "Ui", "nc") + +//===----------------------------------------------------------------------===// +// Instruction builtins. +//===----------------------------------------------------------------------===// +BUILTIN(__builtin_amdgcn_s_getreg, "UiIi", "n") +BUILTIN(__builtin_amdgcn_s_getpc, "LUi", "n") +BUILTIN(__builtin_amdgcn_s_waitcnt, "vIi", "n") +BUILTIN(__builtin_amdgcn_s_sendmsg, "vIiUi", "n") +BUILTIN(__builtin_amdgcn_s_sendmsghalt, "vIiUi", "n") +BUILTIN(__builtin_amdgcn_s_barrier, "v", "n") +BUILTIN(__builtin_amdgcn_wave_barrier, "v", "n") +BUILTIN(__builtin_amdgcn_s_dcache_inv, "v", "n") +BUILTIN(__builtin_amdgcn_buffer_wbinvl1, "v", "n") + +// FIXME: Need to disallow constant address space. +BUILTIN(__builtin_amdgcn_div_scale, "dddbb*", "n") +BUILTIN(__builtin_amdgcn_div_scalef, "fffbb*", "n") +BUILTIN(__builtin_amdgcn_div_fmas, "ddddb", "nc") +BUILTIN(__builtin_amdgcn_div_fmasf, "ffffb", "nc") +BUILTIN(__builtin_amdgcn_div_fixup, "dddd", "nc") +BUILTIN(__builtin_amdgcn_div_fixupf, "ffff", "nc") +BUILTIN(__builtin_amdgcn_trig_preop, "ddi", "nc") +BUILTIN(__builtin_amdgcn_trig_preopf, "ffi", "nc") +BUILTIN(__builtin_amdgcn_rcp, "dd", "nc") +BUILTIN(__builtin_amdgcn_rcpf, "ff", "nc") +BUILTIN(__builtin_amdgcn_rsq, "dd", "nc") +BUILTIN(__builtin_amdgcn_rsqf, "ff", "nc") +BUILTIN(__builtin_amdgcn_rsq_clamp, "dd", "nc") +BUILTIN(__builtin_amdgcn_rsq_clampf, "ff", "nc") +BUILTIN(__builtin_amdgcn_sinf, "ff", "nc") +BUILTIN(__builtin_amdgcn_cosf, "ff", "nc") +BUILTIN(__builtin_amdgcn_log_clampf, "ff", "nc") +BUILTIN(__builtin_amdgcn_ldexp, "ddi", "nc") +BUILTIN(__builtin_amdgcn_ldexpf, "ffi", "nc") +BUILTIN(__builtin_amdgcn_frexp_mant, "dd", "nc") +BUILTIN(__builtin_amdgcn_frexp_mantf, "ff", "nc") +BUILTIN(__builtin_amdgcn_frexp_exp, "id", "nc") +BUILTIN(__builtin_amdgcn_frexp_expf, "if", "nc") +BUILTIN(__builtin_amdgcn_fract, "dd", "nc") +BUILTIN(__builtin_amdgcn_fractf, "ff", "nc") +BUILTIN(__builtin_amdgcn_lerp, "UiUiUiUi", "nc") +BUILTIN(__builtin_amdgcn_class, "bdi", "nc") +BUILTIN(__builtin_amdgcn_classf, "bfi", "nc") +BUILTIN(__builtin_amdgcn_cubeid, "ffff", "nc") +BUILTIN(__builtin_amdgcn_cubesc, "ffff", "nc") +BUILTIN(__builtin_amdgcn_cubetc, "ffff", "nc") +BUILTIN(__builtin_amdgcn_cubema, "ffff", "nc") +BUILTIN(__builtin_amdgcn_s_memtime, "LUi", "n") +BUILTIN(__builtin_amdgcn_s_sleep, "vIi", "n") +BUILTIN(__builtin_amdgcn_s_incperflevel, "vIi", "n") +BUILTIN(__builtin_amdgcn_s_decperflevel, "vIi", "n") +BUILTIN(__builtin_amdgcn_uicmp, "LUiUiUiIi", "nc") +BUILTIN(__builtin_amdgcn_uicmpl, "LUiLUiLUiIi", "nc") +BUILTIN(__builtin_amdgcn_sicmp, "LUiiiIi", "nc") +BUILTIN(__builtin_amdgcn_sicmpl, "LUiLiLiIi", "nc") +BUILTIN(__builtin_amdgcn_fcmp, "LUiddIi", "nc") +BUILTIN(__builtin_amdgcn_fcmpf, "LUiffIi", "nc") +BUILTIN(__builtin_amdgcn_ds_swizzle, "iiIi", "nc") +BUILTIN(__builtin_amdgcn_ds_permute, "iii", "nc") +BUILTIN(__builtin_amdgcn_ds_bpermute, "iii", "nc") +BUILTIN(__builtin_amdgcn_readfirstlane, "ii", "nc") +BUILTIN(__builtin_amdgcn_readlane, "iii", "nc") +BUILTIN(__builtin_amdgcn_fmed3f, "ffff", "nc") +BUILTIN(__builtin_amdgcn_ds_faddf, "ff*3fIiIiIb", "n") +BUILTIN(__builtin_amdgcn_ds_fminf, "ff*3fIiIiIb", "n") +BUILTIN(__builtin_amdgcn_ds_fmaxf, "ff*3fIiIiIb", "n") +BUILTIN(__builtin_amdgcn_ds_append, "ii*3", "n") +BUILTIN(__builtin_amdgcn_ds_consume, "ii*3", "n") + +//===----------------------------------------------------------------------===// +// CI+ only builtins. +//===----------------------------------------------------------------------===// +TARGET_BUILTIN(__builtin_amdgcn_s_dcache_inv_vol, "v", "n", "ci-insts") +TARGET_BUILTIN(__builtin_amdgcn_buffer_wbinvl1_vol, "v", "n", "ci-insts") + +//===----------------------------------------------------------------------===// +// Interpolation builtins. +//===----------------------------------------------------------------------===// +BUILTIN(__builtin_amdgcn_interp_p1_f16, "ffUiUibUi", "nc") +BUILTIN(__builtin_amdgcn_interp_p2_f16, "hffUiUibUi", "nc") +BUILTIN(__builtin_amdgcn_interp_p1, "ffUiUiUi", "nc") +BUILTIN(__builtin_amdgcn_interp_p2, "fffUiUiUi", "nc") +BUILTIN(__builtin_amdgcn_interp_mov, "fUiUiUiUi", "nc") + +//===----------------------------------------------------------------------===// +// VI+ only builtins. +//===----------------------------------------------------------------------===// + +TARGET_BUILTIN(__builtin_amdgcn_div_fixuph, "hhhh", "nc", "16-bit-insts") +TARGET_BUILTIN(__builtin_amdgcn_rcph, "hh", "nc", "16-bit-insts") +TARGET_BUILTIN(__builtin_amdgcn_rsqh, "hh", "nc", "16-bit-insts") +TARGET_BUILTIN(__builtin_amdgcn_sinh, "hh", "nc", "16-bit-insts") +TARGET_BUILTIN(__builtin_amdgcn_cosh, "hh", "nc", "16-bit-insts") +TARGET_BUILTIN(__builtin_amdgcn_ldexph, "hhi", "nc", "16-bit-insts") +TARGET_BUILTIN(__builtin_amdgcn_frexp_manth, "hh", "nc", "16-bit-insts") +TARGET_BUILTIN(__builtin_amdgcn_frexp_exph, "sh", "nc", "16-bit-insts") +TARGET_BUILTIN(__builtin_amdgcn_fracth, "hh", "nc", "16-bit-insts") +TARGET_BUILTIN(__builtin_amdgcn_classh, "bhi", "nc", "16-bit-insts") +TARGET_BUILTIN(__builtin_amdgcn_s_memrealtime, "LUi", "n", "s-memrealtime") +TARGET_BUILTIN(__builtin_amdgcn_mov_dpp, "iiIiIiIiIb", "nc", "dpp") +TARGET_BUILTIN(__builtin_amdgcn_update_dpp, "iiiIiIiIiIb", "nc", "dpp") +TARGET_BUILTIN(__builtin_amdgcn_s_dcache_wb, "v", "n", "vi-insts") + +//===----------------------------------------------------------------------===// +// GFX9+ only builtins. +//===----------------------------------------------------------------------===// + +TARGET_BUILTIN(__builtin_amdgcn_fmed3h, "hhhh", "nc", "gfx9-insts") + +//===----------------------------------------------------------------------===// +// Deep learning builtins. +//===----------------------------------------------------------------------===// + +TARGET_BUILTIN(__builtin_amdgcn_fdot2, "fV2hV2hfIb", "nc", "dot2-insts") +TARGET_BUILTIN(__builtin_amdgcn_sdot2, "SiV2SsV2SsSiIb", "nc", "dot2-insts") +TARGET_BUILTIN(__builtin_amdgcn_udot2, "UiV2UsV2UsUiIb", "nc", "dot2-insts") +TARGET_BUILTIN(__builtin_amdgcn_sdot4, "SiSiSiSiIb", "nc", "dot1-insts") +TARGET_BUILTIN(__builtin_amdgcn_udot4, "UiUiUiUiIb", "nc", "dot2-insts") +TARGET_BUILTIN(__builtin_amdgcn_sdot8, "SiSiSiSiIb", "nc", "dot1-insts") +TARGET_BUILTIN(__builtin_amdgcn_udot8, "UiUiUiUiIb", "nc", "dot2-insts") + +//===----------------------------------------------------------------------===// +// Special builtins. +//===----------------------------------------------------------------------===// +BUILTIN(__builtin_amdgcn_read_exec, "LUi", "nc") +BUILTIN(__builtin_amdgcn_read_exec_lo, "Ui", "nc") +BUILTIN(__builtin_amdgcn_read_exec_hi, "Ui", "nc") + +//===----------------------------------------------------------------------===// +// R600-NI only builtins. +//===----------------------------------------------------------------------===// + +BUILTIN(__builtin_r600_implicitarg_ptr, "Uc*7", "nc") + +BUILTIN(__builtin_r600_read_tgid_x, "Ui", "nc") +BUILTIN(__builtin_r600_read_tgid_y, "Ui", "nc") +BUILTIN(__builtin_r600_read_tgid_z, "Ui", "nc") + +BUILTIN(__builtin_r600_read_tidig_x, "Ui", "nc") +BUILTIN(__builtin_r600_read_tidig_y, "Ui", "nc") +BUILTIN(__builtin_r600_read_tidig_z, "Ui", "nc") + +BUILTIN(__builtin_r600_recipsqrt_ieee, "dd", "nc") +BUILTIN(__builtin_r600_recipsqrt_ieeef, "ff", "nc") + +#undef BUILTIN +#undef TARGET_BUILTIN diff --git a/clang-r353983/include/clang/Basic/BuiltinsARM.def b/clang-r353983/include/clang/Basic/BuiltinsARM.def new file mode 100644 index 00000000..00060455 --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsARM.def @@ -0,0 +1,332 @@ +//===--- BuiltinsARM.def - ARM Builtin function database ----*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the ARM-specific builtin function database. Users of +// this file must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// The format of this database matches clang/Basic/Builtins.def. + +#if defined(BUILTIN) && !defined(LANGBUILTIN) +# define LANGBUILTIN(ID, TYPE, ATTRS, BUILTIN_LANG) BUILTIN(ID, TYPE, ATTRS) +#endif + +#if defined(BUILTIN) && !defined(TARGET_HEADER_BUILTIN) +# define TARGET_HEADER_BUILTIN(ID, TYPE, ATTRS, HEADER, LANG, FEATURE) BUILTIN(ID, TYPE, ATTRS) +#endif + +// In libgcc +BUILTIN(__clear_cache, "vv*v*", "i") + +// 16-bit multiplications +BUILTIN(__builtin_arm_smulbb, "iii", "nc") +BUILTIN(__builtin_arm_smulbt, "iii", "nc") +BUILTIN(__builtin_arm_smultb, "iii", "nc") +BUILTIN(__builtin_arm_smultt, "iii", "nc") +BUILTIN(__builtin_arm_smulwb, "iii", "nc") +BUILTIN(__builtin_arm_smulwt, "iii", "nc") + +// Saturating arithmetic +BUILTIN(__builtin_arm_qadd, "iii", "nc") +BUILTIN(__builtin_arm_qsub, "iii", "nc") +BUILTIN(__builtin_arm_qdbl, "ii", "nc") +BUILTIN(__builtin_arm_ssat, "iiUi", "nc") +BUILTIN(__builtin_arm_usat, "UiiUi", "nc") + +BUILTIN(__builtin_arm_smlabb, "iiii", "nc") +BUILTIN(__builtin_arm_smlabt, "iiii", "nc") +BUILTIN(__builtin_arm_smlatb, "iiii", "nc") +BUILTIN(__builtin_arm_smlatt, "iiii", "nc") +BUILTIN(__builtin_arm_smlawb, "iiii", "nc") +BUILTIN(__builtin_arm_smlawt, "iiii", "nc") + +BUILTIN(__builtin_arm_ssat16, "iii", "nc") +BUILTIN(__builtin_arm_usat16, "iii", "nc") + +BUILTIN(__builtin_arm_sxtab16, "iii", "nc") +BUILTIN(__builtin_arm_sxtb16, "ii", "nc") +BUILTIN(__builtin_arm_uxtab16, "iii", "nc") +BUILTIN(__builtin_arm_uxtb16, "ii", "nc") + +BUILTIN(__builtin_arm_sel, "iii", "nc") + +BUILTIN(__builtin_arm_qadd8, "iii", "nc") +BUILTIN(__builtin_arm_qsub8, "iii", "nc") +BUILTIN(__builtin_arm_sadd8, "iii", "nc") +BUILTIN(__builtin_arm_shadd8, "iii", "nc") +BUILTIN(__builtin_arm_shsub8, "iii", "nc") +BUILTIN(__builtin_arm_ssub8, "iii", "nc") +BUILTIN(__builtin_arm_uadd8, "UiUiUi", "nc") +BUILTIN(__builtin_arm_uhadd8, "UiUiUi", "nc") +BUILTIN(__builtin_arm_uhsub8, "UiUiUi", "nc") +BUILTIN(__builtin_arm_uqadd8, "UiUiUi", "nc") +BUILTIN(__builtin_arm_uqsub8, "UiUiUi", "nc") +BUILTIN(__builtin_arm_usub8, "UiUiUi", "nc") + +// Sum of 8-bit absolute differences +BUILTIN(__builtin_arm_usad8, "UiUiUi", "nc") +BUILTIN(__builtin_arm_usada8, "UiUiUiUi", "nc") + +// Parallel 16-bit addition and subtraction +BUILTIN(__builtin_arm_qadd16, "iii", "nc") +BUILTIN(__builtin_arm_qasx, "iii", "nc") +BUILTIN(__builtin_arm_qsax, "iii", "nc") +BUILTIN(__builtin_arm_qsub16, "iii", "nc") +BUILTIN(__builtin_arm_sadd16, "iii", "nc") +BUILTIN(__builtin_arm_sasx, "iii", "nc") +BUILTIN(__builtin_arm_shadd16, "iii", "nc") +BUILTIN(__builtin_arm_shasx, "iii", "nc") +BUILTIN(__builtin_arm_shsax, "iii", "nc") +BUILTIN(__builtin_arm_shsub16, "iii", "nc") +BUILTIN(__builtin_arm_ssax, "iii", "nc") +BUILTIN(__builtin_arm_ssub16, "iii", "nc") +BUILTIN(__builtin_arm_uadd16, "UiUiUi", "nc") +BUILTIN(__builtin_arm_uasx, "UiUiUi", "nc") +BUILTIN(__builtin_arm_uhadd16, "UiUiUi", "nc") +BUILTIN(__builtin_arm_uhasx, "UiUiUi", "nc") +BUILTIN(__builtin_arm_uhsax, "UiUiUi", "nc") +BUILTIN(__builtin_arm_uhsub16, "UiUiUi", "nc") +BUILTIN(__builtin_arm_uqadd16, "UiUiUi", "nc") +BUILTIN(__builtin_arm_uqasx, "UiUiUi", "nc") +BUILTIN(__builtin_arm_uqsax, "UiUiUi", "nc") +BUILTIN(__builtin_arm_uqsub16, "UiUiUi", "nc") +BUILTIN(__builtin_arm_usax, "UiUiUi", "nc") +BUILTIN(__builtin_arm_usub16, "UiUiUi", "nc") + +// Parallel 16-bit multiplication +BUILTIN(__builtin_arm_smlad, "iiii", "nc") +BUILTIN(__builtin_arm_smladx, "iiii", "nc") +BUILTIN(__builtin_arm_smlald, "LLiiiLLi", "nc") +BUILTIN(__builtin_arm_smlaldx, "LLiiiLLi", "nc") +BUILTIN(__builtin_arm_smlsd, "iiii", "nc") +BUILTIN(__builtin_arm_smlsdx, "iiii", "nc") +BUILTIN(__builtin_arm_smlsld, "LLiiiLLi", "nc") +BUILTIN(__builtin_arm_smlsldx, "LLiiiLLi", "nc") +BUILTIN(__builtin_arm_smuad, "iii", "nc") +BUILTIN(__builtin_arm_smuadx, "iii", "nc") +BUILTIN(__builtin_arm_smusd, "iii", "nc") +BUILTIN(__builtin_arm_smusdx, "iii", "nc") + +// Bit manipulation +BUILTIN(__builtin_arm_rbit, "UiUi", "nc") + +// Store and load exclusive +BUILTIN(__builtin_arm_ldrexd, "LLUiv*", "") +BUILTIN(__builtin_arm_strexd, "iLLUiv*", "") + +BUILTIN(__builtin_arm_ldrex, "v.", "t") +BUILTIN(__builtin_arm_ldaex, "v.", "t") +BUILTIN(__builtin_arm_strex, "i.", "t") +BUILTIN(__builtin_arm_stlex, "i.", "t") +BUILTIN(__builtin_arm_clrex, "v", "") + +// VFP +BUILTIN(__builtin_arm_get_fpscr, "Ui", "nc") +BUILTIN(__builtin_arm_set_fpscr, "vUi", "nc") +BUILTIN(__builtin_arm_vcvtr_f, "ffi", "nc") +BUILTIN(__builtin_arm_vcvtr_d, "fdi", "nc") + +// Coprocessor +BUILTIN(__builtin_arm_ldc, "vUIiUIivC*", "") +BUILTIN(__builtin_arm_ldcl, "vUIiUIivC*", "") +BUILTIN(__builtin_arm_ldc2, "vUIiUIivC*", "") +BUILTIN(__builtin_arm_ldc2l, "vUIiUIivC*", "") + +BUILTIN(__builtin_arm_stc, "vUIiUIiv*", "") +BUILTIN(__builtin_arm_stcl, "vUIiUIiv*", "") +BUILTIN(__builtin_arm_stc2, "vUIiUIiv*", "") +BUILTIN(__builtin_arm_stc2l, "vUIiUIiv*", "") + +BUILTIN(__builtin_arm_cdp, "vUIiUIiUIiUIiUIiUIi", "") +BUILTIN(__builtin_arm_cdp2, "vUIiUIiUIiUIiUIiUIi", "") +BUILTIN(__builtin_arm_mcr, "vUIiUIiUiUIiUIiUIi", "") +BUILTIN(__builtin_arm_mcr2, "vUIiUIiUiUIiUIiUIi", "") +BUILTIN(__builtin_arm_mrc, "UiUIiUIiUIiUIiUIi", "") +BUILTIN(__builtin_arm_mrc2, "UiUIiUIiUIiUIiUIi", "") +BUILTIN(__builtin_arm_mcrr, "vUIiUIiLLUiUIi", "") +BUILTIN(__builtin_arm_mcrr2, "vUIiUIiLLUiUIi", "") +BUILTIN(__builtin_arm_mrrc, "LLUiUIiUIiUIi", "") +BUILTIN(__builtin_arm_mrrc2, "LLUiUIiUIiUIi", "") + +// CRC32 +BUILTIN(__builtin_arm_crc32b, "UiUiUc", "nc") +BUILTIN(__builtin_arm_crc32cb, "UiUiUc", "nc") +BUILTIN(__builtin_arm_crc32h, "UiUiUs", "nc") +BUILTIN(__builtin_arm_crc32ch, "UiUiUs", "nc") +BUILTIN(__builtin_arm_crc32w, "UiUiUi", "nc") +BUILTIN(__builtin_arm_crc32cw, "UiUiUi", "nc") +BUILTIN(__builtin_arm_crc32d, "UiUiLLUi", "nc") +BUILTIN(__builtin_arm_crc32cd, "UiUiLLUi", "nc") + +// HINT +BUILTIN(__builtin_arm_nop, "v", "") +BUILTIN(__builtin_arm_yield, "v", "") +BUILTIN(__builtin_arm_wfe, "v", "") +BUILTIN(__builtin_arm_wfi, "v", "") +BUILTIN(__builtin_arm_sev, "v", "") +BUILTIN(__builtin_arm_sevl, "v", "") +BUILTIN(__builtin_arm_dbg, "vUi", "") + +// Data barrier +BUILTIN(__builtin_arm_dmb, "vUi", "nc") +BUILTIN(__builtin_arm_dsb, "vUi", "nc") +BUILTIN(__builtin_arm_isb, "vUi", "nc") + +// Prefetch +BUILTIN(__builtin_arm_prefetch, "vvC*UiUi", "nc") + +// System registers (ACLE) +BUILTIN(__builtin_arm_rsr, "UicC*", "nc") +BUILTIN(__builtin_arm_rsr64, "LLUicC*", "nc") +BUILTIN(__builtin_arm_rsrp, "v*cC*", "nc") +BUILTIN(__builtin_arm_wsr, "vcC*Ui", "nc") +BUILTIN(__builtin_arm_wsr64, "vcC*LLUi", "nc") +BUILTIN(__builtin_arm_wsrp, "vcC*vC*", "nc") + +// MSVC +LANGBUILTIN(__emit, "vIUiC", "", ALL_MS_LANGUAGES) + +LANGBUILTIN(__yield, "v", "", ALL_MS_LANGUAGES) +LANGBUILTIN(__wfe, "v", "", ALL_MS_LANGUAGES) +LANGBUILTIN(__wfi, "v", "", ALL_MS_LANGUAGES) +LANGBUILTIN(__sev, "v", "", ALL_MS_LANGUAGES) +LANGBUILTIN(__sevl, "v", "", ALL_MS_LANGUAGES) + +LANGBUILTIN(__dmb, "vUi", "nc", ALL_MS_LANGUAGES) +LANGBUILTIN(__dsb, "vUi", "nc", ALL_MS_LANGUAGES) +LANGBUILTIN(__isb, "vUi", "nc", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_load8, "ccCD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_load16, "ssCD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_load32, "iiCD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_load64, "LLiLLiCD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_store8, "vcD*c", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_store16, "vsD*s", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_store32, "viD*i", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__iso_volatile_store64, "vLLiD*LLi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__ldrexd, "WiWiCD*", "", ALL_MS_LANGUAGES) +LANGBUILTIN(_MoveFromCoprocessor, "UiIUiIUiIUiIUiIUi", "", ALL_MS_LANGUAGES) +LANGBUILTIN(_MoveFromCoprocessor2, "UiIUiIUiIUiIUiIUi", "", ALL_MS_LANGUAGES) +LANGBUILTIN(_MoveToCoprocessor, "vUiIUiIUiIUiIUiIUi", "", ALL_MS_LANGUAGES) +LANGBUILTIN(_MoveToCoprocessor2, "vUiIUiIUiIUiIUiIUi", "", ALL_MS_LANGUAGES) + +TARGET_HEADER_BUILTIN(_BitScanForward, "UcUNi*UNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_BitScanReverse, "UcUNi*UNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_BitScanForward64, "UcUNi*ULLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_BitScanReverse64, "UcUNi*ULLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedAnd64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement64, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeSub64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement64, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedExchange8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_acq, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_nf, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_rel, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_acq, "ssD*ss", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_nf, "ssD*ss", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_rel, "ssD*ss", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_acq, "LiLiD*LiLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_nf, "LiLiD*LiLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_rel, "LiLiD*LiLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_acq, "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_nf, "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_rel, "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedOr8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedXor8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedAnd8_acq, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd8_nf, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd8_rel, "ccD*c", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd16_acq, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd16_nf, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd16_rel, "ssD*s", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd_acq, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd_nf, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd_rel, "LiLiD*Li", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd64_acq, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd64_nf, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedAnd64_rel, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedIncrement16_acq, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement16_nf, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement16_rel, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement_acq, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement_nf, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement_rel, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement64_acq, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement64_nf, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement64_rel, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedDecrement16_acq, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement16_nf, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement16_rel, "ssD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement_acq, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement_nf, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement_rel, "LiLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement64_acq, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement64_nf, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement64_rel, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +#undef BUILTIN +#undef LANGBUILTIN +#undef TARGET_HEADER_BUILTIN diff --git a/clang-r353983/include/clang/Basic/BuiltinsHexagon.def b/clang-r353983/include/clang/Basic/BuiltinsHexagon.def new file mode 100644 index 00000000..18029af5 --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsHexagon.def @@ -0,0 +1,1817 @@ +//===-- BuiltinsHexagon.def - Hexagon Builtin function database --*- C++ -*-==// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the Hexagon-specific builtin function database. Users of +// this file must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// The format of this database matches clang/Basic/Builtins.def. + +// The builtins below are not autogenerated from iset.py. +// Make sure you do not overwrite these. + +BUILTIN(__builtin_brev_ldd, "v*LLi*CLLi*iC", "") +BUILTIN(__builtin_brev_ldw, "v*i*Ci*iC", "") +BUILTIN(__builtin_brev_ldh, "v*s*Cs*iC", "") +BUILTIN(__builtin_brev_lduh, "v*Us*CUs*iC", "") +BUILTIN(__builtin_brev_ldb, "v*Sc*CSc*iC", "") +BUILTIN(__builtin_brev_ldub, "v*Uc*CUc*iC", "") +BUILTIN(__builtin_circ_ldd, "LLi*LLi*LLi*iIi", "") +BUILTIN(__builtin_circ_ldw, "i*i*i*iIi", "") +BUILTIN(__builtin_circ_ldh, "s*s*s*iIi", "") +BUILTIN(__builtin_circ_lduh, "Us*Us*Us*iIi", "") +BUILTIN(__builtin_circ_ldb, "c*c*c*iIi", "") +BUILTIN(__builtin_circ_ldub, "Uc*Uc*Uc*iIi", "") +BUILTIN(__builtin_brev_std, "LLi*CLLi*LLiiC", "") +BUILTIN(__builtin_brev_stw, "i*Ci*iiC", "") +BUILTIN(__builtin_brev_sth, "s*Cs*iiC", "") +BUILTIN(__builtin_brev_sthhi, "s*Cs*iiC", "") +BUILTIN(__builtin_brev_stb, "c*Cc*iiC", "") +BUILTIN(__builtin_circ_std, "LLi*LLi*LLiiIi", "") +BUILTIN(__builtin_circ_stw, "i*i*iiIi", "") +BUILTIN(__builtin_circ_sth, "s*s*iiIi", "") +BUILTIN(__builtin_circ_sthhi, "s*s*iiIi", "") +BUILTIN(__builtin_circ_stb, "c*c*iiIi", "") +BUILTIN(__builtin_HEXAGON_L2_loadrub_pci, "iv*IiivC*", "") +BUILTIN(__builtin_HEXAGON_L2_loadrb_pci, "iv*IiivC*", "") +BUILTIN(__builtin_HEXAGON_L2_loadruh_pci, "iv*IiivC*", "") +BUILTIN(__builtin_HEXAGON_L2_loadrh_pci, "iv*IiivC*", "") +BUILTIN(__builtin_HEXAGON_L2_loadri_pci, "iv*IiivC*", "") +BUILTIN(__builtin_HEXAGON_L2_loadrd_pci, "LLiv*IiivC*", "") +BUILTIN(__builtin_HEXAGON_L2_loadrub_pcr, "iv*ivC*", "") +BUILTIN(__builtin_HEXAGON_L2_loadrb_pcr, "iv*ivC*", "") +BUILTIN(__builtin_HEXAGON_L2_loadruh_pcr, "iv*ivC*", "") +BUILTIN(__builtin_HEXAGON_L2_loadrh_pcr, "iv*ivC*", "") +BUILTIN(__builtin_HEXAGON_L2_loadri_pcr, "iv*ivC*", "") +BUILTIN(__builtin_HEXAGON_L2_loadrd_pcr, "LLiv*ivC*", "") + +BUILTIN(__builtin_HEXAGON_S2_storerb_pci, "vv*IiiivC*", "") +BUILTIN(__builtin_HEXAGON_S2_storerh_pci, "vv*IiiivC*", "") +BUILTIN(__builtin_HEXAGON_S2_storerf_pci, "vv*IiiivC*", "") +BUILTIN(__builtin_HEXAGON_S2_storeri_pci, "vv*IiiivC*", "") +BUILTIN(__builtin_HEXAGON_S2_storerd_pci, "vv*IiiLLivC*", "") +BUILTIN(__builtin_HEXAGON_S2_storerb_pcr, "vv*iivC*", "") +BUILTIN(__builtin_HEXAGON_S2_storerh_pcr, "vv*iivC*", "") +BUILTIN(__builtin_HEXAGON_S2_storerf_pcr, "vv*iivC*", "") +BUILTIN(__builtin_HEXAGON_S2_storeri_pcr, "vv*iivC*", "") +BUILTIN(__builtin_HEXAGON_S2_storerd_pcr, "vv*iLLivC*", "") + +BUILTIN(__builtin_HEXAGON_prefetch,"vv*","") +BUILTIN(__builtin_HEXAGON_Y2_dccleana,"vv*","") +BUILTIN(__builtin_HEXAGON_Y2_dccleaninva,"vv*","") +BUILTIN(__builtin_HEXAGON_Y2_dcinva,"vv*","") +BUILTIN(__builtin_HEXAGON_Y2_dczeroa,"vv*","") +BUILTIN(__builtin_HEXAGON_Y4_l2fetch,"vv*Ui","") +BUILTIN(__builtin_HEXAGON_Y5_l2fetch,"vv*LLUi","") + +BUILTIN(__builtin_HEXAGON_V6_vS32b_qpred_ai,"vV16iv*V16i","") +BUILTIN(__builtin_HEXAGON_V6_vS32b_nqpred_ai,"vV16iv*V16i","") +BUILTIN(__builtin_HEXAGON_V6_vS32b_nt_qpred_ai,"vV16iv*V16i","") +BUILTIN(__builtin_HEXAGON_V6_vS32b_nt_nqpred_ai,"vV16iv*V16i","") +BUILTIN(__builtin_HEXAGON_V6_vS32b_qpred_ai_128B,"vV32iv*V32i","") +BUILTIN(__builtin_HEXAGON_V6_vS32b_nqpred_ai_128B,"vV32iv*V32i","") +BUILTIN(__builtin_HEXAGON_V6_vS32b_nt_qpred_ai_128B,"vV32iv*V32i","") +BUILTIN(__builtin_HEXAGON_V6_vS32b_nt_nqpred_ai_128B,"vV32iv*V32i","") +BUILTIN(__builtin_HEXAGON_V6_vmaskedstoreq,"vV16iv*V16i","") +BUILTIN(__builtin_HEXAGON_V6_vmaskedstorenq,"vV16iv*V16i","") +BUILTIN(__builtin_HEXAGON_V6_vmaskedstorentq,"vV16iv*V16i","") +BUILTIN(__builtin_HEXAGON_V6_vmaskedstorentnq,"vV16iv*V16i","") +BUILTIN(__builtin_HEXAGON_V6_vmaskedstoreq_128B,"vV32iv*V32i","") +BUILTIN(__builtin_HEXAGON_V6_vmaskedstorenq_128B,"vV32iv*V32i","") +BUILTIN(__builtin_HEXAGON_V6_vmaskedstorentq_128B,"vV32iv*V32i","") +BUILTIN(__builtin_HEXAGON_V6_vmaskedstorentnq_128B,"vV32iv*V32i","") + +BUILTIN(__builtin_HEXAGON_V6_vgathermw,"vv*iiV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgathermw_128B,"vv*iiV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgathermh,"vv*iiV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgathermh_128B,"vv*iiV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgathermhw,"vv*iiV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgathermhw_128B,"vv*iiV64i","") +BUILTIN(__builtin_HEXAGON_V6_vgathermwq,"vv*V16iiiV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgathermwq_128B,"vv*V32iiiV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgathermhq,"vv*V16iiiV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgathermhq_128B,"vv*V32iiiV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgathermhwq,"vv*V16iiiV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgathermhwq_128B,"vv*V32iiiV64i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermw,"viiV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermw_128B,"viiV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermh,"viiV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermh_128B,"viiV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermw_add,"viiV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermw_add_128B,"viiV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermh_add,"viiV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermh_add_128B,"viiV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermwq,"vV16iiiV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermwq_128B,"vV32iiiV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermhq,"vV16iiiV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermhq_128B,"vV32iiiV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermhw,"viiV32iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermhw_128B,"viiV64iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermhwq,"vV16iiiV32iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermhwq_128B,"vV32iiiV64iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermhw_add,"viiV32iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vscattermhw_add_128B,"viiV64iV32i","") + +// --------------------------------------------------------------------- +// Auto-generated definitions. + +// V5 Scalar Instructions. + +BUILTIN(__builtin_HEXAGON_S2_asr_r_p_or,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_S2_vsatwh,"iLLi","") +BUILTIN(__builtin_HEXAGON_S2_tableidxd_goodsyntax,"iiiUIiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpysu_up,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_ll_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_ll_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_cmpysc_s1,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_cmpysc_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_M4_cmpyi_whc,"iLLii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_lh_s1,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_lh_s0,"iii","") +BUILTIN(__builtin_HEXAGON_S2_tableidxb_goodsyntax,"iiiUIiUIi","") +BUILTIN(__builtin_HEXAGON_S2_shuffoh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_F2_sfmax,"fff","") +BUILTIN(__builtin_HEXAGON_A2_vabswsat,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_r,"iiUIi","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_p,"LLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_A4_combineri,"LLiiIi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_hl_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M4_vpmpyh_acc,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_vcmpy_s0_sat_i,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_notp,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_hl_s1,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_hl_s0,"iii","") +BUILTIN(__builtin_HEXAGON_C4_or_and,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_vmac2s_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_vmac2s_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_S2_brevp,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_M4_pmpyw_acc,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_S2_cl1,"ii","") +BUILTIN(__builtin_HEXAGON_C4_cmplte,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mmpyul_s0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vaddws,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_maxup,"ULLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A4_vcmphgti,"iLLiIi","") +BUILTIN(__builtin_HEXAGON_S2_interleave,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vrcmpyi_s0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_abssat,"ii","") +BUILTIN(__builtin_HEXAGON_A2_vcmpwgtu,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_C2_cmpgtu,"iii","") +BUILTIN(__builtin_HEXAGON_C2_cmpgtp,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_A4_cmphgtui,"iiUIi","") +BUILTIN(__builtin_HEXAGON_C2_cmpgti,"iiIi","") +BUILTIN(__builtin_HEXAGON_M2_mpyi,"iii","") +BUILTIN(__builtin_HEXAGON_F2_conv_df2uw_chop,"id","") +BUILTIN(__builtin_HEXAGON_A4_cmpheq,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_lh_s1,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_lh_s0,"iii","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_xacc,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_S2_vrcnegh,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_S2_extractup,"LLiLLiUIiUIi","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_p_rnd_goodsyntax,"LLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S4_ntstbit_r,"iii","") +BUILTIN(__builtin_HEXAGON_F2_conv_w2sf,"fi","") +BUILTIN(__builtin_HEXAGON_C2_not,"ii","") +BUILTIN(__builtin_HEXAGON_C2_tfrpr,"ii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_ll_s1,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_ll_s0,"iii","") +BUILTIN(__builtin_HEXAGON_A4_cmpbgt,"iii","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_r_and,"iiii","") +BUILTIN(__builtin_HEXAGON_A4_rcmpneqi,"iiIi","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_r_nac,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_M2_subacc,"iiii","") +BUILTIN(__builtin_HEXAGON_A2_orp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_up,"Uiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_lh_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_vh,"LLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_vw,"LLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_A4_cmpbgtu,"iii","") +BUILTIN(__builtin_HEXAGON_A4_vcmpbeq_any,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_A4_cmpbgti,"iiIi","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_lh_s1,"LLiii","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_p_nac,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_nac,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_A2_addsp,"LLiiLLi","") +BUILTIN(__builtin_HEXAGON_S4_vxsubaddw,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A4_vcmpheqi,"iLLiIi","") +BUILTIN(__builtin_HEXAGON_S4_vxsubaddh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M4_pmpyw,"LLiii","") +BUILTIN(__builtin_HEXAGON_S2_vsathb,"iLLi","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_p_and,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_lh_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_lh_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_acc,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_A2_pxorf,"iiii","") +BUILTIN(__builtin_HEXAGON_C2_cmpgei,"iiIi","") +BUILTIN(__builtin_HEXAGON_A2_vsubub,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_p,"LLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_r,"iiUIi","") +BUILTIN(__builtin_HEXAGON_A4_vrminuw,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_F2_sffma,"ffff","") +BUILTIN(__builtin_HEXAGON_A2_absp,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_C2_all8,"ii","") +BUILTIN(__builtin_HEXAGON_A4_vrminuh,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_F2_sffma_lib,"ffff","") +BUILTIN(__builtin_HEXAGON_M4_vrmpyoh_s0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M4_vrmpyoh_s1,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_C2_bitsset,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpysip,"iiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpysin,"iiUIi","") +BUILTIN(__builtin_HEXAGON_A4_boundscheck,"iiLLi","") +BUILTIN(__builtin_HEXAGON_M5_vrmpybuu,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_C4_fastcorner9,"iii","") +BUILTIN(__builtin_HEXAGON_M2_vrcmpys_s1rp,"iLLii","") +BUILTIN(__builtin_HEXAGON_A2_neg,"ii","") +BUILTIN(__builtin_HEXAGON_A2_subsat,"iii","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_r,"iii","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_p,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_A2_vnavgh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_hl_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_F2_conv_ud2df,"dLLi","") +BUILTIN(__builtin_HEXAGON_A2_vnavgw,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_r_acc,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_S4_subi_lsr_ri,"iUIiiUIi","") +BUILTIN(__builtin_HEXAGON_S2_vzxthw,"LLii","") +BUILTIN(__builtin_HEXAGON_F2_sfadd,"fff","") +BUILTIN(__builtin_HEXAGON_A2_sub,"iii","") +BUILTIN(__builtin_HEXAGON_M2_vmac2su_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_vmac2su_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_dpmpyss_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_S2_insert,"iiiUIiUIi","") +BUILTIN(__builtin_HEXAGON_S2_packhl,"LLiii","") +BUILTIN(__builtin_HEXAGON_A4_vcmpwgti,"iLLiIi","") +BUILTIN(__builtin_HEXAGON_A2_vavguwr,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_r_and,"iiii","") +BUILTIN(__builtin_HEXAGON_A2_svsubhs,"iii","") +BUILTIN(__builtin_HEXAGON_A2_addh_l16_hl,"iii","") +BUILTIN(__builtin_HEXAGON_M4_and_and,"iiii","") +BUILTIN(__builtin_HEXAGON_F2_conv_d2df,"dLLi","") +BUILTIN(__builtin_HEXAGON_C2_cmpgtui,"iiUIi","") +BUILTIN(__builtin_HEXAGON_A2_vconj,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_r_vw,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_S2_lsr_r_vh,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_A2_subh_l16_hl,"iii","") +BUILTIN(__builtin_HEXAGON_S4_vxsubaddhr,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_clbp,"iLLi","") +BUILTIN(__builtin_HEXAGON_S2_deinterleave,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_C2_any8,"ii","") +BUILTIN(__builtin_HEXAGON_S2_togglebit_r,"iii","") +BUILTIN(__builtin_HEXAGON_S2_togglebit_i,"iiUIi","") +BUILTIN(__builtin_HEXAGON_F2_conv_uw2sf,"fi","") +BUILTIN(__builtin_HEXAGON_S2_vsathb_nopack,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_cmacs_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_cmacs_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_hh_s0,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_hh_s1,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mmacuhs_s1,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mmacuhs_s0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_clrbit_r,"iii","") +BUILTIN(__builtin_HEXAGON_C4_or_andn,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_r_nac,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_p_acc,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_A4_vcmpwgtui,"iLLiUIi","") +BUILTIN(__builtin_HEXAGON_M4_vrmpyoh_acc_s0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M4_vrmpyoh_acc_s1,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A4_vrmaxh,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_A2_vcmpbeq,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vcmphgt,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vnavgwcr,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vrcmacr_s0c,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vavgwcr,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_p_xacc,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_A4_vrmaxw,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_A2_vnavghr,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M4_cmpyi_wh,"iLLii","") +BUILTIN(__builtin_HEXAGON_A2_tfrsi,"iIi","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_r_acc,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_A2_svnavgh,"iii","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_r,"iiUIi","") +BUILTIN(__builtin_HEXAGON_M2_vmac2,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_A4_vcmphgtui,"iLLiUIi","") +BUILTIN(__builtin_HEXAGON_A2_svavgh,"iii","") +BUILTIN(__builtin_HEXAGON_M4_vrmpyeh_acc_s0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M4_vrmpyeh_acc_s1,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_p,"LLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_A2_combine_hl,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_up,"iii","") +BUILTIN(__builtin_HEXAGON_A2_combine_hh,"iii","") +BUILTIN(__builtin_HEXAGON_A2_negsat,"ii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_hl_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_hl_s1,"LLiii","") +BUILTIN(__builtin_HEXAGON_A4_bitsplit,"LLiii","") +BUILTIN(__builtin_HEXAGON_A2_vabshsat,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpyui,"iii","") +BUILTIN(__builtin_HEXAGON_A2_addh_l16_sat_ll,"iii","") +BUILTIN(__builtin_HEXAGON_S2_lsl_r_r_and,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mmpyul_rs0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_r_rnd_goodsyntax,"iiUIi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_nac,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_C2_cmplt,"iii","") +BUILTIN(__builtin_HEXAGON_M2_cmacr_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M4_or_and,"iiii","") +BUILTIN(__builtin_HEXAGON_M4_mpyrr_addi,"iUIiii","") +BUILTIN(__builtin_HEXAGON_S4_or_andi,"iiiIi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_hl_s0,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_hl_s1,"iii","") +BUILTIN(__builtin_HEXAGON_M4_mpyrr_addr,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mmachs_rs0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mmachs_rs1,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vrcmpyr_s0c,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_hl_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_ll_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_F2_sffixupn,"fff","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_lh_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_lh_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_hh_s0,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_hh_s1,"iii","") +BUILTIN(__builtin_HEXAGON_A2_vadduhs,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vsubuhs,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_subh_h16_hl,"iii","") +BUILTIN(__builtin_HEXAGON_A2_subh_h16_hh,"iii","") +BUILTIN(__builtin_HEXAGON_A2_xorp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A4_tfrpcp,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_addh_h16_lh,"iii","") +BUILTIN(__builtin_HEXAGON_A2_addh_h16_sat_hl,"iii","") +BUILTIN(__builtin_HEXAGON_A2_addh_h16_ll,"iii","") +BUILTIN(__builtin_HEXAGON_A2_addh_h16_sat_hh,"iii","") +BUILTIN(__builtin_HEXAGON_A2_zxtb,"ii","") +BUILTIN(__builtin_HEXAGON_A2_zxth,"ii","") +BUILTIN(__builtin_HEXAGON_A2_vnavgwr,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M4_or_xor,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_hh_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_hh_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M5_vmacbsu,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_dpmpyuu_acc_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_hl_s0,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_hl_s1,"iii","") +BUILTIN(__builtin_HEXAGON_F2_sffms_lib,"ffff","") +BUILTIN(__builtin_HEXAGON_C4_cmpneqi,"iiIi","") +BUILTIN(__builtin_HEXAGON_M4_and_xor,"iiii","") +BUILTIN(__builtin_HEXAGON_A2_sat,"iLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_lh_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_lh_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_A2_addsat,"iii","") +BUILTIN(__builtin_HEXAGON_A2_svavghs,"iii","") +BUILTIN(__builtin_HEXAGON_A2_vrsadub_acc,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_C2_bitsclri,"iiUIi","") +BUILTIN(__builtin_HEXAGON_A2_subh_h16_sat_hh,"iii","") +BUILTIN(__builtin_HEXAGON_A2_subh_h16_sat_hl,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mmaculs_rs0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mmaculs_rs1,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vradduh,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_A4_addp_c,"LLiLLiLLiv*","") +BUILTIN(__builtin_HEXAGON_C2_xor,"iii","") +BUILTIN(__builtin_HEXAGON_S2_lsl_r_r_acc,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mmpyh_rs1,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mmpyh_rs0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_F2_conv_df2ud_chop,"LLid","") +BUILTIN(__builtin_HEXAGON_C4_or_or,"iiii","") +BUILTIN(__builtin_HEXAGON_S4_vxaddsubhr,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_vsathub,"iLLi","") +BUILTIN(__builtin_HEXAGON_F2_conv_df2sf,"fd","") +BUILTIN(__builtin_HEXAGON_M2_hmmpyh_rs1,"iii","") +BUILTIN(__builtin_HEXAGON_M2_hmmpyh_s1,"iii","") +BUILTIN(__builtin_HEXAGON_A2_vavgwr,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_tableidxh_goodsyntax,"iiiUIiUIi","") +BUILTIN(__builtin_HEXAGON_A2_sxth,"ii","") +BUILTIN(__builtin_HEXAGON_A2_sxtb,"ii","") +BUILTIN(__builtin_HEXAGON_C4_or_orn,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_vrcmaci_s0c,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_sxtw,"LLii","") +BUILTIN(__builtin_HEXAGON_M2_vabsdiffh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_lh_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_lh_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_hmmpyl_s1,"iii","") +BUILTIN(__builtin_HEXAGON_S2_cl1p,"iLLi","") +BUILTIN(__builtin_HEXAGON_M2_vabsdiffw,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A4_andnp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_C2_vmux,"LLiiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_parityp,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_and,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_r_or,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_ll_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_ll_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_F2_sfcmpeq,"iff","") +BUILTIN(__builtin_HEXAGON_A2_vaddb_map,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_r_r_nac,"iiii","") +BUILTIN(__builtin_HEXAGON_A2_vcmpheq,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_clbnorm,"ii","") +BUILTIN(__builtin_HEXAGON_M2_cnacsc_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_cnacsc_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_S4_subaddi,"iiIii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_hl_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_hl_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_S5_vasrhrnd_goodsyntax,"LLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S2_tstbit_r,"iii","") +BUILTIN(__builtin_HEXAGON_S4_vrcrotate,"LLiLLiiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mmachs_s1,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mmachs_s0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_tstbit_i,"iiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_up_s1,"iii","") +BUILTIN(__builtin_HEXAGON_S2_extractu_rp,"iiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mmpyuh_rs0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_vw,"LLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_ll_s0,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_ll_s1,"iii","") +BUILTIN(__builtin_HEXAGON_M4_or_or,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_hh_s1,"Uiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_hh_s0,"Uiii","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_p_acc,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_lh_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_lh_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_ll_s0,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_ll_s1,"iii","") +BUILTIN(__builtin_HEXAGON_F2_conv_w2df,"di","") +BUILTIN(__builtin_HEXAGON_A2_subh_l16_sat_hl,"iii","") +BUILTIN(__builtin_HEXAGON_C2_cmpeqi,"iiIi","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_r_and,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_S2_vcnegh,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_A4_vcmpweqi,"iLLiIi","") +BUILTIN(__builtin_HEXAGON_M2_vdmpyrs_s0,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vdmpyrs_s1,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_M4_xor_xacc,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vdmpys_s1,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vdmpys_s0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vavgubr,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_hl_s1,"Uiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_hl_s0,"Uiii","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_r_acc,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_cl0p,"iLLi","") +BUILTIN(__builtin_HEXAGON_S2_valignib,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_F2_sffixupd,"fff","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_hl_s1,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_hl_s0,"iii","") +BUILTIN(__builtin_HEXAGON_M2_cmacsc_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_cmacsc_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_S2_ct1,"ii","") +BUILTIN(__builtin_HEXAGON_S2_ct0,"ii","") +BUILTIN(__builtin_HEXAGON_M2_dpmpyuu_nac_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mmpyul_rs1,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S4_ntstbit_i,"iiUIi","") +BUILTIN(__builtin_HEXAGON_F2_sffixupr,"ff","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_p_xor,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_hl_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_hl_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_A2_vcmphgtu,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_C2_andn,"iii","") +BUILTIN(__builtin_HEXAGON_M2_vmpy2s_s0pack,"iii","") +BUILTIN(__builtin_HEXAGON_S4_addaddi,"iiiIi","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_ll_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_hl_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_A4_rcmpeqi,"iiIi","") +BUILTIN(__builtin_HEXAGON_M4_xor_and,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_p_and,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mmpyuh_rs1,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_r_or,"iiii","") +BUILTIN(__builtin_HEXAGON_A4_round_ri,"iiUIi","") +BUILTIN(__builtin_HEXAGON_A2_max,"iii","") +BUILTIN(__builtin_HEXAGON_A4_round_rr,"iii","") +BUILTIN(__builtin_HEXAGON_A4_combineii,"LLiIiUIi","") +BUILTIN(__builtin_HEXAGON_A4_combineir,"LLiIii","") +BUILTIN(__builtin_HEXAGON_C4_and_orn,"iiii","") +BUILTIN(__builtin_HEXAGON_M5_vmacbuu,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_A4_rcmpeq,"iii","") +BUILTIN(__builtin_HEXAGON_M4_cmpyr_whc,"iLLii","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_acc,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_S2_vzxtbh,"LLii","") +BUILTIN(__builtin_HEXAGON_M2_mmacuhs_rs1,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_r_sat,"iii","") +BUILTIN(__builtin_HEXAGON_A2_combinew,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_ll_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_ll_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_cmpyi_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_p_or,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_S4_ori_asl_ri,"iUIiiUIi","") +BUILTIN(__builtin_HEXAGON_C4_nbitsset,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_hh_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_hh_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_ll_s1,"Uiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_ll_s0,"Uiii","") +BUILTIN(__builtin_HEXAGON_A2_addh_l16_ll,"iii","") +BUILTIN(__builtin_HEXAGON_S2_lsr_r_r_and,"iiii","") +BUILTIN(__builtin_HEXAGON_A4_modwrapu,"iii","") +BUILTIN(__builtin_HEXAGON_A4_rcmpneq,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_hh_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_hh_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_F2_sfimm_p,"fUIi","") +BUILTIN(__builtin_HEXAGON_F2_sfimm_n,"fUIi","") +BUILTIN(__builtin_HEXAGON_M4_cmpyr_wh,"iLLii","") +BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_and,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_A2_vavgub,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_F2_conv_d2sf,"fLLi","") +BUILTIN(__builtin_HEXAGON_A2_vavguh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A4_cmpbeqi,"iiUIi","") +BUILTIN(__builtin_HEXAGON_F2_sfcmpuo,"iff","") +BUILTIN(__builtin_HEXAGON_A2_vavguw,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_p_nac,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S2_vsatwh_nopack,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_hh_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_hh_s1,"LLiii","") +BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_or,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_A2_minu,"Uiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_lh_s1,"iii","") +BUILTIN(__builtin_HEXAGON_M4_or_andn,"iiii","") +BUILTIN(__builtin_HEXAGON_A2_minp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S4_or_andix,"iiiIi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_lh_s0,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_rnd_lh_s1,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mmpyuh_s0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mmpyuh_s1,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_lh_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_F2_sfcmpge,"iff","") +BUILTIN(__builtin_HEXAGON_F2_sfmin,"fff","") +BUILTIN(__builtin_HEXAGON_F2_sfcmpgt,"iff","") +BUILTIN(__builtin_HEXAGON_M4_vpmpyh,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_mmacuhs_rs0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_lh_s1,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_lh_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_A2_roundsat,"iLLi","") +BUILTIN(__builtin_HEXAGON_S2_ct1p,"iLLi","") +BUILTIN(__builtin_HEXAGON_S4_extract_rp,"iiLLi","") +BUILTIN(__builtin_HEXAGON_S2_lsl_r_r_or,"iiii","") +BUILTIN(__builtin_HEXAGON_C4_cmplteui,"iiUIi","") +BUILTIN(__builtin_HEXAGON_S4_addi_lsr_ri,"iUIiiUIi","") +BUILTIN(__builtin_HEXAGON_A4_tfrcpp,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_svw_trun,"iLLiUIi","") +BUILTIN(__builtin_HEXAGON_A4_cmphgti,"iiIi","") +BUILTIN(__builtin_HEXAGON_A4_vrminh,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_A4_vrminw,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_A4_cmphgtu,"iii","") +BUILTIN(__builtin_HEXAGON_S2_insertp_rp,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vnavghcr,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S4_subi_asl_ri,"iUIiiUIi","") +BUILTIN(__builtin_HEXAGON_S2_lsl_r_vh,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_hh_s0,"iii","") +BUILTIN(__builtin_HEXAGON_A2_vsubws,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_sath,"ii","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_p_xor,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_A2_satb,"ii","") +BUILTIN(__builtin_HEXAGON_C2_cmpltu,"iii","") +BUILTIN(__builtin_HEXAGON_S2_insertp,"LLiLLiLLiUIiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_ll_s1,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_ll_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_nac,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S2_extractup_rp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S4_vxaddsubw,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S4_vxaddsubh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_asrh,"ii","") +BUILTIN(__builtin_HEXAGON_S4_extractp_rp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_r_r_acc,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_ll_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_ll_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_C2_or,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mmpyul_s1,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vrcmacr_s0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_xor,"iii","") +BUILTIN(__builtin_HEXAGON_A2_add,"iii","") +BUILTIN(__builtin_HEXAGON_A2_vsububs,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vmpy2s_s1,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_vmpy2s_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_A2_vraddub_acc,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_F2_sfinvsqrta,"ff","") +BUILTIN(__builtin_HEXAGON_S2_ct0p,"iLLi","") +BUILTIN(__builtin_HEXAGON_A2_svaddh,"iii","") +BUILTIN(__builtin_HEXAGON_S2_vcrotate,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_A2_aslh,"ii","") +BUILTIN(__builtin_HEXAGON_A2_subh_h16_lh,"iii","") +BUILTIN(__builtin_HEXAGON_A2_subh_h16_ll,"iii","") +BUILTIN(__builtin_HEXAGON_M2_hmmpyl_rs1,"iii","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_p,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_S2_vsplatrh,"LLii","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_r,"iii","") +BUILTIN(__builtin_HEXAGON_A2_addh_h16_hl,"iii","") +BUILTIN(__builtin_HEXAGON_S2_vsplatrb,"ii","") +BUILTIN(__builtin_HEXAGON_A2_addh_h16_hh,"iii","") +BUILTIN(__builtin_HEXAGON_M2_cmpyr_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_dpmpyss_rnd_s0,"iii","") +BUILTIN(__builtin_HEXAGON_C2_muxri,"iiIii","") +BUILTIN(__builtin_HEXAGON_M2_vmac2es_s0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vmac2es_s1,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_C2_pxfer_map,"ii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_lh_s1,"Uiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_lh_s0,"Uiii","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_r_or,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_hl_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_acc_hl_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_p_nac,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_A2_vaddw,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_r_and,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_A2_vaddh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_lh_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_lh_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_C2_cmpeqp,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_M4_mpyri_addi,"iUIiiUIi","") +BUILTIN(__builtin_HEXAGON_A2_not,"ii","") +BUILTIN(__builtin_HEXAGON_S4_andi_lsr_ri,"iUIiiUIi","") +BUILTIN(__builtin_HEXAGON_M2_macsip,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_A2_tfrcrr,"ii","") +BUILTIN(__builtin_HEXAGON_M2_macsin,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_C2_orn,"iii","") +BUILTIN(__builtin_HEXAGON_M4_and_andn,"iiii","") +BUILTIN(__builtin_HEXAGON_F2_sfmpy,"fff","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_hh_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_hh_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_acc,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_vw,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_M4_and_or,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_vh,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_C2_mask,"LLii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_hh_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_hh_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_up_s1_sat,"iii","") +BUILTIN(__builtin_HEXAGON_A4_vcmpbgt,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_M5_vrmacbsu,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_tableidxw_goodsyntax,"iiiUIiUIi","") +BUILTIN(__builtin_HEXAGON_A2_vrsadub,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_tfrrcr,"ii","") +BUILTIN(__builtin_HEXAGON_M2_vrcmpys_acc_s1,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_F2_dfcmpge,"idd","") +BUILTIN(__builtin_HEXAGON_M2_accii,"iiiIi","") +BUILTIN(__builtin_HEXAGON_A5_vaddhubs,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vmaxw,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vmaxb,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vmaxh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_vsxthw,"LLii","") +BUILTIN(__builtin_HEXAGON_S4_andi_asl_ri,"iUIiiUIi","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_p_nac,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_xor,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_C2_cmpgt,"iii","") +BUILTIN(__builtin_HEXAGON_F2_conv_df2d_chop,"LLid","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_hl_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_hl_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_F2_conv_sf2w,"if","") +BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_or,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_F2_sfclass,"ifUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_lh_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M4_xor_andn,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_addasl_rrri,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_M5_vdmpybsu,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_hh_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_nac_hh_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_A2_addi,"iiIi","") +BUILTIN(__builtin_HEXAGON_A2_addp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vmpy2s_s1pack,"iii","") +BUILTIN(__builtin_HEXAGON_S4_clbpnorm,"iLLi","") +BUILTIN(__builtin_HEXAGON_A4_round_rr_sat,"iii","") +BUILTIN(__builtin_HEXAGON_M2_nacci,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_shuffeh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_and,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_hh_s1,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_hh_s0,"iii","") +BUILTIN(__builtin_HEXAGON_F2_conv_sf2uw,"if","") +BUILTIN(__builtin_HEXAGON_A2_vsubh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_F2_conv_sf2ud,"LLif","") +BUILTIN(__builtin_HEXAGON_A2_vsubw,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vcmpwgt,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_M4_xor_or,"iiii","") +BUILTIN(__builtin_HEXAGON_F2_conv_sf2uw_chop,"if","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_vw,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_S2_vsatwuh_nopack,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_vh,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_A2_svsubuhs,"iii","") +BUILTIN(__builtin_HEXAGON_M5_vmpybsu,"LLiii","") +BUILTIN(__builtin_HEXAGON_A2_subh_l16_sat_ll,"iii","") +BUILTIN(__builtin_HEXAGON_C4_and_and,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_hl_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_hl_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_lsr_r_p,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_S2_lsr_r_r,"iii","") +BUILTIN(__builtin_HEXAGON_A4_subp_c,"LLiLLiLLiv*","") +BUILTIN(__builtin_HEXAGON_A2_vsubhs,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_C2_vitpack,"iii","") +BUILTIN(__builtin_HEXAGON_A2_vavguhr,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_vsplicerb,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_C4_nbitsclr,"iii","") +BUILTIN(__builtin_HEXAGON_A2_vcmpbgtu,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_cmpys_s1,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_cmpys_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_F2_dfcmpuo,"idd","") +BUILTIN(__builtin_HEXAGON_S2_shuffob,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_C2_and,"iii","") +BUILTIN(__builtin_HEXAGON_S5_popcountp,"iLLi","") +BUILTIN(__builtin_HEXAGON_S4_extractp,"LLiLLiUIiUIi","") +BUILTIN(__builtin_HEXAGON_S2_cl0,"ii","") +BUILTIN(__builtin_HEXAGON_A4_vcmpbgti,"iLLiIi","") +BUILTIN(__builtin_HEXAGON_M2_mmacls_s1,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mmacls_s0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_C4_cmpneq,"iii","") +BUILTIN(__builtin_HEXAGON_M2_vmac2es,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vdmacs_s0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vdmacs_s1,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_ll_s0,"ULLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_ll_s1,"ULLiii","") +BUILTIN(__builtin_HEXAGON_S2_clb,"ii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_ll_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_ll_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_hl_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_hl_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_maci,"iiii","") +BUILTIN(__builtin_HEXAGON_A2_vmaxuh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A4_bitspliti,"LLiiUIi","") +BUILTIN(__builtin_HEXAGON_A2_vmaxub,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_hh_s0,"ULLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_hh_s1,"ULLiii","") +BUILTIN(__builtin_HEXAGON_M2_vrmac_s0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_lh_s0,"iii","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_r_sat,"iii","") +BUILTIN(__builtin_HEXAGON_F2_conv_sf2d,"LLif","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_r_nac,"iiii","") +BUILTIN(__builtin_HEXAGON_F2_dfimm_n,"dUIi","") +BUILTIN(__builtin_HEXAGON_A4_cmphgt,"iii","") +BUILTIN(__builtin_HEXAGON_F2_dfimm_p,"dUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_acc_lh_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_vcmpy_s1_sat_r,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M4_mpyri_addr_u2,"iiUIii","") +BUILTIN(__builtin_HEXAGON_M2_vcmpy_s1_sat_i,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_lsl_r_p_nac,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_M5_vrmacbuu,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S5_asrhub_rnd_sat_goodsyntax,"iLLiUIi","") +BUILTIN(__builtin_HEXAGON_S2_vspliceib,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_M2_dpmpyss_acc_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_cnacs_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_cnacs_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_A2_maxu,"Uiii","") +BUILTIN(__builtin_HEXAGON_A2_maxp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_andir,"iiIi","") +BUILTIN(__builtin_HEXAGON_F2_sfrecipa,"fff","") +BUILTIN(__builtin_HEXAGON_A2_combineii,"LLiIiIi","") +BUILTIN(__builtin_HEXAGON_A4_orn,"iii","") +BUILTIN(__builtin_HEXAGON_A4_cmpbgtui,"iiUIi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_r_r_or,"iiii","") +BUILTIN(__builtin_HEXAGON_A4_vcmpbeqi,"iLLiUIi","") +BUILTIN(__builtin_HEXAGON_S2_lsl_r_r,"iii","") +BUILTIN(__builtin_HEXAGON_S2_lsl_r_p,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_A2_or,"iii","") +BUILTIN(__builtin_HEXAGON_F2_dfcmpeq,"idd","") +BUILTIN(__builtin_HEXAGON_C2_cmpeq,"iii","") +BUILTIN(__builtin_HEXAGON_A2_tfrp,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_C4_and_andn,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_vsathub_nopack,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_satuh,"ii","") +BUILTIN(__builtin_HEXAGON_A2_satub,"ii","") +BUILTIN(__builtin_HEXAGON_M2_vrcmpys_s1,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_S4_or_ori,"iiiIi","") +BUILTIN(__builtin_HEXAGON_C4_fastcorner9_not,"iii","") +BUILTIN(__builtin_HEXAGON_A2_tfrih,"iiUIi","") +BUILTIN(__builtin_HEXAGON_A2_tfril,"iiUIi","") +BUILTIN(__builtin_HEXAGON_M4_mpyri_addr,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_S2_vtrunehb,"iLLi","") +BUILTIN(__builtin_HEXAGON_A2_vabsw,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vabsh,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_F2_sfsub,"fff","") +BUILTIN(__builtin_HEXAGON_C2_muxii,"iiIiIi","") +BUILTIN(__builtin_HEXAGON_C2_muxir,"iiiIi","") +BUILTIN(__builtin_HEXAGON_A2_swiz,"ii","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_p_and,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_M2_cmpyrsc_s0,"iii","") +BUILTIN(__builtin_HEXAGON_M2_cmpyrsc_s1,"iii","") +BUILTIN(__builtin_HEXAGON_A2_vraddub,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A4_tlbmatch,"iLLii","") +BUILTIN(__builtin_HEXAGON_F2_conv_df2w_chop,"id","") +BUILTIN(__builtin_HEXAGON_A2_and,"iii","") +BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_and,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_ll_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_ll_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_S4_extract,"iiUIiUIi","") +BUILTIN(__builtin_HEXAGON_A2_vcmpweq,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_acci,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_acc,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_or,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_F2_conv_ud2sf,"fLLi","") +BUILTIN(__builtin_HEXAGON_A2_tfr,"ii","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_p_or,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_A2_subri,"iIii","") +BUILTIN(__builtin_HEXAGON_A4_vrmaxuw,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_M5_vmpybuu,"LLiii","") +BUILTIN(__builtin_HEXAGON_A4_vrmaxuh,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_vw,"LLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_A2_vavgw,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_brev,"ii","") +BUILTIN(__builtin_HEXAGON_A2_vavgh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_clrbit_i,"iiUIi","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_vh,"LLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_r_or,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_S2_lsl_r_r_nac,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mmpyl_rs1,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_hl_s1,"ULLiii","") +BUILTIN(__builtin_HEXAGON_M2_mmpyl_s0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mmpyl_s1,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_naccii,"iiiIi","") +BUILTIN(__builtin_HEXAGON_S2_vrndpackwhs,"iLLi","") +BUILTIN(__builtin_HEXAGON_S2_vtrunewh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_dpmpyss_nac_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_ll_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_ll_s1,"LLiii","") +BUILTIN(__builtin_HEXAGON_M4_mac_up_s1_sat,"iiii","") +BUILTIN(__builtin_HEXAGON_S4_vrcrotate_acc,"LLiLLiLLiiUIi","") +BUILTIN(__builtin_HEXAGON_F2_conv_uw2df,"di","") +BUILTIN(__builtin_HEXAGON_A2_vaddubs,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_r_acc,"iiii","") +BUILTIN(__builtin_HEXAGON_A2_orir,"iiIi","") +BUILTIN(__builtin_HEXAGON_A2_andp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_lfsp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_min,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpysmi,"iiIi","") +BUILTIN(__builtin_HEXAGON_M2_vcmpy_s0_sat_r,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_ll_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyu_acc_ll_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_svw_trun,"iLLii","") +BUILTIN(__builtin_HEXAGON_M2_mmpyh_s0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mmpyh_s1,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_F2_conv_sf2df,"df","") +BUILTIN(__builtin_HEXAGON_S2_vtrunohb,"iLLi","") +BUILTIN(__builtin_HEXAGON_F2_conv_sf2d_chop,"LLif","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_lh_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_F2_conv_df2w,"id","") +BUILTIN(__builtin_HEXAGON_S5_asrhub_sat,"iLLiUIi","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_r_xacc,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_F2_conv_df2d,"LLid","") +BUILTIN(__builtin_HEXAGON_M2_mmaculs_s1,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mmaculs_s0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_svadduhs,"iii","") +BUILTIN(__builtin_HEXAGON_F2_conv_sf2w_chop,"if","") +BUILTIN(__builtin_HEXAGON_S2_svsathub,"ii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_hl_s1,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_hl_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_S2_setbit_r,"iii","") +BUILTIN(__builtin_HEXAGON_A2_vavghr,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_F2_sffma_sc,"ffffi","") +BUILTIN(__builtin_HEXAGON_F2_dfclass,"idUIi","") +BUILTIN(__builtin_HEXAGON_F2_conv_df2ud,"LLid","") +BUILTIN(__builtin_HEXAGON_F2_conv_df2uw,"id","") +BUILTIN(__builtin_HEXAGON_M2_cmpyrs_s0,"iii","") +BUILTIN(__builtin_HEXAGON_M2_cmpyrs_s1,"iii","") +BUILTIN(__builtin_HEXAGON_C4_cmpltei,"iiIi","") +BUILTIN(__builtin_HEXAGON_C4_cmplteu,"iii","") +BUILTIN(__builtin_HEXAGON_A2_vsubb_map,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_subh_l16_ll,"iii","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_r_rnd,"iiUIi","") +BUILTIN(__builtin_HEXAGON_M2_vrmpy_s0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_hh_s1,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_rnd_hh_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_A2_minup,"ULLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_valignrb,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_S2_asr_r_p_acc,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_M2_mmpyl_rs0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vrcmaci_s0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vaddub,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_combine_lh,"iii","") +BUILTIN(__builtin_HEXAGON_M5_vdmacbsu,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_combine_ll,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_hl_s0,"ULLiii","") +BUILTIN(__builtin_HEXAGON_M2_vrcmpyi_s0c,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_p_rnd,"LLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_A2_addpsat,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_svaddhs,"iii","") +BUILTIN(__builtin_HEXAGON_S4_ori_lsr_ri,"iUIiiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_ll_s1,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_sat_rnd_ll_s0,"iii","") +BUILTIN(__builtin_HEXAGON_A2_vminw,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vminh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vrcmpyr_s0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vminb,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vcmac_s0_sat_i,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_lh_s0,"ULLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_lh_s1,"ULLiii","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_r_or,"iiii","") +BUILTIN(__builtin_HEXAGON_S4_lsli,"iIii","") +BUILTIN(__builtin_HEXAGON_S2_lsl_r_vw,"LLiLLii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_hh_s1,"iii","") +BUILTIN(__builtin_HEXAGON_M4_vrmpyeh_s0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M4_vrmpyeh_s1,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_lh_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_lh_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_vraddh,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_C2_tfrrp,"ii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_ll_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_ll_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_vtrunowh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_abs,"ii","") +BUILTIN(__builtin_HEXAGON_A4_cmpbeq,"iii","") +BUILTIN(__builtin_HEXAGON_A2_negp,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_r_sat,"iiUIi","") +BUILTIN(__builtin_HEXAGON_A2_addh_l16_sat_hl,"iii","") +BUILTIN(__builtin_HEXAGON_S2_vsatwuh,"iLLi","") +BUILTIN(__builtin_HEXAGON_F2_dfcmpgt,"idd","") +BUILTIN(__builtin_HEXAGON_S2_svsathb,"ii","") +BUILTIN(__builtin_HEXAGON_C2_cmpgtup,"iLLiLLi","") +BUILTIN(__builtin_HEXAGON_A4_cround_ri,"iiUIi","") +BUILTIN(__builtin_HEXAGON_S4_clbpaddi,"iLLiIi","") +BUILTIN(__builtin_HEXAGON_A4_cround_rr,"iii","") +BUILTIN(__builtin_HEXAGON_C2_mux,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_dpmpyuu_s0,"ULLiii","") +BUILTIN(__builtin_HEXAGON_S2_shuffeb,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vminuw,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vaddhs,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_insert_rp,"iiiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vminuh,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vminub,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_extractu,"iiUIiUIi","") +BUILTIN(__builtin_HEXAGON_A2_svsubh,"iii","") +BUILTIN(__builtin_HEXAGON_S4_clbaddi,"iiIi","") +BUILTIN(__builtin_HEXAGON_F2_sffms,"ffff","") +BUILTIN(__builtin_HEXAGON_S2_vsxtbh,"LLii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_ll_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_ll_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_A2_subp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vmpy2es_s1,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_vmpy2es_s0,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S4_parity,"iii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_hh_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_hh_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_S4_addi_asl_ri,"iUIiiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_hh_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyd_nac_hh_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_r_nac,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_A4_cmpheqi,"iiIi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_r_p_xor,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_hl_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_hl_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_F2_conv_sf2ud_chop,"LLif","") +BUILTIN(__builtin_HEXAGON_C2_cmpgeui,"iiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_hh_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_acc_sat_hh_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_asl_r_p_and,"LLiLLiLLii","") +BUILTIN(__builtin_HEXAGON_A2_addh_h16_sat_lh,"iii","") +BUILTIN(__builtin_HEXAGON_A2_addh_h16_sat_ll,"iii","") +BUILTIN(__builtin_HEXAGON_M4_nac_up_s1_sat,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_lh_s1,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_M2_mpyud_nac_lh_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_A4_round_ri_sat,"iiUIi","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_hl_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_hl_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_A2_vavghcr,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mmacls_rs0,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_mmacls_rs1,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M2_cmaci_s0,"LLiLLiii","") +BUILTIN(__builtin_HEXAGON_S2_setbit_i,"iiUIi","") +BUILTIN(__builtin_HEXAGON_S2_asl_i_p_or,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_A4_andn,"iii","") +BUILTIN(__builtin_HEXAGON_M5_vrmpybsu,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S2_vrndpackwh,"iLLi","") +BUILTIN(__builtin_HEXAGON_M2_vcmac_s0_sat_r,"LLiLLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_vmaxuw,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_C2_bitsclr,"iii","") +BUILTIN(__builtin_HEXAGON_M2_xor_xacc,"iiii","") +BUILTIN(__builtin_HEXAGON_A4_vcmpbgtui,"iLLiUIi","") +BUILTIN(__builtin_HEXAGON_A4_ornp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A2_tfrpi,"LLiIi","") +BUILTIN(__builtin_HEXAGON_C4_and_or,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_hh_s1,"iiii","") +BUILTIN(__builtin_HEXAGON_M2_mpy_nac_sat_hh_s0,"iiii","") +BUILTIN(__builtin_HEXAGON_A2_subh_h16_sat_ll,"iii","") +BUILTIN(__builtin_HEXAGON_A2_subh_h16_sat_lh,"iii","") +BUILTIN(__builtin_HEXAGON_M2_vmpy2su_s1,"LLiii","") +BUILTIN(__builtin_HEXAGON_M2_vmpy2su_s0,"LLiii","") +BUILTIN(__builtin_HEXAGON_S2_asr_i_p_acc,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_C4_nbitsclri,"iiUIi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_vh,"LLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S2_lsr_i_p_xacc,"LLiLLiLLiUIi","") + +// V55 Scalar Instructions. + +BUILTIN(__builtin_HEXAGON_A5_ACS,"LLiLLiLLiLLi","") + +// V60 Scalar Instructions. + +BUILTIN(__builtin_HEXAGON_S6_rol_i_p_and,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S6_rol_i_r_xacc,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_S6_rol_i_r_and,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_S6_rol_i_r_acc,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_S6_rol_i_p_xacc,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S6_rol_i_p,"LLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S6_rol_i_p_nac,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S6_rol_i_p_acc,"LLiLLiLLiUIi","") +BUILTIN(__builtin_HEXAGON_S6_rol_i_r_or,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_S6_rol_i_r,"iiUIi","") +BUILTIN(__builtin_HEXAGON_S6_rol_i_r_nac,"iiiUIi","") +BUILTIN(__builtin_HEXAGON_S6_rol_i_p_or,"LLiLLiLLiUIi","") + +// V62 Scalar Instructions. + +BUILTIN(__builtin_HEXAGON_S6_vtrunehb_ppp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_V6_ldntnt0,"V16ii","") +BUILTIN(__builtin_HEXAGON_M6_vabsdiffub,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S6_vtrunohb_ppp,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_M6_vabsdiffb,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_A6_vminub_RdP,"LLiLLiLLi","") +BUILTIN(__builtin_HEXAGON_S6_vsplatrbp,"LLii","") + +// V65 Scalar Instructions. + +BUILTIN(__builtin_HEXAGON_A6_vcmpbeq_notany,"iLLiLLi","") + +// V66 Scalar Instructions. + +BUILTIN(__builtin_HEXAGON_F2_dfsub,"ddd","") +BUILTIN(__builtin_HEXAGON_F2_dfadd,"ddd","") +BUILTIN(__builtin_HEXAGON_M2_mnaci,"iiii","") +BUILTIN(__builtin_HEXAGON_S2_mask,"iUIiUIi","") + +// V60 HVX Instructions. + +BUILTIN(__builtin_HEXAGON_V6_veqb_or,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_veqb_or_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vminub,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vminub_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaslw_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vaslw_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhvsrs,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhvsrs_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsathub,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsathub_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddh_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddh_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybusi,"V32iV32iiUIi","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybusi_128B,"V64iV64iiUIi","") +BUILTIN(__builtin_HEXAGON_V6_vshufoh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vshufoh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vasrwv,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vasrwv_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhsuisat,"V16iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhsuisat_128B,"V32iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vrsadubi_acc,"V32iV32iV32iiUIi","") +BUILTIN(__builtin_HEXAGON_V6_vrsadubi_acc_128B,"V64iV64iV64iiUIi","") +BUILTIN(__builtin_HEXAGON_V6_vnavgw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vnavgw_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vnavgh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vnavgh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vavgub,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vavgub_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubb,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubb_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgtw_and,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtw_and_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vavgubrnd,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vavgubrnd_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybusv,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybusv_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubbnq,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubbnq_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vroundhb,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vroundhb_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vadduhsat_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vadduhsat_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vsububsat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsububsat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpabus_acc,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpabus_acc_128B,"V64iV64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vmux,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmux_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhus,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhus_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vpackeb,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vpackeb_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubhnq,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubhnq_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vavghrnd,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vavghrnd_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vtran2x2_map,"V16iV16iv*i","") +BUILTIN(__builtin_HEXAGON_V6_vtran2x2_map_128B,"V32iV32iv*i","") +BUILTIN(__builtin_HEXAGON_V6_vdelta,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vdelta_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuh_and,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuh_and_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vtmpyhb,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vtmpyhb_128B,"V64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vpackob,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vpackob_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmaxh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmaxh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vtmpybus_acc,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vtmpybus_acc_128B,"V64iV64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vsubuhsat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubuhsat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vasrw_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrw_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_pred_or,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_pred_or_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyub_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyub_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_lo,"V16iV32i","") +BUILTIN(__builtin_HEXAGON_V6_lo_128B,"V32iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vsubb_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubb_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vsubhsat_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubhsat_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiwh,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiwh_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiwb,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiwb_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_ldu0,"V16ii","") +BUILTIN(__builtin_HEXAGON_V6_ldu0_128B,"V32ii","") +BUILTIN(__builtin_HEXAGON_V6_vgtuh_xor,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuh_xor_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgth_or,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgth_or_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vavgh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vavgh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vlalignb,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vlalignb_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vsh,"V32iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsh_128B,"V64iV32i","") +BUILTIN(__builtin_HEXAGON_V6_pred_and_n,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_pred_and_n_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsb,"V32iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsb_128B,"V64iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vroundwuh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vroundwuh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vasrhv,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vasrhv_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vshuffh,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vshuffh_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddhsat_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddhsat_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vnavgub,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vnavgub_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybv,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybv_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vnormamth,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vnormamth_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhb,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vavguh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vavguh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vlsrwv,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vlsrwv_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vlsrhv,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vlsrhv_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhisat,"V16iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhisat_128B,"V32iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhvsat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhvsat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddw_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vzh,"V32iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vzh_128B,"V64iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmaxub,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmaxub_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhv_acc,"V32iV32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhv_acc_128B,"V64iV64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vadduhsat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vadduhsat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vshufoeh,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vshufoeh_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyuhv_acc,"V32iV32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyuhv_acc_128B,"V64iV64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_veqh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_veqh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpabuuv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpabuuv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vasrwhsat,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrwhsat_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vminuh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vminuh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vror,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vror_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyowh_rnd_sacc,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyowh_rnd_sacc_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmaxuh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmaxuh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vabsh_sat,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vabsh_sat_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_pred_or_n,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_pred_or_n_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdealb,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vdealb_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpybusv,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpybusv_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vzb,"V32iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vzb_128B,"V64iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpybus_dv,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpybus_dv_128B,"V64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vaddbq,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddbq_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddb,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddb_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddwq,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddwq_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vasrhubrndsat,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrhubrndsat_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrhubsat,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrhubsat_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vshufoeb,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vshufoeb_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vpackhub_sat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vpackhub_sat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiwh_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiwh_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vtmpyb,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vtmpyb_128B,"V64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpabusv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpabusv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_pred_and,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_pred_and_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubwnq,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubwnq_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vpackwuh_sat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vpackwuh_sat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vswap,"V32iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vswap_128B,"V64iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyubv_acc,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyubv_acc_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgtb_and,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtb_and_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaslw,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vaslw_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vpackhb_sat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vpackhb_sat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyih_acc,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyih_acc_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vshuffvdd,"V32iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vshuffvdd_128B,"V64iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vaddb_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddb_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vunpackub,"V32iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vunpackub_128B,"V64iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuw_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vlutvwh,"V32iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vlutvwh_128B,"V64iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vgtub,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtub_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyowh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyowh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyieoh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyieoh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_extractw,"iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_extractw_128B,"iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vavgwrnd,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vavgwrnd_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhsat_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhsat_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vgtub_xor,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtub_xor_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyub,"V32iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyub_128B,"V64iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyuh,"V32iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyuh_128B,"V64iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vunpackob,"V32iV32iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vunpackob_128B,"V64iV64iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpahb,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpahb_128B,"V64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_veqw_or,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_veqw_or_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vandqrt,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vandqrt_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vxor,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vxor_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vasrwhrndsat,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrwhrndsat_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhsat_acc,"V32iV32iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhsat_acc_128B,"V64iV64iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybus_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybus_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vsubhw,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubhw_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdealb4w,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vdealb4w_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyowh_sacc,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyowh_sacc_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpybv,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpybv_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vabsdiffh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vabsdiffh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vshuffob,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vshuffob_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyub_acc,"V32iV32iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyub_acc_128B,"V64iV64iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vnormamtw,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vnormamtw_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vunpackuh,"V32iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vunpackuh_128B,"V64iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuh_or,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuh_or_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiewuh_acc,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiewuh_acc_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vunpackoh,"V32iV32iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vunpackoh_128B,"V64iV64iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhsat,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhsat_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyubv,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyubv_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhss,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhss_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_hi,"V16iV32i","") +BUILTIN(__builtin_HEXAGON_V6_hi_128B,"V32iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vasrwuhsat,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrwuhsat_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_veqw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_veqw_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdsaduh,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdsaduh_128B,"V64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vsubw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubw_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubw_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubw_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_veqb_and,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_veqb_and_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyih,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyih_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vtmpyb_acc,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vtmpyb_acc_128B,"V64iV64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybus,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybus_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpybus_acc,"V32iV32iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpybus_acc_128B,"V64iV64iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vgth_xor,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgth_xor_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubhsat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubhsat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyubi_acc,"V32iV32iV32iiUIi","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyubi_acc_128B,"V64iV64iV64iiUIi","") +BUILTIN(__builtin_HEXAGON_V6_vabsw,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vabsw_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddwsat_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddwsat_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vlsrw,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vlsrw_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vabsh,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vabsh_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vlsrh,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vlsrh_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_valignb,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_valignb_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vsubhq,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubhq_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vpackoh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vpackoh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpybus_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpybus_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhvsat_acc,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhvsat_acc_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybv_acc,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybv_acc_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddhsat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddhsat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vcombine,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vcombine_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vandqrt_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vandqrt_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vaslhv,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaslhv_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vinsertwr,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vinsertwr_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vsubh_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubh_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vshuffb,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vshuffb_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vand,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vand_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhv,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhv_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhsuisat_acc,"V16iV16iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhsuisat_acc_128B,"V32iV32iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vsububsat_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsububsat_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vgtb_xor,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtb_xor_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdsaduh_acc,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdsaduh_acc_128B,"V64iV64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyub,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyub_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyuh_acc,"V32iV32iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyuh_acc_128B,"V64iV64iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vcl0h,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vcl0h_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhus_acc,"V32iV32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhus_acc_128B,"V64iV64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpybv_acc,"V32iV32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpybv_acc_128B,"V64iV64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vrsadubi,"V32iV32iiUIi","") +BUILTIN(__builtin_HEXAGON_V6_vrsadubi_128B,"V64iV64iiUIi","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_dv_acc,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_dv_acc_128B,"V64iV64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vshufeh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vshufeh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyewuh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyewuh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhsrs,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyhsrs_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpybus_dv_acc,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpybus_dv_acc_128B,"V64iV64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vaddubh,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddubh_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vasrwh,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrwh_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_ld0,"V16ii","") +BUILTIN(__builtin_HEXAGON_V6_ld0_128B,"V32ii","") +BUILTIN(__builtin_HEXAGON_V6_vpopcounth,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vpopcounth_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_ldnt0,"V16ii","") +BUILTIN(__builtin_HEXAGON_V6_ldnt0_128B,"V32ii","") +BUILTIN(__builtin_HEXAGON_V6_vgth_and,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgth_and_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddubsat_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddubsat_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vpackeh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vpackeh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyh,"V32iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyh_128B,"V64iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vminh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vminh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_pred_scalar2,"V16ii","") +BUILTIN(__builtin_HEXAGON_V6_pred_scalar2_128B,"V32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdealh,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vdealh_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vpackwh_sat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vpackwh_sat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaslh,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vaslh_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vgtuw_and,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuw_and_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vor,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vor_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vlutvvb,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vlutvvb_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiowh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiowh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vlutvvb_oracc,"V16iV16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vlutvvb_oracc_128B,"V32iV32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vandvrt,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vandvrt_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_veqh_xor,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_veqh_xor_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vadduhw,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vadduhw_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vcl0w,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vcl0w_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyihb,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyihb_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vtmpybus,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vtmpybus_128B,"V64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vd0,"V16i","") +BUILTIN(__builtin_HEXAGON_V6_vd0_128B,"V32i","") +BUILTIN(__builtin_HEXAGON_V6_veqh_or,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_veqh_or_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgtw_or,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtw_or_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpybus,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpybus_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vgtub_or,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtub_or_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpybus,"V32iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpybus_128B,"V64iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vandvrt_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vandvrt_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vassign,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vassign_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddwnq,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddwnq_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgtub_and,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtub_and_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_dv,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhb_dv_128B,"V64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vunpackb,"V32iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vunpackb_128B,"V64iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vunpackh,"V32iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vunpackh_128B,"V64iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpahb_acc,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpahb_acc_128B,"V64iV64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vaddbnq,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddbnq_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vlalignbi,"V16iV16iV16iUIi","") +BUILTIN(__builtin_HEXAGON_V6_vlalignbi_128B,"V32iV32iV32iUIi","") +BUILTIN(__builtin_HEXAGON_V6_vsatwh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsatwh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyihb_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyihb_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybusv_acc,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybusv_acc_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vrdelta,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vrdelta_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vroundwh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vroundwh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddw_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddw_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiwb_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiwb_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vsubbq,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubbq_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_veqh_and,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_veqh_and_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_valignbi,"V16iV16iV16iUIi","") +BUILTIN(__builtin_HEXAGON_V6_valignbi_128B,"V32iV32iV32iUIi","") +BUILTIN(__builtin_HEXAGON_V6_vaddwsat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddwsat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_veqw_and,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_veqw_and_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vabsdiffub,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vabsdiffub_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vshuffeb,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vshuffeb_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vabsdiffuh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vabsdiffuh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_veqw_xor,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_veqw_xor_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgth,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgth_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuw_xor,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuw_xor_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgtb,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtb_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgtw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtw_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubwq,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubwq_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vnot,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vnot_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgtb_or,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtb_or_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuw_or,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtuw_or_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddubsat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddubsat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmaxw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmaxw_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaslwv,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaslwv_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vabsw_sat,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vabsw_sat_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubwsat_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubwsat_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vroundhub,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vroundhub_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhisat_acc,"V16iV16iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhisat_acc_128B,"V32iV32iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpabus,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpabus_128B,"V64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vassignp,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vassignp_128B,"V64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_veqb,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_veqb_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsububh,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsububh_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_lvsplatw,"V16ii","") +BUILTIN(__builtin_HEXAGON_V6_lvsplatw_128B,"V32ii","") +BUILTIN(__builtin_HEXAGON_V6_vaddhnq,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddhnq_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhsusat,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhsusat_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_pred_not,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_pred_not_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vlutvwh_oracc,"V32iV32iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vlutvwh_oracc_128B,"V64iV64iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiewh_acc,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiewh_acc_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdealvdd,"V32iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vdealvdd_128B,"V64iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vavgw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vavgw_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhsusat_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vdmpyhsusat_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vgtw_xor,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vgtw_xor_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vtmpyhb_acc,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vtmpyhb_acc_128B,"V64iV64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vaddhw,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddhw_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddhq,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddhq_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyubv,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyubv_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyubi,"V32iV32iiUIi","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyubi_128B,"V64iV64iiUIi","") +BUILTIN(__builtin_HEXAGON_V6_vminw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vminw_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyubv_acc,"V32iV32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyubv_acc_128B,"V64iV64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_pred_xor,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_pred_xor_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_veqb_xor,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_veqb_xor_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiewuh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiewuh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpybusv_acc,"V32iV32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpybusv_acc_128B,"V64iV64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vavguhrnd,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vavguhrnd_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyowh_rnd,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyowh_rnd_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubwsat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubwsat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubuhw,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubuhw_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybusi_acc,"V32iV32iV32iiUIi","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybusi_acc_128B,"V64iV64iV64iiUIi","") +BUILTIN(__builtin_HEXAGON_V6_vasrw,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrw_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrh,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrh_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyuhv,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyuhv_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vasrhbrndsat,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrhbrndsat_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vsubuhsat_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubuhsat_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vabsdiffw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vabsdiffw_128B,"V32iV32iV32i","") + +// V62 HVX Instructions. + +BUILTIN(__builtin_HEXAGON_V6_vandnqrt_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vandnqrt_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vaddclbh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddclbh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyowh_64_acc,"V32iV32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyowh_64_acc_128B,"V64iV64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyewuh_64,"V32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyewuh_64_128B,"V64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsatuwuh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsatuwuh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_shuffeqh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_shuffeqh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_shuffeqw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_shuffeqw_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_ldcnpnt0,"V16iii","") +BUILTIN(__builtin_HEXAGON_V6_ldcnpnt0_128B,"V32iii","") +BUILTIN(__builtin_HEXAGON_V6_vsubcarry,"V16iV16iV16iv*","") +BUILTIN(__builtin_HEXAGON_V6_vsubcarry_128B,"V32iV32iV32iv*","") +BUILTIN(__builtin_HEXAGON_V6_vasrhbsat,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrhbsat_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vminb,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vminb_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vmpauhb_acc,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpauhb_acc_128B,"V64iV64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vaddhw_acc,"V32iV32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddhw_acc_128B,"V64iV64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vlsrb,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vlsrb_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vlutvwhi,"V32iV16iV16iUIi","") +BUILTIN(__builtin_HEXAGON_V6_vlutvwhi_128B,"V64iV32iV32iUIi","") +BUILTIN(__builtin_HEXAGON_V6_vaddububb_sat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddububb_sat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubbsat_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubbsat_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_ldtp0,"V16iii","") +BUILTIN(__builtin_HEXAGON_V6_ldtp0_128B,"V32iii","") +BUILTIN(__builtin_HEXAGON_V6_vlutvvb_oracci,"V16iV16iV16iV16iUIi","") +BUILTIN(__builtin_HEXAGON_V6_vlutvvb_oracci_128B,"V32iV32iV32iV32iUIi","") +BUILTIN(__builtin_HEXAGON_V6_vsubuwsat_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsubuwsat_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_ldpnt0,"V16iii","") +BUILTIN(__builtin_HEXAGON_V6_ldpnt0_128B,"V32iii","") +BUILTIN(__builtin_HEXAGON_V6_vandvnqv,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vandvnqv_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_lvsplatb,"V16ii","") +BUILTIN(__builtin_HEXAGON_V6_lvsplatb_128B,"V32ii","") +BUILTIN(__builtin_HEXAGON_V6_lvsplath,"V16ii","") +BUILTIN(__builtin_HEXAGON_V6_lvsplath_128B,"V32ii","") +BUILTIN(__builtin_HEXAGON_V6_ldtpnt0,"V16iii","") +BUILTIN(__builtin_HEXAGON_V6_ldtpnt0_128B,"V32iii","") +BUILTIN(__builtin_HEXAGON_V6_vlutvwh_nm,"V32iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vlutvwh_nm_128B,"V64iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_ldnpnt0,"V16iii","") +BUILTIN(__builtin_HEXAGON_V6_ldnpnt0_128B,"V32iii","") +BUILTIN(__builtin_HEXAGON_V6_vmpauhb,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpauhb_128B,"V64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_ldtnp0,"V16iii","") +BUILTIN(__builtin_HEXAGON_V6_ldtnp0_128B,"V32iii","") +BUILTIN(__builtin_HEXAGON_V6_vrounduhub,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vrounduhub_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vadduhw_acc,"V32iV32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vadduhw_acc_128B,"V64iV64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_ldcp0,"V16iii","") +BUILTIN(__builtin_HEXAGON_V6_ldcp0_128B,"V32iii","") +BUILTIN(__builtin_HEXAGON_V6_vadduwsat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vadduwsat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_ldtnpnt0,"V16iii","") +BUILTIN(__builtin_HEXAGON_V6_ldtnpnt0_128B,"V32iii","") +BUILTIN(__builtin_HEXAGON_V6_vaddbsat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddbsat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vandnqrt,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vandnqrt_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiwub_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiwub_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmaxb,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vmaxb_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vandvqv,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vandvqv_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddcarry,"V16iV16iV16iv*","") +BUILTIN(__builtin_HEXAGON_V6_vaddcarry_128B,"V32iV32iV32iv*","") +BUILTIN(__builtin_HEXAGON_V6_vasrwuhrndsat,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrwuhrndsat_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vlutvvbi,"V16iV16iV16iUIi","") +BUILTIN(__builtin_HEXAGON_V6_vlutvvbi_128B,"V32iV32iV32iUIi","") +BUILTIN(__builtin_HEXAGON_V6_vsubuwsat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubuwsat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddbsat_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddbsat_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_ldnp0,"V16iii","") +BUILTIN(__builtin_HEXAGON_V6_ldnp0_128B,"V32iii","") +BUILTIN(__builtin_HEXAGON_V6_vasruwuhrndsat,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasruwuhrndsat_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vrounduwuh,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vrounduwuh_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vlutvvb_nm,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vlutvvb_nm_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_pred_scalar2v2,"V16ii","") +BUILTIN(__builtin_HEXAGON_V6_pred_scalar2v2_128B,"V32ii","") +BUILTIN(__builtin_HEXAGON_V6_ldp0,"V16iii","") +BUILTIN(__builtin_HEXAGON_V6_ldp0_128B,"V32iii","") +BUILTIN(__builtin_HEXAGON_V6_vaddubh_acc,"V32iV32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddubh_acc_128B,"V64iV64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaddclbw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddclbw_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_ldcpnt0,"V16iii","") +BUILTIN(__builtin_HEXAGON_V6_ldcpnt0_128B,"V32iii","") +BUILTIN(__builtin_HEXAGON_V6_vadduwsat_dv,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vadduwsat_dv_128B,"V64iV64iV64i","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiwub,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyiwub_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vsubububb_sat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubububb_sat_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_ldcnp0,"V16iii","") +BUILTIN(__builtin_HEXAGON_V6_ldcnp0_128B,"V32iii","") +BUILTIN(__builtin_HEXAGON_V6_vlutvwh_oracci,"V32iV32iV16iV16iUIi","") +BUILTIN(__builtin_HEXAGON_V6_vlutvwh_oracci_128B,"V64iV64iV32iV32iUIi","") +BUILTIN(__builtin_HEXAGON_V6_vsubbsat,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsubbsat_128B,"V32iV32iV32i","") + +// V65 HVX Instructions. + +BUILTIN(__builtin_HEXAGON_V6_vasruhubrndsat,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasruhubrndsat_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybub_rtt,"V32iV16iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybub_rtt_128B,"V64iV32iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vmpahhsat,"V16iV16iV16iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vmpahhsat_128B,"V32iV32iV32iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vavguwrnd,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vavguwrnd_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vnavgb,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vnavgb_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vasrh_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasrh_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpauhuhsat,"V16iV16iV16iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vmpauhuhsat_128B,"V32iV32iV32iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vmpyh_acc,"V32iV32iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyh_acc_128B,"V64iV64iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybub_rtt_acc,"V32iV32iV16iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vrmpybub_rtt_acc_128B,"V64iV64iV32iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vavgb,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vavgb_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vaslh_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vaslh_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vavguw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vavguw_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vlut4,"V16iV16iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vlut4_128B,"V32iV32iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vmpyuhe_acc,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyuhe_acc_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyub_rtt,"V32iV16iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyub_rtt_128B,"V64iV32iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vmpsuhuhsat,"V16iV16iV16iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vmpsuhuhsat_128B,"V32iV32iV32iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vasruhubsat,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasruhubsat_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyuhe,"V16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpyuhe_128B,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyub_rtt_acc,"V32iV32iV16iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vrmpyub_rtt_acc_128B,"V64iV64iV32iLLi","") +BUILTIN(__builtin_HEXAGON_V6_vasruwuhsat,"V16iV16iV16ii","") +BUILTIN(__builtin_HEXAGON_V6_vasruwuhsat_128B,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpabuu_acc,"V32iV32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpabuu_acc_128B,"V64iV64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vprefixqw,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vprefixqw_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vprefixqh,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vprefixqh_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vprefixqb,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vprefixqb_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vabsb,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vabsb_128B,"V32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vavgbrnd,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vavgbrnd_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vdd0,"V32i","") +BUILTIN(__builtin_HEXAGON_V6_vdd0_128B,"V64i","") +BUILTIN(__builtin_HEXAGON_V6_vmpabuu,"V32iV32ii","") +BUILTIN(__builtin_HEXAGON_V6_vmpabuu_128B,"V64iV64ii","") +BUILTIN(__builtin_HEXAGON_V6_vabsb_sat,"V16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vabsb_sat_128B,"V32iV32i","") + +// V66 HVX Instructions. + +BUILTIN(__builtin_HEXAGON_V6_vaddcarrysat,"V16iV16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vaddcarrysat_128B,"V32iV32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vasr_into,"V32iV32iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vasr_into_128B,"V64iV64iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vsatdw,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vsatdw_128B,"V32iV32iV32i","") +BUILTIN(__builtin_HEXAGON_V6_vrotr,"V16iV16iV16i","") +BUILTIN(__builtin_HEXAGON_V6_vrotr_128B,"V32iV32iV32i","") + +#undef BUILTIN diff --git a/clang-r353983/include/clang/Basic/BuiltinsLe64.def b/clang-r353983/include/clang/Basic/BuiltinsLe64.def new file mode 100644 index 00000000..776492cd --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsLe64.def @@ -0,0 +1,18 @@ +//==- BuiltinsLe64.def - Le64 Builtin function database ----------*- C++ -*-==// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the Le64-specific builtin function database. Users of this +// file must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// The format of this database matches clang/Basic/Builtins.def. + +BUILTIN(__clear_cache, "vv*v*", "i") + +#undef BUILTIN diff --git a/clang-r353983/include/clang/Basic/BuiltinsMips.def b/clang-r353983/include/clang/Basic/BuiltinsMips.def new file mode 100644 index 00000000..9ac75b7a --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsMips.def @@ -0,0 +1,899 @@ +//===-- BuiltinsMips.def - Mips Builtin function database --------*- C++ -*-==// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the MIPS-specific builtin function database. Users of +// this file must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// The format of this database matches clang/Basic/Builtins.def. + +// MIPS DSP Rev 1 + +// Add/subtract with optional saturation +BUILTIN(__builtin_mips_addu_qb, "V4ScV4ScV4Sc", "n") +BUILTIN(__builtin_mips_addu_s_qb, "V4ScV4ScV4Sc", "n") +BUILTIN(__builtin_mips_subu_qb, "V4ScV4ScV4Sc", "n") +BUILTIN(__builtin_mips_subu_s_qb, "V4ScV4ScV4Sc", "n") + +BUILTIN(__builtin_mips_addq_ph, "V2sV2sV2s", "n") +BUILTIN(__builtin_mips_addq_s_ph, "V2sV2sV2s", "n") +BUILTIN(__builtin_mips_subq_ph, "V2sV2sV2s", "n") +BUILTIN(__builtin_mips_subq_s_ph, "V2sV2sV2s", "n") + +BUILTIN(__builtin_mips_madd, "LLiLLiii", "nc") +BUILTIN(__builtin_mips_maddu, "LLiLLiUiUi", "nc") +BUILTIN(__builtin_mips_msub, "LLiLLiii", "nc") +BUILTIN(__builtin_mips_msubu, "LLiLLiUiUi", "nc") + +BUILTIN(__builtin_mips_addq_s_w, "iii", "n") +BUILTIN(__builtin_mips_subq_s_w, "iii", "n") + +BUILTIN(__builtin_mips_addsc, "iii", "n") +BUILTIN(__builtin_mips_addwc, "iii", "n") + +BUILTIN(__builtin_mips_modsub, "iii", "nc") + +BUILTIN(__builtin_mips_raddu_w_qb, "iV4Sc", "nc") + +BUILTIN(__builtin_mips_absq_s_ph, "V2sV2s", "n") +BUILTIN(__builtin_mips_absq_s_w, "ii", "n") + +BUILTIN(__builtin_mips_precrq_qb_ph, "V4ScV2sV2s", "nc") +BUILTIN(__builtin_mips_precrqu_s_qb_ph, "V4ScV2sV2s", "n") +BUILTIN(__builtin_mips_precrq_ph_w, "V2sii", "nc") +BUILTIN(__builtin_mips_precrq_rs_ph_w, "V2sii", "n") +BUILTIN(__builtin_mips_preceq_w_phl, "iV2s", "nc") +BUILTIN(__builtin_mips_preceq_w_phr, "iV2s", "nc") +BUILTIN(__builtin_mips_precequ_ph_qbl, "V2sV4Sc", "nc") +BUILTIN(__builtin_mips_precequ_ph_qbr, "V2sV4Sc", "nc") +BUILTIN(__builtin_mips_precequ_ph_qbla, "V2sV4Sc", "nc") +BUILTIN(__builtin_mips_precequ_ph_qbra, "V2sV4Sc", "nc") +BUILTIN(__builtin_mips_preceu_ph_qbl, "V2sV4Sc", "nc") +BUILTIN(__builtin_mips_preceu_ph_qbr, "V2sV4Sc", "nc") +BUILTIN(__builtin_mips_preceu_ph_qbla, "V2sV4Sc", "nc") +BUILTIN(__builtin_mips_preceu_ph_qbra, "V2sV4Sc", "nc") + +BUILTIN(__builtin_mips_shll_qb, "V4ScV4Sci", "n") +BUILTIN(__builtin_mips_shrl_qb, "V4ScV4Sci", "nc") +BUILTIN(__builtin_mips_shll_ph, "V2sV2si", "n") +BUILTIN(__builtin_mips_shll_s_ph, "V2sV2si", "n") +BUILTIN(__builtin_mips_shra_ph, "V2sV2si", "nc") +BUILTIN(__builtin_mips_shra_r_ph, "V2sV2si", "nc") +BUILTIN(__builtin_mips_shll_s_w, "iii", "n") +BUILTIN(__builtin_mips_shra_r_w, "iii", "nc") +BUILTIN(__builtin_mips_shilo, "LLiLLii", "nc") + +BUILTIN(__builtin_mips_muleu_s_ph_qbl, "V2sV4ScV2s", "n") +BUILTIN(__builtin_mips_muleu_s_ph_qbr, "V2sV4ScV2s", "n") +BUILTIN(__builtin_mips_mulq_rs_ph, "V2sV2sV2s", "n") +BUILTIN(__builtin_mips_muleq_s_w_phl, "iV2sV2s", "n") +BUILTIN(__builtin_mips_muleq_s_w_phr, "iV2sV2s", "n") +BUILTIN(__builtin_mips_mulsaq_s_w_ph, "LLiLLiV2sV2s", "n") +BUILTIN(__builtin_mips_maq_s_w_phl, "LLiLLiV2sV2s", "n") +BUILTIN(__builtin_mips_maq_s_w_phr, "LLiLLiV2sV2s", "n") +BUILTIN(__builtin_mips_maq_sa_w_phl, "LLiLLiV2sV2s", "n") +BUILTIN(__builtin_mips_maq_sa_w_phr, "LLiLLiV2sV2s", "n") +BUILTIN(__builtin_mips_mult, "LLiii", "nc") +BUILTIN(__builtin_mips_multu, "LLiUiUi", "nc") + +BUILTIN(__builtin_mips_dpau_h_qbl, "LLiLLiV4ScV4Sc", "nc") +BUILTIN(__builtin_mips_dpau_h_qbr, "LLiLLiV4ScV4Sc", "nc") +BUILTIN(__builtin_mips_dpsu_h_qbl, "LLiLLiV4ScV4Sc", "nc") +BUILTIN(__builtin_mips_dpsu_h_qbr, "LLiLLiV4ScV4Sc", "nc") +BUILTIN(__builtin_mips_dpaq_s_w_ph, "LLiLLiV2sV2s", "n") +BUILTIN(__builtin_mips_dpsq_s_w_ph, "LLiLLiV2sV2s", "n") +BUILTIN(__builtin_mips_dpaq_sa_l_w, "LLiLLiii", "n") +BUILTIN(__builtin_mips_dpsq_sa_l_w, "LLiLLiii", "n") + +BUILTIN(__builtin_mips_cmpu_eq_qb, "vV4ScV4Sc", "n") +BUILTIN(__builtin_mips_cmpu_lt_qb, "vV4ScV4Sc", "n") +BUILTIN(__builtin_mips_cmpu_le_qb, "vV4ScV4Sc", "n") +BUILTIN(__builtin_mips_cmpgu_eq_qb, "iV4ScV4Sc", "n") +BUILTIN(__builtin_mips_cmpgu_lt_qb, "iV4ScV4Sc", "n") +BUILTIN(__builtin_mips_cmpgu_le_qb, "iV4ScV4Sc", "n") +BUILTIN(__builtin_mips_cmp_eq_ph, "vV2sV2s", "n") +BUILTIN(__builtin_mips_cmp_lt_ph, "vV2sV2s", "n") +BUILTIN(__builtin_mips_cmp_le_ph, "vV2sV2s", "n") + +BUILTIN(__builtin_mips_extr_s_h, "iLLii", "n") +BUILTIN(__builtin_mips_extr_w, "iLLii", "n") +BUILTIN(__builtin_mips_extr_rs_w, "iLLii", "n") +BUILTIN(__builtin_mips_extr_r_w, "iLLii", "n") +BUILTIN(__builtin_mips_extp, "iLLii", "n") +BUILTIN(__builtin_mips_extpdp, "iLLii", "n") + +BUILTIN(__builtin_mips_wrdsp, "viIi", "n") +BUILTIN(__builtin_mips_rddsp, "iIi", "n") +BUILTIN(__builtin_mips_insv, "iii", "n") +BUILTIN(__builtin_mips_bitrev, "ii", "nc") +BUILTIN(__builtin_mips_packrl_ph, "V2sV2sV2s", "nc") +BUILTIN(__builtin_mips_repl_qb, "V4Sci", "nc") +BUILTIN(__builtin_mips_repl_ph, "V2si", "nc") +BUILTIN(__builtin_mips_pick_qb, "V4ScV4ScV4Sc", "n") +BUILTIN(__builtin_mips_pick_ph, "V2sV2sV2s", "n") +BUILTIN(__builtin_mips_mthlip, "LLiLLii", "n") +BUILTIN(__builtin_mips_bposge32, "i", "n") +BUILTIN(__builtin_mips_lbux, "iv*i", "n") +BUILTIN(__builtin_mips_lhx, "iv*i", "n") +BUILTIN(__builtin_mips_lwx, "iv*i", "n") + +// MIPS DSP Rev 2 + +BUILTIN(__builtin_mips_absq_s_qb, "V4ScV4Sc", "n") + +BUILTIN(__builtin_mips_addqh_ph, "V2sV2sV2s", "nc") +BUILTIN(__builtin_mips_addqh_r_ph, "V2sV2sV2s", "nc") +BUILTIN(__builtin_mips_addqh_w, "iii", "nc") +BUILTIN(__builtin_mips_addqh_r_w, "iii", "nc") + +BUILTIN(__builtin_mips_addu_ph, "V2sV2sV2s", "n") +BUILTIN(__builtin_mips_addu_s_ph, "V2sV2sV2s", "n") + +BUILTIN(__builtin_mips_adduh_qb, "V4ScV4ScV4Sc", "nc") +BUILTIN(__builtin_mips_adduh_r_qb, "V4ScV4ScV4Sc", "nc") + +BUILTIN(__builtin_mips_append, "iiiIi", "nc") +BUILTIN(__builtin_mips_balign, "iiiIi", "nc") + +BUILTIN(__builtin_mips_cmpgdu_eq_qb, "iV4ScV4Sc", "n") +BUILTIN(__builtin_mips_cmpgdu_lt_qb, "iV4ScV4Sc", "n") +BUILTIN(__builtin_mips_cmpgdu_le_qb, "iV4ScV4Sc", "n") + +BUILTIN(__builtin_mips_dpa_w_ph, "LLiLLiV2sV2s", "nc") +BUILTIN(__builtin_mips_dps_w_ph, "LLiLLiV2sV2s", "nc") + +BUILTIN(__builtin_mips_dpaqx_s_w_ph, "LLiLLiV2sV2s", "n") +BUILTIN(__builtin_mips_dpaqx_sa_w_ph, "LLiLLiV2sV2s", "n") +BUILTIN(__builtin_mips_dpax_w_ph, "LLiLLiV2sV2s", "nc") +BUILTIN(__builtin_mips_dpsx_w_ph, "LLiLLiV2sV2s", "nc") +BUILTIN(__builtin_mips_dpsqx_s_w_ph, "LLiLLiV2sV2s", "n") +BUILTIN(__builtin_mips_dpsqx_sa_w_ph, "LLiLLiV2sV2s", "n") + +BUILTIN(__builtin_mips_mul_ph, "V2sV2sV2s", "n") +BUILTIN(__builtin_mips_mul_s_ph, "V2sV2sV2s", "n") + +BUILTIN(__builtin_mips_mulq_rs_w, "iii", "n") +BUILTIN(__builtin_mips_mulq_s_ph, "V2sV2sV2s", "n") +BUILTIN(__builtin_mips_mulq_s_w, "iii", "n") +BUILTIN(__builtin_mips_mulsa_w_ph, "LLiLLiV2sV2s", "nc") + +BUILTIN(__builtin_mips_precr_qb_ph, "V4ScV2sV2s", "n") +BUILTIN(__builtin_mips_precr_sra_ph_w, "V2siiIi", "nc") +BUILTIN(__builtin_mips_precr_sra_r_ph_w, "V2siiIi", "nc") + +BUILTIN(__builtin_mips_prepend, "iiiIi", "nc") + +BUILTIN(__builtin_mips_shra_qb, "V4ScV4Sci", "nc") +BUILTIN(__builtin_mips_shra_r_qb, "V4ScV4Sci", "nc") +BUILTIN(__builtin_mips_shrl_ph, "V2sV2si", "nc") + +BUILTIN(__builtin_mips_subqh_ph, "V2sV2sV2s", "nc") +BUILTIN(__builtin_mips_subqh_r_ph, "V2sV2sV2s", "nc") +BUILTIN(__builtin_mips_subqh_w, "iii", "nc") +BUILTIN(__builtin_mips_subqh_r_w, "iii", "nc") + +BUILTIN(__builtin_mips_subu_ph, "V2sV2sV2s", "n") +BUILTIN(__builtin_mips_subu_s_ph, "V2sV2sV2s", "n") + +BUILTIN(__builtin_mips_subuh_qb, "V4ScV4ScV4Sc", "nc") +BUILTIN(__builtin_mips_subuh_r_qb, "V4ScV4ScV4Sc", "nc") + +// MIPS MSA + +BUILTIN(__builtin_msa_add_a_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_add_a_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_add_a_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_add_a_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_adds_a_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_adds_a_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_adds_a_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_adds_a_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_adds_s_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_adds_s_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_adds_s_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_adds_s_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_adds_u_b, "V16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_adds_u_h, "V8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_adds_u_w, "V4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_adds_u_d, "V2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_addv_b, "V16cV16cV16c", "nc") +BUILTIN(__builtin_msa_addv_h, "V8sV8sV8s", "nc") +BUILTIN(__builtin_msa_addv_w, "V4iV4iV4i", "nc") +BUILTIN(__builtin_msa_addv_d, "V2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_addvi_b, "V16cV16cIUi", "nc") +BUILTIN(__builtin_msa_addvi_h, "V8sV8sIUi", "nc") +BUILTIN(__builtin_msa_addvi_w, "V4iV4iIUi", "nc") +BUILTIN(__builtin_msa_addvi_d, "V2LLiV2LLiIUi", "nc") + +BUILTIN(__builtin_msa_and_v, "V16UcV16UcV16Uc", "nc") + +BUILTIN(__builtin_msa_andi_b, "V16UcV16UcIUi", "nc") + +BUILTIN(__builtin_msa_asub_s_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_asub_s_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_asub_s_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_asub_s_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_asub_u_b, "V16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_asub_u_h, "V8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_asub_u_w, "V4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_asub_u_d, "V2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_ave_s_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_ave_s_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_ave_s_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_ave_s_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_ave_u_b, "V16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_ave_u_h, "V8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_ave_u_w, "V4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_ave_u_d, "V2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_aver_s_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_aver_s_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_aver_s_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_aver_s_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_aver_u_b, "V16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_aver_u_h, "V8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_aver_u_w, "V4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_aver_u_d, "V2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_bclr_b, "V16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_bclr_h, "V8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_bclr_w, "V4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_bclr_d, "V2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_bclri_b, "V16UcV16UcIUi", "nc") +BUILTIN(__builtin_msa_bclri_h, "V8UsV8UsIUi", "nc") +BUILTIN(__builtin_msa_bclri_w, "V4UiV4UiIUi", "nc") +BUILTIN(__builtin_msa_bclri_d, "V2ULLiV2ULLiIUi", "nc") + +BUILTIN(__builtin_msa_binsl_b, "V16UcV16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_binsl_h, "V8UsV8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_binsl_w, "V4UiV4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_binsl_d, "V2ULLiV2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_binsli_b, "V16UcV16UcV16UcIUi", "nc") +BUILTIN(__builtin_msa_binsli_h, "V8UsV8UsV8UsIUi", "nc") +BUILTIN(__builtin_msa_binsli_w, "V4UiV4UiV4UiIUi", "nc") +BUILTIN(__builtin_msa_binsli_d, "V2ULLiV2ULLiV2ULLiIUi", "nc") + +BUILTIN(__builtin_msa_binsr_b, "V16UcV16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_binsr_h, "V8UsV8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_binsr_w, "V4UiV4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_binsr_d, "V2ULLiV2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_binsri_b, "V16UcV16UcV16UcIUi", "nc") +BUILTIN(__builtin_msa_binsri_h, "V8UsV8UsV8UsIUi", "nc") +BUILTIN(__builtin_msa_binsri_w, "V4UiV4UiV4UiIUi", "nc") +BUILTIN(__builtin_msa_binsri_d, "V2ULLiV2ULLiV2ULLiIUi", "nc") + +BUILTIN(__builtin_msa_bmnz_v, "V16UcV16UcV16UcV16Uc", "nc") + +BUILTIN(__builtin_msa_bmnzi_b, "V16UcV16UcV16UcIUi", "nc") + +BUILTIN(__builtin_msa_bmz_v, "V16UcV16UcV16UcV16Uc", "nc") + +BUILTIN(__builtin_msa_bmzi_b, "V16UcV16UcV16UcIUi", "nc") + +BUILTIN(__builtin_msa_bneg_b, "V16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_bneg_h, "V8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_bneg_w, "V4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_bneg_d, "V2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_bnegi_b, "V16UcV16UcIUi", "nc") +BUILTIN(__builtin_msa_bnegi_h, "V8UsV8UsIUi", "nc") +BUILTIN(__builtin_msa_bnegi_w, "V4UiV4UiIUi", "nc") +BUILTIN(__builtin_msa_bnegi_d, "V2ULLiV2ULLiIUi", "nc") + +BUILTIN(__builtin_msa_bnz_b, "iV16Uc", "nc") +BUILTIN(__builtin_msa_bnz_h, "iV8Us", "nc") +BUILTIN(__builtin_msa_bnz_w, "iV4Ui", "nc") +BUILTIN(__builtin_msa_bnz_d, "iV2ULLi", "nc") + +BUILTIN(__builtin_msa_bnz_v, "iV16Uc", "nc") + +BUILTIN(__builtin_msa_bsel_v, "V16UcV16UcV16UcV16Uc", "nc") + +BUILTIN(__builtin_msa_bseli_b, "V16UcV16UcV16UcIUi", "nc") + +BUILTIN(__builtin_msa_bset_b, "V16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_bset_h, "V8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_bset_w, "V4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_bset_d, "V2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_bseti_b, "V16UcV16UcIUi", "nc") +BUILTIN(__builtin_msa_bseti_h, "V8UsV8UsIUi", "nc") +BUILTIN(__builtin_msa_bseti_w, "V4UiV4UiIUi", "nc") +BUILTIN(__builtin_msa_bseti_d, "V2ULLiV2ULLiIUi", "nc") + +BUILTIN(__builtin_msa_bz_b, "iV16Uc", "nc") +BUILTIN(__builtin_msa_bz_h, "iV8Us", "nc") +BUILTIN(__builtin_msa_bz_w, "iV4Ui", "nc") +BUILTIN(__builtin_msa_bz_d, "iV2ULLi", "nc") + +BUILTIN(__builtin_msa_bz_v, "iV16Uc", "nc") + +BUILTIN(__builtin_msa_ceq_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_ceq_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_ceq_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_ceq_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_ceqi_b, "V16ScV16ScISi", "nc") +BUILTIN(__builtin_msa_ceqi_h, "V8SsV8SsISi", "nc") +BUILTIN(__builtin_msa_ceqi_w, "V4SiV4SiISi", "nc") +BUILTIN(__builtin_msa_ceqi_d, "V2SLLiV2SLLiISi", "nc") + +BUILTIN(__builtin_msa_cfcmsa, "iIi", "n") + +BUILTIN(__builtin_msa_cle_s_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_cle_s_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_cle_s_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_cle_s_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_cle_u_b, "V16ScV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_cle_u_h, "V8SsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_cle_u_w, "V4SiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_cle_u_d, "V2SLLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_clei_s_b, "V16ScV16ScISi", "nc") +BUILTIN(__builtin_msa_clei_s_h, "V8SsV8SsISi", "nc") +BUILTIN(__builtin_msa_clei_s_w, "V4SiV4SiISi", "nc") +BUILTIN(__builtin_msa_clei_s_d, "V2SLLiV2SLLiISi", "nc") + +BUILTIN(__builtin_msa_clei_u_b, "V16ScV16UcIUi", "nc") +BUILTIN(__builtin_msa_clei_u_h, "V8SsV8UsIUi", "nc") +BUILTIN(__builtin_msa_clei_u_w, "V4SiV4UiIUi", "nc") +BUILTIN(__builtin_msa_clei_u_d, "V2SLLiV2ULLiIUi", "nc") + +BUILTIN(__builtin_msa_clt_s_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_clt_s_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_clt_s_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_clt_s_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_clt_u_b, "V16ScV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_clt_u_h, "V8SsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_clt_u_w, "V4SiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_clt_u_d, "V2SLLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_clti_s_b, "V16ScV16ScISi", "nc") +BUILTIN(__builtin_msa_clti_s_h, "V8SsV8SsISi", "nc") +BUILTIN(__builtin_msa_clti_s_w, "V4SiV4SiISi", "nc") +BUILTIN(__builtin_msa_clti_s_d, "V2SLLiV2SLLiISi", "nc") + +BUILTIN(__builtin_msa_clti_u_b, "V16ScV16UcIUi", "nc") +BUILTIN(__builtin_msa_clti_u_h, "V8SsV8UsIUi", "nc") +BUILTIN(__builtin_msa_clti_u_w, "V4SiV4UiIUi", "nc") +BUILTIN(__builtin_msa_clti_u_d, "V2SLLiV2ULLiIUi", "nc") + +BUILTIN(__builtin_msa_copy_s_b, "iV16ScIUi", "nc") +BUILTIN(__builtin_msa_copy_s_h, "iV8SsIUi", "nc") +BUILTIN(__builtin_msa_copy_s_w, "iV4SiIUi", "nc") +BUILTIN(__builtin_msa_copy_s_d, "LLiV2SLLiIUi", "nc") + +BUILTIN(__builtin_msa_copy_u_b, "iV16UcIUi", "nc") +BUILTIN(__builtin_msa_copy_u_h, "iV8UsIUi", "nc") +BUILTIN(__builtin_msa_copy_u_w, "iV4UiIUi", "nc") +BUILTIN(__builtin_msa_copy_u_d, "LLiV2ULLiIUi", "nc") + +BUILTIN(__builtin_msa_ctcmsa, "vIii", "n") + +BUILTIN(__builtin_msa_div_s_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_div_s_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_div_s_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_div_s_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_div_u_b, "V16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_div_u_h, "V8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_div_u_w, "V4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_div_u_d, "V2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_dotp_s_h, "V8SsV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_dotp_s_w, "V4SiV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_dotp_s_d, "V2SLLiV4SiV4Si", "nc") + +BUILTIN(__builtin_msa_dotp_u_h, "V8UsV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_dotp_u_w, "V4UiV8UsV8Us", "nc") +BUILTIN(__builtin_msa_dotp_u_d, "V2ULLiV4UiV4Ui", "nc") + +BUILTIN(__builtin_msa_dpadd_s_h, "V8SsV8SsV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_dpadd_s_w, "V4SiV4SiV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_dpadd_s_d, "V2SLLiV2SLLiV4SiV4Si", "nc") + +BUILTIN(__builtin_msa_dpadd_u_h, "V8UsV8UsV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_dpadd_u_w, "V4UiV4UiV8UsV8Us", "nc") +BUILTIN(__builtin_msa_dpadd_u_d, "V2ULLiV2ULLiV4UiV4Ui", "nc") + +BUILTIN(__builtin_msa_dpsub_s_h, "V8SsV8SsV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_dpsub_s_w, "V4SiV4SiV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_dpsub_s_d, "V2SLLiV2SLLiV4SiV4Si", "nc") + +BUILTIN(__builtin_msa_dpsub_u_h, "V8UsV8UsV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_dpsub_u_w, "V4UiV4UiV8UsV8Us", "nc") +BUILTIN(__builtin_msa_dpsub_u_d, "V2ULLiV2ULLiV4UiV4Ui", "nc") + +BUILTIN(__builtin_msa_fadd_w, "V4fV4fV4f", "nc") +BUILTIN(__builtin_msa_fadd_d, "V2dV2dV2d", "nc") + +BUILTIN(__builtin_msa_fcaf_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fcaf_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fceq_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fceq_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fclass_w, "V4iV4f", "nc") +BUILTIN(__builtin_msa_fclass_d, "V2LLiV2d", "nc") + +BUILTIN(__builtin_msa_fcle_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fcle_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fclt_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fclt_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fcne_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fcne_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fcor_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fcor_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fcueq_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fcueq_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fcule_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fcule_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fcult_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fcult_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fcun_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fcun_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fcune_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fcune_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fdiv_w, "V4fV4fV4f", "nc") +BUILTIN(__builtin_msa_fdiv_d, "V2dV2dV2d", "nc") + +BUILTIN(__builtin_msa_fexdo_h, "V8hV4fV4f", "nc") +BUILTIN(__builtin_msa_fexdo_w, "V4fV2dV2d", "nc") + +BUILTIN(__builtin_msa_fexp2_w, "V4fV4fV4i", "nc") +BUILTIN(__builtin_msa_fexp2_d, "V2dV2dV2LLi", "nc") + +BUILTIN(__builtin_msa_fexupl_w, "V4fV8h", "nc") +BUILTIN(__builtin_msa_fexupl_d, "V2dV4f", "nc") + +BUILTIN(__builtin_msa_fexupr_w, "V4fV8h", "nc") +BUILTIN(__builtin_msa_fexupr_d, "V2dV4f", "nc") + +BUILTIN(__builtin_msa_ffint_s_w, "V4fV4Si", "nc") +BUILTIN(__builtin_msa_ffint_s_d, "V2dV2SLLi", "nc") + +BUILTIN(__builtin_msa_ffint_u_w, "V4fV4Ui", "nc") +BUILTIN(__builtin_msa_ffint_u_d, "V2dV2ULLi", "nc") + +// ffql uses integers since long _Fract is not implemented +BUILTIN(__builtin_msa_ffql_w, "V4fV8Ss", "nc") +BUILTIN(__builtin_msa_ffql_d, "V2dV4Si", "nc") + +// ffqr uses integers since long _Fract is not implemented +BUILTIN(__builtin_msa_ffqr_w, "V4fV8Ss", "nc") +BUILTIN(__builtin_msa_ffqr_d, "V2dV4Si", "nc") + +BUILTIN(__builtin_msa_fill_b, "V16Sci", "nc") +BUILTIN(__builtin_msa_fill_h, "V8Ssi", "nc") +BUILTIN(__builtin_msa_fill_w, "V4Sii", "nc") +BUILTIN(__builtin_msa_fill_d, "V2SLLiLLi", "nc") + +BUILTIN(__builtin_msa_flog2_w, "V4fV4f", "nc") +BUILTIN(__builtin_msa_flog2_d, "V2dV2d", "nc") + +BUILTIN(__builtin_msa_fmadd_w, "V4fV4fV4fV4f", "nc") +BUILTIN(__builtin_msa_fmadd_d, "V2dV2dV2dV2d", "nc") + +BUILTIN(__builtin_msa_fmax_w, "V4fV4fV4f", "nc") +BUILTIN(__builtin_msa_fmax_d, "V2dV2dV2d", "nc") + +BUILTIN(__builtin_msa_fmax_a_w, "V4fV4fV4f", "nc") +BUILTIN(__builtin_msa_fmax_a_d, "V2dV2dV2d", "nc") + +BUILTIN(__builtin_msa_fmin_w, "V4fV4fV4f", "nc") +BUILTIN(__builtin_msa_fmin_d, "V2dV2dV2d", "nc") + +BUILTIN(__builtin_msa_fmin_a_w, "V4fV4fV4f", "nc") +BUILTIN(__builtin_msa_fmin_a_d, "V2dV2dV2d", "nc") + +BUILTIN(__builtin_msa_fmsub_w, "V4fV4fV4fV4f", "nc") +BUILTIN(__builtin_msa_fmsub_d, "V2dV2dV2dV2d", "nc") + +BUILTIN(__builtin_msa_fmul_w, "V4fV4fV4f", "nc") +BUILTIN(__builtin_msa_fmul_d, "V2dV2dV2d", "nc") + +BUILTIN(__builtin_msa_frint_w, "V4fV4f", "nc") +BUILTIN(__builtin_msa_frint_d, "V2dV2d", "nc") + +BUILTIN(__builtin_msa_frcp_w, "V4fV4f", "nc") +BUILTIN(__builtin_msa_frcp_d, "V2dV2d", "nc") + +BUILTIN(__builtin_msa_frsqrt_w, "V4fV4f", "nc") +BUILTIN(__builtin_msa_frsqrt_d, "V2dV2d", "nc") + +BUILTIN(__builtin_msa_fsaf_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fsaf_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fseq_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fseq_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fsle_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fsle_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fslt_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fslt_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fsne_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fsne_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fsor_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fsor_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fsqrt_w, "V4fV4f", "nc") +BUILTIN(__builtin_msa_fsqrt_d, "V2dV2d", "nc") + +BUILTIN(__builtin_msa_fsub_w, "V4fV4fV4f", "nc") +BUILTIN(__builtin_msa_fsub_d, "V2dV2dV2d", "nc") + +BUILTIN(__builtin_msa_fsueq_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fsueq_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fsule_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fsule_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fsult_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fsult_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fsun_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fsun_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_fsune_w, "V4iV4fV4f", "nc") +BUILTIN(__builtin_msa_fsune_d, "V2LLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_ftint_s_w, "V4SiV4f", "nc") +BUILTIN(__builtin_msa_ftint_s_d, "V2SLLiV2d", "nc") + +BUILTIN(__builtin_msa_ftint_u_w, "V4UiV4f", "nc") +BUILTIN(__builtin_msa_ftint_u_d, "V2ULLiV2d", "nc") + +BUILTIN(__builtin_msa_ftq_h, "V4UiV4fV4f", "nc") +BUILTIN(__builtin_msa_ftq_w, "V2ULLiV2dV2d", "nc") + +BUILTIN(__builtin_msa_ftrunc_s_w, "V4SiV4f", "nc") +BUILTIN(__builtin_msa_ftrunc_s_d, "V2SLLiV2d", "nc") + +BUILTIN(__builtin_msa_ftrunc_u_w, "V4UiV4f", "nc") +BUILTIN(__builtin_msa_ftrunc_u_d, "V2ULLiV2d", "nc") + +BUILTIN(__builtin_msa_hadd_s_h, "V8SsV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_hadd_s_w, "V4SiV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_hadd_s_d, "V2SLLiV4SiV4Si", "nc") + +BUILTIN(__builtin_msa_hadd_u_h, "V8UsV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_hadd_u_w, "V4UiV8UsV8Us", "nc") +BUILTIN(__builtin_msa_hadd_u_d, "V2ULLiV4UiV4Ui", "nc") + +BUILTIN(__builtin_msa_hsub_s_h, "V8SsV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_hsub_s_w, "V4SiV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_hsub_s_d, "V2SLLiV4SiV4Si", "nc") + +BUILTIN(__builtin_msa_hsub_u_h, "V8UsV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_hsub_u_w, "V4UiV8UsV8Us", "nc") +BUILTIN(__builtin_msa_hsub_u_d, "V2ULLiV4UiV4Ui", "nc") + +BUILTIN(__builtin_msa_ilvev_b, "V16cV16cV16c", "nc") +BUILTIN(__builtin_msa_ilvev_h, "V8sV8sV8s", "nc") +BUILTIN(__builtin_msa_ilvev_w, "V4iV4iV4i", "nc") +BUILTIN(__builtin_msa_ilvev_d, "V2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_ilvl_b, "V16cV16cV16c", "nc") +BUILTIN(__builtin_msa_ilvl_h, "V8sV8sV8s", "nc") +BUILTIN(__builtin_msa_ilvl_w, "V4iV4iV4i", "nc") +BUILTIN(__builtin_msa_ilvl_d, "V2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_ilvod_b, "V16cV16cV16c", "nc") +BUILTIN(__builtin_msa_ilvod_h, "V8sV8sV8s", "nc") +BUILTIN(__builtin_msa_ilvod_w, "V4iV4iV4i", "nc") +BUILTIN(__builtin_msa_ilvod_d, "V2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_ilvr_b, "V16cV16cV16c", "nc") +BUILTIN(__builtin_msa_ilvr_h, "V8sV8sV8s", "nc") +BUILTIN(__builtin_msa_ilvr_w, "V4iV4iV4i", "nc") +BUILTIN(__builtin_msa_ilvr_d, "V2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_insert_b, "V16ScV16ScIUii", "nc") +BUILTIN(__builtin_msa_insert_h, "V8SsV8SsIUii", "nc") +BUILTIN(__builtin_msa_insert_w, "V4SiV4SiIUii", "nc") +BUILTIN(__builtin_msa_insert_d, "V2SLLiV2SLLiIUiLLi", "nc") + +BUILTIN(__builtin_msa_insve_b, "V16ScV16ScIUiV16Sc", "nc") +BUILTIN(__builtin_msa_insve_h, "V8SsV8SsIUiV8Ss", "nc") +BUILTIN(__builtin_msa_insve_w, "V4SiV4SiIUiV4Si", "nc") +BUILTIN(__builtin_msa_insve_d, "V2SLLiV2SLLiIUiV2SLLi", "nc") + +BUILTIN(__builtin_msa_ld_b, "V16Scv*Ii", "nc") +BUILTIN(__builtin_msa_ld_h, "V8Ssv*Ii", "nc") +BUILTIN(__builtin_msa_ld_w, "V4Siv*Ii", "nc") +BUILTIN(__builtin_msa_ld_d, "V2SLLiv*Ii", "nc") + +BUILTIN(__builtin_msa_ldi_b, "V16cIi", "nc") +BUILTIN(__builtin_msa_ldi_h, "V8sIi", "nc") +BUILTIN(__builtin_msa_ldi_w, "V4iIi", "nc") +BUILTIN(__builtin_msa_ldi_d, "V2LLiIi", "nc") + +BUILTIN(__builtin_msa_madd_q_h, "V8SsV8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_madd_q_w, "V4SiV4SiV4SiV4Si", "nc") + +BUILTIN(__builtin_msa_maddr_q_h, "V8SsV8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_maddr_q_w, "V4SiV4SiV4SiV4Si", "nc") + +BUILTIN(__builtin_msa_maddv_b, "V16ScV16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_maddv_h, "V8SsV8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_maddv_w, "V4SiV4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_maddv_d, "V2SLLiV2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_max_a_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_max_a_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_max_a_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_max_a_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_max_s_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_max_s_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_max_s_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_max_s_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_max_u_b, "V16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_max_u_h, "V8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_max_u_w, "V4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_max_u_d, "V2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_maxi_s_b, "V16ScV16ScIi", "nc") +BUILTIN(__builtin_msa_maxi_s_h, "V8SsV8SsIi", "nc") +BUILTIN(__builtin_msa_maxi_s_w, "V4SiV4SiIi", "nc") +BUILTIN(__builtin_msa_maxi_s_d, "V2SLLiV2SLLiIi", "nc") + +BUILTIN(__builtin_msa_maxi_u_b, "V16UcV16UcIi", "nc") +BUILTIN(__builtin_msa_maxi_u_h, "V8UsV8UsIi", "nc") +BUILTIN(__builtin_msa_maxi_u_w, "V4UiV4UiIi", "nc") +BUILTIN(__builtin_msa_maxi_u_d, "V2ULLiV2ULLiIi", "nc") + +BUILTIN(__builtin_msa_min_a_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_min_a_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_min_a_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_min_a_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_min_s_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_min_s_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_min_s_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_min_s_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_min_u_b, "V16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_min_u_h, "V8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_min_u_w, "V4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_min_u_d, "V2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_mini_s_b, "V16ScV16ScIi", "nc") +BUILTIN(__builtin_msa_mini_s_h, "V8SsV8SsIi", "nc") +BUILTIN(__builtin_msa_mini_s_w, "V4SiV4SiIi", "nc") +BUILTIN(__builtin_msa_mini_s_d, "V2SLLiV2SLLiIi", "nc") + +BUILTIN(__builtin_msa_mini_u_b, "V16UcV16UcIi", "nc") +BUILTIN(__builtin_msa_mini_u_h, "V8UsV8UsIi", "nc") +BUILTIN(__builtin_msa_mini_u_w, "V4UiV4UiIi", "nc") +BUILTIN(__builtin_msa_mini_u_d, "V2ULLiV2ULLiIi", "nc") + +BUILTIN(__builtin_msa_mod_s_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_mod_s_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_mod_s_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_mod_s_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_mod_u_b, "V16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_mod_u_h, "V8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_mod_u_w, "V4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_mod_u_d, "V2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_move_v, "V16ScV16Sc", "nc") + +BUILTIN(__builtin_msa_msub_q_h, "V8SsV8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_msub_q_w, "V4SiV4SiV4SiV4Si", "nc") + +BUILTIN(__builtin_msa_msubr_q_h, "V8SsV8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_msubr_q_w, "V4SiV4SiV4SiV4Si", "nc") + +BUILTIN(__builtin_msa_msubv_b, "V16ScV16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_msubv_h, "V8SsV8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_msubv_w, "V4SiV4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_msubv_d, "V2SLLiV2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_mul_q_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_mul_q_w, "V4SiV4SiV4Si", "nc") + +BUILTIN(__builtin_msa_mulr_q_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_mulr_q_w, "V4SiV4SiV4Si", "nc") + +BUILTIN(__builtin_msa_mulv_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_mulv_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_mulv_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_mulv_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_nloc_b, "V16ScV16Sc", "nc") +BUILTIN(__builtin_msa_nloc_h, "V8SsV8Ss", "nc") +BUILTIN(__builtin_msa_nloc_w, "V4SiV4Si", "nc") +BUILTIN(__builtin_msa_nloc_d, "V2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_nlzc_b, "V16ScV16Sc", "nc") +BUILTIN(__builtin_msa_nlzc_h, "V8SsV8Ss", "nc") +BUILTIN(__builtin_msa_nlzc_w, "V4SiV4Si", "nc") +BUILTIN(__builtin_msa_nlzc_d, "V2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_nor_v, "V16UcV16UcV16Uc", "nc") + +BUILTIN(__builtin_msa_nori_b, "V16UcV16cIUi", "nc") + +BUILTIN(__builtin_msa_or_v, "V16UcV16UcV16Uc", "nc") + +BUILTIN(__builtin_msa_ori_b, "V16UcV16UcIUi", "nc") + +BUILTIN(__builtin_msa_pckev_b, "V16cV16cV16c", "nc") +BUILTIN(__builtin_msa_pckev_h, "V8sV8sV8s", "nc") +BUILTIN(__builtin_msa_pckev_w, "V4iV4iV4i", "nc") +BUILTIN(__builtin_msa_pckev_d, "V2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_pckod_b, "V16cV16cV16c", "nc") +BUILTIN(__builtin_msa_pckod_h, "V8sV8sV8s", "nc") +BUILTIN(__builtin_msa_pckod_w, "V4iV4iV4i", "nc") +BUILTIN(__builtin_msa_pckod_d, "V2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_pcnt_b, "V16ScV16Sc", "nc") +BUILTIN(__builtin_msa_pcnt_h, "V8SsV8Ss", "nc") +BUILTIN(__builtin_msa_pcnt_w, "V4SiV4Si", "nc") +BUILTIN(__builtin_msa_pcnt_d, "V2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_sat_s_b, "V16ScV16ScIUi", "nc") +BUILTIN(__builtin_msa_sat_s_h, "V8SsV8SsIUi", "nc") +BUILTIN(__builtin_msa_sat_s_w, "V4SiV4SiIUi", "nc") +BUILTIN(__builtin_msa_sat_s_d, "V2SLLiV2SLLiIUi", "nc") + +BUILTIN(__builtin_msa_sat_u_b, "V16UcV16UcIUi", "nc") +BUILTIN(__builtin_msa_sat_u_h, "V8UsV8UsIUi", "nc") +BUILTIN(__builtin_msa_sat_u_w, "V4UiV4UiIUi", "nc") +BUILTIN(__builtin_msa_sat_u_d, "V2ULLiV2ULLiIUi", "nc") + +BUILTIN(__builtin_msa_shf_b, "V16cV16cIUi", "nc") +BUILTIN(__builtin_msa_shf_h, "V8sV8sIUi", "nc") +BUILTIN(__builtin_msa_shf_w, "V4iV4iIUi", "nc") + +BUILTIN(__builtin_msa_sld_b, "V16cV16cV16cUi", "nc") +BUILTIN(__builtin_msa_sld_h, "V8sV8sV8sUi", "nc") +BUILTIN(__builtin_msa_sld_w, "V4iV4iV4iUi", "nc") +BUILTIN(__builtin_msa_sld_d, "V2LLiV2LLiV2LLiUi", "nc") + +BUILTIN(__builtin_msa_sldi_b, "V16cV16cV16cIUi", "nc") +BUILTIN(__builtin_msa_sldi_h, "V8sV8sV8sIUi", "nc") +BUILTIN(__builtin_msa_sldi_w, "V4iV4iV4iIUi", "nc") +BUILTIN(__builtin_msa_sldi_d, "V2LLiV2LLiV2LLiIUi", "nc") + +BUILTIN(__builtin_msa_sll_b, "V16cV16cV16c", "nc") +BUILTIN(__builtin_msa_sll_h, "V8sV8sV8s", "nc") +BUILTIN(__builtin_msa_sll_w, "V4iV4iV4i", "nc") +BUILTIN(__builtin_msa_sll_d, "V2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_slli_b, "V16cV16cIUi", "nc") +BUILTIN(__builtin_msa_slli_h, "V8sV8sIUi", "nc") +BUILTIN(__builtin_msa_slli_w, "V4iV4iIUi", "nc") +BUILTIN(__builtin_msa_slli_d, "V2LLiV2LLiIUi", "nc") + +BUILTIN(__builtin_msa_splat_b, "V16cV16cUi", "nc") +BUILTIN(__builtin_msa_splat_h, "V8sV8sUi", "nc") +BUILTIN(__builtin_msa_splat_w, "V4iV4iUi", "nc") +BUILTIN(__builtin_msa_splat_d, "V2LLiV2LLiUi", "nc") + +BUILTIN(__builtin_msa_splati_b, "V16cV16cIUi", "nc") +BUILTIN(__builtin_msa_splati_h, "V8sV8sIUi", "nc") +BUILTIN(__builtin_msa_splati_w, "V4iV4iIUi", "nc") +BUILTIN(__builtin_msa_splati_d, "V2LLiV2LLiIUi", "nc") + +BUILTIN(__builtin_msa_sra_b, "V16cV16cV16c", "nc") +BUILTIN(__builtin_msa_sra_h, "V8sV8sV8s", "nc") +BUILTIN(__builtin_msa_sra_w, "V4iV4iV4i", "nc") +BUILTIN(__builtin_msa_sra_d, "V2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_srai_b, "V16cV16cIUi", "nc") +BUILTIN(__builtin_msa_srai_h, "V8sV8sIUi", "nc") +BUILTIN(__builtin_msa_srai_w, "V4iV4iIUi", "nc") +BUILTIN(__builtin_msa_srai_d, "V2LLiV2LLiIUi", "nc") + +BUILTIN(__builtin_msa_srar_b, "V16cV16cV16c", "nc") +BUILTIN(__builtin_msa_srar_h, "V8sV8sV8s", "nc") +BUILTIN(__builtin_msa_srar_w, "V4iV4iV4i", "nc") +BUILTIN(__builtin_msa_srar_d, "V2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_srari_b, "V16cV16cIUi", "nc") +BUILTIN(__builtin_msa_srari_h, "V8sV8sIUi", "nc") +BUILTIN(__builtin_msa_srari_w, "V4iV4iIUi", "nc") +BUILTIN(__builtin_msa_srari_d, "V2LLiV2LLiIUi", "nc") + +BUILTIN(__builtin_msa_srl_b, "V16cV16cV16c", "nc") +BUILTIN(__builtin_msa_srl_h, "V8sV8sV8s", "nc") +BUILTIN(__builtin_msa_srl_w, "V4iV4iV4i", "nc") +BUILTIN(__builtin_msa_srl_d, "V2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_srli_b, "V16cV16cIUi", "nc") +BUILTIN(__builtin_msa_srli_h, "V8sV8sIUi", "nc") +BUILTIN(__builtin_msa_srli_w, "V4iV4iIUi", "nc") +BUILTIN(__builtin_msa_srli_d, "V2LLiV2LLiIUi", "nc") + +BUILTIN(__builtin_msa_srlr_b, "V16cV16cV16c", "nc") +BUILTIN(__builtin_msa_srlr_h, "V8sV8sV8s", "nc") +BUILTIN(__builtin_msa_srlr_w, "V4iV4iV4i", "nc") +BUILTIN(__builtin_msa_srlr_d, "V2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_srlri_b, "V16cV16cIUi", "nc") +BUILTIN(__builtin_msa_srlri_h, "V8sV8sIUi", "nc") +BUILTIN(__builtin_msa_srlri_w, "V4iV4iIUi", "nc") +BUILTIN(__builtin_msa_srlri_d, "V2LLiV2LLiIUi", "nc") + +BUILTIN(__builtin_msa_st_b, "vV16Scv*Ii", "nc") +BUILTIN(__builtin_msa_st_h, "vV8Ssv*Ii", "nc") +BUILTIN(__builtin_msa_st_w, "vV4Siv*Ii", "nc") +BUILTIN(__builtin_msa_st_d, "vV2SLLiv*Ii", "nc") + +BUILTIN(__builtin_msa_subs_s_b, "V16ScV16ScV16Sc", "nc") +BUILTIN(__builtin_msa_subs_s_h, "V8SsV8SsV8Ss", "nc") +BUILTIN(__builtin_msa_subs_s_w, "V4SiV4SiV4Si", "nc") +BUILTIN(__builtin_msa_subs_s_d, "V2SLLiV2SLLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_subs_u_b, "V16UcV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_subs_u_h, "V8UsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_subs_u_w, "V4UiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_subs_u_d, "V2ULLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_subsus_u_b, "V16UcV16UcV16Sc", "nc") +BUILTIN(__builtin_msa_subsus_u_h, "V8UsV8UsV8Ss", "nc") +BUILTIN(__builtin_msa_subsus_u_w, "V4UiV4UiV4Si", "nc") +BUILTIN(__builtin_msa_subsus_u_d, "V2ULLiV2ULLiV2SLLi", "nc") + +BUILTIN(__builtin_msa_subsuu_s_b, "V16ScV16UcV16Uc", "nc") +BUILTIN(__builtin_msa_subsuu_s_h, "V8SsV8UsV8Us", "nc") +BUILTIN(__builtin_msa_subsuu_s_w, "V4SiV4UiV4Ui", "nc") +BUILTIN(__builtin_msa_subsuu_s_d, "V2SLLiV2ULLiV2ULLi", "nc") + +BUILTIN(__builtin_msa_subv_b, "V16cV16cV16c", "nc") +BUILTIN(__builtin_msa_subv_h, "V8sV8sV8s", "nc") +BUILTIN(__builtin_msa_subv_w, "V4iV4iV4i", "nc") +BUILTIN(__builtin_msa_subv_d, "V2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_subvi_b, "V16cV16cIUi", "nc") +BUILTIN(__builtin_msa_subvi_h, "V8sV8sIUi", "nc") +BUILTIN(__builtin_msa_subvi_w, "V4iV4iIUi", "nc") +BUILTIN(__builtin_msa_subvi_d, "V2LLiV2LLiIUi", "nc") + +BUILTIN(__builtin_msa_vshf_b, "V16cV16cV16cV16c", "nc") +BUILTIN(__builtin_msa_vshf_h, "V8sV8sV8sV8s", "nc") +BUILTIN(__builtin_msa_vshf_w, "V4iV4iV4iV4i", "nc") +BUILTIN(__builtin_msa_vshf_d, "V2LLiV2LLiV2LLiV2LLi", "nc") + +BUILTIN(__builtin_msa_xor_v, "V16cV16cV16c", "nc") + +BUILTIN(__builtin_msa_xori_b, "V16cV16cIUi", "nc") + +#undef BUILTIN diff --git a/clang-r353983/include/clang/Basic/BuiltinsNEON.def b/clang-r353983/include/clang/Basic/BuiltinsNEON.def new file mode 100644 index 00000000..b8eb5a7b --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsNEON.def @@ -0,0 +1,21 @@ +//===--- BuiltinsNEON.def - NEON Builtin function database ------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the NEON-specific builtin function database. Users of +// this file must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// The format of this database matches clang/Basic/Builtins.def. + +#define GET_NEON_BUILTINS +#include "clang/Basic/arm_neon.inc" +#include "clang/Basic/arm_fp16.inc" +#undef GET_NEON_BUILTINS + +#undef BUILTIN diff --git a/clang-r353983/include/clang/Basic/BuiltinsNVPTX.def b/clang-r353983/include/clang/Basic/BuiltinsNVPTX.def new file mode 100644 index 00000000..b15ed266 --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsNVPTX.def @@ -0,0 +1,675 @@ +//===--- BuiltinsPTX.def - PTX Builtin function database ----*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the PTX-specific builtin function database. Users of +// this file must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// The format of this database matches clang/Basic/Builtins.def. + +#if defined(BUILTIN) && !defined(TARGET_BUILTIN) +# define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS) +#endif + +#pragma push_macro("SM_70") +#define SM_70 "sm_70|sm_71" +#pragma push_macro("SM_60") +#define SM_60 "sm_60|sm_61|sm_62|" SM_70 + +#pragma push_macro("PTX61") +#define PTX61 "ptx61" +#pragma push_macro("PTX60") +#define PTX60 "ptx60|" PTX61 + +#pragma push_macro("AND") +#define AND(a, b) a "," b + +// Special Registers + +BUILTIN(__nvvm_read_ptx_sreg_tid_x, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_tid_y, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_tid_z, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_tid_w, "i", "nc") + +BUILTIN(__nvvm_read_ptx_sreg_ntid_x, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_ntid_y, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_ntid_z, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_ntid_w, "i", "nc") + +BUILTIN(__nvvm_read_ptx_sreg_ctaid_x, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_ctaid_y, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_ctaid_z, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_ctaid_w, "i", "nc") + +BUILTIN(__nvvm_read_ptx_sreg_nctaid_x, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_nctaid_y, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_nctaid_z, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_nctaid_w, "i", "nc") + +BUILTIN(__nvvm_read_ptx_sreg_laneid, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_warpid, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_nwarpid, "i", "nc") + +BUILTIN(__nvvm_read_ptx_sreg_smid, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_nsmid, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_gridid, "i", "nc") + +BUILTIN(__nvvm_read_ptx_sreg_lanemask_eq, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_lanemask_le, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_lanemask_lt, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_lanemask_ge, "i", "nc") +BUILTIN(__nvvm_read_ptx_sreg_lanemask_gt, "i", "nc") + +BUILTIN(__nvvm_read_ptx_sreg_clock, "i", "n") +BUILTIN(__nvvm_read_ptx_sreg_clock64, "LLi", "n") + +BUILTIN(__nvvm_read_ptx_sreg_pm0, "i", "n") +BUILTIN(__nvvm_read_ptx_sreg_pm1, "i", "n") +BUILTIN(__nvvm_read_ptx_sreg_pm2, "i", "n") +BUILTIN(__nvvm_read_ptx_sreg_pm3, "i", "n") + +// MISC + +BUILTIN(__nvvm_prmt, "UiUiUiUi", "") + +// Min Max + +BUILTIN(__nvvm_fmax_ftz_f, "fff", "") +BUILTIN(__nvvm_fmax_f, "fff", "") +BUILTIN(__nvvm_fmin_ftz_f, "fff", "") +BUILTIN(__nvvm_fmin_f, "fff", "") + +BUILTIN(__nvvm_fmax_d, "ddd", "") +BUILTIN(__nvvm_fmin_d, "ddd", "") + +// Multiplication + +BUILTIN(__nvvm_mulhi_i, "iii", "") +BUILTIN(__nvvm_mulhi_ui, "UiUiUi", "") +BUILTIN(__nvvm_mulhi_ll, "LLiLLiLLi", "") +BUILTIN(__nvvm_mulhi_ull, "ULLiULLiULLi", "") + +BUILTIN(__nvvm_mul_rn_ftz_f, "fff", "") +BUILTIN(__nvvm_mul_rn_f, "fff", "") +BUILTIN(__nvvm_mul_rz_ftz_f, "fff", "") +BUILTIN(__nvvm_mul_rz_f, "fff", "") +BUILTIN(__nvvm_mul_rm_ftz_f, "fff", "") +BUILTIN(__nvvm_mul_rm_f, "fff", "") +BUILTIN(__nvvm_mul_rp_ftz_f, "fff", "") +BUILTIN(__nvvm_mul_rp_f, "fff", "") + +BUILTIN(__nvvm_mul_rn_d, "ddd", "") +BUILTIN(__nvvm_mul_rz_d, "ddd", "") +BUILTIN(__nvvm_mul_rm_d, "ddd", "") +BUILTIN(__nvvm_mul_rp_d, "ddd", "") + +BUILTIN(__nvvm_mul24_i, "iii", "") +BUILTIN(__nvvm_mul24_ui, "UiUiUi", "") + +// Div + +BUILTIN(__nvvm_div_approx_ftz_f, "fff", "") +BUILTIN(__nvvm_div_approx_f, "fff", "") + +BUILTIN(__nvvm_div_rn_ftz_f, "fff", "") +BUILTIN(__nvvm_div_rn_f, "fff", "") +BUILTIN(__nvvm_div_rz_ftz_f, "fff", "") +BUILTIN(__nvvm_div_rz_f, "fff", "") +BUILTIN(__nvvm_div_rm_ftz_f, "fff", "") +BUILTIN(__nvvm_div_rm_f, "fff", "") +BUILTIN(__nvvm_div_rp_ftz_f, "fff", "") +BUILTIN(__nvvm_div_rp_f, "fff", "") + +BUILTIN(__nvvm_div_rn_d, "ddd", "") +BUILTIN(__nvvm_div_rz_d, "ddd", "") +BUILTIN(__nvvm_div_rm_d, "ddd", "") +BUILTIN(__nvvm_div_rp_d, "ddd", "") + +// Sad + +BUILTIN(__nvvm_sad_i, "iiii", "") +BUILTIN(__nvvm_sad_ui, "UiUiUiUi", "") + +// Floor, Ceil + +BUILTIN(__nvvm_floor_ftz_f, "ff", "") +BUILTIN(__nvvm_floor_f, "ff", "") +BUILTIN(__nvvm_floor_d, "dd", "") + +BUILTIN(__nvvm_ceil_ftz_f, "ff", "") +BUILTIN(__nvvm_ceil_f, "ff", "") +BUILTIN(__nvvm_ceil_d, "dd", "") + +// Abs + +BUILTIN(__nvvm_fabs_ftz_f, "ff", "") +BUILTIN(__nvvm_fabs_f, "ff", "") +BUILTIN(__nvvm_fabs_d, "dd", "") + +// Round + +BUILTIN(__nvvm_round_ftz_f, "ff", "") +BUILTIN(__nvvm_round_f, "ff", "") +BUILTIN(__nvvm_round_d, "dd", "") + +// Trunc + +BUILTIN(__nvvm_trunc_ftz_f, "ff", "") +BUILTIN(__nvvm_trunc_f, "ff", "") +BUILTIN(__nvvm_trunc_d, "dd", "") + +// Saturate + +BUILTIN(__nvvm_saturate_ftz_f, "ff", "") +BUILTIN(__nvvm_saturate_f, "ff", "") +BUILTIN(__nvvm_saturate_d, "dd", "") + +// Exp2, Log2 + +BUILTIN(__nvvm_ex2_approx_ftz_f, "ff", "") +BUILTIN(__nvvm_ex2_approx_f, "ff", "") +BUILTIN(__nvvm_ex2_approx_d, "dd", "") + +BUILTIN(__nvvm_lg2_approx_ftz_f, "ff", "") +BUILTIN(__nvvm_lg2_approx_f, "ff", "") +BUILTIN(__nvvm_lg2_approx_d, "dd", "") + +// Sin, Cos + +BUILTIN(__nvvm_sin_approx_ftz_f, "ff", "") +BUILTIN(__nvvm_sin_approx_f, "ff", "") + +BUILTIN(__nvvm_cos_approx_ftz_f, "ff", "") +BUILTIN(__nvvm_cos_approx_f, "ff", "") + +// Fma + +BUILTIN(__nvvm_fma_rn_ftz_f, "ffff", "") +BUILTIN(__nvvm_fma_rn_f, "ffff", "") +BUILTIN(__nvvm_fma_rz_ftz_f, "ffff", "") +BUILTIN(__nvvm_fma_rz_f, "ffff", "") +BUILTIN(__nvvm_fma_rm_ftz_f, "ffff", "") +BUILTIN(__nvvm_fma_rm_f, "ffff", "") +BUILTIN(__nvvm_fma_rp_ftz_f, "ffff", "") +BUILTIN(__nvvm_fma_rp_f, "ffff", "") +BUILTIN(__nvvm_fma_rn_d, "dddd", "") +BUILTIN(__nvvm_fma_rz_d, "dddd", "") +BUILTIN(__nvvm_fma_rm_d, "dddd", "") +BUILTIN(__nvvm_fma_rp_d, "dddd", "") + +// Rcp + +BUILTIN(__nvvm_rcp_rn_ftz_f, "ff", "") +BUILTIN(__nvvm_rcp_rn_f, "ff", "") +BUILTIN(__nvvm_rcp_rz_ftz_f, "ff", "") +BUILTIN(__nvvm_rcp_rz_f, "ff", "") +BUILTIN(__nvvm_rcp_rm_ftz_f, "ff", "") +BUILTIN(__nvvm_rcp_rm_f, "ff", "") +BUILTIN(__nvvm_rcp_rp_ftz_f, "ff", "") +BUILTIN(__nvvm_rcp_rp_f, "ff", "") + +BUILTIN(__nvvm_rcp_rn_d, "dd", "") +BUILTIN(__nvvm_rcp_rz_d, "dd", "") +BUILTIN(__nvvm_rcp_rm_d, "dd", "") +BUILTIN(__nvvm_rcp_rp_d, "dd", "") +BUILTIN(__nvvm_rcp_approx_ftz_d, "dd", "") + +// Sqrt + +BUILTIN(__nvvm_sqrt_rn_ftz_f, "ff", "") +BUILTIN(__nvvm_sqrt_rn_f, "ff", "") +BUILTIN(__nvvm_sqrt_rz_ftz_f, "ff", "") +BUILTIN(__nvvm_sqrt_rz_f, "ff", "") +BUILTIN(__nvvm_sqrt_rm_ftz_f, "ff", "") +BUILTIN(__nvvm_sqrt_rm_f, "ff", "") +BUILTIN(__nvvm_sqrt_rp_ftz_f, "ff", "") +BUILTIN(__nvvm_sqrt_rp_f, "ff", "") +BUILTIN(__nvvm_sqrt_approx_ftz_f, "ff", "") +BUILTIN(__nvvm_sqrt_approx_f, "ff", "") + +BUILTIN(__nvvm_sqrt_rn_d, "dd", "") +BUILTIN(__nvvm_sqrt_rz_d, "dd", "") +BUILTIN(__nvvm_sqrt_rm_d, "dd", "") +BUILTIN(__nvvm_sqrt_rp_d, "dd", "") + +// Rsqrt + +BUILTIN(__nvvm_rsqrt_approx_ftz_f, "ff", "") +BUILTIN(__nvvm_rsqrt_approx_f, "ff", "") +BUILTIN(__nvvm_rsqrt_approx_d, "dd", "") + +// Add + +BUILTIN(__nvvm_add_rn_ftz_f, "fff", "") +BUILTIN(__nvvm_add_rn_f, "fff", "") +BUILTIN(__nvvm_add_rz_ftz_f, "fff", "") +BUILTIN(__nvvm_add_rz_f, "fff", "") +BUILTIN(__nvvm_add_rm_ftz_f, "fff", "") +BUILTIN(__nvvm_add_rm_f, "fff", "") +BUILTIN(__nvvm_add_rp_ftz_f, "fff", "") +BUILTIN(__nvvm_add_rp_f, "fff", "") + +BUILTIN(__nvvm_add_rn_d, "ddd", "") +BUILTIN(__nvvm_add_rz_d, "ddd", "") +BUILTIN(__nvvm_add_rm_d, "ddd", "") +BUILTIN(__nvvm_add_rp_d, "ddd", "") + +// Convert + +BUILTIN(__nvvm_d2f_rn_ftz, "fd", "") +BUILTIN(__nvvm_d2f_rn, "fd", "") +BUILTIN(__nvvm_d2f_rz_ftz, "fd", "") +BUILTIN(__nvvm_d2f_rz, "fd", "") +BUILTIN(__nvvm_d2f_rm_ftz, "fd", "") +BUILTIN(__nvvm_d2f_rm, "fd", "") +BUILTIN(__nvvm_d2f_rp_ftz, "fd", "") +BUILTIN(__nvvm_d2f_rp, "fd", "") + +BUILTIN(__nvvm_d2i_rn, "id", "") +BUILTIN(__nvvm_d2i_rz, "id", "") +BUILTIN(__nvvm_d2i_rm, "id", "") +BUILTIN(__nvvm_d2i_rp, "id", "") + +BUILTIN(__nvvm_d2ui_rn, "Uid", "") +BUILTIN(__nvvm_d2ui_rz, "Uid", "") +BUILTIN(__nvvm_d2ui_rm, "Uid", "") +BUILTIN(__nvvm_d2ui_rp, "Uid", "") + +BUILTIN(__nvvm_i2d_rn, "di", "") +BUILTIN(__nvvm_i2d_rz, "di", "") +BUILTIN(__nvvm_i2d_rm, "di", "") +BUILTIN(__nvvm_i2d_rp, "di", "") + +BUILTIN(__nvvm_ui2d_rn, "dUi", "") +BUILTIN(__nvvm_ui2d_rz, "dUi", "") +BUILTIN(__nvvm_ui2d_rm, "dUi", "") +BUILTIN(__nvvm_ui2d_rp, "dUi", "") + +BUILTIN(__nvvm_f2i_rn_ftz, "if", "") +BUILTIN(__nvvm_f2i_rn, "if", "") +BUILTIN(__nvvm_f2i_rz_ftz, "if", "") +BUILTIN(__nvvm_f2i_rz, "if", "") +BUILTIN(__nvvm_f2i_rm_ftz, "if", "") +BUILTIN(__nvvm_f2i_rm, "if", "") +BUILTIN(__nvvm_f2i_rp_ftz, "if", "") +BUILTIN(__nvvm_f2i_rp, "if", "") + +BUILTIN(__nvvm_f2ui_rn_ftz, "Uif", "") +BUILTIN(__nvvm_f2ui_rn, "Uif", "") +BUILTIN(__nvvm_f2ui_rz_ftz, "Uif", "") +BUILTIN(__nvvm_f2ui_rz, "Uif", "") +BUILTIN(__nvvm_f2ui_rm_ftz, "Uif", "") +BUILTIN(__nvvm_f2ui_rm, "Uif", "") +BUILTIN(__nvvm_f2ui_rp_ftz, "Uif", "") +BUILTIN(__nvvm_f2ui_rp, "Uif", "") + +BUILTIN(__nvvm_i2f_rn, "fi", "") +BUILTIN(__nvvm_i2f_rz, "fi", "") +BUILTIN(__nvvm_i2f_rm, "fi", "") +BUILTIN(__nvvm_i2f_rp, "fi", "") + +BUILTIN(__nvvm_ui2f_rn, "fUi", "") +BUILTIN(__nvvm_ui2f_rz, "fUi", "") +BUILTIN(__nvvm_ui2f_rm, "fUi", "") +BUILTIN(__nvvm_ui2f_rp, "fUi", "") + +BUILTIN(__nvvm_lohi_i2d, "dii", "") + +BUILTIN(__nvvm_d2i_lo, "id", "") +BUILTIN(__nvvm_d2i_hi, "id", "") + +BUILTIN(__nvvm_f2ll_rn_ftz, "LLif", "") +BUILTIN(__nvvm_f2ll_rn, "LLif", "") +BUILTIN(__nvvm_f2ll_rz_ftz, "LLif", "") +BUILTIN(__nvvm_f2ll_rz, "LLif", "") +BUILTIN(__nvvm_f2ll_rm_ftz, "LLif", "") +BUILTIN(__nvvm_f2ll_rm, "LLif", "") +BUILTIN(__nvvm_f2ll_rp_ftz, "LLif", "") +BUILTIN(__nvvm_f2ll_rp, "LLif", "") + +BUILTIN(__nvvm_f2ull_rn_ftz, "ULLif", "") +BUILTIN(__nvvm_f2ull_rn, "ULLif", "") +BUILTIN(__nvvm_f2ull_rz_ftz, "ULLif", "") +BUILTIN(__nvvm_f2ull_rz, "ULLif", "") +BUILTIN(__nvvm_f2ull_rm_ftz, "ULLif", "") +BUILTIN(__nvvm_f2ull_rm, "ULLif", "") +BUILTIN(__nvvm_f2ull_rp_ftz, "ULLif", "") +BUILTIN(__nvvm_f2ull_rp, "ULLif", "") + +BUILTIN(__nvvm_d2ll_rn, "LLid", "") +BUILTIN(__nvvm_d2ll_rz, "LLid", "") +BUILTIN(__nvvm_d2ll_rm, "LLid", "") +BUILTIN(__nvvm_d2ll_rp, "LLid", "") + +BUILTIN(__nvvm_d2ull_rn, "ULLid", "") +BUILTIN(__nvvm_d2ull_rz, "ULLid", "") +BUILTIN(__nvvm_d2ull_rm, "ULLid", "") +BUILTIN(__nvvm_d2ull_rp, "ULLid", "") + +BUILTIN(__nvvm_ll2f_rn, "fLLi", "") +BUILTIN(__nvvm_ll2f_rz, "fLLi", "") +BUILTIN(__nvvm_ll2f_rm, "fLLi", "") +BUILTIN(__nvvm_ll2f_rp, "fLLi", "") + +BUILTIN(__nvvm_ull2f_rn, "fULLi", "") +BUILTIN(__nvvm_ull2f_rz, "fULLi", "") +BUILTIN(__nvvm_ull2f_rm, "fULLi", "") +BUILTIN(__nvvm_ull2f_rp, "fULLi", "") + +BUILTIN(__nvvm_ll2d_rn, "dLLi", "") +BUILTIN(__nvvm_ll2d_rz, "dLLi", "") +BUILTIN(__nvvm_ll2d_rm, "dLLi", "") +BUILTIN(__nvvm_ll2d_rp, "dLLi", "") + +BUILTIN(__nvvm_ull2d_rn, "dULLi", "") +BUILTIN(__nvvm_ull2d_rz, "dULLi", "") +BUILTIN(__nvvm_ull2d_rm, "dULLi", "") +BUILTIN(__nvvm_ull2d_rp, "dULLi", "") + +BUILTIN(__nvvm_f2h_rn_ftz, "Usf", "") +BUILTIN(__nvvm_f2h_rn, "Usf", "") + +// Bitcast + +BUILTIN(__nvvm_bitcast_f2i, "if", "") +BUILTIN(__nvvm_bitcast_i2f, "fi", "") + +BUILTIN(__nvvm_bitcast_ll2d, "dLLi", "") +BUILTIN(__nvvm_bitcast_d2ll, "LLid", "") + +// FNS +TARGET_BUILTIN(__nvvm_fns, "UiUiUii", "n", PTX60) + +// Sync + +BUILTIN(__syncthreads, "v", "") +BUILTIN(__nvvm_bar0_popc, "ii", "") +BUILTIN(__nvvm_bar0_and, "ii", "") +BUILTIN(__nvvm_bar0_or, "ii", "") +BUILTIN(__nvvm_bar_sync, "vi", "n") +TARGET_BUILTIN(__nvvm_bar_warp_sync, "vUi", "n", PTX60) +TARGET_BUILTIN(__nvvm_barrier_sync, "vUi", "n", PTX60) +TARGET_BUILTIN(__nvvm_barrier_sync_cnt, "vUiUi", "n", PTX60) + +// Shuffle + +BUILTIN(__nvvm_shfl_down_i32, "iiii", "") +BUILTIN(__nvvm_shfl_down_f32, "ffii", "") +BUILTIN(__nvvm_shfl_up_i32, "iiii", "") +BUILTIN(__nvvm_shfl_up_f32, "ffii", "") +BUILTIN(__nvvm_shfl_bfly_i32, "iiii", "") +BUILTIN(__nvvm_shfl_bfly_f32, "ffii", "") +BUILTIN(__nvvm_shfl_idx_i32, "iiii", "") +BUILTIN(__nvvm_shfl_idx_f32, "ffii", "") + +TARGET_BUILTIN(__nvvm_shfl_sync_down_i32, "iUiiii", "", PTX60) +TARGET_BUILTIN(__nvvm_shfl_sync_down_f32, "fUifii", "", PTX60) +TARGET_BUILTIN(__nvvm_shfl_sync_up_i32, "iUiiii", "", PTX60) +TARGET_BUILTIN(__nvvm_shfl_sync_up_f32, "fUifii", "", PTX60) +TARGET_BUILTIN(__nvvm_shfl_sync_bfly_i32, "iUiiii", "", PTX60) +TARGET_BUILTIN(__nvvm_shfl_sync_bfly_f32, "fUifii", "", PTX60) +TARGET_BUILTIN(__nvvm_shfl_sync_idx_i32, "iUiiii", "", PTX60) +TARGET_BUILTIN(__nvvm_shfl_sync_idx_f32, "fUifii", "", PTX60) + +// Vote +BUILTIN(__nvvm_vote_all, "bb", "") +BUILTIN(__nvvm_vote_any, "bb", "") +BUILTIN(__nvvm_vote_uni, "bb", "") +BUILTIN(__nvvm_vote_ballot, "Uib", "") + +TARGET_BUILTIN(__nvvm_vote_all_sync, "bUib", "", PTX60) +TARGET_BUILTIN(__nvvm_vote_any_sync, "bUib", "", PTX60) +TARGET_BUILTIN(__nvvm_vote_uni_sync, "bUib", "", PTX60) +TARGET_BUILTIN(__nvvm_vote_ballot_sync, "UiUib", "", PTX60) + +// Match +TARGET_BUILTIN(__nvvm_match_any_sync_i32, "UiUiUi", "", PTX60) +TARGET_BUILTIN(__nvvm_match_any_sync_i64, "WiUiWi", "", PTX60) +// These return a pair {value, predicate}, which requires custom lowering. +TARGET_BUILTIN(__nvvm_match_all_sync_i32p, "UiUiUii*", "", PTX60) +TARGET_BUILTIN(__nvvm_match_all_sync_i64p, "WiUiWii*", "", PTX60) + +// Membar + +BUILTIN(__nvvm_membar_cta, "v", "") +BUILTIN(__nvvm_membar_gl, "v", "") +BUILTIN(__nvvm_membar_sys, "v", "") + +// Memcpy, Memset + +BUILTIN(__nvvm_memcpy, "vUc*Uc*zi","") +BUILTIN(__nvvm_memset, "vUc*Uczi","") + +// Image + +BUILTIN(__builtin_ptx_read_image2Dfi_, "V4fiiii", "") +BUILTIN(__builtin_ptx_read_image2Dff_, "V4fiiff", "") +BUILTIN(__builtin_ptx_read_image2Dii_, "V4iiiii", "") +BUILTIN(__builtin_ptx_read_image2Dif_, "V4iiiff", "") + +BUILTIN(__builtin_ptx_read_image3Dfi_, "V4fiiiiii", "") +BUILTIN(__builtin_ptx_read_image3Dff_, "V4fiiffff", "") +BUILTIN(__builtin_ptx_read_image3Dii_, "V4iiiiiii", "") +BUILTIN(__builtin_ptx_read_image3Dif_, "V4iiiffff", "") + +BUILTIN(__builtin_ptx_write_image2Df_, "viiiffff", "") +BUILTIN(__builtin_ptx_write_image2Di_, "viiiiiii", "") +BUILTIN(__builtin_ptx_write_image2Dui_, "viiiUiUiUiUi", "") +BUILTIN(__builtin_ptx_get_image_depthi_, "ii", "") +BUILTIN(__builtin_ptx_get_image_heighti_, "ii", "") +BUILTIN(__builtin_ptx_get_image_widthi_, "ii", "") +BUILTIN(__builtin_ptx_get_image_channel_data_typei_, "ii", "") +BUILTIN(__builtin_ptx_get_image_channel_orderi_, "ii", "") + +// Atomic +// +// We need the atom intrinsics because +// - they are used in converging analysis +// - they are used in address space analysis and optimization +// So it does not hurt to expose them as builtins. +// +BUILTIN(__nvvm_atom_add_gen_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_add_gen_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_gen_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_add_gen_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_add_gen_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_gen_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_add_gen_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_add_gen_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_gen_ll, "LLiLLiD*LLi", "n", SM_60) +BUILTIN(__nvvm_atom_add_gen_f, "ffD*f", "n") +TARGET_BUILTIN(__nvvm_atom_cta_add_gen_f, "ffD*f", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_gen_f, "ffD*f", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_add_gen_d, "ddD*d", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_cta_add_gen_d, "ddD*d", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_gen_d, "ddD*d", "n", SM_60) + +BUILTIN(__nvvm_atom_sub_gen_i, "iiD*i", "n") +BUILTIN(__nvvm_atom_sub_gen_l, "LiLiD*Li", "n") +BUILTIN(__nvvm_atom_sub_gen_ll, "LLiLLiD*LLi", "n") + +BUILTIN(__nvvm_atom_xchg_gen_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xchg_gen_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xchg_gen_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_xchg_gen_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xchg_gen_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xchg_gen_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_xchg_gen_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xchg_gen_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xchg_gen_ll, "LLiLLiD*LLi", "n", SM_60) + +BUILTIN(__nvvm_atom_max_gen_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_gen_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_gen_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_max_gen_ui, "UiUiD*Ui", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_gen_ui, "UiUiD*Ui", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_gen_ui, "UiUiD*Ui", "n", SM_60) +BUILTIN(__nvvm_atom_max_gen_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_gen_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_gen_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_max_gen_ul, "ULiULiD*ULi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_gen_ul, "ULiULiD*ULi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_gen_ul, "ULiULiD*ULi", "n", SM_60) +BUILTIN(__nvvm_atom_max_gen_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_gen_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_gen_ll, "LLiLLiD*LLi", "n", SM_60) +BUILTIN(__nvvm_atom_max_gen_ull, "ULLiULLiD*ULLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_gen_ull, "ULLiULLiD*ULLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_gen_ull, "ULLiULLiD*ULLi", "n", SM_60) + +BUILTIN(__nvvm_atom_min_gen_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_gen_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_gen_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_min_gen_ui, "UiUiD*Ui", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_gen_ui, "UiUiD*Ui", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_gen_ui, "UiUiD*Ui", "n", SM_60) +BUILTIN(__nvvm_atom_min_gen_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_gen_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_gen_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_min_gen_ul, "ULiULiD*ULi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_gen_ul, "ULiULiD*ULi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_gen_ul, "ULiULiD*ULi", "n", SM_60) +BUILTIN(__nvvm_atom_min_gen_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_gen_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_gen_ll, "LLiLLiD*LLi", "n", SM_60) +BUILTIN(__nvvm_atom_min_gen_ull, "ULLiULLiD*ULLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_gen_ull, "ULLiULLiD*ULLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_gen_ull, "ULLiULLiD*ULLi", "n", SM_60) + +BUILTIN(__nvvm_atom_inc_gen_ui, "UiUiD*Ui", "n") +TARGET_BUILTIN(__nvvm_atom_cta_inc_gen_ui, "UiUiD*Ui", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_inc_gen_ui, "UiUiD*Ui", "n", SM_60) +BUILTIN(__nvvm_atom_dec_gen_ui, "UiUiD*Ui", "n") +TARGET_BUILTIN(__nvvm_atom_cta_dec_gen_ui, "UiUiD*Ui", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_dec_gen_ui, "UiUiD*Ui", "n", SM_60) + +BUILTIN(__nvvm_atom_and_gen_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_and_gen_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_and_gen_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_and_gen_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_and_gen_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_and_gen_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_and_gen_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_and_gen_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_and_gen_ll, "LLiLLiD*LLi", "n", SM_60) + +BUILTIN(__nvvm_atom_or_gen_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_or_gen_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_or_gen_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_or_gen_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_or_gen_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_or_gen_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_or_gen_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_or_gen_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_or_gen_ll, "LLiLLiD*LLi", "n", SM_60) + +BUILTIN(__nvvm_atom_xor_gen_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xor_gen_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xor_gen_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_xor_gen_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xor_gen_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xor_gen_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_xor_gen_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xor_gen_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xor_gen_ll, "LLiLLiD*LLi", "n", SM_60) + +BUILTIN(__nvvm_atom_cas_gen_i, "iiD*ii", "n") +TARGET_BUILTIN(__nvvm_atom_cta_cas_gen_i, "iiD*ii", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_cas_gen_i, "iiD*ii", "n", SM_60) +BUILTIN(__nvvm_atom_cas_gen_l, "LiLiD*LiLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_cas_gen_l, "LiLiD*LiLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_cas_gen_l, "LiLiD*LiLi", "n", SM_60) +BUILTIN(__nvvm_atom_cas_gen_ll, "LLiLLiD*LLiLLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_cas_gen_ll, "LLiLLiD*LLiLLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_cas_gen_ll, "LLiLLiD*LLiLLi", "n", SM_60) + +// Compiler Error Warn +BUILTIN(__nvvm_compiler_error, "vcC*4", "n") +BUILTIN(__nvvm_compiler_warn, "vcC*4", "n") + +// __ldg. This is not implemented as a builtin by nvcc. +BUILTIN(__nvvm_ldg_c, "ccC*", "") +BUILTIN(__nvvm_ldg_s, "ssC*", "") +BUILTIN(__nvvm_ldg_i, "iiC*", "") +BUILTIN(__nvvm_ldg_l, "LiLiC*", "") +BUILTIN(__nvvm_ldg_ll, "LLiLLiC*", "") + +BUILTIN(__nvvm_ldg_uc, "UcUcC*", "") +BUILTIN(__nvvm_ldg_us, "UsUsC*", "") +BUILTIN(__nvvm_ldg_ui, "UiUiC*", "") +BUILTIN(__nvvm_ldg_ul, "ULiULiC*", "") +BUILTIN(__nvvm_ldg_ull, "ULLiULLiC*", "") + +BUILTIN(__nvvm_ldg_f, "ffC*", "") +BUILTIN(__nvvm_ldg_d, "ddC*", "") + +BUILTIN(__nvvm_ldg_c2, "E2cE2cC*", "") +BUILTIN(__nvvm_ldg_c4, "E4cE4cC*", "") +BUILTIN(__nvvm_ldg_s2, "E2sE2sC*", "") +BUILTIN(__nvvm_ldg_s4, "E4sE4sC*", "") +BUILTIN(__nvvm_ldg_i2, "E2iE2iC*", "") +BUILTIN(__nvvm_ldg_i4, "E4iE4iC*", "") +BUILTIN(__nvvm_ldg_ll2, "E2LLiE2LLiC*", "") + +BUILTIN(__nvvm_ldg_uc2, "E2UcE2UcC*", "") +BUILTIN(__nvvm_ldg_uc4, "E4UcE4UcC*", "") +BUILTIN(__nvvm_ldg_us2, "E2UsE2UsC*", "") +BUILTIN(__nvvm_ldg_us4, "E4UsE4UsC*", "") +BUILTIN(__nvvm_ldg_ui2, "E2UiE2UiC*", "") +BUILTIN(__nvvm_ldg_ui4, "E4UiE4UiC*", "") +BUILTIN(__nvvm_ldg_ull2, "E2ULLiE2ULLiC*", "") + +BUILTIN(__nvvm_ldg_f2, "E2fE2fC*", "") +BUILTIN(__nvvm_ldg_f4, "E4fE4fC*", "") +BUILTIN(__nvvm_ldg_d2, "E2dE2dC*", "") + +// Builtins to support WMMA instructions on sm_70 +TARGET_BUILTIN(__hmma_m16n16k16_ld_a, "vi*iC*UiIi", "", AND(SM_70,PTX60)) +TARGET_BUILTIN(__hmma_m16n16k16_ld_b, "vi*iC*UiIi", "", AND(SM_70,PTX60)) +TARGET_BUILTIN(__hmma_m16n16k16_ld_c_f16, "vi*iC*UiIi", "", AND(SM_70,PTX60)) +TARGET_BUILTIN(__hmma_m16n16k16_ld_c_f32, "vf*fC*UiIi", "", AND(SM_70,PTX60)) +TARGET_BUILTIN(__hmma_m16n16k16_st_c_f16, "vi*i*UiIi", "", AND(SM_70,PTX60)) +TARGET_BUILTIN(__hmma_m16n16k16_st_c_f32, "vf*f*UiIi", "", AND(SM_70,PTX60)) + +TARGET_BUILTIN(__hmma_m32n8k16_ld_a, "vi*iC*UiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m32n8k16_ld_b, "vi*iC*UiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m32n8k16_ld_c_f16, "vi*iC*UiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m32n8k16_ld_c_f32, "vf*fC*UiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m32n8k16_st_c_f16, "vi*i*UiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m32n8k16_st_c_f32, "vf*f*UiIi", "", AND(SM_70,PTX61)) + +TARGET_BUILTIN(__hmma_m8n32k16_ld_a, "vi*iC*UiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m8n32k16_ld_b, "vi*iC*UiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m8n32k16_ld_c_f16, "vi*iC*UiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m8n32k16_ld_c_f32, "vf*fC*UiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m8n32k16_st_c_f16, "vi*i*UiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m8n32k16_st_c_f32, "vf*f*UiIi", "", AND(SM_70,PTX61)) + +TARGET_BUILTIN(__hmma_m16n16k16_mma_f16f16, "vi*iC*iC*iC*IiIi", "", AND(SM_70,PTX60)) +TARGET_BUILTIN(__hmma_m16n16k16_mma_f32f16, "vf*iC*iC*iC*IiIi", "", AND(SM_70,PTX60)) +TARGET_BUILTIN(__hmma_m16n16k16_mma_f32f32, "vf*iC*iC*fC*IiIi", "", AND(SM_70,PTX60)) +TARGET_BUILTIN(__hmma_m16n16k16_mma_f16f32, "vi*iC*iC*fC*IiIi", "", AND(SM_70,PTX60)) + +TARGET_BUILTIN(__hmma_m32n8k16_mma_f16f16, "vi*iC*iC*iC*IiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m32n8k16_mma_f32f16, "vf*iC*iC*iC*IiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m32n8k16_mma_f32f32, "vf*iC*iC*fC*IiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m32n8k16_mma_f16f32, "vi*iC*iC*fC*IiIi", "", AND(SM_70,PTX61)) + +TARGET_BUILTIN(__hmma_m8n32k16_mma_f16f16, "vi*iC*iC*iC*IiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m8n32k16_mma_f32f16, "vf*iC*iC*iC*IiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m8n32k16_mma_f32f32, "vf*iC*iC*fC*IiIi", "", AND(SM_70,PTX61)) +TARGET_BUILTIN(__hmma_m8n32k16_mma_f16f32, "vi*iC*iC*fC*IiIi", "", AND(SM_70,PTX61)) + +#undef BUILTIN +#undef TARGET_BUILTIN +#pragma pop_macro("AND") +#pragma pop_macro("SM_60") +#pragma pop_macro("SM_70") +#pragma pop_macro("PTX60") +#pragma pop_macro("PTX61") diff --git a/clang-r353983/include/clang/Basic/BuiltinsPPC.def b/clang-r353983/include/clang/Basic/BuiltinsPPC.def new file mode 100644 index 00000000..e55fa04a --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsPPC.def @@ -0,0 +1,480 @@ +//===--- BuiltinsPPC.def - PowerPC Builtin function database ----*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the PowerPC-specific builtin function database. Users of +// this file must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// FIXME: this needs to be the full list supported by GCC. Right now, I'm just +// adding stuff on demand. + +// The format of this database matches clang/Basic/Builtins.def. + +BUILTIN(__builtin_ppc_get_timebase, "ULLi", "n") + +// This is just a placeholder, the types and attributes are wrong. +BUILTIN(__builtin_altivec_vaddcuw, "V4UiV4UiV4Ui", "") + +BUILTIN(__builtin_altivec_vaddsbs, "V16ScV16ScV16Sc", "") +BUILTIN(__builtin_altivec_vaddubs, "V16UcV16UcV16Uc", "") +BUILTIN(__builtin_altivec_vaddshs, "V8SsV8SsV8Ss", "") +BUILTIN(__builtin_altivec_vadduhs, "V8UsV8UsV8Us", "") +BUILTIN(__builtin_altivec_vaddsws, "V4SiV4SiV4Si", "") +BUILTIN(__builtin_altivec_vadduws, "V4UiV4UiV4Ui", "") +BUILTIN(__builtin_altivec_vaddeuqm, "V1ULLLiV1ULLLiV1ULLLiV1ULLLi","") +BUILTIN(__builtin_altivec_vaddcuq, "V1ULLLiV1ULLLiV1ULLLi","") +BUILTIN(__builtin_altivec_vaddecuq, "V1ULLLiV1ULLLiV1ULLLiV1ULLLi","") + +BUILTIN(__builtin_altivec_vsubsbs, "V16ScV16ScV16Sc", "") +BUILTIN(__builtin_altivec_vsububs, "V16UcV16UcV16Uc", "") +BUILTIN(__builtin_altivec_vsubshs, "V8SsV8SsV8Ss", "") +BUILTIN(__builtin_altivec_vsubuhs, "V8UsV8UsV8Us", "") +BUILTIN(__builtin_altivec_vsubsws, "V4SiV4SiV4Si", "") +BUILTIN(__builtin_altivec_vsubuws, "V4UiV4UiV4Ui", "") +BUILTIN(__builtin_altivec_vsubeuqm, "V1ULLLiV1ULLLiV1ULLLiV1ULLLi","") +BUILTIN(__builtin_altivec_vsubcuq, "V1ULLLiV1ULLLiV1ULLLi","") +BUILTIN(__builtin_altivec_vsubecuq, "V1ULLLiV1ULLLiV1ULLLiV1ULLLi","") + +BUILTIN(__builtin_altivec_vavgsb, "V16ScV16ScV16Sc", "") +BUILTIN(__builtin_altivec_vavgub, "V16UcV16UcV16Uc", "") +BUILTIN(__builtin_altivec_vavgsh, "V8SsV8SsV8Ss", "") +BUILTIN(__builtin_altivec_vavguh, "V8UsV8UsV8Us", "") +BUILTIN(__builtin_altivec_vavgsw, "V4SiV4SiV4Si", "") +BUILTIN(__builtin_altivec_vavguw, "V4UiV4UiV4Ui", "") + +BUILTIN(__builtin_altivec_vrfip, "V4fV4f", "") + +BUILTIN(__builtin_altivec_vcfsx, "V4fV4iIi", "") +BUILTIN(__builtin_altivec_vcfux, "V4fV4iIi", "") +BUILTIN(__builtin_altivec_vctsxs, "V4SiV4fIi", "") +BUILTIN(__builtin_altivec_vctuxs, "V4UiV4fIi", "") + +BUILTIN(__builtin_altivec_dss, "vUi", "") +BUILTIN(__builtin_altivec_dssall, "v", "") +BUILTIN(__builtin_altivec_dst, "vvC*iUi", "") +BUILTIN(__builtin_altivec_dstt, "vvC*iUi", "") +BUILTIN(__builtin_altivec_dstst, "vvC*iUi", "") +BUILTIN(__builtin_altivec_dststt, "vvC*iUi", "") + +BUILTIN(__builtin_altivec_vexptefp, "V4fV4f", "") + +BUILTIN(__builtin_altivec_vrfim, "V4fV4f", "") + +BUILTIN(__builtin_altivec_lvx, "V4iivC*", "") +BUILTIN(__builtin_altivec_lvxl, "V4iivC*", "") +BUILTIN(__builtin_altivec_lvebx, "V16civC*", "") +BUILTIN(__builtin_altivec_lvehx, "V8sivC*", "") +BUILTIN(__builtin_altivec_lvewx, "V4iivC*", "") + +BUILTIN(__builtin_altivec_vlogefp, "V4fV4f", "") + +BUILTIN(__builtin_altivec_lvsl, "V16cUcvC*", "") +BUILTIN(__builtin_altivec_lvsr, "V16cUcvC*", "") + +BUILTIN(__builtin_altivec_vmaddfp, "V4fV4fV4fV4f", "") +BUILTIN(__builtin_altivec_vmhaddshs, "V8sV8sV8sV8s", "") +BUILTIN(__builtin_altivec_vmhraddshs, "V8sV8sV8sV8s", "") + +BUILTIN(__builtin_altivec_vmsumubm, "V4UiV16UcV16UcV4Ui", "") +BUILTIN(__builtin_altivec_vmsummbm, "V4SiV16ScV16UcV4Si", "") +BUILTIN(__builtin_altivec_vmsumuhm, "V4UiV8UsV8UsV4Ui", "") +BUILTIN(__builtin_altivec_vmsumshm, "V4SiV8SsV8SsV4Si", "") +BUILTIN(__builtin_altivec_vmsumuhs, "V4UiV8UsV8UsV4Ui", "") +BUILTIN(__builtin_altivec_vmsumshs, "V4SiV8SsV8SsV4Si", "") + +BUILTIN(__builtin_altivec_vmuleub, "V8UsV16UcV16Uc", "") +BUILTIN(__builtin_altivec_vmulesb, "V8SsV16ScV16Sc", "") +BUILTIN(__builtin_altivec_vmuleuh, "V4UiV8UsV8Us", "") +BUILTIN(__builtin_altivec_vmulesh, "V4SiV8SsV8Ss", "") +BUILTIN(__builtin_altivec_vmuleuw, "V2ULLiV4UiV4Ui", "") +BUILTIN(__builtin_altivec_vmulesw, "V2SLLiV4SiV4Si", "") +BUILTIN(__builtin_altivec_vmuloub, "V8UsV16UcV16Uc", "") +BUILTIN(__builtin_altivec_vmulosb, "V8SsV16ScV16Sc", "") +BUILTIN(__builtin_altivec_vmulouh, "V4UiV8UsV8Us", "") +BUILTIN(__builtin_altivec_vmulosh, "V4SiV8SsV8Ss", "") +BUILTIN(__builtin_altivec_vmulouw, "V2ULLiV4UiV4Ui", "") +BUILTIN(__builtin_altivec_vmulosw, "V2SLLiV4SiV4Si", "") + +BUILTIN(__builtin_altivec_vnmsubfp, "V4fV4fV4fV4f", "") + +BUILTIN(__builtin_altivec_vpkpx, "V8sV4UiV4Ui", "") +BUILTIN(__builtin_altivec_vpkuhus, "V16UcV8UsV8Us", "") +BUILTIN(__builtin_altivec_vpkshss, "V16ScV8SsV8Ss", "") +BUILTIN(__builtin_altivec_vpkuwus, "V8UsV4UiV4Ui", "") +BUILTIN(__builtin_altivec_vpkswss, "V8SsV4SiV4Si", "") +BUILTIN(__builtin_altivec_vpkshus, "V16UcV8SsV8Ss", "") +BUILTIN(__builtin_altivec_vpkswus, "V8UsV4SiV4Si", "") +BUILTIN(__builtin_altivec_vpksdss, "V4SiV2SLLiV2SLLi", "") +BUILTIN(__builtin_altivec_vpksdus, "V4UiV2SLLiV2SLLi", "") +BUILTIN(__builtin_altivec_vpkudus, "V4UiV2ULLiV2ULLi", "") +BUILTIN(__builtin_altivec_vpkudum, "V4UiV2ULLiV2ULLi", "") + +BUILTIN(__builtin_altivec_vperm_4si, "V4iV4iV4iV16Uc", "") + +BUILTIN(__builtin_altivec_stvx, "vV4iiv*", "") +BUILTIN(__builtin_altivec_stvxl, "vV4iiv*", "") +BUILTIN(__builtin_altivec_stvebx, "vV16civ*", "") +BUILTIN(__builtin_altivec_stvehx, "vV8siv*", "") +BUILTIN(__builtin_altivec_stvewx, "vV4iiv*", "") + +BUILTIN(__builtin_altivec_vcmpbfp, "V4iV4fV4f", "") + +BUILTIN(__builtin_altivec_vcmpgefp, "V4iV4fV4f", "") + +BUILTIN(__builtin_altivec_vcmpequb, "V16cV16cV16c", "") +BUILTIN(__builtin_altivec_vcmpequh, "V8sV8sV8s", "") +BUILTIN(__builtin_altivec_vcmpequw, "V4iV4iV4i", "") +BUILTIN(__builtin_altivec_vcmpequd, "V2LLiV2LLiV2LLi", "") +BUILTIN(__builtin_altivec_vcmpeqfp, "V4iV4fV4f", "") + +BUILTIN(__builtin_altivec_vcmpneb, "V16cV16cV16c", "") +BUILTIN(__builtin_altivec_vcmpneh, "V8sV8sV8s", "") +BUILTIN(__builtin_altivec_vcmpnew, "V4iV4iV4i", "") + +BUILTIN(__builtin_altivec_vcmpnezb, "V16cV16cV16c", "") +BUILTIN(__builtin_altivec_vcmpnezh, "V8sV8sV8s", "") +BUILTIN(__builtin_altivec_vcmpnezw, "V4iV4iV4i", "") + +BUILTIN(__builtin_altivec_vcmpgtsb, "V16cV16ScV16Sc", "") +BUILTIN(__builtin_altivec_vcmpgtub, "V16cV16UcV16Uc", "") +BUILTIN(__builtin_altivec_vcmpgtsh, "V8sV8SsV8Ss", "") +BUILTIN(__builtin_altivec_vcmpgtuh, "V8sV8UsV8Us", "") +BUILTIN(__builtin_altivec_vcmpgtsw, "V4iV4SiV4Si", "") +BUILTIN(__builtin_altivec_vcmpgtuw, "V4iV4UiV4Ui", "") +BUILTIN(__builtin_altivec_vcmpgtsd, "V2LLiV2LLiV2LLi", "") +BUILTIN(__builtin_altivec_vcmpgtud, "V2LLiV2ULLiV2ULLi", "") +BUILTIN(__builtin_altivec_vcmpgtfp, "V4iV4fV4f", "") + +BUILTIN(__builtin_altivec_vmaxsb, "V16ScV16ScV16Sc", "") +BUILTIN(__builtin_altivec_vmaxub, "V16UcV16UcV16Uc", "") +BUILTIN(__builtin_altivec_vmaxsh, "V8SsV8SsV8Ss", "") +BUILTIN(__builtin_altivec_vmaxuh, "V8UsV8UsV8Us", "") +BUILTIN(__builtin_altivec_vmaxsw, "V4SiV4SiV4Si", "") +BUILTIN(__builtin_altivec_vmaxuw, "V4UiV4UiV4Ui", "") +BUILTIN(__builtin_altivec_vmaxsd, "V2LLiV2LLiV2LLi", "") +BUILTIN(__builtin_altivec_vmaxud, "V2ULLiV2ULLiV2ULLi", "") +BUILTIN(__builtin_altivec_vmaxfp, "V4fV4fV4f", "") + +BUILTIN(__builtin_altivec_mfvscr, "V8Us", "") + +BUILTIN(__builtin_altivec_vminsb, "V16ScV16ScV16Sc", "") +BUILTIN(__builtin_altivec_vminub, "V16UcV16UcV16Uc", "") +BUILTIN(__builtin_altivec_vminsh, "V8SsV8SsV8Ss", "") +BUILTIN(__builtin_altivec_vminuh, "V8UsV8UsV8Us", "") +BUILTIN(__builtin_altivec_vminsw, "V4SiV4SiV4Si", "") +BUILTIN(__builtin_altivec_vminuw, "V4UiV4UiV4Ui", "") +BUILTIN(__builtin_altivec_vminsd, "V2LLiV2LLiV2LLi", "") +BUILTIN(__builtin_altivec_vminud, "V2ULLiV2ULLiV2ULLi", "") +BUILTIN(__builtin_altivec_vminfp, "V4fV4fV4f", "") + +BUILTIN(__builtin_altivec_mtvscr, "vV4i", "") + +BUILTIN(__builtin_altivec_vrefp, "V4fV4f", "") + +BUILTIN(__builtin_altivec_vrlb, "V16cV16cV16Uc", "") +BUILTIN(__builtin_altivec_vrlh, "V8sV8sV8Us", "") +BUILTIN(__builtin_altivec_vrlw, "V4iV4iV4Ui", "") +BUILTIN(__builtin_altivec_vrld, "V2LLiV2LLiV2ULLi", "") + +BUILTIN(__builtin_altivec_vsel_4si, "V4iV4iV4iV4Ui", "") + +BUILTIN(__builtin_altivec_vsl, "V4iV4iV4i", "") +BUILTIN(__builtin_altivec_vslo, "V4iV4iV4i", "") + +BUILTIN(__builtin_altivec_vsrab, "V16cV16cV16Uc", "") +BUILTIN(__builtin_altivec_vsrah, "V8sV8sV8Us", "") +BUILTIN(__builtin_altivec_vsraw, "V4iV4iV4Ui", "") + +BUILTIN(__builtin_altivec_vsr, "V4iV4iV4i", "") +BUILTIN(__builtin_altivec_vsro, "V4iV4iV4i", "") + +BUILTIN(__builtin_altivec_vrfin, "V4fV4f", "") + +BUILTIN(__builtin_altivec_vrsqrtefp, "V4fV4f", "") + +BUILTIN(__builtin_altivec_vsubcuw, "V4UiV4UiV4Ui", "") + +BUILTIN(__builtin_altivec_vsum4sbs, "V4SiV16ScV4Si", "") +BUILTIN(__builtin_altivec_vsum4ubs, "V4UiV16UcV4Ui", "") +BUILTIN(__builtin_altivec_vsum4shs, "V4SiV8SsV4Si", "") + +BUILTIN(__builtin_altivec_vsum2sws, "V4SiV4SiV4Si", "") + +BUILTIN(__builtin_altivec_vsumsws, "V4SiV4SiV4Si", "") + +BUILTIN(__builtin_altivec_vrfiz, "V4fV4f", "") + +BUILTIN(__builtin_altivec_vupkhsb, "V8sV16c", "") +BUILTIN(__builtin_altivec_vupkhpx, "V4UiV8s", "") +BUILTIN(__builtin_altivec_vupkhsh, "V4iV8s", "") +BUILTIN(__builtin_altivec_vupkhsw, "V2LLiV4i", "") + +BUILTIN(__builtin_altivec_vupklsb, "V8sV16c", "") +BUILTIN(__builtin_altivec_vupklpx, "V4UiV8s", "") +BUILTIN(__builtin_altivec_vupklsh, "V4iV8s", "") +BUILTIN(__builtin_altivec_vupklsw, "V2LLiV4i", "") + +BUILTIN(__builtin_altivec_vcmpbfp_p, "iiV4fV4f", "") + +BUILTIN(__builtin_altivec_vcmpgefp_p, "iiV4fV4f", "") + +BUILTIN(__builtin_altivec_vcmpequb_p, "iiV16cV16c", "") +BUILTIN(__builtin_altivec_vcmpequh_p, "iiV8sV8s", "") +BUILTIN(__builtin_altivec_vcmpequw_p, "iiV4iV4i", "") +BUILTIN(__builtin_altivec_vcmpequd_p, "iiV2LLiV2LLi", "") +BUILTIN(__builtin_altivec_vcmpeqfp_p, "iiV4fV4f", "") + +BUILTIN(__builtin_altivec_vcmpneb_p, "iiV16cV16c", "") +BUILTIN(__builtin_altivec_vcmpneh_p, "iiV8sV8s", "") +BUILTIN(__builtin_altivec_vcmpnew_p, "iiV4iV4i", "") +BUILTIN(__builtin_altivec_vcmpned_p, "iiV2LLiV2LLi", "") + +BUILTIN(__builtin_altivec_vcmpgtsb_p, "iiV16ScV16Sc", "") +BUILTIN(__builtin_altivec_vcmpgtub_p, "iiV16UcV16Uc", "") +BUILTIN(__builtin_altivec_vcmpgtsh_p, "iiV8SsV8Ss", "") +BUILTIN(__builtin_altivec_vcmpgtuh_p, "iiV8UsV8Us", "") +BUILTIN(__builtin_altivec_vcmpgtsw_p, "iiV4SiV4Si", "") +BUILTIN(__builtin_altivec_vcmpgtuw_p, "iiV4UiV4Ui", "") +BUILTIN(__builtin_altivec_vcmpgtsd_p, "iiV2LLiV2LLi", "") +BUILTIN(__builtin_altivec_vcmpgtud_p, "iiV2ULLiV2ULLi", "") +BUILTIN(__builtin_altivec_vcmpgtfp_p, "iiV4fV4f", "") + +BUILTIN(__builtin_altivec_vgbbd, "V16UcV16Uc", "") +BUILTIN(__builtin_altivec_vbpermq, "V2ULLiV16UcV16Uc", "") + +// P8 Crypto built-ins. +BUILTIN(__builtin_altivec_crypto_vsbox, "V2ULLiV2ULLi", "") +BUILTIN(__builtin_altivec_crypto_vpermxor, "V16UcV16UcV16UcV16Uc", "") +BUILTIN(__builtin_altivec_crypto_vshasigmaw, "V4UiV4UiIiIi", "") +BUILTIN(__builtin_altivec_crypto_vshasigmad, "V2ULLiV2ULLiIiIi", "") +BUILTIN(__builtin_altivec_crypto_vcipher, "V2ULLiV2ULLiV2ULLi", "") +BUILTIN(__builtin_altivec_crypto_vcipherlast, "V2ULLiV2ULLiV2ULLi", "") +BUILTIN(__builtin_altivec_crypto_vncipher, "V2ULLiV2ULLiV2ULLi", "") +BUILTIN(__builtin_altivec_crypto_vncipherlast, "V2ULLiV2ULLiV2ULLi", "") +BUILTIN(__builtin_altivec_crypto_vpmsumb, "V16UcV16UcV16Uc", "") +BUILTIN(__builtin_altivec_crypto_vpmsumh, "V8UsV8UsV8Us", "") +BUILTIN(__builtin_altivec_crypto_vpmsumw, "V4UiV4UiV4Ui", "") +BUILTIN(__builtin_altivec_crypto_vpmsumd, "V2ULLiV2ULLiV2ULLi", "") + +BUILTIN(__builtin_altivec_vclzb, "V16UcV16Uc", "") +BUILTIN(__builtin_altivec_vclzh, "V8UsV8Us", "") +BUILTIN(__builtin_altivec_vclzw, "V4UiV4Ui", "") +BUILTIN(__builtin_altivec_vclzd, "V2ULLiV2ULLi", "") +BUILTIN(__builtin_altivec_vctzb, "V16UcV16Uc", "") +BUILTIN(__builtin_altivec_vctzh, "V8UsV8Us", "") +BUILTIN(__builtin_altivec_vctzw, "V4UiV4Ui", "") +BUILTIN(__builtin_altivec_vctzd, "V2ULLiV2ULLi", "") + +BUILTIN(__builtin_altivec_vclzlsbb, "SiV16Uc", "") +BUILTIN(__builtin_altivec_vctzlsbb, "SiV16Uc", "") +BUILTIN(__builtin_altivec_vprtybw, "V4UiV4Ui", "") +BUILTIN(__builtin_altivec_vprtybd, "V2ULLiV2ULLi", "") +BUILTIN(__builtin_altivec_vprtybq, "V1ULLLiV1ULLLi", "") + +// Vector population count built-ins +BUILTIN(__builtin_altivec_vpopcntb, "V16UcV16Uc", "") +BUILTIN(__builtin_altivec_vpopcnth, "V8UsV8Us", "") +BUILTIN(__builtin_altivec_vpopcntw, "V4UiV4Ui", "") +BUILTIN(__builtin_altivec_vpopcntd, "V2ULLiV2ULLi", "") + +// Absolute difference built-ins +BUILTIN(__builtin_altivec_vabsdub, "V16UcV16UcV16Uc", "") +BUILTIN(__builtin_altivec_vabsduh, "V8UsV8UsV8Us", "") +BUILTIN(__builtin_altivec_vabsduw, "V4UiV4UiV4Ui", "") + +// P9 Shift built-ins. +BUILTIN(__builtin_altivec_vslv, "V16UcV16UcV16Uc", "") +BUILTIN(__builtin_altivec_vsrv, "V16UcV16UcV16Uc", "") + +// P9 Vector rotate built-ins +BUILTIN(__builtin_altivec_vrlwmi, "V4UiV4UiV4UiV4Ui", "") +BUILTIN(__builtin_altivec_vrldmi, "V2ULLiV2ULLiV2ULLiV2ULLi", "") +BUILTIN(__builtin_altivec_vrlwnm, "V4UiV4UiV4Ui", "") +BUILTIN(__builtin_altivec_vrldnm, "V2ULLiV2ULLiV2ULLi", "") + +// VSX built-ins. + +BUILTIN(__builtin_vsx_lxvd2x, "V2divC*", "") +BUILTIN(__builtin_vsx_lxvw4x, "V4iivC*", "") +BUILTIN(__builtin_vsx_lxvd2x_be, "V2dSLLivC*", "") +BUILTIN(__builtin_vsx_lxvw4x_be, "V4iSLLivC*", "") + +BUILTIN(__builtin_vsx_stxvd2x, "vV2div*", "") +BUILTIN(__builtin_vsx_stxvw4x, "vV4iiv*", "") +BUILTIN(__builtin_vsx_stxvd2x_be, "vV2dSLLivC*", "") +BUILTIN(__builtin_vsx_stxvw4x_be, "vV4iSLLivC*", "") + +BUILTIN(__builtin_vsx_lxvl, "V4ivC*ULLi", "") +BUILTIN(__builtin_vsx_lxvll, "V4ivC*ULLi", "") +BUILTIN(__builtin_vsx_stxvl, "vV4iv*ULLi", "") +BUILTIN(__builtin_vsx_stxvll, "vV4iv*ULLi", "") + +BUILTIN(__builtin_vsx_xvmaxdp, "V2dV2dV2d", "") +BUILTIN(__builtin_vsx_xvmaxsp, "V4fV4fV4f", "") +BUILTIN(__builtin_vsx_xsmaxdp, "ddd", "") + +BUILTIN(__builtin_vsx_xvmindp, "V2dV2dV2d", "") +BUILTIN(__builtin_vsx_xvminsp, "V4fV4fV4f", "") +BUILTIN(__builtin_vsx_xsmindp, "ddd", "") + +BUILTIN(__builtin_vsx_xvdivdp, "V2dV2dV2d", "") +BUILTIN(__builtin_vsx_xvdivsp, "V4fV4fV4f", "") + +BUILTIN(__builtin_vsx_xvrdpip, "V2dV2d", "") +BUILTIN(__builtin_vsx_xvrspip, "V4fV4f", "") + +BUILTIN(__builtin_vsx_xvcmpeqdp, "V2ULLiV2dV2d", "") +BUILTIN(__builtin_vsx_xvcmpeqsp, "V4UiV4fV4f", "") + +BUILTIN(__builtin_vsx_xvcmpeqdp_p, "iiV2dV2d", "") +BUILTIN(__builtin_vsx_xvcmpeqsp_p, "iiV4fV4f", "") + +BUILTIN(__builtin_vsx_xvcmpgedp, "V2ULLiV2dV2d", "") +BUILTIN(__builtin_vsx_xvcmpgesp, "V4UiV4fV4f", "") + +BUILTIN(__builtin_vsx_xvcmpgedp_p, "iiV2dV2d", "") +BUILTIN(__builtin_vsx_xvcmpgesp_p, "iiV4fV4f", "") + +BUILTIN(__builtin_vsx_xvcmpgtdp, "V2ULLiV2dV2d", "") +BUILTIN(__builtin_vsx_xvcmpgtsp, "V4UiV4fV4f", "") + +BUILTIN(__builtin_vsx_xvcmpgtdp_p, "iiV2dV2d", "") +BUILTIN(__builtin_vsx_xvcmpgtsp_p, "iiV4fV4f", "") + +BUILTIN(__builtin_vsx_xvrdpim, "V2dV2d", "") +BUILTIN(__builtin_vsx_xvrspim, "V4fV4f", "") + +BUILTIN(__builtin_vsx_xvrdpi, "V2dV2d", "") +BUILTIN(__builtin_vsx_xvrspi, "V4fV4f", "") + +BUILTIN(__builtin_vsx_xvrdpic, "V2dV2d", "") +BUILTIN(__builtin_vsx_xvrspic, "V4fV4f", "") + +BUILTIN(__builtin_vsx_xvrdpiz, "V2dV2d", "") +BUILTIN(__builtin_vsx_xvrspiz, "V4fV4f", "") + +BUILTIN(__builtin_vsx_xvmaddadp, "V2dV2dV2dV2d", "") +BUILTIN(__builtin_vsx_xvmaddasp, "V4fV4fV4fV4f", "") + +BUILTIN(__builtin_vsx_xvmsubadp, "V2dV2dV2dV2d", "") +BUILTIN(__builtin_vsx_xvmsubasp, "V4fV4fV4fV4f", "") + +BUILTIN(__builtin_vsx_xvmuldp, "V2dV2dV2d", "") +BUILTIN(__builtin_vsx_xvmulsp, "V4fV4fV4f", "") + +BUILTIN(__builtin_vsx_xvnmaddadp, "V2dV2dV2dV2d", "") +BUILTIN(__builtin_vsx_xvnmaddasp, "V4fV4fV4fV4f", "") + +BUILTIN(__builtin_vsx_xvnmsubadp, "V2dV2dV2dV2d", "") +BUILTIN(__builtin_vsx_xvnmsubasp, "V4fV4fV4fV4f", "") + +BUILTIN(__builtin_vsx_xvredp, "V2dV2d", "") +BUILTIN(__builtin_vsx_xvresp, "V4fV4f", "") + +BUILTIN(__builtin_vsx_xvrsqrtedp, "V2dV2d", "") +BUILTIN(__builtin_vsx_xvrsqrtesp, "V4fV4f", "") + +BUILTIN(__builtin_vsx_xvsqrtdp, "V2dV2d", "") +BUILTIN(__builtin_vsx_xvsqrtsp, "V4fV4f", "") + +BUILTIN(__builtin_vsx_xxleqv, "V4UiV4UiV4Ui", "") + +BUILTIN(__builtin_vsx_xvcpsgndp, "V2dV2dV2d", "") +BUILTIN(__builtin_vsx_xvcpsgnsp, "V4fV4fV4f", "") + +BUILTIN(__builtin_vsx_xvabssp, "V4fV4f", "") +BUILTIN(__builtin_vsx_xvabsdp, "V2dV2d", "") + +// vector Insert/Extract exponent/significand builtins +BUILTIN(__builtin_vsx_xviexpdp, "V2dV2ULLiV2ULLi", "") +BUILTIN(__builtin_vsx_xviexpsp, "V4fV4UiV4Ui", "") +BUILTIN(__builtin_vsx_xvxexpdp, "V2ULLiV2d", "") +BUILTIN(__builtin_vsx_xvxexpsp, "V4UiV4f", "") +BUILTIN(__builtin_vsx_xvxsigdp, "V2ULLiV2d", "") +BUILTIN(__builtin_vsx_xvxsigsp, "V4UiV4f", "") + +// Conversion builtins +BUILTIN(__builtin_vsx_xvcvdpsxws, "V4SiV2d", "") +BUILTIN(__builtin_vsx_xvcvdpuxws, "V4UiV2d", "") +BUILTIN(__builtin_vsx_xvcvsxwdp, "V2dV4Si", "") +BUILTIN(__builtin_vsx_xvcvuxwdp, "V2dV4Ui", "") +BUILTIN(__builtin_vsx_xvcvspdp, "V2dV4f", "") +BUILTIN(__builtin_vsx_xvcvsxdsp, "V4fV2SLLi", "") +BUILTIN(__builtin_vsx_xvcvuxdsp, "V4fV2ULLi", "") +BUILTIN(__builtin_vsx_xvcvdpsp, "V4fV2d", "") + +BUILTIN(__builtin_vsx_xvcvsphp, "V4fV4f", "") +BUILTIN(__builtin_vsx_xvcvhpsp, "V4fV8Us", "") + +// Vector Test Data Class builtins +BUILTIN(__builtin_vsx_xvtstdcdp, "V2ULLiV2dIi", "") +BUILTIN(__builtin_vsx_xvtstdcsp, "V4UiV4fIi", "") + +BUILTIN(__builtin_vsx_insertword, "V16UcV4UiV16UcIi", "") +BUILTIN(__builtin_vsx_extractuword, "V2ULLiV16UcIi", "") + +BUILTIN(__builtin_vsx_xxpermdi, "v.", "t") +BUILTIN(__builtin_vsx_xxsldwi, "v.", "t") + +// Float 128 built-ins +BUILTIN(__builtin_sqrtf128_round_to_odd, "LLdLLd", "") +BUILTIN(__builtin_addf128_round_to_odd, "LLdLLdLLd", "") +BUILTIN(__builtin_subf128_round_to_odd, "LLdLLdLLd", "") +BUILTIN(__builtin_mulf128_round_to_odd, "LLdLLdLLd", "") +BUILTIN(__builtin_divf128_round_to_odd, "LLdLLdLLd", "") +BUILTIN(__builtin_fmaf128_round_to_odd, "LLdLLdLLdLLd", "") +BUILTIN(__builtin_truncf128_round_to_odd, "dLLd", "") +BUILTIN(__builtin_vsx_scalar_extract_expq, "ULLiLLd", "") +BUILTIN(__builtin_vsx_scalar_insert_exp_qp, "LLdLLdULLi", "") + +// HTM builtins +BUILTIN(__builtin_tbegin, "UiUIi", "") +BUILTIN(__builtin_tend, "UiUIi", "") + +BUILTIN(__builtin_tabort, "UiUi", "") +BUILTIN(__builtin_tabortdc, "UiUiUiUi", "") +BUILTIN(__builtin_tabortdci, "UiUiUii", "") +BUILTIN(__builtin_tabortwc, "UiUiUiUi", "") +BUILTIN(__builtin_tabortwci, "UiUiUii", "") + +BUILTIN(__builtin_tcheck, "Ui", "") +BUILTIN(__builtin_treclaim, "UiUi", "") +BUILTIN(__builtin_trechkpt, "Ui", "") +BUILTIN(__builtin_tsr, "UiUi", "") + +BUILTIN(__builtin_tendall, "Ui", "") +BUILTIN(__builtin_tresume, "Ui", "") +BUILTIN(__builtin_tsuspend, "Ui", "") + +BUILTIN(__builtin_get_texasr, "LUi", "c") +BUILTIN(__builtin_get_texasru, "LUi", "c") +BUILTIN(__builtin_get_tfhar, "LUi", "c") +BUILTIN(__builtin_get_tfiar, "LUi", "c") + +BUILTIN(__builtin_set_texasr, "vLUi", "c") +BUILTIN(__builtin_set_texasru, "vLUi", "c") +BUILTIN(__builtin_set_tfhar, "vLUi", "c") +BUILTIN(__builtin_set_tfiar, "vLUi", "c") + +BUILTIN(__builtin_ttest, "LUi", "") + +// Scalar built-ins +BUILTIN(__builtin_divwe, "SiSiSi", "") +BUILTIN(__builtin_divweu, "UiUiUi", "") +BUILTIN(__builtin_divde, "SLLiSLLiSLLi", "") +BUILTIN(__builtin_divdeu, "ULLiULLiULLi", "") +BUILTIN(__builtin_bpermd, "SLLiSLLiSLLi", "") + +// Vector int128 (un)pack +BUILTIN(__builtin_unpack_vector_int128, "ULLiV1LLLii", "") +BUILTIN(__builtin_pack_vector_int128, "V1LLLiULLiULLi", "") + +// FIXME: Obviously incomplete. + +#undef BUILTIN diff --git a/clang-r353983/include/clang/Basic/BuiltinsSystemZ.def b/clang-r353983/include/clang/Basic/BuiltinsSystemZ.def new file mode 100644 index 00000000..9133b3f7 --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsSystemZ.def @@ -0,0 +1,280 @@ +//===-- BuiltinsSystemZ.def - SystemZ Builtin function database -*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the SystemZ-specific builtin function database. Users of +// this file must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// The format of this database matches clang/Basic/Builtins.def. + +#if defined(BUILTIN) && !defined(TARGET_BUILTIN) +# define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS) +#endif + +// Transactional-memory intrinsics +TARGET_BUILTIN(__builtin_tbegin, "iv*", "j", "transactional-execution") +TARGET_BUILTIN(__builtin_tbegin_nofloat, "iv*", "j", "transactional-execution") +TARGET_BUILTIN(__builtin_tbeginc, "v", "nj", "transactional-execution") +TARGET_BUILTIN(__builtin_tabort, "vi", "r", "transactional-execution") +TARGET_BUILTIN(__builtin_tend, "i", "n", "transactional-execution") +TARGET_BUILTIN(__builtin_tx_nesting_depth, "i", "nc", "transactional-execution") +TARGET_BUILTIN(__builtin_tx_assist, "vi", "n", "transactional-execution") +TARGET_BUILTIN(__builtin_non_tx_store, "vULi*ULi", "", "transactional-execution") + +// Vector intrinsics. +// These all map directly to z instructions, except that some variants ending +// in "s" have a final "int *" that receives the post-instruction CC value. + +// Vector support instructions (chapter 21 of the PoP) +TARGET_BUILTIN(__builtin_s390_lcbb, "UivC*Ii", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vlbb, "V16ScvC*Ii", "", "vector") +TARGET_BUILTIN(__builtin_s390_vll, "V16ScUivC*", "", "vector") +TARGET_BUILTIN(__builtin_s390_vstl, "vV16ScUiv*", "", "vector") +TARGET_BUILTIN(__builtin_s390_vperm, "V16UcV16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpdi, "V2ULLiV2ULLiV2ULLiIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpksh, "V16ScV8SsV8Ss", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpkshs, "V16ScV8SsV8Ssi*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpksf, "V8SsV4SiV4Si", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpksfs, "V8SsV4SiV4Sii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpksg, "V4SiV2SLLiV2SLLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpksgs, "V4SiV2SLLiV2SLLii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpklsh, "V16UcV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpklshs, "V16UcV8UsV8Usi*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpklsf, "V8UsV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpklsfs, "V8UsV4UiV4Uii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpklsg, "V4UiV2ULLiV2ULLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpklsgs, "V4UiV2ULLiV2ULLii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vuphb, "V8SsV16Sc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vuphh, "V4SiV8Ss", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vuphf, "V2SLLiV4Si", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vuplb, "V8SsV16Sc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vuplhw, "V4SiV8Ss", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vuplf, "V2SLLiV4Si", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vuplhb, "V8UsV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vuplhh, "V4UiV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vuplhf, "V2ULLiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vupllb, "V8UsV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vupllh, "V4UiV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vupllf, "V2ULLiV4Ui", "nc", "vector") + +// Vector integer instructions (chapter 22 of the PoP) +TARGET_BUILTIN(__builtin_s390_vaq, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vacq, "V16UcV16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vaccb, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vacch, "V8UsV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vaccf, "V4UiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vaccg, "V2ULLiV2ULLiV2ULLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vaccq, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vacccq, "V16UcV16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vavgb, "V16ScV16ScV16Sc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vavgh, "V8SsV8SsV8Ss", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vavgf, "V4SiV4SiV4Si", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vavgg, "V2SLLiV2SLLiV2SLLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vavglb, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vavglh, "V8UsV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vavglf, "V4UiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vavglg, "V2ULLiV2ULLiV2ULLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vceqbs, "V16ScV16ScV16Sci*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vceqhs, "V8SsV8SsV8Ssi*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vceqfs, "V4SiV4SiV4Sii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vceqgs, "V2SLLiV2SLLiV2SLLii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vchbs, "V16ScV16ScV16Sci*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vchhs, "V8SsV8SsV8Ssi*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vchfs, "V4SiV4SiV4Sii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vchgs, "V2SLLiV2SLLiV2SLLii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vchlbs, "V16ScV16UcV16Uci*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vchlhs, "V8SsV8UsV8Usi*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vchlfs, "V4SiV4UiV4Uii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vchlgs, "V2SLLiV2ULLiV2ULLii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vcksm, "V4UiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vclzb, "V16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vclzh, "V8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vclzf, "V4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vclzg, "V2ULLiV2ULLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vctzb, "V16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vctzh, "V8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vctzf, "V4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vctzg, "V2ULLiV2ULLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_verimb, "V16UcV16UcV16UcV16UcIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_verimh, "V8UsV8UsV8UsV8UsIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_verimf, "V4UiV4UiV4UiV4UiIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_verimg, "V2ULLiV2ULLiV2ULLiV2ULLiIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_verllb, "V16UcV16UcUi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_verllh, "V8UsV8UsUi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_verllf, "V4UiV4UiUi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_verllg, "V2ULLiV2ULLiUi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_verllvb, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_verllvh, "V8UsV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_verllvf, "V4UiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_verllvg, "V2ULLiV2ULLiV2ULLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vgfmb, "V8UsV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vgfmh, "V4UiV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vgfmf, "V2ULLiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vgfmg, "V16UcV2ULLiV2ULLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vgfmab, "V8UsV16UcV16UcV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vgfmah, "V4UiV8UsV8UsV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vgfmaf, "V2ULLiV4UiV4UiV2ULLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vgfmag, "V16UcV2ULLiV2ULLiV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmahb, "V16ScV16ScV16ScV16Sc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmahh, "V8SsV8SsV8SsV8Ss", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmahf, "V4SiV4SiV4SiV4Si", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmalhb, "V16UcV16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmalhh, "V8UsV8UsV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmalhf, "V4UiV4UiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmaeb, "V8SsV16ScV16ScV8Ss", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmaeh, "V4SiV8SsV8SsV4Si", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmaef, "V2SLLiV4SiV4SiV2SLLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmaleb, "V8UsV16UcV16UcV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmaleh, "V4UiV8UsV8UsV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmalef, "V2ULLiV4UiV4UiV2ULLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmaob, "V8SsV16ScV16ScV8Ss", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmaoh, "V4SiV8SsV8SsV4Si", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmaof, "V2SLLiV4SiV4SiV2SLLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmalob, "V8UsV16UcV16UcV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmaloh, "V4UiV8UsV8UsV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmalof, "V2ULLiV4UiV4UiV2ULLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmhb, "V16ScV16ScV16Sc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmhh, "V8SsV8SsV8Ss", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmhf, "V4SiV4SiV4Si", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmlhb, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmlhh, "V8UsV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmlhf, "V4UiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmeb, "V8SsV16ScV16Sc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmeh, "V4SiV8SsV8Ss", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmef, "V2SLLiV4SiV4Si", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmleb, "V8UsV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmleh, "V4UiV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmlef, "V2ULLiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmob, "V8SsV16ScV16Sc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmoh, "V4SiV8SsV8Ss", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmof, "V2SLLiV4SiV4Si", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmlob, "V8UsV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmloh, "V4UiV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vmlof, "V2ULLiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpopctb, "V16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpopcth, "V8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpopctf, "V4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vpopctg, "V2ULLiV2ULLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsq, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsbcbiq, "V16UcV16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsbiq, "V16UcV16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vscbib, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vscbih, "V8UsV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vscbif, "V4UiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vscbig, "V2ULLiV2ULLiV2ULLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vscbiq, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsl, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vslb, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsldb, "V16UcV16UcV16UcIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsra, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsrab, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsrl, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsrlb, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsumb, "V4UiV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsumh, "V4UiV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsumgh, "V2ULLiV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsumgf, "V2ULLiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsumqf, "V16UcV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vsumqg, "V16UcV2ULLiV2ULLi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vtm, "iV16UcV16Uc", "nc", "vector") + +// Vector string instructions (chapter 23 of the PoP) +TARGET_BUILTIN(__builtin_s390_vfaeb, "V16UcV16UcV16UcIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfaebs, "V16UcV16UcV16UcIii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfaeh, "V8UsV8UsV8UsIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfaehs, "V8UsV8UsV8UsIii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfaef, "V4UiV4UiV4UiIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfaefs, "V4UiV4UiV4UiIii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfaezb, "V16UcV16UcV16UcIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfaezbs, "V16UcV16UcV16UcIii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfaezh, "V8UsV8UsV8UsIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfaezhs, "V8UsV8UsV8UsIii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfaezf, "V4UiV4UiV4UiIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfaezfs, "V4UiV4UiV4UiIii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeeb, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeebs, "V16UcV16UcV16Uci*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeeh, "V8UsV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeehs, "V8UsV8UsV8Usi*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeef, "V4UiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeefs, "V4UiV4UiV4Uii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeezb, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeezbs, "V16UcV16UcV16Uci*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeezh, "V8UsV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeezhs, "V8UsV8UsV8Usi*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeezf, "V4UiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeezfs, "V4UiV4UiV4Uii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeneb, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfenebs, "V16UcV16UcV16Uci*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfeneh, "V8UsV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfenehs, "V8UsV8UsV8Usi*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfenef, "V4UiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfenefs, "V4UiV4UiV4Uii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfenezb, "V16UcV16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfenezbs, "V16UcV16UcV16Uci*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfenezh, "V8UsV8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfenezhs, "V8UsV8UsV8Usi*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfenezf, "V4UiV4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfenezfs, "V4UiV4UiV4Uii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vistrb, "V16UcV16Uc", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vistrbs, "V16UcV16Uci*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vistrh, "V8UsV8Us", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vistrhs, "V8UsV8Usi*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vistrf, "V4UiV4Ui", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vistrfs, "V4UiV4Uii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vstrcb, "V16UcV16UcV16UcV16UcIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vstrcbs, "V16UcV16UcV16UcV16UcIii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vstrch, "V8UsV8UsV8UsV8UsIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vstrchs, "V8UsV8UsV8UsV8UsIii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vstrcf, "V4UiV4UiV4UiV4UiIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vstrcfs, "V4UiV4UiV4UiV4UiIii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vstrczb, "V16UcV16UcV16UcV16UcIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vstrczbs, "V16UcV16UcV16UcV16UcIii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vstrczh, "V8UsV8UsV8UsV8UsIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vstrczhs, "V8UsV8UsV8UsV8UsIii*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vstrczf, "V4UiV4UiV4UiV4UiIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vstrczfs, "V4UiV4UiV4UiV4UiIii*", "nc", "vector") + +// Vector floating-point instructions (chapter 24 of the PoP) +TARGET_BUILTIN(__builtin_s390_vfcedbs, "V2SLLiV2dV2di*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfchdbs, "V2SLLiV2dV2di*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfchedbs, "V2SLLiV2dV2di*", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfidb, "V2dV2dIiIi", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vflndb, "V2dV2d", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vflpdb, "V2dV2d", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfmadb, "V2dV2dV2dV2d", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfmsdb, "V2dV2dV2dV2d", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vfsqdb, "V2dV2d", "nc", "vector") +TARGET_BUILTIN(__builtin_s390_vftcidb, "V2SLLiV2dIii*", "nc", "vector") + +// Vector-enhancements facility 1 intrinsics. +TARGET_BUILTIN(__builtin_s390_vlrl, "V16ScUivC*", "", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vstrl, "vV16ScUiv*", "", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vbperm, "V2ULLiV16UcV16Uc", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vmslg, "V16UcV2ULLiV2ULLiV16UcIi", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfmaxdb, "V2dV2dV2dIi", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfmindb, "V2dV2dV2dIi", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfnmadb, "V2dV2dV2dV2d", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfnmsdb, "V2dV2dV2dV2d", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfcesbs, "V4SiV4fV4fi*", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfchsbs, "V4SiV4fV4fi*", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfchesbs, "V4SiV4fV4fi*", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfisb, "V4fV4fIiIi", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfmaxsb, "V4fV4fV4fIi", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfminsb, "V4fV4fV4fIi", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vflnsb, "V4fV4f", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vflpsb, "V4fV4f", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfmasb, "V4fV4fV4fV4f", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfmssb, "V4fV4fV4fV4f", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfnmasb, "V4fV4fV4fV4f", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfnmssb, "V4fV4fV4fV4f", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vfsqsb, "V4fV4f", "nc", "vector-enhancements-1") +TARGET_BUILTIN(__builtin_s390_vftcisb, "V4SiV4fIii*", "nc", "vector-enhancements-1") + +#undef BUILTIN +#undef TARGET_BUILTIN diff --git a/clang-r353983/include/clang/Basic/BuiltinsWebAssembly.def b/clang-r353983/include/clang/Basic/BuiltinsWebAssembly.def new file mode 100644 index 00000000..0241436b --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsWebAssembly.def @@ -0,0 +1,112 @@ +// BuiltinsWebAssembly.def - WebAssembly builtin function database -*- C++ -*-// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// This file defines the WebAssembly-specific builtin function database. +/// Users of this file must define the BUILTIN macro to make use of this +/// information. +/// +//===----------------------------------------------------------------------===// + +// The format of this database matches clang/Basic/Builtins.def. + +#if defined(BUILTIN) && !defined(TARGET_BUILTIN) +# define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS) +#endif + +// Query the current memory size, and increase the current memory size. +// Note that memory.size is not "c" (readnone) because it must be sequenced +// with respect to memory.grow calls. +BUILTIN(__builtin_wasm_memory_size, "zIi", "n") +BUILTIN(__builtin_wasm_memory_grow, "zIiz", "n") + +// Bulk memory builtins +TARGET_BUILTIN(__builtin_wasm_memory_init, "vIUiIUiv*UiUi", "", "bulk-memory") +TARGET_BUILTIN(__builtin_wasm_data_drop, "vIUi", "", "bulk-memory") + +// Floating point min/max +BUILTIN(__builtin_wasm_min_f32, "fff", "nc") +BUILTIN(__builtin_wasm_max_f32, "fff", "nc") +BUILTIN(__builtin_wasm_min_f64, "ddd", "nc") +BUILTIN(__builtin_wasm_max_f64, "ddd", "nc") + +// Exception handling builtins. +TARGET_BUILTIN(__builtin_wasm_throw, "vUiv*", "r", "exception-handling") +TARGET_BUILTIN(__builtin_wasm_rethrow, "v", "r", "exception-handling") + +// Atomic wait and notify. +BUILTIN(__builtin_wasm_atomic_wait_i32, "ii*iLLi", "n") +BUILTIN(__builtin_wasm_atomic_wait_i64, "iLLi*LLiLLi", "n") +BUILTIN(__builtin_wasm_atomic_notify, "Uii*Ui", "n") + +// Saturating fp-to-int conversions +TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i32_f32, "if", "nc", "nontrapping-fptoint") +TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i32_f32, "if", "nc", "nontrapping-fptoint") +TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i32_f64, "id", "nc", "nontrapping-fptoint") +TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i32_f64, "id", "nc", "nontrapping-fptoint") +TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i64_f32, "LLif", "nc", "nontrapping-fptoint") +TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i64_f32, "LLif", "nc", "nontrapping-fptoint") +TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i64_f64, "LLid", "nc", "nontrapping-fptoint") +TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i64_f64, "LLid", "nc", "nontrapping-fptoint") + +// SIMD builtins +TARGET_BUILTIN(__builtin_wasm_extract_lane_s_i8x16, "iV16cIi", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_extract_lane_u_i8x16, "iV16cIi", "nc", "unimplemented-simd128") +TARGET_BUILTIN(__builtin_wasm_extract_lane_s_i16x8, "iV8sIi", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_extract_lane_u_i16x8, "iV8sIi", "nc", "unimplemented-simd128") +TARGET_BUILTIN(__builtin_wasm_extract_lane_i32x4, "iV4iIi", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_extract_lane_i64x2, "LLiV2LLiIi", "nc", "unimplemented-simd128") +TARGET_BUILTIN(__builtin_wasm_extract_lane_f32x4, "fV4fIi", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_extract_lane_f64x2, "dV2dIi", "nc", "unimplemented-simd128") + +TARGET_BUILTIN(__builtin_wasm_replace_lane_i8x16, "V16cV16cIii", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_replace_lane_i16x8, "V8sV8sIii", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_replace_lane_i32x4, "V4iV4iIii", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_replace_lane_i64x2, "V2LLiV2LLiIiLLi", "nc", "unimplemented-simd128") +TARGET_BUILTIN(__builtin_wasm_replace_lane_f32x4, "V4fV4fIif", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_replace_lane_f64x2, "V2dV2dIid", "nc", "unimplemented-simd128") + +TARGET_BUILTIN(__builtin_wasm_add_saturate_s_i8x16, "V16cV16cV16c", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_add_saturate_u_i8x16, "V16cV16cV16c", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_add_saturate_s_i16x8, "V8sV8sV8s", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_add_saturate_u_i16x8, "V8sV8sV8s", "nc", "simd128") + +TARGET_BUILTIN(__builtin_wasm_sub_saturate_s_i8x16, "V16cV16cV16c", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_sub_saturate_u_i8x16, "V16cV16cV16c", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_sub_saturate_s_i16x8, "V8sV8sV8s", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_sub_saturate_u_i16x8, "V8sV8sV8s", "nc", "simd128") + +TARGET_BUILTIN(__builtin_wasm_bitselect, "V4iV4iV4iV4i", "nc", "simd128") + +TARGET_BUILTIN(__builtin_wasm_any_true_i8x16, "iV16c", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_any_true_i16x8, "iV8s", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_any_true_i32x4, "iV4i", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_any_true_i64x2, "iV2LLi", "nc", "unimplemented-simd128") +TARGET_BUILTIN(__builtin_wasm_all_true_i8x16, "iV16c", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_all_true_i16x8, "iV8s", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_all_true_i32x4, "iV4i", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_all_true_i64x2, "iV2LLi", "nc", "unimplemented-simd128") + +TARGET_BUILTIN(__builtin_wasm_abs_f32x4, "V4fV4f", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_abs_f64x2, "V2dV2d", "nc", "unimplemented-simd128") + +TARGET_BUILTIN(__builtin_wasm_min_f32x4, "V4fV4fV4f", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_max_f32x4, "V4fV4fV4f", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_min_f64x2, "V2dV2dV2d", "nc", "unimplemented-simd128") +TARGET_BUILTIN(__builtin_wasm_max_f64x2, "V2dV2dV2d", "nc", "unimplemented-simd128") + +TARGET_BUILTIN(__builtin_wasm_sqrt_f32x4, "V4fV4f", "nc", "unimplemented-simd128") +TARGET_BUILTIN(__builtin_wasm_sqrt_f64x2, "V2dV2d", "nc", "unimplemented-simd128") + +TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i32x4_f32x4, "V4iV4f", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i32x4_f32x4, "V4iV4f", "nc", "simd128") +TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i64x2_f64x2, "V2LLiV2d", "nc", "unimplemented-simd128") +TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i64x2_f64x2, "V2LLiV2d", "nc", "unimplemented-simd128") + +#undef BUILTIN +#undef TARGET_BUILTIN diff --git a/clang-r353983/include/clang/Basic/BuiltinsX86.def b/clang-r353983/include/clang/Basic/BuiltinsX86.def new file mode 100644 index 00000000..373ff247 --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsX86.def @@ -0,0 +1,1905 @@ +//===--- BuiltinsX86.def - X86 Builtin function database --------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the X86-specific builtin function database. Users of +// this file must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// The format of this database matches clang/Basic/Builtins.def. + +// FIXME: Ideally we would be able to pull this information from what +// LLVM already knows about X86 builtins. We need to match the LLVM +// definition anyway, since code generation will lower to the +// intrinsic if one exists. + +#if defined(BUILTIN) && !defined(TARGET_BUILTIN) +# define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS) +#endif + +#if defined(BUILTIN) && !defined(TARGET_HEADER_BUILTIN) +# define TARGET_HEADER_BUILTIN(ID, TYPE, ATTRS, HEADER, LANG, FEATURE) BUILTIN(ID, TYPE, ATTRS) +#endif + +// Miscellaneous builtin for checking x86 cpu features. +// TODO: Make this somewhat generic so that other backends +// can use it? +BUILTIN(__builtin_cpu_init, "v", "n") +BUILTIN(__builtin_cpu_supports, "bcC*", "nc") +BUILTIN(__builtin_cpu_is, "bcC*", "nc") + +// Undefined Values +// +TARGET_BUILTIN(__builtin_ia32_undef128, "V2d", "ncV:128:", "") +TARGET_BUILTIN(__builtin_ia32_undef256, "V4d", "ncV:256:", "") +TARGET_BUILTIN(__builtin_ia32_undef512, "V8d", "ncV:512:", "") + +// FLAGS +// +TARGET_BUILTIN(__builtin_ia32_readeflags_u32, "Ui", "n", "") +TARGET_BUILTIN(__builtin_ia32_writeeflags_u32, "vUi", "n", "") + +// 3DNow! +// +TARGET_BUILTIN(__builtin_ia32_femms, "v", "n", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pavgusb, "V8cV8cV8c", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pf2id, "V2iV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfacc, "V2fV2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfadd, "V2fV2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfcmpeq, "V2iV2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfcmpge, "V2iV2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfcmpgt, "V2iV2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfmax, "V2fV2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfmin, "V2fV2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfmul, "V2fV2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfrcp, "V2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfrcpit1, "V2fV2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfrcpit2, "V2fV2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfrsqrt, "V2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfrsqit1, "V2fV2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfsub, "V2fV2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pfsubr, "V2fV2fV2f", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pi2fd, "V2fV2i", "ncV:64:", "3dnow") +TARGET_BUILTIN(__builtin_ia32_pmulhrw, "V4sV4sV4s", "ncV:64:", "3dnow") +// 3DNow! Extensions (3dnowa). +TARGET_BUILTIN(__builtin_ia32_pf2iw, "V2iV2f", "ncV:64:", "3dnowa") +TARGET_BUILTIN(__builtin_ia32_pfnacc, "V2fV2fV2f", "ncV:64:", "3dnowa") +TARGET_BUILTIN(__builtin_ia32_pfpnacc, "V2fV2fV2f", "ncV:64:", "3dnowa") +TARGET_BUILTIN(__builtin_ia32_pi2fw, "V2fV2i", "ncV:64:", "3dnowa") +TARGET_BUILTIN(__builtin_ia32_pswapdsf, "V2fV2f", "ncV:64:", "3dnowa") +TARGET_BUILTIN(__builtin_ia32_pswapdsi, "V2iV2i", "ncV:64:", "3dnowa") + +// MMX +// +// All MMX instructions will be generated via builtins. Any MMX vector +// types (<1 x i64>, <2 x i32>, etc.) that aren't used by these builtins will be +// expanded by the back-end. +// FIXME: _mm_prefetch must be a built-in because it takes a compile-time constant +// argument and our prior approach of using a #define to the current built-in +// doesn't work in the presence of re-declaration of _mm_prefetch for windows. +TARGET_BUILTIN(_mm_prefetch, "vcC*i", "nc", "mmx") +TARGET_BUILTIN(__builtin_ia32_emms, "v", "n", "mmx") +TARGET_BUILTIN(__builtin_ia32_paddb, "V8cV8cV8c", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_paddw, "V4sV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_paddd, "V2iV2iV2i", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_paddsb, "V8cV8cV8c", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_paddsw, "V4sV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_paddusb, "V8cV8cV8c", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_paddusw, "V4sV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psubb, "V8cV8cV8c", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psubw, "V4sV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psubd, "V2iV2iV2i", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psubsb, "V8cV8cV8c", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psubsw, "V4sV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psubusb, "V8cV8cV8c", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psubusw, "V4sV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pmulhw, "V4sV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pmullw, "V4sV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pmaddwd, "V2iV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pand, "V1LLiV1LLiV1LLi", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pandn, "V1LLiV1LLiV1LLi", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_por, "V1LLiV1LLiV1LLi", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pxor, "V1LLiV1LLiV1LLi", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psllw, "V4sV4sV1LLi", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pslld, "V2iV2iV1LLi", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psllq, "V1LLiV1LLiV1LLi", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psrlw, "V4sV4sV1LLi", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psrld, "V2iV2iV1LLi", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psrlq, "V1LLiV1LLiV1LLi", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psraw, "V4sV4sV1LLi", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psrad, "V2iV2iV1LLi", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psllwi, "V4sV4si", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pslldi, "V2iV2ii", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psllqi, "V1LLiV1LLii", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psrlwi, "V4sV4si", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psrldi, "V2iV2ii", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psrlqi, "V1LLiV1LLii", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psrawi, "V4sV4si", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_psradi, "V2iV2ii", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_packsswb, "V8cV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_packssdw, "V4sV2iV2i", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_packuswb, "V8cV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_punpckhbw, "V8cV8cV8c", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_punpckhwd, "V4sV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_punpckhdq, "V2iV2iV2i", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_punpcklbw, "V8cV8cV8c", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_punpcklwd, "V4sV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_punpckldq, "V2iV2iV2i", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pcmpeqb, "V8cV8cV8c", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pcmpeqw, "V4sV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pcmpeqd, "V2iV2iV2i", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pcmpgtb, "V8cV8cV8c", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pcmpgtw, "V4sV4sV4s", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_pcmpgtd, "V2iV2iV2i", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_maskmovq, "vV8cV8cc*", "nV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_movntq, "vV1LLi*V1LLi", "nV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_vec_init_v2si, "V2iii", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_vec_init_v4hi, "V4sssss", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_vec_init_v8qi, "V8ccccccccc", "ncV:64:", "mmx") +TARGET_BUILTIN(__builtin_ia32_vec_ext_v2si, "iV2ii", "ncV:64:", "mmx") + +// MMX2 (MMX+SSE) intrinsics +TARGET_BUILTIN(__builtin_ia32_cvtpi2ps, "V4fV4fV2i", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_cvtps2pi, "V2iV4f", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_cvttps2pi, "V2iV4f", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_pavgb, "V8cV8cV8c", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_pavgw, "V4sV4sV4s", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_pmaxsw, "V4sV4sV4s", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_pmaxub, "V8cV8cV8c", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_pminsw, "V4sV4sV4s", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_pminub, "V8cV8cV8c", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_pmovmskb, "iV8c", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_pmulhuw, "V4sV4sV4s", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_psadbw, "V4sV8cV8c", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_pshufw, "V4sV4sIc", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_vec_ext_v4hi, "iV4sIi", "ncV:64:", "mmx,sse") +TARGET_BUILTIN(__builtin_ia32_vec_set_v4hi, "V4sV4siIi", "ncV:64:", "mmx,sse") + +// MMX+SSE2 +TARGET_BUILTIN(__builtin_ia32_cvtpd2pi, "V2iV2d", "ncV:64:", "mmx,sse2") +TARGET_BUILTIN(__builtin_ia32_cvtpi2pd, "V2dV2i", "ncV:64:", "mmx,sse2") +TARGET_BUILTIN(__builtin_ia32_cvttpd2pi, "V2iV2d", "ncV:64:", "mmx,sse2") +TARGET_BUILTIN(__builtin_ia32_paddq, "V1LLiV1LLiV1LLi", "ncV:64:", "mmx,sse2") +TARGET_BUILTIN(__builtin_ia32_pmuludq, "V1LLiV2iV2i", "ncV:64:", "mmx,sse2") +TARGET_BUILTIN(__builtin_ia32_psubq, "V1LLiV1LLiV1LLi", "ncV:64:", "mmx,sse2") + +// MMX+SSSE3 +TARGET_BUILTIN(__builtin_ia32_pabsb, "V8cV8c", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_pabsd, "V2iV2i", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_pabsw, "V4sV4s", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_palignr, "V8cV8cV8cIc", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_phaddd, "V2iV2iV2i", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_phaddsw, "V4sV4sV4s", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_phaddw, "V4sV4sV4s", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_phsubd, "V2iV2iV2i", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_phsubsw, "V4sV4sV4s", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_phsubw, "V4sV4sV4s", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_pmaddubsw, "V8cV8cV8c", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_pmulhrsw, "V4sV4sV4s", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_pshufb, "V8cV8cV8c", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_psignw, "V4sV4sV4s", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_psignb, "V8cV8cV8c", "ncV:64:", "mmx,ssse3") +TARGET_BUILTIN(__builtin_ia32_psignd, "V2iV2iV2i", "ncV:64:", "mmx,ssse3") + +// SSE intrinsics. +TARGET_BUILTIN(__builtin_ia32_comieq, "iV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_comilt, "iV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_comile, "iV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_comigt, "iV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_comige, "iV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_comineq, "iV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_ucomieq, "iV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_ucomilt, "iV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_ucomile, "iV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_ucomigt, "iV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_ucomige, "iV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_ucomineq, "iV4fV4f", "ncV:128:", "sse") + +TARGET_BUILTIN(__builtin_ia32_comisdeq, "iV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_comisdlt, "iV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_comisdle, "iV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_comisdgt, "iV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_comisdge, "iV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_comisdneq, "iV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_ucomisdeq, "iV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_ucomisdlt, "iV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_ucomisdle, "iV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_ucomisdgt, "iV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_ucomisdge, "iV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_ucomisdneq, "iV2dV2d", "ncV:128:", "sse2") + +TARGET_BUILTIN(__builtin_ia32_cmpeqps, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpltps, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpleps, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpunordps, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpneqps, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpnltps, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpnleps, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpordps, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpeqss, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpltss, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpless, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpunordss, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpneqss, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpnltss, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpnless, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cmpordss, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_minps, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_maxps, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_minss, "V4fV4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_maxss, "V4fV4fV4f", "ncV:128:", "sse") + +TARGET_BUILTIN(__builtin_ia32_cmpeqpd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmpltpd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmplepd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmpunordpd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmpneqpd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmpnltpd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmpnlepd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmpordpd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmpeqsd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmpltsd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmplesd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmpunordsd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmpneqsd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmpnltsd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmpnlesd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cmpordsd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_minpd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_maxpd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_minsd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_maxsd, "V2dV2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_paddsb128, "V16cV16cV16c", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_paddsw128, "V8sV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psubsb128, "V16cV16cV16c", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psubsw128, "V8sV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_paddusb128, "V16cV16cV16c", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_paddusw128, "V8sV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psubusb128, "V16cV16cV16c", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psubusw128, "V8sV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_pmulhw128, "V8sV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_pmaxub128, "V16cV16cV16c", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_pmaxsw128, "V8sV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_pminub128, "V16cV16cV16c", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_pminsw128, "V8sV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_packsswb128, "V16cV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_packssdw128, "V8sV4iV4i", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_packuswb128, "V16cV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_pmulhuw128, "V8sV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_vec_ext_v4si, "iV4iIi", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_vec_ext_v4sf, "fV4fIi", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_vec_ext_v8hi, "sV8sIi", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_vec_set_v8hi, "V8sV8ssIi", "ncV:128:", "sse2") + +TARGET_BUILTIN(__builtin_ia32_addsubps, "V4fV4fV4f", "ncV:128:", "sse3") +TARGET_BUILTIN(__builtin_ia32_addsubpd, "V2dV2dV2d", "ncV:128:", "sse3") +TARGET_BUILTIN(__builtin_ia32_haddps, "V4fV4fV4f", "ncV:128:", "sse3") +TARGET_BUILTIN(__builtin_ia32_haddpd, "V2dV2dV2d", "ncV:128:", "sse3") +TARGET_BUILTIN(__builtin_ia32_hsubps, "V4fV4fV4f", "ncV:128:", "sse3") +TARGET_BUILTIN(__builtin_ia32_hsubpd, "V2dV2dV2d", "ncV:128:", "sse3") +TARGET_BUILTIN(__builtin_ia32_phaddw128, "V8sV8sV8s", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_phaddd128, "V4iV4iV4i", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_phaddsw128, "V8sV8sV8s", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_phsubw128, "V8sV8sV8s", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_phsubd128, "V4iV4iV4i", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_phsubsw128, "V8sV8sV8s", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_pmaddubsw128, "V8sV16cV16c", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_pmulhrsw128, "V8sV8sV8s", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_pshufb128, "V16cV16cV16c", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_psignb128, "V16cV16cV16c", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_psignw128, "V8sV8sV8s", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_psignd128, "V4iV4iV4i", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_pabsb128, "V16cV16c", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_pabsw128, "V8sV8s", "ncV:128:", "ssse3") +TARGET_BUILTIN(__builtin_ia32_pabsd128, "V4iV4i", "ncV:128:", "ssse3") + +TARGET_BUILTIN(__builtin_ia32_ldmxcsr, "vUi", "n", "sse") +TARGET_HEADER_BUILTIN(_mm_setcsr, "vUi", "nh","xmmintrin.h", ALL_LANGUAGES, "sse") +TARGET_BUILTIN(__builtin_ia32_stmxcsr, "Ui", "n", "sse") +TARGET_HEADER_BUILTIN(_mm_getcsr, "Ui", "nh", "xmmintrin.h", ALL_LANGUAGES, "sse") +TARGET_BUILTIN(__builtin_ia32_cvtss2si, "iV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cvttss2si, "iV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_storehps, "vV2i*V4f", "nV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_storelps, "vV2i*V4f", "nV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_movmskps, "iV4f", "nV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_sfence, "v", "n", "sse") +TARGET_HEADER_BUILTIN(_mm_sfence, "v", "nh", "xmmintrin.h", ALL_LANGUAGES, "sse") +TARGET_BUILTIN(__builtin_ia32_rcpps, "V4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_rcpss, "V4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_rsqrtps, "V4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_rsqrtss, "V4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_sqrtps, "V4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_sqrtss, "V4fV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_shufps, "V4fV4fV4fIi", "ncV:128:", "sse") + +TARGET_BUILTIN(__builtin_ia32_maskmovdqu, "vV16cV16cc*", "nV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_movmskpd, "iV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_pmovmskb128, "iV16c", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_movnti, "vi*i", "n", "sse2") +TARGET_BUILTIN(__builtin_ia32_pshufd, "V4iV4iIi", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_pshuflw, "V8sV8sIi", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_pshufhw, "V8sV8sIi", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psadbw128, "V2LLiV16cV16c", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_sqrtpd, "V2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_sqrtsd, "V2dV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_shufpd, "V2dV2dV2dIi", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cvtpd2dq, "V2LLiV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cvtpd2ps, "V4fV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cvttpd2dq, "V4iV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cvtsd2si, "iV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cvttsd2si, "iV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cvtsd2ss, "V4fV4fV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cvtps2dq, "V4iV4f", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cvttps2dq, "V4iV4f", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_clflush, "vvC*", "n", "sse2") +TARGET_HEADER_BUILTIN(_mm_clflush, "vvC*", "nh", "emmintrin.h", ALL_LANGUAGES, "sse2") +TARGET_BUILTIN(__builtin_ia32_lfence, "v", "n", "sse2") +TARGET_HEADER_BUILTIN(_mm_lfence, "v", "nh", "emmintrin.h", ALL_LANGUAGES, "sse2") +TARGET_BUILTIN(__builtin_ia32_mfence, "v", "n", "sse2") +TARGET_HEADER_BUILTIN(_mm_mfence, "v", "nh", "emmintrin.h", ALL_LANGUAGES, "sse2") +TARGET_BUILTIN(__builtin_ia32_pause, "v", "n", "") +TARGET_HEADER_BUILTIN(_mm_pause, "v", "nh", "emmintrin.h", ALL_LANGUAGES, "") +TARGET_BUILTIN(__builtin_ia32_pmuludq128, "V2LLiV4iV4i", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psraw128, "V8sV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psrad128, "V4iV4iV4i", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psrlw128, "V8sV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psrld128, "V4iV4iV4i", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psrlq128, "V2LLiV2LLiV2LLi", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psllw128, "V8sV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_pslld128, "V4iV4iV4i", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psllq128, "V2LLiV2LLiV2LLi", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psllwi128, "V8sV8si", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_pslldi128, "V4iV4ii", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psllqi128, "V2LLiV2LLii", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psrlwi128, "V8sV8si", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psrldi128, "V4iV4ii", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psrlqi128, "V2LLiV2LLii", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psrawi128, "V8sV8si", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psradi128, "V4iV4ii", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_pmaddwd128, "V4iV8sV8s", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_pslldqi128_byteshift, "V2LLiV2LLiIi", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_psrldqi128_byteshift, "V2LLiV2LLiIi", "ncV:128:", "sse2") + +TARGET_BUILTIN(__builtin_ia32_monitor, "vv*UiUi", "n", "sse3") +TARGET_BUILTIN(__builtin_ia32_mwait, "vUiUi", "n", "sse3") +TARGET_BUILTIN(__builtin_ia32_lddqu, "V16ccC*", "nV:128:", "sse3") + +TARGET_BUILTIN(__builtin_ia32_palignr128, "V16cV16cV16cIi", "ncV:128:", "ssse3") + +TARGET_BUILTIN(__builtin_ia32_insertps128, "V4fV4fV4fIc", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_pblendvb128, "V16cV16cV16cV16c", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_pblendw128, "V8sV8sV8sIi", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_blendpd, "V2dV2dV2dIi", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_blendps, "V4fV4fV4fIi", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_blendvpd, "V2dV2dV2dV2d", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_blendvps, "V4fV4fV4fV4f", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_packusdw128, "V8sV4iV4i", "ncV:128:", "sse4.1") + +TARGET_BUILTIN(__builtin_ia32_pmaxsb128, "V16cV16cV16c", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_pmaxsd128, "V4iV4iV4i", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_pmaxud128, "V4iV4iV4i", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_pmaxuw128, "V8sV8sV8s", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_pminsb128, "V16cV16cV16c", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_pminsd128, "V4iV4iV4i", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_pminud128, "V4iV4iV4i", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_pminuw128, "V8sV8sV8s", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_pmuldq128, "V2LLiV4iV4i", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_roundps, "V4fV4fIi", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_roundss, "V4fV4fV4fIi", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_roundsd, "V2dV2dV2dIi", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_roundpd, "V2dV2dIi", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_dpps, "V4fV4fV4fIc", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_dppd, "V2dV2dV2dIc", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_ptestz128, "iV2LLiV2LLi", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_ptestc128, "iV2LLiV2LLi", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_ptestnzc128, "iV2LLiV2LLi", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_mpsadbw128, "V16cV16cV16cIc", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_phminposuw128, "V8sV8s", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_vec_ext_v16qi, "cV16cIi", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_vec_set_v16qi, "V16cV16ccIi", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_vec_set_v4si, "V4iV4iiIi", "ncV:128:", "sse4.1") + +// SSE 4.2 +TARGET_BUILTIN(__builtin_ia32_pcmpistrm128, "V16cV16cV16cIc", "ncV:128:", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_pcmpistri128, "iV16cV16cIc", "ncV:128:", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_pcmpestrm128, "V16cV16ciV16ciIc", "ncV:128:", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_pcmpestri128, "iV16ciV16ciIc","ncV:128:", "sse4.2") + +TARGET_BUILTIN(__builtin_ia32_pcmpistria128, "iV16cV16cIc","ncV:128:", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_pcmpistric128, "iV16cV16cIc","ncV:128:", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_pcmpistrio128, "iV16cV16cIc","ncV:128:", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_pcmpistris128, "iV16cV16cIc","ncV:128:", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_pcmpistriz128, "iV16cV16cIc","ncV:128:", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_pcmpestria128, "iV16ciV16ciIc","ncV:128:", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_pcmpestric128, "iV16ciV16ciIc","ncV:128:", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_pcmpestrio128, "iV16ciV16ciIc","ncV:128:", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_pcmpestris128, "iV16ciV16ciIc","ncV:128:", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_pcmpestriz128, "iV16ciV16ciIc","ncV:128:", "sse4.2") + +TARGET_BUILTIN(__builtin_ia32_crc32qi, "UiUiUc", "nc", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_crc32hi, "UiUiUs", "nc", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_crc32si, "UiUiUi", "nc", "sse4.2") + +// SSE4a +TARGET_BUILTIN(__builtin_ia32_extrqi, "V2LLiV2LLiIcIc", "ncV:128:", "sse4a") +TARGET_BUILTIN(__builtin_ia32_extrq, "V2LLiV2LLiV16c", "ncV:128:", "sse4a") +TARGET_BUILTIN(__builtin_ia32_insertqi, "V2LLiV2LLiV2LLiIcIc", "ncV:128:", "sse4a") +TARGET_BUILTIN(__builtin_ia32_insertq, "V2LLiV2LLiV2LLi", "ncV:128:", "sse4a") +TARGET_BUILTIN(__builtin_ia32_movntsd, "vd*V2d", "nV:128:", "sse4a") +TARGET_BUILTIN(__builtin_ia32_movntss, "vf*V4f", "nV:128:", "sse4a") + +// AES +TARGET_BUILTIN(__builtin_ia32_aesenc128, "V2LLiV2LLiV2LLi", "ncV:128:", "aes") +TARGET_BUILTIN(__builtin_ia32_aesenclast128, "V2LLiV2LLiV2LLi", "ncV:128:", "aes") +TARGET_BUILTIN(__builtin_ia32_aesdec128, "V2LLiV2LLiV2LLi", "ncV:128:", "aes") +TARGET_BUILTIN(__builtin_ia32_aesdeclast128, "V2LLiV2LLiV2LLi", "ncV:128:", "aes") +TARGET_BUILTIN(__builtin_ia32_aesimc128, "V2LLiV2LLi", "ncV:128:", "aes") +TARGET_BUILTIN(__builtin_ia32_aeskeygenassist128, "V2LLiV2LLiIc", "ncV:128:", "aes") + +// VAES +TARGET_BUILTIN(__builtin_ia32_aesenc256, "V4LLiV4LLiV4LLi", "ncV:256:", "vaes") +TARGET_BUILTIN(__builtin_ia32_aesenc512, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f,vaes") +TARGET_BUILTIN(__builtin_ia32_aesenclast256, "V4LLiV4LLiV4LLi", "ncV:256:", "vaes") +TARGET_BUILTIN(__builtin_ia32_aesenclast512, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f,vaes") +TARGET_BUILTIN(__builtin_ia32_aesdec256, "V4LLiV4LLiV4LLi", "ncV:256:", "vaes") +TARGET_BUILTIN(__builtin_ia32_aesdec512, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f,vaes") +TARGET_BUILTIN(__builtin_ia32_aesdeclast256, "V4LLiV4LLiV4LLi", "ncV:256:", "vaes") +TARGET_BUILTIN(__builtin_ia32_aesdeclast512, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f,vaes") + +// GFNI +TARGET_BUILTIN(__builtin_ia32_vgf2p8affineinvqb_v16qi, "V16cV16cV16cIc", "ncV:128:", "gfni") +TARGET_BUILTIN(__builtin_ia32_vgf2p8affineinvqb_v32qi, "V32cV32cV32cIc", "ncV:256:", "avx,gfni") +TARGET_BUILTIN(__builtin_ia32_vgf2p8affineinvqb_v64qi, "V64cV64cV64cIc", "ncV:512:", "avx512bw,gfni") +TARGET_BUILTIN(__builtin_ia32_vgf2p8affineqb_v16qi, "V16cV16cV16cIc", "ncV:128:", "gfni") +TARGET_BUILTIN(__builtin_ia32_vgf2p8affineqb_v32qi, "V32cV32cV32cIc", "ncV:256:", "avx,gfni") +TARGET_BUILTIN(__builtin_ia32_vgf2p8affineqb_v64qi, "V64cV64cV64cIc", "ncV:512:", "avx512bw,gfni") +TARGET_BUILTIN(__builtin_ia32_vgf2p8mulb_v16qi, "V16cV16cV16c", "ncV:128:", "gfni") +TARGET_BUILTIN(__builtin_ia32_vgf2p8mulb_v32qi, "V32cV32cV32c", "ncV:256:", "avx,gfni") +TARGET_BUILTIN(__builtin_ia32_vgf2p8mulb_v64qi, "V64cV64cV64c", "ncV:512:", "avx512bw,gfni") + +// CLMUL +TARGET_BUILTIN(__builtin_ia32_pclmulqdq128, "V2LLiV2LLiV2LLiIc", "ncV:128:", "pclmul") + +// VPCLMULQDQ +TARGET_BUILTIN(__builtin_ia32_pclmulqdq256, "V4LLiV4LLiV4LLiIc", "ncV:256:", "vpclmulqdq") +TARGET_BUILTIN(__builtin_ia32_pclmulqdq512, "V8LLiV8LLiV8LLiIc", "ncV:512:", "avx512f,vpclmulqdq") + +// AVX +TARGET_BUILTIN(__builtin_ia32_addsubpd256, "V4dV4dV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_addsubps256, "V8fV8fV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_haddpd256, "V4dV4dV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_hsubps256, "V8fV8fV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_hsubpd256, "V4dV4dV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_haddps256, "V8fV8fV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_maxpd256, "V4dV4dV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_maxps256, "V8fV8fV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_minpd256, "V4dV4dV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_minps256, "V8fV8fV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vpermilvarpd, "V2dV2dV2LLi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vpermilvarps, "V4fV4fV4i", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vpermilvarpd256, "V4dV4dV4LLi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vpermilvarps256, "V8fV8fV8i", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_blendpd256, "V4dV4dV4dIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_blendps256, "V8fV8fV8fIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_blendvpd256, "V4dV4dV4dV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_blendvps256, "V8fV8fV8fV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_shufpd256, "V4dV4dV4dIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_shufps256, "V8fV8fV8fIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_dpps256, "V8fV8fV8fIc", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_cmppd, "V2dV2dV2dIc", "ncV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_cmppd256, "V4dV4dV4dIc", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_cmpps, "V4fV4fV4fIc", "ncV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_cmpps256, "V8fV8fV8fIc", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_cmpsd, "V2dV2dV2dIc", "ncV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_cmpss, "V4fV4fV4fIc", "ncV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_vextractf128_pd256, "V2dV4dIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vextractf128_ps256, "V4fV8fIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vextractf128_si256, "V4iV8iIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_cvtpd2ps256, "V4fV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_cvtps2dq256, "V8iV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_cvttpd2dq256, "V4iV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_cvtpd2dq256, "V4iV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_cvttps2dq256, "V8iV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vperm2f128_pd256, "V4dV4dV4dIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vperm2f128_ps256, "V8fV8fV8fIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vperm2f128_si256, "V8iV8iV8iIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vpermilpd, "V2dV2dIi", "ncV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_vpermilps, "V4fV4fIi", "ncV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_vpermilpd256, "V4dV4dIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vpermilps256, "V8fV8fIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vinsertf128_pd256, "V4dV4dV2dIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vinsertf128_ps256, "V8fV8fV4fIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vinsertf128_si256, "V8iV8iV4iIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_sqrtpd256, "V4dV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_sqrtps256, "V8fV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_rsqrtps256, "V8fV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_rcpps256, "V8fV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_roundpd256, "V4dV4dIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_roundps256, "V8fV8fIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vtestzpd, "iV2dV2d", "ncV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_vtestcpd, "iV2dV2d", "ncV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_vtestnzcpd, "iV2dV2d", "ncV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_vtestzps, "iV4fV4f", "ncV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_vtestcps, "iV4fV4f", "ncV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_vtestnzcps, "iV4fV4f", "ncV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_vtestzpd256, "iV4dV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vtestcpd256, "iV4dV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vtestnzcpd256, "iV4dV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vtestzps256, "iV8fV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vtestcps256, "iV8fV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vtestnzcps256, "iV8fV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_ptestz256, "iV4LLiV4LLi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_ptestc256, "iV4LLiV4LLi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_ptestnzc256, "iV4LLiV4LLi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_movmskpd256, "iV4d", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_movmskps256, "iV8f", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vzeroall, "v", "n", "avx") +TARGET_BUILTIN(__builtin_ia32_vzeroupper, "v", "n", "avx") +TARGET_BUILTIN(__builtin_ia32_lddqu256, "V32ccC*", "nV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_maskloadpd, "V2dV2dC*V2LLi", "nV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_maskloadps, "V4fV4fC*V4i", "nV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_maskloadpd256, "V4dV4dC*V4LLi", "nV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_maskloadps256, "V8fV8fC*V8i", "nV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_maskstorepd, "vV2d*V2LLiV2d", "nV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_maskstoreps, "vV4f*V4iV4f", "nV:128:", "avx") +TARGET_BUILTIN(__builtin_ia32_maskstorepd256, "vV4d*V4LLiV4d", "nV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_maskstoreps256, "vV8f*V8iV8f", "nV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vec_ext_v32qi, "cV32cIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vec_ext_v16hi, "sV16sIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vec_ext_v8si, "iV8iIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vec_set_v32qi, "V32cV32ccIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vec_set_v16hi, "V16sV16ssIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vec_set_v8si, "V8iV8iiIi", "ncV:256:", "avx") + +// AVX2 +TARGET_BUILTIN(__builtin_ia32_mpsadbw256, "V32cV32cV32cIc", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pabsb256, "V32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pabsw256, "V16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pabsd256, "V8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_packsswb256, "V32cV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_packssdw256, "V16sV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_packuswb256, "V32cV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_packusdw256, "V16sV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_paddsb256, "V32cV32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_paddsw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psubsb256, "V32cV32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psubsw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_paddusb256, "V32cV32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_paddusw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psubusb256, "V32cV32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psubusw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_palignr256, "V32cV32cV32cIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pblendvb256, "V32cV32cV32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pblendw256, "V16sV16sV16sIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_phaddw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_phaddd256, "V8iV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_phaddsw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_phsubw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_phsubd256, "V8iV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_phsubsw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmaddubsw256, "V16sV32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmaddwd256, "V8iV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmaxub256, "V32cV32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmaxuw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmaxud256, "V8iV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmaxsb256, "V32cV32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmaxsw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmaxsd256, "V8iV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pminub256, "V32cV32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pminuw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pminud256, "V8iV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pminsb256, "V32cV32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pminsw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pminsd256, "V8iV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmovmskb256, "iV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmuldq256, "V4LLiV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmulhrsw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmulhuw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmulhw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pmuludq256, "V4LLiV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psadbw256, "V4LLiV32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pshufb256, "V32cV32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pshufd256, "V8iV8iIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pshuflw256, "V16sV16sIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pshufhw256, "V16sV16sIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psignb256, "V32cV32cV32c", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psignw256, "V16sV16sV16s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psignd256, "V8iV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psllwi256, "V16sV16si", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psllw256, "V16sV16sV8s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pslldqi256_byteshift, "V4LLiV4LLiIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pslldi256, "V8iV8ii", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pslld256, "V8iV8iV4i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psllqi256, "V4LLiV4LLii", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psllq256, "V4LLiV4LLiV2LLi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrawi256, "V16sV16si", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psraw256, "V16sV16sV8s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psradi256, "V8iV8ii", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrad256, "V8iV8iV4i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrldqi256_byteshift, "V4LLiV4LLiIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrlwi256, "V16sV16si", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrlw256, "V16sV16sV8s", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrldi256, "V8iV8ii", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrld256, "V8iV8iV4i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrlqi256, "V4LLiV4LLii", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrlq256, "V4LLiV4LLiV2LLi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pblendd128, "V4iV4iV4iIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_pblendd256, "V8iV8iV8iIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_permvarsi256, "V8iV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_permdf256, "V4dV4dIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_permvarsf256, "V8fV8fV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_permti256, "V4LLiV4LLiV4LLiIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_permdi256, "V4LLiV4LLiIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_extract128i256, "V2LLiV4LLiIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_insert128i256, "V4LLiV4LLiV2LLiIi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_maskloadd256, "V8iV8iC*V8i", "nV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_maskloadq256, "V4LLiV4LLiC*V4LLi", "nV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_maskloadd, "V4iV4iC*V4i", "nV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_maskloadq, "V2LLiV2LLiC*V2LLi", "nV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_maskstored256, "vV8i*V8iV8i", "nV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_maskstoreq256, "vV4LLi*V4LLiV4LLi", "nV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_maskstored, "vV4i*V4iV4i", "nV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_maskstoreq, "vV2LLi*V2LLiV2LLi", "nV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psllv8si, "V8iV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psllv4si, "V4iV4iV4i", "ncV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psllv4di, "V4LLiV4LLiV4LLi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psllv2di, "V2LLiV2LLiV2LLi", "ncV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrav8si, "V8iV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrav4si, "V4iV4iV4i", "ncV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrlv8si, "V8iV8iV8i", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrlv4si, "V4iV4iV4i", "ncV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrlv4di, "V4LLiV4LLiV4LLi", "ncV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_psrlv2di, "V2LLiV2LLiV2LLi", "ncV:128:", "avx2") + +// GATHER +TARGET_BUILTIN(__builtin_ia32_gatherd_pd, "V2dV2ddC*V4iV2dIc", "nV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherd_pd256, "V4dV4ddC*V4iV4dIc", "nV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherq_pd, "V2dV2ddC*V2LLiV2dIc", "nV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherq_pd256, "V4dV4ddC*V4LLiV4dIc", "nV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherd_ps, "V4fV4ffC*V4iV4fIc", "nV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherd_ps256, "V8fV8ffC*V8iV8fIc", "nV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherq_ps, "V4fV4ffC*V2LLiV4fIc", "nV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherq_ps256, "V4fV4ffC*V4LLiV4fIc", "nV:256:", "avx2") + +TARGET_BUILTIN(__builtin_ia32_gatherd_q, "V2LLiV2LLiLLiC*V4iV2LLiIc", "nV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherd_q256, "V4LLiV4LLiLLiC*V4iV4LLiIc", "nV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherq_q, "V2LLiV2LLiLLiC*V2LLiV2LLiIc", "nV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherq_q256, "V4LLiV4LLiLLiC*V4LLiV4LLiIc", "nV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherd_d, "V4iV4iiC*V4iV4iIc", "nV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherd_d256, "V8iV8iiC*V8iV8iIc", "nV:256:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherq_d, "V4iV4iiC*V2LLiV4iIc", "nV:128:", "avx2") +TARGET_BUILTIN(__builtin_ia32_gatherq_d256, "V4iV4iiC*V4LLiV4iIc", "nV:256:", "avx2") + +// F16C +TARGET_BUILTIN(__builtin_ia32_vcvtps2ph, "V8sV4fIi", "ncV:128:", "f16c") +TARGET_BUILTIN(__builtin_ia32_vcvtps2ph256, "V8sV8fIi", "ncV:256:", "f16c") +TARGET_BUILTIN(__builtin_ia32_vcvtph2ps, "V4fV8s", "ncV:128:", "f16c") +TARGET_BUILTIN(__builtin_ia32_vcvtph2ps256, "V8fV8s", "ncV:256:", "f16c") + +// RDRAND +TARGET_BUILTIN(__builtin_ia32_rdrand16_step, "UiUs*", "n", "rdrnd") +TARGET_BUILTIN(__builtin_ia32_rdrand32_step, "UiUi*", "n", "rdrnd") + +// FXSR +TARGET_BUILTIN(__builtin_ia32_fxrstor, "vv*", "n", "fxsr") +TARGET_BUILTIN(__builtin_ia32_fxsave, "vv*", "n", "fxsr") + +// XSAVE +TARGET_BUILTIN(__builtin_ia32_xsave, "vv*ULLi", "n", "xsave") +TARGET_BUILTIN(__builtin_ia32_xrstor, "vv*ULLi", "n", "xsave") +TARGET_BUILTIN(__builtin_ia32_xgetbv, "ULLiUi", "n", "xsave") +TARGET_HEADER_BUILTIN(_xgetbv, "UWiUi", "nh", "immintrin.h", ALL_MS_LANGUAGES, "") +TARGET_BUILTIN(__builtin_ia32_xsetbv, "vUiULLi", "n", "xsave") +TARGET_HEADER_BUILTIN(_xsetbv, "vUiUWi", "nh", "immintrin.h", ALL_MS_LANGUAGES, "") +TARGET_BUILTIN(__builtin_ia32_xsaveopt, "vv*ULLi", "n", "xsaveopt") +TARGET_BUILTIN(__builtin_ia32_xrstors, "vv*ULLi", "n", "xsaves") +TARGET_BUILTIN(__builtin_ia32_xsavec, "vv*ULLi", "n", "xsavec") +TARGET_BUILTIN(__builtin_ia32_xsaves, "vv*ULLi", "n", "xsaves") + +// SHSTK +TARGET_BUILTIN(__builtin_ia32_incsspd, "vUi", "n", "shstk") +TARGET_BUILTIN(__builtin_ia32_rdsspd, "UiUi", "n", "shstk") +TARGET_BUILTIN(__builtin_ia32_saveprevssp, "v", "n", "shstk") +TARGET_BUILTIN(__builtin_ia32_rstorssp, "vv*", "n", "shstk") +TARGET_BUILTIN(__builtin_ia32_wrssd, "vUiv*", "n", "shstk") +TARGET_BUILTIN(__builtin_ia32_wrussd, "vUiv*", "n", "shstk") +TARGET_BUILTIN(__builtin_ia32_setssbsy, "v", "n", "shstk") +TARGET_BUILTIN(__builtin_ia32_clrssbsy, "vv*", "n", "shstk") + +//CLFLUSHOPT +TARGET_BUILTIN(__builtin_ia32_clflushopt, "vvC*", "n", "clflushopt") + +//CLWB +TARGET_BUILTIN(__builtin_ia32_clwb, "vvC*", "n", "clwb") + +//WB[NO]INVD +TARGET_BUILTIN(__builtin_ia32_wbinvd, "v", "n", "") +TARGET_BUILTIN(__builtin_ia32_wbnoinvd, "v", "n", "wbnoinvd") + +// ADX +TARGET_BUILTIN(__builtin_ia32_addcarryx_u32, "UcUcUiUiUi*", "n", "") +TARGET_BUILTIN(__builtin_ia32_subborrow_u32, "UcUcUiUiUi*", "n", "") + +// RDSEED +TARGET_BUILTIN(__builtin_ia32_rdseed16_step, "UiUs*", "n", "rdseed") +TARGET_BUILTIN(__builtin_ia32_rdseed32_step, "UiUi*", "n", "rdseed") + +// LZCNT +TARGET_BUILTIN(__builtin_ia32_lzcnt_u16, "UsUs", "nc", "lzcnt") +TARGET_BUILTIN(__builtin_ia32_lzcnt_u32, "UiUi", "nc", "lzcnt") + +// BMI +TARGET_BUILTIN(__builtin_ia32_bextr_u32, "UiUiUi", "nc", "bmi") +TARGET_BUILTIN(__builtin_ia32_tzcnt_u16, "UsUs", "nc", "") +TARGET_BUILTIN(__builtin_ia32_tzcnt_u32, "UiUi", "nc", "") + +// BMI2 +TARGET_BUILTIN(__builtin_ia32_bzhi_si, "UiUiUi", "nc", "bmi2") +TARGET_BUILTIN(__builtin_ia32_pdep_si, "UiUiUi", "nc", "bmi2") +TARGET_BUILTIN(__builtin_ia32_pext_si, "UiUiUi", "nc", "bmi2") + +// TBM +TARGET_BUILTIN(__builtin_ia32_bextri_u32, "UiUiIUi", "nc", "tbm") + +// LWP +TARGET_BUILTIN(__builtin_ia32_llwpcb, "vv*", "n", "lwp") +TARGET_BUILTIN(__builtin_ia32_slwpcb, "v*", "n", "lwp") +TARGET_BUILTIN(__builtin_ia32_lwpins32, "UcUiUiUi", "n", "lwp") +TARGET_BUILTIN(__builtin_ia32_lwpval32, "vUiUiUi", "n", "lwp") + +// SHA +TARGET_BUILTIN(__builtin_ia32_sha1rnds4, "V4iV4iV4iIc", "ncV:128:", "sha") +TARGET_BUILTIN(__builtin_ia32_sha1nexte, "V4iV4iV4i", "ncV:128:", "sha") +TARGET_BUILTIN(__builtin_ia32_sha1msg1, "V4iV4iV4i", "ncV:128:", "sha") +TARGET_BUILTIN(__builtin_ia32_sha1msg2, "V4iV4iV4i", "ncV:128:", "sha") +TARGET_BUILTIN(__builtin_ia32_sha256rnds2, "V4iV4iV4iV4i", "ncV:128:", "sha") +TARGET_BUILTIN(__builtin_ia32_sha256msg1, "V4iV4iV4i", "ncV:128:", "sha") +TARGET_BUILTIN(__builtin_ia32_sha256msg2, "V4iV4iV4i", "ncV:128:", "sha") + +// FMA +TARGET_BUILTIN(__builtin_ia32_vfmaddps, "V4fV4fV4fV4f", "ncV:128:", "fma|fma4") +TARGET_BUILTIN(__builtin_ia32_vfmaddpd, "V2dV2dV2dV2d", "ncV:128:", "fma|fma4") +TARGET_BUILTIN(__builtin_ia32_vfmaddss3, "V4fV4fV4fV4f", "ncV:128:", "fma") +TARGET_BUILTIN(__builtin_ia32_vfmaddsd3, "V2dV2dV2dV2d", "ncV:128:", "fma") +TARGET_BUILTIN(__builtin_ia32_vfmaddss, "V4fV4fV4fV4f", "ncV:128:", "fma4") +TARGET_BUILTIN(__builtin_ia32_vfmaddsd, "V2dV2dV2dV2d", "ncV:128:", "fma4") +TARGET_BUILTIN(__builtin_ia32_vfmaddsubps, "V4fV4fV4fV4f", "ncV:128:", "fma|fma4") +TARGET_BUILTIN(__builtin_ia32_vfmaddsubpd, "V2dV2dV2dV2d", "ncV:128:", "fma|fma4") +TARGET_BUILTIN(__builtin_ia32_vfmaddps256, "V8fV8fV8fV8f", "ncV:256:", "fma|fma4") +TARGET_BUILTIN(__builtin_ia32_vfmaddpd256, "V4dV4dV4dV4d", "ncV:256:", "fma|fma4") +TARGET_BUILTIN(__builtin_ia32_vfmaddsubps256, "V8fV8fV8fV8f", "ncV:256:", "fma|fma4") +TARGET_BUILTIN(__builtin_ia32_vfmaddsubpd256, "V4dV4dV4dV4d", "ncV:256:", "fma|fma4") + +TARGET_BUILTIN(__builtin_ia32_vfmaddpd512_mask, "V8dV8dV8dV8dUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddpd512_maskz, "V8dV8dV8dV8dUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddpd512_mask3, "V8dV8dV8dV8dUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmsubpd512_mask3, "V8dV8dV8dV8dUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddps512_mask, "V16fV16fV16fV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddps512_maskz, "V16fV16fV16fV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddps512_mask3, "V16fV16fV16fV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmsubps512_mask3, "V16fV16fV16fV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddsubpd512_mask, "V8dV8dV8dV8dUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddsubpd512_maskz, "V8dV8dV8dV8dUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddsubpd512_mask3, "V8dV8dV8dV8dUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmsubaddpd512_mask3, "V8dV8dV8dV8dUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddsubps512_mask, "V16fV16fV16fV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddsubps512_maskz, "V16fV16fV16fV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddsubps512_mask3, "V16fV16fV16fV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmsubaddps512_mask3, "V16fV16fV16fV16fUsIi", "ncV:512:", "avx512f") + +// XOP +TARGET_BUILTIN(__builtin_ia32_vpmacssww, "V8sV8sV8sV8s", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpmacsww, "V8sV8sV8sV8s", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpmacsswd, "V4iV8sV8sV4i", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpmacswd, "V4iV8sV8sV4i", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpmacssdd, "V4iV4iV4iV4i", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpmacsdd, "V4iV4iV4iV4i", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpmacssdql, "V2LLiV4iV4iV2LLi", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpmacsdql, "V2LLiV4iV4iV2LLi", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpmacssdqh, "V2LLiV4iV4iV2LLi", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpmacsdqh, "V2LLiV4iV4iV2LLi", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpmadcsswd, "V4iV8sV8sV4i", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpmadcswd, "V4iV8sV8sV4i", "ncV:128:", "xop") + +TARGET_BUILTIN(__builtin_ia32_vphaddbw, "V8sV16c", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphaddbd, "V4iV16c", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphaddbq, "V2LLiV16c", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphaddwd, "V4iV8s", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphaddwq, "V2LLiV8s", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphadddq, "V2LLiV4i", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphaddubw, "V8sV16c", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphaddubd, "V4iV16c", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphaddubq, "V2LLiV16c", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphadduwd, "V4iV8s", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphadduwq, "V2LLiV8s", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphaddudq, "V2LLiV4i", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphsubbw, "V8sV16c", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphsubwd, "V4iV8s", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vphsubdq, "V2LLiV4i", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpperm, "V16cV16cV16cV16c", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vprotb, "V16cV16cV16c", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vprotw, "V8sV8sV8s", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vprotd, "V4iV4iV4i", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vprotq, "V2LLiV2LLiV2LLi", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vprotbi, "V16cV16cIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vprotwi, "V8sV8sIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vprotdi, "V4iV4iIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vprotqi, "V2LLiV2LLiIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpshlb, "V16cV16cV16c", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpshlw, "V8sV8sV8s", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpshld, "V4iV4iV4i", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpshlq, "V2LLiV2LLiV2LLi", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpshab, "V16cV16cV16c", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpshaw, "V8sV8sV8s", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpshad, "V4iV4iV4i", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpshaq, "V2LLiV2LLiV2LLi", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpcomub, "V16cV16cV16cIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpcomuw, "V8sV8sV8sIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpcomud, "V4iV4iV4iIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpcomuq, "V2LLiV2LLiV2LLiIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpcomb, "V16cV16cV16cIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpcomw, "V8sV8sV8sIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpcomd, "V4iV4iV4iIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpcomq, "V2LLiV2LLiV2LLiIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpermil2pd, "V2dV2dV2dV2LLiIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpermil2pd256, "V4dV4dV4dV4LLiIc", "ncV:256:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpermil2ps, "V4fV4fV4fV4iIc", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vpermil2ps256, "V8fV8fV8fV8iIc", "ncV:256:", "xop") +TARGET_BUILTIN(__builtin_ia32_vfrczss, "V4fV4f", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vfrczsd, "V2dV2d", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vfrczps, "V4fV4f", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vfrczpd, "V2dV2d", "ncV:128:", "xop") +TARGET_BUILTIN(__builtin_ia32_vfrczps256, "V8fV8f", "ncV:256:", "xop") +TARGET_BUILTIN(__builtin_ia32_vfrczpd256, "V4dV4d", "ncV:256:", "xop") + +TARGET_BUILTIN(__builtin_ia32_xbegin, "i", "n", "rtm") +TARGET_BUILTIN(__builtin_ia32_xend, "v", "n", "rtm") +TARGET_BUILTIN(__builtin_ia32_xabort, "vIc", "n", "rtm") +TARGET_BUILTIN(__builtin_ia32_xtest, "i", "n", "rtm") + +BUILTIN(__builtin_ia32_rdpmc, "ULLii", "") +BUILTIN(__builtin_ia32_rdtsc, "ULLi", "") +BUILTIN(__rdtsc, "ULLi", "") +BUILTIN(__builtin_ia32_rdtscp, "ULLiUi*", "") + +TARGET_BUILTIN(__builtin_ia32_rdpid, "Ui", "n", "rdpid") + +// PKU +TARGET_BUILTIN(__builtin_ia32_rdpkru, "Ui", "n", "pku") +TARGET_BUILTIN(__builtin_ia32_wrpkru, "vUi", "n", "pku") + +// AVX-512 +TARGET_BUILTIN(__builtin_ia32_sqrtpd512, "V8dV8dIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_sqrtps512, "V16fV16fIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_rsqrt14sd_mask, "V2dV2dV2dV2dUc", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_rsqrt14ss_mask, "V4fV4fV4fV4fUc", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_rsqrt14pd512_mask, "V8dV8dV8dUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_rsqrt14ps512_mask, "V16fV16fV16fUs", "ncV:512:", "avx512f") + +TARGET_BUILTIN(__builtin_ia32_rsqrt28sd_round_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512er") +TARGET_BUILTIN(__builtin_ia32_rsqrt28ss_round_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512er") +TARGET_BUILTIN(__builtin_ia32_rsqrt28pd_mask, "V8dV8dV8dUcIi", "ncV:512:", "avx512er") +TARGET_BUILTIN(__builtin_ia32_rsqrt28ps_mask, "V16fV16fV16fUsIi", "ncV:512:", "avx512er") + +TARGET_BUILTIN(__builtin_ia32_rcp14sd_mask, "V2dV2dV2dV2dUc", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_rcp14ss_mask, "V4fV4fV4fV4fUc", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_rcp14pd512_mask, "V8dV8dV8dUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_rcp14ps512_mask, "V16fV16fV16fUs", "ncV:512:", "avx512f") + +TARGET_BUILTIN(__builtin_ia32_rcp28sd_round_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512er") +TARGET_BUILTIN(__builtin_ia32_rcp28ss_round_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512er") +TARGET_BUILTIN(__builtin_ia32_rcp28pd_mask, "V8dV8dV8dUcIi", "ncV:512:", "avx512er") +TARGET_BUILTIN(__builtin_ia32_rcp28ps_mask, "V16fV16fV16fUsIi", "ncV:512:", "avx512er") +TARGET_BUILTIN(__builtin_ia32_exp2pd_mask, "V8dV8dV8dUcIi", "ncV:512:", "avx512er") +TARGET_BUILTIN(__builtin_ia32_exp2ps_mask, "V16fV16fV16fUsIi", "ncV:512:", "avx512er") + +TARGET_BUILTIN(__builtin_ia32_cvttps2dq512_mask, "V16iV16fV16iUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvttps2udq512_mask, "V16iV16fV16iUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvttpd2dq512_mask, "V8iV8dV8iUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvttpd2udq512_mask, "V8iV8dV8iUcIi", "ncV:512:", "avx512f") + +TARGET_BUILTIN(__builtin_ia32_cmpps512_mask, "UsV16fV16fIiUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cmpps256_mask, "UcV8fV8fIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cmpps128_mask, "UcV4fV4fIiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cmppd512_mask, "UcV8dV8dIiUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cmppd256_mask, "UcV4dV4dIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cmppd128_mask, "UcV2dV2dIiUc", "ncV:128:", "avx512vl") + +TARGET_BUILTIN(__builtin_ia32_rndscaleps_mask, "V16fV16fIiV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_rndscalepd_mask, "V8dV8dIiV8dUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtps2dq512_mask, "V16iV16fV16iUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtpd2dq512_mask, "V8iV8dV8iUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtps2udq512_mask, "V16iV16fV16iUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtpd2udq512_mask, "V8iV8dV8iUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_minps512, "V16fV16fV16fIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_minpd512, "V8dV8dV8dIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_maxps512, "V16fV16fV16fIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_maxpd512, "V8dV8dV8dIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtdq2ps512_mask, "V16fV16iV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtudq2ps512_mask, "V16fV16iV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtpd2ps512_mask, "V8fV8dV8fUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvtps2ph512_mask, "V16sV16fIiV16sUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvtph2ps512_mask, "V16fV16sV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pabsd512, "V16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pabsq512, "V8LLiV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmaxsd512, "V16iV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmaxsq512, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmaxud512, "V16iV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmaxuq512, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pminsd512, "V16iV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pminsq512, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pminud512, "V16iV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pminuq512, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmuldq512, "V8LLiV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmuludq512, "V8LLiV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_loaddqusi512_mask, "V16iiC*V16iUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_loaddqudi512_mask, "V8LLiLLiC*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_loadups512_mask, "V16ffC*V16fUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_loadaps512_mask, "V16fV16fC*V16fUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_loadupd512_mask, "V8ddC*V8dUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_loadapd512_mask, "V8dV8dC*V8dUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_storedqudi512_mask, "vLLi*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_storedqusi512_mask, "vi*V16iUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_storeupd512_mask, "vd*V8dUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_storeapd512_mask, "vV8d*V8dUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_storeups512_mask, "vf*V16fUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_storeaps512_mask, "vV16f*V16fUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_alignq512, "V8LLiV8LLiV8LLiIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_alignd512, "V16iV16iV16iIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_alignd128, "V4iV4iV4iIi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_alignd256, "V8iV8iV8iIi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_alignq128, "V2LLiV2LLiV2LLiIi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_alignq256, "V4LLiV4LLiV4LLiIi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_extractf64x4_mask, "V4dV8dIiV4dUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_extractf32x4_mask, "V4fV16fIiV4fUc", "ncV:512:", "avx512f") + +TARGET_BUILTIN(__builtin_ia32_vpdpbusd128, "V4iV4iV4iV4i", "ncV:128:", "avx512vl,avx512vnni") +TARGET_BUILTIN(__builtin_ia32_vpdpbusd256, "V8iV8iV8iV8i", "ncV:256:", "avx512vl,avx512vnni") +TARGET_BUILTIN(__builtin_ia32_vpdpbusd512, "V16iV16iV16iV16i", "ncV:512:", "avx512vnni") +TARGET_BUILTIN(__builtin_ia32_vpdpbusds128, "V4iV4iV4iV4i", "ncV:128:", "avx512vl,avx512vnni") +TARGET_BUILTIN(__builtin_ia32_vpdpbusds256, "V8iV8iV8iV8i", "ncV:256:", "avx512vl,avx512vnni") +TARGET_BUILTIN(__builtin_ia32_vpdpbusds512, "V16iV16iV16iV16i", "ncV:512:", "avx512vnni") +TARGET_BUILTIN(__builtin_ia32_vpdpwssd128, "V4iV4iV4iV4i", "ncV:128:", "avx512vl,avx512vnni") +TARGET_BUILTIN(__builtin_ia32_vpdpwssd256, "V8iV8iV8iV8i", "ncV:256:", "avx512vl,avx512vnni") +TARGET_BUILTIN(__builtin_ia32_vpdpwssd512, "V16iV16iV16iV16i", "ncV:512:", "avx512vnni") +TARGET_BUILTIN(__builtin_ia32_vpdpwssds128, "V4iV4iV4iV4i", "ncV:128:", "avx512vl,avx512vnni") +TARGET_BUILTIN(__builtin_ia32_vpdpwssds256, "V8iV8iV8iV8i", "ncV:256:", "avx512vl,avx512vnni") +TARGET_BUILTIN(__builtin_ia32_vpdpwssds512, "V16iV16iV16iV16i", "ncV:512:", "avx512vnni") + +TARGET_BUILTIN(__builtin_ia32_gather3div2df, "V2dV2dvC*V2LLiUcIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3div2di, "V2LLiV2LLivC*V2LLiUcIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3div4df, "V4dV4dvC*V4LLiUcIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3div4di, "V4LLiV4LLivC*V4LLiUcIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3div4sf, "V4fV4fvC*V2LLiUcIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3div4si, "V4iV4ivC*V2LLiUcIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3div8sf, "V4fV4fvC*V4LLiUcIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3div8si, "V4iV4ivC*V4LLiUcIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3siv2df, "V2dV2dvC*V4iUcIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3siv2di, "V2LLiV2LLivC*V4iUcIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3siv4df, "V4dV4dvC*V4iUcIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3siv4di, "V4LLiV4LLivC*V4iUcIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3siv4sf, "V4fV4fvC*V4iUcIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3siv4si, "V4iV4ivC*V4iUcIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3siv8sf, "V8fV8fvC*V8iUcIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gather3siv8si, "V8iV8ivC*V8iUcIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_gathersiv8df, "V8dV8dvC*V8iUcIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_gathersiv16sf, "V16fV16fvC*V16iUsIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_gatherdiv8df, "V8dV8dvC*V8LLiUcIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_gatherdiv16sf, "V8fV8fvC*V8LLiUcIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_gathersiv8di, "V8LLiV8LLivC*V8iUcIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_gathersiv16si, "V16iV16ivC*V16iUsIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_gatherdiv8di, "V8LLiV8LLivC*V8LLiUcIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_gatherdiv16si, "V8iV8ivC*V8LLiUcIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_scattersiv8df, "vv*UcV8iV8dIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_scattersiv16sf, "vv*UsV16iV16fIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_scatterdiv8df, "vv*UcV8LLiV8dIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_scatterdiv16sf, "vv*UcV8LLiV8fIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_scattersiv8di, "vv*UcV8iV8LLiIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_scattersiv16si, "vv*UsV16iV16iIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_scatterdiv8di, "vv*UcV8LLiV8LLiIi", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_scatterdiv16si, "vv*UcV8LLiV8iIi", "nV:512:", "avx512f") + +TARGET_BUILTIN(__builtin_ia32_gatherpfdpd, "vUcV8ivC*IiIi", "nV:512:", "avx512pf") +TARGET_BUILTIN(__builtin_ia32_gatherpfdps, "vUsV16ivC*IiIi", "nV:512:", "avx512pf") +TARGET_BUILTIN(__builtin_ia32_gatherpfqpd, "vUcV8LLivC*IiIi", "nV:512:", "avx512pf") +TARGET_BUILTIN(__builtin_ia32_gatherpfqps, "vUcV8LLivC*IiIi", "nV:512:", "avx512pf") +TARGET_BUILTIN(__builtin_ia32_scatterpfdpd, "vUcV8iv*IiIi", "nV:512:", "avx512pf") +TARGET_BUILTIN(__builtin_ia32_scatterpfdps, "vUsV16iv*IiIi", "nV:512:", "avx512pf") +TARGET_BUILTIN(__builtin_ia32_scatterpfqpd, "vUcV8LLiv*IiIi", "nV:512:", "avx512pf") +TARGET_BUILTIN(__builtin_ia32_scatterpfqps, "vUcV8LLiv*IiIi", "nV:512:", "avx512pf") + +TARGET_BUILTIN(__builtin_ia32_knotqi, "UcUc", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_knothi, "UsUs", "nc", "avx512f") +TARGET_BUILTIN(__builtin_ia32_knotsi, "UiUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_knotdi, "ULLiULLi", "nc", "avx512bw") + +TARGET_BUILTIN(__builtin_ia32_cmpb128_mask, "UsV16cV16cIiUs", "ncV:128:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_cmpd128_mask, "UcV4iV4iIiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cmpq128_mask, "UcV2LLiV2LLiIiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cmpw128_mask, "UcV8sV8sIiUc", "ncV:128:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_cmpb256_mask, "UiV32cV32cIiUi", "ncV:256:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_cmpd256_mask, "UcV8iV8iIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cmpq256_mask, "UcV4LLiV4LLiIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cmpw256_mask, "UsV16sV16sIiUs", "ncV:256:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_cmpb512_mask, "ULLiV64cV64cIiULLi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_cmpd512_mask, "UsV16iV16iIiUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cmpq512_mask, "UcV8LLiV8LLiIiUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cmpw512_mask, "UiV32sV32sIiUi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_ucmpb128_mask, "UsV16cV16cIiUs", "ncV:128:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_ucmpd128_mask, "UcV4iV4iIiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_ucmpq128_mask, "UcV2LLiV2LLiIiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_ucmpw128_mask, "UcV8sV8sIiUc", "ncV:128:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_ucmpb256_mask, "UiV32cV32cIiUi", "ncV:256:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_ucmpd256_mask, "UcV8iV8iIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_ucmpq256_mask, "UcV4LLiV4LLiIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_ucmpw256_mask, "UsV16sV16sIiUs", "ncV:256:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_ucmpb512_mask, "ULLiV64cV64cIiULLi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_ucmpd512_mask, "UsV16iV16iIiUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_ucmpq512_mask, "UcV8LLiV8LLiIiUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_ucmpw512_mask, "UiV32sV32sIiUi", "ncV:512:", "avx512bw") + +TARGET_BUILTIN(__builtin_ia32_pabsb512, "V64cV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pabsw512, "V32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_packssdw512, "V32sV16iV16i", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_packsswb512, "V64cV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_packusdw512, "V32sV16iV16i", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_packuswb512, "V64cV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_paddsb512, "V64cV64cV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_paddsw512, "V32sV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_paddusb512, "V64cV64cV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_paddusw512, "V32sV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmaxsb512, "V64cV64cV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmaxsw512, "V32sV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmaxub512, "V64cV64cV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmaxuw512, "V32sV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pminsb512, "V64cV64cV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pminsw512, "V32sV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pminub512, "V64cV64cV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pminuw512, "V32sV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pshufb512, "V64cV64cV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psubsb512, "V64cV64cV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psubsw512, "V32sV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psubusb512, "V64cV64cV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psubusw512, "V32sV32sV32s", "ncV:512:", "avx512bw") + +TARGET_BUILTIN(__builtin_ia32_vpconflictdi_128, "V2LLiV2LLi", "ncV:128:", "avx512cd,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpconflictdi_256, "V4LLiV4LLi", "ncV:256:", "avx512cd,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpconflictsi_128, "V4iV4i", "ncV:128:", "avx512cd,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpconflictsi_256, "V8iV8i", "ncV:256:", "avx512cd,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpconflictdi_512, "V8LLiV8LLi", "ncV:512:", "avx512cd") +TARGET_BUILTIN(__builtin_ia32_vpconflictsi_512, "V16iV16i", "ncV:512:", "avx512cd") +TARGET_BUILTIN(__builtin_ia32_vplzcntd_512, "V16iV16i", "ncV:512:", "avx512cd") +TARGET_BUILTIN(__builtin_ia32_vplzcntq_512, "V8LLiV8LLi", "ncV:512:", "avx512cd") + +TARGET_BUILTIN(__builtin_ia32_vpopcntd_128, "V4iV4i", "ncV:128:", "avx512vpopcntdq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpopcntq_128, "V2LLiV2LLi", "ncV:128:", "avx512vpopcntdq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpopcntd_256, "V8iV8i", "ncV:256:", "avx512vpopcntdq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpopcntq_256, "V4LLiV4LLi", "ncV:256:", "avx512vpopcntdq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpopcntd_512, "V16iV16i", "ncV:512:", "avx512vpopcntdq") +TARGET_BUILTIN(__builtin_ia32_vpopcntq_512, "V8LLiV8LLi", "ncV:512:", "avx512vpopcntdq") + +TARGET_BUILTIN(__builtin_ia32_vpopcntb_128, "V16cV16c", "ncV:128:", "avx512vl,avx512bitalg") +TARGET_BUILTIN(__builtin_ia32_vpopcntw_128, "V8sV8s", "ncV:128:", "avx512vl,avx512bitalg") +TARGET_BUILTIN(__builtin_ia32_vpopcntb_256, "V32cV32c", "ncV:256:", "avx512vl,avx512bitalg") +TARGET_BUILTIN(__builtin_ia32_vpopcntw_256, "V16sV16s", "ncV:256:", "avx512vl,avx512bitalg") +TARGET_BUILTIN(__builtin_ia32_vpopcntb_512, "V64cV64c", "ncV:512:", "avx512bitalg") +TARGET_BUILTIN(__builtin_ia32_vpopcntw_512, "V32sV32s", "ncV:512:", "avx512bitalg") + +TARGET_BUILTIN(__builtin_ia32_vpshufbitqmb128_mask, "UsV16cV16cUs", "ncV:128:", "avx512vl,avx512bitalg") +TARGET_BUILTIN(__builtin_ia32_vpshufbitqmb256_mask, "UiV32cV32cUi", "ncV:256:", "avx512vl,avx512bitalg") +TARGET_BUILTIN(__builtin_ia32_vpshufbitqmb512_mask, "ULLiV64cV64cULLi", "ncV:512:", "avx512bitalg") + +TARGET_BUILTIN(__builtin_ia32_pmulhrsw512, "V32sV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmulhuw512, "V32sV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmulhw512, "V32sV32sV32s", "ncV:512:", "avx512bw") + +TARGET_BUILTIN(__builtin_ia32_addpd512, "V8dV8dV8dIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_addps512, "V16fV16fV16fIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_divpd512, "V8dV8dV8dIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_divps512, "V16fV16fV16fIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_mulpd512, "V8dV8dV8dIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_mulps512, "V16fV16fV16fIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_subpd512, "V8dV8dV8dIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_subps512, "V16fV16fV16fIi", "ncV:512:", "avx512f") + +TARGET_BUILTIN(__builtin_ia32_pmaddubsw512, "V32sV64cV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmaddwd512, "V16iV32sV32s", "ncV:512:", "avx512bw") + +TARGET_BUILTIN(__builtin_ia32_addss_round_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_divss_round_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_mulss_round_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_subss_round_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_maxss_round_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_minss_round_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_addsd_round_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_divsd_round_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_mulsd_round_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_subsd_round_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_maxsd_round_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_minsd_round_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512f") + +TARGET_BUILTIN(__builtin_ia32_compressdf128_mask, "V2dV2dV2dUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_compressdf256_mask, "V4dV4dV4dUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_compressdi128_mask, "V2LLiV2LLiV2LLiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_compressdi256_mask, "V4LLiV4LLiV4LLiUc", "ncV:256:", "avx512vl") + +TARGET_BUILTIN(__builtin_ia32_compresshi128_mask, "V8sV8sV8sUc", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_compresshi256_mask, "V16sV16sV16sUs", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_compressqi128_mask, "V16cV16cV16cUs", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_compressqi256_mask, "V32cV32cV32cUi", "ncV:256:", "avx512vl,avx512vbmi2") + +TARGET_BUILTIN(__builtin_ia32_compresssf128_mask, "V4fV4fV4fUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_compresssf256_mask, "V8fV8fV8fUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_compresssi128_mask, "V4iV4iV4iUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_compresssi256_mask, "V8iV8iV8iUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_compressstoredf128_mask, "vV2d*V2dUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_compressstoredf256_mask, "vV4d*V4dUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_compressstoredi128_mask, "vV2LLi*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_compressstoredi256_mask, "vV4LLi*V4LLiUc", "nV:256:", "avx512vl") + +TARGET_BUILTIN(__builtin_ia32_compressstorehi128_mask, "vV8s*V8sUc", "nV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_compressstorehi256_mask, "vV16s*V16sUs", "nV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_compressstoreqi128_mask, "vV16c*V16cUs", "nV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_compressstoreqi256_mask, "vV32c*V32cUi", "nV:256:", "avx512vl,avx512vbmi2") + +TARGET_BUILTIN(__builtin_ia32_compressstoresf128_mask, "vV4f*V4fUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_compressstoresf256_mask, "vV8f*V8fUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_compressstoresi128_mask, "vV4i*V4iUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_compressstoresi256_mask, "vV8i*V8iUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtpd2dq128_mask, "V4iV2dV4iUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtpd2ps_mask, "V4fV2dV4fUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtpd2udq128_mask, "V4iV2dV4iUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtpd2udq256_mask, "V4iV4dV4iUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtps2udq128_mask, "V4iV4fV4iUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtps2udq256_mask, "V8iV8fV8iUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvttpd2dq128_mask, "V4iV2dV4iUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvttpd2udq128_mask, "V4iV2dV4iUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvttpd2udq256_mask, "V4iV4dV4iUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvttps2udq128_mask, "V4iV4fV4iUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvttps2udq256_mask, "V8iV8fV8iUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expanddf128_mask, "V2dV2dV2dUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expanddf256_mask, "V4dV4dV4dUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expanddi128_mask, "V2LLiV2LLiV2LLiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expanddi256_mask, "V4LLiV4LLiV4LLiUc", "ncV:256:", "avx512vl") + +TARGET_BUILTIN(__builtin_ia32_expandhi128_mask, "V8sV8sV8sUc", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_expandhi256_mask, "V16sV16sV16sUs", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_expandqi128_mask, "V16cV16cV16cUs", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_expandqi256_mask, "V32cV32cV32cUi", "ncV:256:", "avx512vl,avx512vbmi2") + +TARGET_BUILTIN(__builtin_ia32_expandloaddf128_mask, "V2dV2dC*V2dUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expandloaddf256_mask, "V4dV4dC*V4dUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expandloaddi128_mask, "V4iV2LLiC*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expandloaddi256_mask, "V4LLiV4LLiC*V4LLiUc", "nV:256:", "avx512vl") + +TARGET_BUILTIN(__builtin_ia32_expandloadhi128_mask, "V8sV8sC*V8sUc", "nV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_expandloadhi256_mask, "V16sV16sC*V16sUs", "nV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_expandloadqi128_mask, "V16cV16cC*V16cUs", "nV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_expandloadqi256_mask, "V32cV32cC*V32cUi", "nV:256:", "avx512vl,avx512vbmi2") + +TARGET_BUILTIN(__builtin_ia32_expandloadsf128_mask, "V4fV4fC*V4fUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expandloadsf256_mask, "V8fV8fC*V8fUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expandloadsi128_mask, "V4iV4iC*V4iUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expandloadsi256_mask, "V8iV8iC*V8iUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expandsf128_mask, "V4fV4fV4fUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expandsf256_mask, "V8fV8fV8fUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expandsi128_mask, "V4iV4iV4iUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_expandsi256_mask, "V8iV8iV8iUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_getexppd128_mask, "V2dV2dV2dUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_getexppd256_mask, "V4dV4dV4dUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_getexpps128_mask, "V4fV4fV4fUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_getexpps256_mask, "V8fV8fV8fUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pabsq128, "V2LLiV2LLi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pabsq256, "V4LLiV4LLi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmaxsq128, "V2LLiV2LLiV2LLi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmaxsq256, "V4LLiV4LLiV4LLi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmaxuq128, "V2LLiV2LLiV2LLi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmaxuq256, "V4LLiV4LLiV4LLi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pminsq128, "V2LLiV2LLiV2LLi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pminsq256, "V4LLiV4LLiV4LLi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pminuq128, "V2LLiV2LLiV2LLi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pminuq256, "V4LLiV4LLiV4LLi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_rndscalepd_128_mask, "V2dV2dIiV2dUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_rndscalepd_256_mask, "V4dV4dIiV4dUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_rndscaleps_128_mask, "V4fV4fIiV4fUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_rndscaleps_256_mask, "V8fV8fIiV8fUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scalefpd128_mask, "V2dV2dV2dV2dUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scalefpd256_mask, "V4dV4dV4dV4dUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scalefps128_mask, "V4fV4fV4fV4fUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scalefps256_mask, "V8fV8fV8fV8fUc", "ncV:256:", "avx512vl") + +TARGET_BUILTIN(__builtin_ia32_scatterdiv2df, "vv*UcV2LLiV2dIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scatterdiv2di, "vv*UcV2LLiV2LLiIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scatterdiv4df, "vv*UcV4LLiV4dIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scatterdiv4di, "vv*UcV4LLiV4LLiIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scatterdiv4sf, "vv*UcV2LLiV4fIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scatterdiv4si, "vv*UcV2LLiV4iIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scatterdiv8sf, "vv*UcV4LLiV4fIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scatterdiv8si, "vv*UcV4LLiV4iIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scattersiv2df, "vv*UcV4iV2dIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scattersiv2di, "vv*UcV4iV2LLiIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scattersiv4df, "vv*UcV4iV4dIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scattersiv4di, "vv*UcV4iV4LLiIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scattersiv4sf, "vv*UcV4iV4fIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scattersiv4si, "vv*UcV4iV4iIi", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scattersiv8sf, "vv*UcV8iV8fIi", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_scattersiv8si, "vv*UcV8iV8iIi", "nV:256:", "avx512vl") + +TARGET_BUILTIN(__builtin_ia32_vpermi2vard128, "V4iV4iV4iV4i", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpermi2vard256, "V8iV8iV8iV8i", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpermi2vard512, "V16iV16iV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vpermi2varpd128, "V2dV2dV2LLiV2d", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpermi2varpd256, "V4dV4dV4LLiV4d", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpermi2varpd512, "V8dV8dV8LLiV8d", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vpermi2varps128, "V4fV4fV4iV4f", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpermi2varps256, "V8fV8fV8iV8f", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpermi2varps512, "V16fV16fV16iV16f", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vpermi2varq128, "V2LLiV2LLiV2LLiV2LLi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpermi2varq256, "V4LLiV4LLiV4LLiV4LLi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpermi2varq512, "V8LLiV8LLiV8LLiV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vpermi2varqi128, "V16cV16cV16cV16c", "ncV:128:", "avx512vbmi,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpermi2varqi256, "V32cV32cV32cV32c", "ncV:256:", "avx512vbmi,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpermi2varqi512, "V64cV64cV64cV64c", "ncV:512:", "avx512vbmi") +TARGET_BUILTIN(__builtin_ia32_vpermi2varhi128, "V8sV8sV8sV8s", "ncV:128:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_vpermi2varhi256, "V16sV16sV16sV16s", "ncV:256:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_vpermi2varhi512, "V32sV32sV32sV32s", "ncV:512:", "avx512bw") + +TARGET_BUILTIN(__builtin_ia32_vpshldd128, "V4iV4iV4iIi", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldd256, "V8iV8iV8iIi", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldd512, "V16iV16iV16iIi", "ncV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldq128, "V2LLiV2LLiV2LLiIi", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldq256, "V4LLiV4LLiV4LLiIi", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldq512, "V8LLiV8LLiV8LLiIi", "ncV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldw128, "V8sV8sV8sIi", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldw256, "V16sV16sV16sIi", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldw512, "V32sV32sV32sIi", "ncV:512:", "avx512vbmi2") + +TARGET_BUILTIN(__builtin_ia32_vpshldvd128, "V4iV4iV4iV4i", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldvd256, "V8iV8iV8iV8i", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldvd512, "V16iV16iV16iV16i", "ncV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldvq128, "V2LLiV2LLiV2LLiV2LLi", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldvq256, "V4LLiV4LLiV4LLiV4LLi", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldvq512, "V8LLiV8LLiV8LLiV8LLi", "ncV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldvw128, "V8sV8sV8sV8s", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldvw256, "V16sV16sV16sV16s", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshldvw512, "V32sV32sV32sV32s", "ncV:512:", "avx512vbmi2") + +TARGET_BUILTIN(__builtin_ia32_vpshrdvd128, "V4iV4iV4iV4i", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdvd256, "V8iV8iV8iV8i", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdvd512, "V16iV16iV16iV16i", "ncV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdvq128, "V2LLiV2LLiV2LLiV2LLi", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdvq256, "V4LLiV4LLiV4LLiV4LLi", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdvq512, "V8LLiV8LLiV8LLiV8LLi", "ncV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdvw128, "V8sV8sV8sV8s", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdvw256, "V16sV16sV16sV16s", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdvw512, "V32sV32sV32sV32s", "ncV:512:", "avx512vbmi2") + +TARGET_BUILTIN(__builtin_ia32_vpshrdd128, "V4iV4iV4iIi", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdd256, "V8iV8iV8iIi", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdd512, "V16iV16iV16iIi", "ncV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdq128, "V2LLiV2LLiV2LLiIi", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdq256, "V4LLiV4LLiV4LLiIi", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdq512, "V8LLiV8LLiV8LLiIi", "ncV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdw128, "V8sV8sV8sIi", "ncV:128:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdw256, "V16sV16sV16sIi", "ncV:256:", "avx512vl,avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_vpshrdw512, "V32sV32sV32sIi", "ncV:512:", "avx512vbmi2") + +TARGET_BUILTIN(__builtin_ia32_pmovswb512_mask, "V32cV32sV32cUi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovuswb512_mask, "V32cV32sV32cUi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovwb512_mask, "V32cV32sV32cUi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_cvtpd2qq128_mask, "V2LLiV2dV2LLiUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtpd2qq256_mask, "V4LLiV4dV4LLiUc", "ncV:256:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtpd2uqq128_mask, "V2LLiV2dV2LLiUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtpd2uqq256_mask, "V4LLiV4dV4LLiUc", "ncV:256:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtps2qq128_mask, "V2LLiV4fV2LLiUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtps2qq256_mask, "V4LLiV4fV4LLiUc", "ncV:256:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtps2uqq128_mask, "V2LLiV4fV2LLiUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtps2uqq256_mask, "V4LLiV4fV4LLiUc", "ncV:256:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtqq2ps128_mask, "V4fV2LLiV4fUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvttpd2qq128_mask, "V2LLiV2dV2LLiUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvttpd2qq256_mask, "V4LLiV4dV4LLiUc", "ncV:256:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvttpd2uqq128_mask, "V2LLiV2dV2LLiUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvttpd2uqq256_mask, "V4LLiV4dV4LLiUc", "ncV:256:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvttps2qq128_mask, "V2LLiV4fV2LLiUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvttps2qq256_mask, "V4LLiV4fV4LLiUc", "ncV:256:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvttps2uqq128_mask, "V2LLiV4fV2LLiUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvttps2uqq256_mask, "V4LLiV4fV4LLiUc", "ncV:256:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtuqq2ps128_mask, "V4fV2LLiV4fUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_rangepd128_mask, "V2dV2dV2dIiV2dUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_rangepd256_mask, "V4dV4dV4dIiV4dUc", "ncV:256:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_rangeps128_mask, "V4fV4fV4fIiV4fUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_rangeps256_mask, "V8fV8fV8fIiV8fUc", "ncV:256:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_rangesd128_round_mask, "V2dV2dV2dV2dUcIiIi", "ncV:128:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_rangess128_round_mask, "V4fV4fV4fV4fUcIiIi", "ncV:128:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_reducepd128_mask, "V2dV2dIiV2dUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_reducepd256_mask, "V4dV4dIiV4dUc", "ncV:256:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_reduceps128_mask, "V4fV4fIiV4fUc", "ncV:128:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_reduceps256_mask, "V8fV8fIiV8fUc", "ncV:256:", "avx512vl,avx512dq") +TARGET_BUILTIN(__builtin_ia32_reducesd_mask, "V2dV2dV2dV2dUcIiIi", "ncV:128:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_reducess_mask, "V4fV4fV4fV4fUcIiIi", "ncV:128:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_pmovswb128_mask, "V16cV8sV16cUc", "ncV:128:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovswb256_mask, "V16cV16sV16cUs", "ncV:256:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovuswb128_mask, "V16cV8sV16cUc", "ncV:128:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovuswb256_mask, "V16cV16sV16cUs", "ncV:256:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovwb128_mask, "V16cV8sV16cUc", "ncV:128:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_cvtpd2qq512_mask, "V8LLiV8dV8LLiUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtpd2uqq512_mask, "V8LLiV8dV8LLiUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtps2qq512_mask, "V8LLiV8fV8LLiUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtps2uqq512_mask, "V8LLiV8fV8LLiUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtqq2pd512_mask, "V8dV8LLiV8dUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtqq2ps512_mask, "V8fV8LLiV8fUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvttpd2qq512_mask, "V8LLiV8dV8LLiUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvttpd2uqq512_mask, "V8LLiV8dV8LLiUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvttps2qq512_mask, "V8LLiV8fV8LLiUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvttps2uqq512_mask, "V8LLiV8fV8LLiUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtuqq2pd512_mask, "V8dV8LLiV8dUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtuqq2ps512_mask, "V8fV8LLiV8fUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_rangepd512_mask, "V8dV8dV8dIiV8dUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_rangeps512_mask, "V16fV16fV16fIiV16fUsIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_reducepd512_mask, "V8dV8dIiV8dUcIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_reduceps512_mask, "V16fV16fIiV16fUsIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_prold512, "V16iV16iIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_prolq512, "V8LLiV8LLiIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_prold128, "V4iV4iIi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prold256, "V8iV8iIi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prolq128, "V2LLiV2LLiIi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prolq256, "V4LLiV4LLiIi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prolvd512, "V16iV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_prolvq512, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_prord512, "V16iV16iIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_prorq512, "V8LLiV8LLiIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_prolvd128, "V4iV4iV4i", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prolvd256, "V8iV8iV8i", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prolvq128, "V2LLiV2LLiV2LLi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prolvq256, "V4LLiV4LLiV4LLi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prord128, "V4iV4iIi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prord256, "V8iV8iIi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prorq128, "V2LLiV2LLiIi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prorq256, "V4LLiV4LLiIi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prorvd512, "V16iV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_prorvq512, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_prorvd128, "V4iV4iV4i", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prorvd256, "V8iV8iV8i", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prorvq128, "V2LLiV2LLiV2LLi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_prorvq256, "V4LLiV4LLiV4LLi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pshufhw512, "V32sV32sIi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pshuflw512, "V32sV32sIi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psllv32hi, "V32sV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psllw512, "V32sV32sV8s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psllwi512, "V32sV32si", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psllv16hi, "V16sV16sV16s", "ncV:256:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_psllv8hi, "V8sV8sV8s", "ncV:128:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_pslldi512, "V16iV16ii", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psllqi512, "V8LLiV8LLii", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psrlv32hi, "V32sV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psrlv16hi, "V16sV16sV16s", "ncV:256:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_psrlv8hi, "V8sV8sV8s", "ncV:128:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_psrldi512, "V16iV16ii", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psrlqi512, "V8LLiV8LLii", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psrav32hi, "V32sV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psrav16hi, "V16sV16sV16s", "ncV:256:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_psrav8hi, "V8sV8sV8s", "ncV:128:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_psravq128, "V2LLiV2LLiV2LLi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_psravq256, "V4LLiV4LLiV4LLi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_psraw512, "V32sV32sV8s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psrawi512, "V32sV32si", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psrlw512, "V32sV32sV8s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psrlwi512, "V32sV32si", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pslldqi512_byteshift, "V8LLiV8LLiIi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psrldqi512_byteshift, "V8LLiV8LLiIi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_movdqa32load128_mask, "V4iV4i*V4iUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_movdqa32load256_mask, "V8iV8i*V8iUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_movdqa32load512_mask, "V16iV16iC*V16iUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_movdqa32store512_mask, "vV16i*V16iUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_movdqa64load512_mask, "V8LLiV8LLiC*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_movdqa64store512_mask, "vV8LLi*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_movdqa32store128_mask, "vV4i*V4iUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_movdqa32store256_mask, "vV8i*V8iUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_movdqa64load128_mask, "V2LLiV2LLiC*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_movdqa64load256_mask, "V4LLiV4LLiC*V4LLiUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_movdqa64store128_mask, "vV2LLi*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_movdqa64store256_mask, "vV4LLi*V4LLiUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpmadd52huq512, "V8LLiV8LLiV8LLiV8LLi", "ncV:512:", "avx512ifma") +TARGET_BUILTIN(__builtin_ia32_vpmadd52luq512, "V8LLiV8LLiV8LLiV8LLi", "ncV:512:", "avx512ifma") +TARGET_BUILTIN(__builtin_ia32_vpmadd52huq128, "V2LLiV2LLiV2LLiV2LLi", "ncV:128:", "avx512ifma,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpmadd52huq256, "V4LLiV4LLiV4LLiV4LLi", "ncV:256:", "avx512ifma,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpmadd52luq128, "V2LLiV2LLiV2LLiV2LLi", "ncV:128:", "avx512ifma,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpmadd52luq256, "V4LLiV4LLiV4LLiV4LLi", "ncV:256:", "avx512ifma,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vcomisd, "iV2dV2dIiIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcomiss, "iV4fV4fIiIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_kunpckdi, "ULLiULLiULLi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kunpcksi, "UiUiUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_loaddquhi512_mask, "V32sV32s*V32sUi", "nV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_loaddquqi512_mask, "V64cV64c*V64cULLi", "nV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_fixupimmpd512_mask, "V8dV8dV8dV8LLiIiUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_fixupimmpd512_maskz, "V8dV8dV8dV8LLiIiUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_fixupimmps512_mask, "V16fV16fV16fV16iIiUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_fixupimmps512_maskz, "V16fV16fV16fV16iIiUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_fixupimmsd_mask, "V2dV2dV2dV2LLiIiUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_fixupimmsd_maskz, "V2dV2dV2dV2LLiIiUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_fixupimmss_mask, "V4fV4fV4fV4iIiUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_fixupimmss_maskz, "V4fV4fV4fV4iIiUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_getexpsd128_round_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_getexpss128_round_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_getmantsd_round_mask, "V2dV2dV2dIiV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_getmantss_round_mask, "V4fV4fV4fIiV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_loaddquhi128_mask, "V8sV8s*V8sUc", "nV:128:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_loaddquhi256_mask, "V16sV16s*V16sUs", "nV:256:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_loaddquqi128_mask, "V16cV16c*V16cUs", "nV:128:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_loaddquqi256_mask, "V32cV32c*V32cUi", "nV:256:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_fixupimmpd128_mask, "V2dV2dV2dV2LLiIiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_fixupimmpd128_maskz, "V2dV2dV2dV2LLiIiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_fixupimmpd256_mask, "V4dV4dV4dV4LLiIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_fixupimmpd256_maskz, "V4dV4dV4dV4LLiIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_fixupimmps128_mask, "V4fV4fV4fV4iIiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_fixupimmps128_maskz, "V4fV4fV4fV4iIiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_fixupimmps256_mask, "V8fV8fV8fV8iIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_fixupimmps256_maskz, "V8fV8fV8fV8iIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_loadapd128_mask, "V2dV2d*V2dUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_loadsd128_mask, "V2dV2d*V2dUc", "nV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_loadapd256_mask, "V4dV4d*V4dUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_loadaps128_mask, "V4fV4f*V4fUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_loadss128_mask, "V4fV4f*V4fUc", "nV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_loadaps256_mask, "V8fV8f*V8fUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_loaddqudi128_mask, "V2LLiV2LLi*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_loaddqudi256_mask, "V4LLiV4LLi*V4LLiUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_loaddqusi128_mask, "V4iV4i*V4iUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_loaddqusi256_mask, "V8iV8i*V8iUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_loadupd128_mask, "V2dV2d*V2dUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_loadupd256_mask, "V4dV4d*V4dUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_loadups128_mask, "V4fV4f*V4fUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_loadups256_mask, "V8fV8f*V8fUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_storedquhi512_mask, "vV32s*V32sUi", "nV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_storedquqi512_mask, "vV64c*V64cULLi", "nV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_storedquhi128_mask, "vV8s*V8sUc", "nV:128:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_storedquhi256_mask, "vV16s*V16sUs", "nV:256:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_storedquqi128_mask, "vV16c*V16cUs", "nV:128:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_storedquqi256_mask, "vV32c*V32cUi", "nV:256:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_storeapd128_mask, "vV2d*V2dUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_storesd128_mask, "vV2d*V2dUc", "nV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_storeapd256_mask, "vV4d*V4dUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_storeaps128_mask, "vV4f*V4fUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_storess128_mask, "vV4f*V4fUc", "nV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_storeaps256_mask, "vV8f*V8fUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_storedqudi128_mask, "vV2LLi*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_storedqudi256_mask, "vV4LLi*V4LLiUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_storedqusi128_mask, "vV4i*V4iUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_storedqusi256_mask, "vV8i*V8iUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_storeupd128_mask, "vV2d*V2dUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_storeupd256_mask, "vV4d*V4dUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_storeups128_mask, "vV4f*V4fUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_storeups256_mask, "vV8f*V8fUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_rcp14pd128_mask, "V2dV2dV2dUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_rcp14pd256_mask, "V4dV4dV4dUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_rcp14ps128_mask, "V4fV4fV4fUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_rcp14ps256_mask, "V8fV8fV8fUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_vplzcntd_128, "V4iV4i", "ncV:128:", "avx512cd,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vplzcntd_256, "V8iV8i", "ncV:256:", "avx512cd,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vplzcntq_128, "V2LLiV2LLi", "ncV:128:", "avx512cd,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vplzcntq_256, "V4LLiV4LLi", "ncV:256:", "avx512cd,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vcvtsd2si32, "iV2dIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvtsd2usi32, "UiV2dIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvtss2si32, "iV4fIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvtss2usi32, "UiV4fIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvttsd2si32, "iV2dIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvttsd2usi32, "UiV2dIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvttss2si32, "iV4fIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvttss2usi32, "UiV4fIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vpermilpd512, "V8dV8dIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vpermilps512, "V16fV16fIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vpermilvarpd512, "V8dV8dV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vpermilvarps512, "V16fV16fV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_rndscalesd_round_mask, "V2dV2dV2dV2dUcIiIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_rndscaless_round_mask, "V4fV4fV4fV4fUcIiIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_scalefpd512_mask, "V8dV8dV8dV8dUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_scalefps512_mask, "V16fV16fV16fV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_scalefsd_round_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_scalefss_round_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psradi512, "V16iV16ii", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psraqi512, "V8LLiV8LLii", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psraq128, "V2LLiV2LLiV2LLi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_psraq256, "V4LLiV4LLiV2LLi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_psraqi128, "V2LLiV2LLii", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_psraqi256, "V4LLiV4LLii", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pslld512, "V16iV16iV4i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psllq512, "V8LLiV8LLiV2LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psllv16si, "V16iV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psllv8di, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psrad512, "V16iV16iV4i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psraq512, "V8LLiV8LLiV2LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psrav16si, "V16iV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psrav8di, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psrld512, "V16iV16iV4i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psrlq512, "V8LLiV8LLiV2LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psrlv16si, "V16iV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_psrlv8di, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pternlogd512_mask, "V16iV16iV16iV16iIiUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pternlogd512_maskz, "V16iV16iV16iV16iIiUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pternlogq512_mask, "V8LLiV8LLiV8LLiV8LLiIiUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pternlogq512_maskz, "V8LLiV8LLiV8LLiV8LLiIiUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pternlogd128_mask, "V4iV4iV4iV4iIiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pternlogd128_maskz, "V4iV4iV4iV4iIiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pternlogd256_mask, "V8iV8iV8iV8iIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pternlogd256_maskz, "V8iV8iV8iV8iIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pternlogq128_mask, "V2LLiV2LLiV2LLiV2LLiIiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pternlogq128_maskz, "V2LLiV2LLiV2LLiV2LLiIiUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pternlogq256_mask, "V4LLiV4LLiV4LLiV4LLiIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pternlogq256_maskz, "V4LLiV4LLiV4LLiV4LLiIiUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_shuf_f32x4, "V16fV16fV16fIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_shuf_f64x2, "V8dV8dV8dIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_shuf_i32x4, "V16iV16iV16iIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_shuf_i64x2, "V8LLiV8LLiV8LLiIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_shufpd512, "V8dV8dV8dIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_shufps512, "V16fV16fV16fIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_shuf_f32x4_256, "V8fV8fV8fIi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_shuf_f64x2_256, "V4dV4dV4dIi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_shuf_i32x4_256, "V8iV8iV8iIi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_shuf_i64x2_256, "V4LLiV4LLiV4LLiIi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_sqrtsd_round_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_sqrtss_round_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_rsqrt14pd128_mask, "V2dV2dV2dUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_rsqrt14pd256_mask, "V4dV4dV4dUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_rsqrt14ps128_mask, "V4fV4fV4fUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_rsqrt14ps256_mask, "V8fV8fV8fUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtb2mask512, "ULLiV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_cvtmask2b512, "V64cULLi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_cvtmask2w512, "V32sUi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_cvtd2mask512, "UsV16i", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtmask2d512, "V16iUs", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtmask2q512, "V8LLiUc", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtq2mask512, "UcV8LLi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_cvtb2mask128, "UsV16c", "ncV:128:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtb2mask256, "UiV32c", "ncV:256:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtmask2b128, "V16cUs", "ncV:128:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtmask2b256, "V32cUi", "ncV:256:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtmask2w128, "V8sUc", "ncV:128:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtmask2w256, "V16sUs", "ncV:256:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtd2mask128, "UcV4i", "ncV:128:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtd2mask256, "UcV8i", "ncV:256:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtmask2d128, "V4iUc", "ncV:128:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtmask2d256, "V8iUc", "ncV:256:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtmask2q128, "V2LLiUc", "ncV:128:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtmask2q256, "V4LLiUc", "ncV:256:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtq2mask128, "UcV2LLi", "ncV:128:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtq2mask256, "UcV4LLi", "ncV:256:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsdb512_mask, "V16cV16iV16cUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovsdb512mem_mask, "vV16c*V16iUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovswb512mem_mask, "vV32c*V32sUi", "nV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovsdw512_mask, "V16sV16iV16sUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovsdw512mem_mask, "vV16s*V16iUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovsqb512_mask, "V16cV8LLiV16cUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovsqb512mem_mask, "vV16c*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovsqd512_mask, "V8iV8LLiV8iUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovsqd512mem_mask, "vV8i*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovsqw512_mask, "V8sV8LLiV8sUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovsqw512mem_mask, "vV8s*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovsdb128_mask, "V16cV4iV16cUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsdb128mem_mask, "vV16c*V4iUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovswb128mem_mask, "vV16c*V8sUc", "nV:128:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovsdb256_mask, "V16cV8iV16cUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsdb256mem_mask, "vV16c*V8iUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovswb256mem_mask, "vV16c*V16sUs", "nV:256:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovsdw128_mask, "V8sV4iV8sUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsdw128mem_mask, "vV8s*V4iUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsdw256_mask, "V8sV8iV8sUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsdw256mem_mask, "vV8s*V8iUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsqb128_mask, "V16cV2LLiV16cUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsqb128mem_mask, "vV16c*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsqb256_mask, "V16cV4LLiV16cUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsqb256mem_mask, "vV16c*V4LLiUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsqd128_mask, "V4iV2LLiV4iUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsqd128mem_mask, "vV4i*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsqd256_mask, "V4iV4LLiV4iUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsqd256mem_mask, "vV4i*V4LLiUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsqw128_mask, "V8sV2LLiV8sUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsqw128mem_mask, "vV8s*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsqw256_mask, "V8sV4LLiV8sUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovsqw256mem_mask, "vV8s*V4LLiUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusdb512_mask, "V16cV16iV16cUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovusdb512mem_mask, "vV16c*V16iUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovuswb512mem_mask, "vV32c*V32sUi", "nV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovusdw512_mask, "V16sV16iV16sUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovusdw512mem_mask, "vV16s*V16iUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovusqb512_mask, "V16cV8LLiV16cUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovusqb512mem_mask, "vV16c*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovusqd512_mask, "V8iV8LLiV8iUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovusqd512mem_mask, "vV8i*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovusqw512_mask, "V8sV8LLiV8sUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovusqw512mem_mask, "vV8s*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovusdb128_mask, "V16cV4iV16cUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusdb128mem_mask, "vV16c*V4iUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovuswb128mem_mask, "vV16c*V8sUc", "nV:128:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovusdb256_mask, "V16cV8iV16cUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusdb256mem_mask, "vV16c*V8iUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovuswb256mem_mask, "vV16c*V16sUs", "nV:256:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovusdw128_mask, "V8sV4iV8sUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusdw128mem_mask, "vV8s*V4iUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusdw256_mask, "V8sV8iV8sUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusdw256mem_mask, "vV8s*V8iUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusqb128_mask, "V16cV2LLiV16cUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusqb128mem_mask, "vV16c*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusqb256_mask, "V16cV4LLiV16cUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusqb256mem_mask, "vV16c*V4LLiUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusqd128_mask, "V4iV2LLiV4iUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusqd128mem_mask, "vV4i*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusqd256_mask, "V4iV4LLiV4iUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusqd256mem_mask, "vV4i*V4LLiUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusqw128_mask, "V8sV2LLiV8sUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusqw128mem_mask, "vV8s*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusqw256_mask, "V8sV4LLiV8sUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovusqw256mem_mask, "vV8s*V4LLiUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovdb512_mask, "V16cV16iV16cUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovdb512mem_mask, "vV16c*V16iUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovwb512mem_mask, "vV32c*V32sUi", "nV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovdw512_mask, "V16sV16iV16sUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovdw512mem_mask, "vV16s*V16iUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovqb512_mask, "V16cV8LLiV16cUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovqb512mem_mask, "vV16c*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovqd512_mask, "V8iV8LLiV8iUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovqd512mem_mask, "vV8i*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovqw512_mask, "V8sV8LLiV8sUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovqw512mem_mask, "vV8s*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pmovdb128_mask, "V16cV4iV16cUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovwb128mem_mask, "vV16c*V8sUc", "nV:128:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovdb128mem_mask, "vV16c*V4iUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovdb256_mask, "V16cV8iV16cUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovdb256mem_mask, "vV16c*V8iUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovwb256mem_mask, "vV16c*V16sUs", "nV:256:", "avx512vl,avx512bw") +TARGET_BUILTIN(__builtin_ia32_pmovdw128_mask, "V8sV4iV8sUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovdw128mem_mask, "vV8s*V4iUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovdw256_mask, "V8sV8iV8sUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovdw256mem_mask, "vV8s*V8iUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovqb128_mask, "V16cV2LLiV16cUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovqb128mem_mask, "vV16c*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovqb256_mask, "V16cV4LLiV16cUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovqb256mem_mask, "vV16c*V4LLiUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovqd128_mask, "V4iV2LLiV4iUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovqd128mem_mask, "vV4i*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovqd256mem_mask, "vV4i*V4LLiUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovqw128_mask, "V8sV2LLiV8sUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovqw128mem_mask, "vV8s*V2LLiUc", "nV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovqw256_mask, "V8sV4LLiV8sUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_pmovqw256mem_mask, "vV8s*V4LLiUc", "nV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_extractf32x8_mask, "V8fV16fIiV8fUc", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_extractf64x2_512_mask, "V2dV8dIiV2dUc", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_extracti32x8_mask, "V8iV16iIiV8iUc", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_extracti64x2_512_mask, "V2LLiV8LLiIiV2LLiUc", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_extracti32x4_mask, "V4iV16iIiV4iUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_extracti64x4_mask, "V4LLiV8LLiIiV4LLiUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_extractf64x2_256_mask, "V2dV4dIiV2dUc", "ncV:256:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_extracti64x2_256_mask, "V2LLiV4LLiIiV2LLiUc", "ncV:256:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_extractf32x4_256_mask, "V4fV8fIiV4fUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_extracti32x4_256_mask, "V4iV8iIiV4iUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_insertf32x8, "V16fV16fV8fIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_insertf64x2_512, "V8dV8dV2dIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_inserti32x8, "V16iV16iV8iIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_inserti64x2_512, "V8LLiV8LLiV2LLiIi", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_insertf64x4, "V8dV8dV4dIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_inserti64x4, "V8LLiV8LLiV4LLiIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_insertf64x2_256, "V4dV4dV2dIi", "ncV:256:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_inserti64x2_256, "V4LLiV4LLiV2LLiIi", "ncV:256:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_insertf32x4_256, "V8fV8fV4fIi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_inserti32x4_256, "V8iV8iV4iIi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_insertf32x4, "V16fV16fV4fIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_inserti32x4, "V16iV16iV4iIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_getmantpd128_mask, "V2dV2dIiV2dUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_getmantpd256_mask, "V4dV4dIiV4dUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_getmantps128_mask, "V4fV4fIiV4fUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_getmantps256_mask, "V8fV8fIiV8fUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_getmantpd512_mask, "V8dV8dIiV8dUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_getmantps512_mask, "V16fV16fIiV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_getexppd512_mask, "V8dV8dV8dUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_getexpps512_mask, "V16fV16fV16fUsIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddss3_mask, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddss3_maskz, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddss3_mask3, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddsd3_mask, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddsd3_maskz, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmaddsd3_mask3, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmsubsd3_mask3, "V2dV2dV2dV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vfmsubss3_mask3, "V4fV4fV4fV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_permdf512, "V8dV8dIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_permdi512, "V8LLiV8LLiIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_permvarhi512, "V32sV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_permvardf512, "V8dV8dV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_permvardi512, "V8LLiV8LLiV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_permvarsf512, "V16fV16fV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_permvarsi512, "V16iV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_permvarqi512, "V64cV64cV64c", "ncV:512:", "avx512vbmi") +TARGET_BUILTIN(__builtin_ia32_permvarqi128, "V16cV16cV16c", "ncV:128:", "avx512vbmi,avx512vl") +TARGET_BUILTIN(__builtin_ia32_permvarqi256, "V32cV32cV32c", "ncV:256:", "avx512vbmi,avx512vl") +TARGET_BUILTIN(__builtin_ia32_permvarhi128, "V8sV8sV8s", "ncV:128:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_permvarhi256, "V16sV16sV16s", "ncV:256:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_permvardf256, "V4dV4dV4LLi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_permvardi256, "V4LLiV4LLiV4LLi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_fpclasspd128_mask, "UcV2dIiUc", "ncV:128:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_fpclasspd256_mask, "UcV4dIiUc", "ncV:256:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_fpclassps128_mask, "UcV4fIiUc", "ncV:128:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_fpclassps256_mask, "UcV8fIiUc", "ncV:256:", "avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_fpclassps512_mask, "UsV16fIiUs", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_fpclasspd512_mask, "UcV8dIiUc", "ncV:512:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_fpclasssd_mask, "UcV2dIiUc", "ncV:128:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_fpclassss_mask, "UcV4fIiUc", "ncV:128:", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_kaddqi, "UcUcUc", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_kaddhi, "UsUsUs", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_kaddsi, "UiUiUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kadddi, "ULLiULLiULLi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kandqi, "UcUcUc", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_kandhi, "UsUsUs", "nc", "avx512f") +TARGET_BUILTIN(__builtin_ia32_kandsi, "UiUiUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kanddi, "ULLiULLiULLi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kandnqi, "UcUcUc", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_kandnhi, "UsUsUs", "nc", "avx512f") +TARGET_BUILTIN(__builtin_ia32_kandnsi, "UiUiUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kandndi, "ULLiULLiULLi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_korqi, "UcUcUc", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_korhi, "UsUsUs", "nc", "avx512f") +TARGET_BUILTIN(__builtin_ia32_korsi, "UiUiUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kordi, "ULLiULLiULLi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kortestcqi, "iUcUc", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_kortestzqi, "iUcUc", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_kortestchi, "iUsUs", "nc", "avx512f") +TARGET_BUILTIN(__builtin_ia32_kortestzhi, "iUsUs", "nc", "avx512f") +TARGET_BUILTIN(__builtin_ia32_kortestcsi, "iUiUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kortestzsi, "iUiUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kortestcdi, "iULLiULLi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kortestzdi, "iULLiULLi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_ktestcqi, "iUcUc", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_ktestzqi, "iUcUc", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_ktestchi, "iUsUs", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_ktestzhi, "iUsUs", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_ktestcsi, "iUiUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_ktestzsi, "iUiUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_ktestcdi, "iULLiULLi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_ktestzdi, "iULLiULLi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kunpckhi, "UsUsUs", "nc", "avx512f") +TARGET_BUILTIN(__builtin_ia32_kxnorqi, "UcUcUc", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_kxnorhi, "UsUsUs", "nc", "avx512f") +TARGET_BUILTIN(__builtin_ia32_kxnorsi, "UiUiUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kxnordi, "ULLiULLiULLi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kxorqi, "UcUcUc", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_kxorhi, "UsUsUs", "nc", "avx512f") +TARGET_BUILTIN(__builtin_ia32_kxorsi, "UiUiUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kxordi, "ULLiULLiULLi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kshiftliqi, "UcUcIUi", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_kshiftlihi, "UsUsIUi", "nc", "avx512f") +TARGET_BUILTIN(__builtin_ia32_kshiftlisi, "UiUiIUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kshiftlidi, "ULLiULLiIUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kshiftriqi, "UcUcIUi", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_kshiftrihi, "UsUsIUi", "nc", "avx512f") +TARGET_BUILTIN(__builtin_ia32_kshiftrisi, "UiUiIUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kshiftridi, "ULLiULLiIUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kmovb, "UcUc", "nc", "avx512dq") +TARGET_BUILTIN(__builtin_ia32_kmovw, "UsUs", "nc", "avx512f") +TARGET_BUILTIN(__builtin_ia32_kmovd, "UiUi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_kmovq, "ULLiULLi", "nc", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_palignr512, "V64cV64cV64cIi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_dbpsadbw128, "V8sV16cV16cIi", "ncV:128:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_dbpsadbw256, "V16sV32cV32cIi", "ncV:256:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_dbpsadbw512, "V32sV64cV64cIi", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_psadbw512, "V8LLiV64cV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_compressdf512_mask, "V8dV8dV8dUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_compressdi512_mask, "V8LLiV8LLiV8LLiUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_compresshi512_mask, "V32sV32sV32sUi", "ncV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_compressqi512_mask, "V64cV64cV64cULLi", "ncV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_compresssf512_mask, "V16fV16fV16fUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_compresssi512_mask, "V16iV16iV16iUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cmpsd_mask, "UcV2dV2dIiUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cmpss_mask, "UcV4fV4fIiUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pshufd512, "V16iV16iIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_expanddf512_mask, "V8dV8dV8dUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_expanddi512_mask, "V8LLiV8LLiV8LLiUc", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_expandhi512_mask, "V32sV32sV32sUi", "ncV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_expandqi512_mask, "V64cV64cV64cULLi", "ncV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_expandloaddf512_mask, "V8dV8dC*V8dUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_expandloaddi512_mask, "V8LLiV8LLiC*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_expandloadhi512_mask, "V32sV32sC*V32sUi", "nV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_expandloadqi512_mask, "V64cV64cC*V64cULLi", "nV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_expandloadsf512_mask, "V16fV16fC*V16fUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_expandloadsi512_mask, "V16iV16iC*V16iUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_expandsf512_mask, "V16fV16fV16fUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_expandsi512_mask, "V16iV16iV16iUs", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtps2pd512_mask, "V8dV8fV8dUcIi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_compressstoredf512_mask, "vV8d*V8dUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_compressstoredi512_mask, "vV8LLi*V8LLiUc", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_compressstorehi512_mask, "vV32s*V32sUi", "nV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_compressstoreqi512_mask, "vV64c*V64cULLi", "nV:512:", "avx512vbmi2") +TARGET_BUILTIN(__builtin_ia32_compressstoresf512_mask, "vV16f*V16fUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_compressstoresi512_mask, "vV16i*V16iUs", "nV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvtph2ps_mask, "V4fV8sV4fUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_vcvtph2ps256_mask, "V8fV8sV8fUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_vcvtps2ph_mask, "V8sV4fIiV8sUc", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_vcvtps2ph256_mask, "V8sV8fIiV8sUc", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtw2mask512, "UiV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_cvtw2mask128, "UcV8s", "ncV:128:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtw2mask256, "UsV16s", "ncV:256:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_cvtsd2ss_round_mask, "V4fV4fV2dV4fUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtsi2ss32, "V4fV4fiIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtss2sd_round_mask, "V2dV2dV4fV2dUcIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtusi2ss32, "V4fV4fUiIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vpmultishiftqb512, "V64cV64cV64c", "ncV:512:", "avx512vbmi") +TARGET_BUILTIN(__builtin_ia32_vpmultishiftqb128, "V16cV16cV16c", "ncV:128:", "avx512vbmi,avx512vl") +TARGET_BUILTIN(__builtin_ia32_vpmultishiftqb256, "V32cV32cV32c", "ncV:256:", "avx512vbmi,avx512vl") + +// generic select intrinsics +TARGET_BUILTIN(__builtin_ia32_selectb_128, "V16cUsV16cV16c", "ncV:128:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_selectb_256, "V32cUiV32cV32c", "ncV:256:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_selectb_512, "V64cULLiV64cV64c", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_selectw_128, "V8sUcV8sV8s", "ncV:128:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_selectw_256, "V16sUsV16sV16s", "ncV:256:", "avx512bw,avx512vl") +TARGET_BUILTIN(__builtin_ia32_selectw_512, "V32sUiV32sV32s", "ncV:512:", "avx512bw") +TARGET_BUILTIN(__builtin_ia32_selectd_128, "V4iUcV4iV4i", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_selectd_256, "V8iUcV8iV8i", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_selectd_512, "V16iUsV16iV16i", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_selectq_128, "V2LLiUcV2LLiV2LLi", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_selectq_256, "V4LLiUcV4LLiV4LLi", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_selectq_512, "V8LLiUcV8LLiV8LLi", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_selectps_128, "V4fUcV4fV4f", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_selectps_256, "V8fUcV8fV8f", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_selectps_512, "V16fUsV16fV16f", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_selectpd_128, "V2dUcV2dV2d", "ncV:128:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_selectpd_256, "V4dUcV4dV4d", "ncV:256:", "avx512vl") +TARGET_BUILTIN(__builtin_ia32_selectpd_512, "V8dUcV8dV8d", "ncV:512:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_selectss_128, "V4fUcV4fV4f", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_selectsd_128, "V2dUcV2dV2d", "ncV:128:", "avx512f") + +// MONITORX/MWAITX +TARGET_BUILTIN(__builtin_ia32_monitorx, "vv*UiUi", "n", "mwaitx") +TARGET_BUILTIN(__builtin_ia32_mwaitx, "vUiUiUi", "n", "mwaitx") + +// WAITPKG +TARGET_BUILTIN(__builtin_ia32_umonitor, "vv*", "n", "waitpkg") +TARGET_BUILTIN(__builtin_ia32_umwait, "UcUiUiUi", "n", "waitpkg") +TARGET_BUILTIN(__builtin_ia32_tpause, "UcUiUiUi", "n", "waitpkg") + +// CLZERO +TARGET_BUILTIN(__builtin_ia32_clzero, "vv*", "n", "clzero") + +// CLDEMOTE +TARGET_BUILTIN(__builtin_ia32_cldemote, "vvC*", "n", "cldemote") + +// Direct Move +TARGET_BUILTIN(__builtin_ia32_directstore_u32, "vUi*Ui", "n", "movdiri") +TARGET_BUILTIN(__builtin_ia32_movdir64b, "vv*vC*", "n", "movdir64b") + +// PTWRITE +TARGET_BUILTIN(__builtin_ia32_ptwrite32, "vUi", "n", "ptwrite") + +// INVPCID +TARGET_BUILTIN(__builtin_ia32_invpcid, "vUiv*", "nc", "invpcid") + +// MSVC +TARGET_HEADER_BUILTIN(_BitScanForward, "UcUNi*UNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_BitScanReverse, "UcUNi*UNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_ReadBarrier, "v", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_WriteBarrier, "v", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(__emul, "LLiii", "nch", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__emulu, "ULLiUiUi", "nch", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_AddressOfReturnAddress, "v*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(__stosb, "vUc*Ucz", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__int2c, "v", "nhr", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__ud2, "v", "nhr", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(__readfsbyte, "UcUNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__readfsword, "UsUNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__readfsdword, "UNiUNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__readfsqword, "ULLiUNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(__readgsbyte, "UcUNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__readgsword, "UsUNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__readgsdword, "UNiUNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__readgsqword, "ULLiUNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +#undef BUILTIN +#undef TARGET_BUILTIN +#undef TARGET_HEADER_BUILTIN diff --git a/clang-r353983/include/clang/Basic/BuiltinsX86_64.def b/clang-r353983/include/clang/Basic/BuiltinsX86_64.def new file mode 100644 index 00000000..59b60c3b --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsX86_64.def @@ -0,0 +1,108 @@ +//===--- BuiltinsX86_64.def - X86-64 Builtin function database --*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the X86-64-specific builtin function database. Users of +// this file must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// The format of this database matches clang/Basic/Builtins.def. + +#if defined(BUILTIN) && !defined(TARGET_BUILTIN) +# define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS) +#endif + +#if defined(BUILTIN) && !defined(TARGET_HEADER_BUILTIN) +# define TARGET_HEADER_BUILTIN(ID, TYPE, ATTRS, HEADER, LANG, FEATURE) BUILTIN(ID, TYPE, ATTRS) +#endif + +TARGET_HEADER_BUILTIN(_BitScanForward64, "UcUNi*ULLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_BitScanReverse64, "UcUNi*ULLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(__mulh, "LLiLLiLLi", "nch", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__umulh, "ULLiULLiULLi", "nch", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_mul128, "LLiLLiLLiLLi*", "nch", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_umul128, "ULLiULLiULLiULLi*", "nch", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(__faststorefence, "v", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__shiftleft128, "ULLiULLiULLiUc", "nch", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__shiftright128, "ULLiULLiULLiUc", "nch", "intrin.h", ALL_MS_LANGUAGES, "") + +TARGET_HEADER_BUILTIN(_InterlockedAnd64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedDecrement64, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchange64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedExchangeSub64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedIncrement64, "LLiLLiD*", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedOr64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedXor64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_InterlockedCompareExchange128, "UcLLiD*LLiLLiLLi*", "nh", "intrin.h", ALL_MS_LANGUAGES, "cx16") + +TARGET_BUILTIN(__builtin_ia32_readeflags_u64, "ULLi", "n", "") +TARGET_BUILTIN(__builtin_ia32_writeeflags_u64, "vULLi", "n", "") +TARGET_BUILTIN(__builtin_ia32_cvtss2si64, "LLiV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cvttss2si64, "LLiV4f", "ncV:128:", "sse") +TARGET_BUILTIN(__builtin_ia32_cvtsd2si64, "LLiV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_cvttsd2si64, "LLiV2d", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_movnti64, "vLLi*LLi", "n", "sse2") +TARGET_BUILTIN(__builtin_ia32_vec_ext_v2di, "LLiV2LLiIi", "ncV:128:", "sse2") +TARGET_BUILTIN(__builtin_ia32_vec_set_v2di, "V2LLiV2LLiLLiIi", "ncV:128:", "sse4.1") +TARGET_BUILTIN(__builtin_ia32_crc32di, "ULLiULLiULLi", "nc", "sse4.2") +TARGET_BUILTIN(__builtin_ia32_vec_ext_v4di, "LLiV4LLiIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_vec_set_v4di, "V4LLiV4LLiLLiIi", "ncV:256:", "avx") +TARGET_BUILTIN(__builtin_ia32_rdfsbase32, "Ui", "n", "fsgsbase") +TARGET_BUILTIN(__builtin_ia32_rdfsbase64, "ULLi", "n", "fsgsbase") +TARGET_BUILTIN(__builtin_ia32_rdgsbase32, "Ui", "n", "fsgsbase") +TARGET_BUILTIN(__builtin_ia32_rdgsbase64, "ULLi", "n", "fsgsbase") +TARGET_BUILTIN(__builtin_ia32_wrfsbase32, "vUi", "n", "fsgsbase") +TARGET_BUILTIN(__builtin_ia32_wrfsbase64, "vULLi", "n", "fsgsbase") +TARGET_BUILTIN(__builtin_ia32_wrgsbase32, "vUi", "n", "fsgsbase") +TARGET_BUILTIN(__builtin_ia32_wrgsbase64, "vULLi", "n", "fsgsbase") +TARGET_BUILTIN(__builtin_ia32_fxrstor64, "vv*", "n", "fxsr") +TARGET_BUILTIN(__builtin_ia32_fxsave64, "vv*", "n", "fxsr") +TARGET_BUILTIN(__builtin_ia32_xsave64, "vv*ULLi", "n", "xsave") +TARGET_BUILTIN(__builtin_ia32_xrstor64, "vv*ULLi", "n", "xsave") +TARGET_BUILTIN(__builtin_ia32_xsaveopt64, "vv*ULLi", "n", "xsaveopt") +TARGET_BUILTIN(__builtin_ia32_xrstors64, "vv*ULLi", "n", "xsaves") +TARGET_BUILTIN(__builtin_ia32_xsavec64, "vv*ULLi", "n", "xsavec") +TARGET_BUILTIN(__builtin_ia32_xsaves64, "vv*ULLi", "n", "xsaves") +TARGET_BUILTIN(__builtin_ia32_incsspq, "vULLi", "n", "shstk") +TARGET_BUILTIN(__builtin_ia32_rdsspq, "ULLiULLi", "n", "shstk") +TARGET_BUILTIN(__builtin_ia32_wrssq, "vULLiv*", "n", "shstk") +TARGET_BUILTIN(__builtin_ia32_wrussq, "vULLiv*", "n", "shstk") +TARGET_BUILTIN(__builtin_ia32_addcarryx_u64, "UcUcULLiULLiULLi*", "n", "") +TARGET_BUILTIN(__builtin_ia32_subborrow_u64, "UcUcULLiULLiULLi*", "n", "") +TARGET_BUILTIN(__builtin_ia32_rdrand64_step, "UiULLi*", "n", "rdrnd") +TARGET_BUILTIN(__builtin_ia32_rdseed64_step, "UiULLi*", "n", "rdseed") +TARGET_BUILTIN(__builtin_ia32_lzcnt_u64, "ULLiULLi", "nc", "lzcnt") +TARGET_BUILTIN(__builtin_ia32_bextr_u64, "ULLiULLiULLi", "nc", "bmi") +TARGET_BUILTIN(__builtin_ia32_tzcnt_u64, "ULLiULLi", "nc", "") +TARGET_BUILTIN(__builtin_ia32_bzhi_di, "ULLiULLiULLi", "nc", "bmi2") +TARGET_BUILTIN(__builtin_ia32_pdep_di, "ULLiULLiULLi", "nc", "bmi2") +TARGET_BUILTIN(__builtin_ia32_pext_di, "ULLiULLiULLi", "nc", "bmi2") +TARGET_BUILTIN(__builtin_ia32_bextri_u64, "ULLiULLiIULLi", "nc", "tbm") +TARGET_BUILTIN(__builtin_ia32_lwpins64, "UcULLiUiUi", "n", "lwp") +TARGET_BUILTIN(__builtin_ia32_lwpval64, "vULLiUiUi", "n", "lwp") +TARGET_BUILTIN(__builtin_ia32_vcvtsd2si64, "LLiV2dIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvtsd2usi64, "ULLiV2dIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvtss2si64, "LLiV4fIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvtss2usi64, "ULLiV4fIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvttsd2si64, "LLiV2dIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvttsd2usi64, "ULLiV2dIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvttss2si64, "LLiV4fIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_vcvttss2usi64, "ULLiV4fIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtsi2sd64, "V2dV2dLLiIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtsi2ss64, "V4fV4fLLiIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtusi2sd64, "V2dV2dULLiIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_cvtusi2ss64, "V4fV4fULLiIi", "ncV:128:", "avx512f") +TARGET_BUILTIN(__builtin_ia32_directstore_u64, "vULi*ULi", "n", "movdiri") +TARGET_BUILTIN(__builtin_ia32_ptwrite64, "vULLi", "n", "ptwrite") + +#undef BUILTIN +#undef TARGET_BUILTIN +#undef TARGET_HEADER_BUILTIN diff --git a/clang-r353983/include/clang/Basic/BuiltinsXCore.def b/clang-r353983/include/clang/Basic/BuiltinsXCore.def new file mode 100644 index 00000000..c99b7ced --- /dev/null +++ b/clang-r353983/include/clang/Basic/BuiltinsXCore.def @@ -0,0 +1,21 @@ +//===--- BuiltinsXCore.def - XCore Builtin function database ----*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the XCore-specific builtin function database. Users of +// this file must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// The format of this database matches clang/Basic/Builtins.def. + +BUILTIN(__builtin_bitrev, "UiUi", "nc") +BUILTIN(__builtin_getid, "Si", "nc") +BUILTIN(__builtin_getps, "UiUi", "n") +BUILTIN(__builtin_setps, "vUiUi", "n") + +#undef BUILTIN diff --git a/clang-r353983/include/clang/Basic/CapturedStmt.h b/clang-r353983/include/clang/Basic/CapturedStmt.h new file mode 100644 index 00000000..029e1144 --- /dev/null +++ b/clang-r353983/include/clang/Basic/CapturedStmt.h @@ -0,0 +1,24 @@ +//===--- CapturedStmt.h - Types for CapturedStmts ---------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + + +#ifndef LLVM_CLANG_BASIC_CAPTUREDSTMT_H +#define LLVM_CLANG_BASIC_CAPTUREDSTMT_H + +namespace clang { + +/// The different kinds of captured statement. +enum CapturedRegionKind { + CR_Default, + CR_ObjCAtFinally, + CR_OpenMP +}; + +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_CAPTUREDSTMT_H diff --git a/clang-r353983/include/clang/Basic/CharInfo.h b/clang-r353983/include/clang/Basic/CharInfo.h new file mode 100644 index 00000000..8577475f --- /dev/null +++ b/clang-r353983/include/clang/Basic/CharInfo.h @@ -0,0 +1,198 @@ +//===--- clang/Basic/CharInfo.h - Classifying ASCII Characters --*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_CHARINFO_H +#define LLVM_CLANG_BASIC_CHARINFO_H + +#include "clang/Basic/LLVM.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/Compiler.h" +#include "llvm/Support/DataTypes.h" + +namespace clang { +namespace charinfo { + extern const uint16_t InfoTable[256]; + + enum { + CHAR_HORZ_WS = 0x0001, // '\t', '\f', '\v'. Note, no '\0' + CHAR_VERT_WS = 0x0002, // '\r', '\n' + CHAR_SPACE = 0x0004, // ' ' + CHAR_DIGIT = 0x0008, // 0-9 + CHAR_XLETTER = 0x0010, // a-f,A-F + CHAR_UPPER = 0x0020, // A-Z + CHAR_LOWER = 0x0040, // a-z + CHAR_UNDER = 0x0080, // _ + CHAR_PERIOD = 0x0100, // . + CHAR_RAWDEL = 0x0200, // {}[]#<>%:;?*+-/^&|~!=,"' + CHAR_PUNCT = 0x0400 // `$@() + }; + + enum { + CHAR_XUPPER = CHAR_XLETTER | CHAR_UPPER, + CHAR_XLOWER = CHAR_XLETTER | CHAR_LOWER + }; +} // end namespace charinfo + +/// Returns true if this is an ASCII character. +LLVM_READNONE inline bool isASCII(char c) { + return static_cast<unsigned char>(c) <= 127; +} + +/// Returns true if this is a valid first character of a C identifier, +/// which is [a-zA-Z_]. +LLVM_READONLY inline bool isIdentifierHead(unsigned char c, + bool AllowDollar = false) { + using namespace charinfo; + if (InfoTable[c] & (CHAR_UPPER|CHAR_LOWER|CHAR_UNDER)) + return true; + return AllowDollar && c == '$'; +} + +/// Returns true if this is a body character of a C identifier, +/// which is [a-zA-Z0-9_]. +LLVM_READONLY inline bool isIdentifierBody(unsigned char c, + bool AllowDollar = false) { + using namespace charinfo; + if (InfoTable[c] & (CHAR_UPPER|CHAR_LOWER|CHAR_DIGIT|CHAR_UNDER)) + return true; + return AllowDollar && c == '$'; +} + +/// Returns true if this character is horizontal ASCII whitespace: +/// ' ', '\\t', '\\f', '\\v'. +/// +/// Note that this returns false for '\\0'. +LLVM_READONLY inline bool isHorizontalWhitespace(unsigned char c) { + using namespace charinfo; + return (InfoTable[c] & (CHAR_HORZ_WS|CHAR_SPACE)) != 0; +} + +/// Returns true if this character is vertical ASCII whitespace: '\\n', '\\r'. +/// +/// Note that this returns false for '\\0'. +LLVM_READONLY inline bool isVerticalWhitespace(unsigned char c) { + using namespace charinfo; + return (InfoTable[c] & CHAR_VERT_WS) != 0; +} + +/// Return true if this character is horizontal or vertical ASCII whitespace: +/// ' ', '\\t', '\\f', '\\v', '\\n', '\\r'. +/// +/// Note that this returns false for '\\0'. +LLVM_READONLY inline bool isWhitespace(unsigned char c) { + using namespace charinfo; + return (InfoTable[c] & (CHAR_HORZ_WS|CHAR_VERT_WS|CHAR_SPACE)) != 0; +} + +/// Return true if this character is an ASCII digit: [0-9] +LLVM_READONLY inline bool isDigit(unsigned char c) { + using namespace charinfo; + return (InfoTable[c] & CHAR_DIGIT) != 0; +} + +/// Return true if this character is a lowercase ASCII letter: [a-z] +LLVM_READONLY inline bool isLowercase(unsigned char c) { + using namespace charinfo; + return (InfoTable[c] & CHAR_LOWER) != 0; +} + +/// Return true if this character is an uppercase ASCII letter: [A-Z] +LLVM_READONLY inline bool isUppercase(unsigned char c) { + using namespace charinfo; + return (InfoTable[c] & CHAR_UPPER) != 0; +} + +/// Return true if this character is an ASCII letter: [a-zA-Z] +LLVM_READONLY inline bool isLetter(unsigned char c) { + using namespace charinfo; + return (InfoTable[c] & (CHAR_UPPER|CHAR_LOWER)) != 0; +} + +/// Return true if this character is an ASCII letter or digit: [a-zA-Z0-9] +LLVM_READONLY inline bool isAlphanumeric(unsigned char c) { + using namespace charinfo; + return (InfoTable[c] & (CHAR_DIGIT|CHAR_UPPER|CHAR_LOWER)) != 0; +} + +/// Return true if this character is an ASCII hex digit: [0-9a-fA-F] +LLVM_READONLY inline bool isHexDigit(unsigned char c) { + using namespace charinfo; + return (InfoTable[c] & (CHAR_DIGIT|CHAR_XLETTER)) != 0; +} + +/// Return true if this character is an ASCII punctuation character. +/// +/// Note that '_' is both a punctuation character and an identifier character! +LLVM_READONLY inline bool isPunctuation(unsigned char c) { + using namespace charinfo; + return (InfoTable[c] & (CHAR_UNDER|CHAR_PERIOD|CHAR_RAWDEL|CHAR_PUNCT)) != 0; +} + +/// Return true if this character is an ASCII printable character; that is, a +/// character that should take exactly one column to print in a fixed-width +/// terminal. +LLVM_READONLY inline bool isPrintable(unsigned char c) { + using namespace charinfo; + return (InfoTable[c] & (CHAR_UPPER|CHAR_LOWER|CHAR_PERIOD|CHAR_PUNCT| + CHAR_DIGIT|CHAR_UNDER|CHAR_RAWDEL|CHAR_SPACE)) != 0; +} + +/// Return true if this is the body character of a C preprocessing number, +/// which is [a-zA-Z0-9_.]. +LLVM_READONLY inline bool isPreprocessingNumberBody(unsigned char c) { + using namespace charinfo; + return (InfoTable[c] & + (CHAR_UPPER|CHAR_LOWER|CHAR_DIGIT|CHAR_UNDER|CHAR_PERIOD)) != 0; +} + +/// Return true if this is the body character of a C++ raw string delimiter. +LLVM_READONLY inline bool isRawStringDelimBody(unsigned char c) { + using namespace charinfo; + return (InfoTable[c] & (CHAR_UPPER|CHAR_LOWER|CHAR_PERIOD| + CHAR_DIGIT|CHAR_UNDER|CHAR_RAWDEL)) != 0; +} + + +/// Converts the given ASCII character to its lowercase equivalent. +/// +/// If the character is not an uppercase character, it is returned as is. +LLVM_READONLY inline char toLowercase(char c) { + if (isUppercase(c)) + return c + 'a' - 'A'; + return c; +} + +/// Converts the given ASCII character to its uppercase equivalent. +/// +/// If the character is not a lowercase character, it is returned as is. +LLVM_READONLY inline char toUppercase(char c) { + if (isLowercase(c)) + return c + 'A' - 'a'; + return c; +} + + +/// Return true if this is a valid ASCII identifier. +/// +/// Note that this is a very simple check; it does not accept UCNs as valid +/// identifier characters. +LLVM_READONLY inline bool isValidIdentifier(StringRef S, + bool AllowDollar = false) { + if (S.empty() || !isIdentifierHead(S[0], AllowDollar)) + return false; + + for (StringRef::iterator I = S.begin(), E = S.end(); I != E; ++I) + if (!isIdentifierBody(*I, AllowDollar)) + return false; + + return true; +} + +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/CodeGenOptions.def b/clang-r353983/include/clang/Basic/CodeGenOptions.def new file mode 100644 index 00000000..2a8574e6 --- /dev/null +++ b/clang-r353983/include/clang/Basic/CodeGenOptions.def @@ -0,0 +1,369 @@ +//===--- CodeGenOptions.def - Code generation option database ----- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the code generation options. Users of this file +// must define the CODEGENOPT macro to make use of this information. +// Optionally, the user may also define ENUM_CODEGENOPT (for options +// that have enumeration type and VALUE_CODEGENOPT is a code +// generation option that describes a value rather than a flag. +// +//===----------------------------------------------------------------------===// +#ifndef CODEGENOPT +# error Define the CODEGENOPT macro to handle language options +#endif + +#ifndef VALUE_CODEGENOPT +# define VALUE_CODEGENOPT(Name, Bits, Default) \ +CODEGENOPT(Name, Bits, Default) +#endif + +#ifndef ENUM_CODEGENOPT +# define ENUM_CODEGENOPT(Name, Type, Bits, Default) \ +CODEGENOPT(Name, Bits, Default) +#endif + +CODEGENOPT(DisableIntegratedAS, 1, 0) ///< -no-integrated-as +ENUM_CODEGENOPT(CompressDebugSections, llvm::DebugCompressionType, 2, + llvm::DebugCompressionType::None) +CODEGENOPT(RelaxELFRelocations, 1, 0) ///< -Wa,--mrelax-relocations +CODEGENOPT(AsmVerbose , 1, 0) ///< -dA, -fverbose-asm. +CODEGENOPT(PreserveAsmComments, 1, 1) ///< -dA, -fno-preserve-as-comments. +CODEGENOPT(AssumeSaneOperatorNew , 1, 1) ///< implicit __attribute__((malloc)) operator new +CODEGENOPT(Autolink , 1, 1) ///< -fno-autolink +CODEGENOPT(ObjCAutoRefCountExceptions , 1, 0) ///< Whether ARC should be EH-safe. +CODEGENOPT(Backchain , 1, 0) ///< -mbackchain +CODEGENOPT(ControlFlowGuard , 1, 0) ///< -cfguard +CODEGENOPT(CoverageExtraChecksum, 1, 0) ///< Whether we need a second checksum for functions in GCNO files. +CODEGENOPT(CoverageNoFunctionNamesInData, 1, 0) ///< Do not include function names in GCDA files. +CODEGENOPT(CoverageExitBlockBeforeBody, 1, 0) ///< Whether to emit the exit block before the body blocks in GCNO files. +CODEGENOPT(CXAAtExit , 1, 1) ///< Use __cxa_atexit for calling destructors. +CODEGENOPT(RegisterGlobalDtorsWithAtExit, 1, 1) ///< Use atexit or __cxa_atexit to register global destructors. +CODEGENOPT(CXXCtorDtorAliases, 1, 0) ///< Emit complete ctors/dtors as linker + ///< aliases to base ctors when possible. +CODEGENOPT(DataSections , 1, 0) ///< Set when -fdata-sections is enabled. +CODEGENOPT(UniqueSectionNames, 1, 1) ///< Set for -funique-section-names. +CODEGENOPT(DisableFPElim , 1, 0) ///< Set when -fomit-frame-pointer is enabled. +CODEGENOPT(DisableFree , 1, 0) ///< Don't free memory. +CODEGENOPT(DiscardValueNames , 1, 0) ///< Discard Value Names from the IR (LLVMContext flag) +CODEGENOPT(DisableGCov , 1, 0) ///< Don't run the GCov pass, for testing. +CODEGENOPT(DisableLLVMPasses , 1, 0) ///< Don't run any LLVM IR passes to get + ///< the pristine IR generated by the + ///< frontend. +CODEGENOPT(DisableLifetimeMarkers, 1, 0) ///< Don't emit any lifetime markers +CODEGENOPT(DisableO0ImplyOptNone , 1, 0) ///< Don't annonate function with optnone at O0 +CODEGENOPT(ExperimentalNewPassManager, 1, 0) ///< Enables the new, experimental + ///< pass manager. +CODEGENOPT(DebugPassManager, 1, 0) ///< Prints debug information for the new + ///< pass manager. +CODEGENOPT(DisableRedZone , 1, 0) ///< Set when -mno-red-zone is enabled. +CODEGENOPT(IndirectTlsSegRefs, 1, 0) ///< Set when -mno-tls-direct-seg-refs + ///< is specified. +CODEGENOPT(DisableTailCalls , 1, 0) ///< Do not emit tail calls. +CODEGENOPT(NoEscapingBlockTailCalls, 1, 0) ///< Do not emit tail calls from + ///< escaping blocks. +CODEGENOPT(EmitDeclMetadata , 1, 0) ///< Emit special metadata indicating what + ///< Decl* various IR entities came from. + ///< Only useful when running CodeGen as a + ///< subroutine. +CODEGENOPT(EmitVersionIdentMetadata , 1, 1) ///< Emit compiler version metadata. +CODEGENOPT(EmitGcovArcs , 1, 0) ///< Emit coverage data files, aka. GCDA. +CODEGENOPT(EmitGcovNotes , 1, 0) ///< Emit coverage "notes" files, aka GCNO. +CODEGENOPT(EmitOpenCLArgMetadata , 1, 0) ///< Emit OpenCL kernel arg metadata. +CODEGENOPT(EmulatedTLS , 1, 0) ///< Set by default or -f[no-]emulated-tls. +CODEGENOPT(ExplicitEmulatedTLS , 1, 0) ///< Set if -f[no-]emulated-tls is used. +/// Embed Bitcode mode (off/all/bitcode/marker). +ENUM_CODEGENOPT(EmbedBitcode, EmbedBitcodeKind, 2, Embed_Off) +CODEGENOPT(ForbidGuardVariables , 1, 0) ///< Issue errors if C++ guard variables + ///< are required. +CODEGENOPT(FunctionSections , 1, 0) ///< Set when -ffunction-sections is enabled. +CODEGENOPT(InstrumentFunctions , 1, 0) ///< Set when -finstrument-functions is + ///< enabled. +CODEGENOPT(InstrumentFunctionsAfterInlining , 1, 0) ///< Set when + ///< -finstrument-functions-after-inlining is enabled. +CODEGENOPT(InstrumentFunctionEntryBare , 1, 0) ///< Set when + ///< -finstrument-function-entry-bare is enabled. +CODEGENOPT(CFProtectionReturn , 1, 0) ///< if -fcf-protection is + ///< set to full or return. +CODEGENOPT(CFProtectionBranch , 1, 0) ///< if -fcf-protection is + ///< set to full or branch. +CODEGENOPT(XRayInstrumentFunctions , 1, 0) ///< Set when -fxray-instrument is + ///< enabled. +CODEGENOPT(StackSizeSection , 1, 0) ///< Set when -fstack-size-section is enabled. + +///< Set when -fxray-always-emit-customevents is enabled. +CODEGENOPT(XRayAlwaysEmitCustomEvents , 1, 0) + +///< Set when -fxray-always-emit-typedevents is enabled. +CODEGENOPT(XRayAlwaysEmitTypedEvents , 1, 0) + +///< Set the minimum number of instructions in a function to determine selective +///< XRay instrumentation. +VALUE_CODEGENOPT(XRayInstructionThreshold , 32, 200) + +CODEGENOPT(InstrumentForProfiling , 1, 0) ///< Set when -pg is enabled. +CODEGENOPT(CallFEntry , 1, 0) ///< Set when -mfentry is enabled. +CODEGENOPT(LessPreciseFPMAD , 1, 0) ///< Enable less precise MAD instructions to + ///< be generated. +CODEGENOPT(PrepareForLTO , 1, 0) ///< Set when -flto is enabled on the + ///< compile step. +CODEGENOPT(EmitSummaryIndex, 1, 0) ///< Set when -flto=thin is enabled on the + ///< compile step. +CODEGENOPT(LTOUnit, 1, 0) ///< Emit IR to support LTO unit features (CFI, whole + ///< program vtable opt). +CODEGENOPT(EnableSplitLTOUnit, 1, 0) ///< Enable LTO unit splitting to support + /// CFI and traditional whole program + /// devirtualization that require whole + /// program IR support. +CODEGENOPT(IncrementalLinkerCompatible, 1, 0) ///< Emit an object file which can + ///< be used with an incremental + ///< linker. +CODEGENOPT(MergeAllConstants , 1, 1) ///< Merge identical constants. +CODEGENOPT(MergeFunctions , 1, 0) ///< Set when -fmerge-functions is enabled. +CODEGENOPT(MSVolatile , 1, 0) ///< Set when /volatile:ms is enabled. +CODEGENOPT(NoCommon , 1, 0) ///< Set when -fno-common or C++ is enabled. +CODEGENOPT(NoDwarfDirectoryAsm , 1, 0) ///< Set when -fno-dwarf-directory-asm is + ///< enabled. +CODEGENOPT(NoExecStack , 1, 0) ///< Set when -Wa,--noexecstack is enabled. +CODEGENOPT(FatalWarnings , 1, 0) ///< Set when -Wa,--fatal-warnings is + ///< enabled. +CODEGENOPT(EnableSegmentedStacks , 1, 0) ///< Set when -fsplit-stack is enabled. +CODEGENOPT(NoImplicitFloat , 1, 0) ///< Set when -mno-implicit-float is enabled. +CODEGENOPT(NoInfsFPMath , 1, 0) ///< Assume FP arguments, results not +-Inf. +CODEGENOPT(NoSignedZeros , 1, 0) ///< Allow ignoring the signedness of FP zero +CODEGENOPT(NullPointerIsValid , 1, 0) ///< Assume Null pointer deference is defined. +CODEGENOPT(Reassociate , 1, 0) ///< Allow reassociation of FP math ops +CODEGENOPT(ReciprocalMath , 1, 0) ///< Allow FP divisions to be reassociated. +CODEGENOPT(NoTrappingMath , 1, 0) ///< Set when -fno-trapping-math is enabled. +CODEGENOPT(NoNaNsFPMath , 1, 0) ///< Assume FP arguments, results not NaN. +CODEGENOPT(FlushDenorm , 1, 0) ///< Allow FP denorm numbers to be flushed to zero +CODEGENOPT(CorrectlyRoundedDivSqrt, 1, 0) ///< -cl-fp32-correctly-rounded-divide-sqrt + +/// When false, this attempts to generate code as if the result of an +/// overflowing conversion matches the overflowing behavior of a target's native +/// float-to-int conversion instructions. +CODEGENOPT(StrictFloatCastOverflow, 1, 1) + +CODEGENOPT(UniformWGSize , 1, 0) ///< -cl-uniform-work-group-size +CODEGENOPT(NoZeroInitializedInBSS , 1, 0) ///< -fno-zero-initialized-in-bss. +/// Method of Objective-C dispatch to use. +ENUM_CODEGENOPT(ObjCDispatchMethod, ObjCDispatchMethodKind, 2, Legacy) +/// Replace certain message sends with calls to ObjC runtime entrypoints +CODEGENOPT(ObjCConvertMessagesToRuntimeCalls , 1, 1) +CODEGENOPT(OmitLeafFramePointer , 1, 0) ///< Set when -momit-leaf-frame-pointer is + ///< enabled. + +VALUE_CODEGENOPT(OptimizationLevel, 2, 0) ///< The -O[0-3] option specified. +VALUE_CODEGENOPT(OptimizeSize, 2, 0) ///< If -Os (==1) or -Oz (==2) is specified. + +/// Choose profile instrumenation kind or no instrumentation. +ENUM_CODEGENOPT(ProfileInstr, ProfileInstrKind, 2, ProfileNone) +/// Choose profile kind for PGO use compilation. +ENUM_CODEGENOPT(ProfileUse, ProfileInstrKind, 2, ProfileNone) +CODEGENOPT(CoverageMapping , 1, 0) ///< Generate coverage mapping regions to + ///< enable code coverage analysis. +CODEGENOPT(DumpCoverageMapping , 1, 0) ///< Dump the generated coverage mapping + ///< regions. + + /// If -fpcc-struct-return or -freg-struct-return is specified. +ENUM_CODEGENOPT(StructReturnConvention, StructReturnConventionKind, 2, SRCK_Default) + +CODEGENOPT(RelaxAll , 1, 0) ///< Relax all machine code instructions. +CODEGENOPT(RelaxedAliasing , 1, 0) ///< Set when -fno-strict-aliasing is enabled. +CODEGENOPT(StructPathTBAA , 1, 0) ///< Whether or not to use struct-path TBAA. +CODEGENOPT(NewStructPathTBAA , 1, 0) ///< Whether or not to use enhanced struct-path TBAA. +CODEGENOPT(SaveTempLabels , 1, 0) ///< Save temporary labels. +CODEGENOPT(SanitizeAddressUseAfterScope , 1, 0) ///< Enable use-after-scope detection + ///< in AddressSanitizer +CODEGENOPT(SanitizeAddressPoisonCustomArrayCookie, 1, + 0) ///< Enable poisoning operator new[] which is not a replaceable + ///< global allocation function in AddressSanitizer +CODEGENOPT(SanitizeAddressGlobalsDeadStripping, 1, 0) ///< Enable linker dead stripping + ///< of globals in AddressSanitizer +CODEGENOPT(SanitizeAddressUseOdrIndicator, 1, 0) ///< Enable ODR indicator globals +CODEGENOPT(SanitizeMemoryTrackOrigins, 2, 0) ///< Enable tracking origins in + ///< MemorySanitizer +CODEGENOPT(SanitizeMemoryUseAfterDtor, 1, 0) ///< Enable use-after-delete detection + ///< in MemorySanitizer +CODEGENOPT(SanitizeCfiCrossDso, 1, 0) ///< Enable cross-dso support in CFI. +CODEGENOPT(SanitizeMinimalRuntime, 1, 0) ///< Use "_minimal" sanitizer runtime for + ///< diagnostics. +CODEGENOPT(SanitizeCfiICallGeneralizePointers, 1, 0) ///< Generalize pointer types in + ///< CFI icall function signatures +CODEGENOPT(SanitizeCoverageType, 2, 0) ///< Type of sanitizer coverage + ///< instrumentation. +CODEGENOPT(SanitizeCoverageIndirectCalls, 1, 0) ///< Enable sanitizer coverage + ///< for indirect calls. +CODEGENOPT(SanitizeCoverageTraceBB, 1, 0) ///< Enable basic block tracing in + ///< in sanitizer coverage. +CODEGENOPT(SanitizeCoverageTraceCmp, 1, 0) ///< Enable cmp instruction tracing + ///< in sanitizer coverage. +CODEGENOPT(SanitizeCoverageTraceDiv, 1, 0) ///< Enable div instruction tracing + ///< in sanitizer coverage. +CODEGENOPT(SanitizeCoverageTraceGep, 1, 0) ///< Enable GEP instruction tracing + ///< in sanitizer coverage. +CODEGENOPT(SanitizeCoverage8bitCounters, 1, 0) ///< Use 8-bit frequency counters + ///< in sanitizer coverage. +CODEGENOPT(SanitizeCoverageTracePC, 1, 0) ///< Enable PC tracing + ///< in sanitizer coverage. +CODEGENOPT(SanitizeCoverageTracePCGuard, 1, 0) ///< Enable PC tracing with guard + ///< in sanitizer coverage. +CODEGENOPT(SanitizeCoverageInline8bitCounters, 1, 0) ///< Use inline 8bit counters. +CODEGENOPT(SanitizeCoveragePCTable, 1, 0) ///< Create a PC Table. +CODEGENOPT(SanitizeCoverageNoPrune, 1, 0) ///< Disable coverage pruning. +CODEGENOPT(SanitizeCoverageStackDepth, 1, 0) ///< Enable max stack depth tracing +CODEGENOPT(SanitizeStats , 1, 0) ///< Collect statistics for sanitizers. +CODEGENOPT(SimplifyLibCalls , 1, 1) ///< Set when -fbuiltin is enabled. +CODEGENOPT(SoftFloat , 1, 0) ///< -soft-float. +CODEGENOPT(SpeculativeLoadHardening, 1, 0) ///< Enable speculative load hardening. +CODEGENOPT(FineGrainedBitfieldAccesses, 1, 0) ///< Enable fine-grained bitfield accesses. +CODEGENOPT(StrictEnums , 1, 0) ///< Optimize based on strict enum definition. +CODEGENOPT(StrictVTablePointers, 1, 0) ///< Optimize based on the strict vtable pointers +CODEGENOPT(TimePasses , 1, 0) ///< Set when -ftime-report is enabled. +CODEGENOPT(UnrollLoops , 1, 0) ///< Control whether loops are unrolled. +CODEGENOPT(RerollLoops , 1, 0) ///< Control whether loops are rerolled. +CODEGENOPT(NoUseJumpTables , 1, 0) ///< Set when -fno-jump-tables is enabled. +CODEGENOPT(UnsafeFPMath , 1, 0) ///< Allow unsafe floating point optzns. +CODEGENOPT(UnwindTables , 1, 0) ///< Emit unwind tables. +CODEGENOPT(VectorizeLoop , 1, 0) ///< Run loop vectorizer. +CODEGENOPT(VectorizeSLP , 1, 0) ///< Run SLP vectorizer. +CODEGENOPT(ProfileSampleAccurate, 1, 0) ///< Sample profile is accurate. + + /// Attempt to use register sized accesses to bit-fields in structures, when + /// possible. +CODEGENOPT(UseRegisterSizedBitfieldAccess , 1, 0) + +CODEGENOPT(VerifyModule , 1, 1) ///< Control whether the module should be run + ///< through the LLVM Verifier. + +CODEGENOPT(StackRealignment , 1, 0) ///< Control whether to force stack + ///< realignment. +CODEGENOPT(UseInitArray , 1, 0) ///< Control whether to use .init_array or + ///< .ctors. +VALUE_CODEGENOPT(StackAlignment , 32, 0) ///< Overrides default stack + ///< alignment, if not 0. +VALUE_CODEGENOPT(StackProbeSize , 32, 4096) ///< Overrides default stack + ///< probe size, even if 0. +CODEGENOPT(NoStackArgProbe, 1, 0) ///< Set when -mno-stack-arg-probe is used +CODEGENOPT(DebugColumnInfo, 1, 0) ///< Whether or not to use column information + ///< in debug info. + +CODEGENOPT(DebugTypeExtRefs, 1, 0) ///< Whether or not debug info should contain + ///< external references to a PCH or module. + +CODEGENOPT(DebugExplicitImport, 1, 0) ///< Whether or not debug info should + ///< contain explicit imports for + ///< anonymous namespaces + +ENUM_CODEGENOPT(SplitDwarfMode, DwarfFissionKind, 2, NoFission) ///< DWARF fission mode to use. + +CODEGENOPT(SplitDwarfInlining, 1, 1) ///< Whether to include inlining info in the + ///< skeleton CU to allow for symbolication + ///< of inline stack frames without .dwo files. +CODEGENOPT(DebugFwdTemplateParams, 1, 0) ///< Whether to emit complete + ///< template parameter descriptions in + ///< forward declarations (versus just + ///< including them in the name). + +CODEGENOPT(EmitLLVMUseLists, 1, 0) ///< Control whether to serialize use-lists. + +CODEGENOPT(WholeProgramVTables, 1, 0) ///< Whether to apply whole-program + /// vtable optimization. + +/// Whether to use public LTO visibility for entities in std and stdext +/// namespaces. This is enabled by clang-cl's /MT and /MTd flags. +CODEGENOPT(LTOVisibilityPublicStd, 1, 0) + +/// The user specified number of registers to be used for integral arguments, +/// or 0 if unspecified. +VALUE_CODEGENOPT(NumRegisterParameters, 32, 0) + +/// The lower bound for a buffer to be considered for stack protection. +VALUE_CODEGENOPT(SSPBufferSize, 32, 0) + +/// The kind of generated debug info. +ENUM_CODEGENOPT(DebugInfo, codegenoptions::DebugInfoKind, 3, codegenoptions::NoDebugInfo) + +/// Whether to generate macro debug info. +CODEGENOPT(MacroDebugInfo, 1, 0) + +/// Tune the debug info for this debugger. +ENUM_CODEGENOPT(DebuggerTuning, llvm::DebuggerKind, 2, + llvm::DebuggerKind::Default) + +/// Dwarf version. Version zero indicates to LLVM that no DWARF should be +/// emitted. +VALUE_CODEGENOPT(DwarfVersion, 3, 0) + +/// Whether we should emit CodeView debug information. It's possible to emit +/// CodeView and DWARF into the same object. +CODEGENOPT(EmitCodeView, 1, 0) + +/// Whether to emit the .debug$H section containing hashes of CodeView types. +CODEGENOPT(CodeViewGHash, 1, 0) + +/// The kind of inlining to perform. +ENUM_CODEGENOPT(Inlining, InliningMethod, 2, NormalInlining) + +// Vector functions library to use. +ENUM_CODEGENOPT(VecLib, VectorLibrary, 2, NoLibrary) + +/// The default TLS model to use. +ENUM_CODEGENOPT(DefaultTLSModel, TLSModel, 2, GeneralDynamicTLSModel) + +/// Number of path components to strip when emitting checks. (0 == full +/// filename) +VALUE_CODEGENOPT(EmitCheckPathComponentsToStrip, 32, 0) + +/// Whether to report the hotness of the code region for optimization remarks. +CODEGENOPT(DiagnosticsWithHotness, 1, 0) + +/// The minimum hotness value a diagnostic needs in order to be included in +/// optimization diagnostics. +VALUE_CODEGENOPT(DiagnosticsHotnessThreshold, 32, 0) + +/// Whether copy relocations support is available when building as PIE. +CODEGENOPT(PIECopyRelocations, 1, 0) + +/// Whether we should use the undefined behaviour optimization for control flow +/// paths that reach the end of a function without executing a required return. +CODEGENOPT(StrictReturn, 1, 1) + +/// Whether emit extra debug info for sample pgo profile collection. +CODEGENOPT(DebugInfoForProfiling, 1, 0) + +/// Whether 3-component vector type is preserved. +CODEGENOPT(PreserveVec3Type, 1, 0) + +/// Whether to emit .debug_gnu_pubnames section instead of .debug_pubnames. +CODEGENOPT(DebugNameTable, 2, 0) + +/// Whether to use DWARF base address specifiers in .debug_ranges. +CODEGENOPT(DebugRangesBaseAddress, 1, 0) + +CODEGENOPT(NoPLT, 1, 0) + +/// Whether to embed source in DWARF debug line section. +CODEGENOPT(EmbedSource, 1, 0) + +/// Whether to emit all vtables +CODEGENOPT(ForceEmitVTables, 1, 0) + +/// Whether to emit an address-significance table into the object file. +CODEGENOPT(Addrsig, 1, 0) + +ENUM_CODEGENOPT(SignReturnAddress, SignReturnAddressScope, 2, None) +ENUM_CODEGENOPT(SignReturnAddressKey, SignReturnAddressKeyValue, 1, AKey) +CODEGENOPT(BranchTargetEnforcement, 1, 0) + +/// Whether to emit unused static constants. +CODEGENOPT(KeepStaticConsts, 1, 0) + +#undef CODEGENOPT +#undef ENUM_CODEGENOPT +#undef VALUE_CODEGENOPT + diff --git a/clang-r353983/include/clang/Basic/CodeGenOptions.h b/clang-r353983/include/clang/Basic/CodeGenOptions.h new file mode 100644 index 00000000..5c8abe35 --- /dev/null +++ b/clang-r353983/include/clang/Basic/CodeGenOptions.h @@ -0,0 +1,335 @@ +//===--- CodeGenOptions.h ---------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the CodeGenOptions interface. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_CODEGENOPTIONS_H +#define LLVM_CLANG_BASIC_CODEGENOPTIONS_H + +#include "clang/Basic/DebugInfoOptions.h" +#include "clang/Basic/Sanitizers.h" +#include "clang/Basic/XRayInstr.h" +#include "llvm/Support/CodeGen.h" +#include "llvm/Support/Regex.h" +#include "llvm/Target/TargetOptions.h" +#include <map> +#include <memory> +#include <string> +#include <vector> + +namespace clang { + +/// Bitfields of CodeGenOptions, split out from CodeGenOptions to ensure +/// that this large collection of bitfields is a trivial class type. +class CodeGenOptionsBase { +public: +#define CODEGENOPT(Name, Bits, Default) unsigned Name : Bits; +#define ENUM_CODEGENOPT(Name, Type, Bits, Default) +#include "clang/Basic/CodeGenOptions.def" + +protected: +#define CODEGENOPT(Name, Bits, Default) +#define ENUM_CODEGENOPT(Name, Type, Bits, Default) unsigned Name : Bits; +#include "clang/Basic/CodeGenOptions.def" +}; + +/// CodeGenOptions - Track various options which control how the code +/// is optimized and passed to the backend. +class CodeGenOptions : public CodeGenOptionsBase { +public: + enum InliningMethod { + NormalInlining, // Use the standard function inlining pass. + OnlyHintInlining, // Inline only (implicitly) hinted functions. + OnlyAlwaysInlining // Only run the always inlining pass. + }; + + enum VectorLibrary { + NoLibrary, // Don't use any vector library. + Accelerate, // Use the Accelerate framework. + SVML // Intel short vector math library. + }; + + + enum ObjCDispatchMethodKind { + Legacy = 0, + NonLegacy = 1, + Mixed = 2 + }; + + enum TLSModel { + GeneralDynamicTLSModel, + LocalDynamicTLSModel, + InitialExecTLSModel, + LocalExecTLSModel + }; + + enum DwarfFissionKind { NoFission, SplitFileFission, SingleFileFission }; + + /// Clang versions with different platform ABI conformance. + enum class ClangABI { + /// Attempt to be ABI-compatible with code generated by Clang 3.8.x + /// (SVN r257626). This causes <1 x long long> to be passed in an + /// integer register instead of an SSE register on x64_64. + Ver3_8, + + /// Attempt to be ABI-compatible with code generated by Clang 4.0.x + /// (SVN r291814). This causes move operations to be ignored when + /// determining whether a class type can be passed or returned directly. + Ver4, + + /// Conform to the underlying platform's C and C++ ABIs as closely + /// as we can. + Latest + }; + + enum StructReturnConventionKind { + SRCK_Default, // No special option was passed. + SRCK_OnStack, // Small structs on the stack (-fpcc-struct-return). + SRCK_InRegs // Small structs in registers (-freg-struct-return). + }; + + enum ProfileInstrKind { + ProfileNone, // Profile instrumentation is turned off. + ProfileClangInstr, // Clang instrumentation to generate execution counts + // to use with PGO. + ProfileIRInstr, // IR level PGO instrumentation in LLVM. + }; + + enum EmbedBitcodeKind { + Embed_Off, // No embedded bitcode. + Embed_All, // Embed both bitcode and commandline in the output. + Embed_Bitcode, // Embed just the bitcode in the output. + Embed_Marker // Embed a marker as a placeholder for bitcode. + }; + + enum SignReturnAddressScope { + None, // No signing for any function + NonLeaf, // Sign the return address of functions that spill LR + All // Sign the return address of all functions + }; + + enum SignReturnAddressKeyValue { AKey, BKey }; + + /// The code model to use (-mcmodel). + std::string CodeModel; + + /// The filename with path we use for coverage data files. The runtime + /// allows further manipulation with the GCOV_PREFIX and GCOV_PREFIX_STRIP + /// environment variables. + std::string CoverageDataFile; + + /// The filename with path we use for coverage notes files. + std::string CoverageNotesFile; + + /// Regexes separated by a semi-colon to filter the files to instrument. + std::string ProfileFilterFiles; + + /// Regexes separated by a semi-colon to filter the files to not instrument. + std::string ProfileExcludeFiles; + + /// The version string to put into coverage files. + char CoverageVersion[4]; + + /// Enable additional debugging information. + std::string DebugPass; + + /// The string to embed in debug information as the current working directory. + std::string DebugCompilationDir; + + /// The string to embed in the debug information for the compile unit, if + /// non-empty. + std::string DwarfDebugFlags; + + /// The string containing the commandline for the llvm.commandline metadata, + /// if non-empty. + std::string RecordCommandLine; + + std::map<std::string, std::string> DebugPrefixMap; + + /// The ABI to use for passing floating point arguments. + std::string FloatABI; + + /// The floating-point denormal mode to use. + std::string FPDenormalMode; + + /// The float precision limit to use, if non-empty. + std::string LimitFloatPrecision; + + struct BitcodeFileToLink { + /// The filename of the bitcode file to link in. + std::string Filename; + /// If true, we set attributes functions in the bitcode library according to + /// our CodeGenOptions, much as we set attrs on functions that we generate + /// ourselves. + bool PropagateAttrs = false; + /// If true, we use LLVM module internalizer. + bool Internalize = false; + /// Bitwise combination of llvm::Linker::Flags, passed to the LLVM linker. + unsigned LinkFlags = 0; + }; + + /// The files specified here are linked in to the module before optimizations. + std::vector<BitcodeFileToLink> LinkBitcodeFiles; + + /// The user provided name for the "main file", if non-empty. This is useful + /// in situations where the input file name does not match the original input + /// file, for example with -save-temps. + std::string MainFileName; + + /// The name for the split debug info file that we'll break out. This is used + /// in the backend for setting the name in the skeleton cu. + std::string SplitDwarfFile; + + /// The name of the relocation model to use. + llvm::Reloc::Model RelocationModel; + + /// The thread model to use + std::string ThreadModel; + + /// If not an empty string, trap intrinsics are lowered to calls to this + /// function instead of to trap instructions. + std::string TrapFuncName; + + /// A list of dependent libraries. + std::vector<std::string> DependentLibraries; + + /// A list of linker options to embed in the object file. + std::vector<std::string> LinkerOptions; + + /// Name of the profile file to use as output for -fprofile-instr-generate + /// and -fprofile-generate. + std::string InstrProfileOutput; + + /// Name of the profile file to use with -fprofile-sample-use. + std::string SampleProfileFile; + + /// Name of the profile file to use as input for -fprofile-instr-use + std::string ProfileInstrumentUsePath; + + /// Name of the profile remapping file to apply to the profile data supplied + /// by -fprofile-sample-use or -fprofile-instr-use. + std::string ProfileRemappingFile; + + /// Name of the function summary index file to use for ThinLTO function + /// importing. + std::string ThinLTOIndexFile; + + /// Name of a file that can optionally be written with minimized bitcode + /// to be used as input for the ThinLTO thin link step, which only needs + /// the summary and module symbol table (and not, e.g. any debug metadata). + std::string ThinLinkBitcodeFile; + + /// Prefix to use for -save-temps output. + std::string SaveTempsFilePrefix; + + /// Name of file passed with -fcuda-include-gpubinary option to forward to + /// CUDA runtime back-end for incorporating them into host-side object file. + std::string CudaGpuBinaryFileName; + + /// The name of the file to which the backend should save YAML optimization + /// records. + std::string OptRecordFile; + + /// Regular expression to select optimizations for which we should enable + /// optimization remarks. Transformation passes whose name matches this + /// expression (and support this feature), will emit a diagnostic + /// whenever they perform a transformation. This is enabled by the + /// -Rpass=regexp flag. + std::shared_ptr<llvm::Regex> OptimizationRemarkPattern; + + /// Regular expression to select optimizations for which we should enable + /// missed optimization remarks. Transformation passes whose name matches this + /// expression (and support this feature), will emit a diagnostic + /// whenever they tried but failed to perform a transformation. This is + /// enabled by the -Rpass-missed=regexp flag. + std::shared_ptr<llvm::Regex> OptimizationRemarkMissedPattern; + + /// Regular expression to select optimizations for which we should enable + /// optimization analyses. Transformation passes whose name matches this + /// expression (and support this feature), will emit a diagnostic + /// whenever they want to explain why they decided to apply or not apply + /// a given transformation. This is enabled by the -Rpass-analysis=regexp + /// flag. + std::shared_ptr<llvm::Regex> OptimizationRemarkAnalysisPattern; + + /// Set of files defining the rules for the symbol rewriting. + std::vector<std::string> RewriteMapFiles; + + /// Set of sanitizer checks that are non-fatal (i.e. execution should be + /// continued when possible). + SanitizerSet SanitizeRecover; + + /// Set of sanitizer checks that trap rather than diagnose. + SanitizerSet SanitizeTrap; + + /// List of backend command-line options for -fembed-bitcode. + std::vector<uint8_t> CmdArgs; + + /// A list of all -fno-builtin-* function names (e.g., memset). + std::vector<std::string> NoBuiltinFuncs; + + std::vector<std::string> Reciprocals; + + /// The preferred width for auto-vectorization transforms. This is intended to + /// override default transforms based on the width of the architected vector + /// registers. + std::string PreferVectorWidth; + + /// Set of XRay instrumentation kinds to emit. + XRayInstrSet XRayInstrumentationBundle; + + std::vector<std::string> DefaultFunctionAttrs; + + /// List of dynamic shared object files to be loaded as pass plugins. + std::vector<std::string> PassPlugins; + +public: + // Define accessors/mutators for code generation options of enumeration type. +#define CODEGENOPT(Name, Bits, Default) +#define ENUM_CODEGENOPT(Name, Type, Bits, Default) \ + Type get##Name() const { return static_cast<Type>(Name); } \ + void set##Name(Type Value) { Name = static_cast<unsigned>(Value); } +#include "clang/Basic/CodeGenOptions.def" + + CodeGenOptions(); + + /// Is this a libc/libm function that is no longer recognized as a + /// builtin because a -fno-builtin-* option has been specified? + bool isNoBuiltinFunc(const char *Name) const; + + const std::vector<std::string> &getNoBuiltinFuncs() const { + return NoBuiltinFuncs; + } + + /// Check if Clang profile instrumenation is on. + bool hasProfileClangInstr() const { + return getProfileInstr() == ProfileClangInstr; + } + + /// Check if IR level profile instrumentation is on. + bool hasProfileIRInstr() const { + return getProfileInstr() == ProfileIRInstr; + } + + /// Check if Clang profile use is on. + bool hasProfileClangUse() const { + return getProfileUse() == ProfileClangInstr; + } + + /// Check if IR level profile use is on. + bool hasProfileIRUse() const { + return getProfileUse() == ProfileIRInstr; + } + +}; + +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/CommentOptions.h b/clang-r353983/include/clang/Basic/CommentOptions.h new file mode 100644 index 00000000..7d142fc3 --- /dev/null +++ b/clang-r353983/include/clang/Basic/CommentOptions.h @@ -0,0 +1,38 @@ +//===- CommentOptions.h - Options for parsing comments ----------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines the clang::CommentOptions interface. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_COMMENTOPTIONS_H +#define LLVM_CLANG_BASIC_COMMENTOPTIONS_H + +#include <string> +#include <vector> + +namespace clang { + +/// Options for controlling comment parsing. +struct CommentOptions { + using BlockCommandNamesTy = std::vector<std::string>; + + /// Command names to treat as block commands in comments. + /// Should not include the leading backslash. + BlockCommandNamesTy BlockCommandNames; + + /// Treat ordinary comments as documentation comments. + bool ParseAllComments = false; + + CommentOptions() = default; +}; + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_COMMENTOPTIONS_H diff --git a/clang-r353983/include/clang/Basic/Cuda.h b/clang-r353983/include/clang/Basic/Cuda.h new file mode 100644 index 00000000..d96c7e09 --- /dev/null +++ b/clang-r353983/include/clang/Basic/Cuda.h @@ -0,0 +1,120 @@ +//===--- Cuda.h - Utilities for compiling CUDA code ------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_CUDA_H +#define LLVM_CLANG_BASIC_CUDA_H + +namespace llvm { +class StringRef; +class VersionTuple; +} // namespace llvm + +namespace clang { + +enum class CudaVersion { + UNKNOWN, + CUDA_70, + CUDA_75, + CUDA_80, + CUDA_90, + CUDA_91, + CUDA_92, + CUDA_100, + CUDA_101, + LATEST = CUDA_101, +}; +const char *CudaVersionToString(CudaVersion V); +// Input is "Major.Minor" +CudaVersion CudaStringToVersion(llvm::StringRef S); + +enum class CudaArch { + UNKNOWN, + SM_20, + SM_21, + SM_30, + SM_32, + SM_35, + SM_37, + SM_50, + SM_52, + SM_53, + SM_60, + SM_61, + SM_62, + SM_70, + SM_72, + SM_75, + GFX600, + GFX601, + GFX700, + GFX701, + GFX702, + GFX703, + GFX704, + GFX801, + GFX802, + GFX803, + GFX810, + GFX900, + GFX902, + GFX904, + GFX906, + GFX909, + LAST, +}; +const char *CudaArchToString(CudaArch A); + +// The input should have the form "sm_20". +CudaArch StringToCudaArch(llvm::StringRef S); + +enum class CudaVirtualArch { + UNKNOWN, + COMPUTE_20, + COMPUTE_30, + COMPUTE_32, + COMPUTE_35, + COMPUTE_37, + COMPUTE_50, + COMPUTE_52, + COMPUTE_53, + COMPUTE_60, + COMPUTE_61, + COMPUTE_62, + COMPUTE_70, + COMPUTE_72, + COMPUTE_75, + COMPUTE_AMDGCN, +}; +const char *CudaVirtualArchToString(CudaVirtualArch A); + +// The input should have the form "compute_20". +CudaVirtualArch StringToCudaVirtualArch(llvm::StringRef S); + +/// Get the compute_xx corresponding to an sm_yy. +CudaVirtualArch VirtualArchForCudaArch(CudaArch A); + +/// Get the earliest CudaVersion that supports the given CudaArch. +CudaVersion MinVersionForCudaArch(CudaArch A); + +/// Get the latest CudaVersion that supports the given CudaArch. +CudaVersion MaxVersionForCudaArch(CudaArch A); + +// Various SDK-dependent features that affect CUDA compilation +enum class CudaFeature { + // CUDA-9.2+ uses a new API for launching kernels. + CUDA_USES_NEW_LAUNCH, + // CUDA-10.1+ needs explicit end of GPU binary registration. + CUDA_USES_FATBIN_REGISTER_END, +}; + +bool CudaFeatureEnabled(llvm::VersionTuple, CudaFeature); +bool CudaFeatureEnabled(CudaVersion, CudaFeature); + +} // namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/DebugInfoOptions.h b/clang-r353983/include/clang/Basic/DebugInfoOptions.h new file mode 100644 index 00000000..91d33321 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DebugInfoOptions.h @@ -0,0 +1,44 @@ +//===--- DebugInfoOptions.h - Debug Info Emission Types ---------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DEBUGINFOOPTIONS_H +#define LLVM_CLANG_BASIC_DEBUGINFOOPTIONS_H + +namespace clang { +namespace codegenoptions { + +enum DebugInfoFormat { + DIF_DWARF, + DIF_CodeView, +}; + +enum DebugInfoKind { + NoDebugInfo, /// Don't generate debug info. + LocTrackingOnly, /// Emit location information but do not generate + /// debug info in the output. This is useful in + /// cases where the backend wants to track source + /// locations for instructions without actually + /// emitting debug info for them (e.g., when -Rpass + /// is used). + DebugDirectivesOnly, /// Emit only debug directives with the line numbers data + DebugLineTablesOnly, /// Emit only debug info necessary for generating + /// line number tables (-gline-tables-only). + LimitedDebugInfo, /// Limit generated debug info to reduce size + /// (-fno-standalone-debug). This emits + /// forward decls for types that could be + /// replaced with forward decls in the source + /// code. For dynamic C++ classes type info + /// is only emitted into the module that + /// contains the classe's vtable. + FullDebugInfo /// Generate complete debug info. +}; + +} // end namespace codegenoptions +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/Diagnostic.h b/clang-r353983/include/clang/Basic/Diagnostic.h new file mode 100644 index 00000000..88947b7e --- /dev/null +++ b/clang-r353983/include/clang/Basic/Diagnostic.h @@ -0,0 +1,1593 @@ +//===- Diagnostic.h - C Language Family Diagnostic Handling -----*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines the Diagnostic-related interfaces. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTIC_H +#define LLVM_CLANG_BASIC_DIAGNOSTIC_H + +#include "clang/Basic/DiagnosticIDs.h" +#include "clang/Basic/DiagnosticOptions.h" +#include "clang/Basic/SourceLocation.h" +#include "clang/Basic/Specifiers.h" +#include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/IntrusiveRefCntPtr.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/ADT/iterator_range.h" +#include "llvm/Support/Compiler.h" +#include <cassert> +#include <cstdint> +#include <limits> +#include <list> +#include <map> +#include <memory> +#include <string> +#include <type_traits> +#include <utility> +#include <vector> + +namespace clang { + +class DeclContext; +class DiagnosticBuilder; +class DiagnosticConsumer; +class IdentifierInfo; +class LangOptions; +class Preprocessor; +class SourceManager; +class StoredDiagnostic; + +namespace tok { + +enum TokenKind : unsigned short; + +} // namespace tok + +/// Annotates a diagnostic with some code that should be +/// inserted, removed, or replaced to fix the problem. +/// +/// This kind of hint should be used when we are certain that the +/// introduction, removal, or modification of a particular (small!) +/// amount of code will correct a compilation error. The compiler +/// should also provide full recovery from such errors, such that +/// suppressing the diagnostic output can still result in successful +/// compilation. +class FixItHint { +public: + /// Code that should be replaced to correct the error. Empty for an + /// insertion hint. + CharSourceRange RemoveRange; + + /// Code in the specific range that should be inserted in the insertion + /// location. + CharSourceRange InsertFromRange; + + /// The actual code to insert at the insertion location, as a + /// string. + std::string CodeToInsert; + + bool BeforePreviousInsertions = false; + + /// Empty code modification hint, indicating that no code + /// modification is known. + FixItHint() = default; + + bool isNull() const { + return !RemoveRange.isValid(); + } + + /// Create a code modification hint that inserts the given + /// code string at a specific location. + static FixItHint CreateInsertion(SourceLocation InsertionLoc, + StringRef Code, + bool BeforePreviousInsertions = false) { + FixItHint Hint; + Hint.RemoveRange = + CharSourceRange::getCharRange(InsertionLoc, InsertionLoc); + Hint.CodeToInsert = Code; + Hint.BeforePreviousInsertions = BeforePreviousInsertions; + return Hint; + } + + /// Create a code modification hint that inserts the given + /// code from \p FromRange at a specific location. + static FixItHint CreateInsertionFromRange(SourceLocation InsertionLoc, + CharSourceRange FromRange, + bool BeforePreviousInsertions = false) { + FixItHint Hint; + Hint.RemoveRange = + CharSourceRange::getCharRange(InsertionLoc, InsertionLoc); + Hint.InsertFromRange = FromRange; + Hint.BeforePreviousInsertions = BeforePreviousInsertions; + return Hint; + } + + /// Create a code modification hint that removes the given + /// source range. + static FixItHint CreateRemoval(CharSourceRange RemoveRange) { + FixItHint Hint; + Hint.RemoveRange = RemoveRange; + return Hint; + } + static FixItHint CreateRemoval(SourceRange RemoveRange) { + return CreateRemoval(CharSourceRange::getTokenRange(RemoveRange)); + } + + /// Create a code modification hint that replaces the given + /// source range with the given code string. + static FixItHint CreateReplacement(CharSourceRange RemoveRange, + StringRef Code) { + FixItHint Hint; + Hint.RemoveRange = RemoveRange; + Hint.CodeToInsert = Code; + return Hint; + } + + static FixItHint CreateReplacement(SourceRange RemoveRange, + StringRef Code) { + return CreateReplacement(CharSourceRange::getTokenRange(RemoveRange), Code); + } +}; + +/// Concrete class used by the front-end to report problems and issues. +/// +/// This massages the diagnostics (e.g. handling things like "report warnings +/// as errors" and passes them off to the DiagnosticConsumer for reporting to +/// the user. DiagnosticsEngine is tied to one translation unit and one +/// SourceManager. +class DiagnosticsEngine : public RefCountedBase<DiagnosticsEngine> { +public: + /// The level of the diagnostic, after it has been through mapping. + enum Level { + Ignored = DiagnosticIDs::Ignored, + Note = DiagnosticIDs::Note, + Remark = DiagnosticIDs::Remark, + Warning = DiagnosticIDs::Warning, + Error = DiagnosticIDs::Error, + Fatal = DiagnosticIDs::Fatal + }; + + enum ArgumentKind { + /// std::string + ak_std_string, + + /// const char * + ak_c_string, + + /// int + ak_sint, + + /// unsigned + ak_uint, + + /// enum TokenKind : unsigned + ak_tokenkind, + + /// IdentifierInfo + ak_identifierinfo, + + /// Qualifiers + ak_qual, + + /// QualType + ak_qualtype, + + /// DeclarationName + ak_declarationname, + + /// NamedDecl * + ak_nameddecl, + + /// NestedNameSpecifier * + ak_nestednamespec, + + /// DeclContext * + ak_declcontext, + + /// pair<QualType, QualType> + ak_qualtype_pair, + + /// Attr * + ak_attr + }; + + /// Represents on argument value, which is a union discriminated + /// by ArgumentKind, with a value. + using ArgumentValue = std::pair<ArgumentKind, intptr_t>; + +private: + // Used by __extension__ + unsigned char AllExtensionsSilenced = 0; + + // Suppress diagnostics after a fatal error? + bool SuppressAfterFatalError = true; + + // Suppress all diagnostics. + bool SuppressAllDiagnostics = false; + + // Elide common types of templates. + bool ElideType = true; + + // Print a tree when comparing templates. + bool PrintTemplateTree = false; + + // Color printing is enabled. + bool ShowColors = false; + + // Which overload candidates to show. + OverloadsShown ShowOverloads = Ovl_All; + + // Cap of # errors emitted, 0 -> no limit. + unsigned ErrorLimit = 0; + + // Cap on depth of template backtrace stack, 0 -> no limit. + unsigned TemplateBacktraceLimit = 0; + + // Cap on depth of constexpr evaluation backtrace stack, 0 -> no limit. + unsigned ConstexprBacktraceLimit = 0; + + IntrusiveRefCntPtr<DiagnosticIDs> Diags; + IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts; + DiagnosticConsumer *Client = nullptr; + std::unique_ptr<DiagnosticConsumer> Owner; + SourceManager *SourceMgr = nullptr; + + /// Mapping information for diagnostics. + /// + /// Mapping info is packed into four bits per diagnostic. The low three + /// bits are the mapping (an instance of diag::Severity), or zero if unset. + /// The high bit is set when the mapping was established as a user mapping. + /// If the high bit is clear, then the low bits are set to the default + /// value, and should be mapped with -pedantic, -Werror, etc. + /// + /// A new DiagState is created and kept around when diagnostic pragmas modify + /// the state so that we know what is the diagnostic state at any given + /// source location. + class DiagState { + llvm::DenseMap<unsigned, DiagnosticMapping> DiagMap; + + public: + // "Global" configuration state that can actually vary between modules. + + // Ignore all warnings: -w + unsigned IgnoreAllWarnings : 1; + + // Enable all warnings. + unsigned EnableAllWarnings : 1; + + // Treat warnings like errors. + unsigned WarningsAsErrors : 1; + + // Treat errors like fatal errors. + unsigned ErrorsAsFatal : 1; + + // Suppress warnings in system headers. + unsigned SuppressSystemWarnings : 1; + + // Map extensions to warnings or errors? + diag::Severity ExtBehavior = diag::Severity::Ignored; + + DiagState() + : IgnoreAllWarnings(false), EnableAllWarnings(false), + WarningsAsErrors(false), ErrorsAsFatal(false), + SuppressSystemWarnings(false) {} + + using iterator = llvm::DenseMap<unsigned, DiagnosticMapping>::iterator; + using const_iterator = + llvm::DenseMap<unsigned, DiagnosticMapping>::const_iterator; + + void setMapping(diag::kind Diag, DiagnosticMapping Info) { + DiagMap[Diag] = Info; + } + + DiagnosticMapping lookupMapping(diag::kind Diag) const { + return DiagMap.lookup(Diag); + } + + DiagnosticMapping &getOrAddMapping(diag::kind Diag); + + const_iterator begin() const { return DiagMap.begin(); } + const_iterator end() const { return DiagMap.end(); } + }; + + /// Keeps and automatically disposes all DiagStates that we create. + std::list<DiagState> DiagStates; + + /// A mapping from files to the diagnostic states for those files. Lazily + /// built on demand for files in which the diagnostic state has not changed. + class DiagStateMap { + public: + /// Add an initial diagnostic state. + void appendFirst(DiagState *State); + + /// Add a new latest state point. + void append(SourceManager &SrcMgr, SourceLocation Loc, DiagState *State); + + /// Look up the diagnostic state at a given source location. + DiagState *lookup(SourceManager &SrcMgr, SourceLocation Loc) const; + + /// Determine whether this map is empty. + bool empty() const { return Files.empty(); } + + /// Clear out this map. + void clear() { + Files.clear(); + FirstDiagState = CurDiagState = nullptr; + CurDiagStateLoc = SourceLocation(); + } + + /// Produce a debugging dump of the diagnostic state. + LLVM_DUMP_METHOD void dump(SourceManager &SrcMgr, + StringRef DiagName = StringRef()) const; + + /// Grab the most-recently-added state point. + DiagState *getCurDiagState() const { return CurDiagState; } + + /// Get the location at which a diagnostic state was last added. + SourceLocation getCurDiagStateLoc() const { return CurDiagStateLoc; } + + private: + friend class ASTReader; + friend class ASTWriter; + + /// Represents a point in source where the diagnostic state was + /// modified because of a pragma. + /// + /// 'Loc' can be null if the point represents the diagnostic state + /// modifications done through the command-line. + struct DiagStatePoint { + DiagState *State; + unsigned Offset; + + DiagStatePoint(DiagState *State, unsigned Offset) + : State(State), Offset(Offset) {} + }; + + /// Description of the diagnostic states and state transitions for a + /// particular FileID. + struct File { + /// The diagnostic state for the parent file. This is strictly redundant, + /// as looking up the DecomposedIncludedLoc for the FileID in the Files + /// map would give us this, but we cache it here for performance. + File *Parent = nullptr; + + /// The offset of this file within its parent. + unsigned ParentOffset = 0; + + /// Whether this file has any local (not imported from an AST file) + /// diagnostic state transitions. + bool HasLocalTransitions = false; + + /// The points within the file where the state changes. There will always + /// be at least one of these (the state on entry to the file). + llvm::SmallVector<DiagStatePoint, 4> StateTransitions; + + DiagState *lookup(unsigned Offset) const; + }; + + /// The diagnostic states for each file. + mutable std::map<FileID, File> Files; + + /// The initial diagnostic state. + DiagState *FirstDiagState; + + /// The current diagnostic state. + DiagState *CurDiagState; + + /// The location at which the current diagnostic state was established. + SourceLocation CurDiagStateLoc; + + /// Get the diagnostic state information for a file. + File *getFile(SourceManager &SrcMgr, FileID ID) const; + }; + + DiagStateMap DiagStatesByLoc; + + /// Keeps the DiagState that was active during each diagnostic 'push' + /// so we can get back at it when we 'pop'. + std::vector<DiagState *> DiagStateOnPushStack; + + DiagState *GetCurDiagState() const { + return DiagStatesByLoc.getCurDiagState(); + } + + void PushDiagStatePoint(DiagState *State, SourceLocation L); + + /// Finds the DiagStatePoint that contains the diagnostic state of + /// the given source location. + DiagState *GetDiagStateForLoc(SourceLocation Loc) const { + return SourceMgr ? DiagStatesByLoc.lookup(*SourceMgr, Loc) + : DiagStatesByLoc.getCurDiagState(); + } + + /// Sticky flag set to \c true when an error is emitted. + bool ErrorOccurred; + + /// Sticky flag set to \c true when an "uncompilable error" occurs. + /// I.e. an error that was not upgraded from a warning by -Werror. + bool UncompilableErrorOccurred; + + /// Sticky flag set to \c true when a fatal error is emitted. + bool FatalErrorOccurred; + + /// Indicates that an unrecoverable error has occurred. + bool UnrecoverableErrorOccurred; + + /// Counts for DiagnosticErrorTrap to check whether an error occurred + /// during a parsing section, e.g. during parsing a function. + unsigned TrapNumErrorsOccurred; + unsigned TrapNumUnrecoverableErrorsOccurred; + + /// The level of the last diagnostic emitted. + /// + /// This is used to emit continuation diagnostics with the same level as the + /// diagnostic that they follow. + DiagnosticIDs::Level LastDiagLevel; + + /// Number of warnings reported + unsigned NumWarnings; + + /// Number of errors reported + unsigned NumErrors; + + /// A function pointer that converts an opaque diagnostic + /// argument to a strings. + /// + /// This takes the modifiers and argument that was present in the diagnostic. + /// + /// The PrevArgs array indicates the previous arguments formatted for this + /// diagnostic. Implementations of this function can use this information to + /// avoid redundancy across arguments. + /// + /// This is a hack to avoid a layering violation between libbasic and libsema. + using ArgToStringFnTy = void (*)( + ArgumentKind Kind, intptr_t Val, + StringRef Modifier, StringRef Argument, + ArrayRef<ArgumentValue> PrevArgs, + SmallVectorImpl<char> &Output, + void *Cookie, + ArrayRef<intptr_t> QualTypeVals); + + void *ArgToStringCookie = nullptr; + ArgToStringFnTy ArgToStringFn; + + /// ID of the "delayed" diagnostic, which is a (typically + /// fatal) diagnostic that had to be delayed because it was found + /// while emitting another diagnostic. + unsigned DelayedDiagID; + + /// First string argument for the delayed diagnostic. + std::string DelayedDiagArg1; + + /// Second string argument for the delayed diagnostic. + std::string DelayedDiagArg2; + + /// Optional flag value. + /// + /// Some flags accept values, for instance: -Wframe-larger-than=<value> and + /// -Rpass=<value>. The content of this string is emitted after the flag name + /// and '='. + std::string FlagValue; + +public: + explicit DiagnosticsEngine(IntrusiveRefCntPtr<DiagnosticIDs> Diags, + IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts, + DiagnosticConsumer *client = nullptr, + bool ShouldOwnClient = true); + DiagnosticsEngine(const DiagnosticsEngine &) = delete; + DiagnosticsEngine &operator=(const DiagnosticsEngine &) = delete; + ~DiagnosticsEngine(); + + LLVM_DUMP_METHOD void dump() const; + LLVM_DUMP_METHOD void dump(StringRef DiagName) const; + + const IntrusiveRefCntPtr<DiagnosticIDs> &getDiagnosticIDs() const { + return Diags; + } + + /// Retrieve the diagnostic options. + DiagnosticOptions &getDiagnosticOptions() const { return *DiagOpts; } + + using diag_mapping_range = llvm::iterator_range<DiagState::const_iterator>; + + /// Get the current set of diagnostic mappings. + diag_mapping_range getDiagnosticMappings() const { + const DiagState &DS = *GetCurDiagState(); + return diag_mapping_range(DS.begin(), DS.end()); + } + + DiagnosticConsumer *getClient() { return Client; } + const DiagnosticConsumer *getClient() const { return Client; } + + /// Determine whether this \c DiagnosticsEngine object own its client. + bool ownsClient() const { return Owner != nullptr; } + + /// Return the current diagnostic client along with ownership of that + /// client. + std::unique_ptr<DiagnosticConsumer> takeClient() { return std::move(Owner); } + + bool hasSourceManager() const { return SourceMgr != nullptr; } + + SourceManager &getSourceManager() const { + assert(SourceMgr && "SourceManager not set!"); + return *SourceMgr; + } + + void setSourceManager(SourceManager *SrcMgr) { + assert(DiagStatesByLoc.empty() && + "Leftover diag state from a different SourceManager."); + SourceMgr = SrcMgr; + } + + //===--------------------------------------------------------------------===// + // DiagnosticsEngine characterization methods, used by a client to customize + // how diagnostics are emitted. + // + + /// Copies the current DiagMappings and pushes the new copy + /// onto the top of the stack. + void pushMappings(SourceLocation Loc); + + /// Pops the current DiagMappings off the top of the stack, + /// causing the new top of the stack to be the active mappings. + /// + /// \returns \c true if the pop happens, \c false if there is only one + /// DiagMapping on the stack. + bool popMappings(SourceLocation Loc); + + /// Set the diagnostic client associated with this diagnostic object. + /// + /// \param ShouldOwnClient true if the diagnostic object should take + /// ownership of \c client. + void setClient(DiagnosticConsumer *client, bool ShouldOwnClient = true); + + /// Specify a limit for the number of errors we should + /// emit before giving up. + /// + /// Zero disables the limit. + void setErrorLimit(unsigned Limit) { ErrorLimit = Limit; } + + /// Specify the maximum number of template instantiation + /// notes to emit along with a given diagnostic. + void setTemplateBacktraceLimit(unsigned Limit) { + TemplateBacktraceLimit = Limit; + } + + /// Retrieve the maximum number of template instantiation + /// notes to emit along with a given diagnostic. + unsigned getTemplateBacktraceLimit() const { + return TemplateBacktraceLimit; + } + + /// Specify the maximum number of constexpr evaluation + /// notes to emit along with a given diagnostic. + void setConstexprBacktraceLimit(unsigned Limit) { + ConstexprBacktraceLimit = Limit; + } + + /// Retrieve the maximum number of constexpr evaluation + /// notes to emit along with a given diagnostic. + unsigned getConstexprBacktraceLimit() const { + return ConstexprBacktraceLimit; + } + + /// When set to true, any unmapped warnings are ignored. + /// + /// If this and WarningsAsErrors are both set, then this one wins. + void setIgnoreAllWarnings(bool Val) { + GetCurDiagState()->IgnoreAllWarnings = Val; + } + bool getIgnoreAllWarnings() const { + return GetCurDiagState()->IgnoreAllWarnings; + } + + /// When set to true, any unmapped ignored warnings are no longer + /// ignored. + /// + /// If this and IgnoreAllWarnings are both set, then that one wins. + void setEnableAllWarnings(bool Val) { + GetCurDiagState()->EnableAllWarnings = Val; + } + bool getEnableAllWarnings() const { + return GetCurDiagState()->EnableAllWarnings; + } + + /// When set to true, any warnings reported are issued as errors. + void setWarningsAsErrors(bool Val) { + GetCurDiagState()->WarningsAsErrors = Val; + } + bool getWarningsAsErrors() const { + return GetCurDiagState()->WarningsAsErrors; + } + + /// When set to true, any error reported is made a fatal error. + void setErrorsAsFatal(bool Val) { GetCurDiagState()->ErrorsAsFatal = Val; } + bool getErrorsAsFatal() const { return GetCurDiagState()->ErrorsAsFatal; } + + /// When set to true (the default), suppress further diagnostics after + /// a fatal error. + void setSuppressAfterFatalError(bool Val) { SuppressAfterFatalError = Val; } + + /// When set to true mask warnings that come from system headers. + void setSuppressSystemWarnings(bool Val) { + GetCurDiagState()->SuppressSystemWarnings = Val; + } + bool getSuppressSystemWarnings() const { + return GetCurDiagState()->SuppressSystemWarnings; + } + + /// Suppress all diagnostics, to silence the front end when we + /// know that we don't want any more diagnostics to be passed along to the + /// client + void setSuppressAllDiagnostics(bool Val = true) { + SuppressAllDiagnostics = Val; + } + bool getSuppressAllDiagnostics() const { return SuppressAllDiagnostics; } + + /// Set type eliding, to skip outputting same types occurring in + /// template types. + void setElideType(bool Val = true) { ElideType = Val; } + bool getElideType() { return ElideType; } + + /// Set tree printing, to outputting the template difference in a + /// tree format. + void setPrintTemplateTree(bool Val = false) { PrintTemplateTree = Val; } + bool getPrintTemplateTree() { return PrintTemplateTree; } + + /// Set color printing, so the type diffing will inject color markers + /// into the output. + void setShowColors(bool Val = false) { ShowColors = Val; } + bool getShowColors() { return ShowColors; } + + /// Specify which overload candidates to show when overload resolution + /// fails. + /// + /// By default, we show all candidates. + void setShowOverloads(OverloadsShown Val) { + ShowOverloads = Val; + } + OverloadsShown getShowOverloads() const { return ShowOverloads; } + + /// Pretend that the last diagnostic issued was ignored, so any + /// subsequent notes will be suppressed, or restore a prior ignoring + /// state after ignoring some diagnostics and their notes, possibly in + /// the middle of another diagnostic. + /// + /// This can be used by clients who suppress diagnostics themselves. + void setLastDiagnosticIgnored(bool Ignored = true) { + if (LastDiagLevel == DiagnosticIDs::Fatal) + FatalErrorOccurred = true; + LastDiagLevel = Ignored ? DiagnosticIDs::Ignored : DiagnosticIDs::Warning; + } + + /// Determine whether the previous diagnostic was ignored. This can + /// be used by clients that want to determine whether notes attached to a + /// diagnostic will be suppressed. + bool isLastDiagnosticIgnored() const { + return LastDiagLevel == DiagnosticIDs::Ignored; + } + + /// Controls whether otherwise-unmapped extension diagnostics are + /// mapped onto ignore/warning/error. + /// + /// This corresponds to the GCC -pedantic and -pedantic-errors option. + void setExtensionHandlingBehavior(diag::Severity H) { + GetCurDiagState()->ExtBehavior = H; + } + diag::Severity getExtensionHandlingBehavior() const { + return GetCurDiagState()->ExtBehavior; + } + + /// Counter bumped when an __extension__ block is/ encountered. + /// + /// When non-zero, all extension diagnostics are entirely silenced, no + /// matter how they are mapped. + void IncrementAllExtensionsSilenced() { ++AllExtensionsSilenced; } + void DecrementAllExtensionsSilenced() { --AllExtensionsSilenced; } + bool hasAllExtensionsSilenced() { return AllExtensionsSilenced != 0; } + + /// This allows the client to specify that certain warnings are + /// ignored. + /// + /// Notes can never be mapped, errors can only be mapped to fatal, and + /// WARNINGs and EXTENSIONs can be mapped arbitrarily. + /// + /// \param Loc The source location that this change of diagnostic state should + /// take affect. It can be null if we are setting the latest state. + void setSeverity(diag::kind Diag, diag::Severity Map, SourceLocation Loc); + + /// Change an entire diagnostic group (e.g. "unknown-pragmas") to + /// have the specified mapping. + /// + /// \returns true (and ignores the request) if "Group" was unknown, false + /// otherwise. + /// + /// \param Flavor The flavor of group to affect. -Rfoo does not affect the + /// state of the -Wfoo group and vice versa. + /// + /// \param Loc The source location that this change of diagnostic state should + /// take affect. It can be null if we are setting the state from command-line. + bool setSeverityForGroup(diag::Flavor Flavor, StringRef Group, + diag::Severity Map, + SourceLocation Loc = SourceLocation()); + + /// Set the warning-as-error flag for the given diagnostic group. + /// + /// This function always only operates on the current diagnostic state. + /// + /// \returns True if the given group is unknown, false otherwise. + bool setDiagnosticGroupWarningAsError(StringRef Group, bool Enabled); + + /// Set the error-as-fatal flag for the given diagnostic group. + /// + /// This function always only operates on the current diagnostic state. + /// + /// \returns True if the given group is unknown, false otherwise. + bool setDiagnosticGroupErrorAsFatal(StringRef Group, bool Enabled); + + /// Add the specified mapping to all diagnostics of the specified + /// flavor. + /// + /// Mainly to be used by -Wno-everything to disable all warnings but allow + /// subsequent -W options to enable specific warnings. + void setSeverityForAll(diag::Flavor Flavor, diag::Severity Map, + SourceLocation Loc = SourceLocation()); + + bool hasErrorOccurred() const { return ErrorOccurred; } + + /// Errors that actually prevent compilation, not those that are + /// upgraded from a warning by -Werror. + bool hasUncompilableErrorOccurred() const { + return UncompilableErrorOccurred; + } + bool hasFatalErrorOccurred() const { return FatalErrorOccurred; } + + /// Determine whether any kind of unrecoverable error has occurred. + bool hasUnrecoverableErrorOccurred() const { + return FatalErrorOccurred || UnrecoverableErrorOccurred; + } + + unsigned getNumWarnings() const { return NumWarnings; } + + void setNumWarnings(unsigned NumWarnings) { + this->NumWarnings = NumWarnings; + } + + /// Return an ID for a diagnostic with the specified format string and + /// level. + /// + /// If this is the first request for this diagnostic, it is registered and + /// created, otherwise the existing ID is returned. + /// + /// \param FormatString A fixed diagnostic format string that will be hashed + /// and mapped to a unique DiagID. + template <unsigned N> + unsigned getCustomDiagID(Level L, const char (&FormatString)[N]) { + return Diags->getCustomDiagID((DiagnosticIDs::Level)L, + StringRef(FormatString, N - 1)); + } + + /// Converts a diagnostic argument (as an intptr_t) into the string + /// that represents it. + void ConvertArgToString(ArgumentKind Kind, intptr_t Val, + StringRef Modifier, StringRef Argument, + ArrayRef<ArgumentValue> PrevArgs, + SmallVectorImpl<char> &Output, + ArrayRef<intptr_t> QualTypeVals) const { + ArgToStringFn(Kind, Val, Modifier, Argument, PrevArgs, Output, + ArgToStringCookie, QualTypeVals); + } + + void SetArgToStringFn(ArgToStringFnTy Fn, void *Cookie) { + ArgToStringFn = Fn; + ArgToStringCookie = Cookie; + } + + /// Note that the prior diagnostic was emitted by some other + /// \c DiagnosticsEngine, and we may be attaching a note to that diagnostic. + void notePriorDiagnosticFrom(const DiagnosticsEngine &Other) { + LastDiagLevel = Other.LastDiagLevel; + } + + /// Reset the state of the diagnostic object to its initial + /// configuration. + void Reset(); + + //===--------------------------------------------------------------------===// + // DiagnosticsEngine classification and reporting interfaces. + // + + /// Determine whether the diagnostic is known to be ignored. + /// + /// This can be used to opportunistically avoid expensive checks when it's + /// known for certain that the diagnostic has been suppressed at the + /// specified location \p Loc. + /// + /// \param Loc The source location we are interested in finding out the + /// diagnostic state. Can be null in order to query the latest state. + bool isIgnored(unsigned DiagID, SourceLocation Loc) const { + return Diags->getDiagnosticSeverity(DiagID, Loc, *this) == + diag::Severity::Ignored; + } + + /// Based on the way the client configured the DiagnosticsEngine + /// object, classify the specified diagnostic ID into a Level, consumable by + /// the DiagnosticConsumer. + /// + /// To preserve invariant assumptions, this function should not be used to + /// influence parse or semantic analysis actions. Instead consider using + /// \c isIgnored(). + /// + /// \param Loc The source location we are interested in finding out the + /// diagnostic state. Can be null in order to query the latest state. + Level getDiagnosticLevel(unsigned DiagID, SourceLocation Loc) const { + return (Level)Diags->getDiagnosticLevel(DiagID, Loc, *this); + } + + /// Issue the message to the client. + /// + /// This actually returns an instance of DiagnosticBuilder which emits the + /// diagnostics (through @c ProcessDiag) when it is destroyed. + /// + /// \param DiagID A member of the @c diag::kind enum. + /// \param Loc Represents the source location associated with the diagnostic, + /// which can be an invalid location if no position information is available. + inline DiagnosticBuilder Report(SourceLocation Loc, unsigned DiagID); + inline DiagnosticBuilder Report(unsigned DiagID); + + void Report(const StoredDiagnostic &storedDiag); + + /// Determine whethere there is already a diagnostic in flight. + bool isDiagnosticInFlight() const { + return CurDiagID != std::numeric_limits<unsigned>::max(); + } + + /// Set the "delayed" diagnostic that will be emitted once + /// the current diagnostic completes. + /// + /// If a diagnostic is already in-flight but the front end must + /// report a problem (e.g., with an inconsistent file system + /// state), this routine sets a "delayed" diagnostic that will be + /// emitted after the current diagnostic completes. This should + /// only be used for fatal errors detected at inconvenient + /// times. If emitting a delayed diagnostic causes a second delayed + /// diagnostic to be introduced, that second delayed diagnostic + /// will be ignored. + /// + /// \param DiagID The ID of the diagnostic being delayed. + /// + /// \param Arg1 A string argument that will be provided to the + /// diagnostic. A copy of this string will be stored in the + /// DiagnosticsEngine object itself. + /// + /// \param Arg2 A string argument that will be provided to the + /// diagnostic. A copy of this string will be stored in the + /// DiagnosticsEngine object itself. + void SetDelayedDiagnostic(unsigned DiagID, StringRef Arg1 = "", + StringRef Arg2 = ""); + + /// Clear out the current diagnostic. + void Clear() { CurDiagID = std::numeric_limits<unsigned>::max(); } + + /// Return the value associated with this diagnostic flag. + StringRef getFlagValue() const { return FlagValue; } + +private: + // This is private state used by DiagnosticBuilder. We put it here instead of + // in DiagnosticBuilder in order to keep DiagnosticBuilder a small lightweight + // object. This implementation choice means that we can only have one + // diagnostic "in flight" at a time, but this seems to be a reasonable + // tradeoff to keep these objects small. Assertions verify that only one + // diagnostic is in flight at a time. + friend class Diagnostic; + friend class DiagnosticBuilder; + friend class DiagnosticErrorTrap; + friend class DiagnosticIDs; + friend class PartialDiagnostic; + + /// Report the delayed diagnostic. + void ReportDelayed(); + + /// The location of the current diagnostic that is in flight. + SourceLocation CurDiagLoc; + + /// The ID of the current diagnostic that is in flight. + /// + /// This is set to std::numeric_limits<unsigned>::max() when there is no + /// diagnostic in flight. + unsigned CurDiagID; + + enum { + /// The maximum number of arguments we can hold. + /// + /// We currently only support up to 10 arguments (%0-%9). A single + /// diagnostic with more than that almost certainly has to be simplified + /// anyway. + MaxArguments = 10, + }; + + /// The number of entries in Arguments. + signed char NumDiagArgs; + + /// Specifies whether an argument is in DiagArgumentsStr or + /// in DiagArguments. + /// + /// This is an array of ArgumentKind::ArgumentKind enum values, one for each + /// argument. + unsigned char DiagArgumentsKind[MaxArguments]; + + /// Holds the values of each string argument for the current + /// diagnostic. + /// + /// This is only used when the corresponding ArgumentKind is ak_std_string. + std::string DiagArgumentsStr[MaxArguments]; + + /// The values for the various substitution positions. + /// + /// This is used when the argument is not an std::string. The specific + /// value is mangled into an intptr_t and the interpretation depends on + /// exactly what sort of argument kind it is. + intptr_t DiagArgumentsVal[MaxArguments]; + + /// The list of ranges added to this diagnostic. + SmallVector<CharSourceRange, 8> DiagRanges; + + /// If valid, provides a hint with some code to insert, remove, + /// or modify at a particular position. + SmallVector<FixItHint, 8> DiagFixItHints; + + DiagnosticMapping makeUserMapping(diag::Severity Map, SourceLocation L) { + bool isPragma = L.isValid(); + DiagnosticMapping Mapping = + DiagnosticMapping::Make(Map, /*IsUser=*/true, isPragma); + + // If this is a pragma mapping, then set the diagnostic mapping flags so + // that we override command line options. + if (isPragma) { + Mapping.setNoWarningAsError(true); + Mapping.setNoErrorAsFatal(true); + } + + return Mapping; + } + + /// Used to report a diagnostic that is finally fully formed. + /// + /// \returns true if the diagnostic was emitted, false if it was suppressed. + bool ProcessDiag() { + return Diags->ProcessDiag(*this); + } + + /// @name Diagnostic Emission + /// @{ +protected: + friend class ASTReader; + friend class ASTWriter; + + // Sema requires access to the following functions because the current design + // of SFINAE requires it to use its own SemaDiagnosticBuilder, which needs to + // access us directly to ensure we minimize the emitted code for the common + // Sema::Diag() patterns. + friend class Sema; + + /// Emit the current diagnostic and clear the diagnostic state. + /// + /// \param Force Emit the diagnostic regardless of suppression settings. + bool EmitCurrentDiagnostic(bool Force = false); + + unsigned getCurrentDiagID() const { return CurDiagID; } + + SourceLocation getCurrentDiagLoc() const { return CurDiagLoc; } + + /// @} +}; + +/// RAII class that determines when any errors have occurred +/// between the time the instance was created and the time it was +/// queried. +class DiagnosticErrorTrap { + DiagnosticsEngine &Diag; + unsigned NumErrors; + unsigned NumUnrecoverableErrors; + +public: + explicit DiagnosticErrorTrap(DiagnosticsEngine &Diag) + : Diag(Diag) { reset(); } + + /// Determine whether any errors have occurred since this + /// object instance was created. + bool hasErrorOccurred() const { + return Diag.TrapNumErrorsOccurred > NumErrors; + } + + /// Determine whether any unrecoverable errors have occurred since this + /// object instance was created. + bool hasUnrecoverableErrorOccurred() const { + return Diag.TrapNumUnrecoverableErrorsOccurred > NumUnrecoverableErrors; + } + + /// Set to initial state of "no errors occurred". + void reset() { + NumErrors = Diag.TrapNumErrorsOccurred; + NumUnrecoverableErrors = Diag.TrapNumUnrecoverableErrorsOccurred; + } +}; + +//===----------------------------------------------------------------------===// +// DiagnosticBuilder +//===----------------------------------------------------------------------===// + +/// A little helper class used to produce diagnostics. +/// +/// This is constructed by the DiagnosticsEngine::Report method, and +/// allows insertion of extra information (arguments and source ranges) into +/// the currently "in flight" diagnostic. When the temporary for the builder +/// is destroyed, the diagnostic is issued. +/// +/// Note that many of these will be created as temporary objects (many call +/// sites), so we want them to be small and we never want their address taken. +/// This ensures that compilers with somewhat reasonable optimizers will promote +/// the common fields to registers, eliminating increments of the NumArgs field, +/// for example. +class DiagnosticBuilder { + friend class DiagnosticsEngine; + friend class PartialDiagnostic; + + mutable DiagnosticsEngine *DiagObj = nullptr; + mutable unsigned NumArgs = 0; + + /// Status variable indicating if this diagnostic is still active. + /// + // NOTE: This field is redundant with DiagObj (IsActive iff (DiagObj == 0)), + // but LLVM is not currently smart enough to eliminate the null check that + // Emit() would end up with if we used that as our status variable. + mutable bool IsActive = false; + + /// Flag indicating that this diagnostic is being emitted via a + /// call to ForceEmit. + mutable bool IsForceEmit = false; + + DiagnosticBuilder() = default; + + explicit DiagnosticBuilder(DiagnosticsEngine *diagObj) + : DiagObj(diagObj), IsActive(true) { + assert(diagObj && "DiagnosticBuilder requires a valid DiagnosticsEngine!"); + diagObj->DiagRanges.clear(); + diagObj->DiagFixItHints.clear(); + } + +protected: + void FlushCounts() { + DiagObj->NumDiagArgs = NumArgs; + } + + /// Clear out the current diagnostic. + void Clear() const { + DiagObj = nullptr; + IsActive = false; + IsForceEmit = false; + } + + /// Determine whether this diagnostic is still active. + bool isActive() const { return IsActive; } + + /// Force the diagnostic builder to emit the diagnostic now. + /// + /// Once this function has been called, the DiagnosticBuilder object + /// should not be used again before it is destroyed. + /// + /// \returns true if a diagnostic was emitted, false if the + /// diagnostic was suppressed. + bool Emit() { + // If this diagnostic is inactive, then its soul was stolen by the copy ctor + // (or by a subclass, as in SemaDiagnosticBuilder). + if (!isActive()) return false; + + // When emitting diagnostics, we set the final argument count into + // the DiagnosticsEngine object. + FlushCounts(); + + // Process the diagnostic. + bool Result = DiagObj->EmitCurrentDiagnostic(IsForceEmit); + + // This diagnostic is dead. + Clear(); + + return Result; + } + +public: + /// Copy constructor. When copied, this "takes" the diagnostic info from the + /// input and neuters it. + DiagnosticBuilder(const DiagnosticBuilder &D) { + DiagObj = D.DiagObj; + IsActive = D.IsActive; + IsForceEmit = D.IsForceEmit; + D.Clear(); + NumArgs = D.NumArgs; + } + + DiagnosticBuilder &operator=(const DiagnosticBuilder &) = delete; + + /// Emits the diagnostic. + ~DiagnosticBuilder() { + Emit(); + } + + /// Retrieve an empty diagnostic builder. + static DiagnosticBuilder getEmpty() { + return {}; + } + + /// Forces the diagnostic to be emitted. + const DiagnosticBuilder &setForceEmit() const { + IsForceEmit = true; + return *this; + } + + /// Conversion of DiagnosticBuilder to bool always returns \c true. + /// + /// This allows is to be used in boolean error contexts (where \c true is + /// used to indicate that an error has occurred), like: + /// \code + /// return Diag(...); + /// \endcode + operator bool() const { return true; } + + void AddString(StringRef S) const { + assert(isActive() && "Clients must not add to cleared diagnostic!"); + assert(NumArgs < DiagnosticsEngine::MaxArguments && + "Too many arguments to diagnostic!"); + DiagObj->DiagArgumentsKind[NumArgs] = DiagnosticsEngine::ak_std_string; + DiagObj->DiagArgumentsStr[NumArgs++] = S; + } + + void AddTaggedVal(intptr_t V, DiagnosticsEngine::ArgumentKind Kind) const { + assert(isActive() && "Clients must not add to cleared diagnostic!"); + assert(NumArgs < DiagnosticsEngine::MaxArguments && + "Too many arguments to diagnostic!"); + DiagObj->DiagArgumentsKind[NumArgs] = Kind; + DiagObj->DiagArgumentsVal[NumArgs++] = V; + } + + void AddSourceRange(const CharSourceRange &R) const { + assert(isActive() && "Clients must not add to cleared diagnostic!"); + DiagObj->DiagRanges.push_back(R); + } + + void AddFixItHint(const FixItHint &Hint) const { + assert(isActive() && "Clients must not add to cleared diagnostic!"); + if (!Hint.isNull()) + DiagObj->DiagFixItHints.push_back(Hint); + } + + void addFlagValue(StringRef V) const { DiagObj->FlagValue = V; } +}; + +struct AddFlagValue { + StringRef Val; + + explicit AddFlagValue(StringRef V) : Val(V) {} +}; + +/// Register a value for the flag in the current diagnostic. This +/// value will be shown as the suffix "=value" after the flag name. It is +/// useful in cases where the diagnostic flag accepts values (e.g., +/// -Rpass or -Wframe-larger-than). +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, + const AddFlagValue V) { + DB.addFlagValue(V.Val); + return DB; +} + +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, + StringRef S) { + DB.AddString(S); + return DB; +} + +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, + const char *Str) { + DB.AddTaggedVal(reinterpret_cast<intptr_t>(Str), + DiagnosticsEngine::ak_c_string); + return DB; +} + +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, int I) { + DB.AddTaggedVal(I, DiagnosticsEngine::ak_sint); + return DB; +} + +// We use enable_if here to prevent that this overload is selected for +// pointers or other arguments that are implicitly convertible to bool. +template <typename T> +inline +typename std::enable_if<std::is_same<T, bool>::value, + const DiagnosticBuilder &>::type +operator<<(const DiagnosticBuilder &DB, T I) { + DB.AddTaggedVal(I, DiagnosticsEngine::ak_sint); + return DB; +} + +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, + unsigned I) { + DB.AddTaggedVal(I, DiagnosticsEngine::ak_uint); + return DB; +} + +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, + tok::TokenKind I) { + DB.AddTaggedVal(static_cast<unsigned>(I), DiagnosticsEngine::ak_tokenkind); + return DB; +} + +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, + const IdentifierInfo *II) { + DB.AddTaggedVal(reinterpret_cast<intptr_t>(II), + DiagnosticsEngine::ak_identifierinfo); + return DB; +} + +// Adds a DeclContext to the diagnostic. The enable_if template magic is here +// so that we only match those arguments that are (statically) DeclContexts; +// other arguments that derive from DeclContext (e.g., RecordDecls) will not +// match. +template <typename T> +inline typename std::enable_if< + std::is_same<typename std::remove_const<T>::type, DeclContext>::value, + const DiagnosticBuilder &>::type +operator<<(const DiagnosticBuilder &DB, T *DC) { + DB.AddTaggedVal(reinterpret_cast<intptr_t>(DC), + DiagnosticsEngine::ak_declcontext); + return DB; +} + +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, + SourceRange R) { + DB.AddSourceRange(CharSourceRange::getTokenRange(R)); + return DB; +} + +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, + ArrayRef<SourceRange> Ranges) { + for (SourceRange R : Ranges) + DB.AddSourceRange(CharSourceRange::getTokenRange(R)); + return DB; +} + +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, + const CharSourceRange &R) { + DB.AddSourceRange(R); + return DB; +} + +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, + const FixItHint &Hint) { + DB.AddFixItHint(Hint); + return DB; +} + +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, + ArrayRef<FixItHint> Hints) { + for (const FixItHint &Hint : Hints) + DB.AddFixItHint(Hint); + return DB; +} + +/// A nullability kind paired with a bit indicating whether it used a +/// context-sensitive keyword. +using DiagNullabilityKind = std::pair<NullabilityKind, bool>; + +const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, + DiagNullabilityKind nullability); + +inline DiagnosticBuilder DiagnosticsEngine::Report(SourceLocation Loc, + unsigned DiagID) { + assert(CurDiagID == std::numeric_limits<unsigned>::max() && + "Multiple diagnostics in flight at once!"); + CurDiagLoc = Loc; + CurDiagID = DiagID; + FlagValue.clear(); + return DiagnosticBuilder(this); +} + +inline DiagnosticBuilder DiagnosticsEngine::Report(unsigned DiagID) { + return Report(SourceLocation(), DiagID); +} + +//===----------------------------------------------------------------------===// +// Diagnostic +//===----------------------------------------------------------------------===// + +/// A little helper class (which is basically a smart pointer that forwards +/// info from DiagnosticsEngine) that allows clients to enquire about the +/// currently in-flight diagnostic. +class Diagnostic { + const DiagnosticsEngine *DiagObj; + StringRef StoredDiagMessage; + +public: + explicit Diagnostic(const DiagnosticsEngine *DO) : DiagObj(DO) {} + Diagnostic(const DiagnosticsEngine *DO, StringRef storedDiagMessage) + : DiagObj(DO), StoredDiagMessage(storedDiagMessage) {} + + const DiagnosticsEngine *getDiags() const { return DiagObj; } + unsigned getID() const { return DiagObj->CurDiagID; } + const SourceLocation &getLocation() const { return DiagObj->CurDiagLoc; } + bool hasSourceManager() const { return DiagObj->hasSourceManager(); } + SourceManager &getSourceManager() const { return DiagObj->getSourceManager();} + + unsigned getNumArgs() const { return DiagObj->NumDiagArgs; } + + /// Return the kind of the specified index. + /// + /// Based on the kind of argument, the accessors below can be used to get + /// the value. + /// + /// \pre Idx < getNumArgs() + DiagnosticsEngine::ArgumentKind getArgKind(unsigned Idx) const { + assert(Idx < getNumArgs() && "Argument index out of range!"); + return (DiagnosticsEngine::ArgumentKind)DiagObj->DiagArgumentsKind[Idx]; + } + + /// Return the provided argument string specified by \p Idx. + /// \pre getArgKind(Idx) == DiagnosticsEngine::ak_std_string + const std::string &getArgStdStr(unsigned Idx) const { + assert(getArgKind(Idx) == DiagnosticsEngine::ak_std_string && + "invalid argument accessor!"); + return DiagObj->DiagArgumentsStr[Idx]; + } + + /// Return the specified C string argument. + /// \pre getArgKind(Idx) == DiagnosticsEngine::ak_c_string + const char *getArgCStr(unsigned Idx) const { + assert(getArgKind(Idx) == DiagnosticsEngine::ak_c_string && + "invalid argument accessor!"); + return reinterpret_cast<const char*>(DiagObj->DiagArgumentsVal[Idx]); + } + + /// Return the specified signed integer argument. + /// \pre getArgKind(Idx) == DiagnosticsEngine::ak_sint + int getArgSInt(unsigned Idx) const { + assert(getArgKind(Idx) == DiagnosticsEngine::ak_sint && + "invalid argument accessor!"); + return (int)DiagObj->DiagArgumentsVal[Idx]; + } + + /// Return the specified unsigned integer argument. + /// \pre getArgKind(Idx) == DiagnosticsEngine::ak_uint + unsigned getArgUInt(unsigned Idx) const { + assert(getArgKind(Idx) == DiagnosticsEngine::ak_uint && + "invalid argument accessor!"); + return (unsigned)DiagObj->DiagArgumentsVal[Idx]; + } + + /// Return the specified IdentifierInfo argument. + /// \pre getArgKind(Idx) == DiagnosticsEngine::ak_identifierinfo + const IdentifierInfo *getArgIdentifier(unsigned Idx) const { + assert(getArgKind(Idx) == DiagnosticsEngine::ak_identifierinfo && + "invalid argument accessor!"); + return reinterpret_cast<IdentifierInfo*>(DiagObj->DiagArgumentsVal[Idx]); + } + + /// Return the specified non-string argument in an opaque form. + /// \pre getArgKind(Idx) != DiagnosticsEngine::ak_std_string + intptr_t getRawArg(unsigned Idx) const { + assert(getArgKind(Idx) != DiagnosticsEngine::ak_std_string && + "invalid argument accessor!"); + return DiagObj->DiagArgumentsVal[Idx]; + } + + /// Return the number of source ranges associated with this diagnostic. + unsigned getNumRanges() const { + return DiagObj->DiagRanges.size(); + } + + /// \pre Idx < getNumRanges() + const CharSourceRange &getRange(unsigned Idx) const { + assert(Idx < getNumRanges() && "Invalid diagnostic range index!"); + return DiagObj->DiagRanges[Idx]; + } + + /// Return an array reference for this diagnostic's ranges. + ArrayRef<CharSourceRange> getRanges() const { + return DiagObj->DiagRanges; + } + + unsigned getNumFixItHints() const { + return DiagObj->DiagFixItHints.size(); + } + + const FixItHint &getFixItHint(unsigned Idx) const { + assert(Idx < getNumFixItHints() && "Invalid index!"); + return DiagObj->DiagFixItHints[Idx]; + } + + ArrayRef<FixItHint> getFixItHints() const { + return DiagObj->DiagFixItHints; + } + + /// Format this diagnostic into a string, substituting the + /// formal arguments into the %0 slots. + /// + /// The result is appended onto the \p OutStr array. + void FormatDiagnostic(SmallVectorImpl<char> &OutStr) const; + + /// Format the given format-string into the output buffer using the + /// arguments stored in this diagnostic. + void FormatDiagnostic(const char *DiagStr, const char *DiagEnd, + SmallVectorImpl<char> &OutStr) const; +}; + +/** + * Represents a diagnostic in a form that can be retained until its + * corresponding source manager is destroyed. + */ +class StoredDiagnostic { + unsigned ID; + DiagnosticsEngine::Level Level; + FullSourceLoc Loc; + std::string Message; + std::vector<CharSourceRange> Ranges; + std::vector<FixItHint> FixIts; + +public: + StoredDiagnostic() = default; + StoredDiagnostic(DiagnosticsEngine::Level Level, const Diagnostic &Info); + StoredDiagnostic(DiagnosticsEngine::Level Level, unsigned ID, + StringRef Message); + StoredDiagnostic(DiagnosticsEngine::Level Level, unsigned ID, + StringRef Message, FullSourceLoc Loc, + ArrayRef<CharSourceRange> Ranges, + ArrayRef<FixItHint> Fixits); + + /// Evaluates true when this object stores a diagnostic. + explicit operator bool() const { return !Message.empty(); } + + unsigned getID() const { return ID; } + DiagnosticsEngine::Level getLevel() const { return Level; } + const FullSourceLoc &getLocation() const { return Loc; } + StringRef getMessage() const { return Message; } + + void setLocation(FullSourceLoc Loc) { this->Loc = Loc; } + + using range_iterator = std::vector<CharSourceRange>::const_iterator; + + range_iterator range_begin() const { return Ranges.begin(); } + range_iterator range_end() const { return Ranges.end(); } + unsigned range_size() const { return Ranges.size(); } + + ArrayRef<CharSourceRange> getRanges() const { + return llvm::makeArrayRef(Ranges); + } + + using fixit_iterator = std::vector<FixItHint>::const_iterator; + + fixit_iterator fixit_begin() const { return FixIts.begin(); } + fixit_iterator fixit_end() const { return FixIts.end(); } + unsigned fixit_size() const { return FixIts.size(); } + + ArrayRef<FixItHint> getFixIts() const { + return llvm::makeArrayRef(FixIts); + } +}; + +/// Abstract interface, implemented by clients of the front-end, which +/// formats and prints fully processed diagnostics. +class DiagnosticConsumer { +protected: + unsigned NumWarnings = 0; ///< Number of warnings reported + unsigned NumErrors = 0; ///< Number of errors reported + +public: + DiagnosticConsumer() = default; + virtual ~DiagnosticConsumer(); + + unsigned getNumErrors() const { return NumErrors; } + unsigned getNumWarnings() const { return NumWarnings; } + virtual void clear() { NumWarnings = NumErrors = 0; } + + /// Callback to inform the diagnostic client that processing + /// of a source file is beginning. + /// + /// Note that diagnostics may be emitted outside the processing of a source + /// file, for example during the parsing of command line options. However, + /// diagnostics with source range information are required to only be emitted + /// in between BeginSourceFile() and EndSourceFile(). + /// + /// \param LangOpts The language options for the source file being processed. + /// \param PP The preprocessor object being used for the source; this is + /// optional, e.g., it may not be present when processing AST source files. + virtual void BeginSourceFile(const LangOptions &LangOpts, + const Preprocessor *PP = nullptr) {} + + /// Callback to inform the diagnostic client that processing + /// of a source file has ended. + /// + /// The diagnostic client should assume that any objects made available via + /// BeginSourceFile() are inaccessible. + virtual void EndSourceFile() {} + + /// Callback to inform the diagnostic client that processing of all + /// source files has ended. + virtual void finish() {} + + /// Indicates whether the diagnostics handled by this + /// DiagnosticConsumer should be included in the number of diagnostics + /// reported by DiagnosticsEngine. + /// + /// The default implementation returns true. + virtual bool IncludeInDiagnosticCounts() const; + + /// Handle this diagnostic, reporting it to the user or + /// capturing it to a log as needed. + /// + /// The default implementation just keeps track of the total number of + /// warnings and errors. + virtual void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel, + const Diagnostic &Info); +}; + +/// A diagnostic client that ignores all diagnostics. +class IgnoringDiagConsumer : public DiagnosticConsumer { + virtual void anchor(); + + void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel, + const Diagnostic &Info) override { + // Just ignore it. + } +}; + +/// Diagnostic consumer that forwards diagnostics along to an +/// existing, already-initialized diagnostic consumer. +/// +class ForwardingDiagnosticConsumer : public DiagnosticConsumer { + DiagnosticConsumer &Target; + +public: + ForwardingDiagnosticConsumer(DiagnosticConsumer &Target) : Target(Target) {} + ~ForwardingDiagnosticConsumer() override; + + void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel, + const Diagnostic &Info) override; + void clear() override; + + bool IncludeInDiagnosticCounts() const override; +}; + +// Struct used for sending info about how a type should be printed. +struct TemplateDiffTypes { + intptr_t FromType; + intptr_t ToType; + unsigned PrintTree : 1; + unsigned PrintFromType : 1; + unsigned ElideType : 1; + unsigned ShowColors : 1; + + // The printer sets this variable to true if the template diff was used. + unsigned TemplateDiffUsed : 1; +}; + +/// Special character that the diagnostic printer will use to toggle the bold +/// attribute. The character itself will be not be printed. +const char ToggleHighlight = 127; + +/// ProcessWarningOptions - Initialize the diagnostic client and process the +/// warning options specified on the command line. +void ProcessWarningOptions(DiagnosticsEngine &Diags, + const DiagnosticOptions &Opts, + bool ReportDiags = true); + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTIC_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticAST.h b/clang-r353983/include/clang/Basic/DiagnosticAST.h new file mode 100644 index 00000000..afe5f62e --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticAST.h @@ -0,0 +1,28 @@ +//===--- DiagnosticAST.h - Diagnostics for the AST library ------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICAST_H +#define LLVM_CLANG_BASIC_DIAGNOSTICAST_H + +#include "clang/Basic/Diagnostic.h" + +namespace clang { +namespace diag { +enum { +#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \ + SHOWINSYSHEADER, CATEGORY) \ + ENUM, +#define ASTSTART +#include "clang/Basic/DiagnosticASTKinds.inc" +#undef DIAG + NUM_BUILTIN_AST_DIAGNOSTICS +}; +} // end namespace diag +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTICAST_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticASTKinds.inc b/clang-r353983/include/clang/Basic/DiagnosticASTKinds.inc new file mode 100644 index 00000000..bb6dc262 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticASTKinds.inc @@ -0,0 +1,131 @@ +#ifdef ASTSTART +__ASTSTART = DIAG_START_AST, +#undef ASTSTART +#endif + +DIAG(err_asm_empty_symbolic_operand_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "empty symbolic operand name in inline assembly string", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_invalid_escape, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid %% escape in inline assembly string", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_invalid_operand_number, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid operand number in inline asm string", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_unknown_symbolic_operand_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown symbolic operand name in inline assembly string", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_unterminated_symbolic_operand_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "unterminated symbolic operand name in inline assembly string", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_odr_different_num_template_parameters, CLASS_ERROR, (unsigned)diag::Severity::Error, "template parameter lists have a different number of parameters (%0 vs %1)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_different_template_parameter_kind, CLASS_ERROR, (unsigned)diag::Severity::Error, "template parameter has different kinds in different translation units", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_field_type_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "field %0 declared with incompatible types in different translation units (%1 vs. %2)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_function_type_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "external function %0 declared with incompatible types in different translation units (%1 vs. %2)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_ivar_type_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "instance variable %0 declared with incompatible types in different translation units (%1 vs. %2)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_non_type_parameter_type_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template parameter declared with incompatible types in different translation units (%0 vs. %1)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_objc_method_num_params_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{class|instance}0 method %1 has a different number of parameters in different translation units (%2 vs. %3)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_objc_method_param_type_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{class|instance}0 method %1 has a parameter with a different types in different translation units (%2 vs. %3)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_objc_method_result_type_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{class|instance}0 method %1 has incompatible result types in different translation units (%2 vs. %3)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_objc_method_variadic_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{class|instance}0 method %1 is variadic in one translation unit and not variadic in another", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_objc_property_impl_kind_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %0 is implemented with %select{@synthesize|@dynamic}1 in one translation but %select{@dynamic|@synthesize}1 in another translation unit", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_objc_property_type_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %0 declared with incompatible types in different translation units (%1 vs. %2)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_objc_superclass_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "class %0 has incompatible superclasses", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_objc_synthesize_ivar_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %0 is synthesized to different ivars in different translation units (%1 vs. %2)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_parameter_pack_non_pack, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter kind mismatch; parameter is %select{not a|a}0 parameter pack", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_tag_type_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %0 has incompatible definitions in different translation units", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_variable_multiple_def, CLASS_ERROR, (unsigned)diag::Severity::Error, "external variable %0 defined in multiple translation units", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_odr_variable_type_inconsistent, CLASS_ERROR, (unsigned)diag::Severity::Error, "external variable %0 declared with incompatible types in different translation units (%1 vs. %2)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_unsupported_ast_node, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot import unsupported AST node %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_vftable_ambiguous_component, CLASS_ERROR, (unsigned)diag::Severity::Error, "ambiguous vftable component for %0 introduced via covariant thunks; this is an inherent limitation of the ABI", 0, SFINAE_SubstitutionFailure, false, true, 23) +DIAG(note_constexpr_access_inactive_union_member, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{read of|assignment to|increment of|decrement of}0 member %1 of union with %select{active member %3|no active member}2 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_access_null, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{read of|assignment to|increment of|decrement of}0 dereferenced null pointer is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_access_past_end, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{read of|assignment to|increment of|decrement of}0 dereferenced one-past-the-end pointer is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_access_static_temporary, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{read of|assignment to|increment of|decrement of}0 temporary is not allowed in a constant expression outside the expression that created the temporary", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_access_uninit, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{read of|assignment to|increment of|decrement of}0 object outside its lifetime is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_access_unsized_array, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{read of|assignment to|increment of|decrement of}0 pointer to element of array without known bound is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_access_volatile_obj, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{read of|assignment to|increment of|decrement of}0 volatile %select{temporary|object %2|member %2}1 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_access_volatile_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{read of|assignment to|increment of|decrement of}0 volatile-qualified type %1 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_array_index, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "cannot refer to element %0 of %select{array of %2 element%plural{1:|:s}2|non-array object}1 in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_baa_insufficient_alignment, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{alignment of|offset of the aligned pointer from}0 the base pointee object (%1 %plural{1:byte|:bytes}1) is %select{less than|not a multiple of}0 the asserted %2 %plural{1:byte|:bytes}2", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_baa_value_insufficient_alignment, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "value of the aligned pointer (%0) is not a multiple of the asserted %1 %plural{1:byte|:bytes}1", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_call_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in call to '%0'", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_call_limit_exceeded, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "constexpr evaluation hit maximum call limit", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_calls_suppressed, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "(skipping %0 call%s0 in backtrace; use -fconstexpr-backtrace-limit=0 to see all)", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_compare_virtual_mem_ptr, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "comparison of pointer to virtual member function %0 has unspecified value", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_conditional_never_const, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "both arms of conditional operator are unable to produce a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_depth_limit_exceeded, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "constexpr evaluation exceeded maximum depth of %0 calls", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_float_arithmetic, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "floating point arithmetic produces %select{an infinity|a NaN}0", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_inherited_ctor_call_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in implicit initialization for inherited constructor of %0", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_invalid_cast, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{reinterpret_cast|dynamic_cast|cast that performs the conversions of a reinterpret_cast|cast from %1}0 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_invalid_downcast, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "cannot cast object of dynamic type %0 to type %1", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_invalid_function, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{non-constexpr|undefined}0 %select{function|constructor}1 %2 cannot be used in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_invalid_inhctor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "constructor inherited from base class %0 cannot be used in a constant expression; derived class cannot be implicitly initialized", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_large_shift, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "shift count %0 >= width of type %1 (%2 bit%s2)", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_lifetime_ended, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{read of|assignment to|increment of|decrement of}0 %select{temporary|variable}1 whose lifetime has ended", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_lshift_discards, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "signed left shift discards bits", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_lshift_of_negative, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "left shift of negative value %0", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_ltor_incomplete_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "read of incomplete type %0 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_ltor_mutable, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "read of mutable member %0 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_ltor_non_const_int, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "read of non-const variable %0 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_ltor_non_constexpr, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "read of non-constexpr variable %0 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_memcpy_incomplete_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "cannot constant evaluate '%select{memcpy|memmove}0' between objects of incomplete type %1", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_memcpy_nontrivial, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "cannot constant evaluate '%select{memcpy|memmove}0' between objects of non-trivially-copyable type %1", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_memcpy_null, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{source|destination}2 of '%select{%select{memcpy|wmemcpy}1|%select{memmove|wmemmove}1}0' is %3", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_memcpy_overlap, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'%select{memcpy|wmemcpy}0' between overlapping memory regions", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_memcpy_type_pun, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "cannot constant evaluate '%select{memcpy|memmove}0' from object of type %1 to object of type %2", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_memcpy_unsupported, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'%select{%select{memcpy|wmemcpy}1|%select{memmove|wmemmove}1}0' not supported: %select{size to copy (%4) is not a multiple of size of element type %3 (%5)|source is not a contiguous array of at least %4 elements of type %3|destination is not a contiguous array of at least %4 elements of type %3}2", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_modify_const_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "modification of object of const-qualified type %0 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_modify_global, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "a constant expression cannot modify an object that is visible outside that expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_negative_shift, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "negative shift count %0", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_no_return, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "control reached end of constexpr function", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_non_global, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{pointer|reference}0 to %select{|subobject of }1%select{temporary|%3}2 is not a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_nonliteral, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "non-literal type %0 cannot be used in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_null_subobject, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "cannot %select{access base class of|access derived class of|access field of|access array element of|perform pointer arithmetic on|call member function on|access real component of|access imaginary component of}0 null pointer", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_overflow, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "value %0 is outside the range of representable values of type %1", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_past_end, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "dereferenced pointer past the end of %select{|subobject of }0%select{temporary|%2}1 is not a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_past_end_subobject, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "cannot %select{access base class of|access derived class of|access field of|access array element of|ERROR|call member function on|access real component of|access imaginary component of}0 pointer past the end of object", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_pointer_comparison_base_classes, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "comparison of addresses of subobjects of different base classes has unspecified value", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_pointer_comparison_base_field, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "comparison of address of base class subobject %0 of class %1 to field %2 has unspecified value", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_pointer_comparison_differing_access, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "comparison of address of fields %0 and %2 of %4 with differing access specifiers (%1 vs %3) has unspecified value", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_pointer_subtraction_not_same_array, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "subtracted pointers are not elements of the same array", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_pointer_subtraction_zero_size, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "subtraction of pointers to type %0 of zero size", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_step_limit_exceeded, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "constexpr evaluation hit maximum step limit; possible infinite loop?", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_stmt_expr_unsupported, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "this use of statement expressions is not supported in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_temporary_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "temporary created here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_this, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{|implicit }0use of 'this' pointer is only allowed within the evaluation of a call to a 'constexpr' member function", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_typeid_polymorphic, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "typeid applied to expression of polymorphic type %0 is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_uninitialized, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{|sub}0object of type %1 is not initialized", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_unsized_array_indexed, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "indexing of array without known bound is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_unsupported_unsized_array, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "array-to-pointer decay of array member without known bound is not supported", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_use_uninit_reference, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use of reference outside its lifetime is not allowed in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_var_init_non_constant, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "initializer of %0 is not a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_virtual_base, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "cannot construct object of type %0 with virtual base class in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_virtual_call, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "cannot evaluate virtual function call in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_constexpr_void_comparison, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "comparison between unequal pointers to void has unspecified result", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_covariant_thunk, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "covariant thunk required by %0", 0, SFINAE_Suppress, false, false, 23) +DIAG(note_expr_divide_by_zero, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "division by zero", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_base, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "class has base type %0", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_bit_field, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "bit-field %0 with type %1 and length %2 here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_defined_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "also defined here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_enumerator, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "enumerator %0 with value %1 here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_field, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "field %0 has type %1 here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_field_name, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "field has name %0 here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_friend, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "friend declared here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_missing_base, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "no corresponding base class here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_missing_enumerator, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "no corresponding enumerator here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_missing_field, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "no corresponding field here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_missing_friend, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "no corresponding friend here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_not_bit_field, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "field %0 is not a bit-field", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_number_of_bases, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "class has %0 base %plural{1:class|:classes}0", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_objc_method_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{class|instance}0 method %1 also declared here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_objc_missing_superclass, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "no corresponding superclass here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_objc_property_impl_kind, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "property %0 is implemented with %select{@synthesize|@dynamic}1 here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_objc_superclass, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "inherits from superclass %0 here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_objc_synthesize_ivar_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "property is synthesized to ivar %0 here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_parameter_pack_non_pack, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{parameter|parameter pack}0 declared here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_tag_kind_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 is a %select{struct|interface|union|class|enum}1 here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_template_parameter_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "template parameter declared here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_template_parameter_list, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "template parameter list also declared here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_value_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declared here with type %0", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_odr_virtual_base, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{non-virtual|virtual}0 derivation here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_unimplemented_constexpr_lambda_feature_ast, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "unimplemented constexpr lambda feature: %0 (coming soon!)", 0, SFINAE_Suppress, false, false, 0) +DIAG(remark_sanitize_address_insert_extra_padding_accepted, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "-fsanitize-address-field-padding applied to %0", 577, SFINAE_Suppress, false, true, 0) +DIAG(remark_sanitize_address_insert_extra_padding_rejected, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "-fsanitize-address-field-padding ignored for %0 because it %select{is not C++|is packed|is a union|is trivially copyable|has trivial destructor|is standard layout|is in a blacklisted file|is blacklisted}1", 577, SFINAE_Suppress, false, true, 0) +DIAG(warn_integer_constant_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overflow in expression; result is %0 with type %1", 334, SFINAE_Suppress, false, false, 0) +DIAG(warn_npot_ms_struct, CLASS_WARNING, (unsigned)diag::Severity::Error, "ms_struct may not produce Microsoft-compatible layouts with fundamental data types with sizes that aren't a power of two", 309, SFINAE_Suppress, false, false, 0) +DIAG(warn_odr_tag_type_inconsistent, CLASS_WARNING, (unsigned)diag::Severity::Warning, "type %0 has incompatible definitions in different translation units", 497, SFINAE_Suppress, false, false, 0) +DIAG(warn_padded_struct_anon_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "padding %select{struct|interface|class}0 %1 with %2 %select{byte|bit}3%s2 to align anonymous bit-field", 518, SFINAE_Suppress, false, false, 0) +DIAG(warn_padded_struct_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "padding %select{struct|interface|class}0 %1 with %2 %select{byte|bit}3%s2 to align %4", 518, SFINAE_Suppress, false, false, 0) +DIAG(warn_padded_struct_size, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "padding size of %0 with %1 %select{byte|bit}2%s1 to alignment boundary", 518, SFINAE_Suppress, false, false, 0) +DIAG(warn_unnecessary_packed, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "packed attribute is unnecessary for %0", 517, SFINAE_Suppress, false, false, 0) diff --git a/clang-r353983/include/clang/Basic/DiagnosticAnalysis.h b/clang-r353983/include/clang/Basic/DiagnosticAnalysis.h new file mode 100644 index 00000000..eea35a4d --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticAnalysis.h @@ -0,0 +1,28 @@ +//===--- DiagnosticAnalysis.h - Diagnostics for libanalysis -----*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICANALYSIS_H +#define LLVM_CLANG_BASIC_DIAGNOSTICANALYSIS_H + +#include "clang/Basic/Diagnostic.h" + +namespace clang { +namespace diag { +enum { +#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \ + SHOWINSYSHEADER, CATEGORY) \ + ENUM, +#define ANALYSISSTART +#include "clang/Basic/DiagnosticAnalysisKinds.inc" +#undef DIAG + NUM_BUILTIN_ANALYSIS_DIAGNOSTICS +}; +} // end namespace diag +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTICANALYSIS_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticAnalysisKinds.inc b/clang-r353983/include/clang/Basic/DiagnosticAnalysisKinds.inc new file mode 100644 index 00000000..a6ff0e21 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticAnalysisKinds.inc @@ -0,0 +1,5 @@ +#ifdef ANALYSISSTART +__ANALYSISSTART = DIAG_START_ANALYSIS, +#undef ANALYSISSTART +#endif + diff --git a/clang-r353983/include/clang/Basic/DiagnosticCategories.h b/clang-r353983/include/clang/Basic/DiagnosticCategories.h new file mode 100644 index 00000000..0decf150 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticCategories.h @@ -0,0 +1,25 @@ +//===- DiagnosticCategories.h - Diagnostic Categories Enumerators-*- C++ -*===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICCATEGORIES_H +#define LLVM_CLANG_BASIC_DIAGNOSTICCATEGORIES_H + +namespace clang { + namespace diag { + enum { +#define GET_CATEGORY_TABLE +#define CATEGORY(X, ENUM) ENUM, +#include "clang/Basic/DiagnosticGroups.inc" +#undef CATEGORY +#undef GET_CATEGORY_TABLE + DiagCat_NUM_CATEGORIES + }; + } // end namespace diag +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/DiagnosticComment.h b/clang-r353983/include/clang/Basic/DiagnosticComment.h new file mode 100644 index 00000000..a87bafa8 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticComment.h @@ -0,0 +1,28 @@ +//===--- DiagnosticComment.h - Diagnostics for the AST library --*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICCOMMENT_H +#define LLVM_CLANG_BASIC_DIAGNOSTICCOMMENT_H + +#include "clang/Basic/Diagnostic.h" + +namespace clang { +namespace diag { +enum { +#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \ + SHOWINSYSHEADER, CATEGORY) \ + ENUM, +#define COMMENTSTART +#include "clang/Basic/DiagnosticCommentKinds.inc" +#undef DIAG + NUM_BUILTIN_COMMENT_DIAGNOSTICS +}; +} // end namespace diag +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTICCOMMENT_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticCommentKinds.inc b/clang-r353983/include/clang/Basic/DiagnosticCommentKinds.inc new file mode 100644 index 00000000..4ea5853a --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticCommentKinds.inc @@ -0,0 +1,39 @@ +#ifdef COMMENTSTART +__COMMENTSTART = DIAG_START_COMMENT, +#undef COMMENTSTART +#endif + +DIAG(note_add_deprecation_attr, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add a deprecation attribute to the declaration to silence this warning", 0, SFINAE_Suppress, false, false, 25) +DIAG(note_doc_block_command_previous, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous command '%select{\\|@}0%1' here", 0, SFINAE_Suppress, false, false, 25) +DIAG(note_doc_block_command_previous_alias, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous command '%select{\\|@}0%1' (an alias of '\\%2') here", 0, SFINAE_Suppress, false, false, 25) +DIAG(note_doc_html_end_tag, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "end tag", 0, SFINAE_Suppress, false, false, 25) +DIAG(note_doc_html_tag_started_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "HTML tag started here", 0, SFINAE_Suppress, false, false, 25) +DIAG(note_doc_param_name_suggestion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean '%0'?", 0, SFINAE_Suppress, false, false, 25) +DIAG(note_doc_param_previous, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous documentation", 0, SFINAE_Suppress, false, false, 25) +DIAG(note_doc_tparam_name_suggestion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean '%0'?", 0, SFINAE_Suppress, false, false, 25) +DIAG(note_doc_tparam_previous, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous documentation", 0, SFINAE_Suppress, false, false, 25) +DIAG(warn_correct_comment_command_name, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unknown command tag name '%0'; did you mean '%1'?", 190, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_api_container_decl_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%select{class|interface|protocol|struct|union}1' command should not be used in a comment attached to a non-%select{class|interface|protocol|struct|union}2 declaration", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_block_command_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "duplicated command '%select{\\|@}0%1'", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_block_command_empty_paragraph, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "empty paragraph passed to '%select{\\|@}0%1' command", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_container_decl_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%select{classdesign|coclass|dependency|helper|helperclass|helps|instancesize|ownership|performance|security|superclass}1' command should not be used in a comment attached to a non-container declaration", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_deprecated_not_sync, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration is marked with '\\deprecated' command but does not have a deprecation attribute", 187, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_function_method_decl_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%select{function|functiongroup|method|methodgroup|callback}1' command should be used in a comment attached to %select{a function|a function|an Objective-C method|an Objective-C method|a pointer to function}2 declaration", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_html_end_forbidden, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML end tag '%0' is forbidden", 188, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_html_end_unbalanced, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML end tag does not match any start tag", 188, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_html_missing_end_tag, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML tag '%0' requires an end tag", 188, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_html_start_end_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML start tag '%0' closed by '%1'", 188, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_html_start_tag_expected_ident_or_greater, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "HTML start tag prematurely ended, expected attribute name or '>'", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_html_start_tag_expected_quoted_string, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "expected quoted string after equals sign", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_param_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "parameter '%0' is already documented", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_param_invalid_direction, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unrecognized parameter passing direction, valid directions are '[in]', '[out]' and '[in,out]'", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_param_not_attached_to_a_function_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0param' command used in a comment that is not attached to a function declaration", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_param_not_found, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "parameter '%0' not found in the function declaration", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_param_spaces_in_direction, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "whitespace is not allowed in parameter passing direction", 189, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_returns_attached_to_a_void_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%1' command used in a comment that is attached to a %select{function returning void|constructor|destructor|method returning void}2", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_returns_not_attached_to_a_function_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%1' command used in a comment that is not attached to a function or method declaration", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_tparam_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "template parameter '%0' is already documented", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_tparam_not_attached_to_a_template_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0tparam' command used in a comment that is not attached to a template declaration", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_doc_tparam_not_found, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "template parameter '%0' not found in the template declaration", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_unknown_comment_command_name, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unknown command tag name", 190, SFINAE_Suppress, false, false, 25) +DIAG(warn_verbatim_block_end_without_start, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%select{\\|@}0%1' command does not terminate a verbatim text block", 186, SFINAE_Suppress, false, false, 25) diff --git a/clang-r353983/include/clang/Basic/DiagnosticCommonKinds.inc b/clang-r353983/include/clang/Basic/DiagnosticCommonKinds.inc new file mode 100644 index 00000000..9fd34f65 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticCommonKinds.inc @@ -0,0 +1,114 @@ +#ifdef COMMONSTART +__COMMONSTART = DIAG_START_COMMON, +#undef COMMONSTART +#endif + +DIAG(err_arcmt_nsinvocation_ownership, CLASS_ERROR, (unsigned)diag::Severity::Error, "NSInvocation's %0 is not safe to be used with an object with ownership other than __unsafe_unretained", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_asm_invalid_type_in_input, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid type %0 in asm input for constraint '%1'", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_attribute_not_type_attr, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute cannot be applied to types", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_attribute_uuid_malformed_guid, CLASS_ERROR, (unsigned)diag::Severity::Error, "uuid attribute contains a malformed GUID", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_cannot_open_file, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "cannot open file '%0': %1", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_default_special_members, CLASS_ERROR, (unsigned)diag::Severity::Error, "only special member functions may be defaulted", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_deleted_non_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "only functions can have deleted definitions", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_enum_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "enumeration cannot be a template", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected %0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_after, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected %1 after %0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_colon_after_setter_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "method name referenced in property setter attribute must end with ':'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_expected_either, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected %0 or %1", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_namespace_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected namespace name", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_string_literal, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected string literal %select{in %1|for diagnostic message in static_assert|for optional message in 'availability' attribute|for %select{language|source container}1 name in 'external_source_symbol' attribute}0", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_file_modified, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "file '%0' modified since it was first processed", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fixed_point_not_enabled, CLASS_ERROR, (unsigned)diag::Severity::Error, "compile with '-ffixed-point' to enable fixed point types", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_friend_decl_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' is invalid in friend declarations", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_integer_literal_too_large, CLASS_ERROR, (unsigned)diag::Severity::Error, "integer literal is too large to be represented in any %select{signed |}0integer type", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_invalid_character_udl, CLASS_ERROR, (unsigned)diag::Severity::Error, "character literal with user-defined suffix cannot be used here", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_invalid_member_in_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{data member |non-public member function |static member function |user-declared constructor|user-declared destructor|operator |nested class }0%1 is not permitted within an interface type", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_invalid_numeric_udl, CLASS_ERROR, (unsigned)diag::Severity::Error, "numeric literal with user-defined suffix cannot be used here", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_invalid_storage_class_in_func_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid storage class specifier in function declarator", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_invalid_string_udl, CLASS_ERROR, (unsigned)diag::Severity::Error, "string literal with user-defined suffix cannot be used here", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mips_fp64_req, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' can only be used if the target supports the mfhc1 and mthc1 instructions", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_module_build_disabled, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "module '%0' is needed but has not been provided, and implicit use of module files is disabled", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_module_build_shadowed_submodule, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "build a shadowed submodule '%0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_module_cycle, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "cyclic dependency in module '%0': %1", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_module_format_unhandled, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "no handler registered for module format '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_module_header_missing, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{|umbrella }0header '%1' not found", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_module_not_built, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "could not build module '%0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_module_not_found, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "module '%0' not found", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_module_prebuilt, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "error in loading module '%0' from prebuilt module path", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_module_shadowed, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "import of shadowed module '%0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_module_unavailable, CLASS_ERROR, (unsigned)diag::Severity::Error, "module '%0' %select{is incompatible with|requires}1 feature '%2'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_mt_message, CLASS_ERROR, (unsigned)diag::Severity::Error, "[rewriter] %0", 0, SFINAE_SubstitutionFailure, false, false, 0) +DIAG(err_nullability_conflicting, CLASS_ERROR, (unsigned)diag::Severity::Error, "nullability specifier %0 conflicts with existing specifier %1", 0, SFINAE_SubstitutionFailure, false, true, 19) +DIAG(err_omp_more_one_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "directive '#pragma omp %0' cannot contain more than one '%1' clause%select{| with '%3' name modifier| with 'source' dependence}2", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_opencl_unknown_type_specifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "OpenCL %select{C|C++}0 version %1 does not support the '%2' %select{type qualifier|storage class specifier}3", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_openclcxx_not_supported, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' is not supported in OpenCL C++", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_opt_not_valid_on_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "option '%0' cannot be specified on this target", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_opt_not_valid_with_opt, CLASS_ERROR, (unsigned)diag::Severity::Error, "option '%0' cannot be specified with '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_opt_not_valid_without_opt, CLASS_ERROR, (unsigned)diag::Severity::Error, "option '%0' cannot be specified without '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_param_redefinition, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of parameter %0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_seh___except_block, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 only allowed in __except block or filter expression", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_seh___except_filter, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 only allowed in __except filter expression", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_seh___finally_block, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 only allowed in __finally block", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_seh_expected_handler, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '__except' or '__finally' block", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_target_unknown_abi, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown target ABI '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_target_unknown_cpu, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown target CPU '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_target_unknown_fpmath, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown FP unit '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_target_unknown_triple, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown target triple '%0', please use -triple or -arch", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_target_unsupported_abi, CLASS_ERROR, (unsigned)diag::Severity::Error, "ABI '%0' is not supported on CPU '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_target_unsupported_abi_for_triple, CLASS_ERROR, (unsigned)diag::Severity::Error, "ABI '%0' is not supported for '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_target_unsupported_cpu_for_micromips, CLASS_ERROR, (unsigned)diag::Severity::Error, "micromips is not supported for target CPU '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_target_unsupported_execute_only, CLASS_ERROR, (unsigned)diag::Severity::Error, "execute only is not supported for the %0 sub-architecture", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_target_unsupported_fpmath, CLASS_ERROR, (unsigned)diag::Severity::Error, "the '%0' unit is not supported with this instruction set", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_target_unsupported_unaligned, CLASS_ERROR, (unsigned)diag::Severity::Error, "the %0 sub-architecture does not support unaligned accesses", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_too_large_for_fixed_point, CLASS_ERROR, (unsigned)diag::Severity::Error, "this value is too large for this fixed point type", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_unable_to_make_temp, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to make temporary file: %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_unable_to_rename_temp, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to rename temporary '%0' to output file '%1': '%2'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_unimplemented_conversion_with_fixed_point_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion between fixed point and %0 is not yet supported", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_unknown_analyzer_checker, CLASS_ERROR, (unsigned)diag::Severity::Error, "no analyzer checkers are associated with '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_unsupported_abi_for_opt, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' can only be used with the '%1' ABI", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_unsupported_bom, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "%0 byte order mark detected in '%1', but encoding is not supported", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_use_of_tag_name_without_tag, CLASS_ERROR, (unsigned)diag::Severity::Error, "must use '%1' tag to refer to type %0%select{| in this scope}2", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(ext_c99_longlong, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'long long' is an extension when C99 mode is not enabled", 360, SFINAE_Suppress, false, false, 0) +DIAG(ext_clang_diagnose_if, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'diagnose_if' is a clang extension", 250, SFINAE_Suppress, false, false, 0) +DIAG(ext_clang_enable_if, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'enable_if' is a clang extension", 250, SFINAE_Suppress, false, false, 0) +DIAG(ext_cxx11_longlong, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'long long' is a C++11 extension", 82, SFINAE_Suppress, false, false, 0) +DIAG(ext_duplicate_declspec, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "duplicate '%0' declaration specifier", 193, SFINAE_Suppress, false, false, 0) +DIAG(ext_integer_literal_too_large_for_signed, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "integer literal is too large to be represented in a signed integer type, interpreting as unsigned", 300, SFINAE_Suppress, false, false, 0) +DIAG(ext_old_implicitly_unsigned_long_cxx, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "integer literal is too large to be represented in type 'long' and is subject to undefined behavior under C++98, interpreting as 'unsigned long'; this literal will %select{have type 'long long'|be ill-formed}0 in C++11 onwards", 75, SFINAE_Suppress, false, false, 0) +DIAG(ext_variadic_templates, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "variadic templates are a C++11 extension", 79, SFINAE_Suppress, false, false, 4) +DIAG(ext_warn_duplicate_declspec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "duplicate '%0' declaration specifier", 193, SFINAE_Suppress, false, false, 0) +DIAG(fatal_too_many_errors, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "too many errors emitted, stopping now", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(note_also_found, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "also found", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_decl_hiding_tag_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%1 %0 is hidden by a non-type declaration of %0 here", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_declared_at, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declared here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_duplicate_case_prev, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous case defined here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_forward_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "forward declaration of %0", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_invalid_subexpr_in_const_expr, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "subexpression not valid in a constant expression", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_matching, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "to match this %0", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_mt_message, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "[rewriter] %0", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_possibility, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "one possibility", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_pragma_entered_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "#pragma entered here", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_previous_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous declaration is here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_previous_definition, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous definition is here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_previous_implicit_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous implicit declaration is here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_previous_use, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous use is here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_suggest_disabling_all_checkers, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use -analyzer-disable-all-checks to disable all static analyzer checkers", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_type_being_defined, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "definition of %0 is not complete until the closing '}'", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_using, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "using", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_valid_options, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "valid target CPU values are: %0", 0, SFINAE_Suppress, false, false, 0) +DIAG(remark_module_lock_failure, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "could not acquire lock file for module '%0': %1", 418, SFINAE_Suppress, false, false, 4) +DIAG(remark_module_lock_timeout, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "timed out waiting to acquire lock file for module '%0'", 418, SFINAE_Suppress, false, false, 4) +DIAG(warn_arcmt_nsalloc_realloc, CLASS_WARNING, (unsigned)diag::Severity::Warning, "[rewriter] call returns pointer to GC managed memory; it will become unmanaged in ARC", 0, SFINAE_Suppress, false, false, 0) +DIAG(warn_conflicting_nullability_attr_overriding_param_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting nullability specifier on parameter types, %0 conflicts with existing specifier %1", 457, SFINAE_Suppress, false, false, 19) +DIAG(warn_conflicting_nullability_attr_overriding_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting nullability specifier on return types, %0 conflicts with existing specifier %1", 457, SFINAE_Suppress, false, false, 19) +DIAG(warn_cxx98_compat_longlong, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'long long' is incompatible with C++98", 110, SFINAE_Suppress, false, false, 0) +DIAG(warn_cxx98_compat_variadic_templates, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variadic templates are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_dup_category_def, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate definition of category %1 on interface %0", 0, SFINAE_Suppress, false, false, 0) +DIAG(warn_duplicate_declspec, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate '%0' declaration specifier", 193, SFINAE_Suppress, false, false, 0) +DIAG(warn_method_param_declaration, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "redeclaration of method parameter %0", 195, SFINAE_Suppress, false, false, 4) +DIAG(warn_method_param_redefinition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "redefinition of method parameter %0", 0, SFINAE_Suppress, false, false, 4) +DIAG(warn_mt_message, CLASS_WARNING, (unsigned)diag::Severity::Warning, "[rewriter] %0", 0, SFINAE_Suppress, false, false, 0) +DIAG(warn_nullability_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate nullability specifier %0", 457, SFINAE_Suppress, false, false, 19) +DIAG(warn_old_implicitly_unsigned_long, CLASS_WARNING, (unsigned)diag::Severity::Warning, "integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C89; this literal will %select{have type 'long long'|be ill-formed}0 in C99 onwards", 113, SFINAE_Suppress, false, false, 0) +DIAG(warn_old_implicitly_unsigned_long_cxx, CLASS_WARNING, (unsigned)diag::Severity::Warning, "integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C++98; this literal will %select{have type 'long long'|be ill-formed}0 in C++11 onwards", 75, SFINAE_Suppress, false, false, 0) +DIAG(warn_unknown_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown attribute %0 ignored", 694, SFINAE_Suppress, false, false, 0) diff --git a/clang-r353983/include/clang/Basic/DiagnosticCrossTU.h b/clang-r353983/include/clang/Basic/DiagnosticCrossTU.h new file mode 100644 index 00000000..c1c582bd --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticCrossTU.h @@ -0,0 +1,28 @@ +//===--- DiagnosticCrossTU.h - Diagnostics for Cross TU ---------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICCROSSTU_H +#define LLVM_CLANG_BASIC_DIAGNOSTICCROSSTU_H + +#include "clang/Basic/Diagnostic.h" + +namespace clang { +namespace diag { +enum { +#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \ + SHOWINSYSHEADER, CATEGORY) \ + ENUM, +#define CROSSTUSTART +#include "clang/Basic/DiagnosticCrossTUKinds.inc" +#undef DIAG + NUM_BUILTIN_CROSSTU_DIAGNOSTICS +}; +} // end namespace diag +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTICCROSSTU_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticCrossTUKinds.inc b/clang-r353983/include/clang/Basic/DiagnosticCrossTUKinds.inc new file mode 100644 index 00000000..e02de3db --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticCrossTUKinds.inc @@ -0,0 +1,9 @@ +#ifdef CROSSTUSTART +__CROSSTUSTART = DIAG_START_CROSSTU, +#undef CROSSTUSTART +#endif + +DIAG(err_ctu_error_opening, CLASS_ERROR, (unsigned)diag::Severity::Error, "error opening '%0': required by the CrossTU functionality", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_extdefmap_parsing, CLASS_ERROR, (unsigned)diag::Severity::Error, "error parsing index file: '%0' line: %1 'UniqueID filename' format expected", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_multiple_def_index, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple definitions are found for the same key in index ", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(warn_ctu_incompat_triple, CLASS_WARNING, (unsigned)diag::Severity::Warning, "imported AST from '%0' had been generated for a different target, current: %1, imported: %2", 146, SFINAE_Suppress, false, false, 0) diff --git a/clang-r353983/include/clang/Basic/DiagnosticDriver.h b/clang-r353983/include/clang/Basic/DiagnosticDriver.h new file mode 100644 index 00000000..63913df4 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticDriver.h @@ -0,0 +1,28 @@ +//===--- DiagnosticDriver.h - Diagnostics for libdriver ---------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICDRIVER_H +#define LLVM_CLANG_BASIC_DIAGNOSTICDRIVER_H + +#include "clang/Basic/Diagnostic.h" + +namespace clang { +namespace diag { +enum { +#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \ + SHOWINSYSHEADER, CATEGORY) \ + ENUM, +#define DRIVERSTART +#include "clang/Basic/DiagnosticDriverKinds.inc" +#undef DIAG + NUM_BUILTIN_DRIVER_DIAGNOSTICS +}; +} // end namespace diag +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTICDRIVER_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticDriverKinds.inc b/clang-r353983/include/clang/Basic/DiagnosticDriverKinds.inc new file mode 100644 index 00000000..3285c870 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticDriverKinds.inc @@ -0,0 +1,179 @@ +#ifdef DRIVERSTART +__DRIVERSTART = DIAG_START_DRIVER, +#undef DRIVERSTART +#endif + +DIAG(err_analyzer_config_invalid_input, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid input for analyzer-config option '%0', that expects %1 value", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_analyzer_config_multiple_values, CLASS_ERROR, (unsigned)diag::Severity::Error, "analyzer-config option '%0' should contain only one '='", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_analyzer_config_no_value, CLASS_ERROR, (unsigned)diag::Severity::Error, "analyzer-config option '%0' has a key but no value", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_analyzer_config_unknown, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown analyzer-config '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_arc_unsupported_on_runtime, CLASS_ERROR, (unsigned)diag::Severity::Error, "-fobjc-arc is not supported on platforms using the legacy runtime", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_arc_unsupported_on_toolchain, CLASS_ERROR, (unsigned)diag::Severity::Error, "-fobjc-arc is not supported on versions of OS X prior to 10.6", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_arch_unsupported_isa, CLASS_ERROR, (unsigned)diag::Severity::Error, "Architecture '%0' does not support '%1' execution mode", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_cpu_unsupported_isa, CLASS_ERROR, (unsigned)diag::Severity::Error, "CPU '%0' does not support '%1' execution mode", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_I_dash_not_supported, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' not supported, please use -iquote instead", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_Xopenmp_target_missing_triple, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce implicit triple value for -Xopenmp-target, specify triple using -Xopenmp-target=<triple>", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_argument_not_allowed_with, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument '%0' not allowed with '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_argument_only_allowed_with, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument '%0' only allowed with '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_bitcode_unsupported_on_toolchain, CLASS_ERROR, (unsigned)diag::Severity::Error, "-fembed-bitcode is not supported on versions of iOS prior to 6.0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_cannot_read_config_file, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot read configuration file '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_cc_print_options_failure, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to open CC_PRINT_OPTIONS file: %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_clang_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "the clang compiler does not support '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_clang_unsupported_opt_cxx_darwin_i386, CLASS_ERROR, (unsigned)diag::Severity::Error, "the clang compiler does not support '%0' for C++ on Darwin/i386", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_clang_unsupported_opt_faltivec, CLASS_ERROR, (unsigned)diag::Severity::Error, "the clang compiler does not support '%0', %1", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_command_failed, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 command failed with exit code %1 (use -v to see invocation)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_command_failure, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to execute command: %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_command_signalled, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 command failed due to signal (use -v to see invocation)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_compilationdatabase, CLASS_ERROR, (unsigned)diag::Severity::Error, "compilation database '%0' could not be opened: %1", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_config_file_not_exist, CLASS_ERROR, (unsigned)diag::Severity::Error, "configuration file '%0' does not exist", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_config_file_not_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "configuration file '%0' cannot be found", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_conflicting_deployment_targets, CLASS_ERROR, (unsigned)diag::Severity::Error, "conflicting deployment targets, both '%0' and '%1' are present in environment", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_cuda_bad_gpu_arch, CLASS_ERROR, (unsigned)diag::Severity::Error, "Unsupported CUDA gpu architecture: %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_cuda_host_arch, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported architecture '%0' for host compilation.", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_cuda_version_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "GPU arch %0 is supported by CUDA versions between %1 and %2 (inclusive), but installation at %3 is %4. Use --cuda-path to specify a different CUDA install, pass a different GPU arch with --cuda-gpu-arch, or pass --no-cuda-version-check.", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_defsym_invalid_format, CLASS_ERROR, (unsigned)diag::Severity::Error, "defsym must be of the form: sym=value: %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_defsym_invalid_symval, CLASS_ERROR, (unsigned)diag::Severity::Error, "Value is not an integer: %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_dllexport_inlines_and_fallback, CLASS_ERROR, (unsigned)diag::Severity::Error, "option '/Zc:dllexportInlines-' is ABI-changing and not compatible with '/fallback'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_duplicate_config, CLASS_ERROR, (unsigned)diag::Severity::Error, "no more than one option '--config' is allowed", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_emit_llvm_link, CLASS_ERROR, (unsigned)diag::Severity::Error, "-emit-llvm cannot be used when linking", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_expecting_fopenmp_with_fopenmp_targets, CLASS_ERROR, (unsigned)diag::Severity::Error, "The option -fopenmp-targets must be used in conjunction with a -fopenmp option compatible with offloading, please use -fopenmp=libomp or -fopenmp=libiomp5.", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_force_crash, CLASS_ERROR, (unsigned)diag::Severity::Error, "failing because %select{environment variable 'FORCE_CLANG_DIAGNOSTICS_CRASH' is set|'-gen-reproducer' is used}0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_gnustep_objc_runtime_incompatible_binary, CLASS_ERROR, (unsigned)diag::Severity::Error, "GNUstep Objective-C runtime version %0 incompatible with target binary format", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_Xarch_argument_isdriver, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid Xarch argument: '%0', cannot change driver behavior inside Xarch argument", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_Xarch_argument_with_args, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid Xarch argument: '%0', options requiring arguments are unsupported", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_Xopenmp_target_with_args, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid -Xopenmp-target argument: '%0', options requiring arguments are unsupported", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_arch_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid arch name '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_argument_to_fdebug_prefix_map, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument '%0' to -fdebug-prefix-map", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_cf_runtime_abi, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid CoreFoundation Runtime ABI '%0'; must be one of 'objc', 'standalone', 'swift', 'swift-5.0', 'swift-4.2', 'swift-4.1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_darwin_version, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid Darwin version number: %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_gcc_output_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid output type '%0' for use with gcc tool", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_hvx_length, CLASS_ERROR, (unsigned)diag::Severity::Error, "-mhvx-length is not supported without a -mhvx/-mhvx= flag", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_int_value, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid integral value '%1' in '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_libcxx_deployment, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid deployment target for -stdlib=libc++ (requires %0 or later)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_linker_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid linker name in argument '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_mfloat_abi, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid float ABI '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_mtp, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid thread pointer reading mode '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_omp_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "OpenMP target is invalid: '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_output_with_multiple_archs, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use '%0' output with multiple -arch options", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_pgo_instrumentor, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid PGO instrumentor in argument '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_remap_file, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid option '%0' not of the form <from-file>;<to-file>", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_riscv_arch_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid arch name '%0', %1", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_riscv_ext_arch_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid arch name '%0', %1 '%2'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_rtlib_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid runtime library name in argument '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_stdlib_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid library name in argument '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_thread_model_for_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid thread model '%0' in '%1' for this target", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_value, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid value '%1' in '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_invalid_version_number, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid version number in '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_lto_without_lld, CLASS_ERROR, (unsigned)diag::Severity::Error, "LTO requires -fuse-ld=lld", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_malformed_sanitizer_blacklist, CLASS_ERROR, (unsigned)diag::Severity::Error, "malformed sanitizer blacklist: '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_mg_requires_m_or_mm, CLASS_ERROR, (unsigned)diag::Severity::Error, "option '-MG' requires '-M' or '-MM'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_missing_arg_mtp, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing argument to '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_missing_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument to '%0' is missing (expected %1 value%s1)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_mix_cuda_hip, CLASS_ERROR, (unsigned)diag::Severity::Error, "Mixed Cuda and HIP compilation is not supported.", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_module_header_wrong_kind, CLASS_ERROR, (unsigned)diag::Severity::Error, "header file '%0' input type '%1' does not match type of prior input in module compilation; use '-x %2' to override", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_modules_validate_once_requires_timestamp, CLASS_ERROR, (unsigned)diag::Severity::Error, "option '-fmodules-validate-once-per-build-session' requires '-fbuild-session-timestamp=<seconds since Epoch>' or '-fbuild-session-file=<file>'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_nested_config_file, CLASS_ERROR, (unsigned)diag::Severity::Error, "option '--config' is not allowed inside configuration file", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_no_ast_support, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0': unable to use AST files with this tool", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_no_cuda_installation, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find CUDA installation. Provide its path via --cuda-path, or pass -nocudainc to build without CUDA includes.", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_no_cuda_libdevice, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find libdevice for %0. Provide path to different CUDA installation via --cuda-path, or pass -nocudalib to build without linking with libdevice.", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_no_input_files, CLASS_ERROR, (unsigned)diag::Severity::Error, "no input files", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_no_linker_llvm_support, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0': unable to pass LLVM bit-code files to linker", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_no_module_support, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0': unable to use module files with this tool", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_no_neon_modifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "[no]neon is not accepted as modifier, please use [no]simd instead", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_no_such_file, CLASS_ERROR, (unsigned)diag::Severity::Error, "no such file or directory: '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_omp_host_ir_file_not_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "The provided host compiler IR file '%0' is required to generate code for OpenMP target regions but cannot be found.", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_omp_host_target_not_supported, CLASS_ERROR, (unsigned)diag::Severity::Error, "The target '%0' is not a supported OpenMP host target.", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_optimization_remark_pattern, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 in '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_out_file_argument_with_multiple_sources, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot specify '%0%1' when compiling multiple source files", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_output_argument_with_multiple_files, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot specify -o when generating multiple output files", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_preamble_format, CLASS_ERROR, (unsigned)diag::Severity::Error, "incorrect format for -preamble-bytes=N,END", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_ropi_incompatible_with_cxx, CLASS_ERROR, (unsigned)diag::Severity::Error, "ROPI is not compatible with c++", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_ropi_rwpi_incompatible_with_pic, CLASS_ERROR, (unsigned)diag::Severity::Error, "embedded and GOT-based position independence are incompatible", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_trivial_auto_var_init_zero_disabled, CLASS_ERROR, (unsigned)diag::Severity::Error, "-ftrivial-auto-var-init=zero hasn't been enabled. Enable it at your own peril for benchmarking purpose only with -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unable_to_remove_file, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to remove file: %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unknown_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown argument: '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unknown_argument_with_suggestion, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown argument '%0', did you mean '%1'?", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unknown_indirect_jump_opt, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown '-mindirect-jump=' option '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unknown_language, CLASS_ERROR, (unsigned)diag::Severity::Error, "language not recognized: '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unknown_objc_runtime, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown or ill-formed Objective-C runtime '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unknown_stdin_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "-E or -x required when input is from standard input", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unknown_stdin_type_clang_cl, CLASS_ERROR, (unsigned)diag::Severity::Error, "use /Tc or /Tp to set input type for standard input", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unsupported_embed_bitcode, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not supported with -fembed-bitcode", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unsupported_indirect_jump_opt, CLASS_ERROR, (unsigned)diag::Severity::Error, "'-mindirect-jump=%0' is unsupported with the '%1' architecture", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unsupported_linker, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported value '%0' for -linker option", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unsupported_noabicalls_pic, CLASS_ERROR, (unsigned)diag::Severity::Error, "position-independent code requires '-mabicalls'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unsupported_opt, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported option '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unsupported_opt_for_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported option '%0' for target '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unsupported_opt_with_suggestion, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported option '%0', did you mean '%1'?", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unsupported_option_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported argument '%1' to option '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_unsupported_rtlib_for_platform, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported runtime library '%0' for platform '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_drv_use_of_Z_option, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported use of internal gcc -Z option '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_invalid_branch_protection, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid branch protection option '%0' in '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_no_external_assembler, CLASS_ERROR, (unsigned)diag::Severity::Error, "there is no external assembler that can be used on this platform", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_objc_weak_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "-fobjc-weak is not supported on the current deployment target", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_objc_weak_with_gc, CLASS_ERROR, (unsigned)diag::Severity::Error, "-fobjc-weak is not supported in Objective-C garbage collection", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_target_unsupported_arch, CLASS_ERROR, (unsigned)diag::Severity::Error, "the target architecture '%0' is not supported by the target '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_test_module_file_extension_format, CLASS_ERROR, (unsigned)diag::Severity::Error, "-ftest-module-file-extension argument '%0' is not of the required form 'blockname:major:minor:hashed:user info'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(note_drv_address_sanitizer_debug_runtime, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "AddressSanitizer doesn't support linking with debug runtime libraries yet", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_drv_command_failed_diag_msg, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "diagnostic msg: %0", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_drv_config_file_searched_in, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "was searched for in the directory: %0", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_drv_t_option_is_global, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "The last /TC or /TP option takes precedence over earlier instances", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_drv_use_standard, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use '%0'%select{| or '%3'|, '%3', or '%4'|, '%3', '%4', or '%5'}2 for '%1' standard", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_drv_verify_prefix_spelling, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "-verify prefixes must start with a letter and contain only alphanumeric characters, hyphens, and underscores", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_use_dashdash, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "Use '--' to treat subsequent arguments as filenames", 0, SFINAE_Suppress, false, false, 0) +DIAG(warn_O4_is_O3, CLASS_WARNING, (unsigned)diag::Severity::Warning, "-O4 is equivalent to -O3", 164, SFINAE_Suppress, false, false, 27) +DIAG(warn_c_kext, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring -fapple-kext which is valid for C++ and Objective-C++ only", 0, SFINAE_Suppress, false, false, 0) +DIAG(warn_debug_compression_unavailable, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot compress debug sections (zlib not installed)", 156, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_assuming_mfloat_abi_is, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown platform, assuming -mfloat-abi=%0", 0, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_clang_unsupported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the clang compiler does not support '%0'", 0, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_darwin_sdk_invalid_settings, CLASS_WARNING, (unsigned)diag::Severity::Warning, "SDK settings were ignored as 'SDKSettings.json' could not be parsed", 153, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_deprecated_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument '%0' is deprecated, use '%1' instead", 164, SFINAE_Suppress, false, false, 27) +DIAG(warn_drv_diagnostics_hotness_requires_pgo, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument '%0' requires profile-guided optimization information", 720, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_disabling_vptr_no_rtti_default, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicitly disabling vptr sanitizer because rtti wasn't enabled", 48, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_empty_joined_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "joined argument expects additional value: '%0'", 720, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_experimental_isel_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "-fexperimental-isel support for the '%0' architecture is incomplete", 215, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_experimental_isel_incomplete_opt, CLASS_WARNING, (unsigned)diag::Severity::Warning, "-fexperimental-isel support is incomplete for this architecture at the current optimization level", 215, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_fine_grained_bitfield_accesses_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "option '-ffine-grained-bitfield-accesses' cannot be enabled together with a sanitizer; flag ignored", 504, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_input_file_unused, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0: '%1' input unused%select{ when '%3' is present|}2", 720, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_input_file_unused_by_cpp, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0: '%1' input unused in cpp mode", 720, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_invoking_fallback, CLASS_WARNING, (unsigned)diag::Severity::Warning, "falling back to %0", 225, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_moutline_unsupported_opt, CLASS_WARNING, (unsigned)diag::Severity::Warning, "The '%0' architecture does not support -moutline; flag ignored", 504, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_msp430_hwmult_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the given MCU supports %0 hardware multiply, but -mhwmult is set to %1.", 335, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_msp430_hwmult_no_device, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no MCU device specified, but '-mhwmult' is set to 'auto', assuming no hardware multiply. Use -mmcu to specify a MSP430 device, or -mhwmult to set hardware multiply type explicitly.", 335, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_msp430_hwmult_unsupported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the given MCU does not support hardware multiply, but -mhwmult is set to %0.", 335, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_msvc_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to find a Visual Studio installation; try running Clang from a developer command prompt", 428, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_object_size_disabled_O0, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the object size sanitizer has no effect at -O0, but is explicitly enabled: %0", 335, SFINAE_Suppress, true, false, 0) +DIAG(warn_drv_omp_offload_target_duplicate, CLASS_WARNING, (unsigned)diag::Severity::Warning, "The OpenMP offloading target '%0' is similar to target '%1' already specified - will be ignored.", 503, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_omp_offload_target_missingbcruntime, CLASS_WARNING, (unsigned)diag::Severity::Warning, "No library '%0' found in the default clang lib directory or in LIBRARY_PATH. Expect degraded performance due to no inlining of runtime functions on target devices.", 503, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_optimization_value, CLASS_WARNING, (unsigned)diag::Severity::Warning, "optimization level '%0' is not supported; using '%1%2' instead", 335, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_overriding_flag_option, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overriding '%0' option with '%1'", 516, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_pch_not_first_include, CLASS_WARNING, (unsigned)diag::Severity::Warning, "precompiled header '%0' was ignored because '%1' is not first '-include'", 0, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_preprocessed_input_file_unused, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0: previously preprocessed input%select{ unused when '%2' is present|}1", 720, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_ps4_force_pic, CLASS_WARNING, (unsigned)diag::Severity::Warning, "option '%0' was ignored by the PS4 toolchain, using '-fPIC'", 504, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_ps4_sdk_dir, CLASS_WARNING, (unsigned)diag::Severity::Warning, "environment variable SCE_ORBIS_SDK_DIR is set, but points to invalid or nonexistent directory '%0'", 342, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_treating_input_as_cxx, CLASS_WARNING, (unsigned)diag::Severity::Warning, "treating '%0' input as '%1' when in C++ mode, this behavior is deprecated", 164, SFINAE_Suppress, false, false, 27) +DIAG(warn_drv_unable_to_find_directory_expected, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unable to find %0 directory, expected to be in '%1'", 342, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_unknown_argument_clang_cl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown argument ignored in clang-cl: '%0'", 693, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_unknown_argument_clang_cl_with_suggestion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown argument ignored in clang-cl '%0' (did you mean '%1'?)", 693, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_unsupported_debug_info_opt_for_target, CLASS_WARNING, (unsigned)diag::Severity::Warning, "debug information option '%0' is not supported for target '%1'", 715, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_unsupported_gpopt, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mgpopt' option as it cannot be used with %select{|the implicit usage of }0-mabicalls", 713, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_unsupported_longcalls, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mlong-calls' option as it is not currently supported with %select{|the implicit usage of }0-mabicalls", 504, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_unsupported_opt_for_target, CLASS_WARNING, (unsigned)diag::Severity::Warning, "optimization flag '%0' is not supported for target '%1'", 283, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_unsupported_pic_with_mabicalls, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '%0' option as it cannot be used with %select{implicit usage of|}1 -mabicalls and the N64 ABI", 504, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_unused_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument unused during compilation: '%0'", 720, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_vectorize_needs_hvx, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto-vectorization requires HVX, use -mhvx to enable it", 504, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_yc_multiple_inputs_clang_cl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "support for '/Yc' with more than one source file not implemented yet; flag ignored", 123, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_ycyu_different_arg_clang_cl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "support for '/Yc' and '/Yu' with different filenames not implemented yet; flags ignored", 123, SFINAE_Suppress, false, false, 0) +DIAG(warn_drv_ycyu_no_fi_arg_clang_cl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "support for '%0' without a corresponding /FI flag not implemented yet; flag ignored", 123, SFINAE_Suppress, false, false, 0) +DIAG(warn_ignored_clang_option, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the flag '%0' has been deprecated and will be ignored", 720, SFINAE_Suppress, false, false, 0) +DIAG(warn_ignored_gcc_optimization, CLASS_WARNING, (unsigned)diag::Severity::Warning, "optimization flag '%0' is not supported", 283, SFINAE_Suppress, false, false, 0) +DIAG(warn_ignoring_ftabstop_value, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring invalid -ftabstop value '%0', using default value %1", 0, SFINAE_Suppress, false, false, 0) +DIAG(warn_incompatible_sysroot, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using sysroot for '%0' but targeting '%1'", 313, SFINAE_Suppress, false, false, 0) +DIAG(warn_invalid_ios_deployment_target, CLASS_WARNING, (unsigned)diag::Severity::Error, "invalid iOS deployment version '%0', iOS 10 is the maximum deployment target for 32-bit targets", 339, SFINAE_Suppress, false, false, 0) +DIAG(warn_missing_sysroot, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no such sysroot directory: '%0'", 416, SFINAE_Suppress, false, false, 0) +DIAG(warn_slash_u_filename, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'/U%0' treated as the '/U' option", 611, SFINAE_Suppress, false, false, 0) +DIAG(warn_target_unsupported_abs2008, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mabs=2008' option because the '%0' architecture does not support it", 708, SFINAE_Suppress, false, false, 0) +DIAG(warn_target_unsupported_abslegacy, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mabs=legacy' option because the '%0' architecture does not support it", 708, SFINAE_Suppress, false, false, 0) +DIAG(warn_target_unsupported_compact_branches, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mcompact-branches=' option because the '%0' architecture does not support it", 710, SFINAE_Suppress, false, false, 0) +DIAG(warn_target_unsupported_nan2008, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mnan=2008' option because the '%0' architecture does not support it", 714, SFINAE_Suppress, false, false, 0) +DIAG(warn_target_unsupported_nanlegacy, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '-mnan=legacy' option because the '%0' architecture does not support it", 714, SFINAE_Suppress, false, false, 0) diff --git a/clang-r353983/include/clang/Basic/DiagnosticError.h b/clang-r353983/include/clang/Basic/DiagnosticError.h new file mode 100644 index 00000000..430da6f7 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticError.h @@ -0,0 +1,60 @@ +//===--- DiagnosticError.h - Diagnostic payload for llvm::Error -*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTIC_ERROR_H +#define LLVM_CLANG_BASIC_DIAGNOSTIC_ERROR_H + +#include "clang/Basic/PartialDiagnostic.h" +#include "llvm/Support/Error.h" + +namespace clang { + +/// Carries a Clang diagnostic in an llvm::Error. +/// +/// Users should emit the stored diagnostic using the DiagnosticsEngine. +class DiagnosticError : public llvm::ErrorInfo<DiagnosticError> { +public: + DiagnosticError(PartialDiagnosticAt Diag) : Diag(std::move(Diag)) {} + + void log(raw_ostream &OS) const override { OS << "clang diagnostic"; } + + PartialDiagnosticAt &getDiagnostic() { return Diag; } + const PartialDiagnosticAt &getDiagnostic() const { return Diag; } + + /// Creates a new \c DiagnosticError that contains the given diagnostic at + /// the given location. + static llvm::Error create(SourceLocation Loc, PartialDiagnostic Diag) { + return llvm::make_error<DiagnosticError>( + PartialDiagnosticAt(Loc, std::move(Diag))); + } + + /// Extracts and returns the diagnostic payload from the given \c Error if + /// the error is a \c DiagnosticError. Returns none if the given error is not + /// a \c DiagnosticError. + static Optional<PartialDiagnosticAt> take(llvm::Error &Err) { + Optional<PartialDiagnosticAt> Result; + Err = llvm::handleErrors(std::move(Err), [&](DiagnosticError &E) { + Result = std::move(E.getDiagnostic()); + }); + return Result; + } + + static char ID; + +private: + // Users are not expected to use error_code. + std::error_code convertToErrorCode() const override { + return llvm::inconvertibleErrorCode(); + } + + PartialDiagnosticAt Diag; +}; + +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTIC_ERROR_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticFrontend.h b/clang-r353983/include/clang/Basic/DiagnosticFrontend.h new file mode 100644 index 00000000..57f00e73 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticFrontend.h @@ -0,0 +1,28 @@ +//===--- DiagnosticFrontend.h - Diagnostics for frontend --------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICFRONTEND_H +#define LLVM_CLANG_BASIC_DIAGNOSTICFRONTEND_H + +#include "clang/Basic/Diagnostic.h" + +namespace clang { +namespace diag { +enum { +#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \ + SHOWINSYSHEADER, CATEGORY) \ + ENUM, +#define FRONTENDSTART +#include "clang/Basic/DiagnosticFrontendKinds.inc" +#undef DIAG + NUM_BUILTIN_FRONTEND_DIAGNOSTICS +}; +} // end namespace diag +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTICFRONTEND_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticFrontendKinds.inc b/clang-r353983/include/clang/Basic/DiagnosticFrontendKinds.inc new file mode 100644 index 00000000..25f684a1 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticFrontendKinds.inc @@ -0,0 +1,113 @@ +#ifdef FRONTENDSTART +__FRONTENDSTART = DIAG_START_FRONTEND, +#undef FRONTENDSTART +#endif + +DIAG(err_alias_to_undefined, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{alias|ifunc}0 must point to a defined %select{variable or |}1function", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_builtin_needs_feature, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 needs target feature %1", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_cyclic_alias, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{alias|ifunc}0 definition is part of a cycle", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_duplicate_mangled_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition with same mangled name '%0' as another definition", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_action_not_available, CLASS_ERROR, (unsigned)diag::Severity::Error, "action %0 not compiled in", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_backend_frame_larger_than, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0", 0, SFINAE_SubstitutionFailure, false, true, 16) +DIAG(err_fe_backend_plugin, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0", 0, SFINAE_SubstitutionFailure, false, true, 16) +DIAG(err_fe_backend_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0", 0, SFINAE_SubstitutionFailure, false, true, 16) +DIAG(err_fe_cannot_link_module, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "cannot link module '%0': %1", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_dependency_file_requires_MT, CLASS_ERROR, (unsigned)diag::Severity::Error, "-dependency-file requires at least one -MT or -MQ option", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_error_backend, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "error in backend: %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_error_opening, CLASS_ERROR, (unsigned)diag::Severity::Error, "error opening '%0': %1", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_error_reading, CLASS_ERROR, (unsigned)diag::Severity::Error, "error reading '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_error_reading_stdin, CLASS_ERROR, (unsigned)diag::Severity::Error, "error reading stdin: %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_expected_clang_command, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a clang compiler command", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_expected_compiler_job, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to handle compilation, expected exactly one compiler job in '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_inline_asm, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_fe_invalid_alignment, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid value '%1' in '%0'; alignment must be a power of 2", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_invalid_code_complete_file, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "cannot locate code-completion file %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_invalid_exception_model, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid exception model '%0' for target '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_invalid_plugin_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to find plugin '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_invalid_wchar_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid wchar_t type '%0'; must be one of 'char', 'short', 'int'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_no_pch_in_dir, CLASS_ERROR, (unsigned)diag::Severity::Error, "no suitable precompiled header file found in directory '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_remap_missing_from_file, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "could not remap from missing file '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_remap_missing_to_file, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "could not remap file '%0' to the contents of file '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_stdout_binary, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "unable to change standard output to binary", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_unable_to_create_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to create target: '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_unable_to_interface_with_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to interface with target machine", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_unable_to_load_pch, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to load PCH file", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_unable_to_load_plugin, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to load plugin '%0': '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_fe_unable_to_open_output, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to open output file '%0': '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_function_needs_feature, CLASS_ERROR, (unsigned)diag::Severity::Error, "always_inline function %1 requires target feature '%2', but would be inlined into function %0 that is compiled without support for '%2'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_header_module_requires_modules, CLASS_ERROR, (unsigned)diag::Severity::Error, "header module compilation requires '-fmodules' or '-fmodules-ts'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_ifunc_resolver_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "ifunc resolver function must return a pointer", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_invalid_vfs_overlay, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "invalid virtual filesystem overlay file '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_missing_module, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "no module named '%0' declared in module map file '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_missing_module_name, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "no module name provided; specify one with -fmodule-name=", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_missing_vfs_overlay_file, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "virtual filesystem overlay file '%0' not found", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_module_build_requires_fmodules, CLASS_ERROR, (unsigned)diag::Severity::Error, "module compilation requires '-fmodules'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_module_cannot_create_includes, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot create includes file for module %0: %1", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_module_header_file_invalid, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "unexpected module header file input '%0'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_module_header_file_not_found, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "module header file '%0' not found", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_module_interface_requires_modules_ts, CLASS_ERROR, (unsigned)diag::Severity::Error, "module interface compilation requires '-fmodules-ts'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_module_map_not_found, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "module map file '%0' not found", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_modules_embed_file_not_found, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "file '%0' specified by '-fmodules-embed-file=' not found", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_no_submodule, CLASS_ERROR, (unsigned)diag::Severity::Error, "no submodule named %0 in module '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_no_submodule_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "no submodule named %0 in module '%1'; did you mean '%2'?", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_relocatable_without_isysroot, CLASS_ERROR, (unsigned)diag::Severity::Error, "must specify system root with -isysroot when building a relocatable PCH file", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_test_module_file_extension_version, CLASS_ERROR, (unsigned)diag::Severity::Error, "test module file extension '%0' has different version (%1.%2) than expected (%3.%4)", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_verify_inconsistent_diags, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' diagnostics %select{expected|seen}1 but not %select{seen|expected}1: %2", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_verify_invalid_content, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid expected %0: %1", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_verify_invalid_no_diags, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{expected|'expected-no-diagnostics'}0 directive cannot follow %select{'expected-no-diagnostics' directive|other expected directives}0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_verify_invalid_range, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid range following '-' in expected %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_verify_missing_end, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find end ('}}') of expected %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_verify_missing_file, CLASS_ERROR, (unsigned)diag::Severity::Error, "file '%0' could not be located in expected %1", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_verify_missing_line, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing or invalid line number following '@' in expected %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_verify_missing_regex, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find start of regex ('{{') in %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_verify_missing_start, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find start ('{{') of expected %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_verify_no_directives, CLASS_ERROR, (unsigned)diag::Severity::Error, "no expected directives found: consider use of 'expected-no-diagnostics'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(note_fe_backend_frame_larger_than, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0", 0, SFINAE_Suppress, false, true, 16) +DIAG(note_fe_backend_invalid_loc, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "could not determine the original source location for %0:%1:%2", 0, SFINAE_Suppress, false, true, 16) +DIAG(note_fe_backend_plugin, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0", 0, SFINAE_Suppress, false, true, 16) +DIAG(note_fe_inline_asm, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0", 0, SFINAE_Suppress, false, false, 12) +DIAG(note_fe_inline_asm_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "instantiated into assembly here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_fixit_applied, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "FIX-IT applied suggested code changes", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_fixit_failed, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "FIX-IT unable to apply suggested code changes", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_fixit_in_macro, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "FIX-IT unable to apply suggested code changes in a macro", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_fixit_unfixed_error, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "FIX-IT detected an error it cannot fix", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_incompatible_analyzer_plugin_api, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "current API version is '%0', but plugin was compiled with version '%1'", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_module_def_undef_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "macro was %select{defined|#undef'd}0 here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_module_import_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "module imported here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_private_top_level_defined, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "module defined here", 0, SFINAE_Suppress, false, false, 0) +DIAG(remark_fe_backend_optimization_remark, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0", 522, SFINAE_Suppress, false, true, 16) +DIAG(remark_fe_backend_optimization_remark_analysis, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0", 523, SFINAE_Suppress, false, true, 16) +DIAG(remark_fe_backend_optimization_remark_analysis_aliasing, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop. If the arrays will always be independent specify '#pragma clang loop vectorize(assume_safety)' before the loop or provide the '__restrict__' qualifier with the independent array arguments. Erroneous results will occur if these options are incorrectly applied!", 523, SFINAE_Suppress, false, true, 16) +DIAG(remark_fe_backend_optimization_remark_analysis_fpcommute, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop or by providing the compiler option '-ffast-math'.", 523, SFINAE_Suppress, false, true, 16) +DIAG(remark_fe_backend_optimization_remark_missed, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0", 525, SFINAE_Suppress, false, true, 16) +DIAG(remark_fe_backend_plugin, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "%0", 566, SFINAE_Suppress, false, true, 16) +DIAG(remark_module_build, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "building module '%0' as '%1'", 418, SFINAE_Suppress, false, false, 0) +DIAG(remark_module_build_done, CLASS_REMARK, (unsigned)diag::Severity::Ignored, "finished building module '%0'", 418, SFINAE_Suppress, false, false, 0) +DIAG(warn_alias_to_weak_alias, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{alias|ifunc}2 will always resolve to %0 even if weak definition of %1 is overridden", 282, SFINAE_Suppress, false, false, 0) +DIAG(warn_alias_with_section, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{alias|ifunc}1 will not be in section '%0' but in the same section as the %select{aliasee|resolver}2", 282, SFINAE_Suppress, false, false, 0) +DIAG(warn_atomic_op_misaligned, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{large|misaligned}0 atomic operation may incur significant performance penalty", 41, SFINAE_Suppress, false, false, 0) +DIAG(warn_fe_backend_frame_larger_than, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 245, SFINAE_Suppress, false, true, 16) +DIAG(warn_fe_backend_optimization_failure, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 524, SFINAE_Suppress, false, true, 16) +DIAG(warn_fe_backend_plugin, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 53, SFINAE_Suppress, false, true, 16) +DIAG(warn_fe_cc_log_diagnostics_failure, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to open CC_LOG_DIAGNOSTICS file: %0 (using stderr)", 0, SFINAE_Suppress, false, false, 0) +DIAG(warn_fe_cc_print_header_failure, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to open CC_PRINT_HEADERS file: %0 (using stderr)", 0, SFINAE_Suppress, false, false, 0) +DIAG(warn_fe_frame_larger_than, CLASS_WARNING, (unsigned)diag::Severity::Warning, "stack frame size of %0 bytes in %q1", 245, SFINAE_Suppress, false, true, 16) +DIAG(warn_fe_inline_asm, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 327, SFINAE_Suppress, false, false, 12) +DIAG(warn_fe_macro_contains_embedded_newline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "macro '%0' contains embedded newline; text after the newline is ignored", 0, SFINAE_Suppress, false, false, 0) +DIAG(warn_fe_override_module, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overriding the module target triple with %0", 514, SFINAE_Suppress, false, false, 0) +DIAG(warn_fe_serialized_diag_failure, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to open file %0 for serializing diagnostics (%1)", 588, SFINAE_Suppress, false, false, 0) +DIAG(warn_fe_serialized_diag_merge_failure, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to merge a subprocess's serialized diagnostics", 588, SFINAE_Suppress, false, false, 0) +DIAG(warn_fe_unable_to_open_stats_file, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unable to open statistics output file '%0': '%1'", 674, SFINAE_Suppress, false, false, 0) +DIAG(warn_fixit_no_changes, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "FIX-IT detected errors it could not fix; no output will be generated", 0, SFINAE_Suppress, false, false, 0) +DIAG(warn_incompatible_analyzer_plugin_api, CLASS_WARNING, (unsigned)diag::Severity::Warning, "checker plugin '%0' is not compatible with this version of the analyzer", 21, SFINAE_Suppress, false, false, 0) +DIAG(warn_missing_submodule, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing submodule '%0'", 317, SFINAE_Suppress, false, false, 0) +DIAG(warn_module_config_macro_undef, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{definition|#undef}0 of configuration macro '%1' has no effect on the import of '%2'; pass '%select{-D%1=...|-U%1}0' on the command line to configure the module", 132, SFINAE_Suppress, false, false, 0) +DIAG(warn_module_config_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Error, "module file %0 cannot be loaded due to a configuration mismatch with the current compilation", 420, SFINAE_Suppress, false, false, 0) +DIAG(warn_no_priv_submodule_use_toplevel, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no submodule named %0 in module '%1'; using top level '%2'", 546, SFINAE_Suppress, false, false, 0) +DIAG(warn_option_invalid_ocl_version, CLASS_WARNING, (unsigned)diag::Severity::Warning, "OpenCL version %0 does not support the option '%1'", 164, SFINAE_Suppress, false, false, 27) +DIAG(warn_profile_data_missing, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "profile data may be incomplete: of %0 function%s0, %1 %plural{1:has|:have}1 no data", 547, SFINAE_Suppress, false, false, 31) +DIAG(warn_profile_data_out_of_date, CLASS_WARNING, (unsigned)diag::Severity::Warning, "profile data may be out of date: of %0 function%s0, %1 %plural{1:has|:have}1 mismatched data that will be ignored", 548, SFINAE_Suppress, false, false, 31) +DIAG(warn_profile_data_unprofiled, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no profile data available for file \"%0\"", 549, SFINAE_Suppress, false, false, 31) +DIAG(warn_stdlibcxx_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "include path for stdlibc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead", 621, SFINAE_Suppress, false, false, 0) +DIAG(warn_unknown_diag_option, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown %select{warning|remark}0 option '%1'%select{|; did you mean '%3'?}2", 698, SFINAE_Suppress, false, false, 0) +DIAG(warn_unknown_warning_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown %0 warning specifier: '%1'", 698, SFINAE_Suppress, false, false, 0) diff --git a/clang-r353983/include/clang/Basic/DiagnosticGroups.inc b/clang-r353983/include/clang/Basic/DiagnosticGroups.inc new file mode 100644 index 00000000..6b74a08f --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticGroups.inc @@ -0,0 +1,1847 @@ + +#ifdef GET_DIAG_ARRAYS +static const int16_t DiagArrays[] = { + /* Empty */ -1, + /* DiagArray1 */ diag::warn_pragma_message, -1, + /* DiagArray2 */ diag::pp_hash_warning, -1, + /* DiagArray3 */ diag::warn_cfstring_truncated, -1, + /* DiagArray5 */ diag::warn_independentclass_attribute, diag::warn_ptr_independentclass_attribute, -1, + /* DiagArray6 */ diag::warn_nsobject_attribute, -1, + /* DiagArray8 */ diag::warn_abs_too_small, diag::warn_pointer_abs, diag::warn_unsigned_abs, diag::warn_wrong_absolute_value_type, -1, + /* DiagArray9 */ diag::warn_abstract_final_class, -1, + /* DiagArray10 */ diag::warn_abstract_vbase_init_ignored, -1, + /* DiagArray12 */ diag::warn_taking_address_of_packed_member, -1, + /* DiagArray13 */ diag::ext_typecheck_addrof_temporary, -1, + /* DiagArray16 */ diag::warn_alloca_align_alignof, -1, + /* DiagArray17 */ diag::warn_ambiguous_suitable_delete_function_found, -1, + /* DiagArray18 */ diag::warn_misplaced_ellipsis_vararg, -1, + /* DiagArray19 */ diag::warn_pp_ambiguous_macro, -1, + /* DiagArray20 */ diag::ext_nested_name_member_ref_lookup_ambiguous, -1, + /* DiagArray21 */ diag::warn_incompatible_analyzer_plugin_api, -1, + /* DiagArray22 */ diag::ext_abstract_pack_declarator_parens, -1, + /* DiagArray24 */ diag::warn_arc_bridge_cast_nonarc, -1, + /* DiagArray25 */ diag::warn_arc_possible_repeated_use_of_weak, -1, + /* DiagArray26 */ diag::warn_arc_object_memaccess, -1, + /* DiagArray27 */ diag::warn_arc_perform_selector_leaks, -1, + /* DiagArray28 */ diag::warn_arc_repeated_use_of_weak, -1, + /* DiagArray29 */ diag::warn_arc_retain_cycle, -1, + /* DiagArray30 */ diag::warn_arc_literal_assign, diag::warn_arc_retained_assign, diag::warn_arc_retained_property_assign, -1, + /* DiagArray31 */ diag::warn_argument_invalid_range, -1, + /* DiagArray32 */ diag::warn_array_index_exceeds_bounds, diag::warn_array_index_precedes_bounds, diag::warn_static_array_too_small, diag::warn_typecheck_zero_static_array_size, -1, + /* DiagArray33 */ diag::warn_ptr_arith_exceeds_bounds, diag::warn_ptr_arith_precedes_bounds, -1, + /* DiagArray35 */ diag::warn_asm_qualifier_ignored, diag::warn_file_asm_volatile, -1, + /* DiagArray36 */ diag::warn_asm_mismatched_size_modifier, -1, + /* DiagArray37 */ diag::warn_not_in_enum_assignment, -1, + /* DiagArray38 */ diag::warn_assume_side_effects, -1, + /* DiagArray40 */ diag::warn_atimport_in_framework_header, -1, + /* DiagArray41 */ diag::warn_atomic_op_misaligned, -1, + /* DiagArray42 */ diag::warn_atomic_implicit_seq_cst, -1, + /* DiagArray43 */ diag::warn_atomic_op_has_invalid_memory_order, -1, + /* DiagArray45 */ diag::warn_atomic_property_rule, -1, + /* DiagArray46 */ diag::warn_attribute_packed_for_bitfield, -1, + /* DiagArray48 */ diag::warn_drv_disabling_vptr_no_rtti_default, -1, + /* DiagArray49 */ diag::warn_auto_module_import, -1, + /* DiagArray50 */ diag::ext_auto_storage_class, -1, + /* DiagArray51 */ diag::warn_auto_var_is_id, -1, + /* DiagArray52 */ diag::warn_availability_and_unavailable, diag::warn_availability_on_static_initializer, diag::warn_availability_swift_unavailable_deprecated_only, diag::warn_availability_unknown_platform, diag::warn_availability_version_ordering, diag::warn_expected_consistent_version_separator, diag::warn_mismatched_availability, diag::warn_mismatched_availability_override, diag::warn_mismatched_availability_override_unavail, -1, + /* DiagArray53 */ diag::warn_fe_backend_plugin, -1, + /* DiagArray54 */ diag::backslash_newline_space, -1, + /* DiagArray55 */ diag::warn_bad_function_cast, -1, + /* DiagArray57 */ diag::ext_rvalue_to_reference_access_ctor, diag::ext_rvalue_to_reference_temp_copy_no_viable, -1, + /* DiagArray58 */ diag::ext_decomp_decl_cond, -1, + /* DiagArray59 */ diag::warn_impcast_bitfield_precision_constant, -1, + /* DiagArray60 */ diag::warn_bitfield_too_small_for_enum, diag::warn_signed_bitfield_enum_conversion, diag::warn_unsigned_bitfield_assigned_signed_enum, -1, + /* DiagArray61 */ diag::warn_anon_bitfield_width_exceeds_type_width, diag::warn_bitfield_width_exceeds_type_width, -1, + /* DiagArray62 */ diag::warn_bitwise_op_in_bitwise_op, -1, + /* DiagArray63 */ diag::warn_block_capture_autoreleasing, -1, + /* DiagArray64 */ diag::warn_impcast_bool_to_null_pointer, -1, + /* DiagArray66 */ diag::warn_braces_around_scalar_init, -1, + /* DiagArray67 */ diag::warn_objc_invalid_bridge, diag::warn_objc_invalid_bridge_to_cf, -1, + /* DiagArray68 */ diag::ext_pp_redef_builtin_macro, diag::ext_pp_undef_builtin_macro, -1, + /* DiagArray69 */ diag::warn_memcpy_chk_overflow, -1, + /* DiagArray70 */ diag::warn_implicit_decl_requires_sysheader, -1, + /* DiagArray71 */ diag::warn_zero_size_struct_union_compat, -1, + /* DiagArray75 */ diag::ext_old_implicitly_unsigned_long_cxx, diag::warn_auto_storage_class, diag::warn_cxx11_compat_user_defined_literal, diag::warn_cxx11_keyword, diag::warn_cxx11_right_shift_in_template_arg, diag::warn_explicit_instantiation_inline_0x, diag::warn_explicit_instantiation_must_be_global_0x, diag::warn_explicit_instantiation_out_of_scope_0x, diag::warn_explicit_instantiation_unqualified_wrong_namespace_0x, diag::warn_old_implicitly_unsigned_long_cxx, -1, + /* DiagArray76 */ diag::warn_deprecated_string_literal_conversion, -1, + /* DiagArray78 */ diag::warn_cxx11_compat_reserved_user_defined_literal, -1, + /* DiagArray79 */ diag::ext_alias_declaration, diag::ext_array_size_conversion, diag::ext_auto_type_specifier, diag::ext_cxx11_enum_fixed_underlying_type, diag::ext_defaulted_deleted_function, diag::ext_enum_friend, diag::ext_enumerator_list_comma_cxx, diag::ext_explicit_conversion_functions, diag::ext_extern_template, diag::ext_for_range, diag::ext_generalized_initializer_lists, diag::ext_nested_name_spec_is_enum, diag::ext_nonclass_type_friend, diag::ext_nonstatic_member_init, diag::ext_override_control_keyword, diag::ext_ref_qualifier, diag::ext_rvalue_reference, diag::ext_scoped_enum, diag::ext_static_data_member_in_union, diag::ext_template_arg_object_internal, diag::ext_template_outside_of_template, diag::ext_template_parameter_default_in_function_template, diag::ext_typename_outside_of_template, diag::ext_unelaborated_friend_type, diag::ext_variadic_templates, -1, + /* DiagArray80 */ diag::ext_extra_semi_cxx11, -1, + /* DiagArray81 */ diag::ext_inline_namespace, -1, + /* DiagArray82 */ diag::ext_cxx11_longlong, -1, + /* DiagArray83 */ diag::ext_cce_narrowing, diag::ext_init_list_constant_narrowing, diag::ext_init_list_type_narrowing, diag::ext_init_list_variable_narrowing, diag::warn_init_list_constant_narrowing, diag::warn_init_list_type_narrowing, diag::warn_init_list_variable_narrowing, -1, + /* DiagArray84 */ diag::ext_binary_literal_cxx14, -1, + /* DiagArray87 */ diag::ext_constexpr_body_invalid_stmt, diag::ext_constexpr_body_multiple_return, diag::ext_constexpr_local_var, diag::ext_constexpr_type_definition, diag::ext_cxx14_attr, diag::ext_decltype_auto_type_specifier, diag::ext_init_capture, diag::ext_variable_template, -1, + /* DiagArray89 */ diag::warn_cxx17_compat_exception_spec_in_signature, -1, + /* DiagArray91 */ diag::ext_auto_new_list_init, diag::ext_constexpr_if, diag::ext_constexpr_on_lambda_cxx17, diag::ext_cxx17_attr, diag::ext_decomp_decl, diag::ext_fold_expression, diag::ext_for_range_begin_end_types_differ, diag::ext_hex_literal_invalid, diag::ext_init_statement, diag::ext_inline_variable, diag::ext_multi_using_declaration, diag::ext_nested_namespace_definition, diag::ext_ns_enum_attribute, diag::ext_star_this_lambda_capture_cxx17, diag::ext_static_assert_no_message, diag::ext_template_template_param_typename, diag::ext_using_attribute_ns, diag::ext_using_declaration_pack, -1, + /* DiagArray96 */ diag::warn_cxx2a_compat_aggregate_init_with_ctors, diag::warn_cxx2a_compat_spaceship, diag::warn_cxx2a_compat_utf8_string, diag::warn_cxx2a_keyword, -1, + /* DiagArray98 */ diag::ext_bitfield_member_init, diag::ext_constexpr_body_invalid_stmt_cxx2a, diag::ext_constexpr_function_try_block_cxx2a, diag::ext_equals_this_lambda_capture_cxx2a, diag::ext_for_range_init_stmt, diag::ext_inline_nested_namespace_definition, diag::ext_pointer_to_const_ref_member_on_rvalue, -1, + /* DiagArray99 */ diag::warn_cxx17_compat_bitfield_member_init, diag::warn_cxx17_compat_constexpr_body_invalid_stmt, diag::warn_cxx17_compat_constexpr_function_try_block, diag::warn_cxx17_compat_defaulted_method_type_mismatch, diag::warn_cxx17_compat_equals_this_lambda_capture, diag::warn_cxx17_compat_for_range_init_stmt, diag::warn_cxx17_compat_inline_nested_namespace_definition, diag::warn_cxx17_compat_lambda_def_ctor_assign, diag::warn_cxx17_compat_spaceship, diag::warn_cxx17_compat_unicode_type, -1, + /* DiagArray100 */ diag::warn_cxx17_compat_pointer_to_const_ref_member_on_rvalue, -1, + /* DiagArray101 */ diag::warn_cxx14_compat_class_template_argument_deduction, diag::warn_cxx14_compat_constexpr_if, diag::warn_cxx14_compat_constexpr_on_lambda, diag::warn_cxx14_compat_decomp_decl, diag::warn_cxx14_compat_fold_expression, diag::warn_cxx14_compat_init_statement, diag::warn_cxx14_compat_inline_variable, diag::warn_cxx14_compat_nested_namespace_definition, diag::warn_cxx14_compat_star_this_lambda_capture, diag::warn_cxx14_compat_static_assert_no_message, diag::warn_cxx14_compat_template_nontype_parm_auto_type, diag::warn_cxx14_compat_template_template_param_typename, diag::warn_cxx14_compat_u8_character_literal, diag::warn_cxx14_compat_using_attribute_ns, diag::warn_cxx17_compat_multi_using_declaration, diag::warn_cxx17_compat_using_declaration_pack, diag::warn_for_range_begin_end_types_differ, -1, + /* DiagArray102 */ diag::warn_cxx14_compat_ns_enum_attribute, diag::warn_cxx17_hex_literal, -1, + /* DiagArray103 */ diag::warn_cxx11_compat_constexpr_body_invalid_stmt, diag::warn_cxx11_compat_constexpr_body_multiple_return, diag::warn_cxx11_compat_constexpr_body_no_return, diag::warn_cxx11_compat_constexpr_local_var, diag::warn_cxx11_compat_constexpr_type_definition, diag::warn_cxx11_compat_decltype_auto_type_specifier, diag::warn_cxx11_compat_deduced_return_type, diag::warn_cxx11_compat_digit_separator, diag::warn_cxx11_compat_generic_lambda, diag::warn_cxx11_compat_init_capture, diag::warn_cxx11_compat_variable_template, -1, + /* DiagArray104 */ diag::warn_cxx11_compat_binary_literal, -1, + /* DiagArray106 */ diag::warn_cxx98_compat_alias_declaration, diag::warn_cxx98_compat_alignas, diag::warn_cxx98_compat_alignof, diag::warn_cxx98_compat_attribute, diag::warn_cxx98_compat_auto_type_specifier, diag::warn_cxx98_compat_constexpr, diag::warn_cxx98_compat_ctor_list_init, diag::warn_cxx98_compat_decltype, diag::warn_cxx98_compat_defaulted_deleted_function, diag::warn_cxx98_compat_delegating_ctor, diag::warn_cxx98_compat_empty_scalar_initializer, diag::warn_cxx98_compat_enum_fixed_underlying_type, diag::warn_cxx98_compat_enum_friend, diag::warn_cxx98_compat_enum_nested_name_spec, diag::warn_cxx98_compat_explicit_conversion_functions, diag::warn_cxx98_compat_for_range, diag::warn_cxx98_compat_friend_is_member, diag::warn_cxx98_compat_generalized_initializer_lists, diag::warn_cxx98_compat_goto_into_protected_scope, diag::warn_cxx98_compat_indirect_goto_in_protected_scope, diag::warn_cxx98_compat_initializer_list_init, diag::warn_cxx98_compat_inline_namespace, diag::warn_cxx98_compat_lambda, diag::warn_cxx98_compat_less_colon_colon, diag::warn_cxx98_compat_literal_operator, diag::warn_cxx98_compat_literal_ucn_control_character, diag::warn_cxx98_compat_literal_ucn_escape_basic_scs, diag::warn_cxx98_compat_noexcept_decl, diag::warn_cxx98_compat_noexcept_expr, diag::warn_cxx98_compat_non_static_member_use, diag::warn_cxx98_compat_nonclass_type_friend, diag::warn_cxx98_compat_nonstatic_member_init, diag::warn_cxx98_compat_nontrivial_union_or_anon_struct_member, diag::warn_cxx98_compat_nullptr, diag::warn_cxx98_compat_override_control_keyword, diag::warn_cxx98_compat_pass_non_pod_arg_to_vararg, diag::warn_cxx98_compat_raw_string_literal, diag::warn_cxx98_compat_ref_qualifier, diag::warn_cxx98_compat_reference_list_init, diag::warn_cxx98_compat_rvalue_reference, diag::warn_cxx98_compat_scoped_enum, diag::warn_cxx98_compat_sfinae_access_control, diag::warn_cxx98_compat_static_assert, diag::warn_cxx98_compat_static_data_member_in_union, diag::warn_cxx98_compat_switch_into_protected_scope, diag::warn_cxx98_compat_template_arg_extra_parens, diag::warn_cxx98_compat_template_arg_null, diag::warn_cxx98_compat_template_arg_object_internal, diag::warn_cxx98_compat_template_outside_of_template, diag::warn_cxx98_compat_template_parameter_default_in_function_template, diag::warn_cxx98_compat_trailing_return_type, diag::warn_cxx98_compat_two_right_angle_brackets, diag::warn_cxx98_compat_typename_outside_of_template, diag::warn_cxx98_compat_unelaborated_friend_type, diag::warn_cxx98_compat_unicode_id, diag::warn_cxx98_compat_unicode_literal, diag::warn_cxx98_compat_unicode_type, diag::warn_cxx98_compat_using_decl_constructor, diag::warn_cxx98_compat_variadic_templates, -1, + /* DiagArray107 */ diag::warn_cxx98_compat_temp_copy, -1, + /* DiagArray108 */ diag::warn_cxx98_compat_top_level_semi, -1, + /* DiagArray109 */ diag::warn_cxx98_compat_template_arg_local_type, -1, + /* DiagArray110 */ diag::warn_cxx98_compat_array_size_conversion, diag::warn_cxx98_compat_cast_fn_obj, diag::warn_cxx98_compat_empty_fnmacro_arg, diag::warn_cxx98_compat_enumerator_list_comma, diag::warn_cxx98_compat_extern_template, diag::warn_cxx98_compat_longlong, diag::warn_cxx98_compat_no_newline_eof, diag::warn_cxx98_compat_pp_line_too_big, diag::warn_cxx98_compat_variadic_macro, -1, + /* DiagArray111 */ diag::warn_cxx98_compat_template_arg_unnamed_type, -1, + /* DiagArray112 */ diag::ext_anonymous_union, diag::ext_c11_alignment, diag::ext_c11_anonymous_struct, diag::ext_c11_generic_selection, diag::ext_c11_noreturn, diag::ext_c11_static_assert, -1, + /* DiagArray113 */ diag::warn_c99_compat_unicode_id, diag::warn_c99_compat_unicode_literal, diag::warn_old_implicitly_unsigned_long, -1, + /* DiagArray114 */ diag::ext_aggregate_init_not_constant, diag::ext_c99_array_usage, diag::ext_c99_compound_literal, diag::ext_c99_flexible_array_member, diag::ext_c99_variable_decl_in_for_loop, diag::ext_c99_whitespace_required_after_macro_name, diag::ext_designated_init, diag::ext_empty_fnmacro_arg, diag::ext_enumerator_list_comma_c, diag::ext_hex_constant_invalid, -1, + /* DiagArray115 */ diag::warn_call_to_pure_virtual_member_function_from_ctor_dtor, -1, + /* DiagArray116 */ diag::warn_cast_align, -1, + /* DiagArray117 */ diag::warn_cast_calling_conv, -1, + /* DiagArray118 */ diag::warn_cast_pointer_from_sel, -1, + /* DiagArray119 */ diag::warn_cast_qual, diag::warn_cast_qual2, -1, + /* DiagArray120 */ diag::ext_bad_cxx_cast_qualifiers_away_incoherent, -1, + /* DiagArray122 */ diag::warn_omp_section_is_char, diag::warn_subscript_is_char, -1, + /* DiagArray123 */ diag::warn_drv_yc_multiple_inputs_clang_cl, diag::warn_drv_ycyu_different_arg_clang_cl, diag::warn_drv_ycyu_no_fi_arg_clang_cl, diag::warn_pp_hdrstop_filename_ignored, diag::warn_pp_macro_def_mismatch_with_pch, -1, + /* DiagArray124 */ diag::warn_pass_class_arg_to_vararg, -1, + /* DiagArray125 */ diag::warn_comma_operator, -1, + /* DiagArray126 */ diag::escaped_newline_block_comment_end, diag::ext_line_comment, diag::ext_multi_line_line_comment, diag::warn_nested_block_comment, -1, + /* DiagArray128 */ diag::ext_typecheck_comparison_of_distinct_pointers, -1, + /* DiagArray129 */ diag::ext_complex_component_init, -1, + /* DiagArray130 */ diag::ext_typecheck_cond_pointer_integer_mismatch, -1, + /* DiagArray131 */ diag::warn_maybe_uninit_var, -1, + /* DiagArray132 */ diag::warn_module_config_macro_undef, -1, + /* DiagArray133 */ diag::warn_impcast_integer_precision_constant, -1, + /* DiagArray134 */ diag::warn_logical_instead_of_bitwise, -1, + /* DiagArray135 */ diag::warn_cxx14_compat_constexpr_not_const, -1, + /* DiagArray136 */ diag::warn_attr_on_unconsumable_class, diag::warn_loop_state_mismatch, diag::warn_param_return_typestate_mismatch, diag::warn_param_typestate_mismatch, diag::warn_return_typestate_for_unconsumable_type, diag::warn_return_typestate_mismatch, diag::warn_use_in_invalid_state, diag::warn_use_of_temp_in_invalid_state, -1, + /* DiagArray137 */ diag::warn_impcast_complex_scalar, diag::warn_impcast_vector_scalar, diag::warn_opencl_generic_address_space_arg, diag::warn_template_arg_negative, diag::warn_template_arg_too_large, -1, + /* DiagArray140 */ diag::warn_coroutine_promise_unhandled_exception_required_with_exceptions, -1, + /* DiagArray141 */ diag::warn_unreachable_default, -1, + /* DiagArray143 */ diag::warn_objc_cdirective_format_string, -1, + /* DiagArray144 */ diag::warn_ctad_maybe_unsupported, -1, + /* DiagArray146 */ diag::warn_ctu_incompat_triple, -1, + /* DiagArray147 */ diag::warn_attribute_argument_n_negative, diag::warn_cuda_attr_lambda_position, diag::warn_kern_is_inline, diag::warn_kern_is_method, diag::warn_pragma_unroll_cuda_value_in_parens, -1, + /* DiagArray148 */ diag::warn_default_atomic_custom_getter_setter, -1, + /* DiagArray149 */ diag::warn_dangling_variable, diag::warn_unsupported_lifetime_extension, -1, + /* DiagArray150 */ diag::warn_dangling_else, -1, + /* DiagArray151 */ diag::warn_bind_ref_member_to_parameter, diag::warn_dangling_member, diag::warn_init_ptr_member_to_parameter_addr, diag::warn_new_dangling_reference, -1, + /* DiagArray152 */ diag::warn_new_dangling_initializer_list, -1, + /* DiagArray153 */ diag::warn_drv_darwin_sdk_invalid_settings, -1, + /* DiagArray154 */ diag::warn_pp_date_time, -1, + /* DiagArray155 */ diag::warn_dealloc_in_category, -1, + /* DiagArray156 */ diag::warn_debug_compression_unavailable, -1, + /* DiagArray157 */ diag::ext_mixed_decls_code, -1, + /* DiagArray158 */ diag::warn_defaulted_method_deleted, -1, + /* DiagArray159 */ diag::warn_delegating_ctor_cycle, -1, + /* DiagArray160 */ diag::warn_delete_abstract_non_virtual_dtor, -1, + /* DiagArray161 */ diag::ext_delete_void_ptr_operand, diag::warn_delete_incomplete, -1, + /* DiagArray162 */ diag::warn_delete_non_virtual_dtor, -1, + /* DiagArray164 */ diag::warn_O4_is_O3, diag::warn_access_decl_deprecated, diag::warn_deprecated_copy_operation, diag::warn_deprecated_redundant_constexpr_static_def, diag::warn_drv_deprecated_arg, diag::warn_drv_treating_input_as_cxx, diag::warn_option_invalid_ocl_version, diag::warn_vector_long_decl_spec_combination, -1, + /* DiagArray165 */ diag::warn_vector_mode_deprecated, -1, + /* DiagArray166 */ diag::warn_atl_uuid_deprecated, diag::warn_cstyle_param, diag::warn_deprecated, diag::warn_deprecated_fwdclass_message, diag::warn_deprecated_message, diag::warn_property_method_deprecated, -1, + /* DiagArray167 */ diag::warn_exception_spec_deprecated, -1, + /* DiagArray168 */ diag::warn_deprecated_def, diag::warn_unavailable_def, -1, + /* DiagArray169 */ diag::warn_increment_bool, -1, + /* DiagArray170 */ diag::warn_objc_isa_assign, diag::warn_objc_isa_use, -1, + /* DiagArray171 */ diag::warn_objc_pointer_masking, -1, + /* DiagArray172 */ diag::warn_objc_pointer_masking_performSelector, -1, + /* DiagArray173 */ diag::warn_deprecated_register, -1, + /* DiagArray174 */ diag::warn_deprecated_this_capture, -1, + /* DiagArray176 */ diag::warn_direct_ivar_access, -1, + /* DiagArray177 */ diag::pp_disabled_macro_expansion, -1, + /* DiagArray180 */ diag::warn_conflicting_param_modifiers, diag::warn_conflicting_ret_type_modifiers, -1, + /* DiagArray182 */ diag::warn_remainder_division_by_zero, -1, + /* DiagArray183 */ diag::warn_attribute_dll_redeclaration, -1, + /* DiagArray184 */ diag::warn_attribute_dllexport_explicit_instantiation_decl, -1, + /* DiagArray185 */ diag::warn_attribute_dllimport_static_field_definition, -1, + /* DiagArray186 */ diag::warn_doc_api_container_decl_mismatch, diag::warn_doc_block_command_duplicate, diag::warn_doc_block_command_empty_paragraph, diag::warn_doc_container_decl_mismatch, diag::warn_doc_function_method_decl_mismatch, diag::warn_doc_html_start_tag_expected_ident_or_greater, diag::warn_doc_html_start_tag_expected_quoted_string, diag::warn_doc_param_duplicate, diag::warn_doc_param_invalid_direction, diag::warn_doc_param_not_attached_to_a_function_decl, diag::warn_doc_param_not_found, diag::warn_doc_returns_attached_to_a_void_function, diag::warn_doc_returns_not_attached_to_a_function_decl, diag::warn_doc_tparam_duplicate, diag::warn_doc_tparam_not_attached_to_a_template_decl, diag::warn_doc_tparam_not_found, diag::warn_not_a_doxygen_trailing_member_comment, diag::warn_verbatim_block_end_without_start, -1, + /* DiagArray187 */ diag::warn_doc_deprecated_not_sync, -1, + /* DiagArray188 */ diag::warn_doc_html_end_forbidden, diag::warn_doc_html_end_unbalanced, diag::warn_doc_html_missing_end_tag, diag::warn_doc_html_start_end_mismatch, -1, + /* DiagArray189 */ diag::warn_doc_param_spaces_in_direction, -1, + /* DiagArray190 */ diag::warn_correct_comment_command_name, diag::warn_unknown_comment_command_name, -1, + /* DiagArray191 */ diag::ext_dollar_in_identifier, -1, + /* DiagArray192 */ diag::warn_impcast_double_promotion, -1, + /* DiagArray193 */ diag::ext_duplicate_declspec, diag::ext_warn_duplicate_declspec, diag::warn_attribute_address_multiple_identical_qualifiers, diag::warn_duplicate_declspec, -1, + /* DiagArray194 */ diag::warn_duplicate_enum_values, -1, + /* DiagArray195 */ diag::warn_method_param_declaration, -1, + /* DiagArray196 */ diag::warn_duplicate_method_decl, -1, + /* DiagArray197 */ diag::warn_duplicate_protocol_def, -1, + /* DiagArray198 */ diag::warn_dyn_class_memaccess, -1, + /* DiagArray199 */ diag::ext_dynamic_exception_spec, -1, + /* DiagArray201 */ diag::ext_embedded_directive, -1, + /* DiagArray202 */ diag::warn_empty_for_body, diag::warn_empty_if_body, diag::warn_empty_range_based_for_body, diag::warn_empty_switch_body, diag::warn_empty_while_body, -1, + /* DiagArray203 */ diag::ext_decomp_decl_empty, -1, + /* DiagArray204 */ diag::warn_empty_init_statement, -1, + /* DiagArray205 */ diag::ext_empty_translation_unit, -1, + /* DiagArray206 */ diag::warn_incomplete_encoded_type, -1, + /* DiagArray208 */ diag::warn_comparison_of_mixed_enum_types, -1, + /* DiagArray209 */ diag::warn_comparison_of_mixed_enum_types_switch, -1, + /* DiagArray210 */ diag::warn_impcast_different_enum_types, -1, + /* DiagArray211 */ diag::ext_enum_too_large, diag::ext_enumerator_increment_too_large, -1, + /* DiagArray212 */ diag::warn_cdtor_function_try_handler_mem_expr, diag::warn_exception_caught_by_earlier_handler, diag::warn_throw_in_noexcept_func, -1, + /* DiagArray213 */ diag::warn_exit_time_destructor, -1, + /* DiagArray214 */ diag::warn_defined_in_function_type_macro, diag::warn_defined_in_object_type_macro, -1, + /* DiagArray215 */ diag::warn_drv_experimental_isel_incomplete, diag::warn_drv_experimental_isel_incomplete_opt, -1, + /* DiagArray216 */ diag::warn_direct_initialize_call, diag::warn_direct_super_initialize_call, -1, + /* DiagArray217 */ diag::warn_arc_strong_pointer_objc_pointer, -1, + /* DiagArray218 */ diag::warn_zero_size_struct_union_in_extern_c, -1, + /* DiagArray219 */ diag::warn_extern_init, -1, + /* DiagArray220 */ diag::warn_arm_interrupt_calling_convention, -1, + /* DiagArray221 */ diag::warn_namespace_member_extra_qualification, -1, + /* DiagArray222 */ diag::ext_extra_semi, diag::warn_extra_semi_after_mem_fn_def, -1, + /* DiagArray223 */ diag::warn_null_statement, -1, + /* DiagArray224 */ diag::ext_pp_extra_tokens_at_eol, diag::warn_omp_extra_tokens_at_eol, -1, + /* DiagArray225 */ diag::warn_drv_invoking_fallback, -1, + /* DiagArray226 */ diag::ext_clang_c_enum_fixed_underlying_type, -1, + /* DiagArray227 */ diag::warn_flag_enum_constant_out_of_range, -1, + /* DiagArray228 */ diag::ext_flexible_array_in_array, diag::ext_flexible_array_in_struct, -1, + /* DiagArray229 */ diag::warn_impcast_float_integer, -1, + /* DiagArray230 */ diag::warn_floatingpoint_eq, -1, + /* DiagArray231 */ diag::warn_impcast_float_to_integer, diag::warn_impcast_float_to_integer_out_of_range, -1, + /* DiagArray232 */ diag::warn_impcast_float_to_integer_zero, -1, + /* DiagArray233 */ diag::warn_redundant_loop_iteration, diag::warn_variables_not_in_loop_body, -1, + /* DiagArray234 */ diag::warn_format_P_no_precision, diag::warn_format_argument_needs_cast, diag::warn_format_conversion_argument_type_mismatch, diag::warn_format_invalid_annotation, diag::warn_format_invalid_positional_specifier, diag::warn_format_mix_positional_nonpositional_args, diag::warn_format_nonsensical_length, diag::warn_format_string_is_wide_literal, diag::warn_format_zero_positional_specifier, diag::warn_missing_format_string, diag::warn_printf_ObjCflags_without_ObjCConversion, diag::warn_printf_asterisk_missing_arg, diag::warn_printf_asterisk_wrong_type, diag::warn_printf_empty_objc_flag, diag::warn_printf_format_string_contains_null_char, diag::warn_printf_format_string_not_null_terminated, diag::warn_printf_ignored_flag, diag::warn_printf_incomplete_specifier, diag::warn_printf_insufficient_data_args, diag::warn_printf_invalid_objc_flag, diag::warn_printf_nonsensical_flag, diag::warn_printf_nonsensical_optional_amount, diag::warn_printf_positional_arg_exceeds_data_args, diag::warn_scanf_nonzero_width, diag::warn_scanf_scanlist_incomplete, -1, + /* DiagArray235 */ diag::warn_printf_data_arg_not_used, -1, + /* DiagArray236 */ diag::warn_format_invalid_conversion, -1, + /* DiagArray237 */ diag::warn_format_non_standard, diag::warn_format_non_standard_conversion_spec, diag::warn_format_non_standard_positional_arg, -1, + /* DiagArray238 */ diag::warn_format_nonliteral, -1, + /* DiagArray239 */ diag::warn_format_argument_needs_cast_pedantic, diag::warn_format_conversion_argument_type_mismatch_pedantic, -1, + /* DiagArray240 */ diag::warn_format_nonliteral_noargs, -1, + /* DiagArray242 */ diag::warn_empty_format_string, -1, + /* DiagArray244 */ diag::ext_four_char_character_literal, -1, + /* DiagArray245 */ diag::warn_fe_backend_frame_larger_than, diag::warn_fe_frame_larger_than, -1, + /* DiagArray246 */ diag::warn_framework_include_private_from_public, -1, + /* DiagArray247 */ diag::warn_function_def_in_objc_container, -1, + /* DiagArray248 */ diag::warn_dispatch_body_ignored, diag::warn_multiversion_duplicate_entries, -1, + /* DiagArray250 */ diag::ext_clang_diagnose_if, diag::ext_clang_enable_if, diag::ext_warn_gnu_final, diag::warn_attribute_on_function_definition, diag::warn_break_binds_to_switch, diag::warn_cleanup_ext, diag::warn_gcc_attribute_location, diag::warn_gcc_ignores_type_attr, diag::warn_gcc_variable_decl_in_for_loop, diag::warn_loop_ctrl_binds_to_inner, -1, + /* DiagArray251 */ diag::warn_global_constructor, diag::warn_global_destructor, -1, + /* DiagArray253 */ diag::ext_alignof_expr, -1, + /* DiagArray254 */ diag::ext_gnu_anonymous_struct, -1, + /* DiagArray255 */ diag::ext_array_init_parens, -1, + /* DiagArray256 */ diag::ext_auto_type, -1, + /* DiagArray257 */ diag::ext_binary_literal, -1, + /* DiagArray258 */ diag::ext_gnu_case_range, -1, + /* DiagArray259 */ diag::ext_integer_complex, -1, + /* DiagArray260 */ diag::ext_array_init_copy, -1, + /* DiagArray261 */ diag::ext_gnu_conditional_expr, -1, + /* DiagArray262 */ diag::ext_gnu_array_range, diag::ext_gnu_missing_equal_designator, diag::ext_gnu_old_style_field_designator, -1, + /* DiagArray263 */ diag::ext_gnu_empty_initializer, -1, + /* DiagArray264 */ diag::ext_empty_struct_union, diag::ext_flexible_array_empty_aggregate_gnu, diag::ext_no_named_members_in_struct_union, -1, + /* DiagArray265 */ diag::ext_flexible_array_init, -1, + /* DiagArray266 */ diag::ext_flexible_array_union_gnu, -1, + /* DiagArray267 */ diag::ext_expr_not_ice, diag::ext_in_class_initializer_non_constant, diag::ext_vla_folded_to_constant, -1, + /* DiagArray268 */ diag::ext_imaginary_constant, -1, + /* DiagArray269 */ diag::ext_pp_include_next_directive, -1, + /* DiagArray270 */ diag::ext_gnu_address_of_label, diag::ext_gnu_indirect_goto, -1, + /* DiagArray271 */ diag::ext_forward_ref_enum_def, -1, + /* DiagArray272 */ diag::ext_gnu_statement_expr, -1, + /* DiagArray273 */ diag::ext_in_class_initializer_float_type, -1, + /* DiagArray274 */ diag::ext_string_literal_operator_template, -1, + /* DiagArray275 */ diag::ext_typecheck_cast_to_union, -1, + /* DiagArray276 */ diag::ext_variable_sized_type_in_struct, -1, + /* DiagArray277 */ diag::ext_pp_line_zero, -1, + /* DiagArray278 */ diag::ext_missing_varargs_arg, diag::ext_paste_comma, -1, + /* DiagArray279 */ diag::warn_header_guard, -1, + /* DiagArray280 */ diag::warn_using_directive_in_header, -1, + /* DiagArray281 */ diag::warn_condition_is_idiomatic_assignment, -1, + /* DiagArray282 */ diag::ext_cannot_use_trivial_abi, diag::warn_alias_to_weak_alias, diag::warn_alias_with_section, diag::warn_attr_abi_tag_namespace, diag::warn_attribute_after_definition_ignored, diag::warn_attribute_iboutlet, diag::warn_attribute_ignored, diag::warn_attribute_ignored_for_field_of_type, diag::warn_attribute_ignored_on_inline, diag::warn_attribute_invalid_on_definition, diag::warn_attribute_no_decl, diag::warn_attribute_nonnull_no_pointers, diag::warn_attribute_nonnull_parm_no_args, diag::warn_attribute_not_on_decl, diag::warn_attribute_pointer_or_reference_only, diag::warn_attribute_pointers_only, diag::warn_attribute_precede_definition, diag::warn_attribute_return_pointers_only, diag::warn_attribute_return_pointers_refs_only, diag::warn_attribute_sentinel_named_arguments, diag::warn_attribute_sentinel_not_variadic, diag::warn_attribute_type_not_supported, diag::warn_attribute_unknown_visibility, diag::warn_attribute_void_function_method, diag::warn_attribute_weak_on_field, diag::warn_attribute_weak_on_local, diag::warn_attribute_wrong_decl_type, diag::warn_attribute_wrong_decl_type_str, diag::warn_block_literal_attributes_on_omitted_return_type, diag::warn_cconv_ignored, diag::warn_cconv_structors, diag::warn_cconv_varargs, diag::warn_cxx11_gnu_attribute_on_type, diag::warn_declspec_attribute_ignored, diag::warn_deprecated_anonymous_namespace, diag::warn_dllimport_dropped_from_inline_function, diag::warn_duplicate_attribute, diag::warn_duplicate_attribute_exact, diag::warn_gc_attribute_weak_on_local, diag::warn_gnu_inline_attribute_requires_inline, diag::warn_ignored_ms_inheritance, diag::warn_ignored_objc_externally_retained, diag::warn_internal_linkage_local_storage, diag::warn_interrupt_attribute_invalid, diag::warn_microsoft_qualifiers_ignored, diag::warn_mmap_unknown_attribute, diag::warn_nocf_check_attribute_ignored, diag::warn_noderef_on_non_pointer_or_array, diag::warn_ns_attribute_wrong_parameter_type, diag::warn_ns_attribute_wrong_return_type, diag::warn_opencl_attr_deprecated_ignored, diag::warn_riscv_repeated_interrupt_attribute, diag::warn_transparent_union_attribute_field_size_align, diag::warn_transparent_union_attribute_floating, diag::warn_transparent_union_attribute_not_definition, diag::warn_transparent_union_attribute_zero_fields, diag::warn_type_attribute_wrong_type, diag::warn_unhandled_ms_attribute_ignored, diag::warn_unsupported_target_attribute, diag::warn_wrong_clang_attr_namespace, -1, + /* DiagArray283 */ diag::warn_drv_unsupported_opt_for_target, diag::warn_ignored_gcc_optimization, -1, + /* DiagArray284 */ diag::warn_pragma_intrinsic_builtin, -1, + /* DiagArray285 */ diag::warn_pragma_optimize, -1, + /* DiagArray286 */ diag::warn_pragma_align_expected_equal, diag::warn_pragma_align_invalid_option, diag::warn_pragma_begin_end_mismatch, diag::warn_pragma_comment_ignored, diag::warn_pragma_debug_missing_argument, diag::warn_pragma_debug_unexpected_command, diag::warn_pragma_expected_action_or_r_paren, diag::warn_pragma_expected_colon, diag::warn_pragma_expected_colon_r_paren, diag::warn_pragma_expected_comma, diag::warn_pragma_expected_identifier, diag::warn_pragma_expected_init_seg, diag::warn_pragma_expected_integer, diag::warn_pragma_expected_lparen, diag::warn_pragma_expected_non_wide_string, diag::warn_pragma_expected_predicate, diag::warn_pragma_expected_punc, diag::warn_pragma_expected_rparen, diag::warn_pragma_expected_section_label_or_name, diag::warn_pragma_expected_section_name, diag::warn_pragma_expected_section_push_pop_or_name, diag::warn_pragma_expected_string, diag::warn_pragma_extra_tokens_at_eol, diag::warn_pragma_force_cuda_host_device_bad_arg, diag::warn_pragma_init_seg_unsupported_target, diag::warn_pragma_invalid_action, diag::warn_pragma_invalid_argument, diag::warn_pragma_invalid_specific_action, diag::warn_pragma_missing_argument, diag::warn_pragma_ms_struct, diag::warn_pragma_options_align_reset_failed, diag::warn_pragma_options_expected_align, diag::warn_pragma_pack_invalid_alignment, diag::warn_pragma_pack_malformed, diag::warn_pragma_pop_failed, diag::warn_pragma_pop_macro_no_push, diag::warn_pragma_unknown_extension, diag::warn_pragma_unsupported_action, diag::warn_pragma_unsupported_extension, diag::warn_pragma_unused_expected_var, diag::warn_pragma_unused_expected_var_arg, diag::warn_pragma_unused_undeclared_var, -1, + /* DiagArray287 */ diag::warn_arc_lifetime_result_type, diag::warn_block_literal_qualifiers_on_omitted_return_type, diag::warn_qual_return_type, diag::warn_typecheck_function_qualifiers_ignored, diag::warn_typecheck_reference_qualifiers, -1, + /* DiagArray289 */ diag::warn_auto_implicit_atomic_property, diag::warn_implicit_atomic_property, -1, + /* DiagArray290 */ diag::warn_impcast_floating_point_to_bool, -1, + /* DiagArray291 */ diag::ext_implicit_exception_spec_mismatch, -1, + /* DiagArray292 */ diag::warn_fallthrough_attr_unreachable, diag::warn_unannotated_fallthrough, -1, + /* DiagArray293 */ diag::warn_unannotated_fallthrough_per_function, -1, + /* DiagArray294 */ diag::warn_impcast_fixed_point_range, -1, + /* DiagArray295 */ diag::warn_impcast_float_precision, diag::warn_impcast_float_result_precision, -1, + /* DiagArray296 */ diag::ext_implicit_function_decl, diag::ext_implicit_lib_function_decl, diag::warn_builtin_unknown, diag::warn_implicit_function_decl, -1, + /* DiagArray297 */ diag::ext_missing_type_specifier, -1, + /* DiagArray298 */ diag::warn_impcast_high_order_zero_bits, diag::warn_impcast_integer_precision, -1, + /* DiagArray299 */ diag::warn_implicitly_retains_self, -1, + /* DiagArray300 */ diag::ext_integer_literal_too_large_for_signed, -1, + /* DiagArray302 */ diag::ext_pp_import_directive, -1, + /* DiagArray303 */ diag::warn_inaccessible_base_class, -1, + /* DiagArray304 */ diag::pp_include_next_absolute_path, -1, + /* DiagArray305 */ diag::pp_include_next_in_primary, -1, + /* DiagArray306 */ diag::warn_deep_exception_specs_differ, diag::warn_incompatible_exception_specs, -1, + /* DiagArray307 */ diag::ext_typecheck_convert_incompatible_function_pointer, -1, + /* DiagArray308 */ diag::warn_redecl_library_builtin, -1, + /* DiagArray309 */ diag::warn_cxx_ms_struct, diag::warn_npot_ms_struct, -1, + /* DiagArray310 */ diag::ext_typecheck_convert_incompatible_pointer, -1, + /* DiagArray311 */ diag::ext_nested_pointer_qualifier_mismatch, diag::ext_typecheck_convert_discards_qualifiers, -1, + /* DiagArray312 */ diag::warn_property_types_are_incompatible, -1, + /* DiagArray313 */ diag::warn_incompatible_sysroot, -1, + /* DiagArray314 */ diag::warn_mmap_incomplete_framework_module_declaration, -1, + /* DiagArray315 */ diag::warn_undef_method_impl, -1, + /* DiagArray317 */ diag::warn_missing_submodule, diag::warn_mmap_umbrella_dir_not_found, diag::warn_uncovered_module_header, -1, + /* DiagArray318 */ diag::warn_redeclaration_without_attribute_prev_attribute_ignored, diag::warn_redeclaration_without_import_attribute, -1, + /* DiagArray319 */ diag::warn_destructor_marked_not_override_overriding, -1, + /* DiagArray320 */ diag::warn_function_marked_not_override_overriding, -1, + /* DiagArray321 */ diag::ext_increment_bool, -1, + /* DiagArray322 */ diag::warn_infinite_recursive_function, -1, + /* DiagArray324 */ diag::warn_initializer_overrides, diag::warn_subobject_initializer_overrides, -1, + /* DiagArray325 */ diag::ext_out_of_line_qualified_id_type_names_constructor, -1, + /* DiagArray327 */ diag::warn_fe_inline_asm, -1, + /* DiagArray328 */ diag::ext_operator_new_delete_declared_inline, -1, + /* DiagArray329 */ diag::warn_explicit_instantiation_after_specialization, -1, + /* DiagArray330 */ diag::ext_typecheck_convert_int_pointer, diag::ext_typecheck_convert_pointer_int, -1, + /* DiagArray332 */ diag::warn_int_to_pointer_cast, -1, + /* DiagArray333 */ diag::warn_int_to_void_pointer_cast, -1, + /* DiagArray334 */ diag::warn_integer_constant_overflow, -1, + /* DiagArray335 */ diag::warn_drv_msp430_hwmult_mismatch, diag::warn_drv_msp430_hwmult_no_device, diag::warn_drv_msp430_hwmult_unsupported, diag::warn_drv_object_size_disabled_O0, diag::warn_drv_optimization_value, -1, + /* DiagArray336 */ diag::ext_constexpr_function_never_constant_expr, -1, + /* DiagArray337 */ diag::warn_iboutlet_object_type, diag::warn_iboutletcollection_property_assign, -1, + /* DiagArray338 */ diag::warn_invalid_initializer_from_system_header, -1, + /* DiagArray339 */ diag::warn_invalid_ios_deployment_target, -1, + /* DiagArray340 */ diag::warn_falloff_noreturn_function, diag::warn_noreturn_function_has_return_expr, -1, + /* DiagArray341 */ diag::ext_offsetof_non_pod_type, diag::ext_offsetof_non_standardlayout_type, -1, + /* DiagArray342 */ diag::warn_drv_ps4_sdk_dir, diag::warn_drv_unable_to_find_directory_expected, -1, + /* DiagArray343 */ diag::ext_partial_spec_not_more_specialized_than_primary, -1, + /* DiagArray345 */ diag::ext_empty_character, diag::ext_unterminated_char_or_string, -1, + /* DiagArray346 */ diag::warn_bad_character_encoding, diag::warn_bad_string_encoding, -1, + /* DiagArray347 */ diag::ext_pp_bad_paste_ms, -1, + /* DiagArray348 */ diag::warn_jump_out_of_seh_finally, -1, + /* DiagArray349 */ diag::ext_keyword_as_ident, -1, + /* DiagArray350 */ diag::warn_pp_macro_hides_keyword, -1, + /* DiagArray351 */ diag::ext_param_promoted_not_compatible_with_prototype, -1, + /* DiagArray352 */ diag::ext_token_used, -1, + /* DiagArray353 */ diag::warn_parameter_size, diag::warn_return_value_size, -1, + /* DiagArray355 */ diag::warn_impcast_literal_float_to_integer, diag::warn_impcast_literal_float_to_integer_out_of_range, -1, + /* DiagArray356 */ diag::warn_float_overflow, diag::warn_float_underflow, -1, + /* DiagArray357 */ diag::ext_template_arg_local_type, -1, + /* DiagArray358 */ diag::warn_logical_not_on_lhs_of_check, -1, + /* DiagArray359 */ diag::warn_logical_and_in_logical_or, -1, + /* DiagArray360 */ diag::ext_c99_longlong, -1, + /* DiagArray362 */ diag::ext_pp_macro_redef, -1, + /* DiagArray363 */ diag::ext_main_used, diag::ext_noreturn_main, diag::ext_variadic_main, diag::warn_main_one_arg, diag::warn_main_redefined, diag::warn_main_returns_bool_literal, diag::warn_static_main, -1, + /* DiagArray364 */ diag::ext_main_returns_nonint, -1, + /* DiagArray365 */ diag::warn_has_warning_invalid_option, -1, + /* DiagArray366 */ diag::ext_many_braces_around_scalar_init, -1, + /* DiagArray367 */ diag::warn_max_unsigned_zero, -1, + /* DiagArray368 */ diag::warn_suspicious_sizeof_memset, -1, + /* DiagArray369 */ diag::warn_memsize_comparison, -1, + /* DiagArray370 */ diag::warn_non_contravariant_param_types, diag::warn_non_covariant_ret_types, -1, + /* DiagArray372 */ diag::ext_anonymous_record_with_type, diag::ext_ms_anonymous_record, -1, + /* DiagArray373 */ diag::ext_ms_cast_fn_obj, diag::ext_ms_impcast_fn_obj, -1, + /* DiagArray374 */ diag::ext_charize_microsoft, -1, + /* DiagArray375 */ diag::ext_comment_paste_microsoft, -1, + /* DiagArray376 */ diag::ext_default_init_const, -1, + /* DiagArray377 */ diag::ext_pp_operator_used_as_macro_name, -1, + /* DiagArray378 */ diag::ext_param_default_argument_redefinition, -1, + /* DiagArray379 */ diag::ext_ctrl_z_eof_microsoft, -1, + /* DiagArray380 */ diag::ext_ms_forward_ref_enum, -1, + /* DiagArray381 */ diag::ext_enumerator_too_large, -1, + /* DiagArray382 */ diag::ext_ellipsis_exception_spec, diag::ext_incomplete_in_exception_spec, diag::ext_mismatched_exception_spec, diag::ext_mismatched_exception_spec_explicit_instantiation, diag::ext_ms_missing_exception_specification, diag::ext_override_exception_spec, -1, + /* DiagArray383 */ diag::warn_microsoft_dependent_exists, -1, + /* DiagArray384 */ diag::ext_ms_explicit_constructor_call, -1, + /* DiagArray385 */ diag::warn_member_extra_qualification, -1, + /* DiagArray386 */ diag::ext_ms_c_enum_fixed_underlying_type, -1, + /* DiagArray387 */ diag::ext_flexible_array_empty_aggregate_ms, diag::ext_flexible_array_union_ms, -1, + /* DiagArray388 */ diag::ext_goto_into_protected_scope, -1, + /* DiagArray389 */ diag::ext_ms_ambiguous_direct_base, -1, + /* DiagArray390 */ diag::ext_pp_include_search_ms, -1, + /* DiagArray391 */ diag::ext_mutable_reference, -1, + /* DiagArray392 */ diag::ext_pure_function_definition, -1, + /* DiagArray393 */ diag::ext_static_non_static, -1, + /* DiagArray394 */ diag::ext_ms_sealed_keyword, -1, + /* DiagArray395 */ diag::ext_explicit_instantiation_duplicate, diag::ext_found_via_dependent_bases_lookup, diag::ext_ms_delayed_template_argument, diag::ext_ms_deref_template_argument, diag::ext_ms_template_spec_redecl_out_of_scope, diag::ext_ms_template_type_arg_missing_typename, diag::ext_static_out_of_line, diag::ext_undeclared_unqual_id_with_dependent_base, -1, + /* DiagArray396 */ diag::ext_union_member_of_reference_type, -1, + /* DiagArray397 */ diag::ext_friend_tag_redecl_outside_namespace, -1, + /* DiagArray398 */ diag::ext_ms_using_declaration_inaccessible, -1, + /* DiagArray399 */ diag::ext_pseudo_dtor_on_void, -1, + /* DiagArray400 */ diag::warn_mismatched_delete_new, -1, + /* DiagArray401 */ diag::warn_conflicting_param_types, -1, + /* DiagArray402 */ diag::warn_conflicting_ret_types, -1, + /* DiagArray403 */ diag::warn_struct_class_previous_tag_mismatch, diag::warn_struct_class_tag_mismatch, -1, + /* DiagArray404 */ diag::warn_missing_braces, -1, + /* DiagArray405 */ diag::ext_no_declarators, diag::ext_standalone_specifier, diag::ext_typedef_without_a_name, diag::warn_standalone_specifier, -1, + /* DiagArray406 */ diag::ext_missing_exception_specification, -1, + /* DiagArray407 */ diag::warn_missing_field_initializers, -1, + /* DiagArray410 */ diag::warn_missing_method_return_type, -1, + /* DiagArray411 */ diag::warn_overriding_method_missing_noescape, -1, + /* DiagArray412 */ diag::warn_suggest_noreturn_block, diag::warn_suggest_noreturn_function, -1, + /* DiagArray413 */ diag::warn_cconv_knr, -1, + /* DiagArray414 */ diag::warn_missing_prototype, -1, + /* DiagArray415 */ diag::warn_missing_selector_name, -1, + /* DiagArray416 */ diag::warn_missing_sysroot, -1, + /* DiagArray417 */ diag::warn_missing_variable_declarations, -1, + /* DiagArray418 */ diag::remark_module_build, diag::remark_module_build_done, diag::remark_module_lock_failure, diag::remark_module_lock_timeout, -1, + /* DiagArray419 */ diag::warn_module_conflict, diag::warn_module_system_bit_conflict, -1, + /* DiagArray420 */ diag::warn_module_config_mismatch, -1, + /* DiagArray421 */ diag::warn_duplicate_module_file_extension, -1, + /* DiagArray422 */ diag::ext_module_import_in_extern_c, -1, + /* DiagArray423 */ diag::ext_equivalent_internal_linkage_decl_in_modules, -1, + /* DiagArray424 */ diag::ext_module_import_not_at_top_level_noop, -1, + /* DiagArray428 */ diag::warn_drv_msvc_not_found, -1, + /* DiagArray429 */ diag::ext_multichar_character_literal, -1, + /* DiagArray430 */ diag::warn_vbase_moved_multiple_times, -1, + /* DiagArray432 */ diag::ext_anonymous_record_with_anonymous_type, -1, + /* DiagArray434 */ diag::warn_operator_new_returns_null, -1, + /* DiagArray435 */ diag::ext_no_newline_eof, diag::warn_no_newline_eof, -1, + /* DiagArray436 */ diag::warn_dereference_of_noderef_type, diag::warn_dereference_of_noderef_type_no_decl, diag::warn_noderef_to_dereferenceable_pointer, -1, + /* DiagArray439 */ diag::warn_non_literal_null_pointer, -1, + /* DiagArray440 */ diag::warn_non_modular_include_in_framework_module, -1, + /* DiagArray441 */ diag::warn_non_modular_include_in_module, -1, + /* DiagArray442 */ diag::warn_cannot_pass_non_pod_arg_to_vararg, diag::warn_non_pod_vararg_with_format_string, diag::warn_second_parameter_to_va_arg_not_pod, diag::warn_second_parameter_to_va_arg_ownership_qualified, -1, + /* DiagArray443 */ diag::warn_non_virtual_dtor, -1, + /* DiagArray444 */ diag::warn_null_arg, diag::warn_null_ret, -1, + /* DiagArray446 */ diag::pp_nonportable_path, -1, + /* DiagArray447 */ diag::pp_nonportable_system_path, -1, + /* DiagArray448 */ diag::warn_neon_vector_initializer_non_portable, -1, + /* DiagArray449 */ diag::warn_cstruct_memaccess, -1, + /* DiagArray450 */ diag::warn_nsconsumed_attribute_mismatch, -1, + /* DiagArray451 */ diag::warn_nsreturns_retained_attribute_mismatch, -1, + /* DiagArray452 */ diag::warn_null_in_arithmetic_operation, diag::warn_null_in_comparison_operation, -1, + /* DiagArray453 */ diag::null_in_char_or_string, diag::null_in_file, -1, + /* DiagArray454 */ diag::warn_impcast_null_pointer_to_integer, -1, + /* DiagArray455 */ diag::warn_binding_null_to_reference, diag::warn_indirection_through_null, -1, + /* DiagArray456 */ diag::warn_gnu_null_ptr_arith, diag::warn_pointer_arith_null_ptr, -1, + /* DiagArray457 */ diag::warn_conflicting_nullability_attr_overriding_param_types, diag::warn_conflicting_nullability_attr_overriding_ret_types, diag::warn_mismatched_nullability_attr, diag::warn_null_resettable_setter, diag::warn_nullability_duplicate, -1, + /* DiagArray458 */ diag::warn_nullability_missing, -1, + /* DiagArray459 */ diag::warn_nullability_missing_array, -1, + /* DiagArray460 */ diag::warn_nullability_declspec, -1, + /* DiagArray461 */ diag::ext_nullability, -1, + /* DiagArray462 */ diag::warn_nullability_inferred_on_nested_type, -1, + /* DiagArray463 */ diag::warn_nullability_lost, -1, + /* DiagArray464 */ diag::warn_autosynthesis_property_ivar_match, -1, + /* DiagArray465 */ diag::warn_objc_circular_container, -1, + /* DiagArray467 */ diag::warn_objc_designated_init_missing_super_call, diag::warn_objc_designated_init_non_designated_init_call, diag::warn_objc_designated_init_non_super_designated_init_call, diag::warn_objc_implementation_missing_designated_init_override, diag::warn_objc_secondary_init_missing_init_call, diag::warn_objc_secondary_init_super_init_call, -1, + /* DiagArray468 */ diag::warn_superclass_variable_sized_type_not_at_end, diag::warn_variable_sized_ivar_visibility, -1, + /* DiagArray469 */ diag::warn_forward_class_redefinition, -1, + /* DiagArray470 */ diag::warn_ivars_in_interface, -1, + /* DiagArray471 */ diag::warn_objc_literal_comparison, -1, + /* DiagArray472 */ diag::warn_impcast_objective_c_literal_to_bool, diag::warn_objc_collection_literal_element, -1, + /* DiagArray473 */ diag::warn_pp_objc_macro_redef_ignored, -1, + /* DiagArray474 */ diag::warn_messaging_unqualified_id, -1, + /* DiagArray475 */ diag::warn_class_method_not_found, diag::warn_class_method_not_found_with_typo, diag::warn_inst_method_not_found, diag::warn_instance_method_not_found_with_typo, diag::warn_instance_method_on_class_found, diag::warn_root_inst_method_not_found, -1, + /* DiagArray476 */ diag::warn_missing_explicit_synthesis, -1, + /* DiagArray477 */ diag::warn_objc_missing_super_call, -1, + /* DiagArray478 */ diag::warn_multiple_method_decl, -1, + /* DiagArray479 */ diag::warn_objc_property_retain_of_block, -1, + /* DiagArray480 */ diag::warn_objc_pointer_cxx_catch_fragile, -1, + /* DiagArray481 */ diag::warn_objc_property_assign_on_object, -1, + /* DiagArray482 */ diag::warn_impl_required_for_class_property, diag::warn_impl_required_in_category_for_class_property, diag::warn_setter_getter_impl_required, diag::warn_setter_getter_impl_required_in_category, -1, + /* DiagArray483 */ diag::warn_property_implicitly_mismatched, -1, + /* DiagArray484 */ diag::warn_cocoa_naming_owned_rule, -1, + /* DiagArray485 */ diag::warn_objc_property_default_assign_on_object, diag::warn_objc_property_no_assignment_attribute, -1, + /* DiagArray486 */ diag::warn_autosynthesis_property_in_superclass, diag::warn_no_autosynthesis_property, diag::warn_no_autosynthesis_shared_ivar_property, -1, + /* DiagArray487 */ diag::warn_category_method_impl_match, -1, + /* DiagArray488 */ diag::warn_auto_synthesizing_protocol_property, -1, + /* DiagArray489 */ diag::warn_objc_redundant_qualified_class_type, -1, + /* DiagArray490 */ diag::warn_objc_readonly_property_has_setter, -1, + /* DiagArray492 */ diag::warn_objc_redundant_literal_use, -1, + /* DiagArray493 */ diag::warn_objc_root_class_missing, -1, + /* DiagArray494 */ diag::warn_objc_string_literal_comparison, -1, + /* DiagArray495 */ diag::warn_concatenated_nsarray_literal, -1, + /* DiagArray496 */ diag::warn_objc_unsafe_perform_selector, -1, + /* DiagArray497 */ diag::warn_odr_tag_type_inconsistent, -1, + /* DiagArray498 */ diag::warn_old_style_cast, -1, + /* DiagArray500 */ diag::ext_opencl_ext_vector_type_rgba_selector, -1, + /* DiagArray501 */ diag::warn_omp_alignment_not_power_of_two, diag::warn_omp_linear_step_zero, -1, + /* DiagArray502 */ diag::ext_omp_loop_not_canonical_init, diag::warn_omp_loop_64_bit_var, -1, + /* DiagArray503 */ diag::warn_drv_omp_offload_target_duplicate, diag::warn_drv_omp_offload_target_missingbcruntime, diag::warn_omp_non_trivial_type_mapped, diag::warn_omp_not_in_target_context, -1, + /* DiagArray504 */ diag::warn_drv_fine_grained_bitfield_accesses_ignored, diag::warn_drv_moutline_unsupported_opt, diag::warn_drv_ps4_force_pic, diag::warn_drv_unsupported_longcalls, diag::warn_drv_unsupported_pic_with_mabicalls, diag::warn_drv_vectorize_needs_hvx, -1, + /* DiagArray505 */ diag::ext_typecheck_ordered_comparison_of_function_pointers, -1, + /* DiagArray506 */ diag::ext_out_of_line_declaration, -1, + /* DiagArray507 */ diag::ext_use_out_of_scope_declaration, -1, + /* DiagArray508 */ diag::warn_overaligned_type, -1, + /* DiagArray510 */ diag::ext_string_too_long, -1, + /* DiagArray511 */ diag::warn_overloaded_shift_in_comparison, -1, + /* DiagArray512 */ diag::warn_overloaded_virtual, -1, + /* DiagArray514 */ diag::warn_fe_override_module, -1, + /* DiagArray515 */ diag::warn_conflicting_overriding_param_modifiers, diag::warn_conflicting_overriding_param_types, diag::warn_conflicting_overriding_ret_type_modifiers, diag::warn_conflicting_overriding_ret_types, diag::warn_conflicting_overriding_variadic, diag::warn_non_contravariant_overriding_param_types, diag::warn_non_covariant_overriding_ret_types, -1, + /* DiagArray516 */ diag::warn_drv_overriding_flag_option, -1, + /* DiagArray517 */ diag::warn_unnecessary_packed, -1, + /* DiagArray518 */ diag::warn_padded_struct_anon_field, diag::warn_padded_struct_field, diag::warn_padded_struct_size, -1, + /* DiagArray519 */ diag::warn_condition_is_assignment, diag::warn_precedence_bitwise_rel, diag::warn_precedence_conditional, -1, + /* DiagArray520 */ diag::warn_equality_with_extra_parens, -1, + /* DiagArray522 */ diag::remark_fe_backend_optimization_remark, -1, + /* DiagArray523 */ diag::remark_fe_backend_optimization_remark_analysis, diag::remark_fe_backend_optimization_remark_analysis_aliasing, diag::remark_fe_backend_optimization_remark_analysis_fpcommute, -1, + /* DiagArray524 */ diag::warn_fe_backend_optimization_failure, -1, + /* DiagArray525 */ diag::remark_fe_backend_optimization_remark_missed, -1, + /* DiagArray526 */ diag::warn_module_uses_date_time, -1, + /* DiagArray527 */ diag::ext_aggregate_init_not_constant, diag::ext_anonymous_record_with_type, diag::ext_anonymous_struct_union_qualified, diag::ext_array_size_conversion, diag::ext_auto_new_list_init, diag::ext_c99_array_usage, diag::ext_c99_compound_literal, diag::ext_c99_flexible_array_member, diag::ext_c99_variable_decl_in_for_loop, diag::ext_cast_fn_obj, diag::ext_clang_diagnose_if, diag::ext_clang_enable_if, diag::ext_cxx11_enum_fixed_underlying_type, diag::ext_cxx14_attr, diag::ext_cxx17_attr, diag::ext_designated_init, diag::ext_duplicate_declspec, diag::ext_ellipsis_exception_spec, diag::ext_empty_fnmacro_arg, diag::ext_enum_value_not_int, diag::ext_enumerator_list_comma_c, diag::ext_enumerator_list_comma_cxx, diag::ext_explicit_instantiation_without_qualified_id, diag::ext_extern_template, diag::ext_extra_semi, diag::ext_forward_ref_enum, diag::ext_freestanding_complex, diag::ext_gnu_array_range, diag::ext_gnu_ptr_func_arith, diag::ext_gnu_subscript_void_type, diag::ext_gnu_void_ptr, diag::ext_hex_constant_invalid, diag::ext_hex_literal_invalid, diag::ext_ident_list_in_param, diag::ext_integer_complement_complex, diag::ext_integer_increment_complex, diag::ext_internal_in_extern_inline_quiet, diag::ext_invalid_sign_spec, diag::ext_line_comment, diag::ext_main_used, diag::ext_multi_line_line_comment, diag::ext_named_variadic_macro, diag::ext_no_newline_eof, diag::ext_nonstandard_escape, diag::ext_ns_enum_attribute, diag::ext_param_not_declared, diag::ext_pointer_to_const_ref_member_on_rvalue, diag::ext_pp_bad_vaargs_use, diag::ext_pp_comma_expr, diag::ext_pp_ident_directive, diag::ext_pp_line_too_big, diag::ext_pp_warning_directive, diag::ext_return_has_void_expr, diag::ext_rvalue_to_reference_access_ctor, diag::ext_rvalue_to_reference_temp_copy_no_viable, diag::ext_sizeof_alignof_function_type, diag::ext_sizeof_alignof_void_type, diag::ext_subscript_non_lvalue, diag::ext_thread_before, diag::ext_typecheck_addrof_void, diag::ext_typecheck_cast_nonscalar, diag::ext_typecheck_comparison_of_fptr_to_void, diag::ext_typecheck_cond_one_void, diag::ext_typecheck_convert_pointer_void_func, diag::ext_typecheck_ordered_comparison_of_pointer_and_zero, diag::ext_variadic_macro, diag::warn_defined_in_function_type_macro, diag::warn_format_conversion_argument_type_mismatch_pedantic, diag::warn_illegal_constant_array_size, diag::warn_kern_is_method, -1, + /* DiagArray528 */ diag::warn_pragma_extension_is_core, -1, + /* DiagArray529 */ diag::warn_pessimizing_move_on_initialization, diag::warn_pessimizing_move_on_return, -1, + /* DiagArray530 */ diag::ext_gnu_ptr_func_arith, diag::ext_gnu_subscript_void_type, diag::ext_gnu_void_ptr, diag::ext_sizeof_alignof_function_type, diag::ext_sizeof_alignof_void_type, diag::warn_sub_ptr_zero_size_types, -1, + /* DiagArray531 */ diag::warn_cast_nonnull_to_bool, diag::warn_impcast_pointer_to_bool, -1, + /* DiagArray532 */ diag::ext_typecheck_comparison_of_pointer_integer, -1, + /* DiagArray533 */ diag::ext_typecheck_convert_incompatible_pointer_sign, -1, + /* DiagArray535 */ diag::ext_typecheck_cond_incompatible_pointers, -1, + /* DiagArray536 */ diag::warn_side_effects_typeid, -1, + /* DiagArray537 */ diag::warn_pragma_attribute_unused, -1, + /* DiagArray538 */ diag::pp_pragma_once_in_main_file, -1, + /* DiagArray539 */ diag::warn_pragma_pack_modified_after_include, diag::warn_pragma_pack_no_pop_eof, -1, + /* DiagArray540 */ diag::warn_pragma_pack_non_default_at_include, -1, + /* DiagArray541 */ diag::pp_pragma_sysheader_in_main_file, -1, + /* DiagArray542 */ diag::warn_redefine_extname_not_applied, -1, + /* DiagArray543 */ diag::ext_predef_outside_function, -1, + /* DiagArray544 */ diag::warn_private_extern, -1, + /* DiagArray545 */ diag::warn_use_of_private_header_outside_module, -1, + /* DiagArray546 */ diag::warn_mmap_mismatched_private_module_name, diag::warn_mmap_mismatched_private_submodule, diag::warn_mmap_redundant_export_as, diag::warn_no_priv_submodule_use_toplevel, -1, + /* DiagArray547 */ diag::warn_profile_data_missing, -1, + /* DiagArray548 */ diag::warn_profile_data_out_of_date, -1, + /* DiagArray549 */ diag::warn_profile_data_unprofiled, -1, + /* DiagArray550 */ diag::warn_property_access_suggest, -1, + /* DiagArray551 */ diag::warn_property_attr_mismatch, diag::warn_property_attribute, diag::warn_property_redecl_getter_mismatch, diag::warn_readonly_property, -1, + /* DiagArray552 */ diag::warn_unimplemented_protocol_method, -1, + /* DiagArray553 */ diag::warn_protocol_property_mismatch, -1, + /* DiagArray554 */ diag::err_func_returning_qualified_void, -1, + /* DiagArray555 */ diag::warn_quoted_include_in_framework_header, -1, + /* DiagArray556 */ diag::warn_for_range_const_reference_copy, diag::warn_for_range_copy, diag::warn_for_range_variable_always_copy, -1, + /* DiagArray557 */ diag::warn_auto_readonly_iboutlet_property, -1, + /* DiagArray558 */ diag::warn_bad_receiver_type, -1, + /* DiagArray559 */ diag::warn_receiver_forward_class, diag::warn_receiver_forward_instance, -1, + /* DiagArray560 */ diag::ext_member_redeclared, -1, + /* DiagArray562 */ diag::warn_redundant_move_on_return, -1, + /* DiagArray563 */ diag::warn_redundant_parens_around_declarator, -1, + /* DiagArray564 */ diag::ext_register_storage_class, -1, + /* DiagArray565 */ diag::warn_reinterpret_different_from_static, -1, + /* DiagArray566 */ diag::remark_fe_backend_plugin, -1, + /* DiagArray567 */ diag::warn_initializer_out_of_order, -1, + /* DiagArray568 */ diag::warn_objc_requires_super_protocol, -1, + /* DiagArray569 */ diag::warn_pp_macro_is_reserved_id, -1, + /* DiagArray570 */ diag::ext_ms_reserved_user_defined_literal, diag::ext_reserved_user_defined_literal, -1, + /* DiagArray571 */ diag::ext_retained_language_linkage, -1, + /* DiagArray572 */ diag::warn_ret_addr_label, diag::warn_ret_local_temp_addr_ref, diag::warn_ret_stack_addr_ref, -1, + /* DiagArray573 */ diag::warn_return_std_move, -1, + /* DiagArray574 */ diag::warn_return_std_move_in_cxx11, -1, + /* DiagArray575 */ diag::ext_return_has_expr, diag::ext_return_missing_expr, diag::warn_falloff_nonvoid_coroutine, diag::warn_falloff_nonvoid_function, diag::warn_falloff_nonvoid_lambda, diag::warn_maybe_falloff_nonvoid_coroutine, diag::warn_maybe_falloff_nonvoid_function, diag::warn_maybe_falloff_nonvoid_lambda, diag::warn_return_missing_expr, -1, + /* DiagArray576 */ diag::warn_return_value_udt, diag::warn_return_value_udt_incomplete, -1, + /* DiagArray577 */ diag::remark_sanitize_address_insert_extra_padding_accepted, diag::remark_sanitize_address_insert_extra_padding_rejected, -1, + /* DiagArray578 */ diag::warn_attribute_section_on_redeclaration, diag::warn_duplicate_codeseg_attribute, diag::warn_mismatched_section, -1, + /* DiagArray579 */ diag::warn_unimplemented_selector, -1, + /* DiagArray580 */ diag::warn_multiple_selectors, -1, + /* DiagArray581 */ diag::warn_self_assignment_builtin, -1, + /* DiagArray582 */ diag::warn_identity_field_assign, -1, + /* DiagArray583 */ diag::warn_self_assignment_overloaded, -1, + /* DiagArray584 */ diag::warn_self_move, -1, + /* DiagArray585 */ diag::warn_semicolon_before_method_body, -1, + /* DiagArray586 */ diag::warn_missing_sentinel, diag::warn_not_enough_argument, -1, + /* DiagArray588 */ diag::warn_fe_serialized_diag_failure, diag::warn_fe_serialized_diag_merge_failure, -1, + /* DiagArray589 */ diag::warn_decl_shadow, -1, + /* DiagArray591 */ diag::warn_shadow_field, -1, + /* DiagArray592 */ diag::warn_ctor_parm_shadows_field, -1, + /* DiagArray593 */ diag::warn_modifying_shadowing_decl, -1, + /* DiagArray594 */ diag::warn_ivar_use_hidden, -1, + /* DiagArray595 */ diag::warn_decl_shadow_uncaptured_local, -1, + /* DiagArray596 */ diag::warn_shift_negative, -1, + /* DiagArray597 */ diag::warn_shift_gt_typewidth, -1, + /* DiagArray598 */ diag::warn_shift_lhs_negative, -1, + /* DiagArray599 */ diag::warn_addition_in_bitshift, -1, + /* DiagArray600 */ diag::warn_shift_result_gt_typewidth, -1, + /* DiagArray601 */ diag::warn_shift_result_sets_sign_bit, -1, + /* DiagArray602 */ diag::warn_impcast_integer_64_32, -1, + /* DiagArray603 */ diag::warn_mixed_sign_comparison, -1, + /* DiagArray604 */ diag::warn_impcast_integer_sign, diag::warn_impcast_integer_sign_conditional, diag::warn_impcast_nonnegative_result, -1, + /* DiagArray606 */ diag::warn_no_underlying_type_specified_for_enum_bitfield, -1, + /* DiagArray607 */ diag::warn_sizeof_array_param, -1, + /* DiagArray608 */ diag::warn_sizeof_array_decay, -1, + /* DiagArray609 */ diag::warn_division_sizeof_ptr, -1, + /* DiagArray610 */ diag::warn_sizeof_pointer_expr_memaccess, diag::warn_sizeof_pointer_type_memaccess, -1, + /* DiagArray611 */ diag::warn_slash_u_filename, -1, + /* DiagArray612 */ diag::warn_sometimes_uninit_var, -1, + /* DiagArray613 */ diag::warn_omp_nesting_simd, diag::warn_pragma_omp_ignored, -1, + /* DiagArray614 */ diag::warn_sampler_initializer_invalid_bits, -1, + /* DiagArray616 */ diag::ext_in_class_initializer_float_type_cxx11, -1, + /* DiagArray617 */ diag::ext_internal_in_extern_inline, diag::ext_internal_in_extern_inline_quiet, -1, + /* DiagArray618 */ diag::warn_static_inline_explicit_inst_ignored, -1, + /* DiagArray619 */ diag::warn_static_local_in_extern_inline, -1, + /* DiagArray620 */ diag::warn_static_self_reference_in_init, -1, + /* DiagArray621 */ diag::warn_stdlibcxx_not_found, -1, + /* DiagArray633 */ diag::warn_strict_prototypes, -1, + /* DiagArray634 */ diag::warn_strict_multiple_method_decl, -1, + /* DiagArray635 */ diag::warn_stringcompare, -1, + /* DiagArray636 */ diag::warn_impcast_string_literal_to_bool, -1, + /* DiagArray637 */ diag::warn_string_plus_char, -1, + /* DiagArray638 */ diag::warn_string_plus_int, -1, + /* DiagArray639 */ diag::warn_strlcpycat_wrong_size, -1, + /* DiagArray640 */ diag::warn_strncat_large_size, diag::warn_strncat_src_size, diag::warn_strncat_wrong_size, -1, + /* DiagArray641 */ diag::ext_typecheck_base_super, -1, + /* DiagArray642 */ diag::warn_suspicious_bzero_size, -1, + /* DiagArray644 */ diag::warn_case_value_overflow, diag::warn_missing_case, diag::warn_not_in_enum, -1, + /* DiagArray645 */ diag::warn_bool_switch_condition, -1, + /* DiagArray647 */ diag::warn_def_missing_case, -1, + /* DiagArray648 */ diag::warn_sync_fetch_and_nand_semantics_change, -1, + /* DiagArray650 */ diag::warn_comparison_always, diag::warn_comparison_bitwise_always, -1, + /* DiagArray651 */ diag::warn_tautological_bool_compare, -1, + /* DiagArray653 */ diag::warn_out_of_range_compare, -1, + /* DiagArray654 */ diag::warn_tautological_overlap_comparison, -1, + /* DiagArray655 */ diag::warn_nonnull_expr_compare, diag::warn_null_pointer_compare, -1, + /* DiagArray656 */ diag::warn_tautological_constant_compare, -1, + /* DiagArray657 */ diag::warn_address_of_reference_null_compare, diag::warn_this_null_compare, -1, + /* DiagArray658 */ diag::warn_unsigned_enum_always_true_comparison, -1, + /* DiagArray659 */ diag::warn_unsigned_always_true_comparison, -1, + /* DiagArray660 */ diag::ext_typecheck_decl_incomplete_type, -1, + /* DiagArray662 */ diag::warn_acquired_before, diag::warn_acquired_before_after_cycle, diag::warn_cannot_resolve_lock, diag::warn_double_lock, diag::warn_expecting_lock_held_on_loop, diag::warn_expecting_locked, diag::warn_fun_excludes_mutex, diag::warn_fun_requires_lock, diag::warn_lock_exclusive_and_shared, diag::warn_lock_some_predecessors, diag::warn_no_unlock, diag::warn_unlock_but_no_lock, diag::warn_unlock_kind_mismatch, diag::warn_var_deref_requires_any_lock, diag::warn_var_deref_requires_lock, diag::warn_variable_requires_any_lock, diag::warn_variable_requires_lock, -1, + /* DiagArray663 */ diag::warn_invalid_capability_name, diag::warn_thread_attribute_argument_not_lockable, diag::warn_thread_attribute_decl_not_lockable, diag::warn_thread_attribute_decl_not_pointer, diag::warn_thread_attribute_ignored, diag::warn_thread_attribute_not_on_capability_member, diag::warn_thread_attribute_not_on_non_static_member, -1, + /* DiagArray664 */ diag::warn_thread_safety_beta, -1, + /* DiagArray665 */ diag::warn_acquire_requires_negative_cap, -1, + /* DiagArray666 */ diag::warn_fun_requires_lock_precise, diag::warn_var_deref_requires_lock_precise, diag::warn_variable_requires_lock_precise, -1, + /* DiagArray667 */ diag::warn_guarded_pass_by_reference, diag::warn_pt_guarded_pass_by_reference, -1, + /* DiagArray668 */ diag::warn_thread_safety_verbose, -1, + /* DiagArray669 */ diag::trigraph_converted, diag::trigraph_ends_block_comment, diag::trigraph_ignored, diag::trigraph_ignored_block_comment, -1, + /* DiagArray671 */ diag::warn_type_safety_null_pointer_required, diag::warn_type_safety_type_mismatch, diag::warn_type_tag_for_datatype_wrong_kind, -1, + /* DiagArray672 */ diag::ext_redefinition_of_typedef, -1, + /* DiagArray673 */ diag::ext_typename_missing, -1, + /* DiagArray674 */ diag::warn_fe_unable_to_open_stats_file, -1, + /* DiagArray675 */ diag::warn_unavailable_fwdclass_message, -1, + /* DiagArray676 */ diag::warn_undeclared_selector, diag::warn_undeclared_selector_with_typo, -1, + /* DiagArray677 */ diag::warn_pp_undef_identifier, -1, + /* DiagArray678 */ diag::warn_address_of_reference_bool_conversion, diag::warn_this_bool_conversion, -1, + /* DiagArray679 */ diag::warn_func_template_missing, -1, + /* DiagArray680 */ diag::warn_undefined_inline, -1, + /* DiagArray681 */ diag::warn_undefined_internal, -1, + /* DiagArray682 */ diag::ext_undefined_internal_type, -1, + /* DiagArray683 */ diag::warn_pointer_indirection_from_incompatible_type, diag::warn_undefined_reinterpret_cast, -1, + /* DiagArray684 */ diag::warn_var_template_missing, -1, + /* DiagArray685 */ diag::warn_side_effects_unevaluated_context, -1, + /* DiagArray686 */ diag::warn_unguarded_availability, -1, + /* DiagArray687 */ diag::warn_unguarded_availability_new, -1, + /* DiagArray688 */ diag::warn_ucn_escape_incomplete, diag::warn_ucn_escape_no_digits, diag::warn_ucn_escape_surrogate, diag::warn_ucn_not_valid_in_c89, diag::warn_ucn_not_valid_in_c89_literal, -1, + /* DiagArray689 */ diag::warn_utf8_symbol_homoglyph, -1, + /* DiagArray690 */ diag::ext_unicode_whitespace, -1, + /* DiagArray691 */ diag::warn_utf8_symbol_zero_width, -1, + /* DiagArray692 */ diag::warn_base_class_is_uninit, diag::warn_field_is_uninit, diag::warn_reference_field_is_uninit, diag::warn_uninit_byref_blockvar_captured_by_block, diag::warn_uninit_self_reference_in_init, diag::warn_uninit_self_reference_in_reference_init, diag::warn_uninit_var, -1, + /* DiagArray693 */ diag::warn_drv_unknown_argument_clang_cl, diag::warn_drv_unknown_argument_clang_cl_with_suggestion, -1, + /* DiagArray694 */ diag::warn_unknown_attribute_ignored, -1, + /* DiagArray695 */ diag::ext_unknown_escape, -1, + /* DiagArray696 */ diag::ext_on_off_switch_syntax, diag::ext_pragma_syntax_eod, diag::ext_stdc_pragma_ignored, diag::warn_pragma_diagnostic_cannot_pop, diag::warn_pragma_diagnostic_invalid, diag::warn_pragma_diagnostic_invalid_option, diag::warn_pragma_diagnostic_invalid_token, diag::warn_pragma_ignored, diag::warn_pragma_include_alias_expected, diag::warn_pragma_include_alias_expected_filename, diag::warn_pragma_include_alias_mismatch_angle, diag::warn_pragma_include_alias_mismatch_quote, diag::warn_pragma_warning_expected, diag::warn_pragma_warning_expected_number, diag::warn_pragma_warning_push_level, diag::warn_pragma_warning_spec_invalid, diag::warn_stdc_fenv_access_not_supported, -1, + /* DiagArray697 */ diag::warn_unknown_sanitizer_ignored, -1, + /* DiagArray698 */ diag::warn_pragma_diagnostic_unknown_warning, diag::warn_unknown_diag_option, diag::warn_unknown_warning_specifier, -1, + /* DiagArray699 */ diag::ext_template_arg_unnamed_type, -1, + /* DiagArray700 */ diag::warn_unneeded_internal_decl, diag::warn_unneeded_static_internal_decl, -1, + /* DiagArray701 */ diag::warn_unneeded_member_function, -1, + /* DiagArray702 */ diag::warn_unreachable, -1, + /* DiagArray704 */ diag::warn_unreachable_break, -1, + /* DiagArray705 */ diag::warn_unreachable_loop_increment, -1, + /* DiagArray706 */ diag::warn_unreachable_return, -1, + /* DiagArray707 */ diag::warn_unsequenced_mod_mod, diag::warn_unsequenced_mod_use, -1, + /* DiagArray708 */ diag::warn_target_unsupported_abs2008, diag::warn_target_unsupported_abslegacy, -1, + /* DiagArray709 */ diag::warn_at_available_unchecked_use, -1, + /* DiagArray710 */ diag::warn_target_unsupported_compact_branches, -1, + /* DiagArray711 */ diag::warn_attribute_dll_instantiated_base_class, -1, + /* DiagArray712 */ diag::warn_template_qualified_friend_ignored, diag::warn_template_qualified_friend_unsupported, -1, + /* DiagArray713 */ diag::warn_drv_unsupported_gpopt, -1, + /* DiagArray714 */ diag::warn_target_unsupported_nan2008, diag::warn_target_unsupported_nanlegacy, -1, + /* DiagArray715 */ diag::warn_drv_unsupported_debug_info_opt_for_target, -1, + /* DiagArray716 */ diag::warn_attribute_protected_visibility, -1, + /* DiagArray717 */ diag::ext_partial_specs_not_deducible, -1, + /* DiagArray720 */ diag::warn_drv_diagnostics_hotness_requires_pgo, diag::warn_drv_empty_joined_argument, diag::warn_drv_input_file_unused, diag::warn_drv_input_file_unused_by_cpp, diag::warn_drv_preprocessed_input_file_unused, diag::warn_drv_unused_argument, diag::warn_ignored_clang_option, -1, + /* DiagArray721 */ diag::warn_unused_comparison, -1, + /* DiagArray722 */ diag::warn_unused_const_variable, -1, + /* DiagArray723 */ diag::warn_unused_exception_param, -1, + /* DiagArray724 */ diag::warn_unused_function, -1, + /* DiagArray725 */ diag::warn_unused_property_expr, -1, + /* DiagArray726 */ diag::warn_unused_label, -1, + /* DiagArray727 */ diag::warn_unused_lambda_capture, -1, + /* DiagArray728 */ diag::warn_unused_local_typedef, -1, + /* DiagArray730 */ diag::pp_macro_not_used, -1, + /* DiagArray731 */ diag::warn_unused_member_function, -1, + /* DiagArray732 */ diag::warn_unused_parameter, -1, + /* DiagArray733 */ diag::warn_unused_private_field, -1, + /* DiagArray734 */ diag::warn_unused_property_backing_ivar, -1, + /* DiagArray735 */ diag::warn_unused_result, -1, + /* DiagArray736 */ diag::warn_unused_template, -1, + /* DiagArray737 */ diag::warn_unused_call, diag::warn_unused_container_subscript_expr, diag::warn_unused_expr, diag::warn_unused_voidptr, -1, + /* DiagArray738 */ diag::warn_unused_variable, -1, + /* DiagArray739 */ diag::warn_unused_volatile, -1, + /* DiagArray740 */ diag::warn_used_but_marked_unused, -1, + /* DiagArray741 */ diag::warn_user_literal_reserved, -1, + /* DiagArray742 */ diag::warn_diagnose_if_succeeded, -1, + /* DiagArray743 */ diag::warn_second_arg_of_va_start_not_last_named_param, diag::warn_second_parameter_to_va_arg_never_compatible, diag::warn_va_start_type_is_undefined, -1, + /* DiagArray744 */ diag::ext_named_variadic_macro, diag::ext_pp_bad_vaopt_use, diag::ext_variadic_macro, -1, + /* DiagArray745 */ diag::warn_typecheck_vector_element_sizes_not_equal, -1, + /* DiagArray746 */ diag::warn_incompatible_vectors, -1, + /* DiagArray748 */ diag::warn_empty_parens_are_function_decl, diag::warn_parens_disambiguated_as_function_declaration, diag::warn_parens_disambiguated_as_variable_declaration, -1, + /* DiagArray749 */ diag::warn_decl_in_param_list, diag::warn_redefinition_in_param_list, -1, + /* DiagArray750 */ diag::warn_vla_used, -1, + /* DiagArray751 */ diag::ext_vla, -1, + /* DiagArray752 */ diag::ext_typecheck_indirection_through_void_pointer, -1, + /* DiagArray754 */ diag::warn_weak_template_vtable, -1, + /* DiagArray755 */ diag::warn_weak_vtable, -1, + /* DiagArray756 */ diag::ext_deprecated_string_literal_conversion, -1, + /* DiagArray758 */ diag::warn_zero_as_null_pointer_constant, -1, + /* DiagArray759 */ diag::ext_typecheck_zero_array_size, -1, +}; + +static const int16_t DiagSubGroups[] = { + /* Empty */ -1, + /* DiagSubGroup0 */ 220, -1, + /* DiagSubGroup4 */ 15, 220, -1, + /* DiagSubGroup11 */ 531, 635, 655, -1, + /* DiagSubGroup15 */ 425, 519, 644, 645, -1, + /* DiagSubGroup23 */ 30, 29, 26, -1, + /* DiagSubGroup28 */ 25, -1, + /* DiagSubGroup34 */ 36, 35, -1, + /* DiagSubGroup44 */ 289, 148, -1, + /* DiagSubGroup47 */ 694, 282, -1, + /* DiagSubGroup56 */ 84, 104, 257, -1, + /* DiagSubGroup57 */ 107, -1, + /* DiagSubGroup64 */ 531, 678, -1, + /* DiagSubGroup65 */ 64, -1, + /* DiagSubGroup72 */ 75, -1, + /* DiagSubGroup73 */ 79, -1, + /* DiagSubGroup74 */ 83, -1, + /* DiagSubGroup75 */ 83, 78, 76, 103, 101, 99, -1, + /* DiagSubGroup77 */ 75, 105, 102, 100, -1, + /* DiagSubGroup79 */ 80, 81, 82, -1, + /* DiagSubGroup85 */ 101, 99, -1, + /* DiagSubGroup86 */ 85, 102, 100, -1, + /* DiagSubGroup87 */ 84, -1, + /* DiagSubGroup88 */ 173, 169, 89, 99, -1, + /* DiagSubGroup90 */ 88, 100, -1, + /* DiagSubGroup92 */ 87, -1, + /* DiagSubGroup93 */ 88, -1, + /* DiagSubGroup94 */ 89, -1, + /* DiagSubGroup95 */ 91, -1, + /* DiagSubGroup97 */ 96, -1, + /* DiagSubGroup100 */ 99, -1, + /* DiagSubGroup102 */ 101, -1, + /* DiagSubGroup105 */ 103, 104, -1, + /* DiagSubGroup106 */ 109, 111, 103, 101, 99, -1, + /* DiagSubGroup110 */ 106, 107, 108, 105, 102, 100, -1, + /* DiagSubGroup124 */ 442, -1, + /* DiagSubGroup127 */ 126, -1, + /* DiagSubGroup133 */ 59, -1, + /* DiagSubGroup137 */ 64, 133, 210, 60, 229, 602, 330, 298, 295, 355, 439, 454, 472, 604, 636, -1, + /* DiagSubGroup138 */ 454, -1, + /* DiagSubGroup139 */ 140, -1, + /* DiagSubGroup142 */ 2, -1, + /* DiagSubGroup149 */ 151, 152, 572, -1, + /* DiagSubGroup163 */ 162, 160, -1, + /* DiagSubGroup164 */ 165, 166, 167, 169, 173, 174, 175, -1, + /* DiagSubGroup171 */ 172, -1, + /* DiagSubGroup175 */ 76, -1, + /* DiagSubGroup181 */ 182, -1, + /* DiagSubGroup186 */ 188, 187, -1, + /* DiagSubGroup189 */ 190, -1, + /* DiagSubGroup199 */ 167, -1, + /* DiagSubGroup200 */ 443, -1, + /* DiagSubGroup207 */ 224, -1, + /* DiagSubGroup208 */ 209, -1, + /* DiagSubGroup220 */ 407, 287, 324, 585, 410, 603, 732, 456, 204, -1, + /* DiagSubGroup222 */ 108, 80, -1, + /* DiagSubGroup223 */ 204, -1, + /* DiagSubGroup229 */ 231, 232, -1, + /* DiagSubGroup234 */ 235, 242, 444, 240, 241, 236, -1, + /* DiagSubGroup243 */ 238, 240, 241, -1, + /* DiagSubGroup252 */ 253, 254, 256, 257, 258, 259, 260, 261, 262, 263, 264, 751, 265, 266, 267, 268, 269, 270, 560, 271, 272, 273, 274, 275, 276, 759, 277, 278, -1, + /* DiagSubGroup286 */ 284, 285, -1, + /* DiagSubGroup288 */ 296, 297, -1, + /* DiagSubGroup292 */ 293, -1, + /* DiagSubGroup310 */ 311, 307, -1, + /* DiagSubGroup316 */ 317, 441, -1, + /* DiagSubGroup321 */ 169, -1, + /* DiagSubGroup331 */ 330, -1, + /* DiagSubGroup332 */ 333, -1, + /* DiagSubGroup335 */ 283, -1, + /* DiagSubGroup357 */ 109, -1, + /* DiagSubGroup360 */ 82, -1, + /* DiagSubGroup361 */ 233, 556, -1, + /* DiagSubGroup371 */ 374, 390, 377, 386, 394, 397, 382, 398, 391, 392, 396, 384, 381, 378, 395, 393, 380, 388, 387, 385, 373, 376, 399, 372, 375, 379, 318, -1, + /* DiagSubGroup425 */ 122, 126, 163, 233, 234, 288, 322, 403, 404, 426, 429, 567, 575, 581, 584, 607, 608, 638, 669, 692, 696, 718, 753, 477, 467, 468, 512, 544, 118, 218, 742, -1, + /* DiagSubGroup426 */ 529, 562, 573, 584, -1, + /* DiagSubGroup427 */ 390, -1, + /* DiagSubGroup431 */ 83, -1, + /* DiagSubGroup437 */ 89, -1, + /* DiagSubGroup438 */ 603, 137, 356, -1, + /* DiagSubGroup441 */ 440, -1, + /* DiagSubGroup458 */ 459, -1, + /* DiagSubGroup466 */ 491, -1, + /* DiagSubGroup471 */ 494, -1, + /* DiagSubGroup491 */ 492, -1, + /* DiagSubGroup513 */ 324, -1, + /* DiagSubGroup519 */ 359, 358, 62, 599, 511, 520, 150, -1, + /* DiagSubGroup521 */ 686, -1, + /* DiagSubGroup527 */ 112, 80, 82, 84, 228, 244, 254, 256, 257, 258, 259, 260, 261, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 275, 277, 278, 350, 360, 374, 375, 377, 379, 381, 386, 387, 393, 510, 751, 759, 461, 226, 682, 571, 129, 432, 157, 191, 352, 302, 201, 205, -1, + /* DiagSubGroup539 */ 540, -1, + /* DiagSubGroup542 */ 696, 286, 537, 539, -1, + /* DiagSubGroup564 */ 173, -1, + /* DiagSubGroup570 */ 78, -1, + /* DiagSubGroup575 */ 576, -1, + /* DiagSubGroup579 */ 580, -1, + /* DiagSubGroup581 */ 583, 582, -1, + /* DiagSubGroup587 */ 707, -1, + /* DiagSubGroup589 */ 593, 594, -1, + /* DiagSubGroup590 */ 589, 592, 595, 591, -1, + /* DiagSubGroup592 */ 593, -1, + /* DiagSubGroup616 */ 273, -1, + /* DiagSubGroup643 */ 610, 198, 449, 368, 642, -1, + /* DiagSubGroup650 */ 651, 655, 654, 657, -1, + /* DiagSubGroup651 */ 653, -1, + /* DiagSubGroup652 */ 656, 659, 658, -1, + /* DiagSubGroup661 */ 663, 662, 666, 667, -1, + /* DiagSubGroup685 */ 536, -1, + /* DiagSubGroup686 */ 687, -1, + /* DiagSubGroup692 */ 612, 620, -1, + /* DiagSubGroup699 */ 111, -1, + /* DiagSubGroup702 */ 705, -1, + /* DiagSubGroup703 */ 702, 704, 706, -1, + /* DiagSubGroup718 */ 719, 724, 726, 733, 727, 728, 737, 738, 734, -1, + /* DiagSubGroup724 */ 700, -1, + /* DiagSubGroup729 */ 728, -1, + /* DiagSubGroup731 */ 701, -1, + /* DiagSubGroup736 */ 700, -1, + /* DiagSubGroup737 */ 721, 735, 685, -1, + /* DiagSubGroup738 */ 722, -1, + /* DiagSubGroup747 */ 746, -1, + /* DiagSubGroup756 */ 175, -1, + /* DiagSubGroup757 */ 756, -1, +}; + +static const char DiagGroupNames[] = { + "\000\020#pragma-messages\t#warnings\020CFString-literal\003CL4\032Indep" + "endentClass-attribute\022NSObject-attribute\003abi\016absolute-value\024" + "abstract-final-class\023abstract-vbase-init\007address\030address-of-pa" + "cked-member\024address-of-temporary\020aggregate-return\003all\031alloc" + "a-with-align-alignof\020ambiguous-delete\022ambiguous-ellipsis\017ambig" + "uous-macro\031ambiguous-member-template\034analyzer-incompatible-plugin" + "\025anonymous-pack-parens\003arc%arc-bridge-casts-disallowed-in-nonarc\036" + "arc-maybe-repeated-use-of-weak\025arc-non-pod-memaccess\031arc-performS" + "elector-leaks\030arc-repeated-use-of-weak\021arc-retain-cycles\032arc-u" + "nsafe-retained-assign\026argument-outside-range\014array-bounds\037arra" + "y-bounds-pointer-arithmetic\003asm\025asm-ignored-qualifier\022asm-oper" + "and-widths\013assign-enum\006assume\013at-protocol\034atimport-in-frame" + "work-header\020atomic-alignment\027atomic-implicit-seq-cst\026atomic-me" + "mory-ordering\021atomic-properties*atomic-property-with-user-defined-ac" + "cessor\035attribute-packed-for-bitfield\nattributes\033auto-disable-vpt" + "r-sanitizer\013auto-import\022auto-storage-class\013auto-var-id\014avai" + "lability\016backend-plugin\030backslash-newline-escape\021bad-function-" + "cast\016binary-literal\026bind-to-temporary-copy\024binding-in-conditio" + "n\034bitfield-constant-conversion\030bitfield-enum-conversion\016bitfie" + "ld-width\026bitwise-op-parentheses\033block-capture-autoreleasing\017bo" + "ol-conversion\020bool-conversions\022braced-scalar-init\013bridge-cast\027" + "builtin-macro-redefined\027builtin-memcpy-chk-size\027builtin-requires-" + "header\nc++-compat\014c++0x-compat\020c++0x-extensions\017c++0x-narrowi" + "ng\014c++11-compat(c++11-compat-deprecated-writable-strings\025c++11-co" + "mpat-pedantic*c++11-compat-reserved-user-defined-literal\020c++11-exten" + "sions\020c++11-extra-semi\026c++11-inline-namespace\017c++11-long-long\017" + "c++11-narrowing\024c++14-binary-literal\014c++14-compat\025c++14-compat" + "-pedantic\020c++14-extensions\014c++17-compat\025c++17-compat-mangling\025" + "c++17-compat-pedantic\020c++17-extensions\020c++1y-extensions\014c++1z-" + "compat\025c++1z-compat-mangling\020c++1z-extensions\014c++2a-compat\025" + "c++2a-compat-pedantic\020c++2a-extensions\036c++98-c++11-c++14-c++17-co" + "mpat'c++98-c++11-c++14-c++17-compat-pedantic\030c++98-c++11-c++14-compa" + "t!c++98-c++11-c++14-compat-pedantic\022c++98-c++11-compat!c++98-c++11-c" + "ompat-binary-literal\033c++98-c++11-compat-pedantic\014c++98-compat#c++" + "98-compat-bind-to-temporary-copy\027c++98-compat-extra-semi%c++98-compa" + "t-local-type-template-args\025c++98-compat-pedantic'c++98-compat-unname" + "d-type-template-args\016c11-extensions\nc99-compat\016c99-extensions#ca" + "ll-to-pure-virtual-from-ctor-dtor\ncast-align\027cast-calling-conventio" + "n\020cast-of-sel-type\tcast-qual\023cast-qual-unrelated\nchar-align\017" + "char-subscripts\014clang-cl-pch\015class-varargs\005comma\007comment\010" + "comments\036compare-distinct-pointer-types\026complex-component-init\031" + "conditional-type-mismatch\031conditional-uninitialized\015config-macros" + "\023constant-conversion\030constant-logical-operand\023constexpr-not-co" + "nst\010consumed\nconversion\017conversion-null\tcoroutine%coroutine-mis" + "sing-unhandled-exception\026covered-switch-default\003cpp\030cstring-fo" + "rmat-directive\026ctad-maybe-unsupported\021ctor-dtor-privacy\003ctu\013" + "cuda-compat\030custom-atomic-properties\010dangling\015dangling-else\016" + "dangling-field\031dangling-initializer-list\023darwin-sdk-settings\tdat" + "e-time\023dealloc-in-category\035debug-compression-unavailable\033decla" + "ration-after-statement\032defaulted-function-deleted\026delegating-ctor" + "-cycles delete-abstract-non-virtual-dtor\021delete-incomplete$delete-no" + "n-abstract-non-virtual-dtor\027delete-non-virtual-dtor\ndeprecated\025d" + "eprecated-attributes\027deprecated-declarations!deprecated-dynamic-exce" + "ption-spec\032deprecated-implementations\031deprecated-increment-bool\031" + "deprecated-objc-isa-usage%deprecated-objc-pointer-introspection5depreca" + "ted-objc-pointer-introspection-performSelector\023deprecated-register\027" + "deprecated-this-capture\033deprecated-writable-strings\022direct-ivar-a" + "ccess\030disabled-macro-expansion\025disabled-optimization\014discard-q" + "ual\034distributed-object-modifiers\013div-by-zero\020division-by-zero\036" + "dll-attribute-on-redeclaration%dllexport-explicit-instantiation-decl\032" + "dllimport-static-field-def\015documentation\035documentation-deprecated" + "-sync\022documentation-html\026documentation-pedantic\035documentation-" + "unknown-command\036dollar-in-identifier-extension\020double-promotion\030" + "duplicate-decl-specifier\016duplicate-enum\024duplicate-method-arg\026d" + "uplicate-method-match\022duplicate-protocol\027dynamic-class-memaccess\026" + "dynamic-exception-spec\006effc++\022embedded-directive\nempty-body\023e" + "mpty-decomposition\017empty-init-stmt\026empty-translation-unit\013enco" + "de-type\014endif-labels\014enum-compare\023enum-compare-switch\017enum-" + "conversion\016enum-too-large\nexceptions\025exit-time-destructors\024ex" + "pansion-to-defined\021experimental-isel\030explicit-initialize-call\027" + "explicit-ownership-type\017extern-c-compat\022extern-initializer\005ext" + "ra\023extra-qualification\nextra-semi\017extra-semi-stmt\014extra-token" + "s\010fallback\024fixed-enum-extension\tflag-enum\031flexible-array-exte" + "nsions\020float-conversion\013float-equal\031float-overflow-conversion\025" + "float-zero-conversion\021for-loop-analysis\006format\021format-extra-ar" + "gs\030format-invalid-specifier\016format-non-iso\021format-nonliteral\017" + "format-pedantic\017format-security\nformat-y2k\022format-zero-length\010" + "format=2\023four-char-constants\022frame-larger-than=%framework-include" + "-private-from-public\036function-def-in-objc-container\025function-mult" + "iversion\015future-compat\ngcc-compat\023global-constructors\003gnu\026" + "gnu-alignof-expression\024gnu-anonymous-struct\033gnu-array-member-pare" + "n-init\015gnu-auto-type\022gnu-binary-literal\016gnu-case-range\023gnu-" + "complex-integer gnu-compound-literal-initializer\037gnu-conditional-omi" + "tted-operand\016gnu-designator\025gnu-empty-initializer\020gnu-empty-st" + "ruct\036gnu-flexible-array-initializer\037gnu-flexible-array-union-memb" + "er\024gnu-folding-constant\026gnu-imaginary-constant\020gnu-include-nex" + "t\022gnu-label-as-value\023gnu-redeclared-enum\030gnu-statement-express" + "ion\025gnu-static-float-init$gnu-string-literal-operator-template\016gn" + "u-union-cast\"gnu-variable-sized-type-not-at-end\027gnu-zero-line-direc" + "tive!gnu-zero-variadic-macro-arguments\014header-guard\016header-hygien" + "e\025idiomatic-parentheses\022ignored-attributes\035ignored-optimizatio" + "n-argument\030ignored-pragma-intrinsic\027ignored-pragma-optimize\017ig" + "nored-pragmas\022ignored-qualifiers\010implicit\032implicit-atomic-prop" + "erties*implicit-conversion-floating-point-to-bool implicit-exception-sp" + "ec-mismatch\024implicit-fallthrough!implicit-fallthrough-per-function\037" + "implicit-fixed-point-conversion\031implicit-float-conversion\035implici" + "t-function-declaration\014implicit-int\027implicit-int-conversion\024im" + "plicit-retain-self\033implicitly-unsigned-literal\006import&import-prep" + "rocessor-directive-pedantic\021inaccessible-base\032include-next-absolu" + "te-path\033include-next-outside-header\033incompatible-exception-spec#i" + "ncompatible-function-pointer-types\"incompatible-library-redeclaration\026" + "incompatible-ms-struct\032incompatible-pointer-types.incompatible-point" + "er-types-discards-qualifiers\032incompatible-property-type\024incompati" + "ble-sysroot'incomplete-framework-module-declaration\031incomplete-imple" + "mentation\021incomplete-module\023incomplete-umbrella\026inconsistent-d" + "llimport(inconsistent-missing-destructor-override\035inconsistent-missi" + "ng-override\016increment-bool\022infinite-recursion\tinit-self\025initi" + "alizer-overrides\023injected-class-name\006inline\ninline-asm\021inline" + "-new-delete\"instantiation-after-specialization\016int-conversion\017in" + "t-conversions\023int-to-pointer-cast\030int-to-void-pointer-cast\020int" + "eger-overflow\035invalid-command-line-argument\021invalid-constexpr\020" + "invalid-iboutlet&invalid-initializer-from-system-header\035invalid-ios-" + "deployment-target\020invalid-noreturn\020invalid-offsetof invalid-or-no" + "nexistent-directory\036invalid-partial-specialization\013invalid-pch\020" + "invalid-pp-token\027invalid-source-encoding\023invalid-token-paste\020j" + "ump-seh-finally\016keyword-compat\015keyword-macro\026knr-promoted-para" + "meter\030language-extension-token\023large-by-value-copy\006liblto\022l" + "iteral-conversion\015literal-range\030local-type-template-args\027logic" + "al-not-parentheses\026logical-op-parentheses\tlong-long\015loop-analysi" + "s\017macro-redefined\004main\020main-return-type\027malformed-warning-c" + "heck\036many-braces-around-scalar-init\021max-unsigned-zero\026memset-t" + "ransposed-args\022memsize-comparison\021method-signatures\tmicrosoft\022" + "microsoft-anon-tag\016microsoft-cast\021microsoft-charize\027microsoft-" + "comment-paste\024microsoft-const-init\023microsoft-cpp-macro\"microsoft" + "-default-arg-redefinition\025microsoft-end-of-file microsoft-enum-forwa" + "rd-reference\024microsoft-enum-value\030microsoft-exception-spec\020mic" + "rosoft-exists#microsoft-explicit-constructor-call\035microsoft-extra-qu" + "alification\024microsoft-fixed-enum\030microsoft-flexible-array\016micr" + "osoft-goto\033microsoft-inaccessible-base\021microsoft-include\033micro" + "soft-mutable-reference\031microsoft-pure-definition\032microsoft-redecl" + "are-static\020microsoft-sealed\022microsoft-template microsoft-union-me" + "mber-reference\034microsoft-unqualified-friend\024microsoft-using-decl\032" + "microsoft-void-pseudo-dtor\025mismatched-new-delete\032mismatched-param" + "eter-types\027mismatched-return-types\017mismatched-tags\016missing-bra" + "ces\024missing-declarations\026missing-exception-spec\032missing-field-" + "initializers\030missing-format-attribute\024missing-include-dirs\032mis" + "sing-method-return-type\020missing-noescape\020missing-noreturn\030miss" + "ing-prototype-for-cc\022missing-prototypes\025missing-selector-name\017" + "missing-sysroot\035missing-variable-declarations\014module-build\017mod" + "ule-conflict\033module-file-config-mismatch\025module-file-extension\031" + "module-import-in-extern-c\"modules-ambiguous-internal-linkage\037module" + "s-import-nested-redundant\004most\004move\014msvc-include\016msvc-not-f" + "ound\tmultichar\023multiple-move-vbase\tnarrowing\021nested-anon-types\016" + "nested-externs\020new-returns-null\013newline-eof\007noderef\015noexcep" + "t-type\007non-gcc\033non-literal-null-conversion'non-modular-include-in" + "-framework-module\035non-modular-include-in-module\017non-pod-varargs\020" + "non-virtual-dtor\007nonnull\025nonportable-cfstrings\030nonportable-inc" + "lude-path\037nonportable-system-include-path!nonportable-vector-initial" + "ization\024nontrivial-memaccess\023nsconsumed-mismatch\022nsreturns-mis" + "match\017null-arithmetic\016null-character\017null-conversion\020null-d" + "ereference\027null-pointer-arithmetic\013nullability\030nullability-com" + "pleteness\"nullability-completeness-on-arrays\024nullability-declspec\025" + "nullability-extension#nullability-inferred-on-nested-type\036nullable-t" + "o-nonnull-conversion+objc-autosynthesis-property-ivar-name-match\027obj" + "c-circular-container\016objc-cocoa-api\034objc-designated-initializers\023" + "objc-flexible-array\037objc-forward-class-redefinition\024objc-interfac" + "e-ivars\024objc-literal-compare\027objc-literal-conversion\027objc-macr" + "o-redefinition\021objc-messaging-id\022objc-method-access\037objc-missi" + "ng-property-synthesis\030objc-missing-super-calls\032objc-multiple-meth" + "od-names\"objc-noncopy-retain-block-property\032objc-nonunified-excepti" + "ons#objc-property-assign-on-object-type\034objc-property-implementation" + "\037objc-property-implicit-mismatch*objc-property-matches-cocoa-ownersh" + "ip-rule\032objc-property-no-attribute\027objc-property-synthesis#objc-p" + "rotocol-method-implementation objc-protocol-property-synthesis\030objc-" + "protocol-qualifiers\"objc-readonly-with-setter-property\026objc-redunda" + "nt-api-use\032objc-redundant-literal-use\017objc-root-class\023objc-str" + "ing-compare\031objc-string-concatenation\034objc-unsafe-perform-selecto" + "r\003odr\016old-style-cast\024old-style-definition\027opencl-unsupporte" + "d-rgba\016openmp-clauses\020openmp-loop-form\015openmp-target\016option" + "-ignored!ordered-compare-function-pointers\027out-of-line-declaration\025" + "out-of-scope-function\014over-aligned\010overflow\022overlength-strings" + "\037overloaded-shift-op-parentheses\022overloaded-virtual\015override-i" + "nit\017override-module\032overriding-method-mismatch\023overriding-t-op" + "tion\006packed\006padded\013parentheses\024parentheses-equality\024part" + "ial-availability\004pass\015pass-analysis\013pass-failed\013pass-missed" + "\015pch-date-time\010pedantic\026pedantic-core-features\020pessimizing-" + "move\015pointer-arith\027pointer-bool-conversion\027pointer-integer-com" + "pare\014pointer-sign\023pointer-to-int-cast\025pointer-type-mismatch po" + "tentially-evaluated-expression\026pragma-clang-attribute\032pragma-once" + "-outside-header\013pragma-pack\036pragma-pack-suspicious-include#pragma" + "-system-header-outside-header\007pragmas&predefined-identifier-outside-" + "function\016private-extern\016private-header\016private-module\025profi" + "le-instr-missing\031profile-instr-out-of-date\030profile-instr-unprofil" + "ed\032property-access-dot-syntax\033property-attribute-mismatch\010prot" + "ocol%protocol-property-synthesis-ambiguity\032qualified-void-return-typ" + "e\"quoted-include-in-framework-header\023range-loop-analysis\032readonl" + "y-iboutlet-property\015receiver-expr\026receiver-forward-class\027redec" + "lared-class-member\017redundant-decls\016redundant-move\020redundant-pa" + "rens\010register\026reinterpret-base-class\025remark-backend-plugin\007" + "reorder\030requires-super-attribute\021reserved-id-macro\035reserved-us" + "er-defined-literal\031retained-language-linkage\024return-stack-address" + "\017return-std-move\030return-std-move-in-c++11\013return-type\025retur" + "n-type-c-linkage\020sanitize-address\007section\010selector\026selector" + "-type-mismatch\013self-assign\021self-assign-field\026self-assign-overl" + "oaded\tself-move\034semicolon-before-method-body\010sentinel\016sequenc" + "e-point\026serialized-diagnostics\006shadow\nshadow-all\014shadow-field" + "\033shadow-field-in-constructor$shadow-field-in-constructor-modified\013" + "shadow-ivar\027shadow-uncaptured-local\024shift-count-negative\024shift" + "-count-overflow\024shift-negative-value\024shift-op-parentheses\016shif" + "t-overflow\023shift-sign-overflow\020shorten-64-to-32\014sign-compare\017" + "sign-conversion\nsign-promo\024signed-enum-bitfield\025sizeof-array-arg" + "ument\022sizeof-array-decay\022sizeof-pointer-div\030sizeof-pointer-mem" + "access\020slash-u-filename\027sometimes-uninitialized\022source-uses-op" + "enmp\013spir-compat\017stack-protector\021static-float-init\020static-i" + "n-inline$static-inline-explicit-instantiation\026static-local-in-inline" + "\020static-self-init\023stdlibcxx-not-found\017strict-aliasing\021stric" + "t-aliasing=0\021strict-aliasing=1\021strict-aliasing=2\017strict-overfl" + "ow\021strict-overflow=0\021strict-overflow=1\021strict-overflow=2\021st" + "rict-overflow=3\021strict-overflow=4\021strict-overflow=5\021strict-pro" + "totypes\025strict-selector-match\016string-compare\021string-conversion" + "\020string-plus-char\017string-plus-int\024strlcpy-strlcat-size\014strn" + "cat-size\033super-class-method-mismatch\020suspicious-bzero\024suspicio" + "us-memaccess\006switch\013switch-bool\016switch-default\013switch-enum%" + "sync-fetch-and-nand-semantics-changed\005synth\024tautological-compare\035" + "tautological-constant-compare&tautological-constant-in-range-compare*ta" + "utological-constant-out-of-range-compare\034tautological-overlap-compar" + "e\034tautological-pointer-compare\037tautological-type-limit-compare\036" + "tautological-undefined-compare'tautological-unsigned-enum-zero-compare\"" + "tautological-unsigned-zero-compare$tentative-definition-incomplete-type" + "\015thread-safety\026thread-safety-analysis\030thread-safety-attributes" + "\022thread-safety-beta\026thread-safety-negative\025thread-safety-preci" + "se\027thread-safety-reference\025thread-safety-verbose\ttrigraphs\013ty" + "pe-limits\013type-safety\024typedef-redefinition\020typename-missing\031" + "unable-to-open-stats-file\030unavailable-declarations\023undeclared-sel" + "ector\005undef\031undefined-bool-conversion\027undefined-func-template\020" + "undefined-inline\022undefined-internal\027undefined-internal-type\032un" + "defined-reinterpret-cast\026undefined-var-template\026unevaluated-expre" + "ssion\026unguarded-availability\032unguarded-availability-new\007unicod" + "e\021unicode-homoglyph\022unicode-whitespace\022unicode-zero-width\015u" + "ninitialized\020unknown-argument\022unknown-attributes\027unknown-escap" + "e-sequence\017unknown-pragmas\022unknown-sanitizers\026unknown-warning-" + "option\032unnamed-type-template-args\035unneeded-internal-declaration\030" + "unneeded-member-function\020unreachable-code\033unreachable-code-aggres" + "sive\026unreachable-code-break\037unreachable-code-loop-increment\027un" + "reachable-code-return\013unsequenced\017unsupported-abs\036unsupported-" + "availability-guard\016unsupported-cb#unsupported-dll-base-class-templat" + "e\022unsupported-friend\021unsupported-gpopt\017unsupported-nan\026unsu" + "pported-target-opt\026unsupported-visibility\037unusable-partial-specia" + "lization\006unused\017unused-argument\034unused-command-line-argument\021" + "unused-comparison\025unused-const-variable\032unused-exception-paramete" + "r\017unused-function\032unused-getter-return-value\014unused-label\025u" + "nused-lambda-capture\024unused-local-typedef\025unused-local-typedefs\015" + "unused-macros\026unused-member-function\020unused-parameter\024unused-p" + "rivate-field\024unused-property-ivar\015unused-result\017unused-templat" + "e\014unused-value\017unused-variable\026unused-volatile-lvalue\026used-" + "but-marked-unused\025user-defined-literals\025user-defined-warnings\007" + "varargs\017variadic-macros\015vec-elem-size\021vector-conversion\022vec" + "tor-conversions\014vexing-parse\nvisibility\003vla\015vla-extension\024" + "void-ptr-dereference\025volatile-register-var\025weak-template-vtables\014" + "weak-vtables\020writable-strings\015write-strings\035zero-as-null-point" + "er-constant\021zero-length-array"}; + +#endif // GET_DIAG_ARRAYS + + +#ifdef GET_DIAG_TABLE + { /* */ 0, /* Empty */ 0, /* DiagSubGroup0 */ 1 }, + { /* #pragma-messages */ 1, /* DiagArray1 */ 1, /* Empty */ 0 }, + { /* #warnings */ 18, /* DiagArray2 */ 3, /* Empty */ 0 }, + { /* CFString-literal */ 28, /* DiagArray3 */ 5, /* Empty */ 0 }, + { /* CL4 */ 45, /* Empty */ 0, /* DiagSubGroup4 */ 3 }, + { /* IndependentClass-attribute */ 49, /* DiagArray5 */ 7, /* Empty */ 0 }, + { /* NSObject-attribute */ 76, /* DiagArray6 */ 10, /* Empty */ 0 }, + { /* abi */ 95, /* Empty */ 0, /* Empty */ 0 }, + { /* absolute-value */ 99, /* DiagArray8 */ 12, /* Empty */ 0 }, + { /* abstract-final-class */ 114, /* DiagArray9 */ 17, /* Empty */ 0 }, + { /* abstract-vbase-init */ 135, /* DiagArray10 */ 19, /* Empty */ 0 }, + { /* address */ 155, /* Empty */ 0, /* DiagSubGroup11 */ 6 }, + { /* address-of-packed-member */ 163, /* DiagArray12 */ 21, /* Empty */ 0 }, + { /* address-of-temporary */ 188, /* DiagArray13 */ 23, /* Empty */ 0 }, + { /* aggregate-return */ 209, /* Empty */ 0, /* Empty */ 0 }, + { /* all */ 226, /* Empty */ 0, /* DiagSubGroup15 */ 10 }, + { /* alloca-with-align-alignof */ 230, /* DiagArray16 */ 25, /* Empty */ 0 }, + { /* ambiguous-delete */ 256, /* DiagArray17 */ 27, /* Empty */ 0 }, + { /* ambiguous-ellipsis */ 273, /* DiagArray18 */ 29, /* Empty */ 0 }, + { /* ambiguous-macro */ 292, /* DiagArray19 */ 31, /* Empty */ 0 }, + { /* ambiguous-member-template */ 308, /* DiagArray20 */ 33, /* Empty */ 0 }, + { /* analyzer-incompatible-plugin */ 334, /* DiagArray21 */ 35, /* Empty */ 0 }, + { /* anonymous-pack-parens */ 363, /* DiagArray22 */ 37, /* Empty */ 0 }, + { /* arc */ 385, /* Empty */ 0, /* DiagSubGroup23 */ 15 }, + { /* arc-bridge-casts-disallowed-in-nonarc */ 389, /* DiagArray24 */ 39, /* Empty */ 0 }, + { /* arc-maybe-repeated-use-of-weak */ 427, /* DiagArray25 */ 41, /* Empty */ 0 }, + { /* arc-non-pod-memaccess */ 458, /* DiagArray26 */ 43, /* Empty */ 0 }, + { /* arc-performSelector-leaks */ 480, /* DiagArray27 */ 45, /* Empty */ 0 }, + { /* arc-repeated-use-of-weak */ 506, /* DiagArray28 */ 47, /* DiagSubGroup28 */ 19 }, + { /* arc-retain-cycles */ 531, /* DiagArray29 */ 49, /* Empty */ 0 }, + { /* arc-unsafe-retained-assign */ 549, /* DiagArray30 */ 51, /* Empty */ 0 }, + { /* argument-outside-range */ 576, /* DiagArray31 */ 55, /* Empty */ 0 }, + { /* array-bounds */ 599, /* DiagArray32 */ 57, /* Empty */ 0 }, + { /* array-bounds-pointer-arithmetic */ 612, /* DiagArray33 */ 62, /* Empty */ 0 }, + { /* asm */ 644, /* Empty */ 0, /* DiagSubGroup34 */ 21 }, + { /* asm-ignored-qualifier */ 648, /* DiagArray35 */ 65, /* Empty */ 0 }, + { /* asm-operand-widths */ 670, /* DiagArray36 */ 68, /* Empty */ 0 }, + { /* assign-enum */ 689, /* DiagArray37 */ 70, /* Empty */ 0 }, + { /* assume */ 701, /* DiagArray38 */ 72, /* Empty */ 0 }, + { /* at-protocol */ 708, /* Empty */ 0, /* Empty */ 0 }, + { /* atimport-in-framework-header */ 720, /* DiagArray40 */ 74, /* Empty */ 0 }, + { /* atomic-alignment */ 749, /* DiagArray41 */ 76, /* Empty */ 0 }, + { /* atomic-implicit-seq-cst */ 766, /* DiagArray42 */ 78, /* Empty */ 0 }, + { /* atomic-memory-ordering */ 790, /* DiagArray43 */ 80, /* Empty */ 0 }, + { /* atomic-properties */ 813, /* Empty */ 0, /* DiagSubGroup44 */ 24 }, + { /* atomic-property-with-user-defined-accessor */ 831, /* DiagArray45 */ 82, /* Empty */ 0 }, + { /* attribute-packed-for-bitfield */ 874, /* DiagArray46 */ 84, /* Empty */ 0 }, + { /* attributes */ 904, /* Empty */ 0, /* DiagSubGroup47 */ 27 }, + { /* auto-disable-vptr-sanitizer */ 915, /* DiagArray48 */ 86, /* Empty */ 0 }, + { /* auto-import */ 943, /* DiagArray49 */ 88, /* Empty */ 0 }, + { /* auto-storage-class */ 955, /* DiagArray50 */ 90, /* Empty */ 0 }, + { /* auto-var-id */ 974, /* DiagArray51 */ 92, /* Empty */ 0 }, + { /* availability */ 986, /* DiagArray52 */ 94, /* Empty */ 0 }, + { /* backend-plugin */ 999, /* DiagArray53 */ 104, /* Empty */ 0 }, + { /* backslash-newline-escape */ 1014, /* DiagArray54 */ 106, /* Empty */ 0 }, + { /* bad-function-cast */ 1039, /* DiagArray55 */ 108, /* Empty */ 0 }, + { /* binary-literal */ 1057, /* Empty */ 0, /* DiagSubGroup56 */ 30 }, + { /* bind-to-temporary-copy */ 1072, /* DiagArray57 */ 110, /* DiagSubGroup57 */ 34 }, + { /* binding-in-condition */ 1095, /* DiagArray58 */ 113, /* Empty */ 0 }, + { /* bitfield-constant-conversion */ 1116, /* DiagArray59 */ 115, /* Empty */ 0 }, + { /* bitfield-enum-conversion */ 1145, /* DiagArray60 */ 117, /* Empty */ 0 }, + { /* bitfield-width */ 1170, /* DiagArray61 */ 121, /* Empty */ 0 }, + { /* bitwise-op-parentheses */ 1185, /* DiagArray62 */ 124, /* Empty */ 0 }, + { /* block-capture-autoreleasing */ 1208, /* DiagArray63 */ 126, /* Empty */ 0 }, + { /* bool-conversion */ 1236, /* DiagArray64 */ 128, /* DiagSubGroup64 */ 36 }, + { /* bool-conversions */ 1252, /* Empty */ 0, /* DiagSubGroup65 */ 39 }, + { /* braced-scalar-init */ 1269, /* DiagArray66 */ 130, /* Empty */ 0 }, + { /* bridge-cast */ 1288, /* DiagArray67 */ 132, /* Empty */ 0 }, + { /* builtin-macro-redefined */ 1300, /* DiagArray68 */ 135, /* Empty */ 0 }, + { /* builtin-memcpy-chk-size */ 1324, /* DiagArray69 */ 138, /* Empty */ 0 }, + { /* builtin-requires-header */ 1348, /* DiagArray70 */ 140, /* Empty */ 0 }, + { /* c++-compat */ 1372, /* DiagArray71 */ 142, /* Empty */ 0 }, + { /* c++0x-compat */ 1383, /* Empty */ 0, /* DiagSubGroup72 */ 41 }, + { /* c++0x-extensions */ 1396, /* Empty */ 0, /* DiagSubGroup73 */ 43 }, + { /* c++0x-narrowing */ 1413, /* Empty */ 0, /* DiagSubGroup74 */ 45 }, + { /* c++11-compat */ 1429, /* DiagArray75 */ 144, /* DiagSubGroup75 */ 47 }, + { /* c++11-compat-deprecated-writable-strings */ 1442, /* DiagArray76 */ 155, /* Empty */ 0 }, + { /* c++11-compat-pedantic */ 1483, /* Empty */ 0, /* DiagSubGroup77 */ 54 }, + { /* c++11-compat-reserved-user-defined-literal */ 1505, /* DiagArray78 */ 157, /* Empty */ 0 }, + { /* c++11-extensions */ 1548, /* DiagArray79 */ 159, /* DiagSubGroup79 */ 59 }, + { /* c++11-extra-semi */ 1565, /* DiagArray80 */ 185, /* Empty */ 0 }, + { /* c++11-inline-namespace */ 1582, /* DiagArray81 */ 187, /* Empty */ 0 }, + { /* c++11-long-long */ 1605, /* DiagArray82 */ 189, /* Empty */ 0 }, + { /* c++11-narrowing */ 1621, /* DiagArray83 */ 191, /* Empty */ 0 }, + { /* c++14-binary-literal */ 1637, /* DiagArray84 */ 199, /* Empty */ 0 }, + { /* c++14-compat */ 1658, /* Empty */ 0, /* DiagSubGroup85 */ 63 }, + { /* c++14-compat-pedantic */ 1671, /* Empty */ 0, /* DiagSubGroup86 */ 66 }, + { /* c++14-extensions */ 1693, /* DiagArray87 */ 201, /* DiagSubGroup87 */ 70 }, + { /* c++17-compat */ 1710, /* Empty */ 0, /* DiagSubGroup88 */ 72 }, + { /* c++17-compat-mangling */ 1723, /* DiagArray89 */ 210, /* Empty */ 0 }, + { /* c++17-compat-pedantic */ 1745, /* Empty */ 0, /* DiagSubGroup90 */ 77 }, + { /* c++17-extensions */ 1767, /* DiagArray91 */ 212, /* Empty */ 0 }, + { /* c++1y-extensions */ 1784, /* Empty */ 0, /* DiagSubGroup92 */ 80 }, + { /* c++1z-compat */ 1801, /* Empty */ 0, /* DiagSubGroup93 */ 82 }, + { /* c++1z-compat-mangling */ 1814, /* Empty */ 0, /* DiagSubGroup94 */ 84 }, + { /* c++1z-extensions */ 1836, /* Empty */ 0, /* DiagSubGroup95 */ 86 }, + { /* c++2a-compat */ 1853, /* DiagArray96 */ 231, /* Empty */ 0 }, + { /* c++2a-compat-pedantic */ 1866, /* Empty */ 0, /* DiagSubGroup97 */ 88 }, + { /* c++2a-extensions */ 1888, /* DiagArray98 */ 236, /* Empty */ 0 }, + { /* c++98-c++11-c++14-c++17-compat */ 1905, /* DiagArray99 */ 244, /* Empty */ 0 }, + { /* c++98-c++11-c++14-c++17-compat-pedantic */ 1936, /* DiagArray100 */ 255, /* DiagSubGroup100 */ 90 }, + { /* c++98-c++11-c++14-compat */ 1976, /* DiagArray101 */ 257, /* Empty */ 0 }, + { /* c++98-c++11-c++14-compat-pedantic */ 2001, /* DiagArray102 */ 275, /* DiagSubGroup102 */ 92 }, + { /* c++98-c++11-compat */ 2035, /* DiagArray103 */ 278, /* Empty */ 0 }, + { /* c++98-c++11-compat-binary-literal */ 2054, /* DiagArray104 */ 290, /* Empty */ 0 }, + { /* c++98-c++11-compat-pedantic */ 2088, /* Empty */ 0, /* DiagSubGroup105 */ 94 }, + { /* c++98-compat */ 2116, /* DiagArray106 */ 292, /* DiagSubGroup106 */ 97 }, + { /* c++98-compat-bind-to-temporary-copy */ 2129, /* DiagArray107 */ 352, /* Empty */ 0 }, + { /* c++98-compat-extra-semi */ 2165, /* DiagArray108 */ 354, /* Empty */ 0 }, + { /* c++98-compat-local-type-template-args */ 2189, /* DiagArray109 */ 356, /* Empty */ 0 }, + { /* c++98-compat-pedantic */ 2227, /* DiagArray110 */ 358, /* DiagSubGroup110 */ 103 }, + { /* c++98-compat-unnamed-type-template-args */ 2249, /* DiagArray111 */ 368, /* Empty */ 0 }, + { /* c11-extensions */ 2289, /* DiagArray112 */ 370, /* Empty */ 0 }, + { /* c99-compat */ 2304, /* DiagArray113 */ 377, /* Empty */ 0 }, + { /* c99-extensions */ 2315, /* DiagArray114 */ 381, /* Empty */ 0 }, + { /* call-to-pure-virtual-from-ctor-dtor */ 2330, /* DiagArray115 */ 392, /* Empty */ 0 }, + { /* cast-align */ 2366, /* DiagArray116 */ 394, /* Empty */ 0 }, + { /* cast-calling-convention */ 2377, /* DiagArray117 */ 396, /* Empty */ 0 }, + { /* cast-of-sel-type */ 2401, /* DiagArray118 */ 398, /* Empty */ 0 }, + { /* cast-qual */ 2418, /* DiagArray119 */ 400, /* Empty */ 0 }, + { /* cast-qual-unrelated */ 2428, /* DiagArray120 */ 403, /* Empty */ 0 }, + { /* char-align */ 2448, /* Empty */ 0, /* Empty */ 0 }, + { /* char-subscripts */ 2459, /* DiagArray122 */ 405, /* Empty */ 0 }, + { /* clang-cl-pch */ 2475, /* DiagArray123 */ 408, /* Empty */ 0 }, + { /* class-varargs */ 2488, /* DiagArray124 */ 414, /* DiagSubGroup124 */ 110 }, + { /* comma */ 2502, /* DiagArray125 */ 416, /* Empty */ 0 }, + { /* comment */ 2508, /* DiagArray126 */ 418, /* Empty */ 0 }, + { /* comments */ 2516, /* Empty */ 0, /* DiagSubGroup127 */ 112 }, + { /* compare-distinct-pointer-types */ 2525, /* DiagArray128 */ 423, /* Empty */ 0 }, + { /* complex-component-init */ 2556, /* DiagArray129 */ 425, /* Empty */ 0 }, + { /* conditional-type-mismatch */ 2579, /* DiagArray130 */ 427, /* Empty */ 0 }, + { /* conditional-uninitialized */ 2605, /* DiagArray131 */ 429, /* Empty */ 0 }, + { /* config-macros */ 2631, /* DiagArray132 */ 431, /* Empty */ 0 }, + { /* constant-conversion */ 2645, /* DiagArray133 */ 433, /* DiagSubGroup133 */ 114 }, + { /* constant-logical-operand */ 2665, /* DiagArray134 */ 435, /* Empty */ 0 }, + { /* constexpr-not-const */ 2690, /* DiagArray135 */ 437, /* Empty */ 0 }, + { /* consumed */ 2710, /* DiagArray136 */ 439, /* Empty */ 0 }, + { /* conversion */ 2719, /* DiagArray137 */ 448, /* DiagSubGroup137 */ 116 }, + { /* conversion-null */ 2730, /* Empty */ 0, /* DiagSubGroup138 */ 132 }, + { /* coroutine */ 2746, /* Empty */ 0, /* DiagSubGroup139 */ 134 }, + { /* coroutine-missing-unhandled-exception */ 2756, /* DiagArray140 */ 454, /* Empty */ 0 }, + { /* covered-switch-default */ 2794, /* DiagArray141 */ 456, /* Empty */ 0 }, + { /* cpp */ 2817, /* Empty */ 0, /* DiagSubGroup142 */ 136 }, + { /* cstring-format-directive */ 2821, /* DiagArray143 */ 458, /* Empty */ 0 }, + { /* ctad-maybe-unsupported */ 2846, /* DiagArray144 */ 460, /* Empty */ 0 }, + { /* ctor-dtor-privacy */ 2869, /* Empty */ 0, /* Empty */ 0 }, + { /* ctu */ 2887, /* DiagArray146 */ 462, /* Empty */ 0 }, + { /* cuda-compat */ 2891, /* DiagArray147 */ 464, /* Empty */ 0 }, + { /* custom-atomic-properties */ 2903, /* DiagArray148 */ 470, /* Empty */ 0 }, + { /* dangling */ 2928, /* DiagArray149 */ 472, /* DiagSubGroup149 */ 138 }, + { /* dangling-else */ 2937, /* DiagArray150 */ 475, /* Empty */ 0 }, + { /* dangling-field */ 2951, /* DiagArray151 */ 477, /* Empty */ 0 }, + { /* dangling-initializer-list */ 2966, /* DiagArray152 */ 482, /* Empty */ 0 }, + { /* darwin-sdk-settings */ 2992, /* DiagArray153 */ 484, /* Empty */ 0 }, + { /* date-time */ 3012, /* DiagArray154 */ 486, /* Empty */ 0 }, + { /* dealloc-in-category */ 3022, /* DiagArray155 */ 488, /* Empty */ 0 }, + { /* debug-compression-unavailable */ 3042, /* DiagArray156 */ 490, /* Empty */ 0 }, + { /* declaration-after-statement */ 3072, /* DiagArray157 */ 492, /* Empty */ 0 }, + { /* defaulted-function-deleted */ 3100, /* DiagArray158 */ 494, /* Empty */ 0 }, + { /* delegating-ctor-cycles */ 3127, /* DiagArray159 */ 496, /* Empty */ 0 }, + { /* delete-abstract-non-virtual-dtor */ 3150, /* DiagArray160 */ 498, /* Empty */ 0 }, + { /* delete-incomplete */ 3183, /* DiagArray161 */ 500, /* Empty */ 0 }, + { /* delete-non-abstract-non-virtual-dtor */ 3201, /* DiagArray162 */ 503, /* Empty */ 0 }, + { /* delete-non-virtual-dtor */ 3238, /* Empty */ 0, /* DiagSubGroup163 */ 142 }, + { /* deprecated */ 3262, /* DiagArray164 */ 505, /* DiagSubGroup164 */ 145 }, + { /* deprecated-attributes */ 3273, /* DiagArray165 */ 514, /* Empty */ 0 }, + { /* deprecated-declarations */ 3295, /* DiagArray166 */ 516, /* Empty */ 0 }, + { /* deprecated-dynamic-exception-spec */ 3319, /* DiagArray167 */ 523, /* Empty */ 0 }, + { /* deprecated-implementations */ 3353, /* DiagArray168 */ 525, /* Empty */ 0 }, + { /* deprecated-increment-bool */ 3380, /* DiagArray169 */ 528, /* Empty */ 0 }, + { /* deprecated-objc-isa-usage */ 3406, /* DiagArray170 */ 530, /* Empty */ 0 }, + { /* deprecated-objc-pointer-introspection */ 3432, /* DiagArray171 */ 533, /* DiagSubGroup171 */ 153 }, + { /* deprecated-objc-pointer-introspection-performSelector */ 3470, /* DiagArray172 */ 535, /* Empty */ 0 }, + { /* deprecated-register */ 3524, /* DiagArray173 */ 537, /* Empty */ 0 }, + { /* deprecated-this-capture */ 3544, /* DiagArray174 */ 539, /* Empty */ 0 }, + { /* deprecated-writable-strings */ 3568, /* Empty */ 0, /* DiagSubGroup175 */ 155 }, + { /* direct-ivar-access */ 3596, /* DiagArray176 */ 541, /* Empty */ 0 }, + { /* disabled-macro-expansion */ 3615, /* DiagArray177 */ 543, /* Empty */ 0 }, + { /* disabled-optimization */ 3640, /* Empty */ 0, /* Empty */ 0 }, + { /* discard-qual */ 3662, /* Empty */ 0, /* Empty */ 0 }, + { /* distributed-object-modifiers */ 3675, /* DiagArray180 */ 545, /* Empty */ 0 }, + { /* div-by-zero */ 3704, /* Empty */ 0, /* DiagSubGroup181 */ 157 }, + { /* division-by-zero */ 3716, /* DiagArray182 */ 548, /* Empty */ 0 }, + { /* dll-attribute-on-redeclaration */ 3733, /* DiagArray183 */ 550, /* Empty */ 0 }, + { /* dllexport-explicit-instantiation-decl */ 3764, /* DiagArray184 */ 552, /* Empty */ 0 }, + { /* dllimport-static-field-def */ 3802, /* DiagArray185 */ 554, /* Empty */ 0 }, + { /* documentation */ 3829, /* DiagArray186 */ 556, /* DiagSubGroup186 */ 159 }, + { /* documentation-deprecated-sync */ 3843, /* DiagArray187 */ 575, /* Empty */ 0 }, + { /* documentation-html */ 3873, /* DiagArray188 */ 577, /* Empty */ 0 }, + { /* documentation-pedantic */ 3892, /* DiagArray189 */ 582, /* DiagSubGroup189 */ 162 }, + { /* documentation-unknown-command */ 3915, /* DiagArray190 */ 584, /* Empty */ 0 }, + { /* dollar-in-identifier-extension */ 3945, /* DiagArray191 */ 587, /* Empty */ 0 }, + { /* double-promotion */ 3976, /* DiagArray192 */ 589, /* Empty */ 0 }, + { /* duplicate-decl-specifier */ 3993, /* DiagArray193 */ 591, /* Empty */ 0 }, + { /* duplicate-enum */ 4018, /* DiagArray194 */ 596, /* Empty */ 0 }, + { /* duplicate-method-arg */ 4033, /* DiagArray195 */ 598, /* Empty */ 0 }, + { /* duplicate-method-match */ 4054, /* DiagArray196 */ 600, /* Empty */ 0 }, + { /* duplicate-protocol */ 4077, /* DiagArray197 */ 602, /* Empty */ 0 }, + { /* dynamic-class-memaccess */ 4096, /* DiagArray198 */ 604, /* Empty */ 0 }, + { /* dynamic-exception-spec */ 4120, /* DiagArray199 */ 606, /* DiagSubGroup199 */ 164 }, + { /* effc++ */ 4143, /* Empty */ 0, /* DiagSubGroup200 */ 166 }, + { /* embedded-directive */ 4150, /* DiagArray201 */ 608, /* Empty */ 0 }, + { /* empty-body */ 4169, /* DiagArray202 */ 610, /* Empty */ 0 }, + { /* empty-decomposition */ 4180, /* DiagArray203 */ 616, /* Empty */ 0 }, + { /* empty-init-stmt */ 4200, /* DiagArray204 */ 618, /* Empty */ 0 }, + { /* empty-translation-unit */ 4216, /* DiagArray205 */ 620, /* Empty */ 0 }, + { /* encode-type */ 4239, /* DiagArray206 */ 622, /* Empty */ 0 }, + { /* endif-labels */ 4251, /* Empty */ 0, /* DiagSubGroup207 */ 168 }, + { /* enum-compare */ 4264, /* DiagArray208 */ 624, /* DiagSubGroup208 */ 170 }, + { /* enum-compare-switch */ 4277, /* DiagArray209 */ 626, /* Empty */ 0 }, + { /* enum-conversion */ 4297, /* DiagArray210 */ 628, /* Empty */ 0 }, + { /* enum-too-large */ 4313, /* DiagArray211 */ 630, /* Empty */ 0 }, + { /* exceptions */ 4328, /* DiagArray212 */ 633, /* Empty */ 0 }, + { /* exit-time-destructors */ 4339, /* DiagArray213 */ 637, /* Empty */ 0 }, + { /* expansion-to-defined */ 4361, /* DiagArray214 */ 639, /* Empty */ 0 }, + { /* experimental-isel */ 4382, /* DiagArray215 */ 642, /* Empty */ 0 }, + { /* explicit-initialize-call */ 4400, /* DiagArray216 */ 645, /* Empty */ 0 }, + { /* explicit-ownership-type */ 4425, /* DiagArray217 */ 648, /* Empty */ 0 }, + { /* extern-c-compat */ 4449, /* DiagArray218 */ 650, /* Empty */ 0 }, + { /* extern-initializer */ 4465, /* DiagArray219 */ 652, /* Empty */ 0 }, + { /* extra */ 4484, /* DiagArray220 */ 654, /* DiagSubGroup220 */ 172 }, + { /* extra-qualification */ 4490, /* DiagArray221 */ 656, /* Empty */ 0 }, + { /* extra-semi */ 4510, /* DiagArray222 */ 658, /* DiagSubGroup222 */ 182 }, + { /* extra-semi-stmt */ 4521, /* DiagArray223 */ 661, /* DiagSubGroup223 */ 185 }, + { /* extra-tokens */ 4537, /* DiagArray224 */ 663, /* Empty */ 0 }, + { /* fallback */ 4550, /* DiagArray225 */ 666, /* Empty */ 0 }, + { /* fixed-enum-extension */ 4559, /* DiagArray226 */ 668, /* Empty */ 0 }, + { /* flag-enum */ 4580, /* DiagArray227 */ 670, /* Empty */ 0 }, + { /* flexible-array-extensions */ 4590, /* DiagArray228 */ 672, /* Empty */ 0 }, + { /* float-conversion */ 4616, /* DiagArray229 */ 675, /* DiagSubGroup229 */ 187 }, + { /* float-equal */ 4633, /* DiagArray230 */ 677, /* Empty */ 0 }, + { /* float-overflow-conversion */ 4645, /* DiagArray231 */ 679, /* Empty */ 0 }, + { /* float-zero-conversion */ 4671, /* DiagArray232 */ 682, /* Empty */ 0 }, + { /* for-loop-analysis */ 4693, /* DiagArray233 */ 684, /* Empty */ 0 }, + { /* format */ 4711, /* DiagArray234 */ 687, /* DiagSubGroup234 */ 190 }, + { /* format-extra-args */ 4718, /* DiagArray235 */ 713, /* Empty */ 0 }, + { /* format-invalid-specifier */ 4736, /* DiagArray236 */ 715, /* Empty */ 0 }, + { /* format-non-iso */ 4761, /* DiagArray237 */ 717, /* Empty */ 0 }, + { /* format-nonliteral */ 4776, /* DiagArray238 */ 721, /* Empty */ 0 }, + { /* format-pedantic */ 4794, /* DiagArray239 */ 723, /* Empty */ 0 }, + { /* format-security */ 4810, /* DiagArray240 */ 726, /* Empty */ 0 }, + { /* format-y2k */ 4826, /* Empty */ 0, /* Empty */ 0 }, + { /* format-zero-length */ 4837, /* DiagArray242 */ 728, /* Empty */ 0 }, + { /* format=2 */ 4856, /* Empty */ 0, /* DiagSubGroup243 */ 197 }, + { /* four-char-constants */ 4865, /* DiagArray244 */ 730, /* Empty */ 0 }, + { /* frame-larger-than= */ 4885, /* DiagArray245 */ 732, /* Empty */ 0 }, + { /* framework-include-private-from-public */ 4904, /* DiagArray246 */ 735, /* Empty */ 0 }, + { /* function-def-in-objc-container */ 4942, /* DiagArray247 */ 737, /* Empty */ 0 }, + { /* function-multiversion */ 4973, /* DiagArray248 */ 739, /* Empty */ 0 }, + { /* future-compat */ 4995, /* Empty */ 0, /* Empty */ 0 }, + { /* gcc-compat */ 5009, /* DiagArray250 */ 742, /* Empty */ 0 }, + { /* global-constructors */ 5020, /* DiagArray251 */ 753, /* Empty */ 0 }, + { /* gnu */ 5040, /* Empty */ 0, /* DiagSubGroup252 */ 201 }, + { /* gnu-alignof-expression */ 5044, /* DiagArray253 */ 756, /* Empty */ 0 }, + { /* gnu-anonymous-struct */ 5067, /* DiagArray254 */ 758, /* Empty */ 0 }, + { /* gnu-array-member-paren-init */ 5088, /* DiagArray255 */ 760, /* Empty */ 0 }, + { /* gnu-auto-type */ 5116, /* DiagArray256 */ 762, /* Empty */ 0 }, + { /* gnu-binary-literal */ 5130, /* DiagArray257 */ 764, /* Empty */ 0 }, + { /* gnu-case-range */ 5149, /* DiagArray258 */ 766, /* Empty */ 0 }, + { /* gnu-complex-integer */ 5164, /* DiagArray259 */ 768, /* Empty */ 0 }, + { /* gnu-compound-literal-initializer */ 5184, /* DiagArray260 */ 770, /* Empty */ 0 }, + { /* gnu-conditional-omitted-operand */ 5217, /* DiagArray261 */ 772, /* Empty */ 0 }, + { /* gnu-designator */ 5249, /* DiagArray262 */ 774, /* Empty */ 0 }, + { /* gnu-empty-initializer */ 5264, /* DiagArray263 */ 778, /* Empty */ 0 }, + { /* gnu-empty-struct */ 5286, /* DiagArray264 */ 780, /* Empty */ 0 }, + { /* gnu-flexible-array-initializer */ 5303, /* DiagArray265 */ 784, /* Empty */ 0 }, + { /* gnu-flexible-array-union-member */ 5334, /* DiagArray266 */ 786, /* Empty */ 0 }, + { /* gnu-folding-constant */ 5366, /* DiagArray267 */ 788, /* Empty */ 0 }, + { /* gnu-imaginary-constant */ 5387, /* DiagArray268 */ 792, /* Empty */ 0 }, + { /* gnu-include-next */ 5410, /* DiagArray269 */ 794, /* Empty */ 0 }, + { /* gnu-label-as-value */ 5427, /* DiagArray270 */ 796, /* Empty */ 0 }, + { /* gnu-redeclared-enum */ 5446, /* DiagArray271 */ 799, /* Empty */ 0 }, + { /* gnu-statement-expression */ 5466, /* DiagArray272 */ 801, /* Empty */ 0 }, + { /* gnu-static-float-init */ 5491, /* DiagArray273 */ 803, /* Empty */ 0 }, + { /* gnu-string-literal-operator-template */ 5513, /* DiagArray274 */ 805, /* Empty */ 0 }, + { /* gnu-union-cast */ 5550, /* DiagArray275 */ 807, /* Empty */ 0 }, + { /* gnu-variable-sized-type-not-at-end */ 5565, /* DiagArray276 */ 809, /* Empty */ 0 }, + { /* gnu-zero-line-directive */ 5600, /* DiagArray277 */ 811, /* Empty */ 0 }, + { /* gnu-zero-variadic-macro-arguments */ 5624, /* DiagArray278 */ 813, /* Empty */ 0 }, + { /* header-guard */ 5658, /* DiagArray279 */ 816, /* Empty */ 0 }, + { /* header-hygiene */ 5671, /* DiagArray280 */ 818, /* Empty */ 0 }, + { /* idiomatic-parentheses */ 5686, /* DiagArray281 */ 820, /* Empty */ 0 }, + { /* ignored-attributes */ 5708, /* DiagArray282 */ 822, /* Empty */ 0 }, + { /* ignored-optimization-argument */ 5727, /* DiagArray283 */ 883, /* Empty */ 0 }, + { /* ignored-pragma-intrinsic */ 5757, /* DiagArray284 */ 886, /* Empty */ 0 }, + { /* ignored-pragma-optimize */ 5782, /* DiagArray285 */ 888, /* Empty */ 0 }, + { /* ignored-pragmas */ 5806, /* DiagArray286 */ 890, /* DiagSubGroup286 */ 230 }, + { /* ignored-qualifiers */ 5822, /* DiagArray287 */ 933, /* Empty */ 0 }, + { /* implicit */ 5841, /* Empty */ 0, /* DiagSubGroup288 */ 233 }, + { /* implicit-atomic-properties */ 5850, /* DiagArray289 */ 939, /* Empty */ 0 }, + { /* implicit-conversion-floating-point-to-bool */ 5877, /* DiagArray290 */ 942, /* Empty */ 0 }, + { /* implicit-exception-spec-mismatch */ 5920, /* DiagArray291 */ 944, /* Empty */ 0 }, + { /* implicit-fallthrough */ 5953, /* DiagArray292 */ 946, /* DiagSubGroup292 */ 236 }, + { /* implicit-fallthrough-per-function */ 5974, /* DiagArray293 */ 949, /* Empty */ 0 }, + { /* implicit-fixed-point-conversion */ 6008, /* DiagArray294 */ 951, /* Empty */ 0 }, + { /* implicit-float-conversion */ 6040, /* DiagArray295 */ 953, /* Empty */ 0 }, + { /* implicit-function-declaration */ 6066, /* DiagArray296 */ 956, /* Empty */ 0 }, + { /* implicit-int */ 6096, /* DiagArray297 */ 961, /* Empty */ 0 }, + { /* implicit-int-conversion */ 6109, /* DiagArray298 */ 963, /* Empty */ 0 }, + { /* implicit-retain-self */ 6133, /* DiagArray299 */ 966, /* Empty */ 0 }, + { /* implicitly-unsigned-literal */ 6154, /* DiagArray300 */ 968, /* Empty */ 0 }, + { /* import */ 6182, /* Empty */ 0, /* Empty */ 0 }, + { /* import-preprocessor-directive-pedantic */ 6189, /* DiagArray302 */ 970, /* Empty */ 0 }, + { /* inaccessible-base */ 6228, /* DiagArray303 */ 972, /* Empty */ 0 }, + { /* include-next-absolute-path */ 6246, /* DiagArray304 */ 974, /* Empty */ 0 }, + { /* include-next-outside-header */ 6273, /* DiagArray305 */ 976, /* Empty */ 0 }, + { /* incompatible-exception-spec */ 6301, /* DiagArray306 */ 978, /* Empty */ 0 }, + { /* incompatible-function-pointer-types */ 6329, /* DiagArray307 */ 981, /* Empty */ 0 }, + { /* incompatible-library-redeclaration */ 6365, /* DiagArray308 */ 983, /* Empty */ 0 }, + { /* incompatible-ms-struct */ 6400, /* DiagArray309 */ 985, /* Empty */ 0 }, + { /* incompatible-pointer-types */ 6423, /* DiagArray310 */ 988, /* DiagSubGroup310 */ 238 }, + { /* incompatible-pointer-types-discards-qualifiers */ 6450, /* DiagArray311 */ 990, /* Empty */ 0 }, + { /* incompatible-property-type */ 6497, /* DiagArray312 */ 993, /* Empty */ 0 }, + { /* incompatible-sysroot */ 6524, /* DiagArray313 */ 995, /* Empty */ 0 }, + { /* incomplete-framework-module-declaration */ 6545, /* DiagArray314 */ 997, /* Empty */ 0 }, + { /* incomplete-implementation */ 6585, /* DiagArray315 */ 999, /* Empty */ 0 }, + { /* incomplete-module */ 6611, /* Empty */ 0, /* DiagSubGroup316 */ 241 }, + { /* incomplete-umbrella */ 6629, /* DiagArray317 */ 1001, /* Empty */ 0 }, + { /* inconsistent-dllimport */ 6649, /* DiagArray318 */ 1005, /* Empty */ 0 }, + { /* inconsistent-missing-destructor-override */ 6672, /* DiagArray319 */ 1008, /* Empty */ 0 }, + { /* inconsistent-missing-override */ 6713, /* DiagArray320 */ 1010, /* Empty */ 0 }, + { /* increment-bool */ 6743, /* DiagArray321 */ 1012, /* DiagSubGroup321 */ 244 }, + { /* infinite-recursion */ 6758, /* DiagArray322 */ 1014, /* Empty */ 0 }, + { /* init-self */ 6777, /* Empty */ 0, /* Empty */ 0 }, + { /* initializer-overrides */ 6787, /* DiagArray324 */ 1016, /* Empty */ 0 }, + { /* injected-class-name */ 6809, /* DiagArray325 */ 1019, /* Empty */ 0 }, + { /* inline */ 6829, /* Empty */ 0, /* Empty */ 0 }, + { /* inline-asm */ 6836, /* DiagArray327 */ 1021, /* Empty */ 0 }, + { /* inline-new-delete */ 6847, /* DiagArray328 */ 1023, /* Empty */ 0 }, + { /* instantiation-after-specialization */ 6865, /* DiagArray329 */ 1025, /* Empty */ 0 }, + { /* int-conversion */ 6900, /* DiagArray330 */ 1027, /* Empty */ 0 }, + { /* int-conversions */ 6915, /* Empty */ 0, /* DiagSubGroup331 */ 246 }, + { /* int-to-pointer-cast */ 6931, /* DiagArray332 */ 1030, /* DiagSubGroup332 */ 248 }, + { /* int-to-void-pointer-cast */ 6951, /* DiagArray333 */ 1032, /* Empty */ 0 }, + { /* integer-overflow */ 6976, /* DiagArray334 */ 1034, /* Empty */ 0 }, + { /* invalid-command-line-argument */ 6993, /* DiagArray335 */ 1036, /* DiagSubGroup335 */ 250 }, + { /* invalid-constexpr */ 7023, /* DiagArray336 */ 1042, /* Empty */ 0 }, + { /* invalid-iboutlet */ 7041, /* DiagArray337 */ 1044, /* Empty */ 0 }, + { /* invalid-initializer-from-system-header */ 7058, /* DiagArray338 */ 1047, /* Empty */ 0 }, + { /* invalid-ios-deployment-target */ 7097, /* DiagArray339 */ 1049, /* Empty */ 0 }, + { /* invalid-noreturn */ 7127, /* DiagArray340 */ 1051, /* Empty */ 0 }, + { /* invalid-offsetof */ 7144, /* DiagArray341 */ 1054, /* Empty */ 0 }, + { /* invalid-or-nonexistent-directory */ 7161, /* DiagArray342 */ 1057, /* Empty */ 0 }, + { /* invalid-partial-specialization */ 7194, /* DiagArray343 */ 1060, /* Empty */ 0 }, + { /* invalid-pch */ 7225, /* Empty */ 0, /* Empty */ 0 }, + { /* invalid-pp-token */ 7237, /* DiagArray345 */ 1062, /* Empty */ 0 }, + { /* invalid-source-encoding */ 7254, /* DiagArray346 */ 1065, /* Empty */ 0 }, + { /* invalid-token-paste */ 7278, /* DiagArray347 */ 1068, /* Empty */ 0 }, + { /* jump-seh-finally */ 7298, /* DiagArray348 */ 1070, /* Empty */ 0 }, + { /* keyword-compat */ 7315, /* DiagArray349 */ 1072, /* Empty */ 0 }, + { /* keyword-macro */ 7330, /* DiagArray350 */ 1074, /* Empty */ 0 }, + { /* knr-promoted-parameter */ 7344, /* DiagArray351 */ 1076, /* Empty */ 0 }, + { /* language-extension-token */ 7367, /* DiagArray352 */ 1078, /* Empty */ 0 }, + { /* large-by-value-copy */ 7392, /* DiagArray353 */ 1080, /* Empty */ 0 }, + { /* liblto */ 7412, /* Empty */ 0, /* Empty */ 0 }, + { /* literal-conversion */ 7419, /* DiagArray355 */ 1083, /* Empty */ 0 }, + { /* literal-range */ 7438, /* DiagArray356 */ 1086, /* Empty */ 0 }, + { /* local-type-template-args */ 7452, /* DiagArray357 */ 1089, /* DiagSubGroup357 */ 252 }, + { /* logical-not-parentheses */ 7477, /* DiagArray358 */ 1091, /* Empty */ 0 }, + { /* logical-op-parentheses */ 7501, /* DiagArray359 */ 1093, /* Empty */ 0 }, + { /* long-long */ 7524, /* DiagArray360 */ 1095, /* DiagSubGroup360 */ 254 }, + { /* loop-analysis */ 7534, /* Empty */ 0, /* DiagSubGroup361 */ 256 }, + { /* macro-redefined */ 7548, /* DiagArray362 */ 1097, /* Empty */ 0 }, + { /* main */ 7564, /* DiagArray363 */ 1099, /* Empty */ 0 }, + { /* main-return-type */ 7569, /* DiagArray364 */ 1107, /* Empty */ 0 }, + { /* malformed-warning-check */ 7586, /* DiagArray365 */ 1109, /* Empty */ 0 }, + { /* many-braces-around-scalar-init */ 7610, /* DiagArray366 */ 1111, /* Empty */ 0 }, + { /* max-unsigned-zero */ 7641, /* DiagArray367 */ 1113, /* Empty */ 0 }, + { /* memset-transposed-args */ 7659, /* DiagArray368 */ 1115, /* Empty */ 0 }, + { /* memsize-comparison */ 7682, /* DiagArray369 */ 1117, /* Empty */ 0 }, + { /* method-signatures */ 7701, /* DiagArray370 */ 1119, /* Empty */ 0 }, + { /* microsoft */ 7719, /* Empty */ 0, /* DiagSubGroup371 */ 259 }, + { /* microsoft-anon-tag */ 7729, /* DiagArray372 */ 1122, /* Empty */ 0 }, + { /* microsoft-cast */ 7748, /* DiagArray373 */ 1125, /* Empty */ 0 }, + { /* microsoft-charize */ 7763, /* DiagArray374 */ 1128, /* Empty */ 0 }, + { /* microsoft-comment-paste */ 7781, /* DiagArray375 */ 1130, /* Empty */ 0 }, + { /* microsoft-const-init */ 7805, /* DiagArray376 */ 1132, /* Empty */ 0 }, + { /* microsoft-cpp-macro */ 7826, /* DiagArray377 */ 1134, /* Empty */ 0 }, + { /* microsoft-default-arg-redefinition */ 7846, /* DiagArray378 */ 1136, /* Empty */ 0 }, + { /* microsoft-end-of-file */ 7881, /* DiagArray379 */ 1138, /* Empty */ 0 }, + { /* microsoft-enum-forward-reference */ 7903, /* DiagArray380 */ 1140, /* Empty */ 0 }, + { /* microsoft-enum-value */ 7936, /* DiagArray381 */ 1142, /* Empty */ 0 }, + { /* microsoft-exception-spec */ 7957, /* DiagArray382 */ 1144, /* Empty */ 0 }, + { /* microsoft-exists */ 7982, /* DiagArray383 */ 1151, /* Empty */ 0 }, + { /* microsoft-explicit-constructor-call */ 7999, /* DiagArray384 */ 1153, /* Empty */ 0 }, + { /* microsoft-extra-qualification */ 8035, /* DiagArray385 */ 1155, /* Empty */ 0 }, + { /* microsoft-fixed-enum */ 8065, /* DiagArray386 */ 1157, /* Empty */ 0 }, + { /* microsoft-flexible-array */ 8086, /* DiagArray387 */ 1159, /* Empty */ 0 }, + { /* microsoft-goto */ 8111, /* DiagArray388 */ 1162, /* Empty */ 0 }, + { /* microsoft-inaccessible-base */ 8126, /* DiagArray389 */ 1164, /* Empty */ 0 }, + { /* microsoft-include */ 8154, /* DiagArray390 */ 1166, /* Empty */ 0 }, + { /* microsoft-mutable-reference */ 8172, /* DiagArray391 */ 1168, /* Empty */ 0 }, + { /* microsoft-pure-definition */ 8200, /* DiagArray392 */ 1170, /* Empty */ 0 }, + { /* microsoft-redeclare-static */ 8226, /* DiagArray393 */ 1172, /* Empty */ 0 }, + { /* microsoft-sealed */ 8253, /* DiagArray394 */ 1174, /* Empty */ 0 }, + { /* microsoft-template */ 8270, /* DiagArray395 */ 1176, /* Empty */ 0 }, + { /* microsoft-union-member-reference */ 8289, /* DiagArray396 */ 1185, /* Empty */ 0 }, + { /* microsoft-unqualified-friend */ 8322, /* DiagArray397 */ 1187, /* Empty */ 0 }, + { /* microsoft-using-decl */ 8351, /* DiagArray398 */ 1189, /* Empty */ 0 }, + { /* microsoft-void-pseudo-dtor */ 8372, /* DiagArray399 */ 1191, /* Empty */ 0 }, + { /* mismatched-new-delete */ 8399, /* DiagArray400 */ 1193, /* Empty */ 0 }, + { /* mismatched-parameter-types */ 8421, /* DiagArray401 */ 1195, /* Empty */ 0 }, + { /* mismatched-return-types */ 8448, /* DiagArray402 */ 1197, /* Empty */ 0 }, + { /* mismatched-tags */ 8472, /* DiagArray403 */ 1199, /* Empty */ 0 }, + { /* missing-braces */ 8488, /* DiagArray404 */ 1202, /* Empty */ 0 }, + { /* missing-declarations */ 8503, /* DiagArray405 */ 1204, /* Empty */ 0 }, + { /* missing-exception-spec */ 8524, /* DiagArray406 */ 1209, /* Empty */ 0 }, + { /* missing-field-initializers */ 8547, /* DiagArray407 */ 1211, /* Empty */ 0 }, + { /* missing-format-attribute */ 8574, /* Empty */ 0, /* Empty */ 0 }, + { /* missing-include-dirs */ 8599, /* Empty */ 0, /* Empty */ 0 }, + { /* missing-method-return-type */ 8620, /* DiagArray410 */ 1213, /* Empty */ 0 }, + { /* missing-noescape */ 8647, /* DiagArray411 */ 1215, /* Empty */ 0 }, + { /* missing-noreturn */ 8664, /* DiagArray412 */ 1217, /* Empty */ 0 }, + { /* missing-prototype-for-cc */ 8681, /* DiagArray413 */ 1220, /* Empty */ 0 }, + { /* missing-prototypes */ 8706, /* DiagArray414 */ 1222, /* Empty */ 0 }, + { /* missing-selector-name */ 8725, /* DiagArray415 */ 1224, /* Empty */ 0 }, + { /* missing-sysroot */ 8747, /* DiagArray416 */ 1226, /* Empty */ 0 }, + { /* missing-variable-declarations */ 8763, /* DiagArray417 */ 1228, /* Empty */ 0 }, + { /* module-build */ 8793, /* DiagArray418 */ 1230, /* Empty */ 0 }, + { /* module-conflict */ 8806, /* DiagArray419 */ 1235, /* Empty */ 0 }, + { /* module-file-config-mismatch */ 8822, /* DiagArray420 */ 1238, /* Empty */ 0 }, + { /* module-file-extension */ 8850, /* DiagArray421 */ 1240, /* Empty */ 0 }, + { /* module-import-in-extern-c */ 8872, /* DiagArray422 */ 1242, /* Empty */ 0 }, + { /* modules-ambiguous-internal-linkage */ 8898, /* DiagArray423 */ 1244, /* Empty */ 0 }, + { /* modules-import-nested-redundant */ 8933, /* DiagArray424 */ 1246, /* Empty */ 0 }, + { /* most */ 8965, /* Empty */ 0, /* DiagSubGroup425 */ 287 }, + { /* move */ 8970, /* Empty */ 0, /* DiagSubGroup426 */ 319 }, + { /* msvc-include */ 8975, /* Empty */ 0, /* DiagSubGroup427 */ 324 }, + { /* msvc-not-found */ 8988, /* DiagArray428 */ 1248, /* Empty */ 0 }, + { /* multichar */ 9003, /* DiagArray429 */ 1250, /* Empty */ 0 }, + { /* multiple-move-vbase */ 9013, /* DiagArray430 */ 1252, /* Empty */ 0 }, + { /* narrowing */ 9033, /* Empty */ 0, /* DiagSubGroup431 */ 326 }, + { /* nested-anon-types */ 9043, /* DiagArray432 */ 1254, /* Empty */ 0 }, + { /* nested-externs */ 9061, /* Empty */ 0, /* Empty */ 0 }, + { /* new-returns-null */ 9076, /* DiagArray434 */ 1256, /* Empty */ 0 }, + { /* newline-eof */ 9093, /* DiagArray435 */ 1258, /* Empty */ 0 }, + { /* noderef */ 9105, /* DiagArray436 */ 1261, /* Empty */ 0 }, + { /* noexcept-type */ 9113, /* Empty */ 0, /* DiagSubGroup437 */ 328 }, + { /* non-gcc */ 9127, /* Empty */ 0, /* DiagSubGroup438 */ 330 }, + { /* non-literal-null-conversion */ 9135, /* DiagArray439 */ 1265, /* Empty */ 0 }, + { /* non-modular-include-in-framework-module */ 9163, /* DiagArray440 */ 1267, /* Empty */ 0 }, + { /* non-modular-include-in-module */ 9203, /* DiagArray441 */ 1269, /* DiagSubGroup441 */ 334 }, + { /* non-pod-varargs */ 9233, /* DiagArray442 */ 1271, /* Empty */ 0 }, + { /* non-virtual-dtor */ 9249, /* DiagArray443 */ 1276, /* Empty */ 0 }, + { /* nonnull */ 9266, /* DiagArray444 */ 1278, /* Empty */ 0 }, + { /* nonportable-cfstrings */ 9274, /* Empty */ 0, /* Empty */ 0 }, + { /* nonportable-include-path */ 9296, /* DiagArray446 */ 1281, /* Empty */ 0 }, + { /* nonportable-system-include-path */ 9321, /* DiagArray447 */ 1283, /* Empty */ 0 }, + { /* nonportable-vector-initialization */ 9353, /* DiagArray448 */ 1285, /* Empty */ 0 }, + { /* nontrivial-memaccess */ 9387, /* DiagArray449 */ 1287, /* Empty */ 0 }, + { /* nsconsumed-mismatch */ 9408, /* DiagArray450 */ 1289, /* Empty */ 0 }, + { /* nsreturns-mismatch */ 9428, /* DiagArray451 */ 1291, /* Empty */ 0 }, + { /* null-arithmetic */ 9447, /* DiagArray452 */ 1293, /* Empty */ 0 }, + { /* null-character */ 9463, /* DiagArray453 */ 1296, /* Empty */ 0 }, + { /* null-conversion */ 9478, /* DiagArray454 */ 1299, /* Empty */ 0 }, + { /* null-dereference */ 9494, /* DiagArray455 */ 1301, /* Empty */ 0 }, + { /* null-pointer-arithmetic */ 9511, /* DiagArray456 */ 1304, /* Empty */ 0 }, + { /* nullability */ 9535, /* DiagArray457 */ 1307, /* Empty */ 0 }, + { /* nullability-completeness */ 9547, /* DiagArray458 */ 1313, /* DiagSubGroup458 */ 336 }, + { /* nullability-completeness-on-arrays */ 9572, /* DiagArray459 */ 1315, /* Empty */ 0 }, + { /* nullability-declspec */ 9607, /* DiagArray460 */ 1317, /* Empty */ 0 }, + { /* nullability-extension */ 9628, /* DiagArray461 */ 1319, /* Empty */ 0 }, + { /* nullability-inferred-on-nested-type */ 9650, /* DiagArray462 */ 1321, /* Empty */ 0 }, + { /* nullable-to-nonnull-conversion */ 9686, /* DiagArray463 */ 1323, /* Empty */ 0 }, + { /* objc-autosynthesis-property-ivar-name-match */ 9717, /* DiagArray464 */ 1325, /* Empty */ 0 }, + { /* objc-circular-container */ 9761, /* DiagArray465 */ 1327, /* Empty */ 0 }, + { /* objc-cocoa-api */ 9785, /* Empty */ 0, /* DiagSubGroup466 */ 338 }, + { /* objc-designated-initializers */ 9800, /* DiagArray467 */ 1329, /* Empty */ 0 }, + { /* objc-flexible-array */ 9829, /* DiagArray468 */ 1336, /* Empty */ 0 }, + { /* objc-forward-class-redefinition */ 9849, /* DiagArray469 */ 1339, /* Empty */ 0 }, + { /* objc-interface-ivars */ 9881, /* DiagArray470 */ 1341, /* Empty */ 0 }, + { /* objc-literal-compare */ 9902, /* DiagArray471 */ 1343, /* DiagSubGroup471 */ 340 }, + { /* objc-literal-conversion */ 9923, /* DiagArray472 */ 1345, /* Empty */ 0 }, + { /* objc-macro-redefinition */ 9947, /* DiagArray473 */ 1348, /* Empty */ 0 }, + { /* objc-messaging-id */ 9971, /* DiagArray474 */ 1350, /* Empty */ 0 }, + { /* objc-method-access */ 9989, /* DiagArray475 */ 1352, /* Empty */ 0 }, + { /* objc-missing-property-synthesis */ 10008, /* DiagArray476 */ 1359, /* Empty */ 0 }, + { /* objc-missing-super-calls */ 10040, /* DiagArray477 */ 1361, /* Empty */ 0 }, + { /* objc-multiple-method-names */ 10065, /* DiagArray478 */ 1363, /* Empty */ 0 }, + { /* objc-noncopy-retain-block-property */ 10092, /* DiagArray479 */ 1365, /* Empty */ 0 }, + { /* objc-nonunified-exceptions */ 10127, /* DiagArray480 */ 1367, /* Empty */ 0 }, + { /* objc-property-assign-on-object-type */ 10154, /* DiagArray481 */ 1369, /* Empty */ 0 }, + { /* objc-property-implementation */ 10190, /* DiagArray482 */ 1371, /* Empty */ 0 }, + { /* objc-property-implicit-mismatch */ 10219, /* DiagArray483 */ 1376, /* Empty */ 0 }, + { /* objc-property-matches-cocoa-ownership-rule */ 10251, /* DiagArray484 */ 1378, /* Empty */ 0 }, + { /* objc-property-no-attribute */ 10294, /* DiagArray485 */ 1380, /* Empty */ 0 }, + { /* objc-property-synthesis */ 10321, /* DiagArray486 */ 1383, /* Empty */ 0 }, + { /* objc-protocol-method-implementation */ 10345, /* DiagArray487 */ 1387, /* Empty */ 0 }, + { /* objc-protocol-property-synthesis */ 10381, /* DiagArray488 */ 1389, /* Empty */ 0 }, + { /* objc-protocol-qualifiers */ 10414, /* DiagArray489 */ 1391, /* Empty */ 0 }, + { /* objc-readonly-with-setter-property */ 10439, /* DiagArray490 */ 1393, /* Empty */ 0 }, + { /* objc-redundant-api-use */ 10474, /* Empty */ 0, /* DiagSubGroup491 */ 342 }, + { /* objc-redundant-literal-use */ 10497, /* DiagArray492 */ 1395, /* Empty */ 0 }, + { /* objc-root-class */ 10524, /* DiagArray493 */ 1397, /* Empty */ 0 }, + { /* objc-string-compare */ 10540, /* DiagArray494 */ 1399, /* Empty */ 0 }, + { /* objc-string-concatenation */ 10560, /* DiagArray495 */ 1401, /* Empty */ 0 }, + { /* objc-unsafe-perform-selector */ 10586, /* DiagArray496 */ 1403, /* Empty */ 0 }, + { /* odr */ 10615, /* DiagArray497 */ 1405, /* Empty */ 0 }, + { /* old-style-cast */ 10619, /* DiagArray498 */ 1407, /* Empty */ 0 }, + { /* old-style-definition */ 10634, /* Empty */ 0, /* Empty */ 0 }, + { /* opencl-unsupported-rgba */ 10655, /* DiagArray500 */ 1409, /* Empty */ 0 }, + { /* openmp-clauses */ 10679, /* DiagArray501 */ 1411, /* Empty */ 0 }, + { /* openmp-loop-form */ 10694, /* DiagArray502 */ 1414, /* Empty */ 0 }, + { /* openmp-target */ 10711, /* DiagArray503 */ 1417, /* Empty */ 0 }, + { /* option-ignored */ 10725, /* DiagArray504 */ 1422, /* Empty */ 0 }, + { /* ordered-compare-function-pointers */ 10740, /* DiagArray505 */ 1429, /* Empty */ 0 }, + { /* out-of-line-declaration */ 10774, /* DiagArray506 */ 1431, /* Empty */ 0 }, + { /* out-of-scope-function */ 10798, /* DiagArray507 */ 1433, /* Empty */ 0 }, + { /* over-aligned */ 10820, /* DiagArray508 */ 1435, /* Empty */ 0 }, + { /* overflow */ 10833, /* Empty */ 0, /* Empty */ 0 }, + { /* overlength-strings */ 10842, /* DiagArray510 */ 1437, /* Empty */ 0 }, + { /* overloaded-shift-op-parentheses */ 10861, /* DiagArray511 */ 1439, /* Empty */ 0 }, + { /* overloaded-virtual */ 10893, /* DiagArray512 */ 1441, /* Empty */ 0 }, + { /* override-init */ 10912, /* Empty */ 0, /* DiagSubGroup513 */ 344 }, + { /* override-module */ 10926, /* DiagArray514 */ 1443, /* Empty */ 0 }, + { /* overriding-method-mismatch */ 10942, /* DiagArray515 */ 1445, /* Empty */ 0 }, + { /* overriding-t-option */ 10969, /* DiagArray516 */ 1453, /* Empty */ 0 }, + { /* packed */ 10989, /* DiagArray517 */ 1455, /* Empty */ 0 }, + { /* padded */ 10996, /* DiagArray518 */ 1457, /* Empty */ 0 }, + { /* parentheses */ 11003, /* DiagArray519 */ 1461, /* DiagSubGroup519 */ 346 }, + { /* parentheses-equality */ 11015, /* DiagArray520 */ 1465, /* Empty */ 0 }, + { /* partial-availability */ 11036, /* Empty */ 0, /* DiagSubGroup521 */ 354 }, + { /* pass */ 11057, /* DiagArray522 */ 1467, /* Empty */ 0 }, + { /* pass-analysis */ 11062, /* DiagArray523 */ 1469, /* Empty */ 0 }, + { /* pass-failed */ 11076, /* DiagArray524 */ 1473, /* Empty */ 0 }, + { /* pass-missed */ 11088, /* DiagArray525 */ 1475, /* Empty */ 0 }, + { /* pch-date-time */ 11100, /* DiagArray526 */ 1477, /* Empty */ 0 }, + { /* pedantic */ 11114, /* DiagArray527 */ 1479, /* DiagSubGroup527 */ 356 }, + { /* pedantic-core-features */ 11123, /* DiagArray528 */ 1550, /* Empty */ 0 }, + { /* pessimizing-move */ 11146, /* DiagArray529 */ 1552, /* Empty */ 0 }, + { /* pointer-arith */ 11163, /* DiagArray530 */ 1555, /* Empty */ 0 }, + { /* pointer-bool-conversion */ 11177, /* DiagArray531 */ 1562, /* Empty */ 0 }, + { /* pointer-integer-compare */ 11201, /* DiagArray532 */ 1565, /* Empty */ 0 }, + { /* pointer-sign */ 11225, /* DiagArray533 */ 1567, /* Empty */ 0 }, + { /* pointer-to-int-cast */ 11238, /* Empty */ 0, /* Empty */ 0 }, + { /* pointer-type-mismatch */ 11258, /* DiagArray535 */ 1569, /* Empty */ 0 }, + { /* potentially-evaluated-expression */ 11280, /* DiagArray536 */ 1571, /* Empty */ 0 }, + { /* pragma-clang-attribute */ 11313, /* DiagArray537 */ 1573, /* Empty */ 0 }, + { /* pragma-once-outside-header */ 11336, /* DiagArray538 */ 1575, /* Empty */ 0 }, + { /* pragma-pack */ 11363, /* DiagArray539 */ 1577, /* DiagSubGroup539 */ 408 }, + { /* pragma-pack-suspicious-include */ 11375, /* DiagArray540 */ 1580, /* Empty */ 0 }, + { /* pragma-system-header-outside-header */ 11406, /* DiagArray541 */ 1582, /* Empty */ 0 }, + { /* pragmas */ 11442, /* DiagArray542 */ 1584, /* DiagSubGroup542 */ 410 }, + { /* predefined-identifier-outside-function */ 11450, /* DiagArray543 */ 1586, /* Empty */ 0 }, + { /* private-extern */ 11489, /* DiagArray544 */ 1588, /* Empty */ 0 }, + { /* private-header */ 11504, /* DiagArray545 */ 1590, /* Empty */ 0 }, + { /* private-module */ 11519, /* DiagArray546 */ 1592, /* Empty */ 0 }, + { /* profile-instr-missing */ 11534, /* DiagArray547 */ 1597, /* Empty */ 0 }, + { /* profile-instr-out-of-date */ 11556, /* DiagArray548 */ 1599, /* Empty */ 0 }, + { /* profile-instr-unprofiled */ 11582, /* DiagArray549 */ 1601, /* Empty */ 0 }, + { /* property-access-dot-syntax */ 11607, /* DiagArray550 */ 1603, /* Empty */ 0 }, + { /* property-attribute-mismatch */ 11634, /* DiagArray551 */ 1605, /* Empty */ 0 }, + { /* protocol */ 11662, /* DiagArray552 */ 1610, /* Empty */ 0 }, + { /* protocol-property-synthesis-ambiguity */ 11671, /* DiagArray553 */ 1612, /* Empty */ 0 }, + { /* qualified-void-return-type */ 11709, /* DiagArray554 */ 1614, /* Empty */ 0 }, + { /* quoted-include-in-framework-header */ 11736, /* DiagArray555 */ 1616, /* Empty */ 0 }, + { /* range-loop-analysis */ 11771, /* DiagArray556 */ 1618, /* Empty */ 0 }, + { /* readonly-iboutlet-property */ 11791, /* DiagArray557 */ 1622, /* Empty */ 0 }, + { /* receiver-expr */ 11818, /* DiagArray558 */ 1624, /* Empty */ 0 }, + { /* receiver-forward-class */ 11832, /* DiagArray559 */ 1626, /* Empty */ 0 }, + { /* redeclared-class-member */ 11855, /* DiagArray560 */ 1629, /* Empty */ 0 }, + { /* redundant-decls */ 11879, /* Empty */ 0, /* Empty */ 0 }, + { /* redundant-move */ 11895, /* DiagArray562 */ 1631, /* Empty */ 0 }, + { /* redundant-parens */ 11910, /* DiagArray563 */ 1633, /* Empty */ 0 }, + { /* register */ 11927, /* DiagArray564 */ 1635, /* DiagSubGroup564 */ 415 }, + { /* reinterpret-base-class */ 11936, /* DiagArray565 */ 1637, /* Empty */ 0 }, + { /* remark-backend-plugin */ 11959, /* DiagArray566 */ 1639, /* Empty */ 0 }, + { /* reorder */ 11981, /* DiagArray567 */ 1641, /* Empty */ 0 }, + { /* requires-super-attribute */ 11989, /* DiagArray568 */ 1643, /* Empty */ 0 }, + { /* reserved-id-macro */ 12014, /* DiagArray569 */ 1645, /* Empty */ 0 }, + { /* reserved-user-defined-literal */ 12032, /* DiagArray570 */ 1647, /* DiagSubGroup570 */ 417 }, + { /* retained-language-linkage */ 12062, /* DiagArray571 */ 1650, /* Empty */ 0 }, + { /* return-stack-address */ 12088, /* DiagArray572 */ 1652, /* Empty */ 0 }, + { /* return-std-move */ 12109, /* DiagArray573 */ 1656, /* Empty */ 0 }, + { /* return-std-move-in-c++11 */ 12125, /* DiagArray574 */ 1658, /* Empty */ 0 }, + { /* return-type */ 12150, /* DiagArray575 */ 1660, /* DiagSubGroup575 */ 419 }, + { /* return-type-c-linkage */ 12162, /* DiagArray576 */ 1670, /* Empty */ 0 }, + { /* sanitize-address */ 12184, /* DiagArray577 */ 1673, /* Empty */ 0 }, + { /* section */ 12201, /* DiagArray578 */ 1676, /* Empty */ 0 }, + { /* selector */ 12209, /* DiagArray579 */ 1680, /* DiagSubGroup579 */ 421 }, + { /* selector-type-mismatch */ 12218, /* DiagArray580 */ 1682, /* Empty */ 0 }, + { /* self-assign */ 12241, /* DiagArray581 */ 1684, /* DiagSubGroup581 */ 423 }, + { /* self-assign-field */ 12253, /* DiagArray582 */ 1686, /* Empty */ 0 }, + { /* self-assign-overloaded */ 12271, /* DiagArray583 */ 1688, /* Empty */ 0 }, + { /* self-move */ 12294, /* DiagArray584 */ 1690, /* Empty */ 0 }, + { /* semicolon-before-method-body */ 12304, /* DiagArray585 */ 1692, /* Empty */ 0 }, + { /* sentinel */ 12333, /* DiagArray586 */ 1694, /* Empty */ 0 }, + { /* sequence-point */ 12342, /* Empty */ 0, /* DiagSubGroup587 */ 426 }, + { /* serialized-diagnostics */ 12357, /* DiagArray588 */ 1697, /* Empty */ 0 }, + { /* shadow */ 12380, /* DiagArray589 */ 1700, /* DiagSubGroup589 */ 428 }, + { /* shadow-all */ 12387, /* Empty */ 0, /* DiagSubGroup590 */ 431 }, + { /* shadow-field */ 12398, /* DiagArray591 */ 1702, /* Empty */ 0 }, + { /* shadow-field-in-constructor */ 12411, /* DiagArray592 */ 1704, /* DiagSubGroup592 */ 436 }, + { /* shadow-field-in-constructor-modified */ 12439, /* DiagArray593 */ 1706, /* Empty */ 0 }, + { /* shadow-ivar */ 12476, /* DiagArray594 */ 1708, /* Empty */ 0 }, + { /* shadow-uncaptured-local */ 12488, /* DiagArray595 */ 1710, /* Empty */ 0 }, + { /* shift-count-negative */ 12512, /* DiagArray596 */ 1712, /* Empty */ 0 }, + { /* shift-count-overflow */ 12533, /* DiagArray597 */ 1714, /* Empty */ 0 }, + { /* shift-negative-value */ 12554, /* DiagArray598 */ 1716, /* Empty */ 0 }, + { /* shift-op-parentheses */ 12575, /* DiagArray599 */ 1718, /* Empty */ 0 }, + { /* shift-overflow */ 12596, /* DiagArray600 */ 1720, /* Empty */ 0 }, + { /* shift-sign-overflow */ 12611, /* DiagArray601 */ 1722, /* Empty */ 0 }, + { /* shorten-64-to-32 */ 12631, /* DiagArray602 */ 1724, /* Empty */ 0 }, + { /* sign-compare */ 12648, /* DiagArray603 */ 1726, /* Empty */ 0 }, + { /* sign-conversion */ 12661, /* DiagArray604 */ 1728, /* Empty */ 0 }, + { /* sign-promo */ 12677, /* Empty */ 0, /* Empty */ 0 }, + { /* signed-enum-bitfield */ 12688, /* DiagArray606 */ 1732, /* Empty */ 0 }, + { /* sizeof-array-argument */ 12709, /* DiagArray607 */ 1734, /* Empty */ 0 }, + { /* sizeof-array-decay */ 12731, /* DiagArray608 */ 1736, /* Empty */ 0 }, + { /* sizeof-pointer-div */ 12750, /* DiagArray609 */ 1738, /* Empty */ 0 }, + { /* sizeof-pointer-memaccess */ 12769, /* DiagArray610 */ 1740, /* Empty */ 0 }, + { /* slash-u-filename */ 12794, /* DiagArray611 */ 1743, /* Empty */ 0 }, + { /* sometimes-uninitialized */ 12811, /* DiagArray612 */ 1745, /* Empty */ 0 }, + { /* source-uses-openmp */ 12835, /* DiagArray613 */ 1747, /* Empty */ 0 }, + { /* spir-compat */ 12854, /* DiagArray614 */ 1750, /* Empty */ 0 }, + { /* stack-protector */ 12866, /* Empty */ 0, /* Empty */ 0 }, + { /* static-float-init */ 12882, /* DiagArray616 */ 1752, /* DiagSubGroup616 */ 438 }, + { /* static-in-inline */ 12900, /* DiagArray617 */ 1754, /* Empty */ 0 }, + { /* static-inline-explicit-instantiation */ 12917, /* DiagArray618 */ 1757, /* Empty */ 0 }, + { /* static-local-in-inline */ 12954, /* DiagArray619 */ 1759, /* Empty */ 0 }, + { /* static-self-init */ 12977, /* DiagArray620 */ 1761, /* Empty */ 0 }, + { /* stdlibcxx-not-found */ 12994, /* DiagArray621 */ 1763, /* Empty */ 0 }, + { /* strict-aliasing */ 13014, /* Empty */ 0, /* Empty */ 0 }, + { /* strict-aliasing=0 */ 13030, /* Empty */ 0, /* Empty */ 0 }, + { /* strict-aliasing=1 */ 13048, /* Empty */ 0, /* Empty */ 0 }, + { /* strict-aliasing=2 */ 13066, /* Empty */ 0, /* Empty */ 0 }, + { /* strict-overflow */ 13084, /* Empty */ 0, /* Empty */ 0 }, + { /* strict-overflow=0 */ 13100, /* Empty */ 0, /* Empty */ 0 }, + { /* strict-overflow=1 */ 13118, /* Empty */ 0, /* Empty */ 0 }, + { /* strict-overflow=2 */ 13136, /* Empty */ 0, /* Empty */ 0 }, + { /* strict-overflow=3 */ 13154, /* Empty */ 0, /* Empty */ 0 }, + { /* strict-overflow=4 */ 13172, /* Empty */ 0, /* Empty */ 0 }, + { /* strict-overflow=5 */ 13190, /* Empty */ 0, /* Empty */ 0 }, + { /* strict-prototypes */ 13208, /* DiagArray633 */ 1765, /* Empty */ 0 }, + { /* strict-selector-match */ 13226, /* DiagArray634 */ 1767, /* Empty */ 0 }, + { /* string-compare */ 13248, /* DiagArray635 */ 1769, /* Empty */ 0 }, + { /* string-conversion */ 13263, /* DiagArray636 */ 1771, /* Empty */ 0 }, + { /* string-plus-char */ 13281, /* DiagArray637 */ 1773, /* Empty */ 0 }, + { /* string-plus-int */ 13298, /* DiagArray638 */ 1775, /* Empty */ 0 }, + { /* strlcpy-strlcat-size */ 13314, /* DiagArray639 */ 1777, /* Empty */ 0 }, + { /* strncat-size */ 13335, /* DiagArray640 */ 1779, /* Empty */ 0 }, + { /* super-class-method-mismatch */ 13348, /* DiagArray641 */ 1783, /* Empty */ 0 }, + { /* suspicious-bzero */ 13376, /* DiagArray642 */ 1785, /* Empty */ 0 }, + { /* suspicious-memaccess */ 13393, /* Empty */ 0, /* DiagSubGroup643 */ 440 }, + { /* switch */ 13414, /* DiagArray644 */ 1787, /* Empty */ 0 }, + { /* switch-bool */ 13421, /* DiagArray645 */ 1791, /* Empty */ 0 }, + { /* switch-default */ 13433, /* Empty */ 0, /* Empty */ 0 }, + { /* switch-enum */ 13448, /* DiagArray647 */ 1793, /* Empty */ 0 }, + { /* sync-fetch-and-nand-semantics-changed */ 13460, /* DiagArray648 */ 1795, /* Empty */ 0 }, + { /* synth */ 13498, /* Empty */ 0, /* Empty */ 0 }, + { /* tautological-compare */ 13504, /* DiagArray650 */ 1797, /* DiagSubGroup650 */ 446 }, + { /* tautological-constant-compare */ 13525, /* DiagArray651 */ 1800, /* DiagSubGroup651 */ 451 }, + { /* tautological-constant-in-range-compare */ 13555, /* Empty */ 0, /* DiagSubGroup652 */ 453 }, + { /* tautological-constant-out-of-range-compare */ 13594, /* DiagArray653 */ 1802, /* Empty */ 0 }, + { /* tautological-overlap-compare */ 13637, /* DiagArray654 */ 1804, /* Empty */ 0 }, + { /* tautological-pointer-compare */ 13666, /* DiagArray655 */ 1806, /* Empty */ 0 }, + { /* tautological-type-limit-compare */ 13695, /* DiagArray656 */ 1809, /* Empty */ 0 }, + { /* tautological-undefined-compare */ 13727, /* DiagArray657 */ 1811, /* Empty */ 0 }, + { /* tautological-unsigned-enum-zero-compare */ 13758, /* DiagArray658 */ 1814, /* Empty */ 0 }, + { /* tautological-unsigned-zero-compare */ 13798, /* DiagArray659 */ 1816, /* Empty */ 0 }, + { /* tentative-definition-incomplete-type */ 13833, /* DiagArray660 */ 1818, /* Empty */ 0 }, + { /* thread-safety */ 13870, /* Empty */ 0, /* DiagSubGroup661 */ 457 }, + { /* thread-safety-analysis */ 13884, /* DiagArray662 */ 1820, /* Empty */ 0 }, + { /* thread-safety-attributes */ 13907, /* DiagArray663 */ 1838, /* Empty */ 0 }, + { /* thread-safety-beta */ 13932, /* DiagArray664 */ 1846, /* Empty */ 0 }, + { /* thread-safety-negative */ 13951, /* DiagArray665 */ 1848, /* Empty */ 0 }, + { /* thread-safety-precise */ 13974, /* DiagArray666 */ 1850, /* Empty */ 0 }, + { /* thread-safety-reference */ 13996, /* DiagArray667 */ 1854, /* Empty */ 0 }, + { /* thread-safety-verbose */ 14020, /* DiagArray668 */ 1857, /* Empty */ 0 }, + { /* trigraphs */ 14042, /* DiagArray669 */ 1859, /* Empty */ 0 }, + { /* type-limits */ 14052, /* Empty */ 0, /* Empty */ 0 }, + { /* type-safety */ 14064, /* DiagArray671 */ 1864, /* Empty */ 0 }, + { /* typedef-redefinition */ 14076, /* DiagArray672 */ 1868, /* Empty */ 0 }, + { /* typename-missing */ 14097, /* DiagArray673 */ 1870, /* Empty */ 0 }, + { /* unable-to-open-stats-file */ 14114, /* DiagArray674 */ 1872, /* Empty */ 0 }, + { /* unavailable-declarations */ 14140, /* DiagArray675 */ 1874, /* Empty */ 0 }, + { /* undeclared-selector */ 14165, /* DiagArray676 */ 1876, /* Empty */ 0 }, + { /* undef */ 14185, /* DiagArray677 */ 1879, /* Empty */ 0 }, + { /* undefined-bool-conversion */ 14191, /* DiagArray678 */ 1881, /* Empty */ 0 }, + { /* undefined-func-template */ 14217, /* DiagArray679 */ 1884, /* Empty */ 0 }, + { /* undefined-inline */ 14241, /* DiagArray680 */ 1886, /* Empty */ 0 }, + { /* undefined-internal */ 14258, /* DiagArray681 */ 1888, /* Empty */ 0 }, + { /* undefined-internal-type */ 14277, /* DiagArray682 */ 1890, /* Empty */ 0 }, + { /* undefined-reinterpret-cast */ 14301, /* DiagArray683 */ 1892, /* Empty */ 0 }, + { /* undefined-var-template */ 14328, /* DiagArray684 */ 1895, /* Empty */ 0 }, + { /* unevaluated-expression */ 14351, /* DiagArray685 */ 1897, /* DiagSubGroup685 */ 462 }, + { /* unguarded-availability */ 14374, /* DiagArray686 */ 1899, /* DiagSubGroup686 */ 464 }, + { /* unguarded-availability-new */ 14397, /* DiagArray687 */ 1901, /* Empty */ 0 }, + { /* unicode */ 14424, /* DiagArray688 */ 1903, /* Empty */ 0 }, + { /* unicode-homoglyph */ 14432, /* DiagArray689 */ 1909, /* Empty */ 0 }, + { /* unicode-whitespace */ 14450, /* DiagArray690 */ 1911, /* Empty */ 0 }, + { /* unicode-zero-width */ 14469, /* DiagArray691 */ 1913, /* Empty */ 0 }, + { /* uninitialized */ 14488, /* DiagArray692 */ 1915, /* DiagSubGroup692 */ 466 }, + { /* unknown-argument */ 14502, /* DiagArray693 */ 1923, /* Empty */ 0 }, + { /* unknown-attributes */ 14519, /* DiagArray694 */ 1926, /* Empty */ 0 }, + { /* unknown-escape-sequence */ 14538, /* DiagArray695 */ 1928, /* Empty */ 0 }, + { /* unknown-pragmas */ 14562, /* DiagArray696 */ 1930, /* Empty */ 0 }, + { /* unknown-sanitizers */ 14578, /* DiagArray697 */ 1948, /* Empty */ 0 }, + { /* unknown-warning-option */ 14597, /* DiagArray698 */ 1950, /* Empty */ 0 }, + { /* unnamed-type-template-args */ 14620, /* DiagArray699 */ 1954, /* DiagSubGroup699 */ 469 }, + { /* unneeded-internal-declaration */ 14647, /* DiagArray700 */ 1956, /* Empty */ 0 }, + { /* unneeded-member-function */ 14677, /* DiagArray701 */ 1959, /* Empty */ 0 }, + { /* unreachable-code */ 14702, /* DiagArray702 */ 1961, /* DiagSubGroup702 */ 471 }, + { /* unreachable-code-aggressive */ 14719, /* Empty */ 0, /* DiagSubGroup703 */ 473 }, + { /* unreachable-code-break */ 14747, /* DiagArray704 */ 1963, /* Empty */ 0 }, + { /* unreachable-code-loop-increment */ 14770, /* DiagArray705 */ 1965, /* Empty */ 0 }, + { /* unreachable-code-return */ 14802, /* DiagArray706 */ 1967, /* Empty */ 0 }, + { /* unsequenced */ 14826, /* DiagArray707 */ 1969, /* Empty */ 0 }, + { /* unsupported-abs */ 14838, /* DiagArray708 */ 1972, /* Empty */ 0 }, + { /* unsupported-availability-guard */ 14854, /* DiagArray709 */ 1975, /* Empty */ 0 }, + { /* unsupported-cb */ 14885, /* DiagArray710 */ 1977, /* Empty */ 0 }, + { /* unsupported-dll-base-class-template */ 14900, /* DiagArray711 */ 1979, /* Empty */ 0 }, + { /* unsupported-friend */ 14936, /* DiagArray712 */ 1981, /* Empty */ 0 }, + { /* unsupported-gpopt */ 14955, /* DiagArray713 */ 1984, /* Empty */ 0 }, + { /* unsupported-nan */ 14973, /* DiagArray714 */ 1986, /* Empty */ 0 }, + { /* unsupported-target-opt */ 14989, /* DiagArray715 */ 1989, /* Empty */ 0 }, + { /* unsupported-visibility */ 15012, /* DiagArray716 */ 1991, /* Empty */ 0 }, + { /* unusable-partial-specialization */ 15035, /* DiagArray717 */ 1993, /* Empty */ 0 }, + { /* unused */ 15067, /* Empty */ 0, /* DiagSubGroup718 */ 477 }, + { /* unused-argument */ 15074, /* Empty */ 0, /* Empty */ 0 }, + { /* unused-command-line-argument */ 15090, /* DiagArray720 */ 1995, /* Empty */ 0 }, + { /* unused-comparison */ 15119, /* DiagArray721 */ 2003, /* Empty */ 0 }, + { /* unused-const-variable */ 15137, /* DiagArray722 */ 2005, /* Empty */ 0 }, + { /* unused-exception-parameter */ 15159, /* DiagArray723 */ 2007, /* Empty */ 0 }, + { /* unused-function */ 15186, /* DiagArray724 */ 2009, /* DiagSubGroup724 */ 487 }, + { /* unused-getter-return-value */ 15202, /* DiagArray725 */ 2011, /* Empty */ 0 }, + { /* unused-label */ 15229, /* DiagArray726 */ 2013, /* Empty */ 0 }, + { /* unused-lambda-capture */ 15242, /* DiagArray727 */ 2015, /* Empty */ 0 }, + { /* unused-local-typedef */ 15264, /* DiagArray728 */ 2017, /* Empty */ 0 }, + { /* unused-local-typedefs */ 15285, /* Empty */ 0, /* DiagSubGroup729 */ 489 }, + { /* unused-macros */ 15307, /* DiagArray730 */ 2019, /* Empty */ 0 }, + { /* unused-member-function */ 15321, /* DiagArray731 */ 2021, /* DiagSubGroup731 */ 491 }, + { /* unused-parameter */ 15344, /* DiagArray732 */ 2023, /* Empty */ 0 }, + { /* unused-private-field */ 15361, /* DiagArray733 */ 2025, /* Empty */ 0 }, + { /* unused-property-ivar */ 15382, /* DiagArray734 */ 2027, /* Empty */ 0 }, + { /* unused-result */ 15403, /* DiagArray735 */ 2029, /* Empty */ 0 }, + { /* unused-template */ 15417, /* DiagArray736 */ 2031, /* DiagSubGroup736 */ 493 }, + { /* unused-value */ 15433, /* DiagArray737 */ 2033, /* DiagSubGroup737 */ 495 }, + { /* unused-variable */ 15446, /* DiagArray738 */ 2038, /* DiagSubGroup738 */ 499 }, + { /* unused-volatile-lvalue */ 15462, /* DiagArray739 */ 2040, /* Empty */ 0 }, + { /* used-but-marked-unused */ 15485, /* DiagArray740 */ 2042, /* Empty */ 0 }, + { /* user-defined-literals */ 15508, /* DiagArray741 */ 2044, /* Empty */ 0 }, + { /* user-defined-warnings */ 15530, /* DiagArray742 */ 2046, /* Empty */ 0 }, + { /* varargs */ 15552, /* DiagArray743 */ 2048, /* Empty */ 0 }, + { /* variadic-macros */ 15560, /* DiagArray744 */ 2052, /* Empty */ 0 }, + { /* vec-elem-size */ 15576, /* DiagArray745 */ 2056, /* Empty */ 0 }, + { /* vector-conversion */ 15590, /* DiagArray746 */ 2058, /* Empty */ 0 }, + { /* vector-conversions */ 15608, /* Empty */ 0, /* DiagSubGroup747 */ 501 }, + { /* vexing-parse */ 15627, /* DiagArray748 */ 2060, /* Empty */ 0 }, + { /* visibility */ 15640, /* DiagArray749 */ 2064, /* Empty */ 0 }, + { /* vla */ 15651, /* DiagArray750 */ 2067, /* Empty */ 0 }, + { /* vla-extension */ 15655, /* DiagArray751 */ 2069, /* Empty */ 0 }, + { /* void-ptr-dereference */ 15669, /* DiagArray752 */ 2071, /* Empty */ 0 }, + { /* volatile-register-var */ 15690, /* Empty */ 0, /* Empty */ 0 }, + { /* weak-template-vtables */ 15712, /* DiagArray754 */ 2073, /* Empty */ 0 }, + { /* weak-vtables */ 15734, /* DiagArray755 */ 2075, /* Empty */ 0 }, + { /* writable-strings */ 15747, /* DiagArray756 */ 2077, /* DiagSubGroup756 */ 503 }, + { /* write-strings */ 15764, /* Empty */ 0, /* DiagSubGroup757 */ 505 }, + { /* zero-as-null-pointer-constant */ 15778, /* DiagArray758 */ 2079, /* Empty */ 0 }, + { /* zero-length-array */ 15808, /* DiagArray759 */ 2081, /* Empty */ 0 }, +#endif // GET_DIAG_TABLE + + +#ifdef GET_CATEGORY_TABLE +CATEGORY("", DiagCat_None) +CATEGORY("Lexical or Preprocessor Issue", DiagCat_Lexical_or_Preprocessor_Issue) +CATEGORY("Semantic Issue", DiagCat_Semantic_Issue) +CATEGORY("Lambda Issue", DiagCat_Lambda_Issue) +CATEGORY("Parse Issue", DiagCat_Parse_Issue) +CATEGORY("ARC Semantic Issue", DiagCat_ARC_Semantic_Issue) +CATEGORY("ARC and @properties", DiagCat_ARC_and__properties) +CATEGORY("ARC Casting Rules", DiagCat_ARC_Casting_Rules) +CATEGORY("ARC Parse Issue", DiagCat_ARC_Parse_Issue) +CATEGORY("ARC Weak References", DiagCat_ARC_Weak_References) +CATEGORY("ARC Restrictions", DiagCat_ARC_Restrictions) +CATEGORY("OpenMP Issue", DiagCat_OpenMP_Issue) +CATEGORY("Inline Assembly Issue", DiagCat_Inline_Assembly_Issue) +CATEGORY("Modules Issue", DiagCat_Modules_Issue) +CATEGORY("Coroutines Issue", DiagCat_Coroutines_Issue) +CATEGORY("AST Deserialization Issue", DiagCat_AST_Deserialization_Issue) +CATEGORY("Backend Issue", DiagCat_Backend_Issue) +CATEGORY("Related Result Type Issue", DiagCat_Related_Result_Type_Issue) +CATEGORY("AST Serialization Issue", DiagCat_AST_Serialization_Issue) +CATEGORY("Nullability Issue", DiagCat_Nullability_Issue) +CATEGORY("Generics Issue", DiagCat_Generics_Issue) +CATEGORY("User-Defined Issue", DiagCat_User_Defined_Issue) +CATEGORY("Refactoring Invocation Issue", DiagCat_Refactoring_Invocation_Issue) +CATEGORY("VTable ABI Issue", DiagCat_VTable_ABI_Issue) +CATEGORY("Value Conversion Issue", DiagCat_Value_Conversion_Issue) +CATEGORY("Documentation Issue", DiagCat_Documentation_Issue) +CATEGORY("ARC Retain Cycle", DiagCat_ARC_Retain_Cycle) +CATEGORY("Deprecations", DiagCat_Deprecations) +CATEGORY("Format String Issue", DiagCat_Format_String_Issue) +CATEGORY("Cocoa API Issue", DiagCat_Cocoa_API_Issue) +CATEGORY("#pragma message Directive", DiagCat__pragma_message_Directive) +CATEGORY("Instrumentation Issue", DiagCat_Instrumentation_Issue) +CATEGORY("Unused Entity Issue", DiagCat_Unused_Entity_Issue) +#endif // GET_CATEGORY_TABLE + diff --git a/clang-r353983/include/clang/Basic/DiagnosticIDs.h b/clang-r353983/include/clang/Basic/DiagnosticIDs.h new file mode 100644 index 00000000..fc0e2c9d --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticIDs.h @@ -0,0 +1,341 @@ +//===--- DiagnosticIDs.h - Diagnostic IDs Handling --------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the Diagnostic IDs-related interfaces. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICIDS_H +#define LLVM_CLANG_BASIC_DIAGNOSTICIDS_H + +#include "clang/Basic/LLVM.h" +#include "llvm/ADT/IntrusiveRefCntPtr.h" +#include "llvm/ADT/StringRef.h" +#include <vector> + +namespace clang { + class DiagnosticsEngine; + class SourceLocation; + + // Import the diagnostic enums themselves. + namespace diag { + // Size of each of the diagnostic categories. + enum { + DIAG_SIZE_COMMON = 300, + DIAG_SIZE_DRIVER = 200, + DIAG_SIZE_FRONTEND = 150, + DIAG_SIZE_SERIALIZATION = 120, + DIAG_SIZE_LEX = 400, + DIAG_SIZE_PARSE = 500, + DIAG_SIZE_AST = 150, + DIAG_SIZE_COMMENT = 100, + DIAG_SIZE_CROSSTU = 100, + DIAG_SIZE_SEMA = 3500, + DIAG_SIZE_ANALYSIS = 100, + DIAG_SIZE_REFACTORING = 1000, + }; + // Start position for diagnostics. + enum { + DIAG_START_COMMON = 0, + DIAG_START_DRIVER = DIAG_START_COMMON + DIAG_SIZE_COMMON, + DIAG_START_FRONTEND = DIAG_START_DRIVER + DIAG_SIZE_DRIVER, + DIAG_START_SERIALIZATION = DIAG_START_FRONTEND + DIAG_SIZE_FRONTEND, + DIAG_START_LEX = DIAG_START_SERIALIZATION + DIAG_SIZE_SERIALIZATION, + DIAG_START_PARSE = DIAG_START_LEX + DIAG_SIZE_LEX, + DIAG_START_AST = DIAG_START_PARSE + DIAG_SIZE_PARSE, + DIAG_START_COMMENT = DIAG_START_AST + DIAG_SIZE_AST, + DIAG_START_CROSSTU = DIAG_START_COMMENT + DIAG_SIZE_CROSSTU, + DIAG_START_SEMA = DIAG_START_CROSSTU + DIAG_SIZE_COMMENT, + DIAG_START_ANALYSIS = DIAG_START_SEMA + DIAG_SIZE_SEMA, + DIAG_START_REFACTORING = DIAG_START_ANALYSIS + DIAG_SIZE_ANALYSIS, + DIAG_UPPER_LIMIT = DIAG_START_REFACTORING + DIAG_SIZE_REFACTORING + }; + + class CustomDiagInfo; + + /// All of the diagnostics that can be emitted by the frontend. + typedef unsigned kind; + + // Get typedefs for common diagnostics. + enum { +#define DIAG(ENUM,FLAGS,DEFAULT_MAPPING,DESC,GROUP,\ + SFINAE,CATEGORY,NOWERROR,SHOWINSYSHEADER) ENUM, +#define COMMONSTART +#include "clang/Basic/DiagnosticCommonKinds.inc" + NUM_BUILTIN_COMMON_DIAGNOSTICS +#undef DIAG + }; + + /// Enum values that allow the client to map NOTEs, WARNINGs, and EXTENSIONs + /// to either Ignore (nothing), Remark (emit a remark), Warning + /// (emit a warning) or Error (emit as an error). It allows clients to + /// map ERRORs to Error or Fatal (stop emitting diagnostics after this one). + enum class Severity { + // NOTE: 0 means "uncomputed". + Ignored = 1, ///< Do not present this diagnostic, ignore it. + Remark = 2, ///< Present this diagnostic as a remark. + Warning = 3, ///< Present this diagnostic as a warning. + Error = 4, ///< Present this diagnostic as an error. + Fatal = 5 ///< Present this diagnostic as a fatal error. + }; + + /// Flavors of diagnostics we can emit. Used to filter for a particular + /// kind of diagnostic (for instance, for -W/-R flags). + enum class Flavor { + WarningOrError, ///< A diagnostic that indicates a problem or potential + ///< problem. Can be made fatal by -Werror. + Remark ///< A diagnostic that indicates normal progress through + ///< compilation. + }; + } + +class DiagnosticMapping { + unsigned Severity : 3; + unsigned IsUser : 1; + unsigned IsPragma : 1; + unsigned HasNoWarningAsError : 1; + unsigned HasNoErrorAsFatal : 1; + unsigned WasUpgradedFromWarning : 1; + +public: + static DiagnosticMapping Make(diag::Severity Severity, bool IsUser, + bool IsPragma) { + DiagnosticMapping Result; + Result.Severity = (unsigned)Severity; + Result.IsUser = IsUser; + Result.IsPragma = IsPragma; + Result.HasNoWarningAsError = 0; + Result.HasNoErrorAsFatal = 0; + Result.WasUpgradedFromWarning = 0; + return Result; + } + + diag::Severity getSeverity() const { return (diag::Severity)Severity; } + void setSeverity(diag::Severity Value) { Severity = (unsigned)Value; } + + bool isUser() const { return IsUser; } + bool isPragma() const { return IsPragma; } + + bool isErrorOrFatal() const { + return getSeverity() == diag::Severity::Error || + getSeverity() == diag::Severity::Fatal; + } + + bool hasNoWarningAsError() const { return HasNoWarningAsError; } + void setNoWarningAsError(bool Value) { HasNoWarningAsError = Value; } + + bool hasNoErrorAsFatal() const { return HasNoErrorAsFatal; } + void setNoErrorAsFatal(bool Value) { HasNoErrorAsFatal = Value; } + + /// Whether this mapping attempted to map the diagnostic to a warning, but + /// was overruled because the diagnostic was already mapped to an error or + /// fatal error. + bool wasUpgradedFromWarning() const { return WasUpgradedFromWarning; } + void setUpgradedFromWarning(bool Value) { WasUpgradedFromWarning = Value; } + + /// Serialize this mapping as a raw integer. + unsigned serialize() const { + return (IsUser << 7) | (IsPragma << 6) | (HasNoWarningAsError << 5) | + (HasNoErrorAsFatal << 4) | (WasUpgradedFromWarning << 3) | Severity; + } + /// Deserialize a mapping. + static DiagnosticMapping deserialize(unsigned Bits) { + DiagnosticMapping Result; + Result.IsUser = (Bits >> 7) & 1; + Result.IsPragma = (Bits >> 6) & 1; + Result.HasNoWarningAsError = (Bits >> 5) & 1; + Result.HasNoErrorAsFatal = (Bits >> 4) & 1; + Result.WasUpgradedFromWarning = (Bits >> 3) & 1; + Result.Severity = Bits & 0x7; + return Result; + } +}; + +/// Used for handling and querying diagnostic IDs. +/// +/// Can be used and shared by multiple Diagnostics for multiple translation units. +class DiagnosticIDs : public RefCountedBase<DiagnosticIDs> { +public: + /// The level of the diagnostic, after it has been through mapping. + enum Level { + Ignored, Note, Remark, Warning, Error, Fatal + }; + +private: + /// Information for uniquing and looking up custom diags. + diag::CustomDiagInfo *CustomDiagInfo; + +public: + DiagnosticIDs(); + ~DiagnosticIDs(); + + /// Return an ID for a diagnostic with the specified format string and + /// level. + /// + /// If this is the first request for this diagnostic, it is registered and + /// created, otherwise the existing ID is returned. + + // FIXME: Replace this function with a create-only facilty like + // createCustomDiagIDFromFormatString() to enforce safe usage. At the time of + // writing, nearly all callers of this function were invalid. + unsigned getCustomDiagID(Level L, StringRef FormatString); + + //===--------------------------------------------------------------------===// + // Diagnostic classification and reporting interfaces. + // + + /// Given a diagnostic ID, return a description of the issue. + StringRef getDescription(unsigned DiagID) const; + + /// Return true if the unmapped diagnostic levelof the specified + /// diagnostic ID is a Warning or Extension. + /// + /// This only works on builtin diagnostics, not custom ones, and is not + /// legal to call on NOTEs. + static bool isBuiltinWarningOrExtension(unsigned DiagID); + + /// Return true if the specified diagnostic is mapped to errors by + /// default. + static bool isDefaultMappingAsError(unsigned DiagID); + + /// Determine whether the given built-in diagnostic ID is a Note. + static bool isBuiltinNote(unsigned DiagID); + + /// Determine whether the given built-in diagnostic ID is for an + /// extension of some sort. + static bool isBuiltinExtensionDiag(unsigned DiagID) { + bool ignored; + return isBuiltinExtensionDiag(DiagID, ignored); + } + + /// Determine whether the given built-in diagnostic ID is for an + /// extension of some sort, and whether it is enabled by default. + /// + /// This also returns EnabledByDefault, which is set to indicate whether the + /// diagnostic is ignored by default (in which case -pedantic enables it) or + /// treated as a warning/error by default. + /// + static bool isBuiltinExtensionDiag(unsigned DiagID, bool &EnabledByDefault); + + + /// Return the lowest-level warning option that enables the specified + /// diagnostic. + /// + /// If there is no -Wfoo flag that controls the diagnostic, this returns null. + static StringRef getWarningOptionForDiag(unsigned DiagID); + + /// Return the category number that a specified \p DiagID belongs to, + /// or 0 if no category. + static unsigned getCategoryNumberForDiag(unsigned DiagID); + + /// Return the number of diagnostic categories. + static unsigned getNumberOfCategories(); + + /// Given a category ID, return the name of the category. + static StringRef getCategoryNameFromID(unsigned CategoryID); + + /// Return true if a given diagnostic falls into an ARC diagnostic + /// category. + static bool isARCDiagnostic(unsigned DiagID); + + /// Enumeration describing how the emission of a diagnostic should + /// be treated when it occurs during C++ template argument deduction. + enum SFINAEResponse { + /// The diagnostic should not be reported, but it should cause + /// template argument deduction to fail. + /// + /// The vast majority of errors that occur during template argument + /// deduction fall into this category. + SFINAE_SubstitutionFailure, + + /// The diagnostic should be suppressed entirely. + /// + /// Warnings generally fall into this category. + SFINAE_Suppress, + + /// The diagnostic should be reported. + /// + /// The diagnostic should be reported. Various fatal errors (e.g., + /// template instantiation depth exceeded) fall into this category. + SFINAE_Report, + + /// The diagnostic is an access-control diagnostic, which will be + /// substitution failures in some contexts and reported in others. + SFINAE_AccessControl + }; + + /// Determines whether the given built-in diagnostic ID is + /// for an error that is suppressed if it occurs during C++ template + /// argument deduction. + /// + /// When an error is suppressed due to SFINAE, the template argument + /// deduction fails but no diagnostic is emitted. Certain classes of + /// errors, such as those errors that involve C++ access control, + /// are not SFINAE errors. + static SFINAEResponse getDiagnosticSFINAEResponse(unsigned DiagID); + + /// Get the string of all diagnostic flags. + /// + /// \returns A list of all diagnostics flags as they would be written in a + /// command line invocation including their `no-` variants. For example: + /// `{"-Wempty-body", "-Wno-empty-body", ...}` + static std::vector<std::string> getDiagnosticFlags(); + + /// Get the set of all diagnostic IDs in the group with the given name. + /// + /// \param[out] Diags - On return, the diagnostics in the group. + /// \returns \c true if the given group is unknown, \c false otherwise. + bool getDiagnosticsInGroup(diag::Flavor Flavor, StringRef Group, + SmallVectorImpl<diag::kind> &Diags) const; + + /// Get the set of all diagnostic IDs. + static void getAllDiagnostics(diag::Flavor Flavor, + std::vector<diag::kind> &Diags); + + /// Get the diagnostic option with the closest edit distance to the + /// given group name. + static StringRef getNearestOption(diag::Flavor Flavor, StringRef Group); + +private: + /// Classify the specified diagnostic ID into a Level, consumable by + /// the DiagnosticClient. + /// + /// The classification is based on the way the client configured the + /// DiagnosticsEngine object. + /// + /// \param Loc The source location for which we are interested in finding out + /// the diagnostic state. Can be null in order to query the latest state. + DiagnosticIDs::Level + getDiagnosticLevel(unsigned DiagID, SourceLocation Loc, + const DiagnosticsEngine &Diag) const LLVM_READONLY; + + diag::Severity + getDiagnosticSeverity(unsigned DiagID, SourceLocation Loc, + const DiagnosticsEngine &Diag) const LLVM_READONLY; + + /// Used to report a diagnostic that is finally fully formed. + /// + /// \returns \c true if the diagnostic was emitted, \c false if it was + /// suppressed. + bool ProcessDiag(DiagnosticsEngine &Diag) const; + + /// Used to emit a diagnostic that is finally fully formed, + /// ignoring suppression. + void EmitDiag(DiagnosticsEngine &Diag, Level DiagLevel) const; + + /// Whether the diagnostic may leave the AST in a state where some + /// invariants can break. + bool isUnrecoverable(unsigned DiagID) const; + + friend class DiagnosticsEngine; +}; + +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/DiagnosticIndexName.inc b/clang-r353983/include/clang/Basic/DiagnosticIndexName.inc new file mode 100644 index 00000000..9b7dc234 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticIndexName.inc @@ -0,0 +1,4887 @@ +DIAG_NAME_INDEX(backslash_newline_space) +DIAG_NAME_INDEX(err_32_bit_builtin_64_bit_tgt) +DIAG_NAME_INDEX(err_64_bit_builtin_32_bit_tgt) +DIAG_NAME_INDEX(err__Pragma_malformed) +DIAG_NAME_INDEX(err_abi_tag_on_redeclaration) +DIAG_NAME_INDEX(err_abstract_type_in_decl) +DIAG_NAME_INDEX(err_access) +DIAG_NAME_INDEX(err_access_base_ctor) +DIAG_NAME_INDEX(err_access_ctor) +DIAG_NAME_INDEX(err_access_decl) +DIAG_NAME_INDEX(err_access_dtor) +DIAG_NAME_INDEX(err_access_dtor_base) +DIAG_NAME_INDEX(err_access_dtor_exception) +DIAG_NAME_INDEX(err_access_dtor_field) +DIAG_NAME_INDEX(err_access_dtor_ivar) +DIAG_NAME_INDEX(err_access_dtor_temp) +DIAG_NAME_INDEX(err_access_dtor_var) +DIAG_NAME_INDEX(err_access_dtor_vbase) +DIAG_NAME_INDEX(err_access_field_ctor) +DIAG_NAME_INDEX(err_access_friend_function) +DIAG_NAME_INDEX(err_access_lambda_capture) +DIAG_NAME_INDEX(err_access_specifier_interface) +DIAG_NAME_INDEX(err_addr_ovl_ambiguous) +DIAG_NAME_INDEX(err_addr_ovl_no_qualifier) +DIAG_NAME_INDEX(err_addr_ovl_no_viable) +DIAG_NAME_INDEX(err_addr_ovl_not_func_ptrref) +DIAG_NAME_INDEX(err_address_of_function_with_pass_object_size_params) +DIAG_NAME_INDEX(err_address_of_label_outside_fn) +DIAG_NAME_INDEX(err_address_space_mismatch_templ_inst) +DIAG_NAME_INDEX(err_address_space_qualified_delete) +DIAG_NAME_INDEX(err_address_space_qualified_new) +DIAG_NAME_INDEX(err_addrof_function_disabled_by_enable_if_attr) +DIAG_NAME_INDEX(err_alias_after_tentative) +DIAG_NAME_INDEX(err_alias_declaration_not_identifier) +DIAG_NAME_INDEX(err_alias_declaration_pack_expansion) +DIAG_NAME_INDEX(err_alias_declaration_specialization) +DIAG_NAME_INDEX(err_alias_is_definition) +DIAG_NAME_INDEX(err_alias_not_supported_on_darwin) +DIAG_NAME_INDEX(err_alias_not_supported_on_nvptx) +DIAG_NAME_INDEX(err_alias_template_expansion_into_fixed_list) +DIAG_NAME_INDEX(err_alias_template_extra_headers) +DIAG_NAME_INDEX(err_alias_to_undefined) +DIAG_NAME_INDEX(err_align_value_attribute_argument_not_int) +DIAG_NAME_INDEX(err_alignas_attribute_wrong_decl_type) +DIAG_NAME_INDEX(err_alignas_mismatch) +DIAG_NAME_INDEX(err_alignas_missing_on_definition) +DIAG_NAME_INDEX(err_alignas_underaligned) +DIAG_NAME_INDEX(err_aligned_allocation_unavailable) +DIAG_NAME_INDEX(err_aligned_attribute_argument_not_int) +DIAG_NAME_INDEX(err_alignment_dependent_typedef_name) +DIAG_NAME_INDEX(err_alignment_not_power_of_two) +DIAG_NAME_INDEX(err_alignment_too_big) +DIAG_NAME_INDEX(err_alignment_too_small) +DIAG_NAME_INDEX(err_alignof_member_of_incomplete_type) +DIAG_NAME_INDEX(err_allocation_of_abstract_type) +DIAG_NAME_INDEX(err_altivec_empty_initializer) +DIAG_NAME_INDEX(err_ambiguous_base_to_derived_cast) +DIAG_NAME_INDEX(err_ambiguous_delete_operand) +DIAG_NAME_INDEX(err_ambiguous_derived_to_base_conv) +DIAG_NAME_INDEX(err_ambiguous_inherited_constructor) +DIAG_NAME_INDEX(err_ambiguous_member_multiple_subobject_types) +DIAG_NAME_INDEX(err_ambiguous_member_multiple_subobjects) +DIAG_NAME_INDEX(err_ambiguous_memptr_conv) +DIAG_NAME_INDEX(err_ambiguous_reference) +DIAG_NAME_INDEX(err_ambiguous_suitable_delete_member_function_found) +DIAG_NAME_INDEX(err_ambiguous_tag_hiding) +DIAG_NAME_INDEX(err_analyzer_config_invalid_input) +DIAG_NAME_INDEX(err_analyzer_config_multiple_values) +DIAG_NAME_INDEX(err_analyzer_config_no_value) +DIAG_NAME_INDEX(err_analyzer_config_unknown) +DIAG_NAME_INDEX(err_anon_bitfield_has_negative_width) +DIAG_NAME_INDEX(err_anon_bitfield_qualifiers) +DIAG_NAME_INDEX(err_anon_bitfield_width_exceeds_type_width) +DIAG_NAME_INDEX(err_anon_type_definition) +DIAG_NAME_INDEX(err_anonymous_property) +DIAG_NAME_INDEX(err_anonymous_record_bad_member) +DIAG_NAME_INDEX(err_anonymous_record_member_redecl) +DIAG_NAME_INDEX(err_anonymous_record_nonpublic_member) +DIAG_NAME_INDEX(err_anonymous_record_with_function) +DIAG_NAME_INDEX(err_anonymous_record_with_static) +DIAG_NAME_INDEX(err_anonymous_record_with_type) +DIAG_NAME_INDEX(err_anonymous_struct_not_member) +DIAG_NAME_INDEX(err_anonymous_union_not_static) +DIAG_NAME_INDEX(err_anonymous_union_with_storage_spec) +DIAG_NAME_INDEX(err_anyx86_interrupt_attribute) +DIAG_NAME_INDEX(err_anyx86_interrupt_called) +DIAG_NAME_INDEX(err_arc_array_param_no_ownership) +DIAG_NAME_INDEX(err_arc_assign_property_ownership) +DIAG_NAME_INDEX(err_arc_atomic_ownership) +DIAG_NAME_INDEX(err_arc_autoreleasing_capture) +DIAG_NAME_INDEX(err_arc_autoreleasing_var) +DIAG_NAME_INDEX(err_arc_bridge_cast_incompatible) +DIAG_NAME_INDEX(err_arc_bridge_cast_wrong_kind) +DIAG_NAME_INDEX(err_arc_bridge_retain) +DIAG_NAME_INDEX(err_arc_cast_requires_bridge) +DIAG_NAME_INDEX(err_arc_collection_forward) +DIAG_NAME_INDEX(err_arc_convesion_of_weak_unavailable) +DIAG_NAME_INDEX(err_arc_gained_method_convention) +DIAG_NAME_INDEX(err_arc_illegal_explicit_message) +DIAG_NAME_INDEX(err_arc_illegal_method_def) +DIAG_NAME_INDEX(err_arc_illegal_selector) +DIAG_NAME_INDEX(err_arc_inconsistent_property_ownership) +DIAG_NAME_INDEX(err_arc_indirect_no_ownership) +DIAG_NAME_INDEX(err_arc_init_method_unrelated_result_type) +DIAG_NAME_INDEX(err_arc_lost_method_convention) +DIAG_NAME_INDEX(err_arc_may_not_respond) +DIAG_NAME_INDEX(err_arc_method_not_found) +DIAG_NAME_INDEX(err_arc_mismatched_cast) +DIAG_NAME_INDEX(err_arc_multiple_method_decl) +DIAG_NAME_INDEX(err_arc_new_array_without_ownership) +DIAG_NAME_INDEX(err_arc_nolifetime_behavior) +DIAG_NAME_INDEX(err_arc_nonlocal_writeback) +DIAG_NAME_INDEX(err_arc_objc_object_in_tag) +DIAG_NAME_INDEX(err_arc_objc_property_default_assign_on_object) +DIAG_NAME_INDEX(err_arc_perform_selector_retains) +DIAG_NAME_INDEX(err_arc_pseudo_dtor_inconstant_quals) +DIAG_NAME_INDEX(err_arc_receiver_forward_class) +DIAG_NAME_INDEX(err_arc_receiver_forward_instance) +DIAG_NAME_INDEX(err_arc_strong_property_ownership) +DIAG_NAME_INDEX(err_arc_thread_ownership) +DIAG_NAME_INDEX(err_arc_typecheck_convert_incompatible_pointer) +DIAG_NAME_INDEX(err_arc_unsupported_on_runtime) +DIAG_NAME_INDEX(err_arc_unsupported_on_toolchain) +DIAG_NAME_INDEX(err_arc_unsupported_weak_class) +DIAG_NAME_INDEX(err_arc_unused_init_message) +DIAG_NAME_INDEX(err_arc_weak_disabled) +DIAG_NAME_INDEX(err_arc_weak_ivar_access) +DIAG_NAME_INDEX(err_arc_weak_no_runtime) +DIAG_NAME_INDEX(err_arc_weak_unavailable_assign) +DIAG_NAME_INDEX(err_arc_weak_unavailable_property) +DIAG_NAME_INDEX(err_arch_unsupported_isa) +DIAG_NAME_INDEX(err_arcmt_nsinvocation_ownership) +DIAG_NAME_INDEX(err_arg_with_address_space) +DIAG_NAME_INDEX(err_argument_invalid_range) +DIAG_NAME_INDEX(err_argument_not_multiple) +DIAG_NAME_INDEX(err_argument_required_after_attribute) +DIAG_NAME_INDEX(err_arithmetic_nonfragile_interface) +DIAG_NAME_INDEX(err_arm_invalid_specialreg) +DIAG_NAME_INDEX(err_array_designator_empty_range) +DIAG_NAME_INDEX(err_array_designator_negative) +DIAG_NAME_INDEX(err_array_designator_non_array) +DIAG_NAME_INDEX(err_array_designator_too_large) +DIAG_NAME_INDEX(err_array_init_different_type) +DIAG_NAME_INDEX(err_array_init_incompat_wide_string_into_wchar) +DIAG_NAME_INDEX(err_array_init_narrow_string_into_wchar) +DIAG_NAME_INDEX(err_array_init_non_constant_array) +DIAG_NAME_INDEX(err_array_init_not_init_list) +DIAG_NAME_INDEX(err_array_init_plain_string_into_char8_t) +DIAG_NAME_INDEX(err_array_init_utf8_string_into_char) +DIAG_NAME_INDEX(err_array_init_wide_string_into_char) +DIAG_NAME_INDEX(err_array_new_needs_size) +DIAG_NAME_INDEX(err_array_of_abstract_type) +DIAG_NAME_INDEX(err_array_section_does_not_specify_contiguous_storage) +DIAG_NAME_INDEX(err_array_size_ambiguous_conversion) +DIAG_NAME_INDEX(err_array_size_explicit_conversion) +DIAG_NAME_INDEX(err_array_size_incomplete_type) +DIAG_NAME_INDEX(err_array_size_non_int) +DIAG_NAME_INDEX(err_array_size_not_integral) +DIAG_NAME_INDEX(err_array_star_in_function_definition) +DIAG_NAME_INDEX(err_array_star_outside_prototype) +DIAG_NAME_INDEX(err_array_static_not_outermost) +DIAG_NAME_INDEX(err_array_static_outside_prototype) +DIAG_NAME_INDEX(err_array_too_large) +DIAG_NAME_INDEX(err_as_qualified_auto_decl) +DIAG_NAME_INDEX(err_asm_bad_register_type) +DIAG_NAME_INDEX(err_asm_empty) +DIAG_NAME_INDEX(err_asm_empty_symbolic_operand_name) +DIAG_NAME_INDEX(err_asm_goto_not_supported_yet) +DIAG_NAME_INDEX(err_asm_immediate_expected) +DIAG_NAME_INDEX(err_asm_incomplete_type) +DIAG_NAME_INDEX(err_asm_input_duplicate_match) +DIAG_NAME_INDEX(err_asm_invalid_escape) +DIAG_NAME_INDEX(err_asm_invalid_global_var_reg) +DIAG_NAME_INDEX(err_asm_invalid_input_constraint) +DIAG_NAME_INDEX(err_asm_invalid_input_size) +DIAG_NAME_INDEX(err_asm_invalid_lvalue_in_input) +DIAG_NAME_INDEX(err_asm_invalid_lvalue_in_output) +DIAG_NAME_INDEX(err_asm_invalid_operand_number) +DIAG_NAME_INDEX(err_asm_invalid_output_constraint) +DIAG_NAME_INDEX(err_asm_invalid_output_size) +DIAG_NAME_INDEX(err_asm_invalid_type_in_input) +DIAG_NAME_INDEX(err_asm_naked_parm_ref) +DIAG_NAME_INDEX(err_asm_naked_this_ref) +DIAG_NAME_INDEX(err_asm_non_addr_value_in_memory_constraint) +DIAG_NAME_INDEX(err_asm_operand_wide_string_literal) +DIAG_NAME_INDEX(err_asm_register_size_mismatch) +DIAG_NAME_INDEX(err_asm_tying_incompatible_types) +DIAG_NAME_INDEX(err_asm_unexpected_constraint_alternatives) +DIAG_NAME_INDEX(err_asm_unknown_register_name) +DIAG_NAME_INDEX(err_asm_unknown_symbolic_operand_name) +DIAG_NAME_INDEX(err_asm_unterminated_symbolic_operand_name) +DIAG_NAME_INDEX(err_assoc_compatible_types) +DIAG_NAME_INDEX(err_assoc_type_incomplete) +DIAG_NAME_INDEX(err_assoc_type_nonobject) +DIAG_NAME_INDEX(err_assoc_type_variably_modified) +DIAG_NAME_INDEX(err_at_defs_cxx) +DIAG_NAME_INDEX(err_at_in_class) +DIAG_NAME_INDEX(err_atdef_nonfragile_interface) +DIAG_NAME_INDEX(err_atimport) +DIAG_NAME_INDEX(err_atomic_builtin_cannot_be_const) +DIAG_NAME_INDEX(err_atomic_builtin_must_be_pointer) +DIAG_NAME_INDEX(err_atomic_builtin_must_be_pointer_intfltptr) +DIAG_NAME_INDEX(err_atomic_builtin_must_be_pointer_intptr) +DIAG_NAME_INDEX(err_atomic_builtin_pointer_size) +DIAG_NAME_INDEX(err_atomic_exclusive_builtin_pointer_size) +DIAG_NAME_INDEX(err_atomic_load_store_uses_lib) +DIAG_NAME_INDEX(err_atomic_op_bitwise_needs_atomic_int) +DIAG_NAME_INDEX(err_atomic_op_has_invalid_synch_scope) +DIAG_NAME_INDEX(err_atomic_op_needs_atomic) +DIAG_NAME_INDEX(err_atomic_op_needs_atomic_int_or_ptr) +DIAG_NAME_INDEX(err_atomic_op_needs_int32_or_ptr) +DIAG_NAME_INDEX(err_atomic_op_needs_non_const_atomic) +DIAG_NAME_INDEX(err_atomic_op_needs_non_const_pointer) +DIAG_NAME_INDEX(err_atomic_op_needs_trivial_copy) +DIAG_NAME_INDEX(err_atomic_property_nontrivial_assign_op) +DIAG_NAME_INDEX(err_atomic_specifier_bad_type) +DIAG_NAME_INDEX(err_atprotocol_protocol) +DIAG_NAME_INDEX(err_attr_cond_never_constant_expr) +DIAG_NAME_INDEX(err_attr_objc_ownership_redundant) +DIAG_NAME_INDEX(err_attr_tlsmodel_arg) +DIAG_NAME_INDEX(err_attribute_address_function_type) +DIAG_NAME_INDEX(err_attribute_address_multiple_qualifiers) +DIAG_NAME_INDEX(err_attribute_address_space_negative) +DIAG_NAME_INDEX(err_attribute_address_space_too_high) +DIAG_NAME_INDEX(err_attribute_aligned_too_great) +DIAG_NAME_INDEX(err_attribute_argument_invalid) +DIAG_NAME_INDEX(err_attribute_argument_is_zero) +DIAG_NAME_INDEX(err_attribute_argument_n_type) +DIAG_NAME_INDEX(err_attribute_argument_out_of_bounds) +DIAG_NAME_INDEX(err_attribute_argument_out_of_bounds_extra_info) +DIAG_NAME_INDEX(err_attribute_argument_out_of_range) +DIAG_NAME_INDEX(err_attribute_argument_type) +DIAG_NAME_INDEX(err_attribute_argument_vec_type_hint) +DIAG_NAME_INDEX(err_attribute_bad_neon_vector_size) +DIAG_NAME_INDEX(err_attribute_cleanup_arg_not_function) +DIAG_NAME_INDEX(err_attribute_cleanup_func_arg_incompatible_type) +DIAG_NAME_INDEX(err_attribute_cleanup_func_must_take_one_arg) +DIAG_NAME_INDEX(err_attribute_dll_ambiguous_default_ctor) +DIAG_NAME_INDEX(err_attribute_dll_deleted) +DIAG_NAME_INDEX(err_attribute_dll_lambda) +DIAG_NAME_INDEX(err_attribute_dll_member_of_dll_class) +DIAG_NAME_INDEX(err_attribute_dll_not_extern) +DIAG_NAME_INDEX(err_attribute_dll_redeclaration) +DIAG_NAME_INDEX(err_attribute_dll_thread_local) +DIAG_NAME_INDEX(err_attribute_dllimport_data_definition) +DIAG_NAME_INDEX(err_attribute_dllimport_function_definition) +DIAG_NAME_INDEX(err_attribute_dllimport_static_field_definition) +DIAG_NAME_INDEX(err_attribute_integers_only) +DIAG_NAME_INDEX(err_attribute_invalid_implicit_this_argument) +DIAG_NAME_INDEX(err_attribute_invalid_size) +DIAG_NAME_INDEX(err_attribute_invalid_vector_type) +DIAG_NAME_INDEX(err_attribute_multiple_objc_gc) +DIAG_NAME_INDEX(err_attribute_no_member_pointers) +DIAG_NAME_INDEX(err_attribute_not_import_attr) +DIAG_NAME_INDEX(err_attribute_not_module_attr) +DIAG_NAME_INDEX(err_attribute_not_supported_in_lang) +DIAG_NAME_INDEX(err_attribute_not_supported_on_arch) +DIAG_NAME_INDEX(err_attribute_not_type_attr) +DIAG_NAME_INDEX(err_attribute_only_once_per_parameter) +DIAG_NAME_INDEX(err_attribute_overloadable_mismatch) +DIAG_NAME_INDEX(err_attribute_overloadable_multiple_unmarked_overloads) +DIAG_NAME_INDEX(err_attribute_overloadable_no_prototype) +DIAG_NAME_INDEX(err_attribute_pointers_only) +DIAG_NAME_INDEX(err_attribute_regparm_invalid_number) +DIAG_NAME_INDEX(err_attribute_regparm_wrong_platform) +DIAG_NAME_INDEX(err_attribute_requires_arguments) +DIAG_NAME_INDEX(err_attribute_requires_opencl_version) +DIAG_NAME_INDEX(err_attribute_requires_positive_integer) +DIAG_NAME_INDEX(err_attribute_section_invalid_for_target) +DIAG_NAME_INDEX(err_attribute_selectany_non_extern_data) +DIAG_NAME_INDEX(err_attribute_sentinel_less_than_zero) +DIAG_NAME_INDEX(err_attribute_sentinel_not_zero_or_one) +DIAG_NAME_INDEX(err_attribute_size_too_large) +DIAG_NAME_INDEX(err_attribute_too_few_arguments) +DIAG_NAME_INDEX(err_attribute_too_many_arguments) +DIAG_NAME_INDEX(err_attribute_unsupported) +DIAG_NAME_INDEX(err_attribute_uuid_malformed_guid) +DIAG_NAME_INDEX(err_attribute_vecreturn_only_pod_record) +DIAG_NAME_INDEX(err_attribute_vecreturn_only_vector_member) +DIAG_NAME_INDEX(err_attribute_weak_static) +DIAG_NAME_INDEX(err_attribute_weakref_not_global_context) +DIAG_NAME_INDEX(err_attribute_weakref_not_static) +DIAG_NAME_INDEX(err_attribute_weakref_without_alias) +DIAG_NAME_INDEX(err_attribute_wrong_decl_type) +DIAG_NAME_INDEX(err_attribute_wrong_decl_type_str) +DIAG_NAME_INDEX(err_attribute_wrong_number_arguments) +DIAG_NAME_INDEX(err_attribute_zero_size) +DIAG_NAME_INDEX(err_attributes_are_not_compatible) +DIAG_NAME_INDEX(err_attributes_misplaced) +DIAG_NAME_INDEX(err_attributes_not_allowed) +DIAG_NAME_INDEX(err_auto_bitfield) +DIAG_NAME_INDEX(err_auto_different_deductions) +DIAG_NAME_INDEX(err_auto_fn_deduction_failure) +DIAG_NAME_INDEX(err_auto_fn_different_deductions) +DIAG_NAME_INDEX(err_auto_fn_no_return_but_not_auto) +DIAG_NAME_INDEX(err_auto_fn_return_init_list) +DIAG_NAME_INDEX(err_auto_fn_return_void_but_not_auto) +DIAG_NAME_INDEX(err_auto_fn_used_before_defined) +DIAG_NAME_INDEX(err_auto_fn_virtual) +DIAG_NAME_INDEX(err_auto_inconsistent_deduction) +DIAG_NAME_INDEX(err_auto_init_list_from_c) +DIAG_NAME_INDEX(err_auto_missing_trailing_return) +DIAG_NAME_INDEX(err_auto_new_ctor_multiple_expressions) +DIAG_NAME_INDEX(err_auto_new_deduction_failure) +DIAG_NAME_INDEX(err_auto_new_requires_ctor_arg) +DIAG_NAME_INDEX(err_auto_non_deduced_not_alone) +DIAG_NAME_INDEX(err_auto_not_allowed) +DIAG_NAME_INDEX(err_auto_not_allowed_var_inst) +DIAG_NAME_INDEX(err_auto_var_deduction_failure) +DIAG_NAME_INDEX(err_auto_var_deduction_failure_from_init_list) +DIAG_NAME_INDEX(err_auto_var_init_multiple_expressions) +DIAG_NAME_INDEX(err_auto_var_init_no_expression) +DIAG_NAME_INDEX(err_auto_var_init_paren_braces) +DIAG_NAME_INDEX(err_auto_var_requires_init) +DIAG_NAME_INDEX(err_auto_variable_cannot_appear_in_own_initializer) +DIAG_NAME_INDEX(err_avail_query_expected_platform_name) +DIAG_NAME_INDEX(err_avail_query_unrecognized_platform_name) +DIAG_NAME_INDEX(err_availability_expected_change) +DIAG_NAME_INDEX(err_availability_expected_platform) +DIAG_NAME_INDEX(err_availability_query_repeated_platform) +DIAG_NAME_INDEX(err_availability_query_repeated_star) +DIAG_NAME_INDEX(err_availability_query_wildcard_required) +DIAG_NAME_INDEX(err_availability_redundant) +DIAG_NAME_INDEX(err_availability_unknown_change) +DIAG_NAME_INDEX(err_await_suspend_invalid_return_type) +DIAG_NAME_INDEX(err_bad_category_property_decl) +DIAG_NAME_INDEX(err_bad_character_encoding) +DIAG_NAME_INDEX(err_bad_const_cast_dest) +DIAG_NAME_INDEX(err_bad_cstyle_cast_overload) +DIAG_NAME_INDEX(err_bad_cxx_cast_bitfield) +DIAG_NAME_INDEX(err_bad_cxx_cast_generic) +DIAG_NAME_INDEX(err_bad_cxx_cast_member_pointer_size) +DIAG_NAME_INDEX(err_bad_cxx_cast_qualifiers_away) +DIAG_NAME_INDEX(err_bad_cxx_cast_rvalue) +DIAG_NAME_INDEX(err_bad_cxx_cast_scalar_to_vector_different_size) +DIAG_NAME_INDEX(err_bad_cxx_cast_unrelated_class) +DIAG_NAME_INDEX(err_bad_cxx_cast_vector_to_scalar_different_size) +DIAG_NAME_INDEX(err_bad_cxx_cast_vector_to_vector_different_size) +DIAG_NAME_INDEX(err_bad_dynamic_cast_incomplete) +DIAG_NAME_INDEX(err_bad_dynamic_cast_not_class) +DIAG_NAME_INDEX(err_bad_dynamic_cast_not_polymorphic) +DIAG_NAME_INDEX(err_bad_dynamic_cast_not_ptr) +DIAG_NAME_INDEX(err_bad_dynamic_cast_not_ref_or_ptr) +DIAG_NAME_INDEX(err_bad_kernel_param_type) +DIAG_NAME_INDEX(err_bad_lvalue_to_rvalue_cast) +DIAG_NAME_INDEX(err_bad_memptr_lhs) +DIAG_NAME_INDEX(err_bad_memptr_rhs) +DIAG_NAME_INDEX(err_bad_multiversion_option) +DIAG_NAME_INDEX(err_bad_new_type) +DIAG_NAME_INDEX(err_bad_parameter_name) +DIAG_NAME_INDEX(err_bad_property_context) +DIAG_NAME_INDEX(err_bad_property_decl) +DIAG_NAME_INDEX(err_bad_receiver_type) +DIAG_NAME_INDEX(err_bad_reinterpret_cast_overload) +DIAG_NAME_INDEX(err_bad_reinterpret_cast_reference) +DIAG_NAME_INDEX(err_bad_reinterpret_cast_small_int) +DIAG_NAME_INDEX(err_bad_rvalue_to_rvalue_cast) +DIAG_NAME_INDEX(err_bad_static_cast_member_pointer_nonmp) +DIAG_NAME_INDEX(err_bad_static_cast_overload) +DIAG_NAME_INDEX(err_bad_static_cast_pointer_nonpointer) +DIAG_NAME_INDEX(err_bad_string_encoding) +DIAG_NAME_INDEX(err_bad_variable_name) +DIAG_NAME_INDEX(err_base_class_has_flexible_array_member) +DIAG_NAME_INDEX(err_base_clause_on_union) +DIAG_NAME_INDEX(err_base_init_direct_and_virtual) +DIAG_NAME_INDEX(err_base_init_does_not_name_class) +DIAG_NAME_INDEX(err_base_must_be_class) +DIAG_NAME_INDEX(err_base_specifier_attribute) +DIAG_NAME_INDEX(err_binding_cannot_appear_in_own_initializer) +DIAG_NAME_INDEX(err_bitfield_has_negative_width) +DIAG_NAME_INDEX(err_bitfield_has_zero_width) +DIAG_NAME_INDEX(err_bitfield_width_exceeds_type_width) +DIAG_NAME_INDEX(err_block_decl_ref_not_modifiable_lvalue) +DIAG_NAME_INDEX(err_block_extern_cant_init) +DIAG_NAME_INDEX(err_block_on_nonlocal) +DIAG_NAME_INDEX(err_block_on_vm) +DIAG_NAME_INDEX(err_block_return_missing_expr) +DIAG_NAME_INDEX(err_block_returning_array_function) +DIAG_NAME_INDEX(err_blocks_disable) +DIAG_NAME_INDEX(err_bool_redeclaration) +DIAG_NAME_INDEX(err_bound_member_function) +DIAG_NAME_INDEX(err_box_literal_collection) +DIAG_NAME_INDEX(err_bracket_depth_exceeded) +DIAG_NAME_INDEX(err_brackets_go_after_unqualified_id) +DIAG_NAME_INDEX(err_break_not_in_loop_or_switch) +DIAG_NAME_INDEX(err_builtin_annotation_first_arg) +DIAG_NAME_INDEX(err_builtin_annotation_second_arg) +DIAG_NAME_INDEX(err_builtin_definition) +DIAG_NAME_INDEX(err_builtin_fn_use) +DIAG_NAME_INDEX(err_builtin_func_cast_more_than_one_arg) +DIAG_NAME_INDEX(err_builtin_launder_invalid_arg) +DIAG_NAME_INDEX(err_builtin_longjmp_invalid_val) +DIAG_NAME_INDEX(err_builtin_longjmp_unsupported) +DIAG_NAME_INDEX(err_builtin_needs_feature) +DIAG_NAME_INDEX(err_builtin_operator_new_delete_not_usual) +DIAG_NAME_INDEX(err_builtin_redeclare) +DIAG_NAME_INDEX(err_builtin_requires_language) +DIAG_NAME_INDEX(err_builtin_setjmp_unsupported) +DIAG_NAME_INDEX(err_builtin_target_unsupported) +DIAG_NAME_INDEX(err_builtin_x64_aarch64_only) +DIAG_NAME_INDEX(err_c11_noreturn_misplaced) +DIAG_NAME_INDEX(err_c99_array_usage_cxx) +DIAG_NAME_INDEX(err_call_function_incomplete_return) +DIAG_NAME_INDEX(err_call_incomplete_argument) +DIAG_NAME_INDEX(err_call_incomplete_return) +DIAG_NAME_INDEX(err_callback_attribute_argument_unknown) +DIAG_NAME_INDEX(err_callback_attribute_invalid_callee) +DIAG_NAME_INDEX(err_callback_attribute_multiple) +DIAG_NAME_INDEX(err_callback_attribute_no_callee) +DIAG_NAME_INDEX(err_callback_callee_is_variadic) +DIAG_NAME_INDEX(err_callback_callee_no_function_type) +DIAG_NAME_INDEX(err_callback_implicit_this_not_available) +DIAG_NAME_INDEX(err_cannot_find_suitable_accessor) +DIAG_NAME_INDEX(err_cannot_form_pointer_to_member_of_reference_type) +DIAG_NAME_INDEX(err_cannot_open_file) +DIAG_NAME_INDEX(err_cannot_pass_non_trivial_c_struct_to_vararg) +DIAG_NAME_INDEX(err_cannot_pass_objc_interface_to_vararg) +DIAG_NAME_INDEX(err_cannot_pass_objc_interface_to_vararg_format) +DIAG_NAME_INDEX(err_cannot_pass_to_vararg) +DIAG_NAME_INDEX(err_cannot_pass_to_vararg_format) +DIAG_NAME_INDEX(err_capture_block_variable) +DIAG_NAME_INDEX(err_capture_default_non_local) +DIAG_NAME_INDEX(err_capture_does_not_name_variable) +DIAG_NAME_INDEX(err_capture_more_than_once) +DIAG_NAME_INDEX(err_capture_non_automatic_variable) +DIAG_NAME_INDEX(err_capture_of_abstract_type) +DIAG_NAME_INDEX(err_capture_of_incomplete_type) +DIAG_NAME_INDEX(err_carries_dependency_missing_on_first_decl) +DIAG_NAME_INDEX(err_carries_dependency_param_not_function_decl) +DIAG_NAME_INDEX(err_case_not_in_switch) +DIAG_NAME_INDEX(err_cast_pointer_from_non_pointer_int) +DIAG_NAME_INDEX(err_cast_pointer_to_non_pointer_int) +DIAG_NAME_INDEX(err_cast_selector_expr) +DIAG_NAME_INDEX(err_catch_incomplete) +DIAG_NAME_INDEX(err_catch_incomplete_ptr) +DIAG_NAME_INDEX(err_catch_incomplete_ref) +DIAG_NAME_INDEX(err_catch_param_not_objc_type) +DIAG_NAME_INDEX(err_catch_rvalue_ref) +DIAG_NAME_INDEX(err_catch_variably_modified) +DIAG_NAME_INDEX(err_category_forward_interface) +DIAG_NAME_INDEX(err_category_property) +DIAG_NAME_INDEX(err_cconv_change) +DIAG_NAME_INDEX(err_cconv_knr) +DIAG_NAME_INDEX(err_cconv_varargs) +DIAG_NAME_INDEX(err_cfstring_literal_not_string_constant) +DIAG_NAME_INDEX(err_character_too_large) +DIAG_NAME_INDEX(err_circular_inheritance) +DIAG_NAME_INDEX(err_class_extension_after_impl) +DIAG_NAME_INDEX(err_class_marked_final_used_as_base) +DIAG_NAME_INDEX(err_class_on_template_template_param) +DIAG_NAME_INDEX(err_class_property_found) +DIAG_NAME_INDEX(err_class_redeclared_with_different_access) +DIAG_NAME_INDEX(err_cocoa_naming_owned_rule) +DIAG_NAME_INDEX(err_collection_expr_type) +DIAG_NAME_INDEX(err_complex_mode_vector_type) +DIAG_NAME_INDEX(err_compound_literal_with_address_space) +DIAG_NAME_INDEX(err_compound_qualified_function_type) +DIAG_NAME_INDEX(err_concept_decl_invalid_specifiers) +DIAG_NAME_INDEX(err_concept_decls_may_only_appear_in_namespace_scope) +DIAG_NAME_INDEX(err_concept_specialized) +DIAG_NAME_INDEX(err_concept_specified_specialization) +DIAG_NAME_INDEX(err_concept_wrong_decl_kind) +DIAG_NAME_INDEX(err_cond_voidptr_arc) +DIAG_NAME_INDEX(err_conditional_ambiguous) +DIAG_NAME_INDEX(err_conditional_ambiguous_ovl) +DIAG_NAME_INDEX(err_conditional_vector_element_size) +DIAG_NAME_INDEX(err_conditional_vector_size) +DIAG_NAME_INDEX(err_conditional_void_nonvoid) +DIAG_NAME_INDEX(err_config_scalar_return) +DIAG_NAME_INDEX(err_conflict_marker) +DIAG_NAME_INDEX(err_conflicting_aliasing_type) +DIAG_NAME_INDEX(err_conflicting_codeseg_attribute) +DIAG_NAME_INDEX(err_conflicting_ivar_bitwidth) +DIAG_NAME_INDEX(err_conflicting_ivar_name) +DIAG_NAME_INDEX(err_conflicting_ivar_type) +DIAG_NAME_INDEX(err_conflicting_overriding_cc_attributes) +DIAG_NAME_INDEX(err_conflicting_super_class) +DIAG_NAME_INDEX(err_conflicting_types) +DIAG_NAME_INDEX(err_constant_integer_arg_type) +DIAG_NAME_INDEX(err_constexpr_body_invalid_stmt) +DIAG_NAME_INDEX(err_constexpr_body_no_return) +DIAG_NAME_INDEX(err_constexpr_ctor_missing_init) +DIAG_NAME_INDEX(err_constexpr_dtor) +DIAG_NAME_INDEX(err_constexpr_function_try_block) +DIAG_NAME_INDEX(err_constexpr_local_var_no_init) +DIAG_NAME_INDEX(err_constexpr_local_var_non_literal_type) +DIAG_NAME_INDEX(err_constexpr_local_var_static) +DIAG_NAME_INDEX(err_constexpr_main) +DIAG_NAME_INDEX(err_constexpr_no_declarators) +DIAG_NAME_INDEX(err_constexpr_non_literal_param) +DIAG_NAME_INDEX(err_constexpr_non_literal_return) +DIAG_NAME_INDEX(err_constexpr_redecl_mismatch) +DIAG_NAME_INDEX(err_constexpr_return_missing_expr) +DIAG_NAME_INDEX(err_constexpr_static_mem_var_requires_init) +DIAG_NAME_INDEX(err_constexpr_tag) +DIAG_NAME_INDEX(err_constexpr_union_ctor_no_init) +DIAG_NAME_INDEX(err_constexpr_var_non_literal) +DIAG_NAME_INDEX(err_constexpr_var_requires_const_init) +DIAG_NAME_INDEX(err_constexpr_virtual) +DIAG_NAME_INDEX(err_constexpr_virtual_base) +DIAG_NAME_INDEX(err_constexpr_vla) +DIAG_NAME_INDEX(err_constructor_bad_name) +DIAG_NAME_INDEX(err_constructor_byvalue_arg) +DIAG_NAME_INDEX(err_constructor_cannot_be) +DIAG_NAME_INDEX(err_constructor_redeclared) +DIAG_NAME_INDEX(err_constructor_return_type) +DIAG_NAME_INDEX(err_continuation_class) +DIAG_NAME_INDEX(err_continue_not_in_loop) +DIAG_NAME_INDEX(err_conv_function_not_member) +DIAG_NAME_INDEX(err_conv_function_redeclared) +DIAG_NAME_INDEX(err_conv_function_return_type) +DIAG_NAME_INDEX(err_conv_function_to_array) +DIAG_NAME_INDEX(err_conv_function_to_function) +DIAG_NAME_INDEX(err_conv_function_variadic) +DIAG_NAME_INDEX(err_conv_function_with_complex_decl) +DIAG_NAME_INDEX(err_conv_function_with_params) +DIAG_NAME_INDEX(err_convertvector_incompatible_vector) +DIAG_NAME_INDEX(err_convertvector_non_vector) +DIAG_NAME_INDEX(err_convertvector_non_vector_type) +DIAG_NAME_INDEX(err_copy_capture_with_copy_default) +DIAG_NAME_INDEX(err_coroutine_handle_missing_member) +DIAG_NAME_INDEX(err_coroutine_invalid_func_context) +DIAG_NAME_INDEX(err_coroutine_objc_method) +DIAG_NAME_INDEX(err_coroutine_outside_function) +DIAG_NAME_INDEX(err_coroutine_promise_get_return_object_on_allocation_failure) +DIAG_NAME_INDEX(err_coroutine_promise_incompatible_return_functions) +DIAG_NAME_INDEX(err_coroutine_promise_new_requires_nothrow) +DIAG_NAME_INDEX(err_coroutine_promise_requires_return_function) +DIAG_NAME_INDEX(err_coroutine_promise_type_incomplete) +DIAG_NAME_INDEX(err_coroutine_promise_unhandled_exception_required) +DIAG_NAME_INDEX(err_coroutine_type_missing_specialization) +DIAG_NAME_INDEX(err_coroutine_unevaluated_context) +DIAG_NAME_INDEX(err_covariant_return_ambiguous_derived_to_base_conv) +DIAG_NAME_INDEX(err_covariant_return_inaccessible_base) +DIAG_NAME_INDEX(err_covariant_return_incomplete) +DIAG_NAME_INDEX(err_covariant_return_not_derived) +DIAG_NAME_INDEX(err_covariant_return_type_class_type_more_qualified) +DIAG_NAME_INDEX(err_covariant_return_type_different_qualifications) +DIAG_NAME_INDEX(err_cpu_dispatch_mismatch) +DIAG_NAME_INDEX(err_cpu_specific_multiple_defs) +DIAG_NAME_INDEX(err_cpu_unsupported_isa) +DIAG_NAME_INDEX(err_ctor_dtor_returns_void) +DIAG_NAME_INDEX(err_ctor_init_missing_comma) +DIAG_NAME_INDEX(err_ctu_error_opening) +DIAG_NAME_INDEX(err_cuda_device_exceptions) +DIAG_NAME_INDEX(err_cuda_extern_shared) +DIAG_NAME_INDEX(err_cuda_host_shared) +DIAG_NAME_INDEX(err_cuda_nonglobal_constant) +DIAG_NAME_INDEX(err_cuda_ovl_target) +DIAG_NAME_INDEX(err_cuda_unattributed_constexpr_cannot_overload_device) +DIAG_NAME_INDEX(err_cuda_vla) +DIAG_NAME_INDEX(err_current_module_name_mismatch) +DIAG_NAME_INDEX(err_cxx11_attribute_forbids_arguments) +DIAG_NAME_INDEX(err_cxx11_attribute_forbids_ellipsis) +DIAG_NAME_INDEX(err_cxx11_attribute_repeated) +DIAG_NAME_INDEX(err_cyclic_alias) +DIAG_NAME_INDEX(err_dangling_member) +DIAG_NAME_INDEX(err_dealloc_bad_result_type) +DIAG_NAME_INDEX(err_decimal_unsupported) +DIAG_NAME_INDEX(err_decl_attribute_invalid_on_stmt) +DIAG_NAME_INDEX(err_decl_negative_array_size) +DIAG_NAME_INDEX(err_declaration_does_not_declare_param) +DIAG_NAME_INDEX(err_declarator_need_ident) +DIAG_NAME_INDEX(err_declspec_after_virtspec) +DIAG_NAME_INDEX(err_declspec_thread_on_thread_variable) +DIAG_NAME_INDEX(err_decltype_auto_cannot_be_combined) +DIAG_NAME_INDEX(err_decltype_auto_compound_type) +DIAG_NAME_INDEX(err_decltype_auto_function_declarator_not_declaration) +DIAG_NAME_INDEX(err_decltype_auto_initializer_list) +DIAG_NAME_INDEX(err_decltype_auto_invalid) +DIAG_NAME_INDEX(err_decltype_in_declarator) +DIAG_NAME_INDEX(err_decomp_decl_ambiguous_base) +DIAG_NAME_INDEX(err_decomp_decl_anon_union_member) +DIAG_NAME_INDEX(err_decomp_decl_context) +DIAG_NAME_INDEX(err_decomp_decl_inaccessible_base) +DIAG_NAME_INDEX(err_decomp_decl_inaccessible_field) +DIAG_NAME_INDEX(err_decomp_decl_multiple_bases_with_members) +DIAG_NAME_INDEX(err_decomp_decl_not_alone) +DIAG_NAME_INDEX(err_decomp_decl_parens) +DIAG_NAME_INDEX(err_decomp_decl_requires_init) +DIAG_NAME_INDEX(err_decomp_decl_spec) +DIAG_NAME_INDEX(err_decomp_decl_std_tuple_element_not_specialized) +DIAG_NAME_INDEX(err_decomp_decl_std_tuple_size_not_constant) +DIAG_NAME_INDEX(err_decomp_decl_template) +DIAG_NAME_INDEX(err_decomp_decl_type) +DIAG_NAME_INDEX(err_decomp_decl_unbindable_type) +DIAG_NAME_INDEX(err_decomp_decl_wrong_number_bindings) +DIAG_NAME_INDEX(err_decrement_bool) +DIAG_NAME_INDEX(err_deduced_class_template_compound_type) +DIAG_NAME_INDEX(err_deduced_class_template_ctor_ambiguous) +DIAG_NAME_INDEX(err_deduced_class_template_ctor_no_viable) +DIAG_NAME_INDEX(err_deduced_class_template_deleted) +DIAG_NAME_INDEX(err_deduced_class_template_explicit) +DIAG_NAME_INDEX(err_deduced_class_template_incomplete) +DIAG_NAME_INDEX(err_deduced_non_class_template_specialization_type) +DIAG_NAME_INDEX(err_deduced_non_type_template_arg_type_mismatch) +DIAG_NAME_INDEX(err_deduced_return_type) +DIAG_NAME_INDEX(err_deduction_guide_bad_trailing_return_type) +DIAG_NAME_INDEX(err_deduction_guide_defines_function) +DIAG_NAME_INDEX(err_deduction_guide_explicit_mismatch) +DIAG_NAME_INDEX(err_deduction_guide_invalid_specifier) +DIAG_NAME_INDEX(err_deduction_guide_name_not_class_template) +DIAG_NAME_INDEX(err_deduction_guide_no_trailing_return_type) +DIAG_NAME_INDEX(err_deduction_guide_specialized) +DIAG_NAME_INDEX(err_deduction_guide_template_not_deducible) +DIAG_NAME_INDEX(err_deduction_guide_with_complex_decl) +DIAG_NAME_INDEX(err_deduction_guide_wrong_access) +DIAG_NAME_INDEX(err_deduction_guide_wrong_scope) +DIAG_NAME_INDEX(err_deep_exception_specs_differ) +DIAG_NAME_INDEX(err_default_arg_in_partial_spec) +DIAG_NAME_INDEX(err_default_arg_makes_ctor_special) +DIAG_NAME_INDEX(err_default_arg_unparsed) +DIAG_NAME_INDEX(err_default_delete_in_multiple_declaration) +DIAG_NAME_INDEX(err_default_init_const) +DIAG_NAME_INDEX(err_default_not_in_switch) +DIAG_NAME_INDEX(err_default_special_members) +DIAG_NAME_INDEX(err_default_template_template_parameter_not_template) +DIAG_NAME_INDEX(err_defaulted_copy_assign_not_ref) +DIAG_NAME_INDEX(err_defaulted_special_member_copy_const_param) +DIAG_NAME_INDEX(err_defaulted_special_member_move_const_param) +DIAG_NAME_INDEX(err_defaulted_special_member_params) +DIAG_NAME_INDEX(err_defaulted_special_member_quals) +DIAG_NAME_INDEX(err_defaulted_special_member_return_type) +DIAG_NAME_INDEX(err_defaulted_special_member_variadic) +DIAG_NAME_INDEX(err_defaulted_special_member_volatile_param) +DIAG_NAME_INDEX(err_defined_macro_name) +DIAG_NAME_INDEX(err_definition_of_explicitly_defaulted_member) +DIAG_NAME_INDEX(err_definition_of_implicitly_declared_member) +DIAG_NAME_INDEX(err_delegating_ctor) +DIAG_NAME_INDEX(err_delegating_initializer_alone) +DIAG_NAME_INDEX(err_delete_explicit_conversion) +DIAG_NAME_INDEX(err_delete_incomplete_class_type) +DIAG_NAME_INDEX(err_delete_operand) +DIAG_NAME_INDEX(err_deleted_decl_not_first) +DIAG_NAME_INDEX(err_deleted_function_use) +DIAG_NAME_INDEX(err_deleted_inherited_ctor_use) +DIAG_NAME_INDEX(err_deleted_main) +DIAG_NAME_INDEX(err_deleted_non_function) +DIAG_NAME_INDEX(err_deleted_override) +DIAG_NAME_INDEX(err_dependent_deduced_tst) +DIAG_NAME_INDEX(err_dependent_function_template_spec_no_match) +DIAG_NAME_INDEX(err_dependent_nested_name_spec) +DIAG_NAME_INDEX(err_dependent_non_type_arg_in_partial_spec) +DIAG_NAME_INDEX(err_dependent_tag_decl) +DIAG_NAME_INDEX(err_dependent_typed_non_type_arg_in_partial_spec) +DIAG_NAME_INDEX(err_dereference_incomplete_type) +DIAG_NAME_INDEX(err_designated_init_attr_non_init) +DIAG_NAME_INDEX(err_designator_for_scalar_init) +DIAG_NAME_INDEX(err_designator_into_flexible_array_member) +DIAG_NAME_INDEX(err_destroy_attr_on_non_static_var) +DIAG_NAME_INDEX(err_destroying_operator_delete_not_usual) +DIAG_NAME_INDEX(err_destructor_cannot_be) +DIAG_NAME_INDEX(err_destructor_class_name) +DIAG_NAME_INDEX(err_destructor_expr_type_mismatch) +DIAG_NAME_INDEX(err_destructor_name) +DIAG_NAME_INDEX(err_destructor_not_member) +DIAG_NAME_INDEX(err_destructor_redeclared) +DIAG_NAME_INDEX(err_destructor_return_type) +DIAG_NAME_INDEX(err_destructor_template) +DIAG_NAME_INDEX(err_destructor_template_id) +DIAG_NAME_INDEX(err_destructor_tilde_identifier) +DIAG_NAME_INDEX(err_destructor_tilde_scope) +DIAG_NAME_INDEX(err_destructor_typedef_name) +DIAG_NAME_INDEX(err_destructor_variadic) +DIAG_NAME_INDEX(err_destructor_with_params) +DIAG_NAME_INDEX(err_device_static_local_var) +DIAG_NAME_INDEX(err_diagnose_if_invalid_diagnostic_type) +DIAG_NAME_INDEX(err_diagnose_if_succeeded) +DIAG_NAME_INDEX(err_different_asm_label) +DIAG_NAME_INDEX(err_different_language_linkage) +DIAG_NAME_INDEX(err_different_pass_object_size_params) +DIAG_NAME_INDEX(err_different_return_type_for_overriding_virtual_function) +DIAG_NAME_INDEX(err_digit_separator_not_between_digits) +DIAG_NAME_INDEX(err_dimension_expr_not_constant_integer) +DIAG_NAME_INDEX(err_distant_exception_spec) +DIAG_NAME_INDEX(err_downcast_from_inaccessible_base) +DIAG_NAME_INDEX(err_drv_I_dash_not_supported) +DIAG_NAME_INDEX(err_drv_Xopenmp_target_missing_triple) +DIAG_NAME_INDEX(err_drv_argument_not_allowed_with) +DIAG_NAME_INDEX(err_drv_argument_only_allowed_with) +DIAG_NAME_INDEX(err_drv_bitcode_unsupported_on_toolchain) +DIAG_NAME_INDEX(err_drv_cannot_read_config_file) +DIAG_NAME_INDEX(err_drv_cc_print_options_failure) +DIAG_NAME_INDEX(err_drv_clang_unsupported) +DIAG_NAME_INDEX(err_drv_clang_unsupported_opt_cxx_darwin_i386) +DIAG_NAME_INDEX(err_drv_clang_unsupported_opt_faltivec) +DIAG_NAME_INDEX(err_drv_command_failed) +DIAG_NAME_INDEX(err_drv_command_failure) +DIAG_NAME_INDEX(err_drv_command_signalled) +DIAG_NAME_INDEX(err_drv_compilationdatabase) +DIAG_NAME_INDEX(err_drv_config_file_not_exist) +DIAG_NAME_INDEX(err_drv_config_file_not_found) +DIAG_NAME_INDEX(err_drv_conflicting_deployment_targets) +DIAG_NAME_INDEX(err_drv_cuda_bad_gpu_arch) +DIAG_NAME_INDEX(err_drv_cuda_host_arch) +DIAG_NAME_INDEX(err_drv_cuda_version_unsupported) +DIAG_NAME_INDEX(err_drv_defsym_invalid_format) +DIAG_NAME_INDEX(err_drv_defsym_invalid_symval) +DIAG_NAME_INDEX(err_drv_dllexport_inlines_and_fallback) +DIAG_NAME_INDEX(err_drv_duplicate_config) +DIAG_NAME_INDEX(err_drv_emit_llvm_link) +DIAG_NAME_INDEX(err_drv_expecting_fopenmp_with_fopenmp_targets) +DIAG_NAME_INDEX(err_drv_force_crash) +DIAG_NAME_INDEX(err_drv_gnustep_objc_runtime_incompatible_binary) +DIAG_NAME_INDEX(err_drv_invalid_Xarch_argument_isdriver) +DIAG_NAME_INDEX(err_drv_invalid_Xarch_argument_with_args) +DIAG_NAME_INDEX(err_drv_invalid_Xopenmp_target_with_args) +DIAG_NAME_INDEX(err_drv_invalid_arch_name) +DIAG_NAME_INDEX(err_drv_invalid_argument_to_fdebug_prefix_map) +DIAG_NAME_INDEX(err_drv_invalid_cf_runtime_abi) +DIAG_NAME_INDEX(err_drv_invalid_darwin_version) +DIAG_NAME_INDEX(err_drv_invalid_gcc_output_type) +DIAG_NAME_INDEX(err_drv_invalid_hvx_length) +DIAG_NAME_INDEX(err_drv_invalid_int_value) +DIAG_NAME_INDEX(err_drv_invalid_libcxx_deployment) +DIAG_NAME_INDEX(err_drv_invalid_linker_name) +DIAG_NAME_INDEX(err_drv_invalid_mfloat_abi) +DIAG_NAME_INDEX(err_drv_invalid_mtp) +DIAG_NAME_INDEX(err_drv_invalid_omp_target) +DIAG_NAME_INDEX(err_drv_invalid_output_with_multiple_archs) +DIAG_NAME_INDEX(err_drv_invalid_pgo_instrumentor) +DIAG_NAME_INDEX(err_drv_invalid_remap_file) +DIAG_NAME_INDEX(err_drv_invalid_riscv_arch_name) +DIAG_NAME_INDEX(err_drv_invalid_riscv_ext_arch_name) +DIAG_NAME_INDEX(err_drv_invalid_rtlib_name) +DIAG_NAME_INDEX(err_drv_invalid_stdlib_name) +DIAG_NAME_INDEX(err_drv_invalid_thread_model_for_target) +DIAG_NAME_INDEX(err_drv_invalid_value) +DIAG_NAME_INDEX(err_drv_invalid_version_number) +DIAG_NAME_INDEX(err_drv_lto_without_lld) +DIAG_NAME_INDEX(err_drv_malformed_sanitizer_blacklist) +DIAG_NAME_INDEX(err_drv_mg_requires_m_or_mm) +DIAG_NAME_INDEX(err_drv_missing_arg_mtp) +DIAG_NAME_INDEX(err_drv_missing_argument) +DIAG_NAME_INDEX(err_drv_mix_cuda_hip) +DIAG_NAME_INDEX(err_drv_module_header_wrong_kind) +DIAG_NAME_INDEX(err_drv_modules_validate_once_requires_timestamp) +DIAG_NAME_INDEX(err_drv_nested_config_file) +DIAG_NAME_INDEX(err_drv_no_ast_support) +DIAG_NAME_INDEX(err_drv_no_cuda_installation) +DIAG_NAME_INDEX(err_drv_no_cuda_libdevice) +DIAG_NAME_INDEX(err_drv_no_input_files) +DIAG_NAME_INDEX(err_drv_no_linker_llvm_support) +DIAG_NAME_INDEX(err_drv_no_module_support) +DIAG_NAME_INDEX(err_drv_no_neon_modifier) +DIAG_NAME_INDEX(err_drv_no_such_file) +DIAG_NAME_INDEX(err_drv_omp_host_ir_file_not_found) +DIAG_NAME_INDEX(err_drv_omp_host_target_not_supported) +DIAG_NAME_INDEX(err_drv_optimization_remark_pattern) +DIAG_NAME_INDEX(err_drv_out_file_argument_with_multiple_sources) +DIAG_NAME_INDEX(err_drv_output_argument_with_multiple_files) +DIAG_NAME_INDEX(err_drv_preamble_format) +DIAG_NAME_INDEX(err_drv_ropi_incompatible_with_cxx) +DIAG_NAME_INDEX(err_drv_ropi_rwpi_incompatible_with_pic) +DIAG_NAME_INDEX(err_drv_trivial_auto_var_init_zero_disabled) +DIAG_NAME_INDEX(err_drv_unable_to_remove_file) +DIAG_NAME_INDEX(err_drv_unknown_argument) +DIAG_NAME_INDEX(err_drv_unknown_argument_with_suggestion) +DIAG_NAME_INDEX(err_drv_unknown_indirect_jump_opt) +DIAG_NAME_INDEX(err_drv_unknown_language) +DIAG_NAME_INDEX(err_drv_unknown_objc_runtime) +DIAG_NAME_INDEX(err_drv_unknown_stdin_type) +DIAG_NAME_INDEX(err_drv_unknown_stdin_type_clang_cl) +DIAG_NAME_INDEX(err_drv_unsupported_embed_bitcode) +DIAG_NAME_INDEX(err_drv_unsupported_indirect_jump_opt) +DIAG_NAME_INDEX(err_drv_unsupported_linker) +DIAG_NAME_INDEX(err_drv_unsupported_noabicalls_pic) +DIAG_NAME_INDEX(err_drv_unsupported_opt) +DIAG_NAME_INDEX(err_drv_unsupported_opt_for_target) +DIAG_NAME_INDEX(err_drv_unsupported_opt_with_suggestion) +DIAG_NAME_INDEX(err_drv_unsupported_option_argument) +DIAG_NAME_INDEX(err_drv_unsupported_rtlib_for_platform) +DIAG_NAME_INDEX(err_drv_use_of_Z_option) +DIAG_NAME_INDEX(err_dtor_expr_without_call) +DIAG_NAME_INDEX(err_dup_implementation_category) +DIAG_NAME_INDEX(err_dup_implementation_class) +DIAG_NAME_INDEX(err_dup_virtual) +DIAG_NAME_INDEX(err_duplicate_base_class) +DIAG_NAME_INDEX(err_duplicate_case) +DIAG_NAME_INDEX(err_duplicate_case_differing_expr) +DIAG_NAME_INDEX(err_duplicate_class_def) +DIAG_NAME_INDEX(err_duplicate_default_assoc) +DIAG_NAME_INDEX(err_duplicate_ivar_declaration) +DIAG_NAME_INDEX(err_duplicate_ivar_use) +DIAG_NAME_INDEX(err_duplicate_mangled_name) +DIAG_NAME_INDEX(err_duplicate_member) +DIAG_NAME_INDEX(err_duplicate_method_decl) +DIAG_NAME_INDEX(err_duplicate_property) +DIAG_NAME_INDEX(err_duplicate_virt_specifier) +DIAG_NAME_INDEX(err_dynamic_and_noexcept_specification) +DIAG_NAME_INDEX(err_dynamic_property_ivar_decl) +DIAG_NAME_INDEX(err_dynamic_var_init) +DIAG_NAME_INDEX(err_early_catch_all) +DIAG_NAME_INDEX(err_ellipsis_first_param) +DIAG_NAME_INDEX(err_ellipsis_in_declarator_not_parameter) +DIAG_NAME_INDEX(err_embedded_directive) +DIAG_NAME_INDEX(err_empty_enum) +DIAG_NAME_INDEX(err_empty_scalar_initializer) +DIAG_NAME_INDEX(err_enum_class_reference) +DIAG_NAME_INDEX(err_enum_invalid_underlying) +DIAG_NAME_INDEX(err_enum_mode_vector_type) +DIAG_NAME_INDEX(err_enum_redeclare_fixed_mismatch) +DIAG_NAME_INDEX(err_enum_redeclare_scoped_mismatch) +DIAG_NAME_INDEX(err_enum_redeclare_type_mismatch) +DIAG_NAME_INDEX(err_enum_template) +DIAG_NAME_INDEX(err_enumerator_does_not_exist) +DIAG_NAME_INDEX(err_enumerator_list_missing_comma) +DIAG_NAME_INDEX(err_enumerator_too_large) +DIAG_NAME_INDEX(err_enumerator_unnamed_no_def) +DIAG_NAME_INDEX(err_enumerator_wrapped) +DIAG_NAME_INDEX(err_escape_too_large) +DIAG_NAME_INDEX(err_event_t_addr_space_qual) +DIAG_NAME_INDEX(err_except_spec_unparsed) +DIAG_NAME_INDEX(err_exception_spec_cycle) +DIAG_NAME_INDEX(err_exception_spec_in_typedef) +DIAG_NAME_INDEX(err_exception_spec_incomplete_type) +DIAG_NAME_INDEX(err_exception_spec_not_parsed) +DIAG_NAME_INDEX(err_exceptions_disabled) +DIAG_NAME_INDEX(err_excess_initializers) +DIAG_NAME_INDEX(err_excess_initializers_in_char_array_initializer) +DIAG_NAME_INDEX(err_expected) +DIAG_NAME_INDEX(err_expected_after) +DIAG_NAME_INDEX(err_expected_capture) +DIAG_NAME_INDEX(err_expected_case_before_expression) +DIAG_NAME_INDEX(err_expected_catch) +DIAG_NAME_INDEX(err_expected_class_name) +DIAG_NAME_INDEX(err_expected_class_name_not_template) +DIAG_NAME_INDEX(err_expected_class_or_namespace) +DIAG_NAME_INDEX(err_expected_colon_after_setter_name) +DIAG_NAME_INDEX(err_expected_coloncolon_after_super) +DIAG_NAME_INDEX(err_expected_comma_greater) +DIAG_NAME_INDEX(err_expected_comma_or_rsquare) +DIAG_NAME_INDEX(err_expected_either) +DIAG_NAME_INDEX(err_expected_end_declare_target) +DIAG_NAME_INDEX(err_expected_end_of_enumerator) +DIAG_NAME_INDEX(err_expected_equal_designator) +DIAG_NAME_INDEX(err_expected_expression) +DIAG_NAME_INDEX(err_expected_external_declaration) +DIAG_NAME_INDEX(err_expected_field_designator) +DIAG_NAME_INDEX(err_expected_fn_body) +DIAG_NAME_INDEX(err_expected_fold_operator) +DIAG_NAME_INDEX(err_expected_id_building_module) +DIAG_NAME_INDEX(err_expected_init_in_condition) +DIAG_NAME_INDEX(err_expected_init_in_condition_lparen) +DIAG_NAME_INDEX(err_expected_kernel_void_return_type) +DIAG_NAME_INDEX(err_expected_lambda_body) +DIAG_NAME_INDEX(err_expected_lbrace_after_base_specifiers) +DIAG_NAME_INDEX(err_expected_lbrace_in_compound_literal) +DIAG_NAME_INDEX(err_expected_less_after) +DIAG_NAME_INDEX(err_expected_lparen_after) +DIAG_NAME_INDEX(err_expected_lparen_after_type) +DIAG_NAME_INDEX(err_expected_member_name_or_semi) +DIAG_NAME_INDEX(err_expected_member_name_or_semi_objcxx_keyword) +DIAG_NAME_INDEX(err_expected_member_or_base_name) +DIAG_NAME_INDEX(err_expected_method_body) +DIAG_NAME_INDEX(err_expected_minus_or_plus) +DIAG_NAME_INDEX(err_expected_namespace_name) +DIAG_NAME_INDEX(err_expected_objc_container) +DIAG_NAME_INDEX(err_expected_parameter_pack) +DIAG_NAME_INDEX(err_expected_parentheses_around_typename) +DIAG_NAME_INDEX(err_expected_property_name) +DIAG_NAME_INDEX(err_expected_punc) +DIAG_NAME_INDEX(err_expected_qualified_after_typename) +DIAG_NAME_INDEX(err_expected_rparen_after) +DIAG_NAME_INDEX(err_expected_selector_for_method) +DIAG_NAME_INDEX(err_expected_semi_after_attribute_list) +DIAG_NAME_INDEX(err_expected_semi_after_expr) +DIAG_NAME_INDEX(err_expected_semi_after_method_proto) +DIAG_NAME_INDEX(err_expected_semi_after_namespace_name) +DIAG_NAME_INDEX(err_expected_semi_after_static_assert) +DIAG_NAME_INDEX(err_expected_semi_after_stmt) +DIAG_NAME_INDEX(err_expected_semi_decl_list) +DIAG_NAME_INDEX(err_expected_semi_declaration) +DIAG_NAME_INDEX(err_expected_semi_for) +DIAG_NAME_INDEX(err_expected_star_this_capture) +DIAG_NAME_INDEX(err_expected_statement) +DIAG_NAME_INDEX(err_expected_string_literal) +DIAG_NAME_INDEX(err_expected_template) +DIAG_NAME_INDEX(err_expected_template_parameter) +DIAG_NAME_INDEX(err_expected_token_instead_of_objcxx_keyword) +DIAG_NAME_INDEX(err_expected_type) +DIAG_NAME_INDEX(err_expected_type_name_after_typename) +DIAG_NAME_INDEX(err_expected_unqualified_id) +DIAG_NAME_INDEX(err_expected_version) +DIAG_NAME_INDEX(err_expected_while) +DIAG_NAME_INDEX(err_explicit_instantiation_ambiguous) +DIAG_NAME_INDEX(err_explicit_instantiation_constexpr) +DIAG_NAME_INDEX(err_explicit_instantiation_data_member_not_instantiated) +DIAG_NAME_INDEX(err_explicit_instantiation_declaration_after_definition) +DIAG_NAME_INDEX(err_explicit_instantiation_duplicate) +DIAG_NAME_INDEX(err_explicit_instantiation_enum) +DIAG_NAME_INDEX(err_explicit_instantiation_in_class) +DIAG_NAME_INDEX(err_explicit_instantiation_inline) +DIAG_NAME_INDEX(err_explicit_instantiation_member_function_not_instantiated) +DIAG_NAME_INDEX(err_explicit_instantiation_must_be_global) +DIAG_NAME_INDEX(err_explicit_instantiation_nontemplate_type) +DIAG_NAME_INDEX(err_explicit_instantiation_not_known) +DIAG_NAME_INDEX(err_explicit_instantiation_of_typedef) +DIAG_NAME_INDEX(err_explicit_instantiation_out_of_scope) +DIAG_NAME_INDEX(err_explicit_instantiation_requires_name) +DIAG_NAME_INDEX(err_explicit_instantiation_storage_class) +DIAG_NAME_INDEX(err_explicit_instantiation_undefined_func_template) +DIAG_NAME_INDEX(err_explicit_instantiation_undefined_member) +DIAG_NAME_INDEX(err_explicit_instantiation_undefined_var_template) +DIAG_NAME_INDEX(err_explicit_instantiation_unqualified_wrong_namespace) +DIAG_NAME_INDEX(err_explicit_instantiation_with_definition) +DIAG_NAME_INDEX(err_explicit_instantiation_without_template_id) +DIAG_NAME_INDEX(err_explicit_non_ctor_or_conv_function) +DIAG_NAME_INDEX(err_explicit_non_function) +DIAG_NAME_INDEX(err_explicit_out_of_class) +DIAG_NAME_INDEX(err_explicit_spec_non_template) +DIAG_NAME_INDEX(err_explicit_specialization_inconsistent_storage_class) +DIAG_NAME_INDEX(err_exponent_has_no_digits) +DIAG_NAME_INDEX(err_export_empty) +DIAG_NAME_INDEX(err_export_not_in_module_interface) +DIAG_NAME_INDEX(err_export_within_export) +DIAG_NAME_INDEX(err_expr_not_cce) +DIAG_NAME_INDEX(err_expr_not_ice) +DIAG_NAME_INDEX(err_expr_not_string_literal) +DIAG_NAME_INDEX(err_ext_vector_component_exceeds_length) +DIAG_NAME_INDEX(err_ext_vector_component_name_illegal) +DIAG_NAME_INDEX(err_extdefmap_parsing) +DIAG_NAME_INDEX(err_extern_c_global_conflict) +DIAG_NAME_INDEX(err_extern_non_extern) +DIAG_NAME_INDEX(err_external_source_symbol_duplicate_clause) +DIAG_NAME_INDEX(err_external_source_symbol_expected_keyword) +DIAG_NAME_INDEX(err_extraneous_closing_brace) +DIAG_NAME_INDEX(err_extraneous_rparen_in_condition) +DIAG_NAME_INDEX(err_extraneous_token_before_semi) +DIAG_NAME_INDEX(err_falloff_nonvoid_block) +DIAG_NAME_INDEX(err_fallthrough_attr_invalid_placement) +DIAG_NAME_INDEX(err_fallthrough_attr_outside_switch) +DIAG_NAME_INDEX(err_fallthrough_attr_wrong_target) +DIAG_NAME_INDEX(err_fe_action_not_available) +DIAG_NAME_INDEX(err_fe_ast_file_modified) +DIAG_NAME_INDEX(err_fe_backend_frame_larger_than) +DIAG_NAME_INDEX(err_fe_backend_plugin) +DIAG_NAME_INDEX(err_fe_backend_unsupported) +DIAG_NAME_INDEX(err_fe_cannot_link_module) +DIAG_NAME_INDEX(err_fe_dependency_file_requires_MT) +DIAG_NAME_INDEX(err_fe_error_backend) +DIAG_NAME_INDEX(err_fe_error_opening) +DIAG_NAME_INDEX(err_fe_error_reading) +DIAG_NAME_INDEX(err_fe_error_reading_stdin) +DIAG_NAME_INDEX(err_fe_expected_clang_command) +DIAG_NAME_INDEX(err_fe_expected_compiler_job) +DIAG_NAME_INDEX(err_fe_inline_asm) +DIAG_NAME_INDEX(err_fe_invalid_alignment) +DIAG_NAME_INDEX(err_fe_invalid_code_complete_file) +DIAG_NAME_INDEX(err_fe_invalid_exception_model) +DIAG_NAME_INDEX(err_fe_invalid_plugin_name) +DIAG_NAME_INDEX(err_fe_invalid_wchar_type) +DIAG_NAME_INDEX(err_fe_module_file_modified) +DIAG_NAME_INDEX(err_fe_no_pch_in_dir) +DIAG_NAME_INDEX(err_fe_not_a_pch_file) +DIAG_NAME_INDEX(err_fe_pch_file_modified) +DIAG_NAME_INDEX(err_fe_pch_file_overridden) +DIAG_NAME_INDEX(err_fe_pch_malformed) +DIAG_NAME_INDEX(err_fe_pch_malformed_block) +DIAG_NAME_INDEX(err_fe_remap_missing_from_file) +DIAG_NAME_INDEX(err_fe_remap_missing_to_file) +DIAG_NAME_INDEX(err_fe_stdout_binary) +DIAG_NAME_INDEX(err_fe_unable_to_create_target) +DIAG_NAME_INDEX(err_fe_unable_to_interface_with_target) +DIAG_NAME_INDEX(err_fe_unable_to_load_pch) +DIAG_NAME_INDEX(err_fe_unable_to_load_plugin) +DIAG_NAME_INDEX(err_fe_unable_to_open_output) +DIAG_NAME_INDEX(err_fe_unable_to_read_pch_file) +DIAG_NAME_INDEX(err_feature_check_malformed) +DIAG_NAME_INDEX(err_field_declared_as_function) +DIAG_NAME_INDEX(err_field_designator_non_aggr) +DIAG_NAME_INDEX(err_field_designator_nonfield) +DIAG_NAME_INDEX(err_field_designator_unknown) +DIAG_NAME_INDEX(err_field_designator_unknown_suggest) +DIAG_NAME_INDEX(err_field_incomplete) +DIAG_NAME_INDEX(err_field_instantiates_to_function) +DIAG_NAME_INDEX(err_field_with_address_space) +DIAG_NAME_INDEX(err_file_modified) +DIAG_NAME_INDEX(err_filter_expression_integral) +DIAG_NAME_INDEX(err_final_function_overridden) +DIAG_NAME_INDEX(err_first_argument_to_cwsc_block_call) +DIAG_NAME_INDEX(err_first_argument_to_cwsc_builtin_call) +DIAG_NAME_INDEX(err_first_argument_to_cwsc_not_call) +DIAG_NAME_INDEX(err_first_argument_to_cwsc_pdtor_call) +DIAG_NAME_INDEX(err_first_argument_to_va_arg_not_of_type_va_list) +DIAG_NAME_INDEX(err_fixed_point_not_enabled) +DIAG_NAME_INDEX(err_flexible_array_arc_retainable) +DIAG_NAME_INDEX(err_flexible_array_empty_aggregate) +DIAG_NAME_INDEX(err_flexible_array_has_nontrivial_dtor) +DIAG_NAME_INDEX(err_flexible_array_init) +DIAG_NAME_INDEX(err_flexible_array_init_needs_braces) +DIAG_NAME_INDEX(err_flexible_array_not_at_end) +DIAG_NAME_INDEX(err_flexible_array_union) +DIAG_NAME_INDEX(err_flexible_array_virtual_base) +DIAG_NAME_INDEX(err_fold_expression_bad_operand) +DIAG_NAME_INDEX(err_fold_expression_empty) +DIAG_NAME_INDEX(err_fold_expression_packs_both_sides) +DIAG_NAME_INDEX(err_fold_operator_mismatch) +DIAG_NAME_INDEX(err_for_co_await_not_range_for) +DIAG_NAME_INDEX(err_for_range_decl_must_be_var) +DIAG_NAME_INDEX(err_for_range_deduction_failure) +DIAG_NAME_INDEX(err_for_range_dereference) +DIAG_NAME_INDEX(err_for_range_expected_decl) +DIAG_NAME_INDEX(err_for_range_identifier) +DIAG_NAME_INDEX(err_for_range_incomplete_type) +DIAG_NAME_INDEX(err_for_range_invalid) +DIAG_NAME_INDEX(err_for_range_iter_deduction_failure) +DIAG_NAME_INDEX(err_for_range_storage_class) +DIAG_NAME_INDEX(err_format_attribute_implicit_this_format_string) +DIAG_NAME_INDEX(err_format_attribute_not) +DIAG_NAME_INDEX(err_format_attribute_requires_variadic) +DIAG_NAME_INDEX(err_format_attribute_result_not) +DIAG_NAME_INDEX(err_format_strftime_third_parameter) +DIAG_NAME_INDEX(err_fortify_std_lib_bad_decl) +DIAG_NAME_INDEX(err_forward_ref_enum) +DIAG_NAME_INDEX(err_forward_superclass) +DIAG_NAME_INDEX(err_friend_decl_defines_type) +DIAG_NAME_INDEX(err_friend_decl_does_not_match) +DIAG_NAME_INDEX(err_friend_decl_spec) +DIAG_NAME_INDEX(err_friend_decl_with_def_arg_must_be_def) +DIAG_NAME_INDEX(err_friend_decl_with_def_arg_redeclared) +DIAG_NAME_INDEX(err_friend_def_in_local_class) +DIAG_NAME_INDEX(err_friend_explicit_instantiation) +DIAG_NAME_INDEX(err_friend_invalid_in_context) +DIAG_NAME_INDEX(err_friend_is_member) +DIAG_NAME_INDEX(err_friend_not_first_in_declaration) +DIAG_NAME_INDEX(err_func_def_incomplete_result) +DIAG_NAME_INDEX(err_func_def_no_params) +DIAG_NAME_INDEX(err_func_returning_array_function) +DIAG_NAME_INDEX(err_func_returning_qualified_void) +DIAG_NAME_INDEX(err_function_attribute_mismatch) +DIAG_NAME_INDEX(err_function_concept_bool_ret) +DIAG_NAME_INDEX(err_function_concept_exception_spec) +DIAG_NAME_INDEX(err_function_concept_not_defined) +DIAG_NAME_INDEX(err_function_concept_with_params) +DIAG_NAME_INDEX(err_function_declared_typedef) +DIAG_NAME_INDEX(err_function_definition_not_allowed) +DIAG_NAME_INDEX(err_function_is_not_record) +DIAG_NAME_INDEX(err_function_marked_override_not_overriding) +DIAG_NAME_INDEX(err_function_needs_feature) +DIAG_NAME_INDEX(err_function_parameter_pack_without_parameter_packs) +DIAG_NAME_INDEX(err_function_template_partial_spec) +DIAG_NAME_INDEX(err_function_template_spec_ambiguous) +DIAG_NAME_INDEX(err_function_template_spec_no_match) +DIAG_NAME_INDEX(err_gc_weak_property_strong_type) +DIAG_NAME_INDEX(err_generic_sel_multi_match) +DIAG_NAME_INDEX(err_generic_sel_no_match) +DIAG_NAME_INDEX(err_getter_not_found) +DIAG_NAME_INDEX(err_global_call_not_config) +DIAG_NAME_INDEX(err_gnu_inline_asm_disabled) +DIAG_NAME_INDEX(err_goto_into_protected_scope) +DIAG_NAME_INDEX(err_goto_ms_asm_label) +DIAG_NAME_INDEX(err_half_const_requires_fp16) +DIAG_NAME_INDEX(err_header_module_requires_modules) +DIAG_NAME_INDEX(err_hex_constant_requires) +DIAG_NAME_INDEX(err_hex_escape_no_digits) +DIAG_NAME_INDEX(err_hexagon_builtin_requires_hvx) +DIAG_NAME_INDEX(err_hexagon_builtin_unsupported_cpu) +DIAG_NAME_INDEX(err_hexagon_builtin_unsupported_hvx) +DIAG_NAME_INDEX(err_iboutletcollection_builtintype) +DIAG_NAME_INDEX(err_iboutletcollection_type) +DIAG_NAME_INDEX(err_ice_ambiguous_conversion) +DIAG_NAME_INDEX(err_ice_explicit_conversion) +DIAG_NAME_INDEX(err_ice_incomplete_type) +DIAG_NAME_INDEX(err_ice_not_integral) +DIAG_NAME_INDEX(err_ice_too_large) +DIAG_NAME_INDEX(err_id_after_template_in_nested_name_spec) +DIAG_NAME_INDEX(err_ident_in_dtor_not_a_type) +DIAG_NAME_INDEX(err_ident_list_in_fn_declaration) +DIAG_NAME_INDEX(err_ifunc_resolver_return) +DIAG_NAME_INDEX(err_illegal_container_subscripting_op) +DIAG_NAME_INDEX(err_illegal_decl_array_incomplete_type) +DIAG_NAME_INDEX(err_illegal_decl_array_of_auto) +DIAG_NAME_INDEX(err_illegal_decl_array_of_functions) +DIAG_NAME_INDEX(err_illegal_decl_array_of_references) +DIAG_NAME_INDEX(err_illegal_decl_mempointer_in_nonclass) +DIAG_NAME_INDEX(err_illegal_decl_mempointer_to_reference) +DIAG_NAME_INDEX(err_illegal_decl_mempointer_to_void) +DIAG_NAME_INDEX(err_illegal_decl_pointer_to_reference) +DIAG_NAME_INDEX(err_illegal_decl_reference_to_reference) +DIAG_NAME_INDEX(err_illegal_initializer) +DIAG_NAME_INDEX(err_illegal_initializer_type) +DIAG_NAME_INDEX(err_illegal_message_expr_incomplete_type) +DIAG_NAME_INDEX(err_illegal_qualifiers_on_catch_parm) +DIAG_NAME_INDEX(err_illegal_super_cast) +DIAG_NAME_INDEX(err_illegal_union_or_anon_struct_member) +DIAG_NAME_INDEX(err_imaginary_not_supported) +DIAG_NAME_INDEX(err_impcast_complex_scalar) +DIAG_NAME_INDEX(err_implicit_coroutine_std_nothrow_type_not_found) +DIAG_NAME_INDEX(err_implicit_empty_initializer) +DIAG_NAME_INDEX(err_implicit_instantiate_member_undefined) +DIAG_NAME_INDEX(err_implied_comparison_category_type_not_found) +DIAG_NAME_INDEX(err_implied_coroutine_type_not_found) +DIAG_NAME_INDEX(err_implied_std_coroutine_traits_promise_type_not_class) +DIAG_NAME_INDEX(err_implied_std_coroutine_traits_promise_type_not_found) +DIAG_NAME_INDEX(err_implied_std_initializer_list_not_found) +DIAG_NAME_INDEX(err_imported_module_modmap_changed) +DIAG_NAME_INDEX(err_imported_module_not_found) +DIAG_NAME_INDEX(err_imported_module_relocated) +DIAG_NAME_INDEX(err_in_class_initializer_bad_type) +DIAG_NAME_INDEX(err_in_class_initializer_cycle) +DIAG_NAME_INDEX(err_in_class_initializer_literal_type) +DIAG_NAME_INDEX(err_in_class_initializer_non_const) +DIAG_NAME_INDEX(err_in_class_initializer_non_constant) +DIAG_NAME_INDEX(err_in_class_initializer_not_yet_parsed) +DIAG_NAME_INDEX(err_in_class_initializer_volatile) +DIAG_NAME_INDEX(err_incompatible_exception_specs) +DIAG_NAME_INDEX(err_incomplete_array_member_init) +DIAG_NAME_INDEX(err_incomplete_base_class) +DIAG_NAME_INDEX(err_incomplete_in_exception_spec) +DIAG_NAME_INDEX(err_incomplete_member_access) +DIAG_NAME_INDEX(err_incomplete_nested_name_spec) +DIAG_NAME_INDEX(err_incomplete_object_call) +DIAG_NAME_INDEX(err_incomplete_receiver_type) +DIAG_NAME_INDEX(err_incomplete_synthesized_property) +DIAG_NAME_INDEX(err_incomplete_type) +DIAG_NAME_INDEX(err_incomplete_type_objc_at_encode) +DIAG_NAME_INDEX(err_incomplete_type_used_in_type_trait_expr) +DIAG_NAME_INDEX(err_incomplete_typeid) +DIAG_NAME_INDEX(err_inconsistent_ivar_count) +DIAG_NAME_INDEX(err_incorrect_defaulted_constexpr) +DIAG_NAME_INDEX(err_incorrect_defaulted_exception_spec) +DIAG_NAME_INDEX(err_incorrect_number_of_vector_initializers) +DIAG_NAME_INDEX(err_increment_decrement_enum) +DIAG_NAME_INDEX(err_indirect_goto_in_protected_scope) +DIAG_NAME_INDEX(err_indirect_goto_without_addrlabel) +DIAG_NAME_INDEX(err_init_capture_deduction_failure) +DIAG_NAME_INDEX(err_init_capture_deduction_failure_from_init_list) +DIAG_NAME_INDEX(err_init_capture_multiple_expressions) +DIAG_NAME_INDEX(err_init_capture_no_expression) +DIAG_NAME_INDEX(err_init_capture_paren_braces) +DIAG_NAME_INDEX(err_init_conversion_failed) +DIAG_NAME_INDEX(err_init_element_not_constant) +DIAG_NAME_INDEX(err_init_for_function_type) +DIAG_NAME_INDEX(err_init_incomplete_type) +DIAG_NAME_INDEX(err_init_list_bad_dest_type) +DIAG_NAME_INDEX(err_init_list_bin_op) +DIAG_NAME_INDEX(err_init_method_bad_return_type) +DIAG_NAME_INDEX(err_init_non_aggr_init_list) +DIAG_NAME_INDEX(err_init_objc_class) +DIAG_NAME_INDEX(err_init_priority_object_attr) +DIAG_NAME_INDEX(err_init_reference_member_uninitialized) +DIAG_NAME_INDEX(err_initializer_string_for_char_array_too_long) +DIAG_NAME_INDEX(err_inline_decl_follows_def) +DIAG_NAME_INDEX(err_inline_declaration_block_scope) +DIAG_NAME_INDEX(err_inline_main) +DIAG_NAME_INDEX(err_inline_ms_asm_parsing) +DIAG_NAME_INDEX(err_inline_namespace_alias) +DIAG_NAME_INDEX(err_inline_namespace_mismatch) +DIAG_NAME_INDEX(err_inline_nested_namespace_definition) +DIAG_NAME_INDEX(err_inline_non_function) +DIAG_NAME_INDEX(err_int_to_block_pointer) +DIAG_NAME_INDEX(err_integer_literal_too_large) +DIAG_NAME_INDEX(err_integer_sequence_integral_element_type) +DIAG_NAME_INDEX(err_integer_sequence_negative_length) +DIAG_NAME_INDEX(err_internal_linkage_redeclaration) +DIAG_NAME_INDEX(err_introducing_special_friend) +DIAG_NAME_INDEX(err_invalid_asm_cast_lvalue) +DIAG_NAME_INDEX(err_invalid_asm_value_for_constraint) +DIAG_NAME_INDEX(err_invalid_astype_of_different_size) +DIAG_NAME_INDEX(err_invalid_attribute_on_virtual_function) +DIAG_NAME_INDEX(err_invalid_base_in_interface) +DIAG_NAME_INDEX(err_invalid_branch_protection) +DIAG_NAME_INDEX(err_invalid_char_raw_delim) +DIAG_NAME_INDEX(err_invalid_character_to_charify) +DIAG_NAME_INDEX(err_invalid_character_udl) +DIAG_NAME_INDEX(err_invalid_collection_element) +DIAG_NAME_INDEX(err_invalid_complex_spec) +DIAG_NAME_INDEX(err_invalid_constexpr) +DIAG_NAME_INDEX(err_invalid_constexpr_member) +DIAG_NAME_INDEX(err_invalid_constexpr_var_decl) +DIAG_NAME_INDEX(err_invalid_conversion_between_ext_vectors) +DIAG_NAME_INDEX(err_invalid_conversion_between_vector_and_integer) +DIAG_NAME_INDEX(err_invalid_conversion_between_vector_and_scalar) +DIAG_NAME_INDEX(err_invalid_conversion_between_vectors) +DIAG_NAME_INDEX(err_invalid_cpu_is) +DIAG_NAME_INDEX(err_invalid_cpu_specific_dispatch_value) +DIAG_NAME_INDEX(err_invalid_cpu_supports) +DIAG_NAME_INDEX(err_invalid_decl_spec_combination) +DIAG_NAME_INDEX(err_invalid_decl_specifier_in_nontype_parm) +DIAG_NAME_INDEX(err_invalid_declarator_global_scope) +DIAG_NAME_INDEX(err_invalid_declarator_in_block) +DIAG_NAME_INDEX(err_invalid_declarator_in_function) +DIAG_NAME_INDEX(err_invalid_declarator_scope) +DIAG_NAME_INDEX(err_invalid_digit) +DIAG_NAME_INDEX(err_invalid_form_pointer_member_function) +DIAG_NAME_INDEX(err_invalid_incomplete_type_use) +DIAG_NAME_INDEX(err_invalid_mask_type_size) +DIAG_NAME_INDEX(err_invalid_member_in_interface) +DIAG_NAME_INDEX(err_invalid_member_use_in_static_method) +DIAG_NAME_INDEX(err_invalid_neon_type_code) +DIAG_NAME_INDEX(err_invalid_non_static_member_use) +DIAG_NAME_INDEX(err_invalid_nsnumber_type) +DIAG_NAME_INDEX(err_invalid_numeric_udl) +DIAG_NAME_INDEX(err_invalid_operator_on_type) +DIAG_NAME_INDEX(err_invalid_pcs) +DIAG_NAME_INDEX(err_invalid_pixel_decl_spec_combination) +DIAG_NAME_INDEX(err_invalid_property_name) +DIAG_NAME_INDEX(err_invalid_protocol_qualifiers) +DIAG_NAME_INDEX(err_invalid_qualified_constructor) +DIAG_NAME_INDEX(err_invalid_qualified_destructor) +DIAG_NAME_INDEX(err_invalid_qualified_function_type) +DIAG_NAME_INDEX(err_invalid_receiver_class_message) +DIAG_NAME_INDEX(err_invalid_receiver_to_message_super) +DIAG_NAME_INDEX(err_invalid_reference_qualifier_application) +DIAG_NAME_INDEX(err_invalid_saturation_spec) +DIAG_NAME_INDEX(err_invalid_sign_spec) +DIAG_NAME_INDEX(err_invalid_storage_class_in_func_decl) +DIAG_NAME_INDEX(err_invalid_string_udl) +DIAG_NAME_INDEX(err_invalid_suffix_constant) +DIAG_NAME_INDEX(err_invalid_super_scope) +DIAG_NAME_INDEX(err_invalid_this_use) +DIAG_NAME_INDEX(err_invalid_thread) +DIAG_NAME_INDEX(err_invalid_token_after_declarator_suggest_equal) +DIAG_NAME_INDEX(err_invalid_token_after_toplevel_declarator) +DIAG_NAME_INDEX(err_invalid_type_for_program_scope_var) +DIAG_NAME_INDEX(err_invalid_use_of_array_type) +DIAG_NAME_INDEX(err_invalid_use_of_function_type) +DIAG_NAME_INDEX(err_invalid_utf8) +DIAG_NAME_INDEX(err_invalid_var_template_spec_type) +DIAG_NAME_INDEX(err_invalid_vector_bool_decl_spec) +DIAG_NAME_INDEX(err_invalid_vector_decl_spec_combination) +DIAG_NAME_INDEX(err_invalid_vector_double_decl_spec) +DIAG_NAME_INDEX(err_invalid_vector_float_decl_spec) +DIAG_NAME_INDEX(err_invalid_vector_long_decl_spec) +DIAG_NAME_INDEX(err_invalid_vector_long_double_decl_spec) +DIAG_NAME_INDEX(err_invalid_vector_long_long_decl_spec) +DIAG_NAME_INDEX(err_invalid_vfs_overlay) +DIAG_NAME_INDEX(err_invalid_width_spec) +DIAG_NAME_INDEX(err_ivar_access_using_property_syntax_suggest) +DIAG_NAME_INDEX(err_ivar_in_superclass_use) +DIAG_NAME_INDEX(err_ivar_reference_type) +DIAG_NAME_INDEX(err_ivar_use_in_class_method) +DIAG_NAME_INDEX(err_kern_call_not_global_function) +DIAG_NAME_INDEX(err_kern_is_nonstatic_method) +DIAG_NAME_INDEX(err_kern_type_not_void_return) +DIAG_NAME_INDEX(err_kernel_arg_address_space) +DIAG_NAME_INDEX(err_l_square_l_square_not_attribute) +DIAG_NAME_INDEX(err_label_end_of_compound_statement) +DIAG_NAME_INDEX(err_lambda_capture_anonymous_var) +DIAG_NAME_INDEX(err_lambda_capture_default_arg) +DIAG_NAME_INDEX(err_lambda_capture_flexarray_type) +DIAG_NAME_INDEX(err_lambda_decl_ref_not_modifiable_lvalue) +DIAG_NAME_INDEX(err_lambda_decl_specifier_repeated) +DIAG_NAME_INDEX(err_lambda_impcap) +DIAG_NAME_INDEX(err_lambda_in_constant_expression) +DIAG_NAME_INDEX(err_lambda_in_invalid_context) +DIAG_NAME_INDEX(err_lambda_incomplete_result) +DIAG_NAME_INDEX(err_lambda_missing_parens) +DIAG_NAME_INDEX(err_lambda_return_init_list) +DIAG_NAME_INDEX(err_lambda_unevaluated_operand) +DIAG_NAME_INDEX(err_language_linkage_spec_not_ascii) +DIAG_NAME_INDEX(err_language_linkage_spec_unknown) +DIAG_NAME_INDEX(err_late_asm_label_name) +DIAG_NAME_INDEX(err_lexing_string) +DIAG_NAME_INDEX(err_lifetimebound_ctor_dtor) +DIAG_NAME_INDEX(err_lifetimebound_no_object_param) +DIAG_NAME_INDEX(err_list_init_in_parens) +DIAG_NAME_INDEX(err_literal_operator_bad_param_count) +DIAG_NAME_INDEX(err_literal_operator_default_argument) +DIAG_NAME_INDEX(err_literal_operator_extern_c) +DIAG_NAME_INDEX(err_literal_operator_id_outside_namespace) +DIAG_NAME_INDEX(err_literal_operator_invalid_param) +DIAG_NAME_INDEX(err_literal_operator_outside_namespace) +DIAG_NAME_INDEX(err_literal_operator_param) +DIAG_NAME_INDEX(err_literal_operator_string_not_empty) +DIAG_NAME_INDEX(err_literal_operator_string_prefix) +DIAG_NAME_INDEX(err_literal_operator_template) +DIAG_NAME_INDEX(err_literal_operator_template_with_params) +DIAG_NAME_INDEX(err_local_cant_init) +DIAG_NAME_INDEX(err_lvalue_reference_bind_to_initlist) +DIAG_NAME_INDEX(err_lvalue_reference_bind_to_temporary) +DIAG_NAME_INDEX(err_lvalue_reference_bind_to_unrelated) +DIAG_NAME_INDEX(err_lvalue_to_rvalue_ref) +DIAG_NAME_INDEX(err_machine_mode) +DIAG_NAME_INDEX(err_main_arg_wrong) +DIAG_NAME_INDEX(err_main_global_variable) +DIAG_NAME_INDEX(err_main_returns_nonint) +DIAG_NAME_INDEX(err_main_surplus_args) +DIAG_NAME_INDEX(err_mainlike_template_decl) +DIAG_NAME_INDEX(err_malformed_std_coroutine_handle) +DIAG_NAME_INDEX(err_malformed_std_coroutine_traits) +DIAG_NAME_INDEX(err_malformed_std_initializer_list) +DIAG_NAME_INDEX(err_malformed_std_nothrow) +DIAG_NAME_INDEX(err_maybe_falloff_nonvoid_block) +DIAG_NAME_INDEX(err_mem_init_not_member_or_class) +DIAG_NAME_INDEX(err_mem_init_not_member_or_class_suggest) +DIAG_NAME_INDEX(err_member_call_without_object) +DIAG_NAME_INDEX(err_member_decl_does_not_match) +DIAG_NAME_INDEX(err_member_decl_does_not_match_suggest) +DIAG_NAME_INDEX(err_member_def_does_not_match_ret_type) +DIAG_NAME_INDEX(err_member_def_undefined_record) +DIAG_NAME_INDEX(err_member_extra_qualification) +DIAG_NAME_INDEX(err_member_function_call_bad_cvr) +DIAG_NAME_INDEX(err_member_function_call_bad_ref) +DIAG_NAME_INDEX(err_member_function_call_bad_type) +DIAG_NAME_INDEX(err_member_function_initialization) +DIAG_NAME_INDEX(err_member_name_of_class) +DIAG_NAME_INDEX(err_member_not_yet_instantiated) +DIAG_NAME_INDEX(err_member_qualification) +DIAG_NAME_INDEX(err_member_redeclared) +DIAG_NAME_INDEX(err_member_redeclared_in_instantiation) +DIAG_NAME_INDEX(err_member_reference_needs_call) +DIAG_NAME_INDEX(err_mempointer_in_nonclass_type) +DIAG_NAME_INDEX(err_memptr_conv_via_virtual) +DIAG_NAME_INDEX(err_memptr_incomplete) +DIAG_NAME_INDEX(err_method_not_found_with_typo) +DIAG_NAME_INDEX(err_mips_fp64_req) +DIAG_NAME_INDEX(err_mismatched_code_seg_base) +DIAG_NAME_INDEX(err_mismatched_code_seg_override) +DIAG_NAME_INDEX(err_mismatched_exception_spec) +DIAG_NAME_INDEX(err_mismatched_exception_spec_explicit_instantiation) +DIAG_NAME_INDEX(err_mismatched_ms_inheritance) +DIAG_NAME_INDEX(err_mismatched_owning_module) +DIAG_NAME_INDEX(err_mismatched_uuid) +DIAG_NAME_INDEX(err_mismatched_visibility) +DIAG_NAME_INDEX(err_misplaced_ellipsis_in_declaration) +DIAG_NAME_INDEX(err_misplaced_ivar) +DIAG_NAME_INDEX(err_missing_actual_pipe_type) +DIAG_NAME_INDEX(err_missing_atsign_prefix) +DIAG_NAME_INDEX(err_missing_before_module_end) +DIAG_NAME_INDEX(err_missing_catch_finally) +DIAG_NAME_INDEX(err_missing_comma_before_ellipsis) +DIAG_NAME_INDEX(err_missing_default_ctor) +DIAG_NAME_INDEX(err_missing_dependent_template_keyword) +DIAG_NAME_INDEX(err_missing_end_of_definition) +DIAG_NAME_INDEX(err_missing_exception_specification) +DIAG_NAME_INDEX(err_missing_method_context) +DIAG_NAME_INDEX(err_missing_module) +DIAG_NAME_INDEX(err_missing_module_name) +DIAG_NAME_INDEX(err_missing_open_square_message_send) +DIAG_NAME_INDEX(err_missing_param) +DIAG_NAME_INDEX(err_missing_property_context) +DIAG_NAME_INDEX(err_missing_property_interface) +DIAG_NAME_INDEX(err_missing_property_ivar_decl) +DIAG_NAME_INDEX(err_missing_type_specifier) +DIAG_NAME_INDEX(err_missing_vfs_overlay_file) +DIAG_NAME_INDEX(err_missing_whitespace_digraph) +DIAG_NAME_INDEX(err_mixing_cxx_try_seh_try) +DIAG_NAME_INDEX(err_mmap_config_macro_submodule) +DIAG_NAME_INDEX(err_mmap_conflicting_export_as) +DIAG_NAME_INDEX(err_mmap_duplicate_header_attribute) +DIAG_NAME_INDEX(err_mmap_expected_attribute) +DIAG_NAME_INDEX(err_mmap_expected_config_macro) +DIAG_NAME_INDEX(err_mmap_expected_conflicts_comma) +DIAG_NAME_INDEX(err_mmap_expected_conflicts_message) +DIAG_NAME_INDEX(err_mmap_expected_export_wildcard) +DIAG_NAME_INDEX(err_mmap_expected_feature) +DIAG_NAME_INDEX(err_mmap_expected_header) +DIAG_NAME_INDEX(err_mmap_expected_header_attribute) +DIAG_NAME_INDEX(err_mmap_expected_inferred_member) +DIAG_NAME_INDEX(err_mmap_expected_lbrace) +DIAG_NAME_INDEX(err_mmap_expected_lbrace_wildcard) +DIAG_NAME_INDEX(err_mmap_expected_library_name) +DIAG_NAME_INDEX(err_mmap_expected_member) +DIAG_NAME_INDEX(err_mmap_expected_mmap_file) +DIAG_NAME_INDEX(err_mmap_expected_module) +DIAG_NAME_INDEX(err_mmap_expected_module_name) +DIAG_NAME_INDEX(err_mmap_expected_rbrace) +DIAG_NAME_INDEX(err_mmap_expected_rsquare) +DIAG_NAME_INDEX(err_mmap_explicit_inferred_framework) +DIAG_NAME_INDEX(err_mmap_explicit_top_level) +DIAG_NAME_INDEX(err_mmap_inferred_framework_submodule) +DIAG_NAME_INDEX(err_mmap_inferred_no_umbrella) +DIAG_NAME_INDEX(err_mmap_inferred_redef) +DIAG_NAME_INDEX(err_mmap_invalid_header_attribute_value) +DIAG_NAME_INDEX(err_mmap_missing_exclude_name) +DIAG_NAME_INDEX(err_mmap_missing_module_qualified) +DIAG_NAME_INDEX(err_mmap_missing_module_unqualified) +DIAG_NAME_INDEX(err_mmap_module_id) +DIAG_NAME_INDEX(err_mmap_module_redefinition) +DIAG_NAME_INDEX(err_mmap_nested_submodule_id) +DIAG_NAME_INDEX(err_mmap_submodule_export_as) +DIAG_NAME_INDEX(err_mmap_top_level_inferred_submodule) +DIAG_NAME_INDEX(err_mmap_umbrella_clash) +DIAG_NAME_INDEX(err_mmap_unknown_token) +DIAG_NAME_INDEX(err_mmap_use_decl_submodule) +DIAG_NAME_INDEX(err_mode_not_primitive) +DIAG_NAME_INDEX(err_mode_wrong_type) +DIAG_NAME_INDEX(err_module_build_disabled) +DIAG_NAME_INDEX(err_module_build_requires_fmodules) +DIAG_NAME_INDEX(err_module_build_shadowed_submodule) +DIAG_NAME_INDEX(err_module_cannot_create_includes) +DIAG_NAME_INDEX(err_module_cycle) +DIAG_NAME_INDEX(err_module_decl_in_header_module) +DIAG_NAME_INDEX(err_module_decl_in_module_map_module) +DIAG_NAME_INDEX(err_module_declaration_missing) +DIAG_NAME_INDEX(err_module_different_modmap) +DIAG_NAME_INDEX(err_module_expected_ident) +DIAG_NAME_INDEX(err_module_expected_semi) +DIAG_NAME_INDEX(err_module_file_conflict) +DIAG_NAME_INDEX(err_module_file_invalid) +DIAG_NAME_INDEX(err_module_file_not_found) +DIAG_NAME_INDEX(err_module_file_not_module) +DIAG_NAME_INDEX(err_module_file_out_of_date) +DIAG_NAME_INDEX(err_module_format_unhandled) +DIAG_NAME_INDEX(err_module_header_file_invalid) +DIAG_NAME_INDEX(err_module_header_file_not_found) +DIAG_NAME_INDEX(err_module_header_missing) +DIAG_NAME_INDEX(err_module_implementation_partition) +DIAG_NAME_INDEX(err_module_import_in_implementation) +DIAG_NAME_INDEX(err_module_import_not_at_top_level_fatal) +DIAG_NAME_INDEX(err_module_interface_implementation_mismatch) +DIAG_NAME_INDEX(err_module_interface_requires_modules_ts) +DIAG_NAME_INDEX(err_module_map_not_found) +DIAG_NAME_INDEX(err_module_no_size_mtime_for_header) +DIAG_NAME_INDEX(err_module_not_built) +DIAG_NAME_INDEX(err_module_not_defined) +DIAG_NAME_INDEX(err_module_not_found) +DIAG_NAME_INDEX(err_module_odr_violation_definition_data) +DIAG_NAME_INDEX(err_module_odr_violation_different_definitions) +DIAG_NAME_INDEX(err_module_odr_violation_different_instantiations) +DIAG_NAME_INDEX(err_module_odr_violation_enum) +DIAG_NAME_INDEX(err_module_odr_violation_function) +DIAG_NAME_INDEX(err_module_odr_violation_mismatch_decl) +DIAG_NAME_INDEX(err_module_odr_violation_mismatch_decl_diff) +DIAG_NAME_INDEX(err_module_odr_violation_mismatch_decl_unknown) +DIAG_NAME_INDEX(err_module_odr_violation_missing_decl) +DIAG_NAME_INDEX(err_module_odr_violation_template_parameter) +DIAG_NAME_INDEX(err_module_prebuilt) +DIAG_NAME_INDEX(err_module_private_local) +DIAG_NAME_INDEX(err_module_private_local_class) +DIAG_NAME_INDEX(err_module_private_specialization) +DIAG_NAME_INDEX(err_module_redeclaration) +DIAG_NAME_INDEX(err_module_redefinition) +DIAG_NAME_INDEX(err_module_self_import) +DIAG_NAME_INDEX(err_module_shadowed) +DIAG_NAME_INDEX(err_module_unavailable) +DIAG_NAME_INDEX(err_module_unimported_use) +DIAG_NAME_INDEX(err_module_unimported_use_header) +DIAG_NAME_INDEX(err_module_unimported_use_multiple) +DIAG_NAME_INDEX(err_modules_embed_file_not_found) +DIAG_NAME_INDEX(err_ms___leave_not_in___try) +DIAG_NAME_INDEX(err_ms_attributes_not_enabled) +DIAG_NAME_INDEX(err_ms_declspec_type) +DIAG_NAME_INDEX(err_ms_property_duplicate_accessor) +DIAG_NAME_INDEX(err_ms_property_expected_accessor_name) +DIAG_NAME_INDEX(err_ms_property_expected_comma_or_rparen) +DIAG_NAME_INDEX(err_ms_property_expected_equal) +DIAG_NAME_INDEX(err_ms_property_has_set_accessor) +DIAG_NAME_INDEX(err_ms_property_initializer) +DIAG_NAME_INDEX(err_ms_property_missing_accessor_kind) +DIAG_NAME_INDEX(err_ms_property_no_getter_or_putter) +DIAG_NAME_INDEX(err_ms_property_unknown_accessor) +DIAG_NAME_INDEX(err_ms_va_start_used_in_sysv_function) +DIAG_NAME_INDEX(err_msasm_unable_to_create_target) +DIAG_NAME_INDEX(err_msasm_unsupported_arch) +DIAG_NAME_INDEX(err_msvc_annotation_wide_str) +DIAG_NAME_INDEX(err_mt_message) +DIAG_NAME_INDEX(err_multichar_utf_character_literal) +DIAG_NAME_INDEX(err_multiple_base_initialization) +DIAG_NAME_INDEX(err_multiple_def_index) +DIAG_NAME_INDEX(err_multiple_default_labels_defined) +DIAG_NAME_INDEX(err_multiple_final_overriders) +DIAG_NAME_INDEX(err_multiple_mem_initialization) +DIAG_NAME_INDEX(err_multiple_mem_union_initialization) +DIAG_NAME_INDEX(err_multiple_template_declarators) +DIAG_NAME_INDEX(err_multiversion_after_used) +DIAG_NAME_INDEX(err_multiversion_diff) +DIAG_NAME_INDEX(err_multiversion_doesnt_support) +DIAG_NAME_INDEX(err_multiversion_duplicate) +DIAG_NAME_INDEX(err_multiversion_no_other_attrs) +DIAG_NAME_INDEX(err_multiversion_noproto) +DIAG_NAME_INDEX(err_multiversion_not_allowed_on_main) +DIAG_NAME_INDEX(err_multiversion_not_supported) +DIAG_NAME_INDEX(err_multiversion_required_in_redecl) +DIAG_NAME_INDEX(err_multiversion_types_mixed) +DIAG_NAME_INDEX(err_mutable_const) +DIAG_NAME_INDEX(err_mutable_function) +DIAG_NAME_INDEX(err_mutable_nonmember) +DIAG_NAME_INDEX(err_mutable_reference) +DIAG_NAME_INDEX(err_namespace_nonnamespace_scope) +DIAG_NAME_INDEX(err_need_header_before_ms_uuidof) +DIAG_NAME_INDEX(err_need_header_before_typeid) +DIAG_NAME_INDEX(err_nested_name_member_ref_lookup_ambiguous) +DIAG_NAME_INDEX(err_nested_name_spec_is_not_class) +DIAG_NAME_INDEX(err_nested_name_spec_non_tag) +DIAG_NAME_INDEX(err_nested_non_static_member_use) +DIAG_NAME_INDEX(err_nested_redefinition) +DIAG_NAME_INDEX(err_new_abi_tag_on_redeclaration) +DIAG_NAME_INDEX(err_new_array_init_args) +DIAG_NAME_INDEX(err_new_array_nonconst) +DIAG_NAME_INDEX(err_new_array_of_auto) +DIAG_NAME_INDEX(err_new_incomplete_type) +DIAG_NAME_INDEX(err_no_accessor_for_property) +DIAG_NAME_INDEX(err_no_base_classes) +DIAG_NAME_INDEX(err_no_dynamic_cast_with_fno_rtti) +DIAG_NAME_INDEX(err_no_external_assembler) +DIAG_NAME_INDEX(err_no_matching_local_friend) +DIAG_NAME_INDEX(err_no_matching_local_friend_suggest) +DIAG_NAME_INDEX(err_no_matching_param) +DIAG_NAME_INDEX(err_no_member) +DIAG_NAME_INDEX(err_no_member_overloaded_arrow) +DIAG_NAME_INDEX(err_no_member_suggest) +DIAG_NAME_INDEX(err_no_member_template) +DIAG_NAME_INDEX(err_no_member_template_suggest) +DIAG_NAME_INDEX(err_no_nsconstant_string_class) +DIAG_NAME_INDEX(err_no_submodule) +DIAG_NAME_INDEX(err_no_submodule_suggest) +DIAG_NAME_INDEX(err_no_subobject_property_setting) +DIAG_NAME_INDEX(err_no_suitable_delete_member_function_found) +DIAG_NAME_INDEX(err_no_super_class_message) +DIAG_NAME_INDEX(err_no_template) +DIAG_NAME_INDEX(err_no_template_suggest) +DIAG_NAME_INDEX(err_no_typeid_with_fno_rtti) +DIAG_NAME_INDEX(err_noexcept_needs_constant_expression) +DIAG_NAME_INDEX(err_nogetter_property_compound_assignment) +DIAG_NAME_INDEX(err_nogetter_property_incdec) +DIAG_NAME_INDEX(err_non_ascii) +DIAG_NAME_INDEX(err_non_asm_stmt_in_naked_function) +DIAG_NAME_INDEX(err_non_deleted_override) +DIAG_NAME_INDEX(err_non_extern_extern) +DIAG_NAME_INDEX(err_non_local_variable_decl_in_for) +DIAG_NAME_INDEX(err_non_static_static) +DIAG_NAME_INDEX(err_non_template_in_member_template_id_suggest) +DIAG_NAME_INDEX(err_non_template_in_template_id) +DIAG_NAME_INDEX(err_non_template_in_template_id_suggest) +DIAG_NAME_INDEX(err_non_thread_thread) +DIAG_NAME_INDEX(err_non_type_template_arg_addr_label_diff) +DIAG_NAME_INDEX(err_non_type_template_arg_subobject) +DIAG_NAME_INDEX(err_non_type_template_in_nested_name_specifier) +DIAG_NAME_INDEX(err_non_type_template_parm_type_deduction_failure) +DIAG_NAME_INDEX(err_non_variable_decl_in_for) +DIAG_NAME_INDEX(err_non_virtual_pure) +DIAG_NAME_INDEX(err_nonfunction_block_type) +DIAG_NAME_INDEX(err_nonstatic_member_out_of_line) +DIAG_NAME_INDEX(err_nontemporal_builtin_must_be_pointer) +DIAG_NAME_INDEX(err_nontemporal_builtin_must_be_pointer_intfltptr_or_vector) +DIAG_NAME_INDEX(err_nontrivial_primitive_type_in_union) +DIAG_NAME_INDEX(err_noreturn_block_has_return_expr) +DIAG_NAME_INDEX(err_noreturn_lambda_has_return_expr) +DIAG_NAME_INDEX(err_noreturn_missing_on_first_decl) +DIAG_NAME_INDEX(err_noreturn_non_function) +DIAG_NAME_INDEX(err_nosetter_property_assignment) +DIAG_NAME_INDEX(err_nosetter_property_incdec) +DIAG_NAME_INDEX(err_not_class_template_specialization) +DIAG_NAME_INDEX(err_not_direct_base_or_virtual) +DIAG_NAME_INDEX(err_not_found_by_two_phase_lookup) +DIAG_NAME_INDEX(err_not_integral_type_anon_bitfield) +DIAG_NAME_INDEX(err_not_integral_type_bitfield) +DIAG_NAME_INDEX(err_not_tag_in_scope) +DIAG_NAME_INDEX(err_ns_attribute_wrong_parameter_type) +DIAG_NAME_INDEX(err_nsconsumed_attribute_mismatch) +DIAG_NAME_INDEX(err_nsnumber_nonliteral_unary) +DIAG_NAME_INDEX(err_nsobject_attribute) +DIAG_NAME_INDEX(err_nsreturns_retained_attribute_mismatch) +DIAG_NAME_INDEX(err_nullability_conflicting) +DIAG_NAME_INDEX(err_nullability_cs_multilevel) +DIAG_NAME_INDEX(err_nullability_nonpointer) +DIAG_NAME_INDEX(err_objc_array_of_interfaces) +DIAG_NAME_INDEX(err_objc_attr_not_id) +DIAG_NAME_INDEX(err_objc_attr_protocol_requires_definition) +DIAG_NAME_INDEX(err_objc_attr_typedef_not_id) +DIAG_NAME_INDEX(err_objc_attr_typedef_not_void_pointer) +DIAG_NAME_INDEX(err_objc_bridged_related_invalid_class) +DIAG_NAME_INDEX(err_objc_bridged_related_invalid_class_name) +DIAG_NAME_INDEX(err_objc_bridged_related_known_method) +DIAG_NAME_INDEX(err_objc_cf_bridged_not_interface) +DIAG_NAME_INDEX(err_objc_concat_string) +DIAG_NAME_INDEX(err_objc_decls_may_only_appear_in_global_scope) +DIAG_NAME_INDEX(err_objc_directive_only_in_protocol) +DIAG_NAME_INDEX(err_objc_exceptions_disabled) +DIAG_NAME_INDEX(err_objc_expected_equal_for_getter) +DIAG_NAME_INDEX(err_objc_expected_equal_for_setter) +DIAG_NAME_INDEX(err_objc_expected_property_attr) +DIAG_NAME_INDEX(err_objc_expected_selector_for_getter_setter) +DIAG_NAME_INDEX(err_objc_expected_type_parameter) +DIAG_NAME_INDEX(err_objc_for_range_init_stmt) +DIAG_NAME_INDEX(err_objc_illegal_boxed_expression_type) +DIAG_NAME_INDEX(err_objc_illegal_interface_qual) +DIAG_NAME_INDEX(err_objc_illegal_visibility_spec) +DIAG_NAME_INDEX(err_objc_incomplete_boxed_expression_type) +DIAG_NAME_INDEX(err_objc_index_incomplete_class_type) +DIAG_NAME_INDEX(err_objc_indexing_method_result_type) +DIAG_NAME_INDEX(err_objc_kindof_nonobject) +DIAG_NAME_INDEX(err_objc_kindof_wrong_position) +DIAG_NAME_INDEX(err_objc_literal_method_sig) +DIAG_NAME_INDEX(err_objc_method_unsupported_param_ret_type) +DIAG_NAME_INDEX(err_objc_missing_end) +DIAG_NAME_INDEX(err_objc_multiple_subscript_type_conversion) +DIAG_NAME_INDEX(err_objc_non_trivially_copyable_boxed_expression_type) +DIAG_NAME_INDEX(err_objc_ns_bridged_invalid_cfobject) +DIAG_NAME_INDEX(err_objc_object_assignment) +DIAG_NAME_INDEX(err_objc_object_catch) +DIAG_NAME_INDEX(err_objc_parameterized_category_nonclass) +DIAG_NAME_INDEX(err_objc_parameterized_forward_class) +DIAG_NAME_INDEX(err_objc_parameterized_forward_class_first) +DIAG_NAME_INDEX(err_objc_parameterized_implementation) +DIAG_NAME_INDEX(err_objc_postfix_attribute) +DIAG_NAME_INDEX(err_objc_postfix_attribute_hint) +DIAG_NAME_INDEX(err_objc_precise_lifetime_bad_type) +DIAG_NAME_INDEX(err_objc_properties_require_objc2) +DIAG_NAME_INDEX(err_objc_property_attr_mutually_exclusive) +DIAG_NAME_INDEX(err_objc_property_bitfield) +DIAG_NAME_INDEX(err_objc_property_requires_field_name) +DIAG_NAME_INDEX(err_objc_property_requires_object) +DIAG_NAME_INDEX(err_objc_root_class_subclass) +DIAG_NAME_INDEX(err_objc_runtime_visible_category) +DIAG_NAME_INDEX(err_objc_runtime_visible_subclass) +DIAG_NAME_INDEX(err_objc_subscript_base_type) +DIAG_NAME_INDEX(err_objc_subscript_dic_object_type) +DIAG_NAME_INDEX(err_objc_subscript_index_type) +DIAG_NAME_INDEX(err_objc_subscript_key_type) +DIAG_NAME_INDEX(err_objc_subscript_method_not_found) +DIAG_NAME_INDEX(err_objc_subscript_object_type) +DIAG_NAME_INDEX(err_objc_subscript_pointer) +DIAG_NAME_INDEX(err_objc_subscript_type_conversion) +DIAG_NAME_INDEX(err_objc_synchronized_expects_object) +DIAG_NAME_INDEX(err_objc_throw_expects_object) +DIAG_NAME_INDEX(err_objc_type_arg_does_not_match_bound) +DIAG_NAME_INDEX(err_objc_type_arg_explicit_nullability) +DIAG_NAME_INDEX(err_objc_type_arg_missing) +DIAG_NAME_INDEX(err_objc_type_arg_missing_star) +DIAG_NAME_INDEX(err_objc_type_arg_not_id_compatible) +DIAG_NAME_INDEX(err_objc_type_arg_qualified) +DIAG_NAME_INDEX(err_objc_type_args_after_protocols) +DIAG_NAME_INDEX(err_objc_type_args_and_protocols) +DIAG_NAME_INDEX(err_objc_type_args_non_class) +DIAG_NAME_INDEX(err_objc_type_args_non_parameterized_class) +DIAG_NAME_INDEX(err_objc_type_args_specialized_class) +DIAG_NAME_INDEX(err_objc_type_args_wrong_arity) +DIAG_NAME_INDEX(err_objc_type_param_arity_mismatch) +DIAG_NAME_INDEX(err_objc_type_param_bound_conflict) +DIAG_NAME_INDEX(err_objc_type_param_bound_explicit_nullability) +DIAG_NAME_INDEX(err_objc_type_param_bound_missing) +DIAG_NAME_INDEX(err_objc_type_param_bound_missing_pointer) +DIAG_NAME_INDEX(err_objc_type_param_bound_nonobject) +DIAG_NAME_INDEX(err_objc_type_param_bound_qualified) +DIAG_NAME_INDEX(err_objc_type_param_redecl) +DIAG_NAME_INDEX(err_objc_type_param_variance_conflict) +DIAG_NAME_INDEX(err_objc_unexpected_atend) +DIAG_NAME_INDEX(err_objc_unexpected_attr) +DIAG_NAME_INDEX(err_objc_unknown_at) +DIAG_NAME_INDEX(err_objc_var_decl_inclass) +DIAG_NAME_INDEX(err_objc_variable_sized_type_not_at_end) +DIAG_NAME_INDEX(err_objc_weak_unsupported) +DIAG_NAME_INDEX(err_objc_weak_with_gc) +DIAG_NAME_INDEX(err_objcbridge_related_expected_related_class) +DIAG_NAME_INDEX(err_objcbridge_related_selector_name) +DIAG_NAME_INDEX(err_object_cannot_be_passed_returned_by_value) +DIAG_NAME_INDEX(err_odr_different_num_template_parameters) +DIAG_NAME_INDEX(err_odr_different_template_parameter_kind) +DIAG_NAME_INDEX(err_odr_field_type_inconsistent) +DIAG_NAME_INDEX(err_odr_function_type_inconsistent) +DIAG_NAME_INDEX(err_odr_ivar_type_inconsistent) +DIAG_NAME_INDEX(err_odr_non_type_parameter_type_inconsistent) +DIAG_NAME_INDEX(err_odr_objc_method_num_params_inconsistent) +DIAG_NAME_INDEX(err_odr_objc_method_param_type_inconsistent) +DIAG_NAME_INDEX(err_odr_objc_method_result_type_inconsistent) +DIAG_NAME_INDEX(err_odr_objc_method_variadic_inconsistent) +DIAG_NAME_INDEX(err_odr_objc_property_impl_kind_inconsistent) +DIAG_NAME_INDEX(err_odr_objc_property_type_inconsistent) +DIAG_NAME_INDEX(err_odr_objc_superclass_inconsistent) +DIAG_NAME_INDEX(err_odr_objc_synthesize_ivar_inconsistent) +DIAG_NAME_INDEX(err_odr_parameter_pack_non_pack) +DIAG_NAME_INDEX(err_odr_tag_type_inconsistent) +DIAG_NAME_INDEX(err_odr_variable_multiple_def) +DIAG_NAME_INDEX(err_odr_variable_type_inconsistent) +DIAG_NAME_INDEX(err_offsetof_array_type) +DIAG_NAME_INDEX(err_offsetof_bitfield) +DIAG_NAME_INDEX(err_offsetof_field_of_virtual_base) +DIAG_NAME_INDEX(err_offsetof_incomplete_type) +DIAG_NAME_INDEX(err_offsetof_record_type) +DIAG_NAME_INDEX(err_omp_aligned_expected_array_or_ptr) +DIAG_NAME_INDEX(err_omp_aligned_twice) +DIAG_NAME_INDEX(err_omp_ambiguous_conversion) +DIAG_NAME_INDEX(err_omp_argument_type_isdeviceptr) +DIAG_NAME_INDEX(err_omp_array_section_use) +DIAG_NAME_INDEX(err_omp_at_least_one_motion_clause_required) +DIAG_NAME_INDEX(err_omp_atomic_capture_not_compound_statement) +DIAG_NAME_INDEX(err_omp_atomic_capture_not_expression_statement) +DIAG_NAME_INDEX(err_omp_atomic_not_expression_statement) +DIAG_NAME_INDEX(err_omp_atomic_read_not_expression_statement) +DIAG_NAME_INDEX(err_omp_atomic_several_clauses) +DIAG_NAME_INDEX(err_omp_atomic_update_not_expression_statement) +DIAG_NAME_INDEX(err_omp_atomic_write_not_expression_statement) +DIAG_NAME_INDEX(err_omp_bit_fields_forbidden_in_clause) +DIAG_NAME_INDEX(err_omp_clause_floating_type_arg) +DIAG_NAME_INDEX(err_omp_clause_not_arithmetic_type_arg) +DIAG_NAME_INDEX(err_omp_const_list_item) +DIAG_NAME_INDEX(err_omp_const_not_mutable_variable) +DIAG_NAME_INDEX(err_omp_const_variable) +DIAG_NAME_INDEX(err_omp_critical_with_hint) +DIAG_NAME_INDEX(err_omp_decl_in_declare_simd) +DIAG_NAME_INDEX(err_omp_declare_mapper_redefinition) +DIAG_NAME_INDEX(err_omp_declare_mapper_wrong_var) +DIAG_NAME_INDEX(err_omp_declare_reduction_redefinition) +DIAG_NAME_INDEX(err_omp_declare_simd_inbranch_notinbranch) +DIAG_NAME_INDEX(err_omp_declare_target_multiple) +DIAG_NAME_INDEX(err_omp_declare_target_to_and_link) +DIAG_NAME_INDEX(err_omp_declare_target_unexpected_clause) +DIAG_NAME_INDEX(err_omp_depend_clause_thread_simd) +DIAG_NAME_INDEX(err_omp_depend_sink_expected_loop_iteration) +DIAG_NAME_INDEX(err_omp_depend_sink_expected_plus_minus) +DIAG_NAME_INDEX(err_omp_depend_sink_source_not_allowed) +DIAG_NAME_INDEX(err_omp_depend_sink_unexpected_expr) +DIAG_NAME_INDEX(err_omp_duplicate_map_type_modifier) +DIAG_NAME_INDEX(err_omp_expected_access_to_data_field) +DIAG_NAME_INDEX(err_omp_expected_addressable_lvalue_or_array_item) +DIAG_NAME_INDEX(err_omp_expected_base_var_name) +DIAG_NAME_INDEX(err_omp_expected_clause) +DIAG_NAME_INDEX(err_omp_expected_identifier_for_critical) +DIAG_NAME_INDEX(err_omp_expected_int_param) +DIAG_NAME_INDEX(err_omp_expected_named_var_member_or_array_expression) +DIAG_NAME_INDEX(err_omp_expected_punc) +DIAG_NAME_INDEX(err_omp_expected_reduction_identifier) +DIAG_NAME_INDEX(err_omp_expected_uniform_param) +DIAG_NAME_INDEX(err_omp_expected_var_arg) +DIAG_NAME_INDEX(err_omp_expected_var_arg_suggest) +DIAG_NAME_INDEX(err_omp_expected_var_name_member_expr) +DIAG_NAME_INDEX(err_omp_expected_var_name_member_expr_or_array_item) +DIAG_NAME_INDEX(err_omp_explicit_conversion) +DIAG_NAME_INDEX(err_omp_firstprivate_incomplete_type) +DIAG_NAME_INDEX(err_omp_function_expected) +DIAG_NAME_INDEX(err_omp_function_in_link_clause) +DIAG_NAME_INDEX(err_omp_global_var_arg) +DIAG_NAME_INDEX(err_omp_grainsize_num_tasks_mutually_exclusive) +DIAG_NAME_INDEX(err_omp_hint_clause_no_name) +DIAG_NAME_INDEX(err_omp_immediate_directive) +DIAG_NAME_INDEX(err_omp_in_reduction_not_task_reduction) +DIAG_NAME_INDEX(err_omp_incomplete_type) +DIAG_NAME_INDEX(err_omp_invalid_map_this_expr) +DIAG_NAME_INDEX(err_omp_invalid_map_type_for_directive) +DIAG_NAME_INDEX(err_omp_invalid_scope) +DIAG_NAME_INDEX(err_omp_invalid_target_decl) +DIAG_NAME_INDEX(err_omp_lastprivate_incomplete_type) +DIAG_NAME_INDEX(err_omp_linear_distribute_var_non_loop_iteration) +DIAG_NAME_INDEX(err_omp_linear_expected_int_or_ptr) +DIAG_NAME_INDEX(err_omp_linear_incomplete_type) +DIAG_NAME_INDEX(err_omp_linear_ordered) +DIAG_NAME_INDEX(err_omp_local_var_in_threadprivate_init) +DIAG_NAME_INDEX(err_omp_loop_cannot_use_stmt) +DIAG_NAME_INDEX(err_omp_loop_diff_cxx) +DIAG_NAME_INDEX(err_omp_loop_incr_not_compatible) +DIAG_NAME_INDEX(err_omp_loop_not_canonical_cond) +DIAG_NAME_INDEX(err_omp_loop_not_canonical_incr) +DIAG_NAME_INDEX(err_omp_loop_not_canonical_init) +DIAG_NAME_INDEX(err_omp_loop_var_dsa) +DIAG_NAME_INDEX(err_omp_loop_variable_type) +DIAG_NAME_INDEX(err_omp_map_shared_storage) +DIAG_NAME_INDEX(err_omp_map_type_missing) +DIAG_NAME_INDEX(err_omp_map_type_modifier_missing) +DIAG_NAME_INDEX(err_omp_mapper_expected_declarator) +DIAG_NAME_INDEX(err_omp_mapper_illegal_identifier) +DIAG_NAME_INDEX(err_omp_mapper_wrong_type) +DIAG_NAME_INDEX(err_omp_more_one_clause) +DIAG_NAME_INDEX(err_omp_multiple_array_items_in_map_clause) +DIAG_NAME_INDEX(err_omp_negative_expression_in_clause) +DIAG_NAME_INDEX(err_omp_no_clause_for_directive) +DIAG_NAME_INDEX(err_omp_no_dsa_for_variable) +DIAG_NAME_INDEX(err_omp_no_more_if_clause) +DIAG_NAME_INDEX(err_omp_not_for) +DIAG_NAME_INDEX(err_omp_not_integral) +DIAG_NAME_INDEX(err_omp_not_resolved_reduction_identifier) +DIAG_NAME_INDEX(err_omp_once_referenced) +DIAG_NAME_INDEX(err_omp_once_referenced_in_target_update) +DIAG_NAME_INDEX(err_omp_ordered_directive_with_param) +DIAG_NAME_INDEX(err_omp_ordered_directive_without_param) +DIAG_NAME_INDEX(err_omp_ordered_simd) +DIAG_NAME_INDEX(err_omp_original_storage_is_shared_and_does_not_contain) +DIAG_NAME_INDEX(err_omp_orphaned_device_directive) +DIAG_NAME_INDEX(err_omp_orphaned_section_directive) +DIAG_NAME_INDEX(err_omp_parallel_reduction_in_task_firstprivate) +DIAG_NAME_INDEX(err_omp_parallel_sections_not_compound_stmt) +DIAG_NAME_INDEX(err_omp_parallel_sections_substmt_not_section) +DIAG_NAME_INDEX(err_omp_param_or_this_in_clause) +DIAG_NAME_INDEX(err_omp_parent_cancel_region_nowait) +DIAG_NAME_INDEX(err_omp_parent_cancel_region_ordered) +DIAG_NAME_INDEX(err_omp_pointer_mapped_along_with_derived_section) +DIAG_NAME_INDEX(err_omp_private_incomplete_type) +DIAG_NAME_INDEX(err_omp_prohibited_region) +DIAG_NAME_INDEX(err_omp_prohibited_region_atomic) +DIAG_NAME_INDEX(err_omp_prohibited_region_critical_same_name) +DIAG_NAME_INDEX(err_omp_prohibited_region_simd) +DIAG_NAME_INDEX(err_omp_reduction_id_not_compatible) +DIAG_NAME_INDEX(err_omp_reduction_identifier_mismatch) +DIAG_NAME_INDEX(err_omp_reduction_in_task) +DIAG_NAME_INDEX(err_omp_reduction_incomplete_type) +DIAG_NAME_INDEX(err_omp_reduction_non_addressable_expression) +DIAG_NAME_INDEX(err_omp_reduction_ref_type_arg) +DIAG_NAME_INDEX(err_omp_reduction_vla_unsupported) +DIAG_NAME_INDEX(err_omp_reduction_with_nogroup) +DIAG_NAME_INDEX(err_omp_reduction_wrong_type) +DIAG_NAME_INDEX(err_omp_ref_type_arg) +DIAG_NAME_INDEX(err_omp_region_not_file_context) +DIAG_NAME_INDEX(err_omp_required_access) +DIAG_NAME_INDEX(err_omp_requires_clause_redeclaration) +DIAG_NAME_INDEX(err_omp_same_pointer_dereferenced) +DIAG_NAME_INDEX(err_omp_schedule_nonmonotonic_ordered) +DIAG_NAME_INDEX(err_omp_schedule_nonmonotonic_static) +DIAG_NAME_INDEX(err_omp_section_function_type) +DIAG_NAME_INDEX(err_omp_section_incomplete_type) +DIAG_NAME_INDEX(err_omp_section_length_negative) +DIAG_NAME_INDEX(err_omp_section_length_undefined) +DIAG_NAME_INDEX(err_omp_section_not_subset_of_array) +DIAG_NAME_INDEX(err_omp_sections_not_compound_stmt) +DIAG_NAME_INDEX(err_omp_sections_substmt_not_section) +DIAG_NAME_INDEX(err_omp_simd_region_cannot_use_stmt) +DIAG_NAME_INDEX(err_omp_single_copyprivate_with_nowait) +DIAG_NAME_INDEX(err_omp_single_decl_in_declare_simd) +DIAG_NAME_INDEX(err_omp_target_contains_not_only_teams) +DIAG_NAME_INDEX(err_omp_threadprivate_in_clause) +DIAG_NAME_INDEX(err_omp_threadprivate_in_target) +DIAG_NAME_INDEX(err_omp_threadprivate_incomplete_type) +DIAG_NAME_INDEX(err_omp_typecheck_section_not_integer) +DIAG_NAME_INDEX(err_omp_typecheck_section_value) +DIAG_NAME_INDEX(err_omp_unexpected_clause) +DIAG_NAME_INDEX(err_omp_unexpected_clause_value) +DIAG_NAME_INDEX(err_omp_unexpected_directive) +DIAG_NAME_INDEX(err_omp_unexpected_schedule_modifier) +DIAG_NAME_INDEX(err_omp_union_type_not_allowed) +DIAG_NAME_INDEX(err_omp_unknown_directive) +DIAG_NAME_INDEX(err_omp_unknown_map_type) +DIAG_NAME_INDEX(err_omp_unknown_map_type_modifier) +DIAG_NAME_INDEX(err_omp_unknown_reduction_identifier) +DIAG_NAME_INDEX(err_omp_unnamed_if_clause) +DIAG_NAME_INDEX(err_omp_usedeviceptr_not_a_pointer) +DIAG_NAME_INDEX(err_omp_var_scope) +DIAG_NAME_INDEX(err_omp_var_thread_local) +DIAG_NAME_INDEX(err_omp_var_used) +DIAG_NAME_INDEX(err_omp_variable_in_given_clause_and_dsa) +DIAG_NAME_INDEX(err_omp_variably_modified_type_not_supported) +DIAG_NAME_INDEX(err_omp_wrong_cancel_region) +DIAG_NAME_INDEX(err_omp_wrong_dsa) +DIAG_NAME_INDEX(err_omp_wrong_if_directive_name_modifier) +DIAG_NAME_INDEX(err_omp_wrong_linear_modifier) +DIAG_NAME_INDEX(err_omp_wrong_linear_modifier_non_reference) +DIAG_NAME_INDEX(err_omp_wrong_ordered_loop_count) +DIAG_NAME_INDEX(err_omp_wrong_simdlen_safelen_values) +DIAG_NAME_INDEX(err_omp_wrong_var_in_declare_reduction) +DIAG_NAME_INDEX(err_only_annotate_after_access_spec) +DIAG_NAME_INDEX(err_only_constructors_take_base_inits) +DIAG_NAME_INDEX(err_only_enums_have_underlying_types) +DIAG_NAME_INDEX(err_opencl_addrspace_scope) +DIAG_NAME_INDEX(err_opencl_atomic_init) +DIAG_NAME_INDEX(err_opencl_bitfields) +DIAG_NAME_INDEX(err_opencl_block_ref_block) +DIAG_NAME_INDEX(err_opencl_block_storage_type) +DIAG_NAME_INDEX(err_opencl_builtin_expected_type) +DIAG_NAME_INDEX(err_opencl_builtin_pipe_arg_num) +DIAG_NAME_INDEX(err_opencl_builtin_pipe_first_arg) +DIAG_NAME_INDEX(err_opencl_builtin_pipe_invalid_access_modifier) +DIAG_NAME_INDEX(err_opencl_builtin_pipe_invalid_arg) +DIAG_NAME_INDEX(err_opencl_builtin_to_addr_arg_num) +DIAG_NAME_INDEX(err_opencl_builtin_to_addr_invalid_arg) +DIAG_NAME_INDEX(err_opencl_cast_non_zero_to_event_t) +DIAG_NAME_INDEX(err_opencl_cast_to_half) +DIAG_NAME_INDEX(err_opencl_constant_no_init) +DIAG_NAME_INDEX(err_opencl_enqueue_kernel_blocks_no_args) +DIAG_NAME_INDEX(err_opencl_enqueue_kernel_blocks_non_local_void_args) +DIAG_NAME_INDEX(err_opencl_enqueue_kernel_incorrect_args) +DIAG_NAME_INDEX(err_opencl_enqueue_kernel_invalid_local_size_type) +DIAG_NAME_INDEX(err_opencl_enqueue_kernel_local_size_args) +DIAG_NAME_INDEX(err_opencl_ext_vector_component_invalid_length) +DIAG_NAME_INDEX(err_opencl_extern_block_declaration) +DIAG_NAME_INDEX(err_opencl_function_pointer) +DIAG_NAME_INDEX(err_opencl_function_variable) +DIAG_NAME_INDEX(err_opencl_global_invalid_addr_space) +DIAG_NAME_INDEX(err_opencl_half_declaration) +DIAG_NAME_INDEX(err_opencl_half_load_store) +DIAG_NAME_INDEX(err_opencl_half_param) +DIAG_NAME_INDEX(err_opencl_implicit_function_decl) +DIAG_NAME_INDEX(err_opencl_implicit_vector_conversion) +DIAG_NAME_INDEX(err_opencl_invalid_access_qualifier) +DIAG_NAME_INDEX(err_opencl_invalid_block_declaration) +DIAG_NAME_INDEX(err_opencl_invalid_read_write) +DIAG_NAME_INDEX(err_opencl_invalid_return) +DIAG_NAME_INDEX(err_opencl_invalid_type_array) +DIAG_NAME_INDEX(err_opencl_kernel_attr) +DIAG_NAME_INDEX(err_opencl_logical_exclusive_or) +DIAG_NAME_INDEX(err_opencl_multiple_access_qualifiers) +DIAG_NAME_INDEX(err_opencl_no_main) +DIAG_NAME_INDEX(err_opencl_nonconst_global_sampler) +DIAG_NAME_INDEX(err_opencl_pointer_to_type) +DIAG_NAME_INDEX(err_opencl_ptrptr_kernel_param) +DIAG_NAME_INDEX(err_opencl_requires_extension) +DIAG_NAME_INDEX(err_opencl_return_value_with_address_space) +DIAG_NAME_INDEX(err_opencl_scalar_type_rank_greater_than_vector_type) +DIAG_NAME_INDEX(err_opencl_sizeof_alignof_type) +DIAG_NAME_INDEX(err_opencl_taking_address_capture) +DIAG_NAME_INDEX(err_opencl_taking_function_address_parser) +DIAG_NAME_INDEX(err_opencl_ternary_with_block) +DIAG_NAME_INDEX(err_opencl_type_can_only_be_used_as_function_parameter) +DIAG_NAME_INDEX(err_opencl_type_struct_or_union_field) +DIAG_NAME_INDEX(err_opencl_unknown_type_specifier) +DIAG_NAME_INDEX(err_opencl_unroll_hint_on_non_loop) +DIAG_NAME_INDEX(err_opencl_variadic_function) +DIAG_NAME_INDEX(err_opencl_vla) +DIAG_NAME_INDEX(err_openclcxx_not_supported) +DIAG_NAME_INDEX(err_openclcxx_reserved) +DIAG_NAME_INDEX(err_openclcxx_virtual_function) +DIAG_NAME_INDEX(err_openmp_default_simd_align_expr) +DIAG_NAME_INDEX(err_operator_arrow_circular) +DIAG_NAME_INDEX(err_operator_arrow_depth_exceeded) +DIAG_NAME_INDEX(err_operator_delete_dependent_param_type) +DIAG_NAME_INDEX(err_operator_delete_param_type) +DIAG_NAME_INDEX(err_operator_new_default_arg) +DIAG_NAME_INDEX(err_operator_new_delete_declared_in_namespace) +DIAG_NAME_INDEX(err_operator_new_delete_declared_static) +DIAG_NAME_INDEX(err_operator_new_delete_dependent_result_type) +DIAG_NAME_INDEX(err_operator_new_delete_invalid_result_type) +DIAG_NAME_INDEX(err_operator_new_delete_template_too_few_parameters) +DIAG_NAME_INDEX(err_operator_new_delete_too_few_parameters) +DIAG_NAME_INDEX(err_operator_new_dependent_param_type) +DIAG_NAME_INDEX(err_operator_new_param_type) +DIAG_NAME_INDEX(err_operator_overload_default_arg) +DIAG_NAME_INDEX(err_operator_overload_must_be) +DIAG_NAME_INDEX(err_operator_overload_must_be_member) +DIAG_NAME_INDEX(err_operator_overload_needs_class_or_enum) +DIAG_NAME_INDEX(err_operator_overload_post_incdec_must_be_int) +DIAG_NAME_INDEX(err_operator_overload_static) +DIAG_NAME_INDEX(err_operator_overload_variadic) +DIAG_NAME_INDEX(err_opt_not_valid_on_target) +DIAG_NAME_INDEX(err_opt_not_valid_with_opt) +DIAG_NAME_INDEX(err_opt_not_valid_without_opt) +DIAG_NAME_INDEX(err_os_log_argument_too_big) +DIAG_NAME_INDEX(err_os_log_format_not_string_constant) +DIAG_NAME_INDEX(err_out_of_line_constructor_template_id) +DIAG_NAME_INDEX(err_out_of_line_default_deletes) +DIAG_NAME_INDEX(err_out_of_line_qualified_id_type_names_constructor) +DIAG_NAME_INDEX(err_overflow_builtin_must_be_int) +DIAG_NAME_INDEX(err_overflow_builtin_must_be_ptr_int) +DIAG_NAME_INDEX(err_override_control_interface) +DIAG_NAME_INDEX(err_override_exception_spec) +DIAG_NAME_INDEX(err_ovl_ambiguous_call) +DIAG_NAME_INDEX(err_ovl_ambiguous_conversion_in_cast) +DIAG_NAME_INDEX(err_ovl_ambiguous_init) +DIAG_NAME_INDEX(err_ovl_ambiguous_member_call) +DIAG_NAME_INDEX(err_ovl_ambiguous_object_call) +DIAG_NAME_INDEX(err_ovl_ambiguous_oper_binary) +DIAG_NAME_INDEX(err_ovl_ambiguous_oper_unary) +DIAG_NAME_INDEX(err_ovl_deleted_call) +DIAG_NAME_INDEX(err_ovl_deleted_conversion_in_cast) +DIAG_NAME_INDEX(err_ovl_deleted_init) +DIAG_NAME_INDEX(err_ovl_deleted_member_call) +DIAG_NAME_INDEX(err_ovl_deleted_object_call) +DIAG_NAME_INDEX(err_ovl_deleted_oper) +DIAG_NAME_INDEX(err_ovl_deleted_special_init) +DIAG_NAME_INDEX(err_ovl_deleted_special_oper) +DIAG_NAME_INDEX(err_ovl_diff_return_type) +DIAG_NAME_INDEX(err_ovl_no_conversion_in_cast) +DIAG_NAME_INDEX(err_ovl_no_oper) +DIAG_NAME_INDEX(err_ovl_no_viable_conversion_in_cast) +DIAG_NAME_INDEX(err_ovl_no_viable_function_in_call) +DIAG_NAME_INDEX(err_ovl_no_viable_function_in_init) +DIAG_NAME_INDEX(err_ovl_no_viable_literal_operator) +DIAG_NAME_INDEX(err_ovl_no_viable_member_function_in_call) +DIAG_NAME_INDEX(err_ovl_no_viable_object_call) +DIAG_NAME_INDEX(err_ovl_no_viable_oper) +DIAG_NAME_INDEX(err_ovl_no_viable_subscript) +DIAG_NAME_INDEX(err_ovl_static_nonstatic_member) +DIAG_NAME_INDEX(err_ovl_unresolvable) +DIAG_NAME_INDEX(err_ownership_returns_index_mismatch) +DIAG_NAME_INDEX(err_ownership_type) +DIAG_NAME_INDEX(err_pack_expansion_length_conflict) +DIAG_NAME_INDEX(err_pack_expansion_length_conflict_multilevel) +DIAG_NAME_INDEX(err_pack_expansion_length_conflict_partial) +DIAG_NAME_INDEX(err_pack_expansion_member_init) +DIAG_NAME_INDEX(err_pack_expansion_without_parameter_packs) +DIAG_NAME_INDEX(err_param_default_argument) +DIAG_NAME_INDEX(err_param_default_argument_member_template_redecl) +DIAG_NAME_INDEX(err_param_default_argument_missing) +DIAG_NAME_INDEX(err_param_default_argument_missing_name) +DIAG_NAME_INDEX(err_param_default_argument_nonfunc) +DIAG_NAME_INDEX(err_param_default_argument_on_parameter_pack) +DIAG_NAME_INDEX(err_param_default_argument_redefinition) +DIAG_NAME_INDEX(err_param_default_argument_references_local) +DIAG_NAME_INDEX(err_param_default_argument_references_param) +DIAG_NAME_INDEX(err_param_default_argument_references_this) +DIAG_NAME_INDEX(err_param_default_argument_template_redecl) +DIAG_NAME_INDEX(err_param_redefinition) +DIAG_NAME_INDEX(err_param_with_void_type) +DIAG_NAME_INDEX(err_parameter_name_omitted) +DIAG_NAME_INDEX(err_parameter_shadow_capture) +DIAG_NAME_INDEX(err_parameters_retval_cannot_have_fp16_type) +DIAG_NAME_INDEX(err_paren_sizeof_parameter_pack) +DIAG_NAME_INDEX(err_parens_pointer_member_function) +DIAG_NAME_INDEX(err_partial_spec_args_match_primary_template) +DIAG_NAME_INDEX(err_partial_spec_fully_specialized) +DIAG_NAME_INDEX(err_partial_spec_ordering_ambiguous) +DIAG_NAME_INDEX(err_partial_spec_redeclared) +DIAG_NAME_INDEX(err_partial_specialization_friend) +DIAG_NAME_INDEX(err_pascal_string_too_long) +DIAG_NAME_INDEX(err_paste_at_end) +DIAG_NAME_INDEX(err_paste_at_start) +DIAG_NAME_INDEX(err_pch_diagopt_mismatch) +DIAG_NAME_INDEX(err_pch_different_branch) +DIAG_NAME_INDEX(err_pch_langopt_mismatch) +DIAG_NAME_INDEX(err_pch_langopt_value_mismatch) +DIAG_NAME_INDEX(err_pch_macro_def_conflict) +DIAG_NAME_INDEX(err_pch_macro_def_undef) +DIAG_NAME_INDEX(err_pch_modulecache_mismatch) +DIAG_NAME_INDEX(err_pch_pp_detailed_record) +DIAG_NAME_INDEX(err_pch_targetopt_feature_mismatch) +DIAG_NAME_INDEX(err_pch_targetopt_mismatch) +DIAG_NAME_INDEX(err_pch_undef) +DIAG_NAME_INDEX(err_pch_version_too_new) +DIAG_NAME_INDEX(err_pch_version_too_old) +DIAG_NAME_INDEX(err_pch_with_compiler_errors) +DIAG_NAME_INDEX(err_placeholder_in_source) +DIAG_NAME_INDEX(err_placement_new_non_placement_delete) +DIAG_NAME_INDEX(err_pointer_to_member_call_drops_quals) +DIAG_NAME_INDEX(err_pointer_to_member_oper_value_classify) +DIAG_NAME_INDEX(err_pointer_to_member_type) +DIAG_NAME_INDEX(err_pp_arc_cf_code_audited_syntax) +DIAG_NAME_INDEX(err_pp_assume_nonnull_syntax) +DIAG_NAME_INDEX(err_pp_bad_paste) +DIAG_NAME_INDEX(err_pp_colon_without_question) +DIAG_NAME_INDEX(err_pp_directive_required) +DIAG_NAME_INDEX(err_pp_division_by_zero) +DIAG_NAME_INDEX(err_pp_double_begin_of_arc_cf_code_audited) +DIAG_NAME_INDEX(err_pp_double_begin_of_assume_nonnull) +DIAG_NAME_INDEX(err_pp_duplicate_name_in_arg_list) +DIAG_NAME_INDEX(err_pp_empty_filename) +DIAG_NAME_INDEX(err_pp_endif_without_if) +DIAG_NAME_INDEX(err_pp_eof_in_arc_cf_code_audited) +DIAG_NAME_INDEX(err_pp_eof_in_assume_nonnull) +DIAG_NAME_INDEX(err_pp_error_opening_file) +DIAG_NAME_INDEX(err_pp_expected_after) +DIAG_NAME_INDEX(err_pp_expected_comma_in_arg_list) +DIAG_NAME_INDEX(err_pp_expected_eol) +DIAG_NAME_INDEX(err_pp_expected_ident_in_arg_list) +DIAG_NAME_INDEX(err_pp_expected_module_name) +DIAG_NAME_INDEX(err_pp_expected_rparen) +DIAG_NAME_INDEX(err_pp_expected_value_in_expr) +DIAG_NAME_INDEX(err_pp_expects_filename) +DIAG_NAME_INDEX(err_pp_expr_bad_token_binop) +DIAG_NAME_INDEX(err_pp_expr_bad_token_lparen) +DIAG_NAME_INDEX(err_pp_expr_bad_token_start_expr) +DIAG_NAME_INDEX(err_pp_file_not_found) +DIAG_NAME_INDEX(err_pp_file_not_found_angled_include_not_fatal) +DIAG_NAME_INDEX(err_pp_file_not_found_typo_not_fatal) +DIAG_NAME_INDEX(err_pp_hash_error) +DIAG_NAME_INDEX(err_pp_identifier_arg_not_identifier) +DIAG_NAME_INDEX(err_pp_illegal_floating_literal) +DIAG_NAME_INDEX(err_pp_import_directive_ms) +DIAG_NAME_INDEX(err_pp_include_in_arc_cf_code_audited) +DIAG_NAME_INDEX(err_pp_include_in_assume_nonnull) +DIAG_NAME_INDEX(err_pp_include_too_deep) +DIAG_NAME_INDEX(err_pp_invalid_directive) +DIAG_NAME_INDEX(err_pp_invalid_poison) +DIAG_NAME_INDEX(err_pp_invalid_tok_in_arg_list) +DIAG_NAME_INDEX(err_pp_invalid_udl) +DIAG_NAME_INDEX(err_pp_line_digit_sequence) +DIAG_NAME_INDEX(err_pp_line_invalid_filename) +DIAG_NAME_INDEX(err_pp_line_requires_integer) +DIAG_NAME_INDEX(err_pp_linemarker_invalid_filename) +DIAG_NAME_INDEX(err_pp_linemarker_invalid_flag) +DIAG_NAME_INDEX(err_pp_linemarker_invalid_pop) +DIAG_NAME_INDEX(err_pp_linemarker_requires_integer) +DIAG_NAME_INDEX(err_pp_macro_not_identifier) +DIAG_NAME_INDEX(err_pp_malformed_ident) +DIAG_NAME_INDEX(err_pp_missing_lparen_in_vaopt_use) +DIAG_NAME_INDEX(err_pp_missing_macro_name) +DIAG_NAME_INDEX(err_pp_missing_rparen_in_macro_def) +DIAG_NAME_INDEX(err_pp_module_begin_no_module_map) +DIAG_NAME_INDEX(err_pp_module_begin_no_submodule) +DIAG_NAME_INDEX(err_pp_module_begin_without_module_end) +DIAG_NAME_INDEX(err_pp_module_begin_wrong_module) +DIAG_NAME_INDEX(err_pp_module_build_missing_end) +DIAG_NAME_INDEX(err_pp_module_end_without_module_begin) +DIAG_NAME_INDEX(err_pp_nested_paren) +DIAG_NAME_INDEX(err_pp_opencl_variadic_macros) +DIAG_NAME_INDEX(err_pp_operator_used_as_macro_name) +DIAG_NAME_INDEX(err_pp_pragma_hdrstop_not_seen) +DIAG_NAME_INDEX(err_pp_remainder_by_zero) +DIAG_NAME_INDEX(err_pp_stringize_not_parameter) +DIAG_NAME_INDEX(err_pp_through_header_not_found) +DIAG_NAME_INDEX(err_pp_through_header_not_seen) +DIAG_NAME_INDEX(err_pp_unmatched_end_of_arc_cf_code_audited) +DIAG_NAME_INDEX(err_pp_unmatched_end_of_assume_nonnull) +DIAG_NAME_INDEX(err_pp_unterminated_conditional) +DIAG_NAME_INDEX(err_pp_used_poisoned_id) +DIAG_NAME_INDEX(err_pp_vaopt_nested_use) +DIAG_NAME_INDEX(err_pp_visibility_non_macro) +DIAG_NAME_INDEX(err_ppc_builtin_only_on_pwr7) +DIAG_NAME_INDEX(err_pragma_attr_attr_no_push) +DIAG_NAME_INDEX(err_pragma_attribute_duplicate_subject) +DIAG_NAME_INDEX(err_pragma_attribute_expected_attribute) +DIAG_NAME_INDEX(err_pragma_attribute_expected_attribute_name) +DIAG_NAME_INDEX(err_pragma_attribute_expected_attribute_syntax) +DIAG_NAME_INDEX(err_pragma_attribute_expected_period) +DIAG_NAME_INDEX(err_pragma_attribute_expected_push_pop_paren) +DIAG_NAME_INDEX(err_pragma_attribute_expected_subject_identifier) +DIAG_NAME_INDEX(err_pragma_attribute_expected_subject_sub_identifier) +DIAG_NAME_INDEX(err_pragma_attribute_extra_tokens_after_attribute) +DIAG_NAME_INDEX(err_pragma_attribute_invalid_argument) +DIAG_NAME_INDEX(err_pragma_attribute_invalid_matchers) +DIAG_NAME_INDEX(err_pragma_attribute_invalid_subject_set_specifier) +DIAG_NAME_INDEX(err_pragma_attribute_matcher_negated_subrule_contradicts_subrule) +DIAG_NAME_INDEX(err_pragma_attribute_matcher_subrule_contradicts_rule) +DIAG_NAME_INDEX(err_pragma_attribute_multiple_attributes) +DIAG_NAME_INDEX(err_pragma_attribute_namespace_on_attribute) +DIAG_NAME_INDEX(err_pragma_attribute_no_pop_eof) +DIAG_NAME_INDEX(err_pragma_attribute_stack_mismatch) +DIAG_NAME_INDEX(err_pragma_attribute_unknown_subject_rule) +DIAG_NAME_INDEX(err_pragma_attribute_unknown_subject_sub_rule) +DIAG_NAME_INDEX(err_pragma_attribute_unsupported_attribute) +DIAG_NAME_INDEX(err_pragma_cannot_end_force_cuda_host_device) +DIAG_NAME_INDEX(err_pragma_clang_section_expected_equal) +DIAG_NAME_INDEX(err_pragma_comment_malformed) +DIAG_NAME_INDEX(err_pragma_comment_unknown_kind) +DIAG_NAME_INDEX(err_pragma_detect_mismatch_malformed) +DIAG_NAME_INDEX(err_pragma_expected_clang_section_name) +DIAG_NAME_INDEX(err_pragma_fp_contract_scope) +DIAG_NAME_INDEX(err_pragma_fp_invalid_argument) +DIAG_NAME_INDEX(err_pragma_fp_invalid_option) +DIAG_NAME_INDEX(err_pragma_fp_scope) +DIAG_NAME_INDEX(err_pragma_invalid_keyword) +DIAG_NAME_INDEX(err_pragma_loop_compatibility) +DIAG_NAME_INDEX(err_pragma_loop_invalid_argument_type) +DIAG_NAME_INDEX(err_pragma_loop_invalid_argument_value) +DIAG_NAME_INDEX(err_pragma_loop_invalid_option) +DIAG_NAME_INDEX(err_pragma_loop_missing_argument) +DIAG_NAME_INDEX(err_pragma_loop_precedes_nonloop) +DIAG_NAME_INDEX(err_pragma_message) +DIAG_NAME_INDEX(err_pragma_message_malformed) +DIAG_NAME_INDEX(err_pragma_missing_argument) +DIAG_NAME_INDEX(err_pragma_optimize_extra_argument) +DIAG_NAME_INDEX(err_pragma_optimize_invalid_argument) +DIAG_NAME_INDEX(err_pragma_options_align_mac68k_target_unsupported) +DIAG_NAME_INDEX(err_pragma_pipeline_invalid_keyword) +DIAG_NAME_INDEX(err_pragma_pointers_to_members_unknown_kind) +DIAG_NAME_INDEX(err_pragma_pop_visibility_mismatch) +DIAG_NAME_INDEX(err_pragma_push_pop_macro_malformed) +DIAG_NAME_INDEX(err_pragma_push_visibility_mismatch) +DIAG_NAME_INDEX(err_private_ivar_access) +DIAG_NAME_INDEX(err_property_accessor_type) +DIAG_NAME_INDEX(err_property_found_suggest) +DIAG_NAME_INDEX(err_property_function_in_objc_container) +DIAG_NAME_INDEX(err_property_implemented) +DIAG_NAME_INDEX(err_property_is_variably_modified) +DIAG_NAME_INDEX(err_property_ivar_type) +DIAG_NAME_INDEX(err_property_method_unavailable) +DIAG_NAME_INDEX(err_property_not_as_forward_class) +DIAG_NAME_INDEX(err_property_not_found) +DIAG_NAME_INDEX(err_property_not_found_forward_class) +DIAG_NAME_INDEX(err_property_not_found_suggest) +DIAG_NAME_INDEX(err_property_setter_ambiguous_use) +DIAG_NAME_INDEX(err_property_type) +DIAG_NAME_INDEX(err_protected_ivar_access) +DIAG_NAME_INDEX(err_protocol_has_circular_dependency) +DIAG_NAME_INDEX(err_protocol_property_mismatch) +DIAG_NAME_INDEX(err_pseudo_dtor_base_not_scalar) +DIAG_NAME_INDEX(err_pseudo_dtor_call_with_args) +DIAG_NAME_INDEX(err_pseudo_dtor_destructor_non_type) +DIAG_NAME_INDEX(err_pseudo_dtor_type_mismatch) +DIAG_NAME_INDEX(err_pure_friend) +DIAG_NAME_INDEX(err_qualified_catch_declarator) +DIAG_NAME_INDEX(err_qualified_friend_def) +DIAG_NAME_INDEX(err_qualified_friend_no_match) +DIAG_NAME_INDEX(err_qualified_member_nonclass) +DIAG_NAME_INDEX(err_qualified_member_of_unrelated) +DIAG_NAME_INDEX(err_qualified_objc_access) +DIAG_NAME_INDEX(err_qualified_objc_catch_parm) +DIAG_NAME_INDEX(err_qualified_param_declarator) +DIAG_NAME_INDEX(err_qualified_typedef_declarator) +DIAG_NAME_INDEX(err_range_on_array_parameter) +DIAG_NAME_INDEX(err_raw_delim_too_long) +DIAG_NAME_INDEX(err_readonly_message_assignment) +DIAG_NAME_INDEX(err_realimag_invalid_type) +DIAG_NAME_INDEX(err_record_with_pointers_kernel_param) +DIAG_NAME_INDEX(err_recursive_default_argument) +DIAG_NAME_INDEX(err_recursive_superclass) +DIAG_NAME_INDEX(err_redeclaration_different_type) +DIAG_NAME_INDEX(err_redefinition) +DIAG_NAME_INDEX(err_redefinition_different_kind) +DIAG_NAME_INDEX(err_redefinition_different_namespace_alias) +DIAG_NAME_INDEX(err_redefinition_different_type) +DIAG_NAME_INDEX(err_redefinition_different_typedef) +DIAG_NAME_INDEX(err_redefinition_extern_inline) +DIAG_NAME_INDEX(err_redefinition_of_enumerator) +DIAG_NAME_INDEX(err_redefinition_of_label) +DIAG_NAME_INDEX(err_redefinition_variably_modified_typedef) +DIAG_NAME_INDEX(err_ref_array_type) +DIAG_NAME_INDEX(err_ref_bad_target) +DIAG_NAME_INDEX(err_ref_bad_target_global_initializer) +DIAG_NAME_INDEX(err_ref_flexarray_type) +DIAG_NAME_INDEX(err_ref_init_ambiguous) +DIAG_NAME_INDEX(err_ref_non_value) +DIAG_NAME_INDEX(err_ref_qualifier_constructor) +DIAG_NAME_INDEX(err_ref_qualifier_destructor) +DIAG_NAME_INDEX(err_ref_qualifier_overload) +DIAG_NAME_INDEX(err_ref_vm_type) +DIAG_NAME_INDEX(err_refactor_code_outside_of_function) +DIAG_NAME_INDEX(err_refactor_extract_prohibited_expression) +DIAG_NAME_INDEX(err_refactor_extract_simple_expression) +DIAG_NAME_INDEX(err_refactor_no_selection) +DIAG_NAME_INDEX(err_refactor_selection_invalid_ast) +DIAG_NAME_INDEX(err_refactor_selection_no_symbol) +DIAG_NAME_INDEX(err_reference_bind_drops_quals) +DIAG_NAME_INDEX(err_reference_bind_failed) +DIAG_NAME_INDEX(err_reference_bind_init_list) +DIAG_NAME_INDEX(err_reference_bind_to_bitfield) +DIAG_NAME_INDEX(err_reference_bind_to_vector_element) +DIAG_NAME_INDEX(err_reference_capture_with_reference_default) +DIAG_NAME_INDEX(err_reference_has_multiple_inits) +DIAG_NAME_INDEX(err_reference_pipe_type) +DIAG_NAME_INDEX(err_reference_to_local_in_enclosing_context) +DIAG_NAME_INDEX(err_reference_to_void) +DIAG_NAME_INDEX(err_reference_var_requires_init) +DIAG_NAME_INDEX(err_reference_without_init) +DIAG_NAME_INDEX(err_regparm_mismatch) +DIAG_NAME_INDEX(err_relocatable_without_isysroot) +DIAG_NAME_INDEX(err_repeat_attribute) +DIAG_NAME_INDEX(err_require_constant_init_failed) +DIAG_NAME_INDEX(err_restricted_superclass_mismatch) +DIAG_NAME_INDEX(err_ret_local_block) +DIAG_NAME_INDEX(err_rethrow_used_outside_catch) +DIAG_NAME_INDEX(err_return_block_has_expr) +DIAG_NAME_INDEX(err_return_in_captured_stmt) +DIAG_NAME_INDEX(err_return_in_constructor_handler) +DIAG_NAME_INDEX(err_return_in_coroutine) +DIAG_NAME_INDEX(err_return_init_list) +DIAG_NAME_INDEX(err_right_angle_bracket_equal_needs_space) +DIAG_NAME_INDEX(err_root_class_cannot_use_super) +DIAG_NAME_INDEX(err_rref_in_exception_spec) +DIAG_NAME_INDEX(err_sampler_argument_required) +DIAG_NAME_INDEX(err_sampler_initializer_not_integer) +DIAG_NAME_INDEX(err_scoped_enum_missing_identifier) +DIAG_NAME_INDEX(err_second_argument_to_cwsc_not_pointer) +DIAG_NAME_INDEX(err_second_parameter_to_va_arg_abstract) +DIAG_NAME_INDEX(err_second_parameter_to_va_arg_incomplete) +DIAG_NAME_INDEX(err_section_conflict) +DIAG_NAME_INDEX(err_seh___except_block) +DIAG_NAME_INDEX(err_seh___except_filter) +DIAG_NAME_INDEX(err_seh___finally_block) +DIAG_NAME_INDEX(err_seh_expected_handler) +DIAG_NAME_INDEX(err_seh_in_a_coroutine_with_cxx_exceptions) +DIAG_NAME_INDEX(err_seh_try_outside_functions) +DIAG_NAME_INDEX(err_seh_try_unsupported) +DIAG_NAME_INDEX(err_selected_explicit_constructor) +DIAG_NAME_INDEX(err_selector_element_const_type) +DIAG_NAME_INDEX(err_selector_element_not_lvalue) +DIAG_NAME_INDEX(err_selector_element_type) +DIAG_NAME_INDEX(err_setter_type_void) +DIAG_NAME_INDEX(err_shared_var_init) +DIAG_NAME_INDEX(err_shift_rhs_only_vector) +DIAG_NAME_INDEX(err_shufflevector_argument_too_large) +DIAG_NAME_INDEX(err_shufflevector_nonconstant_argument) +DIAG_NAME_INDEX(err_single_decl_assign_in_for_range) +DIAG_NAME_INDEX(err_sizeof_alignof_function_type) +DIAG_NAME_INDEX(err_sizeof_alignof_incomplete_type) +DIAG_NAME_INDEX(err_sizeof_alignof_typeof_bitfield) +DIAG_NAME_INDEX(err_sizeof_nonfragile_interface) +DIAG_NAME_INDEX(err_sizeof_pack_no_pack_name) +DIAG_NAME_INDEX(err_sizeof_pack_no_pack_name_suggest) +DIAG_NAME_INDEX(err_sizeof_parameter_pack) +DIAG_NAME_INDEX(err_spaceship_argument_narrowing) +DIAG_NAME_INDEX(err_spec_member_not_instantiated) +DIAG_NAME_INDEX(err_specialization_after_instantiation) +DIAG_NAME_INDEX(err_specialization_not_primary_template) +DIAG_NAME_INDEX(err_specialize_member_of_template) +DIAG_NAME_INDEX(err_standalone_class_nested_name_specifier) +DIAG_NAME_INDEX(err_static_assert_expression_is_not_constant) +DIAG_NAME_INDEX(err_static_assert_failed) +DIAG_NAME_INDEX(err_static_assert_requirement_failed) +DIAG_NAME_INDEX(err_static_block_func) +DIAG_NAME_INDEX(err_static_data_member_not_allowed_in_anon_struct) +DIAG_NAME_INDEX(err_static_data_member_not_allowed_in_local_class) +DIAG_NAME_INDEX(err_static_data_member_reinitialization) +DIAG_NAME_INDEX(err_static_downcast_via_virtual) +DIAG_NAME_INDEX(err_static_function_scope) +DIAG_NAME_INDEX(err_static_illegal_in_new) +DIAG_NAME_INDEX(err_static_kernel) +DIAG_NAME_INDEX(err_static_main) +DIAG_NAME_INDEX(err_static_non_static) +DIAG_NAME_INDEX(err_static_not_bitfield) +DIAG_NAME_INDEX(err_static_out_of_line) +DIAG_NAME_INDEX(err_static_overrides_virtual) +DIAG_NAME_INDEX(err_statically_allocated_object) +DIAG_NAME_INDEX(err_std_compare_type_not_supported) +DIAG_NAME_INDEX(err_std_type_trait_not_class_template) +DIAG_NAME_INDEX(err_stmt_attribute_invalid_on_decl) +DIAG_NAME_INDEX(err_stmtexpr_file_scope) +DIAG_NAME_INDEX(err_storage_class_for_static_member) +DIAG_NAME_INDEX(err_storage_spec_on_catch_parm) +DIAG_NAME_INDEX(err_storageclass_invalid_for_member) +DIAG_NAME_INDEX(err_string_concat_mixed_suffix) +DIAG_NAME_INDEX(err_strong_property) +DIAG_NAME_INDEX(err_subscript_function_type) +DIAG_NAME_INDEX(err_subscript_incomplete_type) +DIAG_NAME_INDEX(err_subscript_nonfragile_interface) +DIAG_NAME_INDEX(err_super_in_lambda_unsupported) +DIAG_NAME_INDEX(err_super_in_using_declaration) +DIAG_NAME_INDEX(err_swift_abi_parameter_wrong_type) +DIAG_NAME_INDEX(err_swift_error_result_not_after_swift_context) +DIAG_NAME_INDEX(err_swift_indirect_result_not_first) +DIAG_NAME_INDEX(err_swift_param_attr_not_swiftcall) +DIAG_NAME_INDEX(err_switch_explicit_conversion) +DIAG_NAME_INDEX(err_switch_incomplete_class_type) +DIAG_NAME_INDEX(err_switch_into_protected_scope) +DIAG_NAME_INDEX(err_switch_multiple_conversions) +DIAG_NAME_INDEX(err_synthesize_category_decl) +DIAG_NAME_INDEX(err_synthesize_on_class_property) +DIAG_NAME_INDEX(err_synthesize_variable_sized_ivar) +DIAG_NAME_INDEX(err_synthesized_property_name) +DIAG_NAME_INDEX(err_synthesizing_arc_weak_property_disabled) +DIAG_NAME_INDEX(err_synthesizing_arc_weak_property_no_runtime) +DIAG_NAME_INDEX(err_systemz_invalid_tabort_code) +DIAG_NAME_INDEX(err_tag_definition_of_typedef) +DIAG_NAME_INDEX(err_tag_index_out_of_range) +DIAG_NAME_INDEX(err_tag_reference_conflict) +DIAG_NAME_INDEX(err_tag_reference_non_tag) +DIAG_NAME_INDEX(err_tagless_friend_type_template) +DIAG_NAME_INDEX(err_target_unknown_abi) +DIAG_NAME_INDEX(err_target_unknown_cpu) +DIAG_NAME_INDEX(err_target_unknown_fpmath) +DIAG_NAME_INDEX(err_target_unknown_triple) +DIAG_NAME_INDEX(err_target_unsupported_abi) +DIAG_NAME_INDEX(err_target_unsupported_abi_for_triple) +DIAG_NAME_INDEX(err_target_unsupported_arch) +DIAG_NAME_INDEX(err_target_unsupported_cpu_for_micromips) +DIAG_NAME_INDEX(err_target_unsupported_execute_only) +DIAG_NAME_INDEX(err_target_unsupported_fpmath) +DIAG_NAME_INDEX(err_target_unsupported_unaligned) +DIAG_NAME_INDEX(err_temp_copy_ambiguous) +DIAG_NAME_INDEX(err_temp_copy_deleted) +DIAG_NAME_INDEX(err_temp_copy_incomplete) +DIAG_NAME_INDEX(err_temp_copy_no_viable) +DIAG_NAME_INDEX(err_template_arg_address_of_non_pointer) +DIAG_NAME_INDEX(err_template_arg_deduced_incomplete_pack) +DIAG_NAME_INDEX(err_template_arg_field) +DIAG_NAME_INDEX(err_template_arg_list_different_arity) +DIAG_NAME_INDEX(err_template_arg_member_ptr_base_derived_not_supported) +DIAG_NAME_INDEX(err_template_arg_method) +DIAG_NAME_INDEX(err_template_arg_must_be_expr) +DIAG_NAME_INDEX(err_template_arg_must_be_template) +DIAG_NAME_INDEX(err_template_arg_must_be_type) +DIAG_NAME_INDEX(err_template_arg_must_be_type_suggest) +DIAG_NAME_INDEX(err_template_arg_no_ref_bind) +DIAG_NAME_INDEX(err_template_arg_nontype_ambig) +DIAG_NAME_INDEX(err_template_arg_not_address_constant) +DIAG_NAME_INDEX(err_template_arg_not_address_of) +DIAG_NAME_INDEX(err_template_arg_not_convertible) +DIAG_NAME_INDEX(err_template_arg_not_decl_ref) +DIAG_NAME_INDEX(err_template_arg_not_ice) +DIAG_NAME_INDEX(err_template_arg_not_integral_or_enumeral) +DIAG_NAME_INDEX(err_template_arg_not_object_or_func) +DIAG_NAME_INDEX(err_template_arg_not_pointer_to_member_form) +DIAG_NAME_INDEX(err_template_arg_not_valid_template) +DIAG_NAME_INDEX(err_template_arg_object_no_linkage) +DIAG_NAME_INDEX(err_template_arg_overload_type) +DIAG_NAME_INDEX(err_template_arg_ref_bind_ignores_quals) +DIAG_NAME_INDEX(err_template_arg_reference_var) +DIAG_NAME_INDEX(err_template_arg_template_params_mismatch) +DIAG_NAME_INDEX(err_template_arg_thread_local) +DIAG_NAME_INDEX(err_template_arg_untyped_null_constant) +DIAG_NAME_INDEX(err_template_arg_wrongtype_null_constant) +DIAG_NAME_INDEX(err_template_defn_explicit_instantiation) +DIAG_NAME_INDEX(err_template_different_associated_constraints) +DIAG_NAME_INDEX(err_template_id_not_a_type) +DIAG_NAME_INDEX(err_template_inside_local_class) +DIAG_NAME_INDEX(err_template_instantiate_undefined) +DIAG_NAME_INDEX(err_template_instantiate_within_definition) +DIAG_NAME_INDEX(err_template_kw_missing) +DIAG_NAME_INDEX(err_template_kw_refers_to_class_template) +DIAG_NAME_INDEX(err_template_kw_refers_to_non_template) +DIAG_NAME_INDEX(err_template_linkage) +DIAG_NAME_INDEX(err_template_member) +DIAG_NAME_INDEX(err_template_member_noparams) +DIAG_NAME_INDEX(err_template_missing_args) +DIAG_NAME_INDEX(err_template_nontype_parm_bad_type) +DIAG_NAME_INDEX(err_template_nontype_parm_different_type) +DIAG_NAME_INDEX(err_template_outside_namespace_or_class_scope) +DIAG_NAME_INDEX(err_template_param_default_arg_missing) +DIAG_NAME_INDEX(err_template_param_default_arg_redefinition) +DIAG_NAME_INDEX(err_template_param_different_kind) +DIAG_NAME_INDEX(err_template_param_list_different_arity) +DIAG_NAME_INDEX(err_template_param_list_matches_nontemplate) +DIAG_NAME_INDEX(err_template_param_pack_default_arg) +DIAG_NAME_INDEX(err_template_param_pack_must_be_last_template_parameter) +DIAG_NAME_INDEX(err_template_param_shadow) +DIAG_NAME_INDEX(err_template_parameter_default_friend_template) +DIAG_NAME_INDEX(err_template_parameter_default_template_member) +DIAG_NAME_INDEX(err_template_parameter_pack_non_pack) +DIAG_NAME_INDEX(err_template_qualified_declarator_no_match) +DIAG_NAME_INDEX(err_template_recursion_depth_exceeded) +DIAG_NAME_INDEX(err_template_spec_decl_friend) +DIAG_NAME_INDEX(err_template_spec_decl_function_scope) +DIAG_NAME_INDEX(err_template_spec_default_arg) +DIAG_NAME_INDEX(err_template_spec_extra_headers) +DIAG_NAME_INDEX(err_template_spec_friend) +DIAG_NAME_INDEX(err_template_spec_needs_header) +DIAG_NAME_INDEX(err_template_spec_needs_template_parameters) +DIAG_NAME_INDEX(err_template_spec_redecl_global_scope) +DIAG_NAME_INDEX(err_template_spec_redecl_out_of_scope) +DIAG_NAME_INDEX(err_template_spec_syntax_non_template) +DIAG_NAME_INDEX(err_template_spec_unknown_kind) +DIAG_NAME_INDEX(err_template_tag_noparams) +DIAG_NAME_INDEX(err_template_template_parm_no_parms) +DIAG_NAME_INDEX(err_template_typedef) +DIAG_NAME_INDEX(err_template_unnamed_class) +DIAG_NAME_INDEX(err_template_variable_noparams) +DIAG_NAME_INDEX(err_templated_invalid_declaration) +DIAG_NAME_INDEX(err_templated_using_directive_declaration) +DIAG_NAME_INDEX(err_tentative_def_incomplete_type) +DIAG_NAME_INDEX(err_test_module_file_extension_format) +DIAG_NAME_INDEX(err_test_module_file_extension_version) +DIAG_NAME_INDEX(err_this_capture) +DIAG_NAME_INDEX(err_this_captured_by_reference) +DIAG_NAME_INDEX(err_this_static_member_func) +DIAG_NAME_INDEX(err_thread_dynamic_init) +DIAG_NAME_INDEX(err_thread_non_global) +DIAG_NAME_INDEX(err_thread_non_thread) +DIAG_NAME_INDEX(err_thread_nontrivial_dtor) +DIAG_NAME_INDEX(err_thread_thread_different_kind) +DIAG_NAME_INDEX(err_thread_unsupported) +DIAG_NAME_INDEX(err_throw_abstract_type) +DIAG_NAME_INDEX(err_throw_incomplete) +DIAG_NAME_INDEX(err_throw_incomplete_ptr) +DIAG_NAME_INDEX(err_tls_var_aligned_over_maximum) +DIAG_NAME_INDEX(err_too_few_args_in_macro_invoc) +DIAG_NAME_INDEX(err_too_large_for_fixed_point) +DIAG_NAME_INDEX(err_too_many_args_in_macro_invoc) +DIAG_NAME_INDEX(err_toomany_element_decls) +DIAG_NAME_INDEX(err_trailing_return_in_parens) +DIAG_NAME_INDEX(err_trailing_return_without_auto) +DIAG_NAME_INDEX(err_two_right_angle_brackets_need_space) +DIAG_NAME_INDEX(err_type_defined_in_alias_template) +DIAG_NAME_INDEX(err_type_defined_in_condition) +DIAG_NAME_INDEX(err_type_defined_in_enum) +DIAG_NAME_INDEX(err_type_defined_in_for_range) +DIAG_NAME_INDEX(err_type_defined_in_param_type) +DIAG_NAME_INDEX(err_type_defined_in_result_type) +DIAG_NAME_INDEX(err_type_defined_in_type_specifier) +DIAG_NAME_INDEX(err_type_mismatch_continuation_class) +DIAG_NAME_INDEX(err_type_pack_element_out_of_bounds) +DIAG_NAME_INDEX(err_type_safety_unknown_flag) +DIAG_NAME_INDEX(err_type_tag_for_datatype_not_ice) +DIAG_NAME_INDEX(err_type_tag_for_datatype_too_large) +DIAG_NAME_INDEX(err_type_trait_arity) +DIAG_NAME_INDEX(err_type_unsupported) +DIAG_NAME_INDEX(err_typecheck_address_of) +DIAG_NAME_INDEX(err_typecheck_addrof_dtor) +DIAG_NAME_INDEX(err_typecheck_addrof_temporary) +DIAG_NAME_INDEX(err_typecheck_ambiguous_condition) +DIAG_NAME_INDEX(err_typecheck_arc_assign_externally_retained) +DIAG_NAME_INDEX(err_typecheck_arc_assign_self) +DIAG_NAME_INDEX(err_typecheck_arc_assign_self_class_method) +DIAG_NAME_INDEX(err_typecheck_arithmetic_incomplete_type) +DIAG_NAME_INDEX(err_typecheck_arr_assign_enumeration) +DIAG_NAME_INDEX(err_typecheck_array_not_modifiable_lvalue) +DIAG_NAME_INDEX(err_typecheck_assign_const) +DIAG_NAME_INDEX(err_typecheck_bool_condition) +DIAG_NAME_INDEX(err_typecheck_call_invalid_ordered_compare) +DIAG_NAME_INDEX(err_typecheck_call_invalid_unary_fp) +DIAG_NAME_INDEX(err_typecheck_call_not_function) +DIAG_NAME_INDEX(err_typecheck_call_too_few_args) +DIAG_NAME_INDEX(err_typecheck_call_too_few_args_at_least) +DIAG_NAME_INDEX(err_typecheck_call_too_few_args_at_least_one) +DIAG_NAME_INDEX(err_typecheck_call_too_few_args_at_least_suggest) +DIAG_NAME_INDEX(err_typecheck_call_too_few_args_one) +DIAG_NAME_INDEX(err_typecheck_call_too_few_args_suggest) +DIAG_NAME_INDEX(err_typecheck_call_too_many_args) +DIAG_NAME_INDEX(err_typecheck_call_too_many_args_at_most) +DIAG_NAME_INDEX(err_typecheck_call_too_many_args_at_most_one) +DIAG_NAME_INDEX(err_typecheck_call_too_many_args_at_most_suggest) +DIAG_NAME_INDEX(err_typecheck_call_too_many_args_one) +DIAG_NAME_INDEX(err_typecheck_call_too_many_args_suggest) +DIAG_NAME_INDEX(err_typecheck_cast_to_incomplete) +DIAG_NAME_INDEX(err_typecheck_cast_to_union_no_type) +DIAG_NAME_INDEX(err_typecheck_choose_expr_requires_constant) +DIAG_NAME_INDEX(err_typecheck_comparison_of_distinct_blocks) +DIAG_NAME_INDEX(err_typecheck_comparison_of_distinct_pointers) +DIAG_NAME_INDEX(err_typecheck_comparison_of_fptr_to_void) +DIAG_NAME_INDEX(err_typecheck_comparison_of_pointer_integer) +DIAG_NAME_INDEX(err_typecheck_cond_expect_int_float) +DIAG_NAME_INDEX(err_typecheck_cond_expect_nonfloat) +DIAG_NAME_INDEX(err_typecheck_cond_expect_scalar) +DIAG_NAME_INDEX(err_typecheck_cond_incompatible_operands) +DIAG_NAME_INDEX(err_typecheck_cond_incompatible_operands_null) +DIAG_NAME_INDEX(err_typecheck_convert_incompatible) +DIAG_NAME_INDEX(err_typecheck_convert_incompatible_block_pointer) +DIAG_NAME_INDEX(err_typecheck_converted_constant_expression) +DIAG_NAME_INDEX(err_typecheck_converted_constant_expression_disallowed) +DIAG_NAME_INDEX(err_typecheck_converted_constant_expression_indirect) +DIAG_NAME_INDEX(err_typecheck_decl_incomplete_type) +DIAG_NAME_INDEX(err_typecheck_deleted_function) +DIAG_NAME_INDEX(err_typecheck_duplicate_vector_components_not_mlvalue) +DIAG_NAME_INDEX(err_typecheck_expect_int) +DIAG_NAME_INDEX(err_typecheck_expect_scalar_operand) +DIAG_NAME_INDEX(err_typecheck_expression_not_modifiable_lvalue) +DIAG_NAME_INDEX(err_typecheck_field_variable_size) +DIAG_NAME_INDEX(err_typecheck_illegal_increment_decrement) +DIAG_NAME_INDEX(err_typecheck_incompatible_address_space) +DIAG_NAME_INDEX(err_typecheck_incompatible_ownership) +DIAG_NAME_INDEX(err_typecheck_incomplete_array_needs_initializer) +DIAG_NAME_INDEX(err_typecheck_incomplete_tag) +DIAG_NAME_INDEX(err_typecheck_incomplete_type_not_modifiable_lvalue) +DIAG_NAME_INDEX(err_typecheck_indirection_requires_pointer) +DIAG_NAME_INDEX(err_typecheck_invalid_lvalue_addrof) +DIAG_NAME_INDEX(err_typecheck_invalid_lvalue_addrof_addrof_function) +DIAG_NAME_INDEX(err_typecheck_invalid_operands) +DIAG_NAME_INDEX(err_typecheck_invalid_restrict_invalid_pointee) +DIAG_NAME_INDEX(err_typecheck_invalid_restrict_not_pointer) +DIAG_NAME_INDEX(err_typecheck_invalid_restrict_not_pointer_noarg) +DIAG_NAME_INDEX(err_typecheck_ivar_variable_size) +DIAG_NAME_INDEX(err_typecheck_logical_vector_expr_gnu_cpp_restrict) +DIAG_NAME_INDEX(err_typecheck_lvalue_casts_not_supported) +DIAG_NAME_INDEX(err_typecheck_member_reference_arrow) +DIAG_NAME_INDEX(err_typecheck_member_reference_ivar) +DIAG_NAME_INDEX(err_typecheck_member_reference_ivar_suggest) +DIAG_NAME_INDEX(err_typecheck_member_reference_struct_union) +DIAG_NAME_INDEX(err_typecheck_member_reference_suggestion) +DIAG_NAME_INDEX(err_typecheck_member_reference_type) +DIAG_NAME_INDEX(err_typecheck_member_reference_unknown) +DIAG_NAME_INDEX(err_typecheck_missing_return_type_incompatible) +DIAG_NAME_INDEX(err_typecheck_negative_array_size) +DIAG_NAME_INDEX(err_typecheck_non_object_not_modifiable_lvalue) +DIAG_NAME_INDEX(err_typecheck_nonviable_condition) +DIAG_NAME_INDEX(err_typecheck_nonviable_condition_incomplete) +DIAG_NAME_INDEX(err_typecheck_op_on_nonoverlapping_address_space_pointers) +DIAG_NAME_INDEX(err_typecheck_ordered_comparison_of_pointer_and_zero) +DIAG_NAME_INDEX(err_typecheck_pointer_arith_function_type) +DIAG_NAME_INDEX(err_typecheck_pointer_arith_void_type) +DIAG_NAME_INDEX(err_typecheck_sclass_fscope) +DIAG_NAME_INDEX(err_typecheck_sclass_func) +DIAG_NAME_INDEX(err_typecheck_statement_requires_integer) +DIAG_NAME_INDEX(err_typecheck_statement_requires_scalar) +DIAG_NAME_INDEX(err_typecheck_sub_ptr_compatible) +DIAG_NAME_INDEX(err_typecheck_subscript_not_integer) +DIAG_NAME_INDEX(err_typecheck_subscript_value) +DIAG_NAME_INDEX(err_typecheck_unary_expr) +DIAG_NAME_INDEX(err_typecheck_vector_lengths_not_equal) +DIAG_NAME_INDEX(err_typecheck_vector_not_convertable) +DIAG_NAME_INDEX(err_typecheck_vector_not_convertable_implict_truncation) +DIAG_NAME_INDEX(err_typecheck_vector_not_convertable_non_scalar) +DIAG_NAME_INDEX(err_typecheck_zero_array_size) +DIAG_NAME_INDEX(err_typedef_changes_linkage) +DIAG_NAME_INDEX(err_typedef_not_bitfield) +DIAG_NAME_INDEX(err_typedef_not_identifier) +DIAG_NAME_INDEX(err_typename_identifiers_only) +DIAG_NAME_INDEX(err_typename_invalid_constexpr) +DIAG_NAME_INDEX(err_typename_invalid_functionspec) +DIAG_NAME_INDEX(err_typename_invalid_storageclass) +DIAG_NAME_INDEX(err_typename_missing) +DIAG_NAME_INDEX(err_typename_missing_template) +DIAG_NAME_INDEX(err_typename_nested_not_found) +DIAG_NAME_INDEX(err_typename_nested_not_found_enable_if) +DIAG_NAME_INDEX(err_typename_nested_not_found_requirement) +DIAG_NAME_INDEX(err_typename_nested_not_type) +DIAG_NAME_INDEX(err_typename_refers_to_non_type_template) +DIAG_NAME_INDEX(err_typename_refers_to_using_value_decl) +DIAG_NAME_INDEX(err_typename_requires_specqual) +DIAG_NAME_INDEX(err_ucn_control_character) +DIAG_NAME_INDEX(err_ucn_escape_basic_scs) +DIAG_NAME_INDEX(err_ucn_escape_incomplete) +DIAG_NAME_INDEX(err_ucn_escape_invalid) +DIAG_NAME_INDEX(err_unable_to_make_temp) +DIAG_NAME_INDEX(err_unable_to_rename_temp) +DIAG_NAME_INDEX(err_unavailable) +DIAG_NAME_INDEX(err_unavailable_in_arc) +DIAG_NAME_INDEX(err_unavailable_message) +DIAG_NAME_INDEX(err_uncasted_call_of_unknown_any) +DIAG_NAME_INDEX(err_uncasted_send_to_unknown_any_method) +DIAG_NAME_INDEX(err_uncasted_use_of_unknown_any) +DIAG_NAME_INDEX(err_undeclared_boxing_method) +DIAG_NAME_INDEX(err_undeclared_label_use) +DIAG_NAME_INDEX(err_undeclared_objc_literal_class) +DIAG_NAME_INDEX(err_undeclared_protocol) +DIAG_NAME_INDEX(err_undeclared_protocol_suggest) +DIAG_NAME_INDEX(err_undeclared_use) +DIAG_NAME_INDEX(err_undeclared_use_of_module) +DIAG_NAME_INDEX(err_undeclared_use_suggest) +DIAG_NAME_INDEX(err_undeclared_var_use) +DIAG_NAME_INDEX(err_undeclared_var_use_suggest) +DIAG_NAME_INDEX(err_undef_interface) +DIAG_NAME_INDEX(err_undef_interface_suggest) +DIAG_NAME_INDEX(err_undef_superclass) +DIAG_NAME_INDEX(err_undef_superclass_suggest) +DIAG_NAME_INDEX(err_undefined_inline_var) +DIAG_NAME_INDEX(err_undefined_internal_type) +DIAG_NAME_INDEX(err_underlying_type_of_incomplete_enum) +DIAG_NAME_INDEX(err_unexpanded_parameter_pack) +DIAG_NAME_INDEX(err_unexpected_at) +DIAG_NAME_INDEX(err_unexpected_colon_in_nested_name_spec) +DIAG_NAME_INDEX(err_unexpected_friend) +DIAG_NAME_INDEX(err_unexpected_interface) +DIAG_NAME_INDEX(err_unexpected_module_decl) +DIAG_NAME_INDEX(err_unexpected_namespace) +DIAG_NAME_INDEX(err_unexpected_namespace_attributes_alias) +DIAG_NAME_INDEX(err_unexpected_nested_namespace_attribute) +DIAG_NAME_INDEX(err_unexpected_protocol_qualifier) +DIAG_NAME_INDEX(err_unexpected_scope_on_base_decltype) +DIAG_NAME_INDEX(err_unexpected_semi) +DIAG_NAME_INDEX(err_unexpected_template_in_unqualified_id) +DIAG_NAME_INDEX(err_unexpected_token_in_nested_name_spec) +DIAG_NAME_INDEX(err_unexpected_typedef) +DIAG_NAME_INDEX(err_unexpected_typedef_ident) +DIAG_NAME_INDEX(err_unexpected_unqualified_id) +DIAG_NAME_INDEX(err_unimplemented_conversion_with_fixed_point_type) +DIAG_NAME_INDEX(err_uninitialized_member_for_assign) +DIAG_NAME_INDEX(err_uninitialized_member_in_ctor) +DIAG_NAME_INDEX(err_union_as_base_class) +DIAG_NAME_INDEX(err_union_member_of_reference_type) +DIAG_NAME_INDEX(err_unknown_analyzer_checker) +DIAG_NAME_INDEX(err_unknown_any_addrof) +DIAG_NAME_INDEX(err_unknown_any_addrof_call) +DIAG_NAME_INDEX(err_unknown_any_function) +DIAG_NAME_INDEX(err_unknown_any_var_function_type) +DIAG_NAME_INDEX(err_unknown_nested_typename_suggest) +DIAG_NAME_INDEX(err_unknown_receiver_suggest) +DIAG_NAME_INDEX(err_unknown_template_name) +DIAG_NAME_INDEX(err_unknown_type_or_class_name_suggest) +DIAG_NAME_INDEX(err_unknown_typename) +DIAG_NAME_INDEX(err_unknown_typename_suggest) +DIAG_NAME_INDEX(err_unqualified_pointer_member_function) +DIAG_NAME_INDEX(err_unspecified_size_with_static) +DIAG_NAME_INDEX(err_unspecified_vla_size_with_static) +DIAG_NAME_INDEX(err_unsupported_abi_for_opt) +DIAG_NAME_INDEX(err_unsupported_ast_node) +DIAG_NAME_INDEX(err_unsupported_bom) +DIAG_NAME_INDEX(err_unsupported_string_concat) +DIAG_NAME_INDEX(err_unsupported_unknown_any_call) +DIAG_NAME_INDEX(err_unsupported_unknown_any_decl) +DIAG_NAME_INDEX(err_unsupported_unknown_any_expr) +DIAG_NAME_INDEX(err_unterm_macro_invoc) +DIAG_NAME_INDEX(err_unterminated___pragma) +DIAG_NAME_INDEX(err_unterminated_block_comment) +DIAG_NAME_INDEX(err_unterminated_raw_string) +DIAG_NAME_INDEX(err_upcast_to_inaccessible_base) +DIAG_NAME_INDEX(err_use_continuation_class) +DIAG_NAME_INDEX(err_use_continuation_class_redeclaration_readwrite) +DIAG_NAME_INDEX(err_use_of_default_argument_to_function_declared_later) +DIAG_NAME_INDEX(err_use_of_tag_name_without_tag) +DIAG_NAME_INDEX(err_use_with_wrong_tag) +DIAG_NAME_INDEX(err_using_attribute_ns_conflict) +DIAG_NAME_INDEX(err_using_decl_can_not_refer_to_class_member) +DIAG_NAME_INDEX(err_using_decl_can_not_refer_to_namespace) +DIAG_NAME_INDEX(err_using_decl_can_not_refer_to_scoped_enum) +DIAG_NAME_INDEX(err_using_decl_conflict) +DIAG_NAME_INDEX(err_using_decl_conflict_reverse) +DIAG_NAME_INDEX(err_using_decl_constructor) +DIAG_NAME_INDEX(err_using_decl_constructor_not_in_direct_base) +DIAG_NAME_INDEX(err_using_decl_destructor) +DIAG_NAME_INDEX(err_using_decl_friend) +DIAG_NAME_INDEX(err_using_decl_nested_name_specifier_is_current_class) +DIAG_NAME_INDEX(err_using_decl_nested_name_specifier_is_not_base_class) +DIAG_NAME_INDEX(err_using_decl_nested_name_specifier_is_not_class) +DIAG_NAME_INDEX(err_using_decl_redeclaration) +DIAG_NAME_INDEX(err_using_decl_redeclaration_expansion) +DIAG_NAME_INDEX(err_using_decl_template_id) +DIAG_NAME_INDEX(err_using_dependent_value_is_type) +DIAG_NAME_INDEX(err_using_directive_member_suggest) +DIAG_NAME_INDEX(err_using_directive_suggest) +DIAG_NAME_INDEX(err_using_namespace_in_class) +DIAG_NAME_INDEX(err_using_pack_expansion_empty) +DIAG_NAME_INDEX(err_using_requires_qualname) +DIAG_NAME_INDEX(err_using_typename_non_type) +DIAG_NAME_INDEX(err_uuidof_with_multiple_guids) +DIAG_NAME_INDEX(err_uuidof_without_guid) +DIAG_NAME_INDEX(err_va_arg_in_device) +DIAG_NAME_INDEX(err_va_start_captured_stmt) +DIAG_NAME_INDEX(err_va_start_fixed_function) +DIAG_NAME_INDEX(err_va_start_outside_function) +DIAG_NAME_INDEX(err_va_start_used_in_wrong_abi_function) +DIAG_NAME_INDEX(err_value_init_for_array_type) +DIAG_NAME_INDEX(err_vaopt_paste_at_end) +DIAG_NAME_INDEX(err_vaopt_paste_at_start) +DIAG_NAME_INDEX(err_var_concept_not_initialized) +DIAG_NAME_INDEX(err_var_partial_spec_redeclared) +DIAG_NAME_INDEX(err_var_spec_no_template) +DIAG_NAME_INDEX(err_var_spec_no_template_but_method) +DIAG_NAME_INDEX(err_variable_concept_bool_decl) +DIAG_NAME_INDEX(err_variable_instantiates_to_function) +DIAG_NAME_INDEX(err_variable_object_no_init) +DIAG_NAME_INDEX(err_variably_modified_new_type) +DIAG_NAME_INDEX(err_variably_modified_nontype_template_param) +DIAG_NAME_INDEX(err_variably_modified_template_arg) +DIAG_NAME_INDEX(err_variably_modified_typeid) +DIAG_NAME_INDEX(err_variadic_device_fn) +DIAG_NAME_INDEX(err_vec_builtin_incompatible_vector) +DIAG_NAME_INDEX(err_vec_builtin_non_vector) +DIAG_NAME_INDEX(err_vecstep_non_scalar_vector_type) +DIAG_NAME_INDEX(err_vector_incorrect_num_initializers) +DIAG_NAME_INDEX(err_verify_inconsistent_diags) +DIAG_NAME_INDEX(err_verify_invalid_content) +DIAG_NAME_INDEX(err_verify_invalid_no_diags) +DIAG_NAME_INDEX(err_verify_invalid_range) +DIAG_NAME_INDEX(err_verify_missing_end) +DIAG_NAME_INDEX(err_verify_missing_file) +DIAG_NAME_INDEX(err_verify_missing_line) +DIAG_NAME_INDEX(err_verify_missing_regex) +DIAG_NAME_INDEX(err_verify_missing_start) +DIAG_NAME_INDEX(err_verify_no_directives) +DIAG_NAME_INDEX(err_vftable_ambiguous_component) +DIAG_NAME_INDEX(err_virtual_in_union) +DIAG_NAME_INDEX(err_virtual_member_function_template) +DIAG_NAME_INDEX(err_virtual_non_function) +DIAG_NAME_INDEX(err_virtual_out_of_class) +DIAG_NAME_INDEX(err_vla_decl_has_extern_linkage) +DIAG_NAME_INDEX(err_vla_decl_has_static_storage) +DIAG_NAME_INDEX(err_vla_decl_in_file_scope) +DIAG_NAME_INDEX(err_vla_in_sfinae) +DIAG_NAME_INDEX(err_vla_unsupported) +DIAG_NAME_INDEX(err_vm_decl_has_extern_linkage) +DIAG_NAME_INDEX(err_vm_decl_in_file_scope) +DIAG_NAME_INDEX(err_vm_func_decl) +DIAG_NAME_INDEX(err_void_only_param) +DIAG_NAME_INDEX(err_void_param_qualified) +DIAG_NAME_INDEX(err_vsx_builtin_nonconstant_argument) +DIAG_NAME_INDEX(err_weak_property) +DIAG_NAME_INDEX(err_wrong_sampler_addressspace) +DIAG_NAME_INDEX(err_x86_builtin_invalid_rounding) +DIAG_NAME_INDEX(err_x86_builtin_invalid_scale) +DIAG_NAME_INDEX(err_zero_version) +DIAG_NAME_INDEX(error_inoutput_conflict_with_clobber) +DIAG_NAME_INDEX(escaped_newline_block_comment_end) +DIAG_NAME_INDEX(ext_abstract_pack_declarator_parens) +DIAG_NAME_INDEX(ext_aggregate_init_not_constant) +DIAG_NAME_INDEX(ext_alias_declaration) +DIAG_NAME_INDEX(ext_alignof_expr) +DIAG_NAME_INDEX(ext_anonymous_record_with_anonymous_type) +DIAG_NAME_INDEX(ext_anonymous_record_with_type) +DIAG_NAME_INDEX(ext_anonymous_struct_union_qualified) +DIAG_NAME_INDEX(ext_anonymous_union) +DIAG_NAME_INDEX(ext_array_init_copy) +DIAG_NAME_INDEX(ext_array_init_parens) +DIAG_NAME_INDEX(ext_array_size_conversion) +DIAG_NAME_INDEX(ext_auto_new_list_init) +DIAG_NAME_INDEX(ext_auto_storage_class) +DIAG_NAME_INDEX(ext_auto_type) +DIAG_NAME_INDEX(ext_auto_type_specifier) +DIAG_NAME_INDEX(ext_bad_cxx_cast_qualifiers_away_incoherent) +DIAG_NAME_INDEX(ext_binary_literal) +DIAG_NAME_INDEX(ext_binary_literal_cxx14) +DIAG_NAME_INDEX(ext_bitfield_member_init) +DIAG_NAME_INDEX(ext_c11_alignment) +DIAG_NAME_INDEX(ext_c11_anonymous_struct) +DIAG_NAME_INDEX(ext_c11_generic_selection) +DIAG_NAME_INDEX(ext_c11_noreturn) +DIAG_NAME_INDEX(ext_c11_static_assert) +DIAG_NAME_INDEX(ext_c99_array_usage) +DIAG_NAME_INDEX(ext_c99_compound_literal) +DIAG_NAME_INDEX(ext_c99_flexible_array_member) +DIAG_NAME_INDEX(ext_c99_longlong) +DIAG_NAME_INDEX(ext_c99_variable_decl_in_for_loop) +DIAG_NAME_INDEX(ext_c99_whitespace_required_after_macro_name) +DIAG_NAME_INDEX(ext_cannot_use_trivial_abi) +DIAG_NAME_INDEX(ext_cast_fn_obj) +DIAG_NAME_INDEX(ext_cce_narrowing) +DIAG_NAME_INDEX(ext_charize_microsoft) +DIAG_NAME_INDEX(ext_clang_c_enum_fixed_underlying_type) +DIAG_NAME_INDEX(ext_clang_diagnose_if) +DIAG_NAME_INDEX(ext_clang_enable_if) +DIAG_NAME_INDEX(ext_comment_paste_microsoft) +DIAG_NAME_INDEX(ext_complex_component_init) +DIAG_NAME_INDEX(ext_constexpr_body_invalid_stmt) +DIAG_NAME_INDEX(ext_constexpr_body_invalid_stmt_cxx2a) +DIAG_NAME_INDEX(ext_constexpr_body_multiple_return) +DIAG_NAME_INDEX(ext_constexpr_function_never_constant_expr) +DIAG_NAME_INDEX(ext_constexpr_function_try_block_cxx2a) +DIAG_NAME_INDEX(ext_constexpr_if) +DIAG_NAME_INDEX(ext_constexpr_local_var) +DIAG_NAME_INDEX(ext_constexpr_on_lambda_cxx17) +DIAG_NAME_INDEX(ext_constexpr_type_definition) +DIAG_NAME_INDEX(ext_ctrl_z_eof_microsoft) +DIAG_NAME_INDEX(ext_cxx11_enum_fixed_underlying_type) +DIAG_NAME_INDEX(ext_cxx11_longlong) +DIAG_NAME_INDEX(ext_cxx14_attr) +DIAG_NAME_INDEX(ext_cxx17_attr) +DIAG_NAME_INDEX(ext_decltype_auto_type_specifier) +DIAG_NAME_INDEX(ext_decomp_decl) +DIAG_NAME_INDEX(ext_decomp_decl_cond) +DIAG_NAME_INDEX(ext_decomp_decl_empty) +DIAG_NAME_INDEX(ext_default_init_const) +DIAG_NAME_INDEX(ext_defaulted_deleted_function) +DIAG_NAME_INDEX(ext_delete_void_ptr_operand) +DIAG_NAME_INDEX(ext_deprecated_string_literal_conversion) +DIAG_NAME_INDEX(ext_designated_init) +DIAG_NAME_INDEX(ext_dollar_in_identifier) +DIAG_NAME_INDEX(ext_duplicate_declspec) +DIAG_NAME_INDEX(ext_dynamic_exception_spec) +DIAG_NAME_INDEX(ext_ellipsis_exception_spec) +DIAG_NAME_INDEX(ext_embedded_directive) +DIAG_NAME_INDEX(ext_empty_character) +DIAG_NAME_INDEX(ext_empty_fnmacro_arg) +DIAG_NAME_INDEX(ext_empty_struct_union) +DIAG_NAME_INDEX(ext_empty_translation_unit) +DIAG_NAME_INDEX(ext_enum_friend) +DIAG_NAME_INDEX(ext_enum_too_large) +DIAG_NAME_INDEX(ext_enum_value_not_int) +DIAG_NAME_INDEX(ext_enumerator_increment_too_large) +DIAG_NAME_INDEX(ext_enumerator_list_comma_c) +DIAG_NAME_INDEX(ext_enumerator_list_comma_cxx) +DIAG_NAME_INDEX(ext_enumerator_too_large) +DIAG_NAME_INDEX(ext_equals_this_lambda_capture_cxx2a) +DIAG_NAME_INDEX(ext_equivalent_internal_linkage_decl_in_modules) +DIAG_NAME_INDEX(ext_excess_initializers) +DIAG_NAME_INDEX(ext_excess_initializers_in_char_array_initializer) +DIAG_NAME_INDEX(ext_expected_semi_decl_list) +DIAG_NAME_INDEX(ext_explicit_conversion_functions) +DIAG_NAME_INDEX(ext_explicit_instantiation_duplicate) +DIAG_NAME_INDEX(ext_explicit_instantiation_without_qualified_id) +DIAG_NAME_INDEX(ext_explicit_specialization_storage_class) +DIAG_NAME_INDEX(ext_expr_not_ice) +DIAG_NAME_INDEX(ext_extern_template) +DIAG_NAME_INDEX(ext_extra_semi) +DIAG_NAME_INDEX(ext_extra_semi_cxx11) +DIAG_NAME_INDEX(ext_flexible_array_empty_aggregate_gnu) +DIAG_NAME_INDEX(ext_flexible_array_empty_aggregate_ms) +DIAG_NAME_INDEX(ext_flexible_array_in_array) +DIAG_NAME_INDEX(ext_flexible_array_in_struct) +DIAG_NAME_INDEX(ext_flexible_array_init) +DIAG_NAME_INDEX(ext_flexible_array_union_gnu) +DIAG_NAME_INDEX(ext_flexible_array_union_ms) +DIAG_NAME_INDEX(ext_fold_expression) +DIAG_NAME_INDEX(ext_for_range) +DIAG_NAME_INDEX(ext_for_range_begin_end_types_differ) +DIAG_NAME_INDEX(ext_for_range_init_stmt) +DIAG_NAME_INDEX(ext_forward_ref_enum) +DIAG_NAME_INDEX(ext_forward_ref_enum_def) +DIAG_NAME_INDEX(ext_found_via_dependent_bases_lookup) +DIAG_NAME_INDEX(ext_four_char_character_literal) +DIAG_NAME_INDEX(ext_freestanding_complex) +DIAG_NAME_INDEX(ext_friend_tag_redecl_outside_namespace) +DIAG_NAME_INDEX(ext_generalized_initializer_lists) +DIAG_NAME_INDEX(ext_gnu_address_of_label) +DIAG_NAME_INDEX(ext_gnu_anonymous_struct) +DIAG_NAME_INDEX(ext_gnu_array_range) +DIAG_NAME_INDEX(ext_gnu_case_range) +DIAG_NAME_INDEX(ext_gnu_conditional_expr) +DIAG_NAME_INDEX(ext_gnu_empty_initializer) +DIAG_NAME_INDEX(ext_gnu_indirect_goto) +DIAG_NAME_INDEX(ext_gnu_missing_equal_designator) +DIAG_NAME_INDEX(ext_gnu_old_style_field_designator) +DIAG_NAME_INDEX(ext_gnu_ptr_func_arith) +DIAG_NAME_INDEX(ext_gnu_statement_expr) +DIAG_NAME_INDEX(ext_gnu_subscript_void_type) +DIAG_NAME_INDEX(ext_gnu_void_ptr) +DIAG_NAME_INDEX(ext_goto_into_protected_scope) +DIAG_NAME_INDEX(ext_hex_constant_invalid) +DIAG_NAME_INDEX(ext_hex_literal_invalid) +DIAG_NAME_INDEX(ext_ident_list_in_param) +DIAG_NAME_INDEX(ext_imaginary_constant) +DIAG_NAME_INDEX(ext_implicit_exception_spec_mismatch) +DIAG_NAME_INDEX(ext_implicit_function_decl) +DIAG_NAME_INDEX(ext_implicit_lib_function_decl) +DIAG_NAME_INDEX(ext_in_class_initializer_float_type) +DIAG_NAME_INDEX(ext_in_class_initializer_float_type_cxx11) +DIAG_NAME_INDEX(ext_in_class_initializer_non_constant) +DIAG_NAME_INDEX(ext_incomplete_in_exception_spec) +DIAG_NAME_INDEX(ext_increment_bool) +DIAG_NAME_INDEX(ext_init_capture) +DIAG_NAME_INDEX(ext_init_list_constant_narrowing) +DIAG_NAME_INDEX(ext_init_list_type_narrowing) +DIAG_NAME_INDEX(ext_init_list_variable_narrowing) +DIAG_NAME_INDEX(ext_init_statement) +DIAG_NAME_INDEX(ext_initializer_string_for_char_array_too_long) +DIAG_NAME_INDEX(ext_inline_namespace) +DIAG_NAME_INDEX(ext_inline_nested_namespace_definition) +DIAG_NAME_INDEX(ext_inline_variable) +DIAG_NAME_INDEX(ext_integer_complement_complex) +DIAG_NAME_INDEX(ext_integer_complex) +DIAG_NAME_INDEX(ext_integer_increment_complex) +DIAG_NAME_INDEX(ext_integer_literal_too_large_for_signed) +DIAG_NAME_INDEX(ext_internal_in_extern_inline) +DIAG_NAME_INDEX(ext_internal_in_extern_inline_quiet) +DIAG_NAME_INDEX(ext_invalid_sign_spec) +DIAG_NAME_INDEX(ext_keyword_as_ident) +DIAG_NAME_INDEX(ext_line_comment) +DIAG_NAME_INDEX(ext_main_returns_nonint) +DIAG_NAME_INDEX(ext_main_used) +DIAG_NAME_INDEX(ext_many_braces_around_scalar_init) +DIAG_NAME_INDEX(ext_member_redeclared) +DIAG_NAME_INDEX(ext_mismatched_exception_spec) +DIAG_NAME_INDEX(ext_mismatched_exception_spec_explicit_instantiation) +DIAG_NAME_INDEX(ext_missing_declspec) +DIAG_NAME_INDEX(ext_missing_exception_specification) +DIAG_NAME_INDEX(ext_missing_type_specifier) +DIAG_NAME_INDEX(ext_missing_varargs_arg) +DIAG_NAME_INDEX(ext_missing_whitespace_after_macro_name) +DIAG_NAME_INDEX(ext_mixed_decls_code) +DIAG_NAME_INDEX(ext_module_import_in_extern_c) +DIAG_NAME_INDEX(ext_module_import_not_at_top_level_noop) +DIAG_NAME_INDEX(ext_ms_ambiguous_direct_base) +DIAG_NAME_INDEX(ext_ms_anonymous_record) +DIAG_NAME_INDEX(ext_ms_c_enum_fixed_underlying_type) +DIAG_NAME_INDEX(ext_ms_cast_fn_obj) +DIAG_NAME_INDEX(ext_ms_delayed_template_argument) +DIAG_NAME_INDEX(ext_ms_deref_template_argument) +DIAG_NAME_INDEX(ext_ms_explicit_constructor_call) +DIAG_NAME_INDEX(ext_ms_forward_ref_enum) +DIAG_NAME_INDEX(ext_ms_impcast_fn_obj) +DIAG_NAME_INDEX(ext_ms_missing_exception_specification) +DIAG_NAME_INDEX(ext_ms_reserved_user_defined_literal) +DIAG_NAME_INDEX(ext_ms_sealed_keyword) +DIAG_NAME_INDEX(ext_ms_template_spec_redecl_out_of_scope) +DIAG_NAME_INDEX(ext_ms_template_type_arg_missing_typename) +DIAG_NAME_INDEX(ext_ms_using_declaration_inaccessible) +DIAG_NAME_INDEX(ext_multi_line_line_comment) +DIAG_NAME_INDEX(ext_multi_using_declaration) +DIAG_NAME_INDEX(ext_multichar_character_literal) +DIAG_NAME_INDEX(ext_mutable_reference) +DIAG_NAME_INDEX(ext_named_variadic_macro) +DIAG_NAME_INDEX(ext_nested_name_member_ref_lookup_ambiguous) +DIAG_NAME_INDEX(ext_nested_name_spec_is_enum) +DIAG_NAME_INDEX(ext_nested_namespace_definition) +DIAG_NAME_INDEX(ext_nested_pointer_qualifier_mismatch) +DIAG_NAME_INDEX(ext_new_paren_array_nonconst) +DIAG_NAME_INDEX(ext_no_declarators) +DIAG_NAME_INDEX(ext_no_named_members_in_struct_union) +DIAG_NAME_INDEX(ext_no_newline_eof) +DIAG_NAME_INDEX(ext_nonclass_type_friend) +DIAG_NAME_INDEX(ext_nonstandard_escape) +DIAG_NAME_INDEX(ext_nonstatic_member_init) +DIAG_NAME_INDEX(ext_noreturn_main) +DIAG_NAME_INDEX(ext_ns_enum_attribute) +DIAG_NAME_INDEX(ext_nullability) +DIAG_NAME_INDEX(ext_offsetof_non_pod_type) +DIAG_NAME_INDEX(ext_offsetof_non_standardlayout_type) +DIAG_NAME_INDEX(ext_old_implicitly_unsigned_long_cxx) +DIAG_NAME_INDEX(ext_omp_loop_not_canonical_init) +DIAG_NAME_INDEX(ext_on_off_switch_syntax) +DIAG_NAME_INDEX(ext_opencl_ext_vector_type_rgba_selector) +DIAG_NAME_INDEX(ext_operator_new_delete_declared_inline) +DIAG_NAME_INDEX(ext_out_of_line_declaration) +DIAG_NAME_INDEX(ext_out_of_line_qualified_id_type_names_constructor) +DIAG_NAME_INDEX(ext_override_control_keyword) +DIAG_NAME_INDEX(ext_override_exception_spec) +DIAG_NAME_INDEX(ext_param_default_argument_redefinition) +DIAG_NAME_INDEX(ext_param_not_declared) +DIAG_NAME_INDEX(ext_param_promoted_not_compatible_with_prototype) +DIAG_NAME_INDEX(ext_partial_spec_not_more_specialized_than_primary) +DIAG_NAME_INDEX(ext_partial_specs_not_deducible) +DIAG_NAME_INDEX(ext_paste_comma) +DIAG_NAME_INDEX(ext_plain_complex) +DIAG_NAME_INDEX(ext_pointer_to_const_ref_member_on_rvalue) +DIAG_NAME_INDEX(ext_pp_bad_paste_ms) +DIAG_NAME_INDEX(ext_pp_bad_vaargs_use) +DIAG_NAME_INDEX(ext_pp_bad_vaopt_use) +DIAG_NAME_INDEX(ext_pp_comma_expr) +DIAG_NAME_INDEX(ext_pp_extra_tokens_at_eol) +DIAG_NAME_INDEX(ext_pp_ident_directive) +DIAG_NAME_INDEX(ext_pp_import_directive) +DIAG_NAME_INDEX(ext_pp_include_next_directive) +DIAG_NAME_INDEX(ext_pp_include_search_ms) +DIAG_NAME_INDEX(ext_pp_line_too_big) +DIAG_NAME_INDEX(ext_pp_line_zero) +DIAG_NAME_INDEX(ext_pp_macro_redef) +DIAG_NAME_INDEX(ext_pp_operator_used_as_macro_name) +DIAG_NAME_INDEX(ext_pp_redef_builtin_macro) +DIAG_NAME_INDEX(ext_pp_undef_builtin_macro) +DIAG_NAME_INDEX(ext_pp_warning_directive) +DIAG_NAME_INDEX(ext_pragma_syntax_eod) +DIAG_NAME_INDEX(ext_predef_outside_function) +DIAG_NAME_INDEX(ext_pseudo_dtor_on_void) +DIAG_NAME_INDEX(ext_pure_function_definition) +DIAG_NAME_INDEX(ext_redefinition_of_typedef) +DIAG_NAME_INDEX(ext_ref_qualifier) +DIAG_NAME_INDEX(ext_register_storage_class) +DIAG_NAME_INDEX(ext_reserved_user_defined_literal) +DIAG_NAME_INDEX(ext_retained_language_linkage) +DIAG_NAME_INDEX(ext_return_has_expr) +DIAG_NAME_INDEX(ext_return_has_void_expr) +DIAG_NAME_INDEX(ext_return_missing_expr) +DIAG_NAME_INDEX(ext_rvalue_reference) +DIAG_NAME_INDEX(ext_rvalue_to_reference_access_ctor) +DIAG_NAME_INDEX(ext_rvalue_to_reference_temp_copy_no_viable) +DIAG_NAME_INDEX(ext_scoped_enum) +DIAG_NAME_INDEX(ext_sizeof_alignof_function_type) +DIAG_NAME_INDEX(ext_sizeof_alignof_void_type) +DIAG_NAME_INDEX(ext_standalone_specifier) +DIAG_NAME_INDEX(ext_star_this_lambda_capture_cxx17) +DIAG_NAME_INDEX(ext_static_assert_no_message) +DIAG_NAME_INDEX(ext_static_data_member_in_union) +DIAG_NAME_INDEX(ext_static_non_static) +DIAG_NAME_INDEX(ext_static_out_of_line) +DIAG_NAME_INDEX(ext_stdc_pragma_ignored) +DIAG_NAME_INDEX(ext_string_literal_operator_template) +DIAG_NAME_INDEX(ext_string_too_long) +DIAG_NAME_INDEX(ext_subscript_non_lvalue) +DIAG_NAME_INDEX(ext_template_arg_extra_parens) +DIAG_NAME_INDEX(ext_template_arg_local_type) +DIAG_NAME_INDEX(ext_template_arg_object_internal) +DIAG_NAME_INDEX(ext_template_arg_unnamed_type) +DIAG_NAME_INDEX(ext_template_outside_of_template) +DIAG_NAME_INDEX(ext_template_parameter_default_in_function_template) +DIAG_NAME_INDEX(ext_template_template_param_typename) +DIAG_NAME_INDEX(ext_thread_before) +DIAG_NAME_INDEX(ext_token_used) +DIAG_NAME_INDEX(ext_typecheck_addrof_temporary) +DIAG_NAME_INDEX(ext_typecheck_addrof_void) +DIAG_NAME_INDEX(ext_typecheck_base_super) +DIAG_NAME_INDEX(ext_typecheck_cast_nonscalar) +DIAG_NAME_INDEX(ext_typecheck_cast_to_union) +DIAG_NAME_INDEX(ext_typecheck_comparison_of_distinct_pointers) +DIAG_NAME_INDEX(ext_typecheck_comparison_of_fptr_to_void) +DIAG_NAME_INDEX(ext_typecheck_comparison_of_pointer_integer) +DIAG_NAME_INDEX(ext_typecheck_cond_incompatible_operands) +DIAG_NAME_INDEX(ext_typecheck_cond_incompatible_pointers) +DIAG_NAME_INDEX(ext_typecheck_cond_one_void) +DIAG_NAME_INDEX(ext_typecheck_cond_pointer_integer_mismatch) +DIAG_NAME_INDEX(ext_typecheck_convert_discards_qualifiers) +DIAG_NAME_INDEX(ext_typecheck_convert_incompatible_function_pointer) +DIAG_NAME_INDEX(ext_typecheck_convert_incompatible_pointer) +DIAG_NAME_INDEX(ext_typecheck_convert_incompatible_pointer_sign) +DIAG_NAME_INDEX(ext_typecheck_convert_int_pointer) +DIAG_NAME_INDEX(ext_typecheck_convert_pointer_int) +DIAG_NAME_INDEX(ext_typecheck_convert_pointer_void_func) +DIAG_NAME_INDEX(ext_typecheck_decl_incomplete_type) +DIAG_NAME_INDEX(ext_typecheck_indirection_through_void_pointer) +DIAG_NAME_INDEX(ext_typecheck_ordered_comparison_of_function_pointers) +DIAG_NAME_INDEX(ext_typecheck_ordered_comparison_of_pointer_and_zero) +DIAG_NAME_INDEX(ext_typecheck_ordered_comparison_of_pointer_integer) +DIAG_NAME_INDEX(ext_typecheck_zero_array_size) +DIAG_NAME_INDEX(ext_typedef_without_a_name) +DIAG_NAME_INDEX(ext_typename_missing) +DIAG_NAME_INDEX(ext_typename_outside_of_template) +DIAG_NAME_INDEX(ext_undeclared_unqual_id_with_dependent_base) +DIAG_NAME_INDEX(ext_undefined_internal_type) +DIAG_NAME_INDEX(ext_unelaborated_friend_type) +DIAG_NAME_INDEX(ext_unicode_whitespace) +DIAG_NAME_INDEX(ext_union_member_of_reference_type) +DIAG_NAME_INDEX(ext_unknown_escape) +DIAG_NAME_INDEX(ext_unterminated_char_or_string) +DIAG_NAME_INDEX(ext_use_out_of_scope_declaration) +DIAG_NAME_INDEX(ext_using_attribute_ns) +DIAG_NAME_INDEX(ext_using_declaration_pack) +DIAG_NAME_INDEX(ext_using_undefined_std) +DIAG_NAME_INDEX(ext_variable_sized_type_in_struct) +DIAG_NAME_INDEX(ext_variable_template) +DIAG_NAME_INDEX(ext_variadic_macro) +DIAG_NAME_INDEX(ext_variadic_main) +DIAG_NAME_INDEX(ext_variadic_templates) +DIAG_NAME_INDEX(ext_vla) +DIAG_NAME_INDEX(ext_vla_folded_to_constant) +DIAG_NAME_INDEX(ext_warn_duplicate_declspec) +DIAG_NAME_INDEX(ext_warn_gnu_final) +DIAG_NAME_INDEX(fatal_too_many_errors) +DIAG_NAME_INDEX(note_access_constrained_by_path) +DIAG_NAME_INDEX(note_access_natural) +DIAG_NAME_INDEX(note_access_protected_restricted_ctordtor) +DIAG_NAME_INDEX(note_access_protected_restricted_noobject) +DIAG_NAME_INDEX(note_access_protected_restricted_object) +DIAG_NAME_INDEX(note_add_deprecation_attr) +DIAG_NAME_INDEX(note_add_std_move) +DIAG_NAME_INDEX(note_add_std_move_in_cxx11) +DIAG_NAME_INDEX(note_add_synthesize_directive) +DIAG_NAME_INDEX(note_additional_parens_for_variable_declaration) +DIAG_NAME_INDEX(note_addrof_ovl_candidate_disabled_by_enable_if_attr) +DIAG_NAME_INDEX(note_alignas_on_declaration) +DIAG_NAME_INDEX(note_allocated_here) +DIAG_NAME_INDEX(note_also_found) +DIAG_NAME_INDEX(note_ambig_member_ref_object_type) +DIAG_NAME_INDEX(note_ambig_member_ref_scope) +DIAG_NAME_INDEX(note_ambiguous_candidate) +DIAG_NAME_INDEX(note_ambiguous_inherited_constructor_using) +DIAG_NAME_INDEX(note_ambiguous_member_found) +DIAG_NAME_INDEX(note_ambiguous_type_conversion) +DIAG_NAME_INDEX(note_arc_bridge) +DIAG_NAME_INDEX(note_arc_bridge_retained) +DIAG_NAME_INDEX(note_arc_bridge_transfer) +DIAG_NAME_INDEX(note_arc_cstyle_bridge) +DIAG_NAME_INDEX(note_arc_cstyle_bridge_retained) +DIAG_NAME_INDEX(note_arc_cstyle_bridge_transfer) +DIAG_NAME_INDEX(note_arc_field_with_ownership) +DIAG_NAME_INDEX(note_arc_forbidden_type) +DIAG_NAME_INDEX(note_arc_gained_method_convention) +DIAG_NAME_INDEX(note_arc_init_returns_unrelated) +DIAG_NAME_INDEX(note_arc_lost_method_convention) +DIAG_NAME_INDEX(note_arc_retain_cycle_owner) +DIAG_NAME_INDEX(note_arc_weak_also_accessed_here) +DIAG_NAME_INDEX(note_arc_weak_disabled) +DIAG_NAME_INDEX(note_arc_weak_no_runtime) +DIAG_NAME_INDEX(note_array_index_out_of_bounds) +DIAG_NAME_INDEX(note_array_init_plain_string_into_char8_t) +DIAG_NAME_INDEX(note_array_size_conversion) +DIAG_NAME_INDEX(note_asm_input_duplicate_first) +DIAG_NAME_INDEX(note_asm_missing_constraint_modifier) +DIAG_NAME_INDEX(note_assign_lhs_incomplete) +DIAG_NAME_INDEX(note_atomic_property_fixup_suggest) +DIAG_NAME_INDEX(note_attribute) +DIAG_NAME_INDEX(note_attribute_overloadable_prev_overload) +DIAG_NAME_INDEX(note_auto_readonly_iboutlet_fixup_suggest) +DIAG_NAME_INDEX(note_availability_specified_here) +DIAG_NAME_INDEX(note_await_ready_no_bool_conversion) +DIAG_NAME_INDEX(note_bad_memaccess_silence) +DIAG_NAME_INDEX(note_base_class_specified_here) +DIAG_NAME_INDEX(note_bitfield_decl) +DIAG_NAME_INDEX(note_block_var_fixit_add_initialization) +DIAG_NAME_INDEX(note_bracket_depth) +DIAG_NAME_INDEX(note_called_by) +DIAG_NAME_INDEX(note_callee_decl) +DIAG_NAME_INDEX(note_callee_static_array) +DIAG_NAME_INDEX(note_carries_dependency_missing_first_decl) +DIAG_NAME_INDEX(note_cast_to_void) +DIAG_NAME_INDEX(note_cat_conform_to_noescape_prot) +DIAG_NAME_INDEX(note_change_bitfield_sign) +DIAG_NAME_INDEX(note_change_calling_conv_fixit) +DIAG_NAME_INDEX(note_class_declared) +DIAG_NAME_INDEX(note_cocoa_naming_declare_family) +DIAG_NAME_INDEX(note_collapse_loop_count) +DIAG_NAME_INDEX(note_compat_assoc) +DIAG_NAME_INDEX(note_condition_assign_silence) +DIAG_NAME_INDEX(note_condition_assign_to_comparison) +DIAG_NAME_INDEX(note_condition_or_assign_to_comparison) +DIAG_NAME_INDEX(note_conflicting_attribute) +DIAG_NAME_INDEX(note_conflicting_try_here) +DIAG_NAME_INDEX(note_constexpr_access_inactive_union_member) +DIAG_NAME_INDEX(note_constexpr_access_null) +DIAG_NAME_INDEX(note_constexpr_access_past_end) +DIAG_NAME_INDEX(note_constexpr_access_static_temporary) +DIAG_NAME_INDEX(note_constexpr_access_uninit) +DIAG_NAME_INDEX(note_constexpr_access_unsized_array) +DIAG_NAME_INDEX(note_constexpr_access_volatile_obj) +DIAG_NAME_INDEX(note_constexpr_access_volatile_type) +DIAG_NAME_INDEX(note_constexpr_array_index) +DIAG_NAME_INDEX(note_constexpr_baa_insufficient_alignment) +DIAG_NAME_INDEX(note_constexpr_baa_value_insufficient_alignment) +DIAG_NAME_INDEX(note_constexpr_body_previous_return) +DIAG_NAME_INDEX(note_constexpr_call_here) +DIAG_NAME_INDEX(note_constexpr_call_limit_exceeded) +DIAG_NAME_INDEX(note_constexpr_calls_suppressed) +DIAG_NAME_INDEX(note_constexpr_compare_virtual_mem_ptr) +DIAG_NAME_INDEX(note_constexpr_conditional_never_const) +DIAG_NAME_INDEX(note_constexpr_ctor_missing_init) +DIAG_NAME_INDEX(note_constexpr_depth_limit_exceeded) +DIAG_NAME_INDEX(note_constexpr_float_arithmetic) +DIAG_NAME_INDEX(note_constexpr_inherited_ctor_call_here) +DIAG_NAME_INDEX(note_constexpr_invalid_cast) +DIAG_NAME_INDEX(note_constexpr_invalid_downcast) +DIAG_NAME_INDEX(note_constexpr_invalid_function) +DIAG_NAME_INDEX(note_constexpr_invalid_inhctor) +DIAG_NAME_INDEX(note_constexpr_large_shift) +DIAG_NAME_INDEX(note_constexpr_lifetime_ended) +DIAG_NAME_INDEX(note_constexpr_lshift_discards) +DIAG_NAME_INDEX(note_constexpr_lshift_of_negative) +DIAG_NAME_INDEX(note_constexpr_ltor_incomplete_type) +DIAG_NAME_INDEX(note_constexpr_ltor_mutable) +DIAG_NAME_INDEX(note_constexpr_ltor_non_const_int) +DIAG_NAME_INDEX(note_constexpr_ltor_non_constexpr) +DIAG_NAME_INDEX(note_constexpr_memcpy_incomplete_type) +DIAG_NAME_INDEX(note_constexpr_memcpy_nontrivial) +DIAG_NAME_INDEX(note_constexpr_memcpy_null) +DIAG_NAME_INDEX(note_constexpr_memcpy_overlap) +DIAG_NAME_INDEX(note_constexpr_memcpy_type_pun) +DIAG_NAME_INDEX(note_constexpr_memcpy_unsupported) +DIAG_NAME_INDEX(note_constexpr_modify_const_type) +DIAG_NAME_INDEX(note_constexpr_modify_global) +DIAG_NAME_INDEX(note_constexpr_negative_shift) +DIAG_NAME_INDEX(note_constexpr_no_return) +DIAG_NAME_INDEX(note_constexpr_non_global) +DIAG_NAME_INDEX(note_constexpr_nonliteral) +DIAG_NAME_INDEX(note_constexpr_null_subobject) +DIAG_NAME_INDEX(note_constexpr_overflow) +DIAG_NAME_INDEX(note_constexpr_past_end) +DIAG_NAME_INDEX(note_constexpr_past_end_subobject) +DIAG_NAME_INDEX(note_constexpr_pointer_comparison_base_classes) +DIAG_NAME_INDEX(note_constexpr_pointer_comparison_base_field) +DIAG_NAME_INDEX(note_constexpr_pointer_comparison_differing_access) +DIAG_NAME_INDEX(note_constexpr_pointer_subtraction_not_same_array) +DIAG_NAME_INDEX(note_constexpr_pointer_subtraction_zero_size) +DIAG_NAME_INDEX(note_constexpr_step_limit_exceeded) +DIAG_NAME_INDEX(note_constexpr_stmt_expr_unsupported) +DIAG_NAME_INDEX(note_constexpr_temporary_here) +DIAG_NAME_INDEX(note_constexpr_this) +DIAG_NAME_INDEX(note_constexpr_typeid_polymorphic) +DIAG_NAME_INDEX(note_constexpr_uninitialized) +DIAG_NAME_INDEX(note_constexpr_unsized_array_indexed) +DIAG_NAME_INDEX(note_constexpr_unsupported_unsized_array) +DIAG_NAME_INDEX(note_constexpr_use_uninit_reference) +DIAG_NAME_INDEX(note_constexpr_var_init_non_constant) +DIAG_NAME_INDEX(note_constexpr_virtual_base) +DIAG_NAME_INDEX(note_constexpr_virtual_base_here) +DIAG_NAME_INDEX(note_constexpr_virtual_call) +DIAG_NAME_INDEX(note_constexpr_void_comparison) +DIAG_NAME_INDEX(note_conv_function_declared_at) +DIAG_NAME_INDEX(note_convert_inline_to_static) +DIAG_NAME_INDEX(note_coroutine_promise_call_implicitly_required) +DIAG_NAME_INDEX(note_coroutine_promise_implicit_await_transform_required_here) +DIAG_NAME_INDEX(note_coroutine_promise_suspend_implicitly_required) +DIAG_NAME_INDEX(note_covariant_thunk) +DIAG_NAME_INDEX(note_cuda_conflicting_device_function_declared_here) +DIAG_NAME_INDEX(note_cuda_ovl_candidate_target_mismatch) +DIAG_NAME_INDEX(note_cxx2a_compat_utf8_string_remove_u8) +DIAG_NAME_INDEX(note_decl_hiding_tag_type) +DIAG_NAME_INDEX(note_decl_unguarded_availability_silence) +DIAG_NAME_INDEX(note_declaration_not_a_prototype) +DIAG_NAME_INDEX(note_declare_parameter_strong) +DIAG_NAME_INDEX(note_declared_at) +DIAG_NAME_INDEX(note_declared_coroutine_here) +DIAG_NAME_INDEX(note_declared_nonnull) +DIAG_NAME_INDEX(note_declared_required_constant_init_here) +DIAG_NAME_INDEX(note_deduced_template_arg_substitution_here) +DIAG_NAME_INDEX(note_deduction_guide_access) +DIAG_NAME_INDEX(note_deduction_guide_template_access) +DIAG_NAME_INDEX(note_default_arg_instantiation_here) +DIAG_NAME_INDEX(note_default_argument_declared_here) +DIAG_NAME_INDEX(note_default_function_arg_instantiation_here) +DIAG_NAME_INDEX(note_defined_here) +DIAG_NAME_INDEX(note_delete_conversion) +DIAG_NAME_INDEX(note_delete_non_virtual) +DIAG_NAME_INDEX(note_deleted_assign_field) +DIAG_NAME_INDEX(note_deleted_copy_ctor_rvalue_reference) +DIAG_NAME_INDEX(note_deleted_copy_user_declared_move) +DIAG_NAME_INDEX(note_deleted_default_ctor_all_const) +DIAG_NAME_INDEX(note_deleted_default_ctor_uninit_field) +DIAG_NAME_INDEX(note_deleted_dtor_no_operator_delete) +DIAG_NAME_INDEX(note_deleted_special_member_class_subobject) +DIAG_NAME_INDEX(note_deleted_type_mismatch) +DIAG_NAME_INDEX(note_dependent_function_template_spec_discard_reason) +DIAG_NAME_INDEX(note_dependent_non_type_default_arg_in_partial_spec) +DIAG_NAME_INDEX(note_dependent_var_use) +DIAG_NAME_INDEX(note_deprecated_this_capture) +DIAG_NAME_INDEX(note_destructor_type_here) +DIAG_NAME_INDEX(note_doc_block_command_previous) +DIAG_NAME_INDEX(note_doc_block_command_previous_alias) +DIAG_NAME_INDEX(note_doc_html_end_tag) +DIAG_NAME_INDEX(note_doc_html_tag_started_here) +DIAG_NAME_INDEX(note_doc_param_name_suggestion) +DIAG_NAME_INDEX(note_doc_param_previous) +DIAG_NAME_INDEX(note_doc_tparam_name_suggestion) +DIAG_NAME_INDEX(note_doc_tparam_previous) +DIAG_NAME_INDEX(note_drv_address_sanitizer_debug_runtime) +DIAG_NAME_INDEX(note_drv_command_failed_diag_msg) +DIAG_NAME_INDEX(note_drv_config_file_searched_in) +DIAG_NAME_INDEX(note_drv_t_option_is_global) +DIAG_NAME_INDEX(note_drv_use_standard) +DIAG_NAME_INDEX(note_drv_verify_prefix_spelling) +DIAG_NAME_INDEX(note_due_to_dllexported_class) +DIAG_NAME_INDEX(note_duplicate_case_prev) +DIAG_NAME_INDEX(note_duplicate_element) +DIAG_NAME_INDEX(note_empty_body_on_separate_line) +DIAG_NAME_INDEX(note_empty_parens_default_ctor) +DIAG_NAME_INDEX(note_empty_parens_function_call) +DIAG_NAME_INDEX(note_empty_parens_zero_initialize) +DIAG_NAME_INDEX(note_enters_block_captures_cxx_obj) +DIAG_NAME_INDEX(note_enters_block_captures_non_trivial_c_struct) +DIAG_NAME_INDEX(note_enters_block_captures_strong) +DIAG_NAME_INDEX(note_enters_block_captures_weak) +DIAG_NAME_INDEX(note_entity_declared_at) +DIAG_NAME_INDEX(note_enum_specialized_here) +DIAG_NAME_INDEX(note_equality_comparison_silence) +DIAG_NAME_INDEX(note_equality_comparison_to_assign) +DIAG_NAME_INDEX(note_equivalent_internal_linkage_decl) +DIAG_NAME_INDEX(note_evaluate_comparison_first) +DIAG_NAME_INDEX(note_evaluating_exception_spec_here) +DIAG_NAME_INDEX(note_exception_spec_deprecated) +DIAG_NAME_INDEX(note_exits___block) +DIAG_NAME_INDEX(note_exits_block_captures_cxx_obj) +DIAG_NAME_INDEX(note_exits_block_captures_non_trivial_c_struct) +DIAG_NAME_INDEX(note_exits_block_captures_strong) +DIAG_NAME_INDEX(note_exits_block_captures_weak) +DIAG_NAME_INDEX(note_exits_cleanup) +DIAG_NAME_INDEX(note_exits_cxx_catch) +DIAG_NAME_INDEX(note_exits_cxx_try) +DIAG_NAME_INDEX(note_exits_dtor) +DIAG_NAME_INDEX(note_exits_objc_autoreleasepool) +DIAG_NAME_INDEX(note_exits_objc_catch) +DIAG_NAME_INDEX(note_exits_objc_finally) +DIAG_NAME_INDEX(note_exits_objc_strong) +DIAG_NAME_INDEX(note_exits_objc_synchronized) +DIAG_NAME_INDEX(note_exits_objc_try) +DIAG_NAME_INDEX(note_exits_objc_weak) +DIAG_NAME_INDEX(note_exits_seh_except) +DIAG_NAME_INDEX(note_exits_seh_finally) +DIAG_NAME_INDEX(note_exits_seh_try) +DIAG_NAME_INDEX(note_exits_temporary_dtor) +DIAG_NAME_INDEX(note_explicit_ctor_deduction_guide_here) +DIAG_NAME_INDEX(note_explicit_instantiation_candidate) +DIAG_NAME_INDEX(note_explicit_instantiation_definition_here) +DIAG_NAME_INDEX(note_explicit_instantiation_here) +DIAG_NAME_INDEX(note_explicit_specialization_declared_here) +DIAG_NAME_INDEX(note_explicit_template_arg_substitution_here) +DIAG_NAME_INDEX(note_explicit_template_spec_does_not_need_header) +DIAG_NAME_INDEX(note_expr_divide_by_zero) +DIAG_NAME_INDEX(note_extern_c_begins_here) +DIAG_NAME_INDEX(note_extern_c_global_conflict) +DIAG_NAME_INDEX(note_extra_comma_message_arg) +DIAG_NAME_INDEX(note_fallthrough_insert_semi_fixit) +DIAG_NAME_INDEX(note_fe_backend_frame_larger_than) +DIAG_NAME_INDEX(note_fe_backend_invalid_loc) +DIAG_NAME_INDEX(note_fe_backend_plugin) +DIAG_NAME_INDEX(note_fe_inline_asm) +DIAG_NAME_INDEX(note_fe_inline_asm_here) +DIAG_NAME_INDEX(note_field_designator_found) +DIAG_NAME_INDEX(note_final_overrider) +DIAG_NAME_INDEX(note_first_module_difference) +DIAG_NAME_INDEX(note_fixit_applied) +DIAG_NAME_INDEX(note_fixit_failed) +DIAG_NAME_INDEX(note_fixit_in_macro) +DIAG_NAME_INDEX(note_fixit_unfixed_error) +DIAG_NAME_INDEX(note_flexible_array_member) +DIAG_NAME_INDEX(note_for_range_begin_end) +DIAG_NAME_INDEX(note_for_range_invalid_iterator) +DIAG_NAME_INDEX(note_for_range_member_begin_end_ignored) +DIAG_NAME_INDEX(note_force_empty_selector_name) +DIAG_NAME_INDEX(note_format_fix_specifier) +DIAG_NAME_INDEX(note_format_security_fixit) +DIAG_NAME_INDEX(note_format_string_defined) +DIAG_NAME_INDEX(note_forward_class) +DIAG_NAME_INDEX(note_forward_declaration) +DIAG_NAME_INDEX(note_forward_template_decl) +DIAG_NAME_INDEX(note_found_mutex_near_match) +DIAG_NAME_INDEX(note_from_diagnose_if) +DIAG_NAME_INDEX(note_function_style_cast_add_parentheses) +DIAG_NAME_INDEX(note_function_suggestion) +DIAG_NAME_INDEX(note_function_template_deduction_instantiation_here) +DIAG_NAME_INDEX(note_function_template_spec_here) +DIAG_NAME_INDEX(note_function_template_spec_matched) +DIAG_NAME_INDEX(note_function_to_function_call) +DIAG_NAME_INDEX(note_function_warning_silence) +DIAG_NAME_INDEX(note_getter_unavailable) +DIAG_NAME_INDEX(note_goto_ms_asm_label) +DIAG_NAME_INDEX(note_guarded_by_declared_here) +DIAG_NAME_INDEX(note_header_guard) +DIAG_NAME_INDEX(note_hidden_overloaded_virtual_declared_here) +DIAG_NAME_INDEX(note_hidden_tag) +DIAG_NAME_INDEX(note_hiding_object) +DIAG_NAME_INDEX(note_ice_conversion_here) +DIAG_NAME_INDEX(note_illegal_field_declared_here) +DIAG_NAME_INDEX(note_implementation_declared) +DIAG_NAME_INDEX(note_implemented_by_class) +DIAG_NAME_INDEX(note_implicit_delete_this_in_destructor_here) +DIAG_NAME_INDEX(note_implicit_member_target_infer_collision) +DIAG_NAME_INDEX(note_implicit_param_decl) +DIAG_NAME_INDEX(note_implicit_top_level_module_import_here) +DIAG_NAME_INDEX(note_implicitly_deleted) +DIAG_NAME_INDEX(note_imported_by_pch_module_not_found) +DIAG_NAME_INDEX(note_in_binding_decl_init) +DIAG_NAME_INDEX(note_in_class_initializer_float_type_cxx11) +DIAG_NAME_INDEX(note_in_class_initializer_not_yet_parsed) +DIAG_NAME_INDEX(note_in_declaration_of_implicit_special_member) +DIAG_NAME_INDEX(note_in_for_range) +DIAG_NAME_INDEX(note_in_omitted_aggregate_initializer) +DIAG_NAME_INDEX(note_in_reference_temporary_list_initializer) +DIAG_NAME_INDEX(note_include_header_or_declare) +DIAG_NAME_INDEX(note_incompatible_analyzer_plugin_api) +DIAG_NAME_INDEX(note_incomplete_class_and_qualified_id) +DIAG_NAME_INDEX(note_indirect_goto_target) +DIAG_NAME_INDEX(note_indirection_through_null) +DIAG_NAME_INDEX(note_inequality_comparison_to_or_assign) +DIAG_NAME_INDEX(note_init_list_at_beginning_of_macro_argument) +DIAG_NAME_INDEX(note_init_list_narrowing_silence) +DIAG_NAME_INDEX(note_init_with_default_member_initalizer) +DIAG_NAME_INDEX(note_insert_break_fixit) +DIAG_NAME_INDEX(note_insert_fallthrough_fixit) +DIAG_NAME_INDEX(note_inst_declaration_hint) +DIAG_NAME_INDEX(note_instantiation_contexts_suppressed) +DIAG_NAME_INDEX(note_instantiation_required_here) +DIAG_NAME_INDEX(note_invalid_subexpr_in_const_expr) +DIAG_NAME_INDEX(note_it_delegates_to) +DIAG_NAME_INDEX(note_ivar_decl) +DIAG_NAME_INDEX(note_lambda_decl) +DIAG_NAME_INDEX(note_lambda_to_block_conv) +DIAG_NAME_INDEX(note_lifetime_extending_member_declared_here) +DIAG_NAME_INDEX(note_local_decl_close_match) +DIAG_NAME_INDEX(note_local_decl_close_param_match) +DIAG_NAME_INDEX(note_local_var_initializer) +DIAG_NAME_INDEX(note_lock_exclusive_and_shared) +DIAG_NAME_INDEX(note_locked_here) +DIAG_NAME_INDEX(note_logical_instead_of_bitwise_change_operator) +DIAG_NAME_INDEX(note_logical_instead_of_bitwise_remove_constant) +DIAG_NAME_INDEX(note_logical_not_fix) +DIAG_NAME_INDEX(note_logical_not_silence_with_parens) +DIAG_NAME_INDEX(note_loop_iteration_here) +DIAG_NAME_INDEX(note_macro_here) +DIAG_NAME_INDEX(note_main_change_return_type) +DIAG_NAME_INDEX(note_main_remove_noreturn) +DIAG_NAME_INDEX(note_matching) +DIAG_NAME_INDEX(note_meant_to_use_typename) +DIAG_NAME_INDEX(note_member_declared_at) +DIAG_NAME_INDEX(note_member_declared_here) +DIAG_NAME_INDEX(note_member_def_close_const_match) +DIAG_NAME_INDEX(note_member_def_close_match) +DIAG_NAME_INDEX(note_member_def_close_param_match) +DIAG_NAME_INDEX(note_member_first_declared_here) +DIAG_NAME_INDEX(note_member_reference_arrow_from_operator_arrow) +DIAG_NAME_INDEX(note_member_synthesized_at) +DIAG_NAME_INDEX(note_memsize_comparison_cast_silence) +DIAG_NAME_INDEX(note_memsize_comparison_paren) +DIAG_NAME_INDEX(note_method_declared_at) +DIAG_NAME_INDEX(note_method_return_type_change) +DIAG_NAME_INDEX(note_method_sent_forward_class) +DIAG_NAME_INDEX(note_misplaced_ellipsis_vararg_add_comma) +DIAG_NAME_INDEX(note_misplaced_ellipsis_vararg_add_ellipsis) +DIAG_NAME_INDEX(note_misplaced_ellipsis_vararg_existing_ellipsis) +DIAG_NAME_INDEX(note_missing_end_of_definition_before) +DIAG_NAME_INDEX(note_missing_selector_name) +DIAG_NAME_INDEX(note_mmap_add_framework_keyword) +DIAG_NAME_INDEX(note_mmap_lbrace_match) +DIAG_NAME_INDEX(note_mmap_lsquare_match) +DIAG_NAME_INDEX(note_mmap_prev_definition) +DIAG_NAME_INDEX(note_mmap_rename_top_level_private_module) +DIAG_NAME_INDEX(note_module_cache_path) +DIAG_NAME_INDEX(note_module_def_undef_here) +DIAG_NAME_INDEX(note_module_file_imported_by) +DIAG_NAME_INDEX(note_module_import_here) +DIAG_NAME_INDEX(note_module_import_not_at_top_level) +DIAG_NAME_INDEX(note_module_odr_violation_definition_data) +DIAG_NAME_INDEX(note_module_odr_violation_different_definitions) +DIAG_NAME_INDEX(note_module_odr_violation_enum) +DIAG_NAME_INDEX(note_module_odr_violation_function) +DIAG_NAME_INDEX(note_module_odr_violation_mismatch_decl) +DIAG_NAME_INDEX(note_module_odr_violation_mismatch_decl_diff) +DIAG_NAME_INDEX(note_module_odr_violation_mismatch_decl_unknown) +DIAG_NAME_INDEX(note_module_odr_violation_no_possible_decls) +DIAG_NAME_INDEX(note_module_odr_violation_possible_decl) +DIAG_NAME_INDEX(note_module_odr_violation_template_parameter) +DIAG_NAME_INDEX(note_mt_message) +DIAG_NAME_INDEX(note_multiversioning_caused_here) +DIAG_NAME_INDEX(note_namespace_defined_here) +DIAG_NAME_INDEX(note_neon_vector_initializer_non_portable) +DIAG_NAME_INDEX(note_neon_vector_initializer_non_portable_q) +DIAG_NAME_INDEX(note_next_field_declaration) +DIAG_NAME_INDEX(note_next_ivar_declaration) +DIAG_NAME_INDEX(note_non_deducible_parameter) +DIAG_NAME_INDEX(note_non_instantiated_member_here) +DIAG_NAME_INDEX(note_non_literal_base_class) +DIAG_NAME_INDEX(note_non_literal_field) +DIAG_NAME_INDEX(note_non_literal_incomplete) +DIAG_NAME_INDEX(note_non_literal_lambda) +DIAG_NAME_INDEX(note_non_literal_no_constexpr_ctors) +DIAG_NAME_INDEX(note_non_literal_nontrivial_dtor) +DIAG_NAME_INDEX(note_non_literal_user_provided_dtor) +DIAG_NAME_INDEX(note_non_literal_virtual_base) +DIAG_NAME_INDEX(note_non_template_in_template_id_found) +DIAG_NAME_INDEX(note_non_usual_function_declared_here) +DIAG_NAME_INDEX(note_nontemplate_decl_here) +DIAG_NAME_INDEX(note_nontrivial_default_arg) +DIAG_NAME_INDEX(note_nontrivial_field) +DIAG_NAME_INDEX(note_nontrivial_has_virtual) +DIAG_NAME_INDEX(note_nontrivial_in_class_init) +DIAG_NAME_INDEX(note_nontrivial_no_copy) +DIAG_NAME_INDEX(note_nontrivial_no_def_ctor) +DIAG_NAME_INDEX(note_nontrivial_objc_ownership) +DIAG_NAME_INDEX(note_nontrivial_param_type) +DIAG_NAME_INDEX(note_nontrivial_subobject) +DIAG_NAME_INDEX(note_nontrivial_user_provided) +DIAG_NAME_INDEX(note_nontrivial_variadic) +DIAG_NAME_INDEX(note_nontrivial_virtual_dtor) +DIAG_NAME_INDEX(note_noreturn_missing_first_decl) +DIAG_NAME_INDEX(note_not_found_by_two_phase_lookup) +DIAG_NAME_INDEX(note_nullability_fix_it) +DIAG_NAME_INDEX(note_nullability_here) +DIAG_NAME_INDEX(note_nullability_type_specifier) +DIAG_NAME_INDEX(note_objc_circular_container_declared_here) +DIAG_NAME_INDEX(note_objc_container_start) +DIAG_NAME_INDEX(note_objc_designated_init_marked_here) +DIAG_NAME_INDEX(note_objc_literal_comparison_isequal) +DIAG_NAME_INDEX(note_objc_literal_method_param) +DIAG_NAME_INDEX(note_objc_literal_method_return) +DIAG_NAME_INDEX(note_objc_needs_superclass) +DIAG_NAME_INDEX(note_objc_type_param_here) +DIAG_NAME_INDEX(note_objc_unsafe_perform_selector_method_declared_here) +DIAG_NAME_INDEX(note_odr_base) +DIAG_NAME_INDEX(note_odr_bit_field) +DIAG_NAME_INDEX(note_odr_defined_here) +DIAG_NAME_INDEX(note_odr_enumerator) +DIAG_NAME_INDEX(note_odr_field) +DIAG_NAME_INDEX(note_odr_field_name) +DIAG_NAME_INDEX(note_odr_friend) +DIAG_NAME_INDEX(note_odr_missing_base) +DIAG_NAME_INDEX(note_odr_missing_enumerator) +DIAG_NAME_INDEX(note_odr_missing_field) +DIAG_NAME_INDEX(note_odr_missing_friend) +DIAG_NAME_INDEX(note_odr_not_bit_field) +DIAG_NAME_INDEX(note_odr_number_of_bases) +DIAG_NAME_INDEX(note_odr_objc_method_here) +DIAG_NAME_INDEX(note_odr_objc_missing_superclass) +DIAG_NAME_INDEX(note_odr_objc_property_impl_kind) +DIAG_NAME_INDEX(note_odr_objc_superclass) +DIAG_NAME_INDEX(note_odr_objc_synthesize_ivar_here) +DIAG_NAME_INDEX(note_odr_parameter_pack_non_pack) +DIAG_NAME_INDEX(note_odr_tag_kind_here) +DIAG_NAME_INDEX(note_odr_template_parameter_here) +DIAG_NAME_INDEX(note_odr_template_parameter_list) +DIAG_NAME_INDEX(note_odr_value_here) +DIAG_NAME_INDEX(note_odr_virtual_base) +DIAG_NAME_INDEX(note_omp_atomic_capture) +DIAG_NAME_INDEX(note_omp_atomic_previous_clause) +DIAG_NAME_INDEX(note_omp_atomic_read_write) +DIAG_NAME_INDEX(note_omp_atomic_update) +DIAG_NAME_INDEX(note_omp_collapse_ordered_expr) +DIAG_NAME_INDEX(note_omp_conversion_here) +DIAG_NAME_INDEX(note_omp_critical_hint_here) +DIAG_NAME_INDEX(note_omp_critical_no_hint) +DIAG_NAME_INDEX(note_omp_explicit_dsa) +DIAG_NAME_INDEX(note_omp_implicit_dsa) +DIAG_NAME_INDEX(note_omp_invalid_length_on_this_ptr_mapping) +DIAG_NAME_INDEX(note_omp_invalid_lower_bound_on_this_ptr_mapping) +DIAG_NAME_INDEX(note_omp_invalid_subscript_on_this_ptr_map) +DIAG_NAME_INDEX(note_omp_loop_cond_requres_compatible_incr) +DIAG_NAME_INDEX(note_omp_nested_statement_here) +DIAG_NAME_INDEX(note_omp_nested_teams_construct_here) +DIAG_NAME_INDEX(note_omp_nowait_clause_here) +DIAG_NAME_INDEX(note_omp_ordered_param) +DIAG_NAME_INDEX(note_omp_predetermined_dsa) +DIAG_NAME_INDEX(note_omp_previous_critical_region) +DIAG_NAME_INDEX(note_omp_previous_grainsize_num_tasks) +DIAG_NAME_INDEX(note_omp_previous_named_if_clause) +DIAG_NAME_INDEX(note_omp_previous_reduction_identifier) +DIAG_NAME_INDEX(note_omp_referenced) +DIAG_NAME_INDEX(note_omp_requires_previous_clause) +DIAG_NAME_INDEX(note_omp_task_predetermined_firstprivate_here) +DIAG_NAME_INDEX(note_opencl_typedef_access_qualifier) +DIAG_NAME_INDEX(note_operator_arrow_depth) +DIAG_NAME_INDEX(note_operator_arrow_here) +DIAG_NAME_INDEX(note_operator_arrows_suppressed) +DIAG_NAME_INDEX(note_overridden_marked_noescape) +DIAG_NAME_INDEX(note_overridden_method) +DIAG_NAME_INDEX(note_overridden_virtual_function) +DIAG_NAME_INDEX(note_ovl_builtin_binary_candidate) +DIAG_NAME_INDEX(note_ovl_builtin_unary_candidate) +DIAG_NAME_INDEX(note_ovl_candidate) +DIAG_NAME_INDEX(note_ovl_candidate_arity) +DIAG_NAME_INDEX(note_ovl_candidate_arity_one) +DIAG_NAME_INDEX(note_ovl_candidate_bad_addrspace) +DIAG_NAME_INDEX(note_ovl_candidate_bad_arc_conv) +DIAG_NAME_INDEX(note_ovl_candidate_bad_base_to_derived_conv) +DIAG_NAME_INDEX(note_ovl_candidate_bad_conv) +DIAG_NAME_INDEX(note_ovl_candidate_bad_conv_incomplete) +DIAG_NAME_INDEX(note_ovl_candidate_bad_cvr) +DIAG_NAME_INDEX(note_ovl_candidate_bad_cvr_this) +DIAG_NAME_INDEX(note_ovl_candidate_bad_deduction) +DIAG_NAME_INDEX(note_ovl_candidate_bad_gc) +DIAG_NAME_INDEX(note_ovl_candidate_bad_list_argument) +DIAG_NAME_INDEX(note_ovl_candidate_bad_lvalue) +DIAG_NAME_INDEX(note_ovl_candidate_bad_overload) +DIAG_NAME_INDEX(note_ovl_candidate_bad_ownership) +DIAG_NAME_INDEX(note_ovl_candidate_bad_target) +DIAG_NAME_INDEX(note_ovl_candidate_bad_unaligned) +DIAG_NAME_INDEX(note_ovl_candidate_deduced_mismatch) +DIAG_NAME_INDEX(note_ovl_candidate_deleted) +DIAG_NAME_INDEX(note_ovl_candidate_disabled_by_enable_if) +DIAG_NAME_INDEX(note_ovl_candidate_disabled_by_extension) +DIAG_NAME_INDEX(note_ovl_candidate_disabled_by_function_cond_attr) +DIAG_NAME_INDEX(note_ovl_candidate_disabled_by_requirement) +DIAG_NAME_INDEX(note_ovl_candidate_explicit_arg_mismatch_named) +DIAG_NAME_INDEX(note_ovl_candidate_explicit_arg_mismatch_unnamed) +DIAG_NAME_INDEX(note_ovl_candidate_has_pass_object_size_params) +DIAG_NAME_INDEX(note_ovl_candidate_illegal_constructor) +DIAG_NAME_INDEX(note_ovl_candidate_incomplete_deduction) +DIAG_NAME_INDEX(note_ovl_candidate_incomplete_deduction_pack) +DIAG_NAME_INDEX(note_ovl_candidate_inconsistent_deduction) +DIAG_NAME_INDEX(note_ovl_candidate_inconsistent_deduction_types) +DIAG_NAME_INDEX(note_ovl_candidate_inherited_constructor) +DIAG_NAME_INDEX(note_ovl_candidate_inherited_constructor_slice) +DIAG_NAME_INDEX(note_ovl_candidate_instantiation_depth) +DIAG_NAME_INDEX(note_ovl_candidate_non_deduced_mismatch) +DIAG_NAME_INDEX(note_ovl_candidate_non_deduced_mismatch_qualified) +DIAG_NAME_INDEX(note_ovl_candidate_substitution_failure) +DIAG_NAME_INDEX(note_ovl_candidate_underqualified) +DIAG_NAME_INDEX(note_ovl_surrogate_cand) +DIAG_NAME_INDEX(note_ovl_too_many_candidates) +DIAG_NAME_INDEX(note_ownership_returns_index_mismatch) +DIAG_NAME_INDEX(note_parameter_here) +DIAG_NAME_INDEX(note_parameter_named_here) +DIAG_NAME_INDEX(note_parameter_pack_here) +DIAG_NAME_INDEX(note_parameter_type) +DIAG_NAME_INDEX(note_partial_availability_specified_here) +DIAG_NAME_INDEX(note_partial_spec_match) +DIAG_NAME_INDEX(note_partial_spec_not_more_specialized_than_primary) +DIAG_NAME_INDEX(note_partial_specialization_declared_here) +DIAG_NAME_INDEX(note_pch_rebuild_required) +DIAG_NAME_INDEX(note_pch_required_by) +DIAG_NAME_INDEX(note_performs_forbidden_arc_conversion) +DIAG_NAME_INDEX(note_possibility) +DIAG_NAME_INDEX(note_possible_target_of_call) +DIAG_NAME_INDEX(note_pp_ambiguous_macro_chosen) +DIAG_NAME_INDEX(note_pp_ambiguous_macro_other) +DIAG_NAME_INDEX(note_pp_framework_without_header) +DIAG_NAME_INDEX(note_pp_module_begin_here) +DIAG_NAME_INDEX(note_pragma_attribute_applied_decl_here) +DIAG_NAME_INDEX(note_pragma_attribute_namespace_on_attribute) +DIAG_NAME_INDEX(note_pragma_attribute_region_ends_here) +DIAG_NAME_INDEX(note_pragma_attribute_use_attribute_kw) +DIAG_NAME_INDEX(note_pragma_entered_here) +DIAG_NAME_INDEX(note_pragma_pack_here) +DIAG_NAME_INDEX(note_pragma_pack_pop_instead_reset) +DIAG_NAME_INDEX(note_precedence_bitwise_first) +DIAG_NAME_INDEX(note_precedence_conditional_first) +DIAG_NAME_INDEX(note_precedence_silence) +DIAG_NAME_INDEX(note_prev_module_declaration) +DIAG_NAME_INDEX(note_prev_module_definition) +DIAG_NAME_INDEX(note_prev_module_definition_from_ast_file) +DIAG_NAME_INDEX(note_prev_partial_spec_here) +DIAG_NAME_INDEX(note_previous_access_declaration) +DIAG_NAME_INDEX(note_previous_attribute) +DIAG_NAME_INDEX(note_previous_builtin_declaration) +DIAG_NAME_INDEX(note_previous_decl) +DIAG_NAME_INDEX(note_previous_declaration) +DIAG_NAME_INDEX(note_previous_default_assoc) +DIAG_NAME_INDEX(note_previous_definition) +DIAG_NAME_INDEX(note_previous_exception_handler) +DIAG_NAME_INDEX(note_previous_explicit_instantiation) +DIAG_NAME_INDEX(note_previous_implicit_declaration) +DIAG_NAME_INDEX(note_previous_initializer) +DIAG_NAME_INDEX(note_previous_ms_inheritance) +DIAG_NAME_INDEX(note_previous_namespace_alias) +DIAG_NAME_INDEX(note_previous_template_specialization) +DIAG_NAME_INDEX(note_previous_use) +DIAG_NAME_INDEX(note_previous_uuid) +DIAG_NAME_INDEX(note_printf_c_str) +DIAG_NAME_INDEX(note_prior_template_arg_substitution) +DIAG_NAME_INDEX(note_private_extern) +DIAG_NAME_INDEX(note_private_top_level_defined) +DIAG_NAME_INDEX(note_property_attribute) +DIAG_NAME_INDEX(note_property_declare) +DIAG_NAME_INDEX(note_property_synthesize) +DIAG_NAME_INDEX(note_protected_by___block) +DIAG_NAME_INDEX(note_protected_by_cleanup) +DIAG_NAME_INDEX(note_protected_by_constexpr_if) +DIAG_NAME_INDEX(note_protected_by_cxx_catch) +DIAG_NAME_INDEX(note_protected_by_cxx_try) +DIAG_NAME_INDEX(note_protected_by_if_available) +DIAG_NAME_INDEX(note_protected_by_non_trivial_c_struct_init) +DIAG_NAME_INDEX(note_protected_by_objc_autoreleasepool) +DIAG_NAME_INDEX(note_protected_by_objc_catch) +DIAG_NAME_INDEX(note_protected_by_objc_fast_enumeration) +DIAG_NAME_INDEX(note_protected_by_objc_finally) +DIAG_NAME_INDEX(note_protected_by_objc_strong_init) +DIAG_NAME_INDEX(note_protected_by_objc_synchronized) +DIAG_NAME_INDEX(note_protected_by_objc_try) +DIAG_NAME_INDEX(note_protected_by_objc_weak_init) +DIAG_NAME_INDEX(note_protected_by_seh_except) +DIAG_NAME_INDEX(note_protected_by_seh_finally) +DIAG_NAME_INDEX(note_protected_by_seh_try) +DIAG_NAME_INDEX(note_protected_by_variable_init) +DIAG_NAME_INDEX(note_protected_by_variable_non_pod) +DIAG_NAME_INDEX(note_protected_by_variable_nontriv_destructor) +DIAG_NAME_INDEX(note_protected_by_vla) +DIAG_NAME_INDEX(note_protected_by_vla_type_alias) +DIAG_NAME_INDEX(note_protected_by_vla_typedef) +DIAG_NAME_INDEX(note_protocol_decl) +DIAG_NAME_INDEX(note_protocol_decl_undefined) +DIAG_NAME_INDEX(note_protocol_method) +DIAG_NAME_INDEX(note_protocol_property_declare) +DIAG_NAME_INDEX(note_pure_qualified_call_kext) +DIAG_NAME_INDEX(note_pure_virtual_function) +DIAG_NAME_INDEX(note_raii_guard_add_name) +DIAG_NAME_INDEX(note_receiver_class_declared) +DIAG_NAME_INDEX(note_receiver_expr_here) +DIAG_NAME_INDEX(note_receiver_is_id) +DIAG_NAME_INDEX(note_redefinition_include_same_file) +DIAG_NAME_INDEX(note_redefinition_modules_same_file) +DIAG_NAME_INDEX(note_ref_or_ptr_member_declared_here) +DIAG_NAME_INDEX(note_refconst_member_not_initialized) +DIAG_NAME_INDEX(note_reference_is_return_value) +DIAG_NAME_INDEX(note_referenced_class_template) +DIAG_NAME_INDEX(note_reinterpret_updowncast_use_static) +DIAG_NAME_INDEX(note_related_result_type_explicit) +DIAG_NAME_INDEX(note_related_result_type_family) +DIAG_NAME_INDEX(note_related_result_type_inferred) +DIAG_NAME_INDEX(note_related_result_type_overridden) +DIAG_NAME_INDEX(note_remove_abs) +DIAG_NAME_INDEX(note_remove_max_call) +DIAG_NAME_INDEX(note_remove_move) +DIAG_NAME_INDEX(note_remove_parens_for_variable_declaration) +DIAG_NAME_INDEX(note_replace_abs_function) +DIAG_NAME_INDEX(note_riscv_repeated_interrupt_attribute) +DIAG_NAME_INDEX(note_second_module_difference) +DIAG_NAME_INDEX(note_sentinel_here) +DIAG_NAME_INDEX(note_shadow_field) +DIAG_NAME_INDEX(note_silence_aligned_allocation_unavailable) +DIAG_NAME_INDEX(note_specialized_decl) +DIAG_NAME_INDEX(note_specialized_entity) +DIAG_NAME_INDEX(note_string_plus_scalar_silence) +DIAG_NAME_INDEX(note_strlcpycat_wrong_size) +DIAG_NAME_INDEX(note_strncat_wrong_size) +DIAG_NAME_INDEX(note_struct_class_suggestion) +DIAG_NAME_INDEX(note_suggest_disabling_all_checkers) +DIAG_NAME_INDEX(note_suggest_parens_for_macro) +DIAG_NAME_INDEX(note_suppress_ctad_maybe_unsupported) +DIAG_NAME_INDEX(note_suppressed_class_declare) +DIAG_NAME_INDEX(note_surrounding_namespace_ends_here) +DIAG_NAME_INDEX(note_surrounding_namespace_starts_here) +DIAG_NAME_INDEX(note_suspicious_bzero_size_silence) +DIAG_NAME_INDEX(note_suspicious_sizeof_memset_silence) +DIAG_NAME_INDEX(note_switch_conversion) +DIAG_NAME_INDEX(note_template_arg_internal_object) +DIAG_NAME_INDEX(note_template_arg_refers_here) +DIAG_NAME_INDEX(note_template_arg_refers_here_func) +DIAG_NAME_INDEX(note_template_class_explicit_specialization_was_here) +DIAG_NAME_INDEX(note_template_class_instantiation_here) +DIAG_NAME_INDEX(note_template_class_instantiation_was_here) +DIAG_NAME_INDEX(note_template_decl_here) +DIAG_NAME_INDEX(note_template_declared_here) +DIAG_NAME_INDEX(note_template_default_arg_checking) +DIAG_NAME_INDEX(note_template_enum_def_here) +DIAG_NAME_INDEX(note_template_exception_spec_instantiation_here) +DIAG_NAME_INDEX(note_template_kw_refers_to_non_template) +DIAG_NAME_INDEX(note_template_member_class_here) +DIAG_NAME_INDEX(note_template_member_function_here) +DIAG_NAME_INDEX(note_template_nontype_parm_different_type) +DIAG_NAME_INDEX(note_template_nontype_parm_prev_declaration) +DIAG_NAME_INDEX(note_template_nsdmi_here) +DIAG_NAME_INDEX(note_template_param_different_kind) +DIAG_NAME_INDEX(note_template_param_here) +DIAG_NAME_INDEX(note_template_param_list_different_arity) +DIAG_NAME_INDEX(note_template_param_prev_default_arg) +DIAG_NAME_INDEX(note_template_parameter_pack_here) +DIAG_NAME_INDEX(note_template_parameter_pack_non_pack) +DIAG_NAME_INDEX(note_template_prev_declaration) +DIAG_NAME_INDEX(note_template_recursion_depth) +DIAG_NAME_INDEX(note_template_static_data_member_def_here) +DIAG_NAME_INDEX(note_template_type_alias_instantiation_here) +DIAG_NAME_INDEX(note_template_unnamed_type_here) +DIAG_NAME_INDEX(note_template_variable_def_here) +DIAG_NAME_INDEX(note_thread_warning_in_fun) +DIAG_NAME_INDEX(note_throw_in_dtor) +DIAG_NAME_INDEX(note_throw_in_function) +DIAG_NAME_INDEX(note_transparent_union_first_field_size_align) +DIAG_NAME_INDEX(note_type_being_defined) +DIAG_NAME_INDEX(note_type_incomplete) +DIAG_NAME_INDEX(note_typecheck_assign_const) +DIAG_NAME_INDEX(note_typecheck_invalid_operands_converted) +DIAG_NAME_INDEX(note_typecheck_member_reference_suggestion) +DIAG_NAME_INDEX(note_typedef_changes_linkage) +DIAG_NAME_INDEX(note_typename_refers_here) +DIAG_NAME_INDEX(note_ucn_four_not_eight) +DIAG_NAME_INDEX(note_unguarded_available_silence) +DIAG_NAME_INDEX(note_unimplemented_constexpr_lambda_feature_ast) +DIAG_NAME_INDEX(note_uninit_fixit_remove_cond) +DIAG_NAME_INDEX(note_uninit_in_this_constructor) +DIAG_NAME_INDEX(note_uninit_reference_member) +DIAG_NAME_INDEX(note_uninit_var_use) +DIAG_NAME_INDEX(note_unreachable_silence) +DIAG_NAME_INDEX(note_use_dashdash) +DIAG_NAME_INDEX(note_use_ifdef_guards) +DIAG_NAME_INDEX(note_use_non_reference_type) +DIAG_NAME_INDEX(note_use_reference_type) +DIAG_NAME_INDEX(note_use_thread_local) +DIAG_NAME_INDEX(note_use_type_or_non_reference) +DIAG_NAME_INDEX(note_used_here) +DIAG_NAME_INDEX(note_used_in_initialization_here) +DIAG_NAME_INDEX(note_user_declared_ctor) +DIAG_NAME_INDEX(note_using) +DIAG_NAME_INDEX(note_using_decl) +DIAG_NAME_INDEX(note_using_decl_class_member_workaround) +DIAG_NAME_INDEX(note_using_decl_conflict) +DIAG_NAME_INDEX(note_using_decl_target) +DIAG_NAME_INDEX(note_using_value_decl_missing_typename) +DIAG_NAME_INDEX(note_valid_options) +DIAG_NAME_INDEX(note_value_initialization_here) +DIAG_NAME_INDEX(note_var_declared_here) +DIAG_NAME_INDEX(note_var_explicitly_captured_here) +DIAG_NAME_INDEX(note_var_fixit_add_initialization) +DIAG_NAME_INDEX(note_var_prev_partial_spec_here) +DIAG_NAME_INDEX(note_vbase_moved_here) +DIAG_NAME_INDEX(note_vla_unsupported) +DIAG_NAME_INDEX(note_which_delegates_to) +DIAG_NAME_INDEX(note_while_in_implementation) +DIAG_NAME_INDEX(note_widen_bitfield) +DIAG_NAME_INDEX(note_within_field_of_type) +DIAG_NAME_INDEX(null_in_char_or_string) +DIAG_NAME_INDEX(null_in_file) +DIAG_NAME_INDEX(override_keyword_hides_virtual_member_function) +DIAG_NAME_INDEX(override_keyword_only_allowed_on_virtual_member_functions) +DIAG_NAME_INDEX(pp_disabled_macro_expansion) +DIAG_NAME_INDEX(pp_err_elif_after_else) +DIAG_NAME_INDEX(pp_err_elif_without_if) +DIAG_NAME_INDEX(pp_err_else_after_else) +DIAG_NAME_INDEX(pp_err_else_without_if) +DIAG_NAME_INDEX(pp_hash_warning) +DIAG_NAME_INDEX(pp_include_macros_out_of_predefines) +DIAG_NAME_INDEX(pp_include_next_absolute_path) +DIAG_NAME_INDEX(pp_include_next_in_primary) +DIAG_NAME_INDEX(pp_invalid_string_literal) +DIAG_NAME_INDEX(pp_macro_not_used) +DIAG_NAME_INDEX(pp_nonportable_path) +DIAG_NAME_INDEX(pp_nonportable_system_path) +DIAG_NAME_INDEX(pp_out_of_date_dependency) +DIAG_NAME_INDEX(pp_poisoning_existing_macro) +DIAG_NAME_INDEX(pp_pragma_once_in_main_file) +DIAG_NAME_INDEX(pp_pragma_sysheader_in_main_file) +DIAG_NAME_INDEX(remark_fe_backend_optimization_remark) +DIAG_NAME_INDEX(remark_fe_backend_optimization_remark_analysis) +DIAG_NAME_INDEX(remark_fe_backend_optimization_remark_analysis_aliasing) +DIAG_NAME_INDEX(remark_fe_backend_optimization_remark_analysis_fpcommute) +DIAG_NAME_INDEX(remark_fe_backend_optimization_remark_missed) +DIAG_NAME_INDEX(remark_fe_backend_plugin) +DIAG_NAME_INDEX(remark_module_build) +DIAG_NAME_INDEX(remark_module_build_done) +DIAG_NAME_INDEX(remark_module_lock_failure) +DIAG_NAME_INDEX(remark_module_lock_timeout) +DIAG_NAME_INDEX(remark_sanitize_address_insert_extra_padding_accepted) +DIAG_NAME_INDEX(remark_sanitize_address_insert_extra_padding_rejected) +DIAG_NAME_INDEX(trigraph_converted) +DIAG_NAME_INDEX(trigraph_ends_block_comment) +DIAG_NAME_INDEX(trigraph_ignored) +DIAG_NAME_INDEX(trigraph_ignored_block_comment) +DIAG_NAME_INDEX(warn_O4_is_O3) +DIAG_NAME_INDEX(warn_abs_too_small) +DIAG_NAME_INDEX(warn_abstract_final_class) +DIAG_NAME_INDEX(warn_abstract_vbase_init_ignored) +DIAG_NAME_INDEX(warn_access_decl_deprecated) +DIAG_NAME_INDEX(warn_accessor_property_type_mismatch) +DIAG_NAME_INDEX(warn_acquire_requires_negative_cap) +DIAG_NAME_INDEX(warn_acquired_before) +DIAG_NAME_INDEX(warn_acquired_before_after_cycle) +DIAG_NAME_INDEX(warn_addition_in_bitshift) +DIAG_NAME_INDEX(warn_address_of_reference_bool_conversion) +DIAG_NAME_INDEX(warn_address_of_reference_null_compare) +DIAG_NAME_INDEX(warn_alias_to_weak_alias) +DIAG_NAME_INDEX(warn_alias_with_section) +DIAG_NAME_INDEX(warn_alloca_align_alignof) +DIAG_NAME_INDEX(warn_ambiguous_suitable_delete_function_found) +DIAG_NAME_INDEX(warn_anon_bitfield_width_exceeds_type_width) +DIAG_NAME_INDEX(warn_arc_bridge_cast_nonarc) +DIAG_NAME_INDEX(warn_arc_lifetime_result_type) +DIAG_NAME_INDEX(warn_arc_literal_assign) +DIAG_NAME_INDEX(warn_arc_object_memaccess) +DIAG_NAME_INDEX(warn_arc_perform_selector_leaks) +DIAG_NAME_INDEX(warn_arc_possible_repeated_use_of_weak) +DIAG_NAME_INDEX(warn_arc_repeated_use_of_weak) +DIAG_NAME_INDEX(warn_arc_retain_cycle) +DIAG_NAME_INDEX(warn_arc_retained_assign) +DIAG_NAME_INDEX(warn_arc_retained_property_assign) +DIAG_NAME_INDEX(warn_arc_strong_pointer_objc_pointer) +DIAG_NAME_INDEX(warn_arcmt_nsalloc_realloc) +DIAG_NAME_INDEX(warn_argument_invalid_range) +DIAG_NAME_INDEX(warn_arm_interrupt_calling_convention) +DIAG_NAME_INDEX(warn_array_index_exceeds_bounds) +DIAG_NAME_INDEX(warn_array_index_precedes_bounds) +DIAG_NAME_INDEX(warn_asm_label_on_auto_decl) +DIAG_NAME_INDEX(warn_asm_mismatched_size_modifier) +DIAG_NAME_INDEX(warn_asm_qualifier_ignored) +DIAG_NAME_INDEX(warn_assume_side_effects) +DIAG_NAME_INDEX(warn_at_available_unchecked_use) +DIAG_NAME_INDEX(warn_atimport_in_framework_header) +DIAG_NAME_INDEX(warn_atl_uuid_deprecated) +DIAG_NAME_INDEX(warn_atomic_implicit_seq_cst) +DIAG_NAME_INDEX(warn_atomic_op_has_invalid_memory_order) +DIAG_NAME_INDEX(warn_atomic_op_misaligned) +DIAG_NAME_INDEX(warn_atomic_property_rule) +DIAG_NAME_INDEX(warn_attr_abi_tag_namespace) +DIAG_NAME_INDEX(warn_attr_on_unconsumable_class) +DIAG_NAME_INDEX(warn_attribute_address_multiple_identical_qualifiers) +DIAG_NAME_INDEX(warn_attribute_after_definition_ignored) +DIAG_NAME_INDEX(warn_attribute_argument_n_negative) +DIAG_NAME_INDEX(warn_attribute_dll_instantiated_base_class) +DIAG_NAME_INDEX(warn_attribute_dll_redeclaration) +DIAG_NAME_INDEX(warn_attribute_dllexport_explicit_instantiation_decl) +DIAG_NAME_INDEX(warn_attribute_dllimport_static_field_definition) +DIAG_NAME_INDEX(warn_attribute_iboutlet) +DIAG_NAME_INDEX(warn_attribute_ignored) +DIAG_NAME_INDEX(warn_attribute_ignored_for_field_of_type) +DIAG_NAME_INDEX(warn_attribute_ignored_on_inline) +DIAG_NAME_INDEX(warn_attribute_invalid_on_definition) +DIAG_NAME_INDEX(warn_attribute_no_decl) +DIAG_NAME_INDEX(warn_attribute_nonnull_no_pointers) +DIAG_NAME_INDEX(warn_attribute_nonnull_parm_no_args) +DIAG_NAME_INDEX(warn_attribute_not_on_decl) +DIAG_NAME_INDEX(warn_attribute_on_function_definition) +DIAG_NAME_INDEX(warn_attribute_packed_for_bitfield) +DIAG_NAME_INDEX(warn_attribute_pointer_or_reference_only) +DIAG_NAME_INDEX(warn_attribute_pointers_only) +DIAG_NAME_INDEX(warn_attribute_precede_definition) +DIAG_NAME_INDEX(warn_attribute_protected_visibility) +DIAG_NAME_INDEX(warn_attribute_return_pointers_only) +DIAG_NAME_INDEX(warn_attribute_return_pointers_refs_only) +DIAG_NAME_INDEX(warn_attribute_section_on_redeclaration) +DIAG_NAME_INDEX(warn_attribute_sentinel_named_arguments) +DIAG_NAME_INDEX(warn_attribute_sentinel_not_variadic) +DIAG_NAME_INDEX(warn_attribute_type_not_supported) +DIAG_NAME_INDEX(warn_attribute_unknown_visibility) +DIAG_NAME_INDEX(warn_attribute_void_function_method) +DIAG_NAME_INDEX(warn_attribute_weak_on_field) +DIAG_NAME_INDEX(warn_attribute_weak_on_local) +DIAG_NAME_INDEX(warn_attribute_wrong_decl_type) +DIAG_NAME_INDEX(warn_attribute_wrong_decl_type_str) +DIAG_NAME_INDEX(warn_auto_implicit_atomic_property) +DIAG_NAME_INDEX(warn_auto_module_import) +DIAG_NAME_INDEX(warn_auto_readonly_iboutlet_property) +DIAG_NAME_INDEX(warn_auto_storage_class) +DIAG_NAME_INDEX(warn_auto_synthesizing_protocol_property) +DIAG_NAME_INDEX(warn_auto_var_is_id) +DIAG_NAME_INDEX(warn_autosynthesis_property_in_superclass) +DIAG_NAME_INDEX(warn_autosynthesis_property_ivar_match) +DIAG_NAME_INDEX(warn_availability_and_unavailable) +DIAG_NAME_INDEX(warn_availability_on_static_initializer) +DIAG_NAME_INDEX(warn_availability_swift_unavailable_deprecated_only) +DIAG_NAME_INDEX(warn_availability_unknown_platform) +DIAG_NAME_INDEX(warn_availability_version_ordering) +DIAG_NAME_INDEX(warn_bad_character_encoding) +DIAG_NAME_INDEX(warn_bad_function_cast) +DIAG_NAME_INDEX(warn_bad_receiver_type) +DIAG_NAME_INDEX(warn_bad_string_encoding) +DIAG_NAME_INDEX(warn_base_class_is_uninit) +DIAG_NAME_INDEX(warn_bind_ref_member_to_parameter) +DIAG_NAME_INDEX(warn_binding_null_to_reference) +DIAG_NAME_INDEX(warn_bitfield_too_small_for_enum) +DIAG_NAME_INDEX(warn_bitfield_width_exceeds_type_width) +DIAG_NAME_INDEX(warn_bitwise_op_in_bitwise_op) +DIAG_NAME_INDEX(warn_block_capture_autoreleasing) +DIAG_NAME_INDEX(warn_block_literal_attributes_on_omitted_return_type) +DIAG_NAME_INDEX(warn_block_literal_qualifiers_on_omitted_return_type) +DIAG_NAME_INDEX(warn_bool_switch_condition) +DIAG_NAME_INDEX(warn_braces_around_scalar_init) +DIAG_NAME_INDEX(warn_break_binds_to_switch) +DIAG_NAME_INDEX(warn_builtin_unknown) +DIAG_NAME_INDEX(warn_c99_compat_unicode_id) +DIAG_NAME_INDEX(warn_c99_compat_unicode_literal) +DIAG_NAME_INDEX(warn_c_kext) +DIAG_NAME_INDEX(warn_call_to_pure_virtual_member_function_from_ctor_dtor) +DIAG_NAME_INDEX(warn_call_wrong_number_of_arguments) +DIAG_NAME_INDEX(warn_cannot_pass_non_pod_arg_to_vararg) +DIAG_NAME_INDEX(warn_cannot_resolve_lock) +DIAG_NAME_INDEX(warn_case_empty_range) +DIAG_NAME_INDEX(warn_case_value_overflow) +DIAG_NAME_INDEX(warn_cast_align) +DIAG_NAME_INDEX(warn_cast_calling_conv) +DIAG_NAME_INDEX(warn_cast_nonnull_to_bool) +DIAG_NAME_INDEX(warn_cast_pointer_from_sel) +DIAG_NAME_INDEX(warn_cast_qual) +DIAG_NAME_INDEX(warn_cast_qual2) +DIAG_NAME_INDEX(warn_category_method_impl_match) +DIAG_NAME_INDEX(warn_cconv_ignored) +DIAG_NAME_INDEX(warn_cconv_knr) +DIAG_NAME_INDEX(warn_cconv_structors) +DIAG_NAME_INDEX(warn_cconv_varargs) +DIAG_NAME_INDEX(warn_cdtor_function_try_handler_mem_expr) +DIAG_NAME_INDEX(warn_cfstring_truncated) +DIAG_NAME_INDEX(warn_char_constant_too_large) +DIAG_NAME_INDEX(warn_class_method_not_found) +DIAG_NAME_INDEX(warn_class_method_not_found_with_typo) +DIAG_NAME_INDEX(warn_cleanup_ext) +DIAG_NAME_INDEX(warn_cocoa_naming_owned_rule) +DIAG_NAME_INDEX(warn_collection_expr_type) +DIAG_NAME_INDEX(warn_comma_operator) +DIAG_NAME_INDEX(warn_comparison_always) +DIAG_NAME_INDEX(warn_comparison_bitwise_always) +DIAG_NAME_INDEX(warn_comparison_of_mixed_enum_types) +DIAG_NAME_INDEX(warn_comparison_of_mixed_enum_types_switch) +DIAG_NAME_INDEX(warn_concatenated_nsarray_literal) +DIAG_NAME_INDEX(warn_condition_is_assignment) +DIAG_NAME_INDEX(warn_condition_is_idiomatic_assignment) +DIAG_NAME_INDEX(warn_conflicting_nullability_attr_overriding_param_types) +DIAG_NAME_INDEX(warn_conflicting_nullability_attr_overriding_ret_types) +DIAG_NAME_INDEX(warn_conflicting_overriding_param_modifiers) +DIAG_NAME_INDEX(warn_conflicting_overriding_param_types) +DIAG_NAME_INDEX(warn_conflicting_overriding_ret_type_modifiers) +DIAG_NAME_INDEX(warn_conflicting_overriding_ret_types) +DIAG_NAME_INDEX(warn_conflicting_overriding_variadic) +DIAG_NAME_INDEX(warn_conflicting_param_modifiers) +DIAG_NAME_INDEX(warn_conflicting_param_types) +DIAG_NAME_INDEX(warn_conflicting_ret_type_modifiers) +DIAG_NAME_INDEX(warn_conflicting_ret_types) +DIAG_NAME_INDEX(warn_conflicting_variadic) +DIAG_NAME_INDEX(warn_conv_to_base_not_used) +DIAG_NAME_INDEX(warn_conv_to_self_not_used) +DIAG_NAME_INDEX(warn_conv_to_void_not_used) +DIAG_NAME_INDEX(warn_coroutine_promise_unhandled_exception_required_with_exceptions) +DIAG_NAME_INDEX(warn_correct_comment_command_name) +DIAG_NAME_INDEX(warn_cstruct_memaccess) +DIAG_NAME_INDEX(warn_cstyle_param) +DIAG_NAME_INDEX(warn_ctad_maybe_unsupported) +DIAG_NAME_INDEX(warn_ctor_parm_shadows_field) +DIAG_NAME_INDEX(warn_ctu_incompat_triple) +DIAG_NAME_INDEX(warn_cuda_attr_lambda_position) +DIAG_NAME_INDEX(warn_cxx11_compat_binary_literal) +DIAG_NAME_INDEX(warn_cxx11_compat_constexpr_body_invalid_stmt) +DIAG_NAME_INDEX(warn_cxx11_compat_constexpr_body_multiple_return) +DIAG_NAME_INDEX(warn_cxx11_compat_constexpr_body_no_return) +DIAG_NAME_INDEX(warn_cxx11_compat_constexpr_local_var) +DIAG_NAME_INDEX(warn_cxx11_compat_constexpr_type_definition) +DIAG_NAME_INDEX(warn_cxx11_compat_decltype_auto_type_specifier) +DIAG_NAME_INDEX(warn_cxx11_compat_deduced_return_type) +DIAG_NAME_INDEX(warn_cxx11_compat_digit_separator) +DIAG_NAME_INDEX(warn_cxx11_compat_generic_lambda) +DIAG_NAME_INDEX(warn_cxx11_compat_init_capture) +DIAG_NAME_INDEX(warn_cxx11_compat_reserved_user_defined_literal) +DIAG_NAME_INDEX(warn_cxx11_compat_user_defined_literal) +DIAG_NAME_INDEX(warn_cxx11_compat_variable_template) +DIAG_NAME_INDEX(warn_cxx11_gnu_attribute_on_type) +DIAG_NAME_INDEX(warn_cxx11_keyword) +DIAG_NAME_INDEX(warn_cxx11_right_shift_in_template_arg) +DIAG_NAME_INDEX(warn_cxx14_compat_class_template_argument_deduction) +DIAG_NAME_INDEX(warn_cxx14_compat_constexpr_if) +DIAG_NAME_INDEX(warn_cxx14_compat_constexpr_not_const) +DIAG_NAME_INDEX(warn_cxx14_compat_constexpr_on_lambda) +DIAG_NAME_INDEX(warn_cxx14_compat_decomp_decl) +DIAG_NAME_INDEX(warn_cxx14_compat_fold_expression) +DIAG_NAME_INDEX(warn_cxx14_compat_init_statement) +DIAG_NAME_INDEX(warn_cxx14_compat_inline_variable) +DIAG_NAME_INDEX(warn_cxx14_compat_nested_namespace_definition) +DIAG_NAME_INDEX(warn_cxx14_compat_ns_enum_attribute) +DIAG_NAME_INDEX(warn_cxx14_compat_star_this_lambda_capture) +DIAG_NAME_INDEX(warn_cxx14_compat_static_assert_no_message) +DIAG_NAME_INDEX(warn_cxx14_compat_template_nontype_parm_auto_type) +DIAG_NAME_INDEX(warn_cxx14_compat_template_template_param_typename) +DIAG_NAME_INDEX(warn_cxx14_compat_u8_character_literal) +DIAG_NAME_INDEX(warn_cxx14_compat_using_attribute_ns) +DIAG_NAME_INDEX(warn_cxx17_compat_bitfield_member_init) +DIAG_NAME_INDEX(warn_cxx17_compat_constexpr_body_invalid_stmt) +DIAG_NAME_INDEX(warn_cxx17_compat_constexpr_function_try_block) +DIAG_NAME_INDEX(warn_cxx17_compat_defaulted_method_type_mismatch) +DIAG_NAME_INDEX(warn_cxx17_compat_equals_this_lambda_capture) +DIAG_NAME_INDEX(warn_cxx17_compat_exception_spec_in_signature) +DIAG_NAME_INDEX(warn_cxx17_compat_for_range_init_stmt) +DIAG_NAME_INDEX(warn_cxx17_compat_inline_nested_namespace_definition) +DIAG_NAME_INDEX(warn_cxx17_compat_lambda_def_ctor_assign) +DIAG_NAME_INDEX(warn_cxx17_compat_multi_using_declaration) +DIAG_NAME_INDEX(warn_cxx17_compat_pointer_to_const_ref_member_on_rvalue) +DIAG_NAME_INDEX(warn_cxx17_compat_spaceship) +DIAG_NAME_INDEX(warn_cxx17_compat_unicode_type) +DIAG_NAME_INDEX(warn_cxx17_compat_using_declaration_pack) +DIAG_NAME_INDEX(warn_cxx17_hex_literal) +DIAG_NAME_INDEX(warn_cxx2a_compat_aggregate_init_with_ctors) +DIAG_NAME_INDEX(warn_cxx2a_compat_spaceship) +DIAG_NAME_INDEX(warn_cxx2a_compat_utf8_string) +DIAG_NAME_INDEX(warn_cxx2a_keyword) +DIAG_NAME_INDEX(warn_cxx98_compat_alias_declaration) +DIAG_NAME_INDEX(warn_cxx98_compat_alignas) +DIAG_NAME_INDEX(warn_cxx98_compat_alignof) +DIAG_NAME_INDEX(warn_cxx98_compat_array_size_conversion) +DIAG_NAME_INDEX(warn_cxx98_compat_attribute) +DIAG_NAME_INDEX(warn_cxx98_compat_auto_type_specifier) +DIAG_NAME_INDEX(warn_cxx98_compat_cast_fn_obj) +DIAG_NAME_INDEX(warn_cxx98_compat_constexpr) +DIAG_NAME_INDEX(warn_cxx98_compat_ctor_list_init) +DIAG_NAME_INDEX(warn_cxx98_compat_decltype) +DIAG_NAME_INDEX(warn_cxx98_compat_defaulted_deleted_function) +DIAG_NAME_INDEX(warn_cxx98_compat_delegating_ctor) +DIAG_NAME_INDEX(warn_cxx98_compat_empty_fnmacro_arg) +DIAG_NAME_INDEX(warn_cxx98_compat_empty_scalar_initializer) +DIAG_NAME_INDEX(warn_cxx98_compat_enum_fixed_underlying_type) +DIAG_NAME_INDEX(warn_cxx98_compat_enum_friend) +DIAG_NAME_INDEX(warn_cxx98_compat_enum_nested_name_spec) +DIAG_NAME_INDEX(warn_cxx98_compat_enumerator_list_comma) +DIAG_NAME_INDEX(warn_cxx98_compat_explicit_conversion_functions) +DIAG_NAME_INDEX(warn_cxx98_compat_extern_template) +DIAG_NAME_INDEX(warn_cxx98_compat_for_range) +DIAG_NAME_INDEX(warn_cxx98_compat_friend_is_member) +DIAG_NAME_INDEX(warn_cxx98_compat_generalized_initializer_lists) +DIAG_NAME_INDEX(warn_cxx98_compat_goto_into_protected_scope) +DIAG_NAME_INDEX(warn_cxx98_compat_indirect_goto_in_protected_scope) +DIAG_NAME_INDEX(warn_cxx98_compat_initializer_list_init) +DIAG_NAME_INDEX(warn_cxx98_compat_inline_namespace) +DIAG_NAME_INDEX(warn_cxx98_compat_lambda) +DIAG_NAME_INDEX(warn_cxx98_compat_less_colon_colon) +DIAG_NAME_INDEX(warn_cxx98_compat_literal_operator) +DIAG_NAME_INDEX(warn_cxx98_compat_literal_ucn_control_character) +DIAG_NAME_INDEX(warn_cxx98_compat_literal_ucn_escape_basic_scs) +DIAG_NAME_INDEX(warn_cxx98_compat_longlong) +DIAG_NAME_INDEX(warn_cxx98_compat_no_newline_eof) +DIAG_NAME_INDEX(warn_cxx98_compat_noexcept_decl) +DIAG_NAME_INDEX(warn_cxx98_compat_noexcept_expr) +DIAG_NAME_INDEX(warn_cxx98_compat_non_static_member_use) +DIAG_NAME_INDEX(warn_cxx98_compat_nonclass_type_friend) +DIAG_NAME_INDEX(warn_cxx98_compat_nonstatic_member_init) +DIAG_NAME_INDEX(warn_cxx98_compat_nontrivial_union_or_anon_struct_member) +DIAG_NAME_INDEX(warn_cxx98_compat_nullptr) +DIAG_NAME_INDEX(warn_cxx98_compat_override_control_keyword) +DIAG_NAME_INDEX(warn_cxx98_compat_pass_non_pod_arg_to_vararg) +DIAG_NAME_INDEX(warn_cxx98_compat_pp_line_too_big) +DIAG_NAME_INDEX(warn_cxx98_compat_raw_string_literal) +DIAG_NAME_INDEX(warn_cxx98_compat_ref_qualifier) +DIAG_NAME_INDEX(warn_cxx98_compat_reference_list_init) +DIAG_NAME_INDEX(warn_cxx98_compat_rvalue_reference) +DIAG_NAME_INDEX(warn_cxx98_compat_scoped_enum) +DIAG_NAME_INDEX(warn_cxx98_compat_sfinae_access_control) +DIAG_NAME_INDEX(warn_cxx98_compat_static_assert) +DIAG_NAME_INDEX(warn_cxx98_compat_static_data_member_in_union) +DIAG_NAME_INDEX(warn_cxx98_compat_switch_into_protected_scope) +DIAG_NAME_INDEX(warn_cxx98_compat_temp_copy) +DIAG_NAME_INDEX(warn_cxx98_compat_template_arg_extra_parens) +DIAG_NAME_INDEX(warn_cxx98_compat_template_arg_local_type) +DIAG_NAME_INDEX(warn_cxx98_compat_template_arg_null) +DIAG_NAME_INDEX(warn_cxx98_compat_template_arg_object_internal) +DIAG_NAME_INDEX(warn_cxx98_compat_template_arg_unnamed_type) +DIAG_NAME_INDEX(warn_cxx98_compat_template_outside_of_template) +DIAG_NAME_INDEX(warn_cxx98_compat_template_parameter_default_in_function_template) +DIAG_NAME_INDEX(warn_cxx98_compat_top_level_semi) +DIAG_NAME_INDEX(warn_cxx98_compat_trailing_return_type) +DIAG_NAME_INDEX(warn_cxx98_compat_two_right_angle_brackets) +DIAG_NAME_INDEX(warn_cxx98_compat_typename_outside_of_template) +DIAG_NAME_INDEX(warn_cxx98_compat_unelaborated_friend_type) +DIAG_NAME_INDEX(warn_cxx98_compat_unicode_id) +DIAG_NAME_INDEX(warn_cxx98_compat_unicode_literal) +DIAG_NAME_INDEX(warn_cxx98_compat_unicode_type) +DIAG_NAME_INDEX(warn_cxx98_compat_using_decl_constructor) +DIAG_NAME_INDEX(warn_cxx98_compat_variadic_macro) +DIAG_NAME_INDEX(warn_cxx98_compat_variadic_templates) +DIAG_NAME_INDEX(warn_cxx_ms_struct) +DIAG_NAME_INDEX(warn_dangling_else) +DIAG_NAME_INDEX(warn_dangling_member) +DIAG_NAME_INDEX(warn_dangling_variable) +DIAG_NAME_INDEX(warn_dealloc_in_category) +DIAG_NAME_INDEX(warn_debug_compression_unavailable) +DIAG_NAME_INDEX(warn_decl_in_param_list) +DIAG_NAME_INDEX(warn_decl_shadow) +DIAG_NAME_INDEX(warn_decl_shadow_uncaptured_local) +DIAG_NAME_INDEX(warn_declspec_attribute_ignored) +DIAG_NAME_INDEX(warn_deep_exception_specs_differ) +DIAG_NAME_INDEX(warn_def_missing_case) +DIAG_NAME_INDEX(warn_default_atomic_custom_getter_setter) +DIAG_NAME_INDEX(warn_defaulted_method_deleted) +DIAG_NAME_INDEX(warn_defined_in_function_type_macro) +DIAG_NAME_INDEX(warn_defined_in_object_type_macro) +DIAG_NAME_INDEX(warn_delegating_ctor_cycle) +DIAG_NAME_INDEX(warn_delete_abstract_non_virtual_dtor) +DIAG_NAME_INDEX(warn_delete_array_type) +DIAG_NAME_INDEX(warn_delete_incomplete) +DIAG_NAME_INDEX(warn_delete_non_virtual_dtor) +DIAG_NAME_INDEX(warn_deprecated) +DIAG_NAME_INDEX(warn_deprecated_anonymous_namespace) +DIAG_NAME_INDEX(warn_deprecated_copy_operation) +DIAG_NAME_INDEX(warn_deprecated_def) +DIAG_NAME_INDEX(warn_deprecated_fwdclass_message) +DIAG_NAME_INDEX(warn_deprecated_message) +DIAG_NAME_INDEX(warn_deprecated_redundant_constexpr_static_def) +DIAG_NAME_INDEX(warn_deprecated_register) +DIAG_NAME_INDEX(warn_deprecated_string_literal_conversion) +DIAG_NAME_INDEX(warn_deprecated_this_capture) +DIAG_NAME_INDEX(warn_dereference_of_noderef_type) +DIAG_NAME_INDEX(warn_dereference_of_noderef_type_no_decl) +DIAG_NAME_INDEX(warn_destructor_marked_not_override_overriding) +DIAG_NAME_INDEX(warn_diagnose_if_succeeded) +DIAG_NAME_INDEX(warn_direct_initialize_call) +DIAG_NAME_INDEX(warn_direct_ivar_access) +DIAG_NAME_INDEX(warn_direct_super_initialize_call) +DIAG_NAME_INDEX(warn_dispatch_body_ignored) +DIAG_NAME_INDEX(warn_division_sizeof_ptr) +DIAG_NAME_INDEX(warn_dllimport_dropped_from_inline_function) +DIAG_NAME_INDEX(warn_doc_api_container_decl_mismatch) +DIAG_NAME_INDEX(warn_doc_block_command_duplicate) +DIAG_NAME_INDEX(warn_doc_block_command_empty_paragraph) +DIAG_NAME_INDEX(warn_doc_container_decl_mismatch) +DIAG_NAME_INDEX(warn_doc_deprecated_not_sync) +DIAG_NAME_INDEX(warn_doc_function_method_decl_mismatch) +DIAG_NAME_INDEX(warn_doc_html_end_forbidden) +DIAG_NAME_INDEX(warn_doc_html_end_unbalanced) +DIAG_NAME_INDEX(warn_doc_html_missing_end_tag) +DIAG_NAME_INDEX(warn_doc_html_start_end_mismatch) +DIAG_NAME_INDEX(warn_doc_html_start_tag_expected_ident_or_greater) +DIAG_NAME_INDEX(warn_doc_html_start_tag_expected_quoted_string) +DIAG_NAME_INDEX(warn_doc_param_duplicate) +DIAG_NAME_INDEX(warn_doc_param_invalid_direction) +DIAG_NAME_INDEX(warn_doc_param_not_attached_to_a_function_decl) +DIAG_NAME_INDEX(warn_doc_param_not_found) +DIAG_NAME_INDEX(warn_doc_param_spaces_in_direction) +DIAG_NAME_INDEX(warn_doc_returns_attached_to_a_void_function) +DIAG_NAME_INDEX(warn_doc_returns_not_attached_to_a_function_decl) +DIAG_NAME_INDEX(warn_doc_tparam_duplicate) +DIAG_NAME_INDEX(warn_doc_tparam_not_attached_to_a_template_decl) +DIAG_NAME_INDEX(warn_doc_tparam_not_found) +DIAG_NAME_INDEX(warn_double_const_requires_fp64) +DIAG_NAME_INDEX(warn_double_lock) +DIAG_NAME_INDEX(warn_drv_assuming_mfloat_abi_is) +DIAG_NAME_INDEX(warn_drv_clang_unsupported) +DIAG_NAME_INDEX(warn_drv_darwin_sdk_invalid_settings) +DIAG_NAME_INDEX(warn_drv_deprecated_arg) +DIAG_NAME_INDEX(warn_drv_diagnostics_hotness_requires_pgo) +DIAG_NAME_INDEX(warn_drv_disabling_vptr_no_rtti_default) +DIAG_NAME_INDEX(warn_drv_empty_joined_argument) +DIAG_NAME_INDEX(warn_drv_experimental_isel_incomplete) +DIAG_NAME_INDEX(warn_drv_experimental_isel_incomplete_opt) +DIAG_NAME_INDEX(warn_drv_fine_grained_bitfield_accesses_ignored) +DIAG_NAME_INDEX(warn_drv_input_file_unused) +DIAG_NAME_INDEX(warn_drv_input_file_unused_by_cpp) +DIAG_NAME_INDEX(warn_drv_invoking_fallback) +DIAG_NAME_INDEX(warn_drv_moutline_unsupported_opt) +DIAG_NAME_INDEX(warn_drv_msp430_hwmult_mismatch) +DIAG_NAME_INDEX(warn_drv_msp430_hwmult_no_device) +DIAG_NAME_INDEX(warn_drv_msp430_hwmult_unsupported) +DIAG_NAME_INDEX(warn_drv_msvc_not_found) +DIAG_NAME_INDEX(warn_drv_object_size_disabled_O0) +DIAG_NAME_INDEX(warn_drv_omp_offload_target_duplicate) +DIAG_NAME_INDEX(warn_drv_omp_offload_target_missingbcruntime) +DIAG_NAME_INDEX(warn_drv_optimization_value) +DIAG_NAME_INDEX(warn_drv_overriding_flag_option) +DIAG_NAME_INDEX(warn_drv_pch_not_first_include) +DIAG_NAME_INDEX(warn_drv_preprocessed_input_file_unused) +DIAG_NAME_INDEX(warn_drv_ps4_force_pic) +DIAG_NAME_INDEX(warn_drv_ps4_sdk_dir) +DIAG_NAME_INDEX(warn_drv_treating_input_as_cxx) +DIAG_NAME_INDEX(warn_drv_unable_to_find_directory_expected) +DIAG_NAME_INDEX(warn_drv_unknown_argument_clang_cl) +DIAG_NAME_INDEX(warn_drv_unknown_argument_clang_cl_with_suggestion) +DIAG_NAME_INDEX(warn_drv_unsupported_debug_info_opt_for_target) +DIAG_NAME_INDEX(warn_drv_unsupported_gpopt) +DIAG_NAME_INDEX(warn_drv_unsupported_longcalls) +DIAG_NAME_INDEX(warn_drv_unsupported_opt_for_target) +DIAG_NAME_INDEX(warn_drv_unsupported_pic_with_mabicalls) +DIAG_NAME_INDEX(warn_drv_unused_argument) +DIAG_NAME_INDEX(warn_drv_vectorize_needs_hvx) +DIAG_NAME_INDEX(warn_drv_yc_multiple_inputs_clang_cl) +DIAG_NAME_INDEX(warn_drv_ycyu_different_arg_clang_cl) +DIAG_NAME_INDEX(warn_drv_ycyu_no_fi_arg_clang_cl) +DIAG_NAME_INDEX(warn_dup_category_def) +DIAG_NAME_INDEX(warn_duplicate_attribute) +DIAG_NAME_INDEX(warn_duplicate_attribute_exact) +DIAG_NAME_INDEX(warn_duplicate_codeseg_attribute) +DIAG_NAME_INDEX(warn_duplicate_declspec) +DIAG_NAME_INDEX(warn_duplicate_enum_values) +DIAG_NAME_INDEX(warn_duplicate_method_decl) +DIAG_NAME_INDEX(warn_duplicate_module_file_extension) +DIAG_NAME_INDEX(warn_duplicate_protocol_def) +DIAG_NAME_INDEX(warn_dyn_class_memaccess) +DIAG_NAME_INDEX(warn_empty_for_body) +DIAG_NAME_INDEX(warn_empty_format_string) +DIAG_NAME_INDEX(warn_empty_if_body) +DIAG_NAME_INDEX(warn_empty_init_statement) +DIAG_NAME_INDEX(warn_empty_parens_are_function_decl) +DIAG_NAME_INDEX(warn_empty_range_based_for_body) +DIAG_NAME_INDEX(warn_empty_switch_body) +DIAG_NAME_INDEX(warn_empty_while_body) +DIAG_NAME_INDEX(warn_enum_value_overflow) +DIAG_NAME_INDEX(warn_equality_with_extra_parens) +DIAG_NAME_INDEX(warn_exception_caught_by_earlier_handler) +DIAG_NAME_INDEX(warn_exception_spec_deprecated) +DIAG_NAME_INDEX(warn_exit_time_destructor) +DIAG_NAME_INDEX(warn_expected_consistent_version_separator) +DIAG_NAME_INDEX(warn_expected_qualified_after_typename) +DIAG_NAME_INDEX(warn_expecting_lock_held_on_loop) +DIAG_NAME_INDEX(warn_expecting_locked) +DIAG_NAME_INDEX(warn_explicit_instantiation_after_specialization) +DIAG_NAME_INDEX(warn_explicit_instantiation_inline_0x) +DIAG_NAME_INDEX(warn_explicit_instantiation_must_be_global_0x) +DIAG_NAME_INDEX(warn_explicit_instantiation_out_of_scope_0x) +DIAG_NAME_INDEX(warn_explicit_instantiation_unqualified_wrong_namespace_0x) +DIAG_NAME_INDEX(warn_extern_init) +DIAG_NAME_INDEX(warn_extra_semi_after_mem_fn_def) +DIAG_NAME_INDEX(warn_extraneous_char_constant) +DIAG_NAME_INDEX(warn_falloff_nonvoid_coroutine) +DIAG_NAME_INDEX(warn_falloff_nonvoid_function) +DIAG_NAME_INDEX(warn_falloff_nonvoid_lambda) +DIAG_NAME_INDEX(warn_falloff_noreturn_function) +DIAG_NAME_INDEX(warn_fallthrough_attr_unreachable) +DIAG_NAME_INDEX(warn_fe_backend_frame_larger_than) +DIAG_NAME_INDEX(warn_fe_backend_optimization_failure) +DIAG_NAME_INDEX(warn_fe_backend_plugin) +DIAG_NAME_INDEX(warn_fe_cc_log_diagnostics_failure) +DIAG_NAME_INDEX(warn_fe_cc_print_header_failure) +DIAG_NAME_INDEX(warn_fe_frame_larger_than) +DIAG_NAME_INDEX(warn_fe_inline_asm) +DIAG_NAME_INDEX(warn_fe_macro_contains_embedded_newline) +DIAG_NAME_INDEX(warn_fe_override_module) +DIAG_NAME_INDEX(warn_fe_serialized_diag_failure) +DIAG_NAME_INDEX(warn_fe_serialized_diag_merge_failure) +DIAG_NAME_INDEX(warn_fe_unable_to_open_stats_file) +DIAG_NAME_INDEX(warn_field_is_uninit) +DIAG_NAME_INDEX(warn_file_asm_volatile) +DIAG_NAME_INDEX(warn_fixit_no_changes) +DIAG_NAME_INDEX(warn_flag_enum_constant_out_of_range) +DIAG_NAME_INDEX(warn_float_overflow) +DIAG_NAME_INDEX(warn_float_underflow) +DIAG_NAME_INDEX(warn_floatingpoint_eq) +DIAG_NAME_INDEX(warn_for_range_begin_end_types_differ) +DIAG_NAME_INDEX(warn_for_range_const_reference_copy) +DIAG_NAME_INDEX(warn_for_range_copy) +DIAG_NAME_INDEX(warn_for_range_variable_always_copy) +DIAG_NAME_INDEX(warn_format_P_no_precision) +DIAG_NAME_INDEX(warn_format_argument_needs_cast) +DIAG_NAME_INDEX(warn_format_argument_needs_cast_pedantic) +DIAG_NAME_INDEX(warn_format_conversion_argument_type_mismatch) +DIAG_NAME_INDEX(warn_format_conversion_argument_type_mismatch_pedantic) +DIAG_NAME_INDEX(warn_format_invalid_annotation) +DIAG_NAME_INDEX(warn_format_invalid_conversion) +DIAG_NAME_INDEX(warn_format_invalid_positional_specifier) +DIAG_NAME_INDEX(warn_format_mix_positional_nonpositional_args) +DIAG_NAME_INDEX(warn_format_non_standard) +DIAG_NAME_INDEX(warn_format_non_standard_conversion_spec) +DIAG_NAME_INDEX(warn_format_non_standard_positional_arg) +DIAG_NAME_INDEX(warn_format_nonliteral) +DIAG_NAME_INDEX(warn_format_nonliteral_noargs) +DIAG_NAME_INDEX(warn_format_nonsensical_length) +DIAG_NAME_INDEX(warn_format_string_is_wide_literal) +DIAG_NAME_INDEX(warn_format_zero_positional_specifier) +DIAG_NAME_INDEX(warn_forward_class_redefinition) +DIAG_NAME_INDEX(warn_framework_include_private_from_public) +DIAG_NAME_INDEX(warn_fun_excludes_mutex) +DIAG_NAME_INDEX(warn_fun_requires_lock) +DIAG_NAME_INDEX(warn_fun_requires_lock_precise) +DIAG_NAME_INDEX(warn_func_template_missing) +DIAG_NAME_INDEX(warn_function_def_in_objc_container) +DIAG_NAME_INDEX(warn_function_marked_not_override_overriding) +DIAG_NAME_INDEX(warn_gc_attribute_weak_on_local) +DIAG_NAME_INDEX(warn_gcc_attribute_location) +DIAG_NAME_INDEX(warn_gcc_ignores_type_attr) +DIAG_NAME_INDEX(warn_gcc_variable_decl_in_for_loop) +DIAG_NAME_INDEX(warn_global_constructor) +DIAG_NAME_INDEX(warn_global_destructor) +DIAG_NAME_INDEX(warn_gnu_inline_attribute_requires_inline) +DIAG_NAME_INDEX(warn_gnu_null_ptr_arith) +DIAG_NAME_INDEX(warn_guarded_pass_by_reference) +DIAG_NAME_INDEX(warn_has_warning_invalid_option) +DIAG_NAME_INDEX(warn_header_guard) +DIAG_NAME_INDEX(warn_iboutlet_object_type) +DIAG_NAME_INDEX(warn_iboutletcollection_property_assign) +DIAG_NAME_INDEX(warn_identity_field_assign) +DIAG_NAME_INDEX(warn_ignored_clang_option) +DIAG_NAME_INDEX(warn_ignored_gcc_optimization) +DIAG_NAME_INDEX(warn_ignored_ms_inheritance) +DIAG_NAME_INDEX(warn_ignored_objc_externally_retained) +DIAG_NAME_INDEX(warn_ignoring_ftabstop_value) +DIAG_NAME_INDEX(warn_illegal_constant_array_size) +DIAG_NAME_INDEX(warn_impcast_bitfield_precision_constant) +DIAG_NAME_INDEX(warn_impcast_bool_to_null_pointer) +DIAG_NAME_INDEX(warn_impcast_complex_scalar) +DIAG_NAME_INDEX(warn_impcast_different_enum_types) +DIAG_NAME_INDEX(warn_impcast_double_promotion) +DIAG_NAME_INDEX(warn_impcast_fixed_point_range) +DIAG_NAME_INDEX(warn_impcast_float_integer) +DIAG_NAME_INDEX(warn_impcast_float_precision) +DIAG_NAME_INDEX(warn_impcast_float_result_precision) +DIAG_NAME_INDEX(warn_impcast_float_to_integer) +DIAG_NAME_INDEX(warn_impcast_float_to_integer_out_of_range) +DIAG_NAME_INDEX(warn_impcast_float_to_integer_zero) +DIAG_NAME_INDEX(warn_impcast_floating_point_to_bool) +DIAG_NAME_INDEX(warn_impcast_high_order_zero_bits) +DIAG_NAME_INDEX(warn_impcast_integer_64_32) +DIAG_NAME_INDEX(warn_impcast_integer_precision) +DIAG_NAME_INDEX(warn_impcast_integer_precision_constant) +DIAG_NAME_INDEX(warn_impcast_integer_sign) +DIAG_NAME_INDEX(warn_impcast_integer_sign_conditional) +DIAG_NAME_INDEX(warn_impcast_literal_float_to_integer) +DIAG_NAME_INDEX(warn_impcast_literal_float_to_integer_out_of_range) +DIAG_NAME_INDEX(warn_impcast_nonnegative_result) +DIAG_NAME_INDEX(warn_impcast_null_pointer_to_integer) +DIAG_NAME_INDEX(warn_impcast_objective_c_literal_to_bool) +DIAG_NAME_INDEX(warn_impcast_pointer_to_bool) +DIAG_NAME_INDEX(warn_impcast_string_literal_to_bool) +DIAG_NAME_INDEX(warn_impcast_vector_scalar) +DIAG_NAME_INDEX(warn_impl_required_for_class_property) +DIAG_NAME_INDEX(warn_impl_required_in_category_for_class_property) +DIAG_NAME_INDEX(warn_implements_nscopying) +DIAG_NAME_INDEX(warn_implicit_atomic_property) +DIAG_NAME_INDEX(warn_implicit_decl_requires_sysheader) +DIAG_NAME_INDEX(warn_implicit_function_decl) +DIAG_NAME_INDEX(warn_implicitly_retains_self) +DIAG_NAME_INDEX(warn_inaccessible_base_class) +DIAG_NAME_INDEX(warn_incompatible_analyzer_plugin_api) +DIAG_NAME_INDEX(warn_incompatible_exception_specs) +DIAG_NAME_INDEX(warn_incompatible_qualified_id) +DIAG_NAME_INDEX(warn_incompatible_sysroot) +DIAG_NAME_INDEX(warn_incompatible_vectors) +DIAG_NAME_INDEX(warn_incomplete_encoded_type) +DIAG_NAME_INDEX(warn_increment_bool) +DIAG_NAME_INDEX(warn_independentclass_attribute) +DIAG_NAME_INDEX(warn_indirection_through_null) +DIAG_NAME_INDEX(warn_infinite_recursive_function) +DIAG_NAME_INDEX(warn_init_list_constant_narrowing) +DIAG_NAME_INDEX(warn_init_list_type_narrowing) +DIAG_NAME_INDEX(warn_init_list_variable_narrowing) +DIAG_NAME_INDEX(warn_init_ptr_member_to_parameter_addr) +DIAG_NAME_INDEX(warn_initializer_out_of_order) +DIAG_NAME_INDEX(warn_initializer_overrides) +DIAG_NAME_INDEX(warn_inline_namespace_reopened_noninline) +DIAG_NAME_INDEX(warn_inst_method_not_found) +DIAG_NAME_INDEX(warn_instance_method_not_found_with_typo) +DIAG_NAME_INDEX(warn_instance_method_on_class_found) +DIAG_NAME_INDEX(warn_int_to_pointer_cast) +DIAG_NAME_INDEX(warn_int_to_void_pointer_cast) +DIAG_NAME_INDEX(warn_integer_constant_overflow) +DIAG_NAME_INDEX(warn_internal_linkage_local_storage) +DIAG_NAME_INDEX(warn_interrupt_attribute_invalid) +DIAG_NAME_INDEX(warn_invalid_asm_cast_lvalue) +DIAG_NAME_INDEX(warn_invalid_capability_name) +DIAG_NAME_INDEX(warn_invalid_initializer_from_system_header) +DIAG_NAME_INDEX(warn_invalid_ios_deployment_target) +DIAG_NAME_INDEX(warn_ivar_use_hidden) +DIAG_NAME_INDEX(warn_ivars_in_interface) +DIAG_NAME_INDEX(warn_jump_out_of_seh_finally) +DIAG_NAME_INDEX(warn_kern_is_inline) +DIAG_NAME_INDEX(warn_kern_is_method) +DIAG_NAME_INDEX(warn_lock_exclusive_and_shared) +DIAG_NAME_INDEX(warn_lock_some_predecessors) +DIAG_NAME_INDEX(warn_logical_and_in_logical_or) +DIAG_NAME_INDEX(warn_logical_instead_of_bitwise) +DIAG_NAME_INDEX(warn_logical_not_on_lhs_of_check) +DIAG_NAME_INDEX(warn_loop_ctrl_binds_to_inner) +DIAG_NAME_INDEX(warn_loop_state_mismatch) +DIAG_NAME_INDEX(warn_main_one_arg) +DIAG_NAME_INDEX(warn_main_redefined) +DIAG_NAME_INDEX(warn_main_returns_bool_literal) +DIAG_NAME_INDEX(warn_max_unsigned_zero) +DIAG_NAME_INDEX(warn_maybe_falloff_nonvoid_coroutine) +DIAG_NAME_INDEX(warn_maybe_falloff_nonvoid_function) +DIAG_NAME_INDEX(warn_maybe_falloff_nonvoid_lambda) +DIAG_NAME_INDEX(warn_maybe_uninit_var) +DIAG_NAME_INDEX(warn_maynot_respond) +DIAG_NAME_INDEX(warn_member_extra_qualification) +DIAG_NAME_INDEX(warn_memcpy_chk_overflow) +DIAG_NAME_INDEX(warn_memsize_comparison) +DIAG_NAME_INDEX(warn_messaging_unqualified_id) +DIAG_NAME_INDEX(warn_method_param_declaration) +DIAG_NAME_INDEX(warn_method_param_redefinition) +DIAG_NAME_INDEX(warn_microsoft_dependent_exists) +DIAG_NAME_INDEX(warn_microsoft_qualifiers_ignored) +DIAG_NAME_INDEX(warn_mismatched_availability) +DIAG_NAME_INDEX(warn_mismatched_availability_override) +DIAG_NAME_INDEX(warn_mismatched_availability_override_unavail) +DIAG_NAME_INDEX(warn_mismatched_delete_new) +DIAG_NAME_INDEX(warn_mismatched_nullability_attr) +DIAG_NAME_INDEX(warn_mismatched_section) +DIAG_NAME_INDEX(warn_misplaced_ellipsis_vararg) +DIAG_NAME_INDEX(warn_missing_braces) +DIAG_NAME_INDEX(warn_missing_case) +DIAG_NAME_INDEX(warn_missing_case_for_condition) +DIAG_NAME_INDEX(warn_missing_dependent_template_keyword) +DIAG_NAME_INDEX(warn_missing_explicit_synthesis) +DIAG_NAME_INDEX(warn_missing_field_initializers) +DIAG_NAME_INDEX(warn_missing_format_string) +DIAG_NAME_INDEX(warn_missing_method_return_type) +DIAG_NAME_INDEX(warn_missing_prototype) +DIAG_NAME_INDEX(warn_missing_selector_name) +DIAG_NAME_INDEX(warn_missing_sentinel) +DIAG_NAME_INDEX(warn_missing_submodule) +DIAG_NAME_INDEX(warn_missing_sysroot) +DIAG_NAME_INDEX(warn_missing_variable_declarations) +DIAG_NAME_INDEX(warn_missing_whitespace_after_macro_name) +DIAG_NAME_INDEX(warn_mixed_sign_comparison) +DIAG_NAME_INDEX(warn_mmap_incomplete_framework_module_declaration) +DIAG_NAME_INDEX(warn_mmap_mismatched_private_module_name) +DIAG_NAME_INDEX(warn_mmap_mismatched_private_submodule) +DIAG_NAME_INDEX(warn_mmap_redundant_export_as) +DIAG_NAME_INDEX(warn_mmap_umbrella_dir_not_found) +DIAG_NAME_INDEX(warn_mmap_unknown_attribute) +DIAG_NAME_INDEX(warn_modifying_shadowing_decl) +DIAG_NAME_INDEX(warn_module_config_macro_undef) +DIAG_NAME_INDEX(warn_module_config_mismatch) +DIAG_NAME_INDEX(warn_module_conflict) +DIAG_NAME_INDEX(warn_module_system_bit_conflict) +DIAG_NAME_INDEX(warn_module_uses_date_time) +DIAG_NAME_INDEX(warn_mt_message) +DIAG_NAME_INDEX(warn_multiple_method_decl) +DIAG_NAME_INDEX(warn_multiple_selectors) +DIAG_NAME_INDEX(warn_multiversion_duplicate_entries) +DIAG_NAME_INDEX(warn_namespace_member_extra_qualification) +DIAG_NAME_INDEX(warn_neon_vector_initializer_non_portable) +DIAG_NAME_INDEX(warn_nested_block_comment) +DIAG_NAME_INDEX(warn_new_dangling_initializer_list) +DIAG_NAME_INDEX(warn_new_dangling_reference) +DIAG_NAME_INDEX(warn_no_autosynthesis_property) +DIAG_NAME_INDEX(warn_no_autosynthesis_shared_ivar_property) +DIAG_NAME_INDEX(warn_no_constructor_for_refconst) +DIAG_NAME_INDEX(warn_no_newline_eof) +DIAG_NAME_INDEX(warn_no_priv_submodule_use_toplevel) +DIAG_NAME_INDEX(warn_no_underlying_type_specified_for_enum_bitfield) +DIAG_NAME_INDEX(warn_no_unlock) +DIAG_NAME_INDEX(warn_nocf_check_attribute_ignored) +DIAG_NAME_INDEX(warn_noderef_on_non_pointer_or_array) +DIAG_NAME_INDEX(warn_noderef_to_dereferenceable_pointer) +DIAG_NAME_INDEX(warn_non_contravariant_overriding_param_types) +DIAG_NAME_INDEX(warn_non_contravariant_param_types) +DIAG_NAME_INDEX(warn_non_covariant_overriding_ret_types) +DIAG_NAME_INDEX(warn_non_covariant_ret_types) +DIAG_NAME_INDEX(warn_non_literal_null_pointer) +DIAG_NAME_INDEX(warn_non_modular_include_in_framework_module) +DIAG_NAME_INDEX(warn_non_modular_include_in_module) +DIAG_NAME_INDEX(warn_non_pod_vararg_with_format_string) +DIAG_NAME_INDEX(warn_non_virtual_dtor) +DIAG_NAME_INDEX(warn_nonnull_expr_compare) +DIAG_NAME_INDEX(warn_noreturn_function_has_return_expr) +DIAG_NAME_INDEX(warn_not_a_doxygen_trailing_member_comment) +DIAG_NAME_INDEX(warn_not_compound_assign) +DIAG_NAME_INDEX(warn_not_enough_argument) +DIAG_NAME_INDEX(warn_not_in_enum) +DIAG_NAME_INDEX(warn_not_in_enum_assignment) +DIAG_NAME_INDEX(warn_npot_ms_struct) +DIAG_NAME_INDEX(warn_ns_attribute_wrong_parameter_type) +DIAG_NAME_INDEX(warn_ns_attribute_wrong_return_type) +DIAG_NAME_INDEX(warn_nsconsumed_attribute_mismatch) +DIAG_NAME_INDEX(warn_nsobject_attribute) +DIAG_NAME_INDEX(warn_nsreturns_retained_attribute_mismatch) +DIAG_NAME_INDEX(warn_null_arg) +DIAG_NAME_INDEX(warn_null_in_arithmetic_operation) +DIAG_NAME_INDEX(warn_null_in_comparison_operation) +DIAG_NAME_INDEX(warn_null_pointer_compare) +DIAG_NAME_INDEX(warn_null_resettable_setter) +DIAG_NAME_INDEX(warn_null_ret) +DIAG_NAME_INDEX(warn_null_statement) +DIAG_NAME_INDEX(warn_nullability_declspec) +DIAG_NAME_INDEX(warn_nullability_duplicate) +DIAG_NAME_INDEX(warn_nullability_inferred_on_nested_type) +DIAG_NAME_INDEX(warn_nullability_lost) +DIAG_NAME_INDEX(warn_nullability_missing) +DIAG_NAME_INDEX(warn_nullability_missing_array) +DIAG_NAME_INDEX(warn_objc_cdirective_format_string) +DIAG_NAME_INDEX(warn_objc_circular_container) +DIAG_NAME_INDEX(warn_objc_collection_literal_element) +DIAG_NAME_INDEX(warn_objc_designated_init_missing_super_call) +DIAG_NAME_INDEX(warn_objc_designated_init_non_designated_init_call) +DIAG_NAME_INDEX(warn_objc_designated_init_non_super_designated_init_call) +DIAG_NAME_INDEX(warn_objc_implementation_missing_designated_init_override) +DIAG_NAME_INDEX(warn_objc_invalid_bridge) +DIAG_NAME_INDEX(warn_objc_invalid_bridge_to_cf) +DIAG_NAME_INDEX(warn_objc_isa_assign) +DIAG_NAME_INDEX(warn_objc_isa_use) +DIAG_NAME_INDEX(warn_objc_literal_comparison) +DIAG_NAME_INDEX(warn_objc_missing_super_call) +DIAG_NAME_INDEX(warn_objc_pointer_cxx_catch_fragile) +DIAG_NAME_INDEX(warn_objc_pointer_masking) +DIAG_NAME_INDEX(warn_objc_pointer_masking_performSelector) +DIAG_NAME_INDEX(warn_objc_precise_lifetime_meaningless) +DIAG_NAME_INDEX(warn_objc_property_assign_on_object) +DIAG_NAME_INDEX(warn_objc_property_copy_missing_on_block) +DIAG_NAME_INDEX(warn_objc_property_default_assign_on_object) +DIAG_NAME_INDEX(warn_objc_property_no_assignment_attribute) +DIAG_NAME_INDEX(warn_objc_property_retain_of_block) +DIAG_NAME_INDEX(warn_objc_protocol_qualifier_missing_id) +DIAG_NAME_INDEX(warn_objc_readonly_property_has_setter) +DIAG_NAME_INDEX(warn_objc_redundant_literal_use) +DIAG_NAME_INDEX(warn_objc_redundant_qualified_class_type) +DIAG_NAME_INDEX(warn_objc_requires_super_protocol) +DIAG_NAME_INDEX(warn_objc_root_class_missing) +DIAG_NAME_INDEX(warn_objc_secondary_init_missing_init_call) +DIAG_NAME_INDEX(warn_objc_secondary_init_super_init_call) +DIAG_NAME_INDEX(warn_objc_string_literal_comparison) +DIAG_NAME_INDEX(warn_objc_unsafe_perform_selector) +DIAG_NAME_INDEX(warn_odr_tag_type_inconsistent) +DIAG_NAME_INDEX(warn_old_implicitly_unsigned_long) +DIAG_NAME_INDEX(warn_old_implicitly_unsigned_long_cxx) +DIAG_NAME_INDEX(warn_old_style_cast) +DIAG_NAME_INDEX(warn_omp_alignment_not_power_of_two) +DIAG_NAME_INDEX(warn_omp_extra_tokens_at_eol) +DIAG_NAME_INDEX(warn_omp_linear_step_zero) +DIAG_NAME_INDEX(warn_omp_loop_64_bit_var) +DIAG_NAME_INDEX(warn_omp_nesting_simd) +DIAG_NAME_INDEX(warn_omp_non_trivial_type_mapped) +DIAG_NAME_INDEX(warn_omp_not_in_target_context) +DIAG_NAME_INDEX(warn_omp_section_is_char) +DIAG_NAME_INDEX(warn_on_superclass_use) +DIAG_NAME_INDEX(warn_opencl_attr_deprecated_ignored) +DIAG_NAME_INDEX(warn_opencl_generic_address_space_arg) +DIAG_NAME_INDEX(warn_operator_new_returns_null) +DIAG_NAME_INDEX(warn_option_invalid_ocl_version) +DIAG_NAME_INDEX(warn_os_log_format_narg) +DIAG_NAME_INDEX(warn_out_of_range_compare) +DIAG_NAME_INDEX(warn_overaligned_type) +DIAG_NAME_INDEX(warn_overloaded_shift_in_comparison) +DIAG_NAME_INDEX(warn_overloaded_virtual) +DIAG_NAME_INDEX(warn_overriding_method_missing_noescape) +DIAG_NAME_INDEX(warn_padded_struct_anon_field) +DIAG_NAME_INDEX(warn_padded_struct_field) +DIAG_NAME_INDEX(warn_padded_struct_size) +DIAG_NAME_INDEX(warn_param_return_typestate_mismatch) +DIAG_NAME_INDEX(warn_param_typestate_mismatch) +DIAG_NAME_INDEX(warn_parameter_size) +DIAG_NAME_INDEX(warn_parens_disambiguated_as_function_declaration) +DIAG_NAME_INDEX(warn_parens_disambiguated_as_variable_declaration) +DIAG_NAME_INDEX(warn_pass_class_arg_to_vararg) +DIAG_NAME_INDEX(warn_pessimizing_move_on_initialization) +DIAG_NAME_INDEX(warn_pessimizing_move_on_return) +DIAG_NAME_INDEX(warn_pointer_abs) +DIAG_NAME_INDEX(warn_pointer_arith_null_ptr) +DIAG_NAME_INDEX(warn_pointer_indirection_from_incompatible_type) +DIAG_NAME_INDEX(warn_pp_ambiguous_macro) +DIAG_NAME_INDEX(warn_pp_convert_to_positive) +DIAG_NAME_INDEX(warn_pp_date_time) +DIAG_NAME_INDEX(warn_pp_expr_overflow) +DIAG_NAME_INDEX(warn_pp_hdrstop_filename_ignored) +DIAG_NAME_INDEX(warn_pp_line_decimal) +DIAG_NAME_INDEX(warn_pp_macro_def_mismatch_with_pch) +DIAG_NAME_INDEX(warn_pp_macro_hides_keyword) +DIAG_NAME_INDEX(warn_pp_macro_is_reserved_id) +DIAG_NAME_INDEX(warn_pp_objc_macro_redef_ignored) +DIAG_NAME_INDEX(warn_pp_undef_identifier) +DIAG_NAME_INDEX(warn_pragma_align_expected_equal) +DIAG_NAME_INDEX(warn_pragma_align_invalid_option) +DIAG_NAME_INDEX(warn_pragma_attribute_unused) +DIAG_NAME_INDEX(warn_pragma_begin_end_mismatch) +DIAG_NAME_INDEX(warn_pragma_comment_ignored) +DIAG_NAME_INDEX(warn_pragma_debug_missing_argument) +DIAG_NAME_INDEX(warn_pragma_debug_unexpected_command) +DIAG_NAME_INDEX(warn_pragma_diagnostic_cannot_pop) +DIAG_NAME_INDEX(warn_pragma_diagnostic_invalid) +DIAG_NAME_INDEX(warn_pragma_diagnostic_invalid_option) +DIAG_NAME_INDEX(warn_pragma_diagnostic_invalid_token) +DIAG_NAME_INDEX(warn_pragma_diagnostic_unknown_warning) +DIAG_NAME_INDEX(warn_pragma_expected_action_or_r_paren) +DIAG_NAME_INDEX(warn_pragma_expected_colon) +DIAG_NAME_INDEX(warn_pragma_expected_colon_r_paren) +DIAG_NAME_INDEX(warn_pragma_expected_comma) +DIAG_NAME_INDEX(warn_pragma_expected_identifier) +DIAG_NAME_INDEX(warn_pragma_expected_init_seg) +DIAG_NAME_INDEX(warn_pragma_expected_integer) +DIAG_NAME_INDEX(warn_pragma_expected_lparen) +DIAG_NAME_INDEX(warn_pragma_expected_non_wide_string) +DIAG_NAME_INDEX(warn_pragma_expected_predicate) +DIAG_NAME_INDEX(warn_pragma_expected_punc) +DIAG_NAME_INDEX(warn_pragma_expected_rparen) +DIAG_NAME_INDEX(warn_pragma_expected_section_label_or_name) +DIAG_NAME_INDEX(warn_pragma_expected_section_name) +DIAG_NAME_INDEX(warn_pragma_expected_section_push_pop_or_name) +DIAG_NAME_INDEX(warn_pragma_expected_string) +DIAG_NAME_INDEX(warn_pragma_extension_is_core) +DIAG_NAME_INDEX(warn_pragma_extra_tokens_at_eol) +DIAG_NAME_INDEX(warn_pragma_force_cuda_host_device_bad_arg) +DIAG_NAME_INDEX(warn_pragma_ignored) +DIAG_NAME_INDEX(warn_pragma_include_alias_expected) +DIAG_NAME_INDEX(warn_pragma_include_alias_expected_filename) +DIAG_NAME_INDEX(warn_pragma_include_alias_mismatch_angle) +DIAG_NAME_INDEX(warn_pragma_include_alias_mismatch_quote) +DIAG_NAME_INDEX(warn_pragma_init_seg_unsupported_target) +DIAG_NAME_INDEX(warn_pragma_intrinsic_builtin) +DIAG_NAME_INDEX(warn_pragma_invalid_action) +DIAG_NAME_INDEX(warn_pragma_invalid_argument) +DIAG_NAME_INDEX(warn_pragma_invalid_specific_action) +DIAG_NAME_INDEX(warn_pragma_message) +DIAG_NAME_INDEX(warn_pragma_missing_argument) +DIAG_NAME_INDEX(warn_pragma_ms_struct) +DIAG_NAME_INDEX(warn_pragma_omp_ignored) +DIAG_NAME_INDEX(warn_pragma_optimize) +DIAG_NAME_INDEX(warn_pragma_options_align_reset_failed) +DIAG_NAME_INDEX(warn_pragma_options_expected_align) +DIAG_NAME_INDEX(warn_pragma_pack_invalid_alignment) +DIAG_NAME_INDEX(warn_pragma_pack_malformed) +DIAG_NAME_INDEX(warn_pragma_pack_modified_after_include) +DIAG_NAME_INDEX(warn_pragma_pack_no_pop_eof) +DIAG_NAME_INDEX(warn_pragma_pack_non_default_at_include) +DIAG_NAME_INDEX(warn_pragma_pack_pop_identifier_and_alignment) +DIAG_NAME_INDEX(warn_pragma_pack_show) +DIAG_NAME_INDEX(warn_pragma_pop_failed) +DIAG_NAME_INDEX(warn_pragma_pop_macro_no_push) +DIAG_NAME_INDEX(warn_pragma_unknown_extension) +DIAG_NAME_INDEX(warn_pragma_unroll_cuda_value_in_parens) +DIAG_NAME_INDEX(warn_pragma_unsupported_action) +DIAG_NAME_INDEX(warn_pragma_unsupported_extension) +DIAG_NAME_INDEX(warn_pragma_unused_expected_var) +DIAG_NAME_INDEX(warn_pragma_unused_expected_var_arg) +DIAG_NAME_INDEX(warn_pragma_unused_undeclared_var) +DIAG_NAME_INDEX(warn_pragma_warning_expected) +DIAG_NAME_INDEX(warn_pragma_warning_expected_number) +DIAG_NAME_INDEX(warn_pragma_warning_push_level) +DIAG_NAME_INDEX(warn_pragma_warning_spec_invalid) +DIAG_NAME_INDEX(warn_precedence_bitwise_rel) +DIAG_NAME_INDEX(warn_precedence_conditional) +DIAG_NAME_INDEX(warn_printf_ObjCflags_without_ObjCConversion) +DIAG_NAME_INDEX(warn_printf_asterisk_missing_arg) +DIAG_NAME_INDEX(warn_printf_asterisk_wrong_type) +DIAG_NAME_INDEX(warn_printf_data_arg_not_used) +DIAG_NAME_INDEX(warn_printf_empty_objc_flag) +DIAG_NAME_INDEX(warn_printf_format_string_contains_null_char) +DIAG_NAME_INDEX(warn_printf_format_string_not_null_terminated) +DIAG_NAME_INDEX(warn_printf_ignored_flag) +DIAG_NAME_INDEX(warn_printf_incomplete_specifier) +DIAG_NAME_INDEX(warn_printf_insufficient_data_args) +DIAG_NAME_INDEX(warn_printf_invalid_objc_flag) +DIAG_NAME_INDEX(warn_printf_nonsensical_flag) +DIAG_NAME_INDEX(warn_printf_nonsensical_optional_amount) +DIAG_NAME_INDEX(warn_printf_positional_arg_exceeds_data_args) +DIAG_NAME_INDEX(warn_private_extern) +DIAG_NAME_INDEX(warn_profile_data_missing) +DIAG_NAME_INDEX(warn_profile_data_out_of_date) +DIAG_NAME_INDEX(warn_profile_data_unprofiled) +DIAG_NAME_INDEX(warn_property_access_suggest) +DIAG_NAME_INDEX(warn_property_attr_mismatch) +DIAG_NAME_INDEX(warn_property_attribute) +DIAG_NAME_INDEX(warn_property_getter_owning_mismatch) +DIAG_NAME_INDEX(warn_property_implicitly_mismatched) +DIAG_NAME_INDEX(warn_property_method_deprecated) +DIAG_NAME_INDEX(warn_property_redecl_getter_mismatch) +DIAG_NAME_INDEX(warn_property_types_are_incompatible) +DIAG_NAME_INDEX(warn_protocol_property_mismatch) +DIAG_NAME_INDEX(warn_pt_guarded_pass_by_reference) +DIAG_NAME_INDEX(warn_ptr_arith_exceeds_bounds) +DIAG_NAME_INDEX(warn_ptr_arith_precedes_bounds) +DIAG_NAME_INDEX(warn_ptr_independentclass_attribute) +DIAG_NAME_INDEX(warn_qual_return_type) +DIAG_NAME_INDEX(warn_quoted_include_in_framework_header) +DIAG_NAME_INDEX(warn_readonly_property) +DIAG_NAME_INDEX(warn_receiver_forward_class) +DIAG_NAME_INDEX(warn_receiver_forward_instance) +DIAG_NAME_INDEX(warn_redecl_library_builtin) +DIAG_NAME_INDEX(warn_redeclaration_without_attribute_prev_attribute_ignored) +DIAG_NAME_INDEX(warn_redeclaration_without_import_attribute) +DIAG_NAME_INDEX(warn_redefine_extname_not_applied) +DIAG_NAME_INDEX(warn_redefinition_in_param_list) +DIAG_NAME_INDEX(warn_redundant_loop_iteration) +DIAG_NAME_INDEX(warn_redundant_move_on_return) +DIAG_NAME_INDEX(warn_redundant_parens_around_declarator) +DIAG_NAME_INDEX(warn_reference_field_is_uninit) +DIAG_NAME_INDEX(warn_register_objc_catch_parm) +DIAG_NAME_INDEX(warn_reinterpret_different_from_static) +DIAG_NAME_INDEX(warn_related_result_type_compatibility_class) +DIAG_NAME_INDEX(warn_related_result_type_compatibility_protocol) +DIAG_NAME_INDEX(warn_remainder_division_by_zero) +DIAG_NAME_INDEX(warn_ret_addr_label) +DIAG_NAME_INDEX(warn_ret_local_temp_addr_ref) +DIAG_NAME_INDEX(warn_ret_stack_addr_ref) +DIAG_NAME_INDEX(warn_return_missing_expr) +DIAG_NAME_INDEX(warn_return_std_move) +DIAG_NAME_INDEX(warn_return_std_move_in_cxx11) +DIAG_NAME_INDEX(warn_return_typestate_for_unconsumable_type) +DIAG_NAME_INDEX(warn_return_typestate_mismatch) +DIAG_NAME_INDEX(warn_return_value_size) +DIAG_NAME_INDEX(warn_return_value_udt) +DIAG_NAME_INDEX(warn_return_value_udt_incomplete) +DIAG_NAME_INDEX(warn_riscv_repeated_interrupt_attribute) +DIAG_NAME_INDEX(warn_root_inst_method_not_found) +DIAG_NAME_INDEX(warn_sampler_initializer_invalid_bits) +DIAG_NAME_INDEX(warn_scanf_nonzero_width) +DIAG_NAME_INDEX(warn_scanf_scanlist_incomplete) +DIAG_NAME_INDEX(warn_second_arg_of_va_start_not_last_named_param) +DIAG_NAME_INDEX(warn_second_parameter_to_va_arg_never_compatible) +DIAG_NAME_INDEX(warn_second_parameter_to_va_arg_not_pod) +DIAG_NAME_INDEX(warn_second_parameter_to_va_arg_ownership_qualified) +DIAG_NAME_INDEX(warn_self_assignment_builtin) +DIAG_NAME_INDEX(warn_self_assignment_overloaded) +DIAG_NAME_INDEX(warn_self_move) +DIAG_NAME_INDEX(warn_semicolon_before_method_body) +DIAG_NAME_INDEX(warn_setter_getter_impl_required) +DIAG_NAME_INDEX(warn_setter_getter_impl_required_in_category) +DIAG_NAME_INDEX(warn_shadow_field) +DIAG_NAME_INDEX(warn_shift_gt_typewidth) +DIAG_NAME_INDEX(warn_shift_lhs_negative) +DIAG_NAME_INDEX(warn_shift_negative) +DIAG_NAME_INDEX(warn_shift_result_gt_typewidth) +DIAG_NAME_INDEX(warn_shift_result_sets_sign_bit) +DIAG_NAME_INDEX(warn_side_effects_typeid) +DIAG_NAME_INDEX(warn_side_effects_unevaluated_context) +DIAG_NAME_INDEX(warn_signed_bitfield_enum_conversion) +DIAG_NAME_INDEX(warn_sizeof_array_decay) +DIAG_NAME_INDEX(warn_sizeof_array_param) +DIAG_NAME_INDEX(warn_sizeof_pointer_expr_memaccess) +DIAG_NAME_INDEX(warn_sizeof_pointer_expr_memaccess_note) +DIAG_NAME_INDEX(warn_sizeof_pointer_type_memaccess) +DIAG_NAME_INDEX(warn_slash_u_filename) +DIAG_NAME_INDEX(warn_sometimes_uninit_var) +DIAG_NAME_INDEX(warn_standalone_specifier) +DIAG_NAME_INDEX(warn_static_array_too_small) +DIAG_NAME_INDEX(warn_static_inline_explicit_inst_ignored) +DIAG_NAME_INDEX(warn_static_local_in_extern_inline) +DIAG_NAME_INDEX(warn_static_main) +DIAG_NAME_INDEX(warn_static_self_reference_in_init) +DIAG_NAME_INDEX(warn_stdc_fenv_access_not_supported) +DIAG_NAME_INDEX(warn_stdlibcxx_not_found) +DIAG_NAME_INDEX(warn_strict_multiple_method_decl) +DIAG_NAME_INDEX(warn_strict_prototypes) +DIAG_NAME_INDEX(warn_string_plus_char) +DIAG_NAME_INDEX(warn_string_plus_int) +DIAG_NAME_INDEX(warn_stringcompare) +DIAG_NAME_INDEX(warn_strlcpycat_wrong_size) +DIAG_NAME_INDEX(warn_strncat_large_size) +DIAG_NAME_INDEX(warn_strncat_src_size) +DIAG_NAME_INDEX(warn_strncat_wrong_size) +DIAG_NAME_INDEX(warn_struct_class_previous_tag_mismatch) +DIAG_NAME_INDEX(warn_struct_class_tag_mismatch) +DIAG_NAME_INDEX(warn_sub_ptr_zero_size_types) +DIAG_NAME_INDEX(warn_subobject_initializer_overrides) +DIAG_NAME_INDEX(warn_subscript_is_char) +DIAG_NAME_INDEX(warn_suggest_noreturn_block) +DIAG_NAME_INDEX(warn_suggest_noreturn_function) +DIAG_NAME_INDEX(warn_superclass_variable_sized_type_not_at_end) +DIAG_NAME_INDEX(warn_suspicious_bzero_size) +DIAG_NAME_INDEX(warn_suspicious_sizeof_memset) +DIAG_NAME_INDEX(warn_sync_fetch_and_nand_semantics_change) +DIAG_NAME_INDEX(warn_taking_address_of_packed_member) +DIAG_NAME_INDEX(warn_target_unsupported_abs2008) +DIAG_NAME_INDEX(warn_target_unsupported_abslegacy) +DIAG_NAME_INDEX(warn_target_unsupported_compact_branches) +DIAG_NAME_INDEX(warn_target_unsupported_nan2008) +DIAG_NAME_INDEX(warn_target_unsupported_nanlegacy) +DIAG_NAME_INDEX(warn_tautological_bool_compare) +DIAG_NAME_INDEX(warn_tautological_constant_compare) +DIAG_NAME_INDEX(warn_tautological_overlap_comparison) +DIAG_NAME_INDEX(warn_template_arg_negative) +DIAG_NAME_INDEX(warn_template_arg_too_large) +DIAG_NAME_INDEX(warn_template_export_unsupported) +DIAG_NAME_INDEX(warn_template_qualified_friend_ignored) +DIAG_NAME_INDEX(warn_template_qualified_friend_unsupported) +DIAG_NAME_INDEX(warn_template_spec_extra_headers) +DIAG_NAME_INDEX(warn_tentative_incomplete_array) +DIAG_NAME_INDEX(warn_this_bool_conversion) +DIAG_NAME_INDEX(warn_this_null_compare) +DIAG_NAME_INDEX(warn_thread_attribute_argument_not_lockable) +DIAG_NAME_INDEX(warn_thread_attribute_decl_not_lockable) +DIAG_NAME_INDEX(warn_thread_attribute_decl_not_pointer) +DIAG_NAME_INDEX(warn_thread_attribute_ignored) +DIAG_NAME_INDEX(warn_thread_attribute_not_on_capability_member) +DIAG_NAME_INDEX(warn_thread_attribute_not_on_non_static_member) +DIAG_NAME_INDEX(warn_thread_safety_beta) +DIAG_NAME_INDEX(warn_thread_safety_verbose) +DIAG_NAME_INDEX(warn_throw_in_noexcept_func) +DIAG_NAME_INDEX(warn_transparent_union_attribute_field_size_align) +DIAG_NAME_INDEX(warn_transparent_union_attribute_floating) +DIAG_NAME_INDEX(warn_transparent_union_attribute_not_definition) +DIAG_NAME_INDEX(warn_transparent_union_attribute_zero_fields) +DIAG_NAME_INDEX(warn_type_attribute_wrong_type) +DIAG_NAME_INDEX(warn_type_safety_null_pointer_required) +DIAG_NAME_INDEX(warn_type_safety_type_mismatch) +DIAG_NAME_INDEX(warn_type_tag_for_datatype_wrong_kind) +DIAG_NAME_INDEX(warn_typecheck_function_qualifiers_ignored) +DIAG_NAME_INDEX(warn_typecheck_function_qualifiers_unspecified) +DIAG_NAME_INDEX(warn_typecheck_reference_qualifiers) +DIAG_NAME_INDEX(warn_typecheck_vector_element_sizes_not_equal) +DIAG_NAME_INDEX(warn_typecheck_zero_static_array_size) +DIAG_NAME_INDEX(warn_ucn_escape_incomplete) +DIAG_NAME_INDEX(warn_ucn_escape_no_digits) +DIAG_NAME_INDEX(warn_ucn_escape_surrogate) +DIAG_NAME_INDEX(warn_ucn_not_valid_in_c89) +DIAG_NAME_INDEX(warn_ucn_not_valid_in_c89_literal) +DIAG_NAME_INDEX(warn_unannotated_fallthrough) +DIAG_NAME_INDEX(warn_unannotated_fallthrough_per_function) +DIAG_NAME_INDEX(warn_unavailable_def) +DIAG_NAME_INDEX(warn_unavailable_fwdclass_message) +DIAG_NAME_INDEX(warn_uncovered_module_header) +DIAG_NAME_INDEX(warn_undeclared_selector) +DIAG_NAME_INDEX(warn_undeclared_selector_with_typo) +DIAG_NAME_INDEX(warn_undef_interface) +DIAG_NAME_INDEX(warn_undef_interface_suggest) +DIAG_NAME_INDEX(warn_undef_method_impl) +DIAG_NAME_INDEX(warn_undef_protocolref) +DIAG_NAME_INDEX(warn_undefined_inline) +DIAG_NAME_INDEX(warn_undefined_internal) +DIAG_NAME_INDEX(warn_undefined_reinterpret_cast) +DIAG_NAME_INDEX(warn_unguarded_availability) +DIAG_NAME_INDEX(warn_unguarded_availability_new) +DIAG_NAME_INDEX(warn_unhandled_ms_attribute_ignored) +DIAG_NAME_INDEX(warn_unimplemented_protocol_method) +DIAG_NAME_INDEX(warn_unimplemented_selector) +DIAG_NAME_INDEX(warn_uninit_byref_blockvar_captured_by_block) +DIAG_NAME_INDEX(warn_uninit_self_reference_in_init) +DIAG_NAME_INDEX(warn_uninit_self_reference_in_reference_init) +DIAG_NAME_INDEX(warn_uninit_var) +DIAG_NAME_INDEX(warn_unknown_attribute_ignored) +DIAG_NAME_INDEX(warn_unknown_comment_command_name) +DIAG_NAME_INDEX(warn_unknown_diag_option) +DIAG_NAME_INDEX(warn_unknown_sanitizer_ignored) +DIAG_NAME_INDEX(warn_unknown_warning_specifier) +DIAG_NAME_INDEX(warn_unlock_but_no_lock) +DIAG_NAME_INDEX(warn_unlock_kind_mismatch) +DIAG_NAME_INDEX(warn_unnecessary_packed) +DIAG_NAME_INDEX(warn_unneeded_internal_decl) +DIAG_NAME_INDEX(warn_unneeded_member_function) +DIAG_NAME_INDEX(warn_unneeded_static_internal_decl) +DIAG_NAME_INDEX(warn_unreachable) +DIAG_NAME_INDEX(warn_unreachable_break) +DIAG_NAME_INDEX(warn_unreachable_default) +DIAG_NAME_INDEX(warn_unreachable_loop_increment) +DIAG_NAME_INDEX(warn_unreachable_return) +DIAG_NAME_INDEX(warn_unsequenced_mod_mod) +DIAG_NAME_INDEX(warn_unsequenced_mod_use) +DIAG_NAME_INDEX(warn_unsigned_abs) +DIAG_NAME_INDEX(warn_unsigned_always_true_comparison) +DIAG_NAME_INDEX(warn_unsigned_bitfield_assigned_signed_enum) +DIAG_NAME_INDEX(warn_unsigned_enum_always_true_comparison) +DIAG_NAME_INDEX(warn_unsupported_lifetime_extension) +DIAG_NAME_INDEX(warn_unsupported_target_attribute) +DIAG_NAME_INDEX(warn_unused_call) +DIAG_NAME_INDEX(warn_unused_comparison) +DIAG_NAME_INDEX(warn_unused_const_variable) +DIAG_NAME_INDEX(warn_unused_container_subscript_expr) +DIAG_NAME_INDEX(warn_unused_exception_param) +DIAG_NAME_INDEX(warn_unused_expr) +DIAG_NAME_INDEX(warn_unused_function) +DIAG_NAME_INDEX(warn_unused_label) +DIAG_NAME_INDEX(warn_unused_lambda_capture) +DIAG_NAME_INDEX(warn_unused_local_typedef) +DIAG_NAME_INDEX(warn_unused_member_function) +DIAG_NAME_INDEX(warn_unused_parameter) +DIAG_NAME_INDEX(warn_unused_private_field) +DIAG_NAME_INDEX(warn_unused_property_backing_ivar) +DIAG_NAME_INDEX(warn_unused_property_expr) +DIAG_NAME_INDEX(warn_unused_result) +DIAG_NAME_INDEX(warn_unused_template) +DIAG_NAME_INDEX(warn_unused_variable) +DIAG_NAME_INDEX(warn_unused_voidptr) +DIAG_NAME_INDEX(warn_unused_volatile) +DIAG_NAME_INDEX(warn_use_in_invalid_state) +DIAG_NAME_INDEX(warn_use_of_private_header_outside_module) +DIAG_NAME_INDEX(warn_use_of_temp_in_invalid_state) +DIAG_NAME_INDEX(warn_used_but_marked_unused) +DIAG_NAME_INDEX(warn_user_literal_reserved) +DIAG_NAME_INDEX(warn_using_directive_in_header) +DIAG_NAME_INDEX(warn_utf8_symbol_homoglyph) +DIAG_NAME_INDEX(warn_utf8_symbol_zero_width) +DIAG_NAME_INDEX(warn_va_start_type_is_undefined) +DIAG_NAME_INDEX(warn_var_deref_requires_any_lock) +DIAG_NAME_INDEX(warn_var_deref_requires_lock) +DIAG_NAME_INDEX(warn_var_deref_requires_lock_precise) +DIAG_NAME_INDEX(warn_var_template_missing) +DIAG_NAME_INDEX(warn_variable_requires_any_lock) +DIAG_NAME_INDEX(warn_variable_requires_lock) +DIAG_NAME_INDEX(warn_variable_requires_lock_precise) +DIAG_NAME_INDEX(warn_variable_sized_ivar_visibility) +DIAG_NAME_INDEX(warn_variables_not_in_loop_body) +DIAG_NAME_INDEX(warn_vbase_moved_multiple_times) +DIAG_NAME_INDEX(warn_vector_long_decl_spec_combination) +DIAG_NAME_INDEX(warn_vector_mode_deprecated) +DIAG_NAME_INDEX(warn_verbatim_block_end_without_start) +DIAG_NAME_INDEX(warn_vla_used) +DIAG_NAME_INDEX(warn_weak_identifier_undeclared) +DIAG_NAME_INDEX(warn_weak_import) +DIAG_NAME_INDEX(warn_weak_template_vtable) +DIAG_NAME_INDEX(warn_weak_vtable) +DIAG_NAME_INDEX(warn_wrong_absolute_value_type) +DIAG_NAME_INDEX(warn_wrong_clang_attr_namespace) +DIAG_NAME_INDEX(warn_zero_as_null_pointer_constant) +DIAG_NAME_INDEX(warn_zero_size_struct_union_compat) +DIAG_NAME_INDEX(warn_zero_size_struct_union_in_extern_c) diff --git a/clang-r353983/include/clang/Basic/DiagnosticLex.h b/clang-r353983/include/clang/Basic/DiagnosticLex.h new file mode 100644 index 00000000..33789051 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticLex.h @@ -0,0 +1,28 @@ +//===--- DiagnosticLex.h - Diagnostics for liblex ---------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICLEX_H +#define LLVM_CLANG_BASIC_DIAGNOSTICLEX_H + +#include "clang/Basic/Diagnostic.h" + +namespace clang { +namespace diag { +enum { +#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \ + SHOWINSYSHEADER, CATEGORY) \ + ENUM, +#define LEXSTART +#include "clang/Basic/DiagnosticLexKinds.inc" +#undef DIAG + NUM_BUILTIN_LEX_DIAGNOSTICS +}; +} // end namespace diag +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTICLEX_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticLexKinds.inc b/clang-r353983/include/clang/Basic/DiagnosticLexKinds.inc new file mode 100644 index 00000000..a482bec7 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticLexKinds.inc @@ -0,0 +1,330 @@ +#ifdef LEXSTART +__LEXSTART = DIAG_START_LEX, +#undef LEXSTART +#endif + +DIAG(backslash_newline_space, CLASS_WARNING, (unsigned)diag::Severity::Warning, "backslash and newline separated by space", 54, SFINAE_Suppress, false, false, 1) +DIAG(err__Pragma_malformed, CLASS_ERROR, (unsigned)diag::Severity::Error, "_Pragma takes a parenthesized string literal", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_bad_character_encoding, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal character encoding in character literal", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_bad_string_encoding, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal character encoding in string literal", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_character_too_large, CLASS_ERROR, (unsigned)diag::Severity::Error, "character too large for enclosing character literal type", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_conflict_marker, CLASS_ERROR, (unsigned)diag::Severity::Error, "version control conflict marker in file", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_defined_macro_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "'defined' cannot be used as a macro name", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_digit_separator_not_between_digits, CLASS_ERROR, (unsigned)diag::Severity::Error, "digit separator cannot appear at %select{start|end}0 of digit sequence", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_embedded_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "embedding a #%0 directive within macro arguments is not supported", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_escape_too_large, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{hex|octal}0 escape sequence out of range", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_expected_id_building_module, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a module name in '__building_module' expression", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_exponent_has_no_digits, CLASS_ERROR, (unsigned)diag::Severity::Error, "exponent has no digits", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_feature_check_malformed, CLASS_ERROR, (unsigned)diag::Severity::Error, "builtin feature check macro requires a parenthesized identifier", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_hex_constant_requires, CLASS_ERROR, (unsigned)diag::Severity::Error, "hexadecimal floating %select{constant|literal}0 requires %select{an exponent|a significand}1", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_hex_escape_no_digits, CLASS_ERROR, (unsigned)diag::Severity::Error, "\\%0 used with no following hex digits", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_invalid_char_raw_delim, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid character '%0' character in raw string delimiter; use PREFIX( )PREFIX to delimit raw string", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_invalid_character_to_charify, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument to convert to character", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_invalid_digit, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid digit '%0' in %select{decimal|octal|binary}1 constant", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_invalid_suffix_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid suffix '%0' on %select{integer|floating}1 constant", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_invalid_utf8, CLASS_ERROR, (unsigned)diag::Severity::Error, "source file is not valid UTF-8", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_lexing_string, CLASS_ERROR, (unsigned)diag::Severity::Error, "failure when lexing a string", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_config_macro_submodule, CLASS_ERROR, (unsigned)diag::Severity::Error, "configuration macros are only allowed in top-level modules", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_conflicting_export_as, CLASS_ERROR, (unsigned)diag::Severity::Error, "conflicting re-export of module '%0' as '%1' or '%2'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_duplicate_header_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "header attribute '%0' specified multiple times", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected an attribute name", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_config_macro, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected configuration macro name after ','", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_conflicts_comma, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ',' after conflicting module name", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_conflicts_message, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a message describing the conflict with '%0'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_export_wildcard, CLASS_ERROR, (unsigned)diag::Severity::Error, "only '*' can be exported from an inferred submodule", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_feature, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a feature name", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_header, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a header name after '%0'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_header_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a header attribute name ('size' or 'mtime')", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_inferred_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected %select{module exclusion with 'exclude'|'export *'}0", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_lbrace, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '{' to start module '%0'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_lbrace_wildcard, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '{' to start inferred submodule", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_library_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected %select{library|framework}0 name as a string", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected umbrella, header, submodule, or module export", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_mmap_file, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a module map file name", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_module, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected module declaration", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_module_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected module name", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_rbrace, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '}'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_expected_rsquare, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ']' to close attribute", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_explicit_inferred_framework, CLASS_ERROR, (unsigned)diag::Severity::Error, "inferred framework modules cannot be 'explicit'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_explicit_top_level, CLASS_ERROR, (unsigned)diag::Severity::Error, "'explicit' is not permitted on top-level modules", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_inferred_framework_submodule, CLASS_ERROR, (unsigned)diag::Severity::Error, "inferred submodule cannot be a framework submodule", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_inferred_no_umbrella, CLASS_ERROR, (unsigned)diag::Severity::Error, "inferred submodules require a module with an umbrella", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_inferred_redef, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of inferred submodule", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_invalid_header_attribute_value, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected integer literal as value for header attribute '%0'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_missing_exclude_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected excluded module name", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_missing_module_qualified, CLASS_ERROR, (unsigned)diag::Severity::Error, "no module named '%0' in '%1'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_missing_module_unqualified, CLASS_ERROR, (unsigned)diag::Severity::Error, "no module named '%0' visible from '%1'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_module_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a module name or '*'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_module_redefinition, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of module '%0'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_nested_submodule_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "qualified module name can only be used to define modules at the top level", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_submodule_export_as, CLASS_ERROR, (unsigned)diag::Severity::Error, "only top-level modules can be re-exported as public", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_top_level_inferred_submodule, CLASS_ERROR, (unsigned)diag::Severity::Error, "only submodules and framework modules may be inferred with wildcard syntax", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_umbrella_clash, CLASS_ERROR, (unsigned)diag::Severity::Error, "umbrella for module '%0' already covers this directory", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_unknown_token, CLASS_ERROR, (unsigned)diag::Severity::Error, "skipping stray token", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_mmap_use_decl_submodule, CLASS_ERROR, (unsigned)diag::Severity::Error, "use declarations are only allowed in top-level modules", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_multichar_utf_character_literal, CLASS_ERROR, (unsigned)diag::Severity::Error, "Unicode character literals may not contain multiple characters", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_non_ascii, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-ASCII characters are not allowed outside of literals and identifiers", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pascal_string_too_long, CLASS_ERROR, (unsigned)diag::Severity::Error, "Pascal string is too long", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_paste_at_end, CLASS_ERROR, (unsigned)diag::Severity::Error, "'##' cannot appear at end of macro expansion", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_paste_at_start, CLASS_ERROR, (unsigned)diag::Severity::Error, "'##' cannot appear at start of macro expansion", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_placeholder_in_source, CLASS_ERROR, (unsigned)diag::Severity::Error, "editor placeholder in source file", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_arc_cf_code_audited_syntax, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected 'begin' or 'end'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_assume_nonnull_syntax, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected 'begin' or 'end'", 0, SFINAE_SubstitutionFailure, false, true, 19) +DIAG(err_pp_bad_paste, CLASS_ERROR, (unsigned)diag::Severity::Error, "pasting formed '%0', an invalid preprocessing token", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_colon_without_question, CLASS_ERROR, (unsigned)diag::Severity::Error, "':' without preceding '?'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_directive_required, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 must be used within a preprocessing directive", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_division_by_zero, CLASS_ERROR, (unsigned)diag::Severity::Error, "division by zero in preprocessor expression", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_double_begin_of_arc_cf_code_audited, CLASS_ERROR, (unsigned)diag::Severity::Error, "already inside '#pragma clang arc_cf_code_audited'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_double_begin_of_assume_nonnull, CLASS_ERROR, (unsigned)diag::Severity::Error, "already inside '#pragma clang assume_nonnull'", 0, SFINAE_SubstitutionFailure, false, true, 19) +DIAG(err_pp_duplicate_name_in_arg_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate macro parameter name %0", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_empty_filename, CLASS_ERROR, (unsigned)diag::Severity::Error, "empty filename", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_endif_without_if, CLASS_ERROR, (unsigned)diag::Severity::Error, "#endif without #if", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_eof_in_arc_cf_code_audited, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma clang arc_cf_code_audited' was not ended within this file", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_eof_in_assume_nonnull, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma clang assume_nonnull' was not ended within this file", 0, SFINAE_SubstitutionFailure, false, true, 19) +DIAG(err_pp_error_opening_file, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "error opening file '%0': %1", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_expected_after, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing %1 after %0", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_expected_comma_in_arg_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected comma in macro parameter list", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_expected_eol, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected end of line in preprocessor expression", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_expected_ident_in_arg_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected identifier in macro parameter list", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_expected_module_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected %select{identifier after '.' in |}0module name", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_expected_rparen, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ')' in preprocessor expression", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_expected_value_in_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected value in expression", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_expects_filename, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected \"FILENAME\" or <FILENAME>", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_expr_bad_token_binop, CLASS_ERROR, (unsigned)diag::Severity::Error, "token is not a valid binary operator in a preprocessor subexpression", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_expr_bad_token_lparen, CLASS_ERROR, (unsigned)diag::Severity::Error, "function-like macro %0 is not defined", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_expr_bad_token_start_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid token at start of a preprocessor expression", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_file_not_found, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "'%0' file not found", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_file_not_found_angled_include_not_fatal, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' file not found with <angled> include; use \"quotes\" instead", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_file_not_found_typo_not_fatal, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' file not found, did you mean '%1'?", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_hash_error, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0", 0, SFINAE_SubstitutionFailure, false, true, 21) +DIAG(err_pp_identifier_arg_not_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot convert %0 token to an identifier", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_illegal_floating_literal, CLASS_ERROR, (unsigned)diag::Severity::Error, "floating point literal in preprocessor expression", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_import_directive_ms, CLASS_ERROR, (unsigned)diag::Severity::Error, "#import of type library is an unsupported Microsoft feature", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_include_in_arc_cf_code_audited, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot #include files inside '#pragma clang arc_cf_code_audited'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_include_in_assume_nonnull, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot #include files inside '#pragma clang assume_nonnull'", 0, SFINAE_SubstitutionFailure, false, true, 19) +DIAG(err_pp_include_too_deep, CLASS_ERROR, (unsigned)diag::Severity::Error, "#include nested too deeply", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_invalid_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid preprocessing directive", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_invalid_poison, CLASS_ERROR, (unsigned)diag::Severity::Error, "can only poison identifier tokens", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_invalid_tok_in_arg_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid token in macro parameter list", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_invalid_udl, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{character|integer}0 literal with user-defined suffix cannot be used in preprocessor constant expression", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_line_digit_sequence, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{#line|GNU line marker}0 directive requires a simple digit sequence", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_line_invalid_filename, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid filename for #line directive", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_line_requires_integer, CLASS_ERROR, (unsigned)diag::Severity::Error, "#line directive requires a positive integer argument", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_linemarker_invalid_filename, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid filename for line marker directive", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_linemarker_invalid_flag, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid flag line marker directive", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_linemarker_invalid_pop, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid line marker flag '2': cannot pop empty include stack", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_linemarker_requires_integer, CLASS_ERROR, (unsigned)diag::Severity::Error, "line marker directive requires a positive integer argument", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_macro_not_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "macro name must be an identifier", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_malformed_ident, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid #ident directive", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_missing_lparen_in_vaopt_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing '(' following __VA_OPT__", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_missing_macro_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "macro name missing", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_missing_rparen_in_macro_def, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing ')' in macro parameter list", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_module_begin_no_module_map, CLASS_ERROR, (unsigned)diag::Severity::Error, "no module map available for module %0", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_module_begin_no_submodule, CLASS_ERROR, (unsigned)diag::Severity::Error, "submodule %0.%1 not declared in module map", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_module_begin_without_module_end, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching '#pragma clang module end' for this '#pragma clang module begin'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_module_begin_wrong_module, CLASS_ERROR, (unsigned)diag::Severity::Error, "must specify '-fmodule-name=%0' to enter %select{|submodule of }1this module%select{ (current module is %3)|}2", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_module_build_missing_end, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching '#pragma clang module endbuild' for this '#pragma clang module build'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_module_end_without_module_begin, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching '#pragma clang module begin' for this '#pragma clang module end'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_nested_paren, CLASS_ERROR, (unsigned)diag::Severity::Error, "nested parentheses not permitted in %0", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_opencl_variadic_macros, CLASS_ERROR, (unsigned)diag::Severity::Error, "variadic macros not supported in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_operator_used_as_macro_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "C++ operator %0 (aka %1) used as a macro name", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_pragma_hdrstop_not_seen, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "#pragma hdrstop not seen while attempting to use precompiled header", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_remainder_by_zero, CLASS_ERROR, (unsigned)diag::Severity::Error, "remainder by zero in preprocessor expression", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_stringize_not_parameter, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%select{#|#@}0' is not followed by a macro parameter", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_through_header_not_found, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "'%0' required for precompiled header not found", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_through_header_not_seen, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "#include of '%0' not seen while attempting to %select{create|use}1 precompiled header", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_unmatched_end_of_arc_cf_code_audited, CLASS_ERROR, (unsigned)diag::Severity::Error, "not currently inside '#pragma clang arc_cf_code_audited'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_unmatched_end_of_assume_nonnull, CLASS_ERROR, (unsigned)diag::Severity::Error, "not currently inside '#pragma clang assume_nonnull'", 0, SFINAE_SubstitutionFailure, false, true, 19) +DIAG(err_pp_unterminated_conditional, CLASS_ERROR, (unsigned)diag::Severity::Error, "unterminated conditional directive", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_used_poisoned_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "attempt to use a poisoned identifier", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_vaopt_nested_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "__VA_OPT__ cannot be nested within its own replacement tokens", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pp_visibility_non_macro, CLASS_ERROR, (unsigned)diag::Severity::Error, "no macro named %0", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pragma_message, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pragma_message_malformed, CLASS_ERROR, (unsigned)diag::Severity::Error, "pragma %select{message|warning|error}0 requires parenthesized string", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_pragma_push_pop_macro_malformed, CLASS_ERROR, (unsigned)diag::Severity::Error, "pragma %0 requires a parenthesized string", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_raw_delim_too_long, CLASS_ERROR, (unsigned)diag::Severity::Error, "raw string delimiter longer than 16 characters; use PREFIX( )PREFIX to delimit raw string", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_string_concat_mixed_suffix, CLASS_ERROR, (unsigned)diag::Severity::Error, "differing user-defined suffixes ('%0' and '%1') in string literal concatenation", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_too_few_args_in_macro_invoc, CLASS_ERROR, (unsigned)diag::Severity::Error, "too few arguments provided to function-like macro invocation", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_too_many_args_in_macro_invoc, CLASS_ERROR, (unsigned)diag::Severity::Error, "too many arguments provided to function-like macro invocation", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_ucn_control_character, CLASS_ERROR, (unsigned)diag::Severity::Error, "universal character name refers to a control character", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_ucn_escape_basic_scs, CLASS_ERROR, (unsigned)diag::Severity::Error, "character '%0' cannot be specified by a universal character name", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_ucn_escape_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "incomplete universal character name", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_ucn_escape_invalid, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid universal character", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_undeclared_use_of_module, CLASS_ERROR, (unsigned)diag::Severity::Error, "module %0 does not depend on a module exporting '%1'", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_unsupported_string_concat, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported non-standard concatenation of string literals", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_unterm_macro_invoc, CLASS_ERROR, (unsigned)diag::Severity::Error, "unterminated function-like macro invocation", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_unterminated___pragma, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing terminating ')' character", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_unterminated_block_comment, CLASS_ERROR, (unsigned)diag::Severity::Error, "unterminated /* comment", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_unterminated_raw_string, CLASS_ERROR, (unsigned)diag::Severity::Error, "raw string missing terminating delimiter )%0\"", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_vaopt_paste_at_end, CLASS_ERROR, (unsigned)diag::Severity::Error, "'##' cannot appear at end of __VA_OPT__ argument", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(err_vaopt_paste_at_start, CLASS_ERROR, (unsigned)diag::Severity::Error, "'##' cannot appear at start of __VA_OPT__ argument", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(escaped_newline_block_comment_end, CLASS_WARNING, (unsigned)diag::Severity::Warning, "escaped newline between */ characters at block comment end", 126, SFINAE_Suppress, false, false, 1) +DIAG(ext_binary_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "binary integer literals are a GNU extension", 257, SFINAE_Suppress, false, false, 1) +DIAG(ext_binary_literal_cxx14, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "binary integer literals are a C++14 extension", 84, SFINAE_Suppress, false, false, 1) +DIAG(ext_c99_whitespace_required_after_macro_name, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C99 requires whitespace after the macro name", 114, SFINAE_Suppress, false, false, 1) +DIAG(ext_charize_microsoft, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "charizing operator #@ is a Microsoft extension", 374, SFINAE_Suppress, false, false, 1) +DIAG(ext_comment_paste_microsoft, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "pasting two '/' tokens into a '//' comment is a Microsoft extension", 375, SFINAE_Suppress, false, false, 1) +DIAG(ext_ctrl_z_eof_microsoft, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "treating Ctrl-Z as end-of-file is a Microsoft extension", 379, SFINAE_Suppress, false, false, 1) +DIAG(ext_dollar_in_identifier, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'$' in identifier", 191, SFINAE_Suppress, false, false, 1) +DIAG(ext_embedded_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "embedding a directive within macro arguments has undefined behavior", 201, SFINAE_Suppress, false, false, 1) +DIAG(ext_empty_character, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "empty character constant", 345, SFINAE_Suppress, false, false, 1) +DIAG(ext_empty_fnmacro_arg, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "empty macro arguments are a C99 feature", 114, SFINAE_Suppress, false, false, 1) +DIAG(ext_four_char_character_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "multi-character character constant", 244, SFINAE_Suppress, false, false, 1) +DIAG(ext_hex_constant_invalid, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "hexadecimal floating constants are a C99 feature", 114, SFINAE_Suppress, false, false, 1) +DIAG(ext_hex_literal_invalid, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "hexadecimal floating literals are a C++17 feature", 91, SFINAE_Suppress, false, false, 1) +DIAG(ext_line_comment, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "// comments are not allowed in this language", 126, SFINAE_Suppress, false, false, 1) +DIAG(ext_missing_varargs_arg, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "must specify at least one argument for '...' parameter of variadic macro", 278, SFINAE_Suppress, false, false, 1) +DIAG(ext_missing_whitespace_after_macro_name, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "whitespace required after macro name", 0, SFINAE_Suppress, false, false, 1) +DIAG(ext_ms_reserved_user_defined_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "invalid suffix on literal; C++11 requires a space between literal and identifier", 570, SFINAE_Suppress, false, false, 1) +DIAG(ext_multi_line_line_comment, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "multi-line // comment", 126, SFINAE_Suppress, false, false, 1) +DIAG(ext_multichar_character_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "multi-character character constant", 429, SFINAE_Suppress, false, false, 1) +DIAG(ext_named_variadic_macro, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "named variadic macros are a GNU extension", 744, SFINAE_Suppress, false, false, 1) +DIAG(ext_no_newline_eof, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "no newline at end of file", 435, SFINAE_Suppress, false, false, 1) +DIAG(ext_nonstandard_escape, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of non-standard escape character '\\%0'", 527, SFINAE_Suppress, false, false, 1) +DIAG(ext_on_off_switch_syntax, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "expected 'ON' or 'OFF' or 'DEFAULT' in pragma", 696, SFINAE_Suppress, false, false, 1) +DIAG(ext_paste_comma, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "token pasting of ',' and __VA_ARGS__ is a GNU extension", 278, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_bad_paste_ms, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "pasting formed '%0', an invalid preprocessing token", 347, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_bad_vaargs_use, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro", 527, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_bad_vaopt_use, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "__VA_OPT__ can only appear in the expansion of a variadic macro", 744, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_comma_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "comma operator in operand of #if", 527, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_extra_tokens_at_eol, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "extra tokens at end of #%0 directive", 224, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_ident_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#ident is a language extension", 527, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_import_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#import is a language extension", 302, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_include_next_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#include_next is a language extension", 269, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_include_search_ms, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#include resolved using non-portable Microsoft search rules as: %0", 390, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_line_too_big, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C requires #line number to be less than %0, allowed as extension", 527, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_line_zero, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#line directive with zero argument is a GNU extension", 277, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_macro_redef, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%0 macro redefined", 362, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_operator_used_as_macro_name, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C++ operator %0 (aka %1) used as a macro name", 377, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_redef_builtin_macro, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "redefining builtin macro", 68, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_undef_builtin_macro, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "undefining builtin macro", 68, SFINAE_Suppress, false, false, 1) +DIAG(ext_pp_warning_directive, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "#warning is a language extension", 527, SFINAE_Suppress, false, false, 1) +DIAG(ext_pragma_syntax_eod, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "expected end of directive in pragma", 696, SFINAE_Suppress, false, false, 1) +DIAG(ext_reserved_user_defined_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "invalid suffix on literal; C++11 requires a space between literal and identifier", 570, SFINAE_Suppress, false, false, 1) +DIAG(ext_string_too_long, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "string literal of length %0 exceeds maximum length %1 that %select{C90|ISO C99|C++}2 compilers are required to support", 510, SFINAE_Suppress, false, false, 1) +DIAG(ext_token_used, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "extension used", 352, SFINAE_Suppress, false, false, 1) +DIAG(ext_unicode_whitespace, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "treating Unicode character as whitespace", 690, SFINAE_Suppress, false, false, 1) +DIAG(ext_unknown_escape, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unknown escape sequence '\\%0'", 695, SFINAE_Suppress, false, false, 1) +DIAG(ext_unterminated_char_or_string, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "missing terminating %select{'|'\"'}0 character", 345, SFINAE_Suppress, false, false, 1) +DIAG(ext_variadic_macro, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "variadic macros are a C99 feature", 744, SFINAE_Suppress, false, false, 1) +DIAG(note_header_guard, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 is defined here; did you mean %1?", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_implicit_top_level_module_import_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "submodule of top-level module '%0' implicitly imported here", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_init_list_at_beginning_of_macro_argument, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "cannot use initializer list at the beginning of a macro argument", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_macro_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "macro %0 defined here", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_mmap_add_framework_keyword, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use 'framework module' to declare module '%0'", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_mmap_lbrace_match, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "to match this '{'", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_mmap_lsquare_match, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "to match this ']'", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_mmap_prev_definition, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previously defined here", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_mmap_rename_top_level_private_module, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "rename '%0' to ensure it can be found by name", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_pp_ambiguous_macro_chosen, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "expanding this definition of %0", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_pp_ambiguous_macro_other, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "other definition of %0", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_pp_framework_without_header, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did not find header '%0' in framework '%1' (loaded from '%2')", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_pp_module_begin_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "entering module '%0' due to this pragma", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_suggest_parens_for_macro, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "parentheses are required around macro argument containing braced initializer list", 0, SFINAE_Suppress, false, false, 1) +DIAG(note_ucn_four_not_eight, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean to use '\\u'?", 0, SFINAE_Suppress, false, false, 1) +DIAG(null_in_char_or_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "null character(s) preserved in %select{char|string}0 literal", 453, SFINAE_Suppress, false, false, 1) +DIAG(null_in_file, CLASS_WARNING, (unsigned)diag::Severity::Warning, "null character ignored", 453, SFINAE_Suppress, false, false, 1) +DIAG(pp_disabled_macro_expansion, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "disabled expansion of recursive macro", 177, SFINAE_Suppress, false, false, 1) +DIAG(pp_err_elif_after_else, CLASS_ERROR, (unsigned)diag::Severity::Error, "#elif after #else", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(pp_err_elif_without_if, CLASS_ERROR, (unsigned)diag::Severity::Error, "#elif without #if", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(pp_err_else_after_else, CLASS_ERROR, (unsigned)diag::Severity::Error, "#else after #else", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(pp_err_else_without_if, CLASS_ERROR, (unsigned)diag::Severity::Error, "#else without #if", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(pp_hash_warning, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 2, SFINAE_Suppress, false, true, 21) +DIAG(pp_include_macros_out_of_predefines, CLASS_ERROR, (unsigned)diag::Severity::Error, "the #__include_macros directive is only for internal use by -imacros", 0, SFINAE_SubstitutionFailure, false, true, 1) +DIAG(pp_include_next_absolute_path, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#include_next with absolute path", 304, SFINAE_Suppress, false, false, 1) +DIAG(pp_include_next_in_primary, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#include_next in primary source file", 305, SFINAE_Suppress, false, false, 1) +DIAG(pp_invalid_string_literal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid string literal, ignoring final '\\'", 0, SFINAE_Suppress, false, false, 1) +DIAG(pp_macro_not_used, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "macro is not used", 730, SFINAE_Suppress, false, false, 1) +DIAG(pp_nonportable_path, CLASS_WARNING, (unsigned)diag::Severity::Warning, "non-portable path to file '%0'; specified path differs in case from file name on disk", 446, SFINAE_Suppress, false, false, 1) +DIAG(pp_nonportable_system_path, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-portable path to file '%0'; specified path differs in case from file name on disk", 447, SFINAE_Suppress, false, false, 1) +DIAG(pp_out_of_date_dependency, CLASS_WARNING, (unsigned)diag::Severity::Warning, "current file is older than dependency %0", 0, SFINAE_Suppress, false, false, 1) +DIAG(pp_poisoning_existing_macro, CLASS_WARNING, (unsigned)diag::Severity::Warning, "poisoning existing macro", 0, SFINAE_Suppress, false, false, 1) +DIAG(pp_pragma_once_in_main_file, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma once in main file", 538, SFINAE_Suppress, false, false, 1) +DIAG(pp_pragma_sysheader_in_main_file, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma system_header ignored in main file", 541, SFINAE_Suppress, false, false, 1) +DIAG(trigraph_converted, CLASS_WARNING, (unsigned)diag::Severity::Warning, "trigraph converted to '%0' character", 669, SFINAE_Suppress, false, false, 1) +DIAG(trigraph_ends_block_comment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "trigraph ends block comment", 669, SFINAE_Suppress, false, false, 1) +DIAG(trigraph_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "trigraph ignored", 669, SFINAE_Suppress, false, false, 1) +DIAG(trigraph_ignored_block_comment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignored trigraph would end block comment", 669, SFINAE_Suppress, false, false, 1) +DIAG(warn_auto_module_import, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "treating #%select{include|import|include_next|__include_macros}0 as an import of module '%1'", 49, SFINAE_Suppress, false, false, 1) +DIAG(warn_bad_character_encoding, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "illegal character encoding in character literal", 346, SFINAE_Suppress, false, false, 1) +DIAG(warn_bad_string_encoding, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "illegal character encoding in string literal", 346, SFINAE_Suppress, false, false, 1) +DIAG(warn_c99_compat_unicode_id, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{using this character in an identifier|starting an identifier with this character}0 is incompatible with C99", 113, SFINAE_Suppress, false, false, 1) +DIAG(warn_c99_compat_unicode_literal, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unicode literals are incompatible with C99", 113, SFINAE_Suppress, false, false, 1) +DIAG(warn_char_constant_too_large, CLASS_WARNING, (unsigned)diag::Severity::Warning, "character constant too long for its type", 0, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx11_compat_binary_literal, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "binary integer literals are incompatible with C++ standards before C++14", 104, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx11_compat_digit_separator, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "digit separators are incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx11_compat_reserved_user_defined_literal, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "identifier after literal will be treated as a reserved user-defined literal suffix in C++11", 78, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx11_compat_user_defined_literal, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "identifier after literal will be treated as a user-defined literal suffix in C++11", 75, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx11_keyword, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%0' is a keyword in C++11", 75, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx14_compat_u8_character_literal, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unicode literals are incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx17_compat_spaceship, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'<=>' operator is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx17_hex_literal, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "hexadecimal floating literals are incompatible with C++ standards before C++17", 102, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx2a_compat_spaceship, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'<=>' is a single token in C++2a; add a space to avoid a change in behavior", 96, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx2a_keyword, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%0' is a keyword in C++2a", 96, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx98_compat_empty_fnmacro_arg, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "empty macro arguments are incompatible with C++98", 110, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx98_compat_less_colon_colon, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'<::' is treated as digraph '<:' (aka '[') followed by ':' in C++98", 106, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx98_compat_literal_ucn_control_character, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "universal character name referring to a control character is incompatible with C++98", 106, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx98_compat_literal_ucn_escape_basic_scs, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "specifying character '%0' with a universal character name is incompatible with C++98", 106, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx98_compat_no_newline_eof, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "C++98 requires newline at end of file", 110, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx98_compat_pp_line_too_big, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "#line number greater than 32767 is incompatible with C++98", 110, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx98_compat_raw_string_literal, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "raw string literals are incompatible with C++98", 106, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx98_compat_unicode_id, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using this character in an identifier is incompatible with C++98", 106, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx98_compat_unicode_literal, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unicode literals are incompatible with C++98", 106, SFINAE_Suppress, false, false, 1) +DIAG(warn_cxx98_compat_variadic_macro, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variadic macros are incompatible with C++98", 110, SFINAE_Suppress, false, false, 1) +DIAG(warn_defined_in_function_type_macro, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "macro expansion producing 'defined' has undefined behavior", 214, SFINAE_Suppress, false, false, 1) +DIAG(warn_defined_in_object_type_macro, CLASS_WARNING, (unsigned)diag::Severity::Warning, "macro expansion producing 'defined' has undefined behavior", 214, SFINAE_Suppress, false, false, 1) +DIAG(warn_extraneous_char_constant, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extraneous characters in character constant ignored", 0, SFINAE_Suppress, false, false, 1) +DIAG(warn_framework_include_private_from_public, CLASS_WARNING, (unsigned)diag::Severity::Warning, "public framework header includes private framework header '%0'", 246, SFINAE_Suppress, false, false, 1) +DIAG(warn_has_warning_invalid_option, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "__has_warning expected option name (e.g. \"-Wundef\")", 365, SFINAE_Suppress, false, false, 1) +DIAG(warn_header_guard, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is used as a header guard here, followed by #define of a different macro", 279, SFINAE_Suppress, false, false, 1) +DIAG(warn_missing_whitespace_after_macro_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "whitespace recommended after macro name", 0, SFINAE_Suppress, false, false, 1) +DIAG(warn_mmap_incomplete_framework_module_declaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "skipping '%0' because module declaration of '%1' lacks the 'framework' qualifier", 314, SFINAE_Suppress, false, false, 1) +DIAG(warn_mmap_mismatched_private_module_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected canonical name for private module '%0'", 546, SFINAE_Suppress, false, false, 1) +DIAG(warn_mmap_mismatched_private_submodule, CLASS_WARNING, (unsigned)diag::Severity::Warning, "private submodule '%0' in private module map, expected top-level module", 546, SFINAE_Suppress, false, false, 1) +DIAG(warn_mmap_redundant_export_as, CLASS_WARNING, (unsigned)diag::Severity::Warning, "module '%0' already re-exported as '%1'", 546, SFINAE_Suppress, false, false, 1) +DIAG(warn_mmap_umbrella_dir_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "umbrella directory '%0' not found", 317, SFINAE_Suppress, false, false, 1) +DIAG(warn_mmap_unknown_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown attribute '%0'", 282, SFINAE_Suppress, false, false, 1) +DIAG(warn_module_conflict, CLASS_WARNING, (unsigned)diag::Severity::Warning, "module '%0' conflicts with already-imported module '%1': %2", 419, SFINAE_Suppress, false, false, 1) +DIAG(warn_nested_block_comment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'/*' within block comment", 126, SFINAE_Suppress, false, false, 1) +DIAG(warn_no_newline_eof, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "no newline at end of file", 435, SFINAE_Suppress, false, false, 1) +DIAG(warn_non_modular_include_in_framework_module, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "include of non-modular header inside framework module '%0': '%1'", 440, SFINAE_Suppress, false, false, 1) +DIAG(warn_non_modular_include_in_module, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "include of non-modular header inside module '%0': '%1'", 441, SFINAE_Suppress, false, false, 1) +DIAG(warn_pp_ambiguous_macro, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ambiguous expansion of macro %0", 19, SFINAE_Suppress, false, false, 1) +DIAG(warn_pp_convert_to_positive, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{left|right}0 side of operator converted from negative value to unsigned: %1", 0, SFINAE_Suppress, false, false, 1) +DIAG(warn_pp_date_time, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "expansion of date or time macro is not reproducible", 154, SFINAE_Suppress, false, true, 1) +DIAG(warn_pp_expr_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "integer overflow in preprocessor expression", 0, SFINAE_Suppress, false, false, 1) +DIAG(warn_pp_hdrstop_filename_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma hdrstop filename not supported, /Fp can be used to specify precompiled header filename", 123, SFINAE_Suppress, false, false, 1) +DIAG(warn_pp_line_decimal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{#line|GNU line marker}0 directive interprets number as decimal, not octal", 0, SFINAE_Suppress, false, false, 1) +DIAG(warn_pp_macro_def_mismatch_with_pch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "definition of macro %0 does not match definition in precompiled header", 123, SFINAE_Suppress, false, false, 1) +DIAG(warn_pp_macro_hides_keyword, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "keyword is hidden by macro definition", 350, SFINAE_Suppress, false, false, 1) +DIAG(warn_pp_macro_is_reserved_id, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "macro name is a reserved identifier", 569, SFINAE_Suppress, false, false, 1) +DIAG(warn_pp_objc_macro_redef_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring redefinition of Objective-C qualifier macro", 473, SFINAE_Suppress, false, false, 1) +DIAG(warn_pp_undef_identifier, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 is not defined, evaluates to 0", 677, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_debug_missing_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing argument to debug command '%0'", 286, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_debug_unexpected_command, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unexpected debug command '%0'", 286, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_diagnostic_cannot_pop, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma diagnostic pop could not pop, no matching push", 696, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_diagnostic_invalid, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop'", 696, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_diagnostic_invalid_option, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma diagnostic expected option name (e.g. \"-Wundef\")", 696, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_diagnostic_invalid_token, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unexpected token in pragma diagnostic", 696, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_diagnostic_unknown_warning, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unknown warning group '%0', ignored", 698, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_ignored, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unknown pragma ignored", 696, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_include_alias_expected, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma include_alias expected '%0'", 696, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_include_alias_expected_filename, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pragma include_alias expected include filename", 696, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_include_alias_mismatch_angle, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "angle-bracketed include <%0> cannot be aliased to double-quoted include \"%1\"", 696, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_include_alias_mismatch_quote, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "double-quoted include \"%0\" cannot be aliased to angle-bracketed include <%1>", 696, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_message, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 1, SFINAE_Suppress, true, false, 30) +DIAG(warn_pragma_pop_macro_no_push, CLASS_WARNING, (unsigned)diag::Severity::Warning, "pragma pop_macro could not pop '%0', no matching push_macro", 286, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_warning_expected, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#pragma warning expected '%0'", 696, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_warning_expected_number, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#pragma warning expected a warning number", 696, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_warning_push_level, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#pragma warning(push, level) requires a level between 0 and 4", 696, SFINAE_Suppress, false, false, 1) +DIAG(warn_pragma_warning_spec_invalid, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "#pragma warning expected 'push', 'pop', 'default', 'disable', 'error', 'once', 'suppress', 1, 2, 3, or 4", 696, SFINAE_Suppress, false, false, 1) +DIAG(warn_quoted_include_in_framework_header, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "double-quoted include \"%0\" in framework header, expected angle-bracketed instead", 555, SFINAE_Suppress, false, false, 1) +DIAG(warn_ucn_escape_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incomplete universal character name; treating as '\\' followed by identifier", 688, SFINAE_Suppress, false, false, 1) +DIAG(warn_ucn_escape_no_digits, CLASS_WARNING, (unsigned)diag::Severity::Warning, "\\%0 used with no following hex digits; treating as '\\' followed by identifier", 688, SFINAE_Suppress, false, false, 1) +DIAG(warn_ucn_escape_surrogate, CLASS_WARNING, (unsigned)diag::Severity::Warning, "universal character name refers to a surrogate character", 688, SFINAE_Suppress, false, false, 1) +DIAG(warn_ucn_not_valid_in_c89, CLASS_WARNING, (unsigned)diag::Severity::Warning, "universal character names are only valid in C99 or C++; treating as '\\' followed by identifier", 688, SFINAE_Suppress, false, false, 1) +DIAG(warn_ucn_not_valid_in_c89_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "universal character names are only valid in C99 or C++", 688, SFINAE_Suppress, false, false, 1) +DIAG(warn_uncovered_module_header, CLASS_WARNING, (unsigned)diag::Severity::Warning, "umbrella header for module '%0' does not include header '%1'", 317, SFINAE_Suppress, false, false, 1) +DIAG(warn_use_of_private_header_outside_module, CLASS_WARNING, (unsigned)diag::Severity::Error, "use of private header from outside its module: '%0'", 545, SFINAE_Suppress, false, false, 1) +DIAG(warn_utf8_symbol_homoglyph, CLASS_WARNING, (unsigned)diag::Severity::Warning, "treating Unicode character <U+%0> as identifier character rather than as '%1' symbol", 689, SFINAE_Suppress, false, false, 1) +DIAG(warn_utf8_symbol_zero_width, CLASS_WARNING, (unsigned)diag::Severity::Warning, "identifier contains Unicode character <U+%0> that is invisible in some environments", 691, SFINAE_Suppress, false, false, 1) diff --git a/clang-r353983/include/clang/Basic/DiagnosticOptions.def b/clang-r353983/include/clang/Basic/DiagnosticOptions.def new file mode 100644 index 00000000..baafd7ac --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticOptions.def @@ -0,0 +1,101 @@ +//===--- DiagOptions.def - Diagnostic option database ------------- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the diagnostic options. Users of this file +// must define the DIAGOPT macro to make use of this information. +// Optionally, the user may also define ENUM_DIAGOPT (for options +// that have enumeration type and VALUE_DIAGOPT (for options that +// describe a value rather than a flag). The SEMANTIC_* variants of these macros +// indicate options that affect the processing of the program, rather than +// simply the output. +// +//===----------------------------------------------------------------------===// +#ifndef DIAGOPT +# error Define the DIAGOPT macro to handle language options +#endif + +#ifndef VALUE_DIAGOPT +# define VALUE_DIAGOPT(Name, Bits, Default) \ +DIAGOPT(Name, Bits, Default) +#endif + +#ifndef ENUM_DIAGOPT +# define ENUM_DIAGOPT(Name, Type, Bits, Default) \ +DIAGOPT(Name, Bits, Default) +#endif + +#ifndef SEMANTIC_DIAGOPT +# define SEMANTIC_DIAGOPT(Name, Bits, Default) DIAGOPT(Name, Bits, Default) +#endif + +#ifndef SEMANTIC_VALUE_DIAGOPT +# define SEMANTIC_VALUE_DIAGOPT(Name, Bits, Default) \ + VALUE_DIAGOPT(Name, Bits, Default) +#endif + +#ifndef SEMANTIC_ENUM_DIAGOPT +# define SEMANTIC_ENUM_DIAGOPT(Name, Type, Bits, Default) \ + ENUM_DIAGOPT(Name, Type, Bits, Default) +#endif + +SEMANTIC_DIAGOPT(IgnoreWarnings, 1, 0) /// -w +DIAGOPT(NoRewriteMacros, 1, 0) /// -Wno-rewrite-macros +DIAGOPT(Pedantic, 1, 0) /// -pedantic +DIAGOPT(PedanticErrors, 1, 0) /// -pedantic-errors +DIAGOPT(ShowColumn, 1, 1) /// Show column number on diagnostics. +DIAGOPT(ShowLocation, 1, 1) /// Show source location information. +DIAGOPT(AbsolutePath, 1, 0) /// Use absolute paths. +DIAGOPT(ShowCarets, 1, 1) /// Show carets in diagnostics. +DIAGOPT(ShowFixits, 1, 1) /// Show fixit information. +DIAGOPT(ShowSourceRanges, 1, 0) /// Show source ranges in numeric form. +DIAGOPT(ShowParseableFixits, 1, 0) /// Show machine parseable fix-its. +DIAGOPT(ShowPresumedLoc, 1, 0) /// Show presumed location for diagnostics. +DIAGOPT(ShowOptionNames, 1, 0) /// Show the option name for mappable + /// diagnostics. +DIAGOPT(ShowNoteIncludeStack, 1, 0) /// Show include stacks for notes. +VALUE_DIAGOPT(ShowCategories, 2, 0) /// Show categories: 0 -> none, 1 -> Number, + /// 2 -> Full Name. + +ENUM_DIAGOPT(Format, TextDiagnosticFormat, 2, Clang) /// Format for diagnostics: + +DIAGOPT(ShowColors, 1, 0) /// Show diagnostics with ANSI color sequences. +ENUM_DIAGOPT(ShowOverloads, OverloadsShown, 1, + Ovl_All) /// Overload candidates to show. +DIAGOPT(VerifyDiagnostics, 1, 0) /// Check that diagnostics match the expected + /// diagnostics, indicated by markers in the + /// input source file. +ENUM_DIAGOPT(VerifyIgnoreUnexpected, DiagnosticLevelMask, 4, + DiagnosticLevelMask::None) /// Ignore unexpected diagnostics of + /// the specified levels when using + /// -verify. +DIAGOPT(ElideType, 1, 0) /// Elide identical types in template diffing +DIAGOPT(ShowTemplateTree, 1, 0) /// Print a template tree when diffing +DIAGOPT(CLFallbackMode, 1, 0) /// Format for clang-cl fallback mode + +VALUE_DIAGOPT(ErrorLimit, 32, 0) /// Limit # errors emitted. +/// Limit depth of macro expansion backtrace. +VALUE_DIAGOPT(MacroBacktraceLimit, 32, DefaultMacroBacktraceLimit) +/// Limit depth of instantiation backtrace. +VALUE_DIAGOPT(TemplateBacktraceLimit, 32, DefaultTemplateBacktraceLimit) +/// Limit depth of constexpr backtrace. +VALUE_DIAGOPT(ConstexprBacktraceLimit, 32, DefaultConstexprBacktraceLimit) +/// Limit number of times to perform spell checking. +VALUE_DIAGOPT(SpellCheckingLimit, 32, DefaultSpellCheckingLimit) +/// Limit number of lines shown in a snippet. +VALUE_DIAGOPT(SnippetLineLimit, 32, DefaultSnippetLineLimit) + +VALUE_DIAGOPT(TabStop, 32, DefaultTabStop) /// The distance between tab stops. +/// Column limit for formatting message diagnostics, or 0 if unused. +VALUE_DIAGOPT(MessageLength, 32, 0) + +#undef DIAGOPT +#undef ENUM_DIAGOPT +#undef VALUE_DIAGOPT +#undef SEMANTIC_DIAGOPT +#undef SEMANTIC_ENUM_DIAGOPT +#undef SEMANTIC_VALUE_DIAGOPT diff --git a/clang-r353983/include/clang/Basic/DiagnosticOptions.h b/clang-r353983/include/clang/Basic/DiagnosticOptions.h new file mode 100644 index 00000000..3e3c4e50 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticOptions.h @@ -0,0 +1,128 @@ +//===- DiagnosticOptions.h --------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICOPTIONS_H +#define LLVM_CLANG_BASIC_DIAGNOSTICOPTIONS_H + +#include "clang/Basic/LLVM.h" +#include "llvm/ADT/IntrusiveRefCntPtr.h" +#include <string> +#include <type_traits> +#include <vector> + +namespace clang { + +/// Specifies which overload candidates to display when overload +/// resolution fails. +enum OverloadsShown : unsigned { + /// Show all overloads. + Ovl_All, + + /// Show just the "best" overload candidates. + Ovl_Best +}; + +/// A bitmask representing the diagnostic levels used by +/// VerifyDiagnosticConsumer. +enum class DiagnosticLevelMask : unsigned { + None = 0, + Note = 1 << 0, + Remark = 1 << 1, + Warning = 1 << 2, + Error = 1 << 3, + All = Note | Remark | Warning | Error +}; + +inline DiagnosticLevelMask operator~(DiagnosticLevelMask M) { + using UT = std::underlying_type<DiagnosticLevelMask>::type; + return static_cast<DiagnosticLevelMask>(~static_cast<UT>(M)); +} + +inline DiagnosticLevelMask operator|(DiagnosticLevelMask LHS, + DiagnosticLevelMask RHS) { + using UT = std::underlying_type<DiagnosticLevelMask>::type; + return static_cast<DiagnosticLevelMask>( + static_cast<UT>(LHS) | static_cast<UT>(RHS)); +} + +inline DiagnosticLevelMask operator&(DiagnosticLevelMask LHS, + DiagnosticLevelMask RHS) { + using UT = std::underlying_type<DiagnosticLevelMask>::type; + return static_cast<DiagnosticLevelMask>( + static_cast<UT>(LHS) & static_cast<UT>(RHS)); +} + +raw_ostream& operator<<(raw_ostream& Out, DiagnosticLevelMask M); + +/// Options for controlling the compiler diagnostics engine. +class DiagnosticOptions : public RefCountedBase<DiagnosticOptions>{ +public: + enum TextDiagnosticFormat { Clang, MSVC, Vi }; + + // Default values. + enum { + DefaultTabStop = 8, + MaxTabStop = 100, + DefaultMacroBacktraceLimit = 6, + DefaultTemplateBacktraceLimit = 10, + DefaultConstexprBacktraceLimit = 10, + DefaultSpellCheckingLimit = 50, + DefaultSnippetLineLimit = 1, + }; + + // Define simple diagnostic options (with no accessors). +#define DIAGOPT(Name, Bits, Default) unsigned Name : Bits; +#define ENUM_DIAGOPT(Name, Type, Bits, Default) +#include "clang/Basic/DiagnosticOptions.def" + +protected: + // Define diagnostic options of enumeration type. These are private, and will + // have accessors (below). +#define DIAGOPT(Name, Bits, Default) +#define ENUM_DIAGOPT(Name, Type, Bits, Default) unsigned Name : Bits; +#include "clang/Basic/DiagnosticOptions.def" + +public: + /// The file to log diagnostic output to. + std::string DiagnosticLogFile; + + /// The file to serialize diagnostics to (non-appending). + std::string DiagnosticSerializationFile; + + /// The list of -W... options used to alter the diagnostic mappings, with the + /// prefixes removed. + std::vector<std::string> Warnings; + + /// The list of -R... options used to alter the diagnostic mappings, with the + /// prefixes removed. + std::vector<std::string> Remarks; + + /// The prefixes for comment directives sought by -verify ("expected" by + /// default). + std::vector<std::string> VerifyPrefixes; + +public: + // Define accessors/mutators for diagnostic options of enumeration type. +#define DIAGOPT(Name, Bits, Default) +#define ENUM_DIAGOPT(Name, Type, Bits, Default) \ + Type get##Name() const { return static_cast<Type>(Name); } \ + void set##Name(Type Value) { Name = static_cast<unsigned>(Value); } +#include "clang/Basic/DiagnosticOptions.def" + + DiagnosticOptions() { +#define DIAGOPT(Name, Bits, Default) Name = Default; +#define ENUM_DIAGOPT(Name, Type, Bits, Default) set##Name(Default); +#include "clang/Basic/DiagnosticOptions.def" + } +}; + +using TextDiagnosticFormat = DiagnosticOptions::TextDiagnosticFormat; + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTICOPTIONS_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticParse.h b/clang-r353983/include/clang/Basic/DiagnosticParse.h new file mode 100644 index 00000000..0c21ff93 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticParse.h @@ -0,0 +1,28 @@ +//===--- DiagnosticParse.h - Diagnostics for libparse -----------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICPARSE_H +#define LLVM_CLANG_BASIC_DIAGNOSTICPARSE_H + +#include "clang/Basic/Diagnostic.h" + +namespace clang { +namespace diag { +enum { +#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \ + SHOWINSYSHEADER, CATEGORY) \ + ENUM, +#define PARSESTART +#include "clang/Basic/DiagnosticParseKinds.inc" +#undef DIAG + NUM_BUILTIN_PARSE_DIAGNOSTICS +}; +} // end namespace diag +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTICPARSE_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticParseKinds.inc b/clang-r353983/include/clang/Basic/DiagnosticParseKinds.inc new file mode 100644 index 00000000..f18ef7fc --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticParseKinds.inc @@ -0,0 +1,490 @@ +#ifdef PARSESTART +__PARSESTART = DIAG_START_PARSE, +#undef PARSESTART +#endif + +DIAG(err_access_specifier_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "interface types cannot specify '%select{private|protected}0' access", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_address_of_label_outside_fn, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of address-of-label extension outside of a function body", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_alias_declaration_not_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "name defined in alias declaration must be an identifier", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_alias_declaration_pack_expansion, CLASS_ERROR, (unsigned)diag::Severity::Error, "alias declaration cannot be a pack expansion", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_alias_declaration_specialization, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{partial specialization|explicit specialization|explicit instantiation}0 of alias templates is not permitted", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_anon_type_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaration of anonymous %0 must be a definition", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_arc_bridge_retain, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown cast annotation __bridge_retain; did you mean __bridge_retained?", 0, SFINAE_SubstitutionFailure, false, true, 8) +DIAG(err_argument_required_after_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument required after attribute", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_asm_empty, CLASS_ERROR, (unsigned)diag::Severity::Error, "__asm used with no assembly instructions", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_goto_not_supported_yet, CLASS_ERROR, (unsigned)diag::Severity::Error, "'asm goto' constructs are not supported yet", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_operand_wide_string_literal, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use %select{unicode|wide}0 string literal in 'asm'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_at_defs_cxx, CLASS_ERROR, (unsigned)diag::Severity::Error, "@defs is not supported in Objective-C++", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_at_in_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected '@' in member specification", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_atimport, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of '@import' when modules are disabled", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_attribute_not_import_attr, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute cannot be applied to a module import", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_attribute_not_module_attr, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute cannot be applied to a module", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_attribute_requires_arguments, CLASS_ERROR, (unsigned)diag::Severity::Error, "parentheses must be omitted if %0 attribute's argument list is empty", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_attributes_misplaced, CLASS_ERROR, (unsigned)diag::Severity::Error, "misplaced attributes; expected attributes here", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_attributes_not_allowed, CLASS_ERROR, (unsigned)diag::Severity::Error, "an attribute list cannot appear here", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_avail_query_expected_platform_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a platform name here", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_avail_query_unrecognized_platform_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "unrecognized platform name %0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_availability_expected_change, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected 'introduced', 'deprecated', or 'obsoleted'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_availability_expected_platform, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a platform name, e.g., 'macos'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_availability_query_repeated_platform, CLASS_ERROR, (unsigned)diag::Severity::Error, "version for '%0' already specified", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_availability_query_repeated_star, CLASS_ERROR, (unsigned)diag::Severity::Error, "'*' query has already been specified", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_availability_query_wildcard_required, CLASS_ERROR, (unsigned)diag::Severity::Error, "must handle potential future platforms with '*'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_availability_redundant, CLASS_ERROR, (unsigned)diag::Severity::Error, "redundant %0 availability change; only the last specified change will be used", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_availability_unknown_change, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not an availability stage; use 'introduced', 'deprecated', or 'obsoleted'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_bool_redeclaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "redeclaration of C++ built-in type 'bool'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_bracket_depth_exceeded, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "bracket nesting level exceeded maximum of %0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_brackets_go_after_unqualified_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "brackets are not allowed here; to declare an array, place the brackets after the %select{identifier|name}0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_c11_noreturn_misplaced, CLASS_ERROR, (unsigned)diag::Severity::Error, "'_Noreturn' keyword must precede function declarator", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_class_on_template_template_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "template template parameter requires 'class' after the parameter list", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_constructor_bad_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing return type for function %0; did you mean the constructor name %1?", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_ctor_init_missing_comma, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing ',' between base or member initializers", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_cxx11_attribute_forbids_arguments, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute %0 cannot have an argument list", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_cxx11_attribute_forbids_ellipsis, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute %0 cannot be used as an attribute pack", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_cxx11_attribute_repeated, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute %0 cannot appear multiple times in an attribute specifier", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_declaration_does_not_declare_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaration does not declare a parameter", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_declspec_after_virtspec, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' qualifier may not appear after the virtual specifier '%1'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_default_arg_unparsed, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected end of default argument expression", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_default_delete_in_multiple_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "'= %select{default|delete}0' is a function definition and must occur in a standalone declaration", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_default_template_template_parameter_not_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "default template argument for a template template parameter must be a class template", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_destructor_template_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "destructor name %0 does not refer to a template", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_destructor_tilde_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a class name after '~' to name a destructor", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_destructor_tilde_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "'~' in destructor name should be after nested name specifier", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_dup_virtual, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate 'virtual' in base specifier", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_duplicate_default_assoc, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate default generic association", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_duplicate_virt_specifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "class member already marked '%0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_dynamic_and_noexcept_specification, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot have both throw() and noexcept() clause on the same function", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_empty_enum, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of empty enum", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_enumerator_list_missing_comma, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing ',' between enumerators", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_enumerator_unnamed_no_def, CLASS_ERROR, (unsigned)diag::Severity::Error, "unnamed enumeration must be a definition", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_except_spec_unparsed, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected end of exception specification", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_capture, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected variable name or 'this' in lambda capture list", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_case_before_expression, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected 'case' keyword before expression", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_catch, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected catch", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_class_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected class name", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_class_name_not_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "'typename' is redundant; base classes are implicitly types", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_coloncolon_after_super, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '::' after '__super'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_comma_greater, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ',' or '>' in template-parameter-list", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_comma_or_rsquare, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ',' or ']' in lambda capture list", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_end_declare_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '#pragma omp end declare target'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_end_of_enumerator, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '= constant-expression' or end of enumerator definition", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_equal_designator, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '=' or another designator", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_expression, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected expression", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_external_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected external declaration", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_field_designator, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a field designator, such as '.field = 4'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_fn_body, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected function body after function declarator", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_fold_operator, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a foldable binary operator in fold expression", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_init_in_condition, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable declaration in condition must have an initializer", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_init_in_condition_lparen, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable declaration in condition cannot have a parenthesized initializer", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_lambda_body, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected body of lambda expression", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_lbrace_after_base_specifiers, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '{' after base class list", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_lbrace_in_compound_literal, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '{' in compound literal", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_less_after, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '<' after '%0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_lparen_after, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '(' after '%0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_lparen_after_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '(' for function-style cast or type construction", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_member_name_or_semi, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected member name or ';' after declaration specifiers", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_member_name_or_semi_objcxx_keyword, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected member name or ';' after declaration specifiers; %0 is a keyword in Objective-C++", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_member_or_base_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected class member or base class name", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_method_body, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected method body", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_minus_or_plus, CLASS_ERROR, (unsigned)diag::Severity::Error, "method type specifier must start with '-' or '+'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_objc_container, CLASS_ERROR, (unsigned)diag::Severity::Error, "'@end' must appear in an Objective-C context", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_parameter_pack, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected the name of a parameter pack", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_parentheses_around_typename, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected parentheses around type name in %0 expression", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_property_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected property name", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_punc, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ')' or ',' after '%0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_qualified_after_typename, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a qualified name after 'typename'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_rparen_after, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ')' after '%0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_selector_for_method, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected selector for Objective-C method", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_semi_after_attribute_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ';' after attribute list", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_semi_after_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ';' after expression", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_semi_after_method_proto, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ';' after method prototype", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_semi_after_namespace_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ';' after namespace name", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_semi_after_static_assert, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ';' after static_assert", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_semi_after_stmt, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ';' after %0 statement", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_semi_decl_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ';' at end of declaration list", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_semi_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ';' at end of declaration", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_semi_for, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ';' in 'for' statement specifier", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_star_this_capture, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected 'this' following '*' in lambda capture list", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_statement, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected statement", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected template", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_template_parameter, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected template parameter", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_token_instead_of_objcxx_keyword, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected %0; %1 is a keyword in Objective-C++", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a type", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_type_name_after_typename, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected an identifier or template-id after '::'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_unqualified_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected %select{identifier|unqualified-id}0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_version, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a version of the form 'major[.minor[.subminor]]'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_expected_while, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected 'while' in do/while loop", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_explicit_instantiation_enum, CLASS_ERROR, (unsigned)diag::Severity::Error, "enumerations cannot be explicitly instantiated", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_explicit_instantiation_with_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit template instantiation cannot have a definition; if this definition is meant to be an explicit specialization, add '<>' after the 'template' keyword", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_explicit_spec_non_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit %select{specialization|instantiation}0 of non-template %1 %2", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_export_empty, CLASS_ERROR, (unsigned)diag::Severity::Error, "export declaration cannot be empty", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_external_source_symbol_duplicate_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate %0 clause in an 'external_source_symbol' attribute", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_external_source_symbol_expected_keyword, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected 'language', 'defined_in', or 'generated_declaration'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_extraneous_closing_brace, CLASS_ERROR, (unsigned)diag::Severity::Error, "extraneous closing brace ('}')", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_extraneous_rparen_in_condition, CLASS_ERROR, (unsigned)diag::Severity::Error, "extraneous ')' after condition, expected a statement", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_extraneous_token_before_semi, CLASS_ERROR, (unsigned)diag::Severity::Error, "extraneous '%0' before ';'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_fold_operator_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "operators in fold expression must be the same", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_for_co_await_not_range_for, CLASS_ERROR, (unsigned)diag::Severity::Error, "'co_await' modifier can only be applied to range-based for loop", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_for_range_expected_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "for range declaration must declare a variable", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_for_range_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "range-based for loop requires type for loop variable", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_friend_decl_defines_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot define a type in a friend declaration", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_friend_explicit_instantiation, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend cannot be declared in an explicit instantiation; if this declaration is meant to be a friend declaration, remove the 'template' keyword", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_friend_invalid_in_context, CLASS_ERROR, (unsigned)diag::Severity::Error, "'friend' used outside of class", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_func_def_no_params, CLASS_ERROR, (unsigned)diag::Severity::Error, "function definition does not declare parameters", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_function_declared_typedef, CLASS_ERROR, (unsigned)diag::Severity::Error, "function definition declared 'typedef'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_function_definition_not_allowed, CLASS_ERROR, (unsigned)diag::Severity::Error, "function definition is not allowed here", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_function_is_not_record, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected %0 in function call; perhaps remove the %0?", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_gnu_inline_asm_disabled, CLASS_ERROR, (unsigned)diag::Severity::Error, "GNU-style inline assembly is disabled", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_id_after_template_in_nested_name_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected template name after 'template' keyword in nested name specifier", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_illegal_decl_reference_to_reference, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 declared as a reference to a reference", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_illegal_super_cast, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot cast 'super' (it isn't an expression)", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_incomplete_array_member_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "array bound cannot be deduced from an in-class initializer", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_init_list_bin_op, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer list cannot be used on the %select{left|right}0 hand side of operator '%1'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_inline_ms_asm_parsing, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_inline_namespace_alias, CLASS_ERROR, (unsigned)diag::Severity::Error, "namespace alias cannot be inline", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_inline_nested_namespace_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "nested namespace definition cannot be 'inline'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_invalid_operator_on_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use %select{dot|arrow}0 operator on a type", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_invalid_reference_qualifier_application, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' qualifier may not be applied to a reference", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_invalid_token_after_declarator_suggest_equal, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid %0 at end of declaration; did you mean '='?", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_invalid_token_after_toplevel_declarator, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ';' after top level declarator", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_l_square_l_square_not_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "C++11 only allows consecutive left square brackets when introducing an attribute", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_label_end_of_compound_statement, CLASS_ERROR, (unsigned)diag::Severity::Error, "label at end of compound statement: expected statement", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_lambda_decl_specifier_repeated, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{'mutable'|'constexpr'}0 cannot appear multiple times in a lambda declarator", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_lambda_missing_parens, CLASS_ERROR, (unsigned)diag::Severity::Error, "lambda requires '()' before %select{'mutable'|return type|attribute specifier|'constexpr'}0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_literal_operator_string_not_empty, CLASS_ERROR, (unsigned)diag::Severity::Error, "string literal after 'operator' must be '\"\"'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_literal_operator_string_prefix, CLASS_ERROR, (unsigned)diag::Severity::Error, "string literal after 'operator' cannot have an encoding prefix", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_misplaced_ellipsis_in_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "'...' must %select{immediately precede declared identifier|be innermost component of anonymous pack declaration}0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_missing_before_module_end, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected %0 at end of module", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_missing_catch_finally, CLASS_ERROR, (unsigned)diag::Severity::Error, "@try statement without a @catch and @finally clause", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_missing_comma_before_ellipsis, CLASS_ERROR, (unsigned)diag::Severity::Error, "C requires a comma prior to the ellipsis in a variadic function type", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_missing_dependent_template_keyword, CLASS_ERROR, (unsigned)diag::Severity::Error, "use 'template' keyword to treat '%0' as a dependent template name", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_missing_end_of_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing '}' at end of definition of %q0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_missing_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected parameter declarator", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_missing_whitespace_digraph, CLASS_ERROR, (unsigned)diag::Severity::Error, "found '<::' after a %select{template name|const_cast|dynamic_cast|reinterpret_cast|static_cast}0 which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_module_expected_ident, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a module name after '%select{module|import}0'", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_expected_semi, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ';' after module name", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_implementation_partition, CLASS_ERROR, (unsigned)diag::Severity::Error, "module partition must be declared 'export'", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_ms_attributes_not_enabled, CLASS_ERROR, (unsigned)diag::Severity::Error, "'__declspec' attributes are not enabled; use '-fdeclspec' or '-fms-extensions' to enable support for __declspec attributes", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_ms_declspec_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "__declspec attributes must be an identifier or string literal", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_ms_property_duplicate_accessor, CLASS_ERROR, (unsigned)diag::Severity::Error, "property declaration specifies '%0' accessor twice", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_ms_property_expected_accessor_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected name of accessor method", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_ms_property_expected_comma_or_rparen, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ',' or ')' at end of property accessor list", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_ms_property_expected_equal, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '=' after '%0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_ms_property_has_set_accessor, CLASS_ERROR, (unsigned)diag::Severity::Error, "putter for property must be specified as 'put', not 'set'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_ms_property_initializer, CLASS_ERROR, (unsigned)diag::Severity::Error, "property declaration cannot have an in-class initializer", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_ms_property_missing_accessor_kind, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing 'get=' or 'put='", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_ms_property_no_getter_or_putter, CLASS_ERROR, (unsigned)diag::Severity::Error, "property does not specify a getter or a putter", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_ms_property_unknown_accessor, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected 'get' or 'put' in property declaration", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_msasm_unable_to_create_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "MS-style inline assembly is not available: %0", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_msasm_unsupported_arch, CLASS_ERROR, (unsigned)diag::Severity::Error, "Unsupported architecture '%0' for MS-style inline assembly", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_multiple_template_declarators, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{|a template declaration|an explicit template specialization|an explicit template instantiation}0 can only %select{|declare|declare|instantiate}0 a single entity", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_namespace_nonnamespace_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "namespaces can only be defined in global or namespace scope", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_no_matching_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter named %0 is missing", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_nsnumber_nonliteral_unary, CLASS_ERROR, (unsigned)diag::Severity::Error, "@%0 must be followed by a number to form an NSNumber object", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_concat_string, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected token after Objective-C string", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_directive_only_in_protocol, CLASS_ERROR, (unsigned)diag::Severity::Error, "directive may only be specified in protocols only", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_expected_equal_for_getter, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '=' for Objective-C getter", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_expected_equal_for_setter, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '=' for Objective-C setter", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_expected_property_attr, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown property attribute %0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_expected_selector_for_getter_setter, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected selector for Objective-C %select{setter|getter}0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_expected_type_parameter, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected type parameter name", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_illegal_interface_qual, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal interface qualifier", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_illegal_visibility_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal visibility specification", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_missing_end, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing '@end'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_parameterized_implementation, CLASS_ERROR, (unsigned)diag::Severity::Error, "@implementation cannot have type parameters", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_postfix_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "postfix attributes are not allowed on Objective-C directives", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_postfix_attribute_hint, CLASS_ERROR, (unsigned)diag::Severity::Error, "postfix attributes are not allowed on Objective-C directives, place them in front of '%select{@interface|@protocol}0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_properties_require_objc2, CLASS_ERROR, (unsigned)diag::Severity::Error, "properties are an Objective-C 2 feature", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_property_bitfield, CLASS_ERROR, (unsigned)diag::Severity::Error, "property name cannot be a bit-field", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_property_requires_field_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "property requires fields to be named", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_type_args_after_protocols, CLASS_ERROR, (unsigned)diag::Severity::Error, "protocol qualifiers must precede type arguments", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_unexpected_atend, CLASS_ERROR, (unsigned)diag::Severity::Error, "'@end' appears where closing brace '}' is expected", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_unexpected_attr, CLASS_ERROR, (unsigned)diag::Severity::Error, "prefix attribute must be followed by an interface or protocol", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objc_unknown_at, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected an Objective-C directive after '@'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objcbridge_related_expected_related_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a related ObjectiveC class name, e.g., 'NSColor'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_objcbridge_related_selector_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a class method selector with single argument, e.g., 'colorWithCGColor:'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_decl_in_declare_simd, CLASS_ERROR, (unsigned)diag::Severity::Error, "function declaration is expected after 'declare simd' directive", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_declare_simd_inbranch_notinbranch, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected '%0' clause, '%1' is specified already", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_declare_target_unexpected_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected '%0' clause, only 'to' or 'link' clauses expected", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_expected_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected at least one clause on '#pragma omp %0' directive", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_expected_identifier_for_critical, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected identifier specifying the name of the 'omp critical' directive", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_expected_punc, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected ',' or ')' in '%0' %select{clause|directive}1", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_expected_reduction_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected identifier or one of the following operators: '+', '-', '*', '&', '|', '^', '&&', or '||'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_immediate_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma omp %0' %select{|with '%2' clause }1cannot be an immediate substatement", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_map_type_missing, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing map type", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_map_type_modifier_missing, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing map type modifier", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_mapper_expected_declarator, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected declarator on 'omp declare mapper' directive", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_mapper_illegal_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal identifier on 'omp declare mapper' directive", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_unexpected_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected OpenMP clause '%0' in directive '#pragma omp %1'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_unexpected_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected OpenMP directive %select{|'#pragma omp %1'}0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_unknown_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected an OpenMP directive", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_unknown_map_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "incorrect map type, expected one of 'to', 'from', 'tofrom', 'alloc', 'release', or 'delete'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_omp_unknown_map_type_modifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "incorrect map type modifier, expected 'always' or 'close'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_opencl_logical_exclusive_or, CLASS_ERROR, (unsigned)diag::Severity::Error, "^^ is a reserved operator in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_opencl_taking_function_address_parser, CLASS_ERROR, (unsigned)diag::Severity::Error, "taking address of function is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_opencl_unroll_hint_on_non_loop, CLASS_ERROR, (unsigned)diag::Severity::Error, "OpenCL only supports 'opencl_unroll_hint' attribute on for, while, and do statements", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_openclcxx_reserved, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' is a reserved keyword in OpenCL C++", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_openclcxx_virtual_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "virtual functions are not supported in OpenCL C++", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_out_of_line_constructor_template_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "out-of-line constructor for %0 cannot have template arguments", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_override_control_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' keyword not permitted with interface types", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_paren_sizeof_parameter_pack, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing parentheses around the size of parameter pack %0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_duplicate_subject, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate attribute subject matcher '%0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_expected_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected an attribute after '('", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_expected_attribute_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected identifier that represents an attribute name", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_expected_attribute_syntax, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected an attribute that is specified using the GNU, C++11 or '__declspec' syntax", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_expected_period, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '.' after pragma attribute namespace %0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_expected_push_pop_paren, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected 'push', 'pop', or '(' after '#pragma clang attribute'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_expected_subject_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected an identifier that corresponds to an attribute subject rule", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_expected_subject_sub_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected an identifier that corresponds to an attribute subject matcher sub-rule; '%0' matcher %select{does not support sub-rules|supports the following sub-rules: %2|}1", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_extra_tokens_after_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "extra tokens after attribute in a '#pragma clang attribute push'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_invalid_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected argument '%0' to '#pragma clang attribute'; expected 'push' or 'pop'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_invalid_subject_set_specifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected attribute subject set specifier 'apply_to'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_multiple_attributes, CLASS_ERROR, (unsigned)diag::Severity::Error, "more than one attribute specified in '#pragma clang attribute push'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_namespace_on_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "namespace can only apply to 'push' or 'pop' directives", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_unknown_subject_rule, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown attribute subject rule '%0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_unknown_subject_sub_rule, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{invalid use of|unknown}2 attribute subject matcher sub-rule '%0'; '%1' matcher %select{does not support sub-rules|supports the following sub-rules: %3}2", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_attribute_unsupported_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute %0 is not supported by '#pragma clang attribute'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_cannot_end_force_cuda_host_device, CLASS_ERROR, (unsigned)diag::Severity::Error, "force_cuda_host_device end pragma without matching force_cuda_host_device begin", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_clang_section_expected_equal, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '=' following '#pragma clang section %select{invalid|bss|data|rodata|text}0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_comment_malformed, CLASS_ERROR, (unsigned)diag::Severity::Error, "pragma comment requires parenthesized identifier and optional string", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_comment_unknown_kind, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown kind of pragma comment", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_detect_mismatch_malformed, CLASS_ERROR, (unsigned)diag::Severity::Error, "pragma detect_mismatch is malformed; it requires two comma-separated string literals", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_expected_clang_section_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected one of [bss|data|rodata|text] section kind in '#pragma %0'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_fp_contract_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma fp_contract' can only appear at file scope or at the start of a compound statement", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_fp_invalid_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected argument '%0' to '#pragma clang fp %1'; expected 'on', 'fast' or 'off'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_fp_invalid_option, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{invalid|missing}0 option%select{ %1|}0; expected contract", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_fp_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma clang fp' can only appear at file scope or at the start of a compound statement", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_invalid_keyword, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument; expected 'enable'%select{|, 'full'}0%select{|, 'assume_safety'}1 or 'disable'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_loop_invalid_option, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{invalid|missing}0 option%select{ %1|}0; expected vectorize, vectorize_width, interleave, interleave_count, unroll, unroll_count, pipeline, pipeline_initiation_interval, or distribute", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_loop_missing_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing argument; expected %select{an integer value|'enable'%select{|, 'full'}1%select{|, 'assume_safety'}2 or 'disable'}0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_missing_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing argument to '#pragma %0'%select{|; expected %2}1", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_optimize_extra_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected extra argument '%0' to '#pragma clang optimize'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_optimize_invalid_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected argument '%0' to '#pragma clang optimize'; expected 'on' or 'off'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_pipeline_invalid_keyword, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument; expected 'disable'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_pragma_pointers_to_members_unknown_kind, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected %0, expected to see one of %select{|'best_case', 'full_generality', }1'single_inheritance', 'multiple_inheritance', or 'virtual_inheritance'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_right_angle_bracket_equal_needs_space, CLASS_ERROR, (unsigned)diag::Severity::Error, "a space is required between a right angle bracket and an equals sign (use '> =')", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_scoped_enum_missing_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "scoped enumeration requires a name", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_single_decl_assign_in_for_range, CLASS_ERROR, (unsigned)diag::Severity::Error, "range-based 'for' statement uses ':', not '='", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_sizeof_parameter_pack, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected parenthesized parameter pack name in 'sizeof...' expression", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_stmtexpr_file_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "statement expression not allowed at file scope", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_super_in_using_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "'__super' cannot be used with a using declaration", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_synthesized_property_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a property name in @synthesize", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_template_defn_explicit_instantiation, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{function|class|variable}0 cannot be defined in an explicit instantiation; if this declaration is meant to be a %select{function|class|variable}0 definition, remove the 'template' keyword", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_template_spec_syntax_non_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "identifier followed by '<' indicates a class template specialization but %0 %select{does not refer to a template|refers to a function template|<unused>|refers to a variable template|<unused>}1", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_templated_invalid_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "a static_assert declaration cannot be a template", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_templated_using_directive_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot template a using %select{directive|declaration}0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_this_captured_by_reference, CLASS_ERROR, (unsigned)diag::Severity::Error, "'this' cannot be captured by reference", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_two_right_angle_brackets_need_space, CLASS_ERROR, (unsigned)diag::Severity::Error, "a space is required between consecutive right angle brackets (use '> >')", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_type_safety_unknown_flag, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid comparison flag %0; use 'layout_compatible' or 'must_be_null'", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_type_trait_arity, CLASS_ERROR, (unsigned)diag::Severity::Error, "type trait requires %0%select{| or more}1 argument%select{|s}2; have %3 argument%s3", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_typename_identifiers_only, CLASS_ERROR, (unsigned)diag::Severity::Error, "typename is allowed for identifiers only", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_typename_invalid_constexpr, CLASS_ERROR, (unsigned)diag::Severity::Error, "type name does not allow constexpr specifier to be specified", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_typename_invalid_functionspec, CLASS_ERROR, (unsigned)diag::Severity::Error, "type name does not allow function specifier to be specified", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_typename_invalid_storageclass, CLASS_ERROR, (unsigned)diag::Severity::Error, "type name does not allow storage class to be specified", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_typename_refers_to_non_type_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "typename specifier refers to a non-type template", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_typename_requires_specqual, CLASS_ERROR, (unsigned)diag::Severity::Error, "type name requires a specifier or qualifier", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unexpected_at, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected '@' in program", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unexpected_colon_in_nested_name_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected ':' in nested name specifier; did you mean '::'?", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unexpected_module_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "module declaration can only appear at the top level", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_unexpected_namespace_attributes_alias, CLASS_ERROR, (unsigned)diag::Severity::Error, "attributes cannot be specified on namespace alias", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unexpected_nested_namespace_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "attributes cannot be specified on a nested namespace definition", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unexpected_protocol_qualifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "@implementation declaration cannot be protocol qualified", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unexpected_scope_on_base_decltype, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected namespace scope prior to decltype", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unexpected_semi, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected ';' before %0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unexpected_template_in_unqualified_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "'template' keyword not permitted here", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unexpected_token_in_nested_name_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' cannot be a part of nested name specifier; did you mean ':'?", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unexpected_typedef_ident, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected type name %0: expected identifier", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unexpected_unqualified_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "type-id cannot have a name", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unknown_template_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown template name %0", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unspecified_size_with_static, CLASS_ERROR, (unsigned)diag::Severity::Error, "'static' may not be used without an array size", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_unspecified_vla_size_with_static, CLASS_ERROR, (unsigned)diag::Severity::Error, "'static' may not be used with an unspecified variable length array size", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_using_attribute_ns_conflict, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute with scope specifier cannot follow default scope specifier", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_using_namespace_in_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "'using namespace' is not allowed in classes", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(err_zero_version, CLASS_ERROR, (unsigned)diag::Severity::Error, "version number must have non-zero major, minor, or sub-minor version", 0, SFINAE_SubstitutionFailure, false, true, 4) +DIAG(ext_abstract_pack_declarator_parens, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++11 requires a parenthesized pack declaration to have a name", 22, SFINAE_Suppress, false, false, 4) +DIAG(ext_alias_declaration, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "alias declarations are a C++11 extension", 79, SFINAE_Suppress, false, false, 4) +DIAG(ext_alignof_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%0 applied to an expression is a GNU extension", 253, SFINAE_Suppress, false, false, 4) +DIAG(ext_auto_storage_class, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases", 50, SFINAE_Suppress, false, false, 4) +DIAG(ext_auto_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'__auto_type' is a GNU extension", 256, SFINAE_Suppress, false, false, 4) +DIAG(ext_bitfield_member_init, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "default member initializer for bit-field is a C++2a extension", 98, SFINAE_Suppress, false, false, 4) +DIAG(ext_c11_alignment, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%0 is a C11-specific feature", 112, SFINAE_Suppress, false, false, 4) +DIAG(ext_c11_generic_selection, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "generic selections are a C11-specific feature", 112, SFINAE_Suppress, false, false, 4) +DIAG(ext_c11_noreturn, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "_Noreturn functions are a C11-specific feature", 112, SFINAE_Suppress, false, false, 4) +DIAG(ext_c11_static_assert, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "_Static_assert is a C11-specific feature", 112, SFINAE_Suppress, false, false, 4) +DIAG(ext_c99_compound_literal, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "compound literals are a C99-specific feature", 114, SFINAE_Suppress, false, false, 4) +DIAG(ext_c99_variable_decl_in_for_loop, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "variable declaration in for loop is a C99-specific feature", 114, SFINAE_Suppress, false, false, 4) +DIAG(ext_clang_c_enum_fixed_underlying_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "enumeration types with a fixed underlying type are a Clang extension", 226, SFINAE_Suppress, false, false, 4) +DIAG(ext_constexpr_if, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "constexpr if is a C++17 extension", 91, SFINAE_Suppress, false, false, 4) +DIAG(ext_constexpr_on_lambda_cxx17, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'constexpr' on lambda expressions is a C++17 extension", 91, SFINAE_Suppress, false, false, 4) +DIAG(ext_cxx11_enum_fixed_underlying_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "enumeration types with a fixed underlying type are a C++11 extension", 79, SFINAE_Suppress, false, false, 4) +DIAG(ext_decltype_auto_type_specifier, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'decltype(auto)' type specifier is a C++14 extension", 87, SFINAE_Suppress, false, false, 4) +DIAG(ext_decomp_decl_empty, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++17 does not allow a decomposition group to be empty", 203, SFINAE_Suppress, false, false, 4) +DIAG(ext_defaulted_deleted_function, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{defaulted|deleted}0 function definitions are a C++11 extension", 79, SFINAE_Suppress, false, false, 4) +DIAG(ext_dynamic_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "ISO C++17 does not allow dynamic exception specifications", 199, SFINAE_Suppress, false, false, 4) +DIAG(ext_ellipsis_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "exception specification of '...' is a Microsoft extension", 382, SFINAE_Suppress, false, false, 4) +DIAG(ext_empty_translation_unit, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C requires a translation unit to contain at least one declaration", 205, SFINAE_Suppress, false, false, 4) +DIAG(ext_enumerator_list_comma_c, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "commas at the end of enumerator lists are a C99-specific feature", 114, SFINAE_Suppress, false, false, 4) +DIAG(ext_enumerator_list_comma_cxx, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "commas at the end of enumerator lists are a C++11 extension", 79, SFINAE_Suppress, false, false, 4) +DIAG(ext_expected_semi_decl_list, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "expected ';' at end of declaration list", 0, SFINAE_Suppress, false, false, 4) +DIAG(ext_extern_template, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "extern templates are a C++11 extension", 79, SFINAE_Suppress, false, false, 4) +DIAG(ext_extra_semi, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "extra ';' %select{outside of a function|inside a %1|inside instance variable list|after member function definition}0", 222, SFINAE_Suppress, false, false, 4) +DIAG(ext_extra_semi_cxx11, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "extra ';' outside of a function is a C++11 extension", 80, SFINAE_Suppress, false, false, 4) +DIAG(ext_fold_expression, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pack fold expression is a C++17 extension", 91, SFINAE_Suppress, false, false, 4) +DIAG(ext_for_range, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "range-based for loop is a C++11 extension", 79, SFINAE_Suppress, false, false, 4) +DIAG(ext_for_range_init_stmt, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "range-based for loop initialization statements are a C++2a extension", 98, SFINAE_Suppress, false, false, 4) +DIAG(ext_generalized_initializer_lists, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "generalized initializer lists are a C++11 extension", 79, SFINAE_Suppress, false, false, 4) +DIAG(ext_gnu_address_of_label, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU address-of-label extension", 270, SFINAE_Suppress, false, false, 4) +DIAG(ext_gnu_array_range, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU array range extension", 262, SFINAE_Suppress, false, false, 4) +DIAG(ext_gnu_case_range, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU case range extension", 258, SFINAE_Suppress, false, false, 4) +DIAG(ext_gnu_conditional_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU ?: conditional expression extension, omitting middle operand", 261, SFINAE_Suppress, false, false, 4) +DIAG(ext_gnu_empty_initializer, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU empty initializer extension", 263, SFINAE_Suppress, false, false, 4) +DIAG(ext_gnu_indirect_goto, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU indirect-goto extension", 270, SFINAE_Suppress, false, false, 4) +DIAG(ext_gnu_missing_equal_designator, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of GNU 'missing =' extension in designator", 262, SFINAE_Suppress, false, false, 4) +DIAG(ext_gnu_old_style_field_designator, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of GNU old-style field designator extension", 262, SFINAE_Suppress, false, false, 4) +DIAG(ext_gnu_statement_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of GNU statement expression extension", 272, SFINAE_Suppress, false, false, 4) +DIAG(ext_ident_list_in_param, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "type-less parameter names in function declaration", 527, SFINAE_Suppress, false, false, 4) +DIAG(ext_init_statement, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'%select{if|switch}0' initialization statements are a C++17 extension", 91, SFINAE_Suppress, false, false, 4) +DIAG(ext_inline_namespace, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "inline namespaces are a C++11 feature", 81, SFINAE_Suppress, false, false, 4) +DIAG(ext_inline_nested_namespace_definition, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "inline nested namespace definition is a C++2a extension", 98, SFINAE_Suppress, false, false, 4) +DIAG(ext_keyword_as_ident, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "keyword '%0' will be made available as an identifier %select{here|for the remainder of the translation unit}1", 349, SFINAE_Suppress, false, false, 4) +DIAG(ext_ms_c_enum_fixed_underlying_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "enumeration types with a fixed underlying type are a Microsoft extension", 386, SFINAE_Suppress, false, false, 4) +DIAG(ext_ms_sealed_keyword, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'sealed' keyword is a Microsoft extension", 394, SFINAE_Suppress, false, false, 4) +DIAG(ext_multi_using_declaration, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of multiple declarators in a single using declaration is a C++17 extension", 91, SFINAE_Suppress, false, false, 4) +DIAG(ext_nested_namespace_definition, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "nested namespace definition is a C++17 extension; define each namespace separately", 91, SFINAE_Suppress, false, false, 4) +DIAG(ext_nonstatic_member_init, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "in-class initialization of non-static data member is a C++11 extension", 79, SFINAE_Suppress, false, false, 4) +DIAG(ext_ns_enum_attribute, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "attributes on %select{a namespace|an enumerator}0 declaration are a C++17 extension", 91, SFINAE_Suppress, false, false, 4) +DIAG(ext_nullability, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "type nullability specifier %0 is a Clang extension", 461, SFINAE_Suppress, false, false, 4) +DIAG(ext_override_control_keyword, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'%0' keyword is a C++11 extension", 79, SFINAE_Suppress, false, false, 4) +DIAG(ext_ref_qualifier, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "reference qualifiers on functions are a C++11 extension", 79, SFINAE_Suppress, false, false, 4) +DIAG(ext_rvalue_reference, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "rvalue references are a C++11 extension", 79, SFINAE_Suppress, false, false, 4) +DIAG(ext_scoped_enum, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "scoped enumerations are a C++11 extension", 79, SFINAE_Suppress, false, false, 4) +DIAG(ext_static_assert_no_message, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "static_assert with no message is a C++17 extension", 91, SFINAE_Suppress, false, false, 4) +DIAG(ext_stdc_pragma_ignored, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unknown pragma in STDC namespace", 696, SFINAE_Suppress, false, false, 4) +DIAG(ext_template_template_param_typename, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "template template parameter using 'typename' is a C++17 extension", 91, SFINAE_Suppress, false, false, 4) +DIAG(ext_thread_before, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'__thread' before '%0'", 527, SFINAE_Suppress, false, false, 4) +DIAG(ext_using_attribute_ns, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "default scope specifier for attributes is a C++17 extension", 91, SFINAE_Suppress, false, false, 4) +DIAG(ext_using_declaration_pack, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pack expansion of using declaration is a C++17 extension", 91, SFINAE_Suppress, false, false, 4) +DIAG(ext_warn_gnu_final, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "__final is a GNU extension, consider using C++11 final", 250, SFINAE_Suppress, false, false, 4) +DIAG(note_bracket_depth, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use -fbracket-depth=N to increase maximum nesting level", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_exception_spec_deprecated, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use '%0' instead", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_extra_comma_message_arg, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "comma separating Objective-C messaging arguments", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_force_empty_selector_name, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "or insert whitespace before ':' to use %0 as parameter name and have an empty entry in the selector", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_meant_to_use_typename, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean to use 'typename'?", 0, SFINAE_Suppress, false, false, 20) +DIAG(note_misplaced_ellipsis_vararg_add_comma, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "insert ',' before '...' to silence this warning", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_misplaced_ellipsis_vararg_add_ellipsis, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "place '...' %select{immediately before declared identifier|here}0 to declare a function parameter pack", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_misplaced_ellipsis_vararg_existing_ellipsis, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "preceding '...' declares a function parameter pack", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_missing_end_of_definition_before, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "still within definition of %q0 here", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_missing_selector_name, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "introduce a parameter name to make %0 part of the selector", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_objc_container_start, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{class|protocol|category|class extension|implementation|category implementation}0 started here", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_pragma_attribute_namespace_on_attribute, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "omit the namespace to add attributes to the most-recently pushed attribute group", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_pragma_attribute_use_attribute_kw, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use the GNU '__attribute__' syntax", 0, SFINAE_Suppress, false, false, 4) +DIAG(note_previous_default_assoc, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous default generic association is here", 0, SFINAE_Suppress, false, false, 4) +DIAG(warn_arc_bridge_cast_nonarc, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' casts have no effect when not using ARC", 24, SFINAE_Suppress, false, false, 8) +DIAG(warn_asm_qualifier_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignored %0 qualifier on asm", 35, SFINAE_Suppress, false, false, 12) +DIAG(warn_atimport_in_framework_header, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of '@import' in framework header is discouraged, including this header requires -fmodules", 40, SFINAE_Suppress, false, false, 4) +DIAG(warn_attribute_no_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 ignored, because it is not attached to a declaration", 282, SFINAE_Suppress, false, false, 4) +DIAG(warn_attribute_on_function_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow %0 attribute in this position on a function definition", 250, SFINAE_Suppress, false, false, 4) +DIAG(warn_availability_and_unavailable, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'unavailable' availability overrides all other availability information", 52, SFINAE_Suppress, false, false, 4) +DIAG(warn_cstyle_param, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of C-style parameters in Objective-C method declarations is deprecated", 166, SFINAE_Suppress, false, false, 27) +DIAG(warn_cuda_attr_lambda_position, CLASS_WARNING, (unsigned)diag::Severity::Warning, "nvcc does not allow '__%0__' to appear after '()' in lambdas", 147, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx11_compat_decltype_auto_type_specifier, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'decltype(auto)' type specifier is incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx11_right_shift_in_template_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of right-shift operator ('>>') in template argument will require parentheses in C++11", 75, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx14_compat_constexpr_if, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "constexpr if is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx14_compat_constexpr_on_lambda, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "constexpr on lambda expressions is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx14_compat_fold_expression, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "pack fold expression is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx14_compat_init_statement, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{if|switch}0 initialization statements are incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx14_compat_nested_namespace_definition, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "nested namespace definition is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx14_compat_ns_enum_attribute, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "attributes on %select{a namespace|an enumerator}0 declaration are incompatible with C++ standards before C++17", 102, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx14_compat_static_assert_no_message, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "static_assert with no message is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx14_compat_template_template_param_typename, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "template template parameter using 'typename' is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx14_compat_using_attribute_ns, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "default scope specifier for attributes is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx17_compat_bitfield_member_init, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "default member initializer for bit-field is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx17_compat_for_range_init_stmt, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "range-based for loop initialization statements are incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx17_compat_inline_nested_namespace_definition, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "inline nested namespace definition is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx17_compat_multi_using_declaration, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "use of multiple declarators in a single using declaration is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx17_compat_using_declaration_pack, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "pack expansion using declaration is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_alias_declaration, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "alias declarations are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_alignas, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'alignas' is incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_alignof, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "alignof expressions are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_attribute, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "C++11 attribute syntax is incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_decltype, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'decltype' type specifier is incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_defaulted_deleted_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{defaulted|deleted}0 function definitions are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_enum_fixed_underlying_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "enumeration types with a fixed underlying type are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_enumerator_list_comma, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "commas at the end of enumerator lists are incompatible with C++98", 110, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_extern_template, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "extern templates are incompatible with C++98", 110, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_for_range, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "range-based for loop is incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_generalized_initializer_lists, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "generalized initializer lists are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_inline_namespace, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "inline namespaces are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_lambda, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "lambda expressions are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_literal_operator, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "literal operators are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_noexcept_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "noexcept specifications are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_noexcept_expr, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "noexcept expressions are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_nonstatic_member_init, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "in-class initialization of non-static data members is incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_nullptr, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'nullptr' is incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_override_control_keyword, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%0' keyword is incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_ref_qualifier, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "reference qualifiers on functions are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_rvalue_reference, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "rvalue references are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_scoped_enum, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "scoped enumerations are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_static_assert, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "static_assert declarations are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_top_level_semi, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "extra ';' outside of a function is incompatible with C++98", 108, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_trailing_return_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "trailing return types are incompatible with C++98", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_cxx98_compat_two_right_angle_brackets, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "consecutive right angle brackets are incompatible with C++98 (use '> >')", 106, SFINAE_Suppress, false, false, 4) +DIAG(warn_dangling_else, CLASS_WARNING, (unsigned)diag::Severity::Warning, "add explicit braces to avoid dangling else", 150, SFINAE_Suppress, false, false, 4) +DIAG(warn_empty_init_statement, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "empty initialization statement of '%select{if|switch|range-based for}0' has no effect", 204, SFINAE_Suppress, false, false, 4) +DIAG(warn_exception_spec_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "dynamic exception specifications are deprecated", 167, SFINAE_Suppress, false, false, 27) +DIAG(warn_expected_consistent_version_separator, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use same version number separators '_' or '.'; as in 'major[.minor[.subminor]]'", 52, SFINAE_Suppress, false, false, 4) +DIAG(warn_expected_qualified_after_typename, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "expected a qualified name after 'typename'", 0, SFINAE_Suppress, false, false, 4) +DIAG(warn_extra_semi_after_mem_fn_def, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "extra ';' after member function definition", 222, SFINAE_Suppress, false, false, 4) +DIAG(warn_file_asm_volatile, CLASS_WARNING, (unsigned)diag::Severity::Warning, "meaningless 'volatile' on asm outside function", 35, SFINAE_Suppress, false, false, 12) +DIAG(warn_gcc_attribute_location, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow an attribute in this position on a function declaration", 250, SFINAE_Suppress, false, false, 4) +DIAG(warn_gcc_variable_decl_in_for_loop, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow variable declarations in for loop initializers before C99", 250, SFINAE_Suppress, false, false, 4) +DIAG(warn_microsoft_dependent_exists, CLASS_WARNING, (unsigned)diag::Severity::Warning, "dependent %select{__if_not_exists|__if_exists}0 declarations are ignored", 383, SFINAE_Suppress, false, false, 4) +DIAG(warn_microsoft_qualifiers_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "qualifiers after comma in declarator list are ignored", 282, SFINAE_Suppress, false, false, 4) +DIAG(warn_misplaced_ellipsis_vararg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'...' in this location creates a C-style varargs function%select{, not a function parameter pack|}0", 18, SFINAE_Suppress, false, false, 4) +DIAG(warn_missing_dependent_template_keyword, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use 'template' keyword to treat '%0' as a dependent template name", 0, SFINAE_Suppress, false, false, 4) +DIAG(warn_missing_selector_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 used as the name of the previous parameter rather than as part of the selector", 415, SFINAE_Suppress, false, false, 4) +DIAG(warn_null_statement, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "empty expression statement has no effect; remove unnecessary ';' to silence this warning", 223, SFINAE_Suppress, false, false, 4) +DIAG(warn_objc_protocol_qualifier_missing_id, CLASS_WARNING, (unsigned)diag::Severity::Warning, "protocol has no object type specified; defaults to qualified 'id'", 0, SFINAE_Suppress, false, false, 4) +DIAG(warn_omp_extra_tokens_at_eol, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extra tokens at the end of '#pragma omp %0' are ignored", 224, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_align_expected_equal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected '=' following '#pragma %select{align|options align}0' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_align_invalid_option, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid alignment option in '#pragma %select{align|options align}0' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_begin_end_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "OpenCL extension end directive mismatches begin directive - ignoring", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_comment_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'#pragma comment %0' ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_action_or_r_paren, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected action or ')' in '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_colon, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing ':' after %0 - ignoring", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_colon_r_paren, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing ':' or ')' after %0 - ignoring", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_comma, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected ',' in '#pragma %0'", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_identifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected identifier in '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_init_seg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected 'compiler', 'lib', 'user', or a string literal for the section name in '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_integer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected integer between %0 and %1 inclusive in '#pragma %2' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_lparen, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing '(' after '#pragma %0' - ignoring", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_non_wide_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected non-wide string literal in '#pragma %0'", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_predicate, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected %select{'enable', 'disable', 'begin' or 'end'|'disable'}0 - ignoring", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_punc, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected ')' or ',' in '#pragma %0'", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_rparen, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing ')' after '#pragma %0' - ignoring", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_section_label_or_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected a stack label or a string literal for the section name in '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_section_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected a string literal for the section name in '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_section_push_pop_or_name, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected push, pop or a string literal for the section name in '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_expected_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected string literal in '#pragma %0' - ignoring", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_extension_is_core, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "OpenCL extension %0 is core feature or supported optional core feature - ignoring", 528, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_extra_tokens_at_eol, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extra tokens at end of '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_force_cuda_host_device_bad_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incorrect use of #pragma clang force_cuda_host_device begin|end", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_init_seg_unsupported_target, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'#pragma init_seg' is only supported when targeting a Microsoft environment", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_intrinsic_builtin, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is not a recognized builtin%select{|; consider including <intrin.h> to access non-builtin intrinsics}1", 284, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_invalid_action, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown action for '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_invalid_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unexpected argument '%0' to '#pragma %1'%select{|; expected %3}2", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_invalid_specific_action, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown action '%1' for '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_missing_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing argument to '#pragma %0'%select{|; expected %2}1", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_ms_struct, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incorrect use of '#pragma ms_struct on|off' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_omp_ignored, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unexpected '#pragma omp ...' in program", 613, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_optimize, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'#pragma optimize' is not supported", 285, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_options_expected_align, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected 'align' following '#pragma options' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_pack_malformed, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected integer or identifier in '#pragma pack' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_unknown_extension, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown OpenCL extension %0 - ignoring", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_unroll_cuda_value_in_parens, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument to '#pragma unroll' should not be in parentheses in CUDA C/C++", 147, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_unsupported_action, CLASS_WARNING, (unsigned)diag::Severity::Warning, "known but unsupported action '%1' for '#pragma %0' - ignored", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_unsupported_extension, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unsupported OpenCL extension %0 - ignoring", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_pragma_unused_expected_var, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected '#pragma unused' argument to be a variable name", 286, SFINAE_Suppress, false, false, 4) +DIAG(warn_semicolon_before_method_body, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "semicolon before method body is ignored", 585, SFINAE_Suppress, false, false, 4) +DIAG(warn_static_inline_explicit_inst_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring '%select{static|inline}0' keyword on explicit template instantiation", 618, SFINAE_Suppress, false, false, 4) +DIAG(warn_stdc_fenv_access_not_supported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "pragma STDC FENV_ACCESS ON is not supported, ignoring pragma", 696, SFINAE_Suppress, false, false, 4) +DIAG(warn_wrong_clang_attr_namespace, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'__clang__' is a predefined macro name, not an attribute scope specifier; did you mean '_Clang' instead?", 282, SFINAE_Suppress, false, false, 4) diff --git a/clang-r353983/include/clang/Basic/DiagnosticRefactoring.h b/clang-r353983/include/clang/Basic/DiagnosticRefactoring.h new file mode 100644 index 00000000..aded0162 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticRefactoring.h @@ -0,0 +1,28 @@ +//===--- DiagnosticRefactoring.h - ------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICREFACTORING_H +#define LLVM_CLANG_BASIC_DIAGNOSTICREFACTORING_H + +#include "clang/Basic/Diagnostic.h" + +namespace clang { +namespace diag { +enum { +#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \ + SHOWINSYSHEADER, CATEGORY) \ + ENUM, +#define REFACTORINGSTART +#include "clang/Basic/DiagnosticRefactoringKinds.inc" +#undef DIAG + NUM_BUILTIN_REFACTORING_DIAGNOSTICS +}; +} // end namespace diag +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTICREFACTORING_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticRefactoringKinds.inc b/clang-r353983/include/clang/Basic/DiagnosticRefactoringKinds.inc new file mode 100644 index 00000000..28cf7af8 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticRefactoringKinds.inc @@ -0,0 +1,11 @@ +#ifdef REFACTORINGSTART +__REFACTORINGSTART = DIAG_START_REFACTORING, +#undef REFACTORINGSTART +#endif + +DIAG(err_refactor_code_outside_of_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "the selected code is not a part of a function's / method's body", 0, SFINAE_SubstitutionFailure, false, true, 22) +DIAG(err_refactor_extract_prohibited_expression, CLASS_ERROR, (unsigned)diag::Severity::Error, "the selected expression can't be extracted", 0, SFINAE_SubstitutionFailure, false, true, 22) +DIAG(err_refactor_extract_simple_expression, CLASS_ERROR, (unsigned)diag::Severity::Error, "the selected expression is too simple to extract", 0, SFINAE_SubstitutionFailure, false, true, 22) +DIAG(err_refactor_no_selection, CLASS_ERROR, (unsigned)diag::Severity::Error, "refactoring action can't be initiated without a selection", 0, SFINAE_SubstitutionFailure, false, true, 22) +DIAG(err_refactor_selection_invalid_ast, CLASS_ERROR, (unsigned)diag::Severity::Error, "the provided selection does not overlap with the AST nodes of interest", 0, SFINAE_SubstitutionFailure, false, true, 22) +DIAG(err_refactor_selection_no_symbol, CLASS_ERROR, (unsigned)diag::Severity::Error, "there is no symbol at the given location", 0, SFINAE_SubstitutionFailure, false, true, 22) diff --git a/clang-r353983/include/clang/Basic/DiagnosticSema.h b/clang-r353983/include/clang/Basic/DiagnosticSema.h new file mode 100644 index 00000000..72a6b975 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticSema.h @@ -0,0 +1,28 @@ +//===--- DiagnosticSema.h - Diagnostics for libsema -------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICSEMA_H +#define LLVM_CLANG_BASIC_DIAGNOSTICSEMA_H + +#include "clang/Basic/Diagnostic.h" + +namespace clang { +namespace diag { +enum { +#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \ + SHOWINSYSHEADER, CATEGORY) \ + ENUM, +#define SEMASTART +#include "clang/Basic/DiagnosticSemaKinds.inc" +#undef DIAG + NUM_BUILTIN_SEMA_DIAGNOSTICS +}; +} // end namespace diag +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTICSEMA_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticSemaKinds.inc b/clang-r353983/include/clang/Basic/DiagnosticSemaKinds.inc new file mode 100644 index 00000000..f7aae163 --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticSemaKinds.inc @@ -0,0 +1,3459 @@ +#ifdef SEMASTART +__SEMASTART = DIAG_START_SEMA, +#undef SEMASTART +#endif + +DIAG(err_32_bit_builtin_64_bit_tgt, CLASS_ERROR, (unsigned)diag::Severity::Error, "this builtin is only available on 32-bit targets", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_64_bit_builtin_32_bit_tgt, CLASS_ERROR, (unsigned)diag::Severity::Error, "this builtin is only available on 64-bit targets", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_abi_tag_on_redeclaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot add 'abi_tag' attribute in a redeclaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_abstract_type_in_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{return|parameter|variable|field|instance variable|synthesized instance variable}0 type %1 is an abstract class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_access, CLASS_ERROR, (unsigned)diag::Severity::Error, "%1 is a %select{private|protected}0 member of %3", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_access_base_ctor, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{base class|inherited virtual base class}0 %1 has %select{private|protected}3 %select{default |copy |move |*ERROR* |*ERROR* |*ERROR*|}2constructor", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_access_ctor, CLASS_ERROR, (unsigned)diag::Severity::Error, "calling a %select{private|protected}0 constructor of class %2", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_access_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "ISO C++11 does not allow access declarations; use using declarations instead", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_access_dtor, CLASS_ERROR, (unsigned)diag::Severity::Error, "calling a %select{private|protected}1 destructor of class %0", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_access_dtor_base, CLASS_ERROR, (unsigned)diag::Severity::Error, "base class %0 has %select{private|protected}1 destructor", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_access_dtor_exception, CLASS_ERROR, (unsigned)diag::Severity::Error, "exception object of type %0 has %select{private|protected}1 destructor", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_access_dtor_field, CLASS_ERROR, (unsigned)diag::Severity::Error, "field of type %1 has %select{private|protected}2 destructor", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_access_dtor_ivar, CLASS_ERROR, (unsigned)diag::Severity::Error, "instance variable of type %0 has %select{private|protected}1 destructor", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_access_dtor_temp, CLASS_ERROR, (unsigned)diag::Severity::Error, "temporary of type %0 has %select{private|protected}1 destructor", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_access_dtor_var, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable of type %1 has %select{private|protected}2 destructor", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_access_dtor_vbase, CLASS_ERROR, (unsigned)diag::Severity::Error, "inherited virtual base class %1 has %select{private|protected}2 destructor", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_access_field_ctor, CLASS_ERROR, (unsigned)diag::Severity::Error, "field of type %0 has %select{private|protected}2 %select{default |copy |move |*ERROR* |*ERROR* |*ERROR* |}1constructor", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_access_friend_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend function %1 is a %select{private|protected}0 member of %3", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_access_lambda_capture, CLASS_ERROR, (unsigned)diag::Severity::Error, "capture of variable '%0' as type %1 calls %select{private|protected}3 %select{default |copy |move |*ERROR* |*ERROR* |*ERROR* |}2constructor", 0, SFINAE_AccessControl, false, true, 3) +DIAG(err_addr_ovl_ambiguous, CLASS_ERROR, (unsigned)diag::Severity::Error, "address of overloaded function %0 is ambiguous", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_addr_ovl_no_qualifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot form member pointer of type %0 without '&' and class name", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_addr_ovl_no_viable, CLASS_ERROR, (unsigned)diag::Severity::Error, "address of overloaded function %0 does not match required type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_addr_ovl_not_func_ptrref, CLASS_ERROR, (unsigned)diag::Severity::Error, "address of overloaded function %0 cannot be converted to type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_address_of_function_with_pass_object_size_params, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot take address of function %0 because parameter %1 has pass_object_size attribute", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_address_space_mismatch_templ_inst, CLASS_ERROR, (unsigned)diag::Severity::Error, "conflicting address space qualifiers are provided between types %0 and %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_address_space_qualified_delete, CLASS_ERROR, (unsigned)diag::Severity::Error, "'delete' cannot delete objects of type %0 in address space '%1'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_address_space_qualified_new, CLASS_ERROR, (unsigned)diag::Severity::Error, "'new' cannot allocate objects of type %0 in address space '%1'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_addrof_function_disabled_by_enable_if_attr, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot take address of function %0 because it has one or more non-tautological enable_if conditions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alias_after_tentative, CLASS_ERROR, (unsigned)diag::Severity::Error, "alias definition of %0 after tentative definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alias_is_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition %0 cannot also be an %select{alias|ifunc}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alias_not_supported_on_darwin, CLASS_ERROR, (unsigned)diag::Severity::Error, "aliases are not supported on darwin", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alias_not_supported_on_nvptx, CLASS_ERROR, (unsigned)diag::Severity::Error, "CUDA does not support aliases", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alias_template_expansion_into_fixed_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "pack expansion used as argument for non-pack parameter of alias template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alias_template_extra_headers, CLASS_ERROR, (unsigned)diag::Severity::Error, "extraneous template parameter list in alias template declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_align_value_attribute_argument_not_int, CLASS_ERROR, (unsigned)diag::Severity::Error, "'align_value' attribute requires integer constant", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alignas_attribute_wrong_decl_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute cannot be applied to a %select{function parameter|variable with 'register' storage class|'catch' variable|bit-field}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alignas_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "redeclaration has different alignment requirement (%1 vs %0)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alignas_missing_on_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 must be specified on definition if it is specified on any declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alignas_underaligned, CLASS_ERROR, (unsigned)diag::Severity::Error, "requested alignment is less than minimum alignment of %1 for type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_aligned_allocation_unavailable, CLASS_ERROR, (unsigned)diag::Severity::Error, "aligned %select{allocation|deallocation}0 function of type '%1' is only available on %2 %3 or newer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_aligned_attribute_argument_not_int, CLASS_ERROR, (unsigned)diag::Severity::Error, "'aligned' attribute requires integer constant", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alignment_dependent_typedef_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "requested alignment is dependent but declaration is not dependent", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alignment_not_power_of_two, CLASS_ERROR, (unsigned)diag::Severity::Error, "requested alignment is not a power of 2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alignment_too_big, CLASS_ERROR, (unsigned)diag::Severity::Error, "requested alignment must be %0 or smaller", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alignment_too_small, CLASS_ERROR, (unsigned)diag::Severity::Error, "requested alignment must be %0 or greater", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_alignof_member_of_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of 'alignof' to a field of a class still being defined", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_allocation_of_abstract_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "allocating an object of abstract class type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_altivec_empty_initializer, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ambiguous_base_to_derived_cast, CLASS_ERROR, (unsigned)diag::Severity::Error, "ambiguous cast from base %0 to derived %1:%2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ambiguous_delete_operand, CLASS_ERROR, (unsigned)diag::Severity::Error, "ambiguous conversion of delete expression of type %0 to a pointer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ambiguous_derived_to_base_conv, CLASS_ERROR, (unsigned)diag::Severity::Error, "ambiguous conversion from derived class %0 to base class %1:%2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ambiguous_inherited_constructor, CLASS_ERROR, (unsigned)diag::Severity::Error, "constructor of %0 inherited from multiple base class subobjects", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ambiguous_member_multiple_subobject_types, CLASS_ERROR, (unsigned)diag::Severity::Error, "member %0 found in multiple base classes of different types", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ambiguous_member_multiple_subobjects, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-static member %0 found in multiple base-class subobjects of type %1:%2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ambiguous_memptr_conv, CLASS_ERROR, (unsigned)diag::Severity::Error, "ambiguous conversion from pointer to member of %select{base|derived}0 class %1 to pointer to member of %select{derived|base}0 class %2:%3", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ambiguous_reference, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference to %0 is ambiguous", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ambiguous_suitable_delete_member_function_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple suitable %0 functions in %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ambiguous_tag_hiding, CLASS_ERROR, (unsigned)diag::Severity::Error, "a type named %0 is hidden by a declaration in a different namespace", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anon_bitfield_has_negative_width, CLASS_ERROR, (unsigned)diag::Severity::Error, "anonymous bit-field has negative width (%0)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anon_bitfield_qualifiers, CLASS_ERROR, (unsigned)diag::Severity::Error, "anonymous bit-field cannot have qualifiers", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anon_bitfield_width_exceeds_type_width, CLASS_ERROR, (unsigned)diag::Severity::Error, "width of anonymous bit-field (%0 bits) exceeds %select{width|size}1 of its type (%2 bit%s2)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anonymous_property, CLASS_ERROR, (unsigned)diag::Severity::Error, "anonymous property is not supported", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anonymous_record_bad_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "anonymous %select{struct|union}0 can only contain non-static data members", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anonymous_record_member_redecl, CLASS_ERROR, (unsigned)diag::Severity::Error, "member of anonymous %select{struct|union}0 redeclares %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anonymous_record_nonpublic_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "anonymous %select{struct|union}0 cannot contain a %select{private|protected}1 data member", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anonymous_record_with_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "functions cannot be declared in an anonymous %select{struct|union}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anonymous_record_with_static, CLASS_ERROR, (unsigned)diag::Severity::Error, "static members cannot be declared in an anonymous %select{struct|union}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anonymous_record_with_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "types cannot be declared in an anonymous %select{struct|union}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anonymous_struct_not_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "anonymous %select{structs|structs and classes}0 must be %select{struct or union|class}0 members", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anonymous_union_not_static, CLASS_ERROR, (unsigned)diag::Severity::Error, "anonymous unions at namespace or global scope must be declared 'static'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anonymous_union_with_storage_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "anonymous union at class scope must not have a storage specifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anyx86_interrupt_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{x86|x86-64}0 'interrupt' attribute only applies to functions that have %select{a 'void' return type|only a pointer parameter optionally followed by an integer parameter|a pointer as the first parameter|a %2 type as the second parameter}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_anyx86_interrupt_called, CLASS_ERROR, (unsigned)diag::Severity::Error, "interrupt service routine cannot be called directly", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_arc_array_param_no_ownership, CLASS_ERROR, (unsigned)diag::Severity::Error, "must explicitly describe intended ownership of an object array parameter", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_assign_property_ownership, CLASS_ERROR, (unsigned)diag::Severity::Error, "existing instance variable %1 for property %0 with %select{unsafe_unretained|assign}2 attribute must be __unsafe_unretained", 0, SFINAE_SubstitutionFailure, false, true, 6) +DIAG(err_arc_atomic_ownership, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot perform atomic operation on a pointer to type %0: type has non-trivial ownership", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_autoreleasing_capture, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot capture __autoreleasing variable in a %select{block|lambda by copy}0", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_autoreleasing_var, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{__block variables|global variables|fields|instance variables}0 cannot have __autoreleasing ownership", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_bridge_cast_incompatible, CLASS_ERROR, (unsigned)diag::Severity::Error, "incompatible types casting %0 to %1 with a %select{__bridge|__bridge_transfer|__bridge_retained}2 cast", 0, SFINAE_SubstitutionFailure, false, true, 7) +DIAG(err_arc_bridge_cast_wrong_kind, CLASS_ERROR, (unsigned)diag::Severity::Error, "cast of %select{Objective-C|block|C}0 pointer type %1 to %select{Objective-C|block|C}2 pointer type %3 cannot use %select{__bridge|__bridge_transfer|__bridge_retained}4", 0, SFINAE_SubstitutionFailure, false, true, 7) +DIAG(err_arc_cast_requires_bridge, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{cast|implicit conversion}0 of %select{Objective-C|block|C}1 pointer type %2 to %select{Objective-C|block|C}3 pointer type %4 requires a bridged cast", 0, SFINAE_SubstitutionFailure, false, true, 7) +DIAG(err_arc_collection_forward, CLASS_ERROR, (unsigned)diag::Severity::Error, "collection expression type %0 is a forward declaration", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_convesion_of_weak_unavailable, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{implicit conversion|cast}0 of weak-unavailable object of type %1 to a __weak object of type %2", 0, SFINAE_SubstitutionFailure, false, true, 9) +DIAG(err_arc_gained_method_convention, CLASS_ERROR, (unsigned)diag::Severity::Error, "method implementation does not match its declaration", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_illegal_explicit_message, CLASS_ERROR, (unsigned)diag::Severity::Error, "ARC forbids explicit message send of %0", 0, SFINAE_SubstitutionFailure, false, true, 10) +DIAG(err_arc_illegal_method_def, CLASS_ERROR, (unsigned)diag::Severity::Error, "ARC forbids %select{implementation|synthesis}0 of %1", 0, SFINAE_SubstitutionFailure, false, true, 10) +DIAG(err_arc_illegal_selector, CLASS_ERROR, (unsigned)diag::Severity::Error, "ARC forbids use of %0 in a @selector", 0, SFINAE_SubstitutionFailure, false, true, 10) +DIAG(err_arc_inconsistent_property_ownership, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{|unsafe_unretained|strong|weak}1 property %0 may not also be declared %select{|__unsafe_unretained|__strong|__weak|__autoreleasing}2", 0, SFINAE_SubstitutionFailure, false, true, 6) +DIAG(err_arc_indirect_no_ownership, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{pointer|reference}1 to non-const type %0 with no explicit ownership", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_init_method_unrelated_result_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "init methods must return a type related to the receiver type", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_lost_method_convention, CLASS_ERROR, (unsigned)diag::Severity::Error, "method was declared as %select{an 'alloc'|a 'copy'|an 'init'|a 'new'}0 method, but its implementation doesn't match because %select{its result type is not an object pointer|its result type is unrelated to its receiver type}1", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_may_not_respond, CLASS_ERROR, (unsigned)diag::Severity::Error, "no visible @interface for %0 declares the selector %1", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_method_not_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "no known %select{instance|class}1 method for selector %0", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_mismatched_cast, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{implicit conversion|cast}0 of %select{%2|a non-Objective-C pointer type %2|a block pointer|an Objective-C pointer|an indirect pointer to an Objective-C pointer}1 to %3 is disallowed with ARC", 0, SFINAE_SubstitutionFailure, false, true, 10) +DIAG(err_arc_multiple_method_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple methods named %0 found with mismatched result, parameter type or attributes", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_new_array_without_ownership, CLASS_ERROR, (unsigned)diag::Severity::Error, "'new' cannot allocate an array of %0 with no explicit ownership", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_nolifetime_behavior, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit ownership qualifier on cast result has no effect", 0, SFINAE_SubstitutionFailure, false, true, 10) +DIAG(err_arc_nonlocal_writeback, CLASS_ERROR, (unsigned)diag::Severity::Error, "passing address of %select{non-local|non-scalar}0 object to __autoreleasing parameter for write-back", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_objc_object_in_tag, CLASS_ERROR, (unsigned)diag::Severity::Error, "ARC forbids %select{Objective-C objects|blocks}0 in %select{struct|interface|union|<<ERROR>>|enum}1", 0, SFINAE_SubstitutionFailure, false, true, 10) +DIAG(err_arc_objc_property_default_assign_on_object, CLASS_ERROR, (unsigned)diag::Severity::Error, "ARC forbids synthesizing a property of an Objective-C object with unspecified ownership or storage attribute", 0, SFINAE_SubstitutionFailure, false, true, 10) +DIAG(err_arc_perform_selector_retains, CLASS_ERROR, (unsigned)diag::Severity::Error, "performSelector names a selector which retains the object", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_arc_pseudo_dtor_inconstant_quals, CLASS_ERROR, (unsigned)diag::Severity::Error, "pseudo-destructor destroys object of type %0 with inconsistently-qualified type %1", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_receiver_forward_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "receiver %0 for class message is a forward declaration", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_receiver_forward_instance, CLASS_ERROR, (unsigned)diag::Severity::Error, "receiver type %0 for instance message is a forward declaration", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_strong_property_ownership, CLASS_ERROR, (unsigned)diag::Severity::Error, "existing instance variable %1 for strong property %0 may not be %select{|__unsafe_unretained||__weak}2", 0, SFINAE_SubstitutionFailure, false, true, 6) +DIAG(err_arc_thread_ownership, CLASS_ERROR, (unsigned)diag::Severity::Error, "thread-local variable has non-trivial ownership: type is %0", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_arc_typecheck_convert_incompatible_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "incompatible pointer types passing retainable parameter of type %0to a CF function expecting %1 type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_arc_unsupported_weak_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "class is incompatible with __weak references", 0, SFINAE_SubstitutionFailure, false, true, 9) +DIAG(err_arc_unused_init_message, CLASS_ERROR, (unsigned)diag::Severity::Error, "the result of a delegate init call must be immediately returned or assigned to 'self'", 0, SFINAE_SubstitutionFailure, false, true, 10) +DIAG(err_arc_weak_disabled, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot create __weak reference in file using manual reference counting", 0, SFINAE_SubstitutionFailure, false, true, 9) +DIAG(err_arc_weak_ivar_access, CLASS_ERROR, (unsigned)diag::Severity::Error, "dereferencing a __weak pointer is not allowed due to possible null value caused by race condition, assign it to strong variable first", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_arc_weak_no_runtime, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot create __weak reference because the current deployment target does not support weak references", 0, SFINAE_SubstitutionFailure, false, true, 9) +DIAG(err_arc_weak_unavailable_assign, CLASS_ERROR, (unsigned)diag::Severity::Error, "assignment of a weak-unavailable object to a __weak object", 0, SFINAE_SubstitutionFailure, false, true, 9) +DIAG(err_arc_weak_unavailable_property, CLASS_ERROR, (unsigned)diag::Severity::Error, "synthesizing __weak instance variable of type %0, which does not support weak references", 0, SFINAE_SubstitutionFailure, false, true, 9) +DIAG(err_arg_with_address_space, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter may not be qualified with an address space", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_argument_invalid_range, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument value %0 is outside the valid range [%1, %2]", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_argument_not_multiple, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument should be a multiple of %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_arithmetic_nonfragile_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "arithmetic on pointer to interface %0, which is not a constant size for this architecture and platform", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_arm_invalid_specialreg, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid special register for builtin", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_designator_empty_range, CLASS_ERROR, (unsigned)diag::Severity::Error, "array designator range [%0, %1] is empty", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_designator_negative, CLASS_ERROR, (unsigned)diag::Severity::Error, "array designator value '%0' is negative", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_designator_non_array, CLASS_ERROR, (unsigned)diag::Severity::Error, "array designator cannot initialize non-array type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_designator_too_large, CLASS_ERROR, (unsigned)diag::Severity::Error, "array designator index (%0) exceeds array bounds (%1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_init_different_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot initialize array %diff{of type $ with array of type $|with different type of array}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_init_incompat_wide_string_into_wchar, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializing wide char array with incompatible wide string literal", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_init_narrow_string_into_wchar, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializing wide char array with non-wide string literal", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_init_non_constant_array, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot initialize array %diff{of type $ with non-constant array of type $|with different type of array}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_init_not_init_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "array initializer must be an initializer list%select{| or string literal| or wide string literal}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_init_plain_string_into_char8_t, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializing 'char8_t' array with plain string literal", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_init_utf8_string_into_char, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{|ISO C++20 does not permit }0initialization of char array with UTF-8 string literal%select{ is not permitted by '-fchar8_t'|}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_init_wide_string_into_char, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializing char array with wide string literal", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_new_needs_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "array size must be specified in new expressions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_of_abstract_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "array of abstract class type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_section_does_not_specify_contiguous_storage, CLASS_ERROR, (unsigned)diag::Severity::Error, "array section does not specify contiguous storage", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_array_size_ambiguous_conversion, CLASS_ERROR, (unsigned)diag::Severity::Error, "ambiguous conversion of array size expression of type %0 to an integral or enumeration type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_size_explicit_conversion, CLASS_ERROR, (unsigned)diag::Severity::Error, "array size expression of type %0 requires explicit conversion to type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_size_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "array size expression has incomplete class type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_size_non_int, CLASS_ERROR, (unsigned)diag::Severity::Error, "size of array has non-integer type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_size_not_integral, CLASS_ERROR, (unsigned)diag::Severity::Error, "array size expression must have integral or %select{|unscoped }0enumeration type, not %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_star_in_function_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable length array must be bound in function definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_star_outside_prototype, CLASS_ERROR, (unsigned)diag::Severity::Error, "star modifier used outside of function prototype", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_static_not_outermost, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 used in non-outermost array type derivation", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_static_outside_prototype, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 used in array declarator outside of function prototype", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_array_too_large, CLASS_ERROR, (unsigned)diag::Severity::Error, "array is too large (%0 elements)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_as_qualified_auto_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "automatic variable qualified with an%select{| invalid}0 address space", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_asm_bad_register_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "bad type for named register variable", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_immediate_expected, CLASS_ERROR, (unsigned)diag::Severity::Error, "constraint '%0' expects an integer constant expression", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "asm operand has incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_input_duplicate_match, CLASS_ERROR, (unsigned)diag::Severity::Error, "more than one input constraint matches the same output '%0'", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_invalid_global_var_reg, CLASS_ERROR, (unsigned)diag::Severity::Error, "register '%0' unsuitable for global register variables on this target", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_invalid_input_constraint, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid input constraint '%0' in asm", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_invalid_input_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid input size for constraint '%0'", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_invalid_lvalue_in_input, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid lvalue in asm input for constraint '%0'", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_invalid_lvalue_in_output, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid lvalue in asm output", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_invalid_output_constraint, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid output constraint '%0' in asm", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_invalid_output_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid output size for constraint '%0'", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_naked_parm_ref, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter references not allowed in naked functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_asm_naked_this_ref, CLASS_ERROR, (unsigned)diag::Severity::Error, "'this' pointer references not allowed in naked functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_asm_non_addr_value_in_memory_constraint, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference to a %select{bit-field|vector element|global register variable}0 in asm %select{input|output}1 with a memory constraint '%2'", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_register_size_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "size of register '%0' does not match variable size", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_tying_incompatible_types, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported inline asm: input with type %diff{$ matching output with type $|}0,1", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_unexpected_constraint_alternatives, CLASS_ERROR, (unsigned)diag::Severity::Error, "asm constraint has an unexpected number of alternatives: %0 vs %1", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_asm_unknown_register_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown register name '%0' in asm", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_assoc_compatible_types, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %0 in generic association compatible with previously specified type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_assoc_type_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %0 in generic association incomplete", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_assoc_type_nonobject, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %0 in generic association not an object type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_assoc_type_variably_modified, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %0 in generic association is a variably modified type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atdef_nonfragile_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of @defs is not supported on this architecture and platform", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_builtin_cannot_be_const, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to atomic builtin cannot be const-qualified (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_builtin_must_be_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to atomic builtin must be a pointer (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_builtin_must_be_pointer_intfltptr, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to atomic builtin must be a pointer to integer, floating-point or pointer (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_builtin_must_be_pointer_intptr, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to atomic builtin must be a pointer to integer or pointer (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_builtin_pointer_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to atomic builtin must be a pointer to 1,2,4,8 or 16 byte type (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_exclusive_builtin_pointer_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to load or store exclusive builtin must be a pointer to 1,2,4 or 8 byte type (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_load_store_uses_lib, CLASS_ERROR, (unsigned)diag::Severity::Error, "atomic %select{load|store}0 requires runtime support that is not available for this target", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_op_bitwise_needs_atomic_int, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to bitwise atomic operation must be a pointer to %select{|atomic }0integer (%1 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_op_has_invalid_synch_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "synchronization scope argument to atomic operation is invalid", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_op_needs_atomic, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to atomic operation must be a pointer to _Atomic type (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_op_needs_atomic_int_or_ptr, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to atomic operation must be a pointer to %select{|atomic }0integer or pointer (%1 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_op_needs_int32_or_ptr, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to atomic operation must be a pointer to signed or unsigned 32-bit integer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_op_needs_non_const_atomic, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to atomic operation must be a pointer to non-%select{const|constant}0 _Atomic type (%1 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_op_needs_non_const_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to atomic operation must be a pointer to non-const type (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_op_needs_trivial_copy, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to atomic operation must be a pointer to a trivially-copyable type (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_property_nontrivial_assign_op, CLASS_ERROR, (unsigned)diag::Severity::Error, "atomic property of reference type %0 cannot have non-trivial assignment operator", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atomic_specifier_bad_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "_Atomic cannot be applied to %select{incomplete |array |function |reference |atomic |qualified |}0type %1 %select{||||||which is not trivially copyable}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_atprotocol_protocol, CLASS_ERROR, (unsigned)diag::Severity::Error, "@protocol is using a forward protocol declaration of %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attr_cond_never_constant_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute expression never produces a constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attr_objc_ownership_redundant, CLASS_ERROR, (unsigned)diag::Severity::Error, "the type %0 is already explicitly ownership-qualified", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attr_tlsmodel_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "tls_model must be \"global-dynamic\", \"local-dynamic\", \"initial-exec\" or \"local-exec\"", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_address_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "function type may not be qualified with an address space", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_address_multiple_qualifiers, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple address spaces specified for type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_address_space_negative, CLASS_ERROR, (unsigned)diag::Severity::Error, "address space is negative", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_address_space_too_high, CLASS_ERROR, (unsigned)diag::Severity::Error, "address space is larger than the maximum supported (%0)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_aligned_too_great, CLASS_ERROR, (unsigned)diag::Severity::Error, "requested alignment must be %0 bytes or smaller", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_argument_invalid, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute argument is invalid: %select{max must be 0 since min is 0|min must not be greater than max}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_argument_is_zero, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute must be greater than 0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_argument_n_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute requires parameter %1 to be %select{int or bool|an integer constant|a string|an identifier}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_argument_out_of_bounds, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute parameter %1 is out of bounds", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_argument_out_of_bounds_extra_info, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute parameter %1 is out of bounds: %plural{0:no parameters to index into|1:can only be 1, since there is one parameter|:must be between 1 and %2}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_argument_out_of_range, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute requires integer constant between %1 and %2 inclusive", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_argument_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute requires %select{int or bool|an integer constant|a string|an identifier}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_argument_vec_type_hint, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid attribute argument %0 - expecting a vector or vectorizable scalar type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_bad_neon_vector_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "Neon vector size must be 64 or 128 bits", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_cleanup_arg_not_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "'cleanup' argument %select{|%1 |%1 }0is not a %select{||single }0function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_cleanup_func_arg_incompatible_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "'cleanup' function %0 parameter has %diff{type $ which is incompatible with type $|incompatible type}1,2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_cleanup_func_must_take_one_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "'cleanup' function %0 must take 1 parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_dll_ambiguous_default_ctor, CLASS_ERROR, (unsigned)diag::Severity::Error, "'__declspec(dllexport)' cannot be applied to more than one default constructor in %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_dll_deleted, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute %q0 cannot be applied to a deleted function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_dll_lambda, CLASS_ERROR, (unsigned)diag::Severity::Error, "lambda cannot be declared %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_dll_member_of_dll_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute %q0 cannot be applied to member of %q1 class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_dll_not_extern, CLASS_ERROR, (unsigned)diag::Severity::Error, "%q0 must have external linkage when declared %q1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_dll_redeclaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "redeclaration of %q0 cannot add %q1 attribute", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_dll_thread_local, CLASS_ERROR, (unsigned)diag::Severity::Error, "%q0 cannot be thread local when declared %q1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_dllimport_data_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition of dllimport data", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_dllimport_function_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "dllimport cannot be applied to non-inline function definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_dllimport_static_field_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition of dllimport static field not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_integers_only, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute argument may only refer to a function parameter of integer type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_invalid_implicit_this_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute is invalid for the implicit this argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_invalid_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "vector size not an integral multiple of component size", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_invalid_vector_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid vector element type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_multiple_objc_gc, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple garbage collection attributes specified for type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_no_member_pointers, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute cannot be used with pointers to members", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_not_supported_in_lang, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute is not supported in %select{C|C++|Objective-C}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_not_supported_on_arch, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute is not supported on '%1'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_only_once_per_parameter, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute can only be applied once per parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_overloadable_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "redeclaration of %0 must %select{not |}1have the 'overloadable' attribute", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_overloadable_multiple_unmarked_overloads, CLASS_ERROR, (unsigned)diag::Severity::Error, "at most one overload for a given name may lack the 'overloadable' attribute", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_overloadable_no_prototype, CLASS_ERROR, (unsigned)diag::Severity::Error, "'overloadable' function %0 must have a prototype", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_pointers_only, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute only applies to%select{| constant}1 pointer arguments", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_regparm_invalid_number, CLASS_ERROR, (unsigned)diag::Severity::Error, "'regparm' parameter must be between 0 and %0 inclusive", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_regparm_wrong_platform, CLASS_ERROR, (unsigned)diag::Severity::Error, "'regparm' is not valid on this platform", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_requires_opencl_version, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute requires OpenCL version %1%select{| or above}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_requires_positive_integer, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute requires a %select{positive|non-negative}1 integral compile time constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_section_invalid_for_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument to %select{'code_seg'|'section'}1 attribute is not valid for this target: %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_selectany_non_extern_data, CLASS_ERROR, (unsigned)diag::Severity::Error, "'selectany' can only be applied to data items with external linkage", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_sentinel_less_than_zero, CLASS_ERROR, (unsigned)diag::Severity::Error, "'sentinel' parameter 1 less than zero", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_sentinel_not_zero_or_one, CLASS_ERROR, (unsigned)diag::Severity::Error, "'sentinel' parameter 2 not 0 or 1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_size_too_large, CLASS_ERROR, (unsigned)diag::Severity::Error, "vector size too large", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_too_few_arguments, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute takes at least %1 argument%s1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_too_many_arguments, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute takes no more than %1 argument%s1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute is not supported for this target", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_vecreturn_only_pod_record, CLASS_ERROR, (unsigned)diag::Severity::Error, "the vecreturn attribute can only be used on a POD (plain old data) class or structure (i.e. no virtual functions)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_vecreturn_only_vector_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "the vecreturn attribute can only be used on a class or structure with one member, which must be a vector", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_weak_static, CLASS_ERROR, (unsigned)diag::Severity::Error, "weak declaration cannot have internal linkage", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_weakref_not_global_context, CLASS_ERROR, (unsigned)diag::Severity::Error, "weakref declaration of %0 must be in a global context", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_weakref_not_static, CLASS_ERROR, (unsigned)diag::Severity::Error, "weakref declaration must have internal linkage", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_weakref_without_alias, CLASS_ERROR, (unsigned)diag::Severity::Error, "weakref declaration of %0 must also have an alias attribute", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_wrong_decl_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute only applies to %select{functions|unions|variables and functions|functions and methods|functions, methods and blocks|functions, methods, and parameters|variables|variables and fields|variables, data members and tag types|types and namespaces|variables, functions and classes|kernel functions|non-K&R-style functions}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_wrong_decl_type_str, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute only applies to %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_wrong_number_arguments, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute %plural{0:takes no arguments|1:takes one argument|:requires exactly %1 arguments}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attribute_zero_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "zero vector size", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_attributes_are_not_compatible, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 and %1 attributes are not compatible", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_bitfield, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot pass bit-field as __auto_type initializer in C", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_different_deductions, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{'auto'|'decltype(auto)'|'__auto_type'|template arguments}0 deduced as %1 in declaration of %2 and deduced as %3 in declaration of %4", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_fn_deduction_failure, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce return type %0 from returned value of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_fn_different_deductions, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%select{auto|decltype(auto)}0' in return type deduced as %1 here but deduced as %2 in earlier return statement", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_fn_no_return_but_not_auto, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce return type %0 for function with no return statements", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_fn_return_init_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce return type from initializer list", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_fn_return_void_but_not_auto, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce return type %0 from omitted return expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_fn_used_before_defined, CLASS_ERROR, (unsigned)diag::Severity::Error, "function %0 with deduced return type cannot be used before it is defined", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_fn_virtual, CLASS_ERROR, (unsigned)diag::Severity::Error, "function with deduced return type cannot be virtual", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_inconsistent_deduction, CLASS_ERROR, (unsigned)diag::Severity::Error, "deduced conflicting types %diff{($ vs $) |}0,1for initializer list element type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_init_list_from_c, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use __auto_type with initializer list in C", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_missing_trailing_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "'auto' return without trailing return type; deduced return types are a C++14 extension", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_new_ctor_multiple_expressions, CLASS_ERROR, (unsigned)diag::Severity::Error, "new expression for type %0 contains multiple constructor arguments", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_new_deduction_failure, CLASS_ERROR, (unsigned)diag::Severity::Error, "new expression for type %0 has incompatible constructor argument of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_new_requires_ctor_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "new expression for type %0 requires a constructor argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_non_deduced_not_alone, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{function with deduced return type|declaration with trailing return type}0 must be the only declaration in its group", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_not_allowed, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{'auto'|'decltype(auto)'|'__auto_type'|use of %select{class template|function template|variable template|alias template|template template parameter|template}2 %3 requires template arguments; argument deduction}0 not allowed %select{in function prototype|in non-static struct member|in struct member|in non-static union member|in union member|in non-static class member|in interface member|in exception declaration|in template parameter until C++17|in block literal|in template argument|in typedef|in type alias|in function return type|in conversion function type|here|in lambda parameter|in type allocated by 'new'|in K&R-style function parameter|in template parameter|in friend declaration}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_not_allowed_var_inst, CLASS_ERROR, (unsigned)diag::Severity::Error, "'auto' variable template instantiation is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_var_deduction_failure, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable %0 with type %1 has incompatible initializer of type %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_var_deduction_failure_from_init_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce actual type for variable %0 with type %1 from initializer list", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_var_init_multiple_expressions, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer for variable %0 with type %1 contains multiple expressions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_var_init_no_expression, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer for variable %0 with type %1 is empty", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_var_init_paren_braces, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce type for variable %1 with type %2 from %select{parenthesized|nested}0 initializer list", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_var_requires_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaration of variable %0 with deduced type %1 requires an initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_auto_variable_cannot_appear_in_own_initializer, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable %0 declared with deduced type %1 cannot appear in its own initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_await_suspend_invalid_return_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "return type of 'await_suspend' is required to be 'void' or 'bool' (have %0)", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_bad_category_property_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "property implementation must have its declaration in the category %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_const_cast_dest, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{const_cast||||C-style cast|functional-style cast}0 to %2, which is not a reference, pointer-to-object, or pointer-to-data-member", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_cstyle_cast_overload, CLASS_ERROR, (unsigned)diag::Severity::Error, "address of overloaded function %0 cannot be cast to type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_cxx_cast_bitfield, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{const_cast|static_cast|reinterpret_cast|dynamic_cast|C-style cast|functional-style cast}0 from bit-field lvalue to reference type %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_cxx_cast_generic, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{const_cast|static_cast|reinterpret_cast|dynamic_cast|C-style cast|functional-style cast}0 from %1 to %2 is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_cxx_cast_member_pointer_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot %select{||reinterpret_cast||C-style cast|}0 from member pointer type %1 to member pointer type %2 of different size", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_cxx_cast_qualifiers_away, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{const_cast|static_cast|reinterpret_cast|dynamic_cast|C-style cast|functional-style cast}0 from %1 to %2 casts away qualifiers", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_cxx_cast_rvalue, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{const_cast|static_cast|reinterpret_cast|dynamic_cast|C-style cast|functional-style cast}0 from rvalue to reference type %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_cxx_cast_scalar_to_vector_different_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{||reinterpret_cast||C-style cast|}0 from scalar %1 to vector %2 of different size", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_cxx_cast_unrelated_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{const_cast|static_cast|reinterpret_cast|dynamic_cast|C-style cast|functional-style cast}0 from %1 to %2, which are not related by inheritance, is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_cxx_cast_vector_to_scalar_different_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{||reinterpret_cast||C-style cast|}0 from vector %1 to scalar %2 of different size", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_cxx_cast_vector_to_vector_different_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{||reinterpret_cast||C-style cast|}0 from vector %1 to vector %2 of different size", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_dynamic_cast_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is an incomplete type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_dynamic_cast_not_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not a class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_dynamic_cast_not_polymorphic, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not polymorphic", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_dynamic_cast_not_ptr, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not a pointer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_dynamic_cast_not_ref_or_ptr, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not a reference or pointer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_kernel_param_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot be used as the type of a kernel parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_lvalue_to_rvalue_cast, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot cast from lvalue of type %1 to rvalue reference type %2; types are not compatible", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_memptr_lhs, CLASS_ERROR, (unsigned)diag::Severity::Error, "left hand operand to %0 must be a %select{|pointer to }1class compatible with the right hand operand, but is %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_memptr_rhs, CLASS_ERROR, (unsigned)diag::Severity::Error, "right hand operand to %0 has non-pointer-to-member type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_multiversion_option, CLASS_ERROR, (unsigned)diag::Severity::Error, "function multiversioning doesn't support %select{feature|architecture}0 '%1'", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_bad_new_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot allocate %select{function|reference}1 type %0 with new", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_parameter_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot be the name of a parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_property_context, CLASS_ERROR, (unsigned)diag::Severity::Error, "property implementation must be in a class or category implementation", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_property_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "property implementation must have its declaration in interface %0 or one of its extensions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_receiver_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "bad receiver type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_reinterpret_cast_overload, CLASS_ERROR, (unsigned)diag::Severity::Error, "reinterpret_cast cannot resolve overloaded function %0 to type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_reinterpret_cast_reference, CLASS_ERROR, (unsigned)diag::Severity::Error, "reinterpret_cast of a %0 to %1 needs its address, which is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_reinterpret_cast_small_int, CLASS_ERROR, (unsigned)diag::Severity::Error, "cast from pointer to smaller type %2 loses information", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_rvalue_to_rvalue_cast, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot cast from rvalue of type %1 to rvalue reference type %2; types are not compatible", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_static_cast_member_pointer_nonmp, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot cast from type %1 to member pointer type %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_static_cast_overload, CLASS_ERROR, (unsigned)diag::Severity::Error, "address of overloaded function %0 cannot be static_cast to type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_static_cast_pointer_nonpointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot cast from type %1 to pointer type %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bad_variable_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot be the name of a variable or data member", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_base_class_has_flexible_array_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "base class %0 has a flexible array member", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_base_clause_on_union, CLASS_ERROR, (unsigned)diag::Severity::Error, "unions cannot have base classes", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_base_init_direct_and_virtual, CLASS_ERROR, (unsigned)diag::Severity::Error, "base class initializer %0 names both a direct base class and an inherited virtual base class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_base_init_does_not_name_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "constructor initializer %0 does not name a class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_base_must_be_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "base specifier must name a class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_base_specifier_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute cannot be applied to a base specifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_binding_cannot_appear_in_own_initializer, CLASS_ERROR, (unsigned)diag::Severity::Error, "binding %0 cannot appear in the initializer of its own decomposition declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bitfield_has_negative_width, CLASS_ERROR, (unsigned)diag::Severity::Error, "bit-field %0 has negative width (%1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bitfield_has_zero_width, CLASS_ERROR, (unsigned)diag::Severity::Error, "named bit-field %0 has zero width", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bitfield_width_exceeds_type_width, CLASS_ERROR, (unsigned)diag::Severity::Error, "width of bit-field %0 (%1 bits) exceeds %select{width|size}2 of its type (%3 bit%s3)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_block_decl_ref_not_modifiable_lvalue, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable is not assignable (missing __block type specifier)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_block_extern_cant_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "'extern' variable cannot have an initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_block_on_nonlocal, CLASS_ERROR, (unsigned)diag::Severity::Error, "__block attribute not allowed, only allowed on local variables", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_block_on_vm, CLASS_ERROR, (unsigned)diag::Severity::Error, "__block attribute not allowed on declaration with a variably modified type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_block_return_missing_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-void block should return a value", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_block_returning_array_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "block cannot return %select{array|function}0 type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_blocks_disable, CLASS_ERROR, (unsigned)diag::Severity::Error, "blocks support disabled - compile with -fblocks or %select{pick a deployment target that supports them|for OpenCL 2.0}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_bound_member_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference to non-static member function must be called%select{|; did you mean to call it with no arguments?}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_box_literal_collection, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{string|character|boolean|numeric}0 literal must be prefixed by '@' in a collection", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_break_not_in_loop_or_switch, CLASS_ERROR, (unsigned)diag::Severity::Error, "'break' statement not in loop or switch statement", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_builtin_annotation_first_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "first argument to __builtin_annotation must be an integer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_builtin_annotation_second_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "second argument to __builtin_annotation must be a non-wide string constant", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_builtin_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition of builtin function %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_builtin_fn_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "builtin functions must be directly called", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_builtin_func_cast_more_than_one_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "function-style cast to a builtin type can only take one argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_builtin_launder_invalid_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{non-pointer|function pointer|void pointer}0 argument to '__builtin_launder' is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_builtin_longjmp_invalid_val, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument to __builtin_longjmp must be a constant 1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_builtin_longjmp_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "__builtin_longjmp is not supported for the current target", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_builtin_operator_new_delete_not_usual, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to '%select{__builtin_operator_new|__builtin_operator_delete}0' selects non-usual %select{allocation|deallocation}0 function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_builtin_redeclare, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot redeclare builtin function %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_builtin_requires_language, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' is only available in %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_builtin_setjmp_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "__builtin_setjmp is not supported for the current target", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_builtin_target_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "builtin is not supported on this target", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_builtin_x64_aarch64_only, CLASS_ERROR, (unsigned)diag::Severity::Error, "this builtin is only available on x86-64 and aarch64 targets", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_c99_array_usage_cxx, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{qualifier in |static |}0array size %select{||'[*] '}0is a C99 feature, not permitted in C++", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_call_function_incomplete_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "calling %0 with incomplete return type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_call_incomplete_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument type %0 is incomplete", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_call_incomplete_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "calling function with incomplete return type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_callback_attribute_argument_unknown, CLASS_ERROR, (unsigned)diag::Severity::Error, "'callback' attribute argument %0 is not a known function parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_callback_attribute_invalid_callee, CLASS_ERROR, (unsigned)diag::Severity::Error, "'callback' attribute specifies invalid callback callee", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_callback_attribute_multiple, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple 'callback' attributes specified", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_callback_attribute_no_callee, CLASS_ERROR, (unsigned)diag::Severity::Error, "'callback' attribute specifies no callback callee", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_callback_callee_is_variadic, CLASS_ERROR, (unsigned)diag::Severity::Error, "'callback' attribute callee may not be variadic", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_callback_callee_no_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "'callback' attribute callee does not have function type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_callback_implicit_this_not_available, CLASS_ERROR, (unsigned)diag::Severity::Error, "'callback' argument at position %0 references unavailable implicit 'this'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cannot_find_suitable_accessor, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find suitable %select{getter|setter}0 for property %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cannot_form_pointer_to_member_of_reference_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot form a pointer-to-member to member %0 of reference type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cannot_pass_non_trivial_c_struct_to_vararg, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot pass non-trivial C object of type %0 by value to variadic %select{function|block|method|constructor}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cannot_pass_objc_interface_to_vararg, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot pass object with interface type %0 by value through variadic %select{function|block|method|constructor}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cannot_pass_objc_interface_to_vararg_format, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot pass object with interface type %1 by value to variadic %select{function|block|method|constructor}2; expected type from format string was %3", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cannot_pass_to_vararg, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot pass %select{expression of type %1|initializer list}0 to variadic %select{function|block|method|constructor}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cannot_pass_to_vararg_format, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot pass %select{expression of type %1|initializer list}0 to variadic %select{function|block|method|constructor}2; expected type from format string was %3", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_capture_block_variable, CLASS_ERROR, (unsigned)diag::Severity::Error, "__block variable %0 cannot be captured in a %select{lambda expression|captured statement}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_capture_default_non_local, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-local lambda expression cannot have a capture-default", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_capture_does_not_name_variable, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 in capture list does not name a variable", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_capture_more_than_once, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 can appear only once in a capture list", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_capture_non_automatic_variable, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot be captured because it does not have automatic storage duration", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_capture_of_abstract_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "by-copy capture of value of abstract type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_capture_of_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "by-copy capture of variable %0 with incomplete type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_carries_dependency_missing_on_first_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{function|parameter}0 declared '[[carries_dependency]]' after its first declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_carries_dependency_param_not_function_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "'[[carries_dependency]]' attribute only allowed on parameter in a function declaration or lambda", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_case_not_in_switch, CLASS_ERROR, (unsigned)diag::Severity::Error, "'case' statement not in switch statement", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cast_pointer_from_non_pointer_int, CLASS_ERROR, (unsigned)diag::Severity::Error, "operand of type %0 cannot be cast to a pointer type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cast_pointer_to_non_pointer_int, CLASS_ERROR, (unsigned)diag::Severity::Error, "pointer cannot be cast to type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cast_selector_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot type cast @selector expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_catch_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot catch incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_catch_incomplete_ptr, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot catch pointer to incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_catch_incomplete_ref, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot catch reference to incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_catch_param_not_objc_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "@catch parameter is not a pointer to an interface type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_catch_rvalue_ref, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot catch exceptions by rvalue reference", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_catch_variably_modified, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot catch variably modified type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_category_forward_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot define %select{category|class extension}0 for undefined class %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_category_property, CLASS_ERROR, (unsigned)diag::Severity::Error, "property declared in category %0 cannot be implemented in class implementation", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cconv_change, CLASS_ERROR, (unsigned)diag::Severity::Error, "function declared '%0' here was previously declared %select{'%2'|without calling convention}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cconv_knr, CLASS_ERROR, (unsigned)diag::Severity::Error, "function with no prototype cannot use the %0 calling convention", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cconv_varargs, CLASS_ERROR, (unsigned)diag::Severity::Error, "variadic function cannot use %0 calling convention", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cfstring_literal_not_string_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "CFString literal is not a string constant", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_circular_inheritance, CLASS_ERROR, (unsigned)diag::Severity::Error, "circular inheritance between %0 and %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_class_extension_after_impl, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot declare class extension for %0 after class implementation", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_class_marked_final_used_as_base, CLASS_ERROR, (unsigned)diag::Severity::Error, "base %0 is marked '%select{final|sealed}1'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_class_property_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %0 is a class property; did you mean to access it with class '%1'?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_class_redeclared_with_different_access, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 redeclared with '%1' access", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cocoa_naming_owned_rule, CLASS_ERROR, (unsigned)diag::Severity::Error, "property follows Cocoa naming convention for returning 'owned' objects", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_collection_expr_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "the type %0 is not a pointer to a fast-enumerable object", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_complex_mode_vector_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "type of machine mode does not support base vector types", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_compound_literal_with_address_space, CLASS_ERROR, (unsigned)diag::Severity::Error, "compound literal in function scope may not be qualified with an address space", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_compound_qualified_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{block pointer|pointer|reference}0 to function type %select{%2 |}1cannot have '%3' qualifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_concept_decl_invalid_specifiers, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{variable|function}0 concept cannot be declared '%select{thread_local|inline|friend|constexpr}1'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_concept_decls_may_only_appear_in_namespace_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "concept declarations may only appear in namespace scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_concept_specialized, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{function|variable}0 concept cannot be %select{explicitly instantiated|explicitly specialized|partially specialized}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_concept_specified_specialization, CLASS_ERROR, (unsigned)diag::Severity::Error, "'concept' cannot be applied on an %select{explicit instantiation|explicit specialization|partial specialization}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_concept_wrong_decl_kind, CLASS_ERROR, (unsigned)diag::Severity::Error, "'concept' can only appear on the definition of a function template or variable template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cond_voidptr_arc, CLASS_ERROR, (unsigned)diag::Severity::Error, "operands to conditional of types%diff{ $ and $|}0,1 are incompatible in ARC mode", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conditional_ambiguous, CLASS_ERROR, (unsigned)diag::Severity::Error, "conditional expression is ambiguous; %diff{$ can be converted to $ and vice versa|types can be convert to each other}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conditional_ambiguous_ovl, CLASS_ERROR, (unsigned)diag::Severity::Error, "conditional expression is ambiguous; %diff{$ and $|types}0,1 can be converted to several common types", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conditional_vector_element_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "vector condition type %0 and result type %1 do not have elements of the same size", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conditional_vector_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "vector condition type %0 and result type %1 do not have the same number of elements", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conditional_void_nonvoid, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{left|right}1 operand to ? is void, but %select{right|left}1 operand is of type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_config_scalar_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "CUDA special function '%0' must have scalar return type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conflicting_aliasing_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "conflicting types for alias %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conflicting_codeseg_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "conflicting code segment specifiers", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conflicting_ivar_bitwidth, CLASS_ERROR, (unsigned)diag::Severity::Error, "instance variable %0 has conflicting bit-field width", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conflicting_ivar_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "conflicting instance variable names: %0 vs %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conflicting_ivar_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "instance variable %0 has conflicting type%diff{: $ vs $|}1,2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conflicting_overriding_cc_attributes, CLASS_ERROR, (unsigned)diag::Severity::Error, "virtual function %0 has different calling convention attributes %diff{($) than the function it overrides (which has calling convention $)|than the function it overrides}1,2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conflicting_super_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "conflicting super class name %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conflicting_types, CLASS_ERROR, (unsigned)diag::Severity::Error, "conflicting types for %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constant_integer_arg_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument to %0 must be a constant integer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_body_invalid_stmt, CLASS_ERROR, (unsigned)diag::Severity::Error, "statement not allowed in constexpr %select{function|constructor}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_body_no_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "no return statement in constexpr function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_ctor_missing_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "constexpr constructor must initialize all members", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_dtor, CLASS_ERROR, (unsigned)diag::Severity::Error, "destructor cannot be marked constexpr", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_function_try_block, CLASS_ERROR, (unsigned)diag::Severity::Error, "function try block not allowed in constexpr %select{function|constructor}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_local_var_no_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "variables defined in a constexpr %select{function|constructor}0 must be initialized", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_local_var_non_literal_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable of non-literal type %1 cannot be defined in a constexpr %select{function|constructor}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_local_var_static, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{static|thread_local}1 variable not permitted in a constexpr %select{function|constructor}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_main, CLASS_ERROR, (unsigned)diag::Severity::Error, "'main' is not allowed to be declared constexpr", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_no_declarators, CLASS_ERROR, (unsigned)diag::Severity::Error, "constexpr can only be used in variable and function declarations", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_non_literal_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "constexpr %select{function|constructor}1's %ordinal0 parameter type %2 is not a literal type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_non_literal_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "constexpr function's return type %0 is not a literal type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_redecl_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{non-constexpr declaration of %0 follows constexpr declaration|constexpr declaration of %0 follows non-constexpr declaration}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_return_missing_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-void constexpr function %0 should return a value", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_static_mem_var_requires_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaration of constexpr static data member %0 requires an initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_tag, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{class|struct|interface|union|enum}0 cannot be marked constexpr", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_union_ctor_no_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "constexpr union constructor does not initialize any member", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_var_non_literal, CLASS_ERROR, (unsigned)diag::Severity::Error, "constexpr variable cannot have non-literal type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_var_requires_const_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "constexpr variable %0 must be initialized by a constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_virtual, CLASS_ERROR, (unsigned)diag::Severity::Error, "virtual function cannot be constexpr", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_virtual_base, CLASS_ERROR, (unsigned)diag::Severity::Error, "constexpr %select{member function|constructor}0 not allowed in %select{struct|interface|class}1 with virtual base %plural{1:class|:classes}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constexpr_vla, CLASS_ERROR, (unsigned)diag::Severity::Error, "variably-modified type %0 cannot be used in a constexpr %select{function|constructor}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constructor_byvalue_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "copy constructor must pass its first argument by reference", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constructor_cannot_be, CLASS_ERROR, (unsigned)diag::Severity::Error, "constructor cannot be declared '%0'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constructor_redeclared, CLASS_ERROR, (unsigned)diag::Severity::Error, "constructor cannot be redeclared", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_constructor_return_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "constructor cannot have a return type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_continuation_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "class extension has no primary class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_continue_not_in_loop, CLASS_ERROR, (unsigned)diag::Severity::Error, "'continue' statement not in loop statement", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conv_function_not_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion function must be a non-static member function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conv_function_redeclared, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion function cannot be redeclared", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conv_function_return_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion function cannot have a return type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conv_function_to_array, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion function cannot convert to an array type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conv_function_to_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion function cannot convert to a function type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conv_function_variadic, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion function cannot be variadic", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conv_function_with_complex_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot specify any part of a return type in the declaration of a conversion function%select{; put the complete type after 'operator'|; use a typedef to declare a conversion to %1|; use an alias template to declare a conversion to %1|}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_conv_function_with_params, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion function cannot have any parameters", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_convertvector_incompatible_vector, CLASS_ERROR, (unsigned)diag::Severity::Error, "first two arguments to __builtin_convertvector must have the same number of elements", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_convertvector_non_vector, CLASS_ERROR, (unsigned)diag::Severity::Error, "first argument to __builtin_convertvector must be a vector", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_convertvector_non_vector_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "second argument to __builtin_convertvector must be a vector type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_copy_capture_with_copy_default, CLASS_ERROR, (unsigned)diag::Severity::Error, "'&' must precede a capture when the capture default is '='", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_coroutine_handle_missing_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "std::experimental::coroutine_handle missing a member named '%0'", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_coroutine_invalid_func_context, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%1' cannot be used in %select{a constructor|a destructor|a copy assignment operator|a move assignment operator|the 'main' function|a constexpr function|a function with a deduced return type|a varargs function}0", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_coroutine_objc_method, CLASS_ERROR, (unsigned)diag::Severity::Error, "Objective-C methods as coroutines are not yet supported", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_coroutine_outside_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' cannot be used outside a function", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_coroutine_promise_get_return_object_on_allocation_failure, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0: 'get_return_object_on_allocation_failure()' must be a static member function", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_coroutine_promise_incompatible_return_functions, CLASS_ERROR, (unsigned)diag::Severity::Error, "the coroutine promise type %0 declares both 'return_value' and 'return_void'", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_coroutine_promise_new_requires_nothrow, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is required to have a non-throwing noexcept specification when the promise type declares 'get_return_object_on_allocation_failure()'", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_coroutine_promise_requires_return_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "the coroutine promise type %0 must declare either 'return_value' or 'return_void'", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_coroutine_promise_type_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "this function cannot be a coroutine: %0 is an incomplete type", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_coroutine_promise_unhandled_exception_required, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is required to declare the member 'unhandled_exception()'", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_coroutine_type_missing_specialization, CLASS_ERROR, (unsigned)diag::Severity::Error, "this function cannot be a coroutine: missing definition of specialization %0", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_coroutine_unevaluated_context, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' cannot be used in an unevaluated context", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_covariant_return_ambiguous_derived_to_base_conv, CLASS_ERROR, (unsigned)diag::Severity::Error, "return type of virtual function %3 is not covariant with the return type of the function it overrides (ambiguous conversion from derived class %0 to base class %1:%2)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_covariant_return_inaccessible_base, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid covariant return for virtual function: %1 is a %select{private|protected}2 base class of %0", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_covariant_return_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "return type of virtual function %0 is not covariant with the return type of the function it overrides (%1 is incomplete)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_covariant_return_not_derived, CLASS_ERROR, (unsigned)diag::Severity::Error, "return type of virtual function %0 is not covariant with the return type of the function it overrides (%1 is not derived from %2)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_covariant_return_type_class_type_more_qualified, CLASS_ERROR, (unsigned)diag::Severity::Error, "return type of virtual function %0 is not covariant with the return type of the function it overrides (class type %1 is more qualified than class type %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_covariant_return_type_different_qualifications, CLASS_ERROR, (unsigned)diag::Severity::Error, "return type of virtual function %0 is not covariant with the return type of the function it overrides (%1 has different qualifiers than %2)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cpu_dispatch_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "'cpu_dispatch' function redeclared with different CPUs", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_cpu_specific_multiple_defs, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple 'cpu_specific' functions cannot specify the same CPU: %0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_ctor_dtor_returns_void, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{constructor|destructor}1 %0 must not return void expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cuda_device_exceptions, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use '%0' in %select{__device__|__global__|__host__|__host__ __device__}1 function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cuda_extern_shared, CLASS_ERROR, (unsigned)diag::Severity::Error, "__shared__ variable %0 cannot be 'extern'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cuda_host_shared, CLASS_ERROR, (unsigned)diag::Severity::Error, "__shared__ local variables not allowed in %select{__device__|__global__|__host__|__host__ __device__}0 functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cuda_nonglobal_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "__constant__ variables must be global", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cuda_ovl_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{__device__|__global__|__host__|__host__ __device__}0 function %1 cannot overload %select{__device__|__global__|__host__|__host__ __device__}2 function %3", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cuda_unattributed_constexpr_cannot_overload_device, CLASS_ERROR, (unsigned)diag::Severity::Error, "constexpr function %0 without __host__ or __device__ attributes cannot overload __device__ function with same signature. Add a __host__ attribute, or build with -fno-cuda-host-device-constexpr.", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_cuda_vla, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use variable-length arrays in %select{__device__|__global__|__host__|__host__ __device__}0 functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_current_module_name_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "module name '%0' specified on command line does not match name of module", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_dangling_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{reference|backing array for 'std::initializer_list'}2 %select{|subobject of }1member %0 %select{binds to|is}2 a temporary object whose lifetime would be shorter than the lifetime of the constructed object", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dealloc_bad_result_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "dealloc return type must be correctly specified as 'void' under ARC, instead of %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decimal_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "GNU decimal type extension not supported", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decl_attribute_invalid_on_stmt, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute cannot be applied to a statement", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decl_negative_array_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' declared as an array with a negative size", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_declarator_need_ident, CLASS_ERROR, (unsigned)diag::Severity::Error, "declarator requires an identifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_declspec_thread_on_thread_variable, CLASS_ERROR, (unsigned)diag::Severity::Error, "'__declspec(thread)' applied to variable that already has a thread-local storage specifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decltype_auto_cannot_be_combined, CLASS_ERROR, (unsigned)diag::Severity::Error, "'decltype(auto)' cannot be combined with other type specifiers", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decltype_auto_compound_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot form %select{pointer to|reference to|array of}0 'decltype(auto)'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decltype_auto_function_declarator_not_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "'decltype(auto)' can only be used as a return type in a function declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decltype_auto_initializer_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce 'decltype(auto)' from initializer list", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decltype_auto_invalid, CLASS_ERROR, (unsigned)diag::Severity::Error, "'decltype(auto)' not allowed here", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decltype_in_declarator, CLASS_ERROR, (unsigned)diag::Severity::Error, "'decltype' cannot be used to name a declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_ambiguous_base, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot decompose members of ambiguous base class %1 of %0:%2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_anon_union_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot decompose class type %0 because it has an anonymous %select{struct|union}1 member", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_context, CLASS_ERROR, (unsigned)diag::Severity::Error, "decomposition declaration not permitted in this context", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_inaccessible_base, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot decompose members of inaccessible base class %1 of %0", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_decomp_decl_inaccessible_field, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot decompose %select{private|protected}0 member %1 of %3", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_decomp_decl_multiple_bases_with_members, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot decompose class type %1: %select{its base classes %2 and|both it and its base class}0 %3 have non-static data members", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_not_alone, CLASS_ERROR, (unsigned)diag::Severity::Error, "decomposition declaration must be the only declaration in its group", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_parens, CLASS_ERROR, (unsigned)diag::Severity::Error, "decomposition declaration cannot be declared with parentheses", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_requires_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "decomposition declaration %0 requires an initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "decomposition declaration cannot be declared %plural{1:'%1'|:with '%1' specifiers}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_std_tuple_element_not_specialized, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot decompose this type; 'std::tuple_element<%0>::type' does not name a type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_std_tuple_size_not_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot decompose this type; 'std::tuple_size<%0>::value' is not a valid integral constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "decomposition declaration template not supported", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "decomposition declaration cannot be declared with type %0; declared type must be 'auto' or reference to 'auto'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_unbindable_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot decompose %select{union|non-class, non-array}1 type %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decomp_decl_wrong_number_bindings, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %0 decomposes into %2 elements, but %select{only |}3%1 names were provided", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_decrement_bool, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot decrement expression of type bool", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduced_class_template_compound_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot %select{form pointer to|form reference to|form array of|form function returning|use parentheses when declaring variable with}0 deduced class template specialization type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduced_class_template_ctor_ambiguous, CLASS_ERROR, (unsigned)diag::Severity::Error, "ambiguous deduction for template arguments of %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduced_class_template_ctor_no_viable, CLASS_ERROR, (unsigned)diag::Severity::Error, "no viable constructor or deduction guide for deduction of template arguments of %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduced_class_template_deleted, CLASS_ERROR, (unsigned)diag::Severity::Error, "class template argument deduction for %0 selected a deleted constructor", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduced_class_template_explicit, CLASS_ERROR, (unsigned)diag::Severity::Error, "class template argument deduction for %0 selected an explicit %select{constructor|deduction guide}1 for copy-list-initialization", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduced_class_template_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "template %0 has no definition and no %select{|viable }1deduction guides for deduction of template arguments", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduced_non_class_template_specialization_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{<error>|function template|variable template|alias template|template template parameter|template}0 %1 requires template arguments; argument deduction only allowed for class templates", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduced_non_type_template_arg_type_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "deduced non-type template argument does not have the same type as the corresponding template parameter%diff{ ($ vs $)|}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduced_return_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "deduced return types are a C++14 extension", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduction_guide_bad_trailing_return_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "deduced type %1 of deduction guide is not %select{|written as }2a specialization of template %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduction_guide_defines_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "deduction guide cannot have a function definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduction_guide_explicit_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "deduction guide is %select{not |}0declared 'explicit' but previous declaration was%select{ not|}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduction_guide_invalid_specifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "deduction guide cannot be declared '%0'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduction_guide_name_not_class_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot specify deduction guide for %select{<error>|function template|variable template|alias template|template template parameter|dependent template name}0 %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduction_guide_no_trailing_return_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "deduction guide declaration without trailing return type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduction_guide_specialized, CLASS_ERROR, (unsigned)diag::Severity::Error, "deduction guide cannot be %select{explicitly instantiated|explicitly specialized}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduction_guide_template_not_deducible, CLASS_ERROR, (unsigned)diag::Severity::Error, "deduction guide template contains %select{a template parameter|template parameters}0 that cannot be deduced", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduction_guide_with_complex_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot specify any part of a return type in the declaration of a deduction guide", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduction_guide_wrong_access, CLASS_ERROR, (unsigned)diag::Severity::Error, "deduction guide has different access from the corresponding member template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deduction_guide_wrong_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "deduction guide must be declared in the same scope as template %q0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deep_exception_specs_differ, CLASS_ERROR, (unsigned)diag::Severity::Error, "exception specifications of %select{return|argument}0 types differ", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_default_arg_in_partial_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "default template argument in a class template partial specialization", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_default_arg_makes_ctor_special, CLASS_ERROR, (unsigned)diag::Severity::Error, "addition of default argument on redeclaration makes this constructor a %select{default|copy|move}0 constructor", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_default_init_const, CLASS_ERROR, (unsigned)diag::Severity::Error, "default initialization of an object of const type %0%select{| without a user-provided default constructor}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_default_not_in_switch, CLASS_ERROR, (unsigned)diag::Severity::Error, "'default' statement not in switch statement", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_defaulted_copy_assign_not_ref, CLASS_ERROR, (unsigned)diag::Severity::Error, "the parameter for an explicitly-defaulted copy assignment operator must be an lvalue reference type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_defaulted_special_member_copy_const_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "the parameter for this explicitly-defaulted copy %select{constructor|assignment operator}0 is const, but a member or base requires it to be non-const", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_defaulted_special_member_move_const_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "the parameter for an explicitly-defaulted move %select{constructor|assignment operator}0 may not be const", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_defaulted_special_member_params, CLASS_ERROR, (unsigned)diag::Severity::Error, "an explicitly-defaulted %select{|copy |move }0constructor cannot have default arguments", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_defaulted_special_member_quals, CLASS_ERROR, (unsigned)diag::Severity::Error, "an explicitly-defaulted %select{copy|move}0 assignment operator may not have 'const'%select{, 'constexpr'|}1 or 'volatile' qualifiers", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_defaulted_special_member_return_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicitly-defaulted %select{copy|move}0 assignment operator must return %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_defaulted_special_member_variadic, CLASS_ERROR, (unsigned)diag::Severity::Error, "an explicitly-defaulted %select{|copy |move }0constructor cannot be variadic", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_defaulted_special_member_volatile_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "the parameter for an explicitly-defaulted %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 may not be volatile", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_definition_of_explicitly_defaulted_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition of explicitly defaulted %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor|function}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_definition_of_implicitly_declared_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition of implicitly declared %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor|function}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_delegating_ctor, CLASS_ERROR, (unsigned)diag::Severity::Error, "delegating constructors are permitted only in C++11", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_delegating_initializer_alone, CLASS_ERROR, (unsigned)diag::Severity::Error, "an initializer for a delegating constructor must appear alone", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_delete_explicit_conversion, CLASS_ERROR, (unsigned)diag::Severity::Error, "converting delete expression from type %0 to type %1 invokes an explicit conversion function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_delete_incomplete_class_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "deleting incomplete class type %0; no conversions to pointer type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_delete_operand, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot delete expression of type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deleted_decl_not_first, CLASS_ERROR, (unsigned)diag::Severity::Error, "deleted definition must be first declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deleted_function_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "attempt to use a deleted function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deleted_inherited_ctor_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "constructor inherited by %0 from base class %1 is implicitly deleted", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deleted_main, CLASS_ERROR, (unsigned)diag::Severity::Error, "'main' is not allowed to be deleted", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_deleted_override, CLASS_ERROR, (unsigned)diag::Severity::Error, "deleted function %0 cannot override a non-deleted function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dependent_deduced_tst, CLASS_ERROR, (unsigned)diag::Severity::Error, "typename specifier refers to %select{class template|function template|variable template|alias template|template template parameter|template}0 member in %1; argument deduction not allowed here", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dependent_function_template_spec_no_match, CLASS_ERROR, (unsigned)diag::Severity::Error, "no candidate function template was found for dependent friend function template specialization", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dependent_nested_name_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "nested name specifier for a declaration cannot depend on a template parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dependent_non_type_arg_in_partial_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "type of specialized non-type template argument depends on a template parameter of the partial specialization", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dependent_tag_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{declaration|definition}0 of %select{struct|interface|union|class|enum}1 in a dependent scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dependent_typed_non_type_arg_in_partial_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument specializes a template parameter with dependent type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dereference_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "dereference of pointer to incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_designated_init_attr_non_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "'objc_designated_initializer' attribute only applies to init methods of interface or class extension declarations", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_designator_for_scalar_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "designator in initializer for scalar type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_designator_into_flexible_array_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "designator into flexible array member subobject", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_destroy_attr_on_non_static_var, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{no_destroy|always_destroy}0 attribute can only be applied to a variable with static or thread storage duration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_destroying_operator_delete_not_usual, CLASS_ERROR, (unsigned)diag::Severity::Error, "destroying operator delete can have only an optional size and optional alignment parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_destructor_cannot_be, CLASS_ERROR, (unsigned)diag::Severity::Error, "destructor cannot be declared '%0'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_destructor_class_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected the class name after '~' to name a destructor", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_destructor_expr_type_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "destructor type %0 in object destruction expression does not match the type %1 of the object being destroyed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_destructor_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected the class name after '~' to name the enclosing class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_destructor_not_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "destructor must be a non-static member function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_destructor_redeclared, CLASS_ERROR, (unsigned)diag::Severity::Error, "destructor cannot be redeclared", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_destructor_return_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "destructor cannot have a return type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_destructor_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "destructor cannot be declared as a template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_destructor_typedef_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "destructor cannot be declared using a %select{typedef|type alias}1 %0 of the class name", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_destructor_variadic, CLASS_ERROR, (unsigned)diag::Severity::Error, "destructor cannot be variadic", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_destructor_with_params, CLASS_ERROR, (unsigned)diag::Severity::Error, "destructor cannot have any parameters", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_device_static_local_var, CLASS_ERROR, (unsigned)diag::Severity::Error, "within a %select{__device__|__global__|__host__|__host__ __device__}0 function, only __shared__ variables or const variables without device memory qualifier may be marked 'static'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_diagnose_if_invalid_diagnostic_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid diagnostic type for 'diagnose_if'; use \"error\" or \"warning\" instead", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_diagnose_if_succeeded, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_different_asm_label, CLASS_ERROR, (unsigned)diag::Severity::Error, "conflicting asm label", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_different_language_linkage, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaration of %0 has a different language linkage", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_different_pass_object_size_params, CLASS_ERROR, (unsigned)diag::Severity::Error, "conflicting pass_object_size attributes on parameters", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_different_return_type_for_overriding_virtual_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "virtual function %0 has a different return type %diff{($) than the function it overrides (which has return type $)|than the function it overrides}1,2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dimension_expr_not_constant_integer, CLASS_ERROR, (unsigned)diag::Severity::Error, "dimension expression does not evaluate to a constant unsigned int", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_distant_exception_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "exception specifications are not allowed beyond a single level of indirection", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_downcast_from_inaccessible_base, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot cast %select{private|protected}2 base class %1 to %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dtor_expr_without_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference to %select{destructor|pseudo-destructor}0 must be called%select{|; did you mean to call it with no arguments?}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dup_implementation_category, CLASS_ERROR, (unsigned)diag::Severity::Error, "reimplementation of category %1 for class %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dup_implementation_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "reimplementation of class %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_duplicate_base_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "base class %0 specified more than once as a direct base class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_duplicate_case, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate case value '%0'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_duplicate_case_differing_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate case value: '%0' and '%1' both equal '%2'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_duplicate_class_def, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate interface definition for class %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_duplicate_ivar_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "instance variable is already declared", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_duplicate_ivar_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "synthesized properties %0 and %1 both claim instance variable %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_duplicate_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate member %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_duplicate_method_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate declaration of method %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_duplicate_property, CLASS_ERROR, (unsigned)diag::Severity::Error, "property has a previous declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dynamic_property_ivar_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "dynamic property cannot have instance variable specification", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_dynamic_var_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "dynamic initialization is not supported for __device__, __constant__, and __shared__ variables.", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_early_catch_all, CLASS_ERROR, (unsigned)diag::Severity::Error, "catch-all handler must come last", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ellipsis_first_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "ISO C requires a named parameter before '...'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ellipsis_in_declarator_not_parameter, CLASS_ERROR, (unsigned)diag::Severity::Error, "only function and template parameters can be parameter packs", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_empty_scalar_initializer, CLASS_ERROR, (unsigned)diag::Severity::Error, "scalar initializer cannot be empty", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_enum_class_reference, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference to %select{|scoped }0enumeration must use 'enum' not 'enum class'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_enum_invalid_underlying, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-integral type %0 is an invalid underlying type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_enum_mode_vector_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "mode %0 is not supported for enumeration types", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_enum_redeclare_fixed_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "enumeration previously declared with %select{non|}0fixed underlying type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_enum_redeclare_scoped_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "enumeration previously declared as %select{un|}0scoped", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_enum_redeclare_type_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "enumeration redeclared with different underlying type %0 (was %1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_enumerator_does_not_exist, CLASS_ERROR, (unsigned)diag::Severity::Error, "enumerator %0 does not exist in instantiation of %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_enumerator_too_large, CLASS_ERROR, (unsigned)diag::Severity::Error, "enumerator value is not representable in the underlying type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_enumerator_wrapped, CLASS_ERROR, (unsigned)diag::Severity::Error, "enumerator value %0 is not representable in the underlying type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_event_t_addr_space_qual, CLASS_ERROR, (unsigned)diag::Severity::Error, "the event_t type can only be used with __private address space qualifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_exception_spec_cycle, CLASS_ERROR, (unsigned)diag::Severity::Error, "exception specification of %0 uses itself", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_exception_spec_in_typedef, CLASS_ERROR, (unsigned)diag::Severity::Error, "exception specifications are not allowed in %select{typedefs|type aliases}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_exception_spec_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "exception specification needed for member of incomplete class %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_exception_spec_not_parsed, CLASS_ERROR, (unsigned)diag::Severity::Error, "exception specification is not available until end of class definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_exceptions_disabled, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use '%0' with exceptions disabled", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_excess_initializers, CLASS_ERROR, (unsigned)diag::Severity::Error, "excess elements in %select{array|vector|scalar|union|struct}0 initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_excess_initializers_in_char_array_initializer, CLASS_ERROR, (unsigned)diag::Severity::Error, "excess elements in char array initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_expected_class_or_namespace, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not a class%select{ or namespace|, namespace, or enumeration}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_expected_kernel_void_return_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "kernel must have void return type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_ambiguous, CLASS_ERROR, (unsigned)diag::Severity::Error, "partial ordering for explicit instantiation of %0 is ambiguous", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_constexpr, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation cannot be 'constexpr'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_data_member_not_instantiated, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation refers to static data member %q0 that is not an instantiation", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_declaration_after_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation declaration (with 'extern') follows explicit instantiation definition (without 'extern')", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_duplicate, CLASS_ERROR, (unsigned)diag::Severity::Error, "duplicate explicit instantiation of %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_in_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation of %0 in class scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_inline, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation cannot be 'inline'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_member_function_not_instantiated, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation refers to member function %q0 that is not an instantiation", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_must_be_global, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation of %0 must occur at global scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_nontemplate_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation of non-templated type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_not_known, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation of %0 does not refer to a function template, variable template, member function, member class, or static data member", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_of_typedef, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation of typedef %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_out_of_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation of %0 not in a namespace enclosing %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_requires_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation declaration requires a name", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_storage_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation cannot have a storage class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_undefined_func_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation of undefined function template %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_undefined_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation of undefined %select{member class|member function|static data member}0 %1 of class template %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_undefined_var_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation of undefined variable template %q0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_unqualified_wrong_namespace, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation of %q0 must occur in namespace %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_instantiation_without_template_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit instantiation of %q0 must specify a template argument list", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_non_ctor_or_conv_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "'explicit' can only be applied to a constructor or conversion function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_non_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "'explicit' can only appear on non-static member functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_out_of_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "'explicit' can only be specified inside the class definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_explicit_specialization_inconsistent_storage_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit specialization has extraneous, inconsistent storage class '%select{none|extern|static|__private_extern__|auto|register}0'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_export_not_in_module_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "export declaration can only be used within a module interface unit after the module declaration", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_export_within_export, CLASS_ERROR, (unsigned)diag::Severity::Error, "export declaration appears within another export declaration", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_expr_not_cce, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{case value|enumerator value|non-type template argument|array size|constexpr if condition}0 is not a constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_expr_not_ice, CLASS_ERROR, (unsigned)diag::Severity::Error, "expression is not an %select{integer|integral}0 constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_expr_not_string_literal, CLASS_ERROR, (unsigned)diag::Severity::Error, "expression is not a string literal", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ext_vector_component_exceeds_length, CLASS_ERROR, (unsigned)diag::Severity::Error, "vector component access exceeds type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ext_vector_component_name_illegal, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal vector component name '%0'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_extern_c_global_conflict, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaration of %1 %select{with C language linkage|in global scope}0 conflicts with declaration %select{in global scope|with C language linkage}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_extern_non_extern, CLASS_ERROR, (unsigned)diag::Severity::Error, "extern declaration of %0 follows non-extern declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_falloff_nonvoid_block, CLASS_ERROR, (unsigned)diag::Severity::Error, "control reaches end of non-void block", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_fallthrough_attr_invalid_placement, CLASS_ERROR, (unsigned)diag::Severity::Error, "fallthrough annotation does not directly precede switch label", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_fallthrough_attr_outside_switch, CLASS_ERROR, (unsigned)diag::Severity::Error, "fallthrough annotation is outside switch statement", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_fallthrough_attr_wrong_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute is only allowed on empty statements", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_field_declared_as_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "field %0 declared as a function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_field_designator_non_aggr, CLASS_ERROR, (unsigned)diag::Severity::Error, "field designator cannot initialize a %select{non-struct, non-union|non-class}0 type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_field_designator_nonfield, CLASS_ERROR, (unsigned)diag::Severity::Error, "field designator %0 does not refer to a non-static data member", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_field_designator_unknown, CLASS_ERROR, (unsigned)diag::Severity::Error, "field designator %0 does not refer to any field in type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_field_designator_unknown_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "field designator %0 does not refer to any field in type %1; did you mean %2?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_field_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "field has incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_field_instantiates_to_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "data member instantiated with function type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_field_with_address_space, CLASS_ERROR, (unsigned)diag::Severity::Error, "field may not be qualified with an address space", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_filter_expression_integral, CLASS_ERROR, (unsigned)diag::Severity::Error, "filter expression type should be an integral value not %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_final_function_overridden, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaration of %0 overrides a '%select{final|sealed}1' function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_first_argument_to_cwsc_block_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "first argument to __builtin_call_with_static_chain must not be a block call", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_first_argument_to_cwsc_builtin_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "first argument to __builtin_call_with_static_chain must not be a builtin call", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_first_argument_to_cwsc_not_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "first argument to __builtin_call_with_static_chain must be a non-member call expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_first_argument_to_cwsc_pdtor_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "first argument to __builtin_call_with_static_chain must not be a pseudo-destructor call", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_first_argument_to_va_arg_not_of_type_va_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "first argument to 'va_arg' is of type %0 and not 'va_list'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_flexible_array_arc_retainable, CLASS_ERROR, (unsigned)diag::Severity::Error, "ARC forbids flexible array members with retainable object type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_flexible_array_empty_aggregate, CLASS_ERROR, (unsigned)diag::Severity::Error, "flexible array member %0 not allowed in otherwise empty %select{struct|interface|union|class|enum}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_flexible_array_has_nontrivial_dtor, CLASS_ERROR, (unsigned)diag::Severity::Error, "flexible array member %0 of type %1 with non-trivial destruction", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_flexible_array_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "initialization of flexible array member is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_flexible_array_init_needs_braces, CLASS_ERROR, (unsigned)diag::Severity::Error, "flexible array requires brace-enclosed initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_flexible_array_not_at_end, CLASS_ERROR, (unsigned)diag::Severity::Error, "flexible array member %0 with type %1 is not at the end of %select{struct|interface|union|class|enum}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_flexible_array_union, CLASS_ERROR, (unsigned)diag::Severity::Error, "flexible array member %0 in a union is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_flexible_array_virtual_base, CLASS_ERROR, (unsigned)diag::Severity::Error, "flexible array member %0 not allowed in %select{struct|interface|union|class|enum}1 which has a virtual base class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_fold_expression_bad_operand, CLASS_ERROR, (unsigned)diag::Severity::Error, "expression not permitted as operand of fold expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_fold_expression_empty, CLASS_ERROR, (unsigned)diag::Severity::Error, "unary fold expression has empty expansion for operator '%0' with no fallback value", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_fold_expression_packs_both_sides, CLASS_ERROR, (unsigned)diag::Severity::Error, "binary fold expression has unexpanded parameter packs in both operands", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_for_range_decl_must_be_var, CLASS_ERROR, (unsigned)diag::Severity::Error, "for range declaration must declare a variable", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_for_range_deduction_failure, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use type %0 as a range", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_for_range_dereference, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid range expression of type %0; did you mean to dereference it with '*'?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_for_range_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use incomplete type %0 as a range", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_for_range_invalid, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid range expression of type %0; no viable '%select{begin|end}1' function available", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_for_range_iter_deduction_failure, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use type %0 as an iterator", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_for_range_storage_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "loop variable %0 may not be declared %select{'extern'|'static'|'__private_extern__'|'auto'|'register'|'constexpr'}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_format_attribute_implicit_this_format_string, CLASS_ERROR, (unsigned)diag::Severity::Error, "format attribute cannot specify the implicit this argument as the format string", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_format_attribute_not, CLASS_ERROR, (unsigned)diag::Severity::Error, "format argument not %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_format_attribute_requires_variadic, CLASS_ERROR, (unsigned)diag::Severity::Error, "format attribute requires variadic function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_format_attribute_result_not, CLASS_ERROR, (unsigned)diag::Severity::Error, "function does not return %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_format_strftime_third_parameter, CLASS_ERROR, (unsigned)diag::Severity::Error, "strftime format attribute requires 3rd parameter to be 0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_fortify_std_lib_bad_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "'fortify_stdlib' attribute applied to an unknown function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_forward_ref_enum, CLASS_ERROR, (unsigned)diag::Severity::Error, "ISO C++ forbids forward references to 'enum' types", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_forward_superclass, CLASS_ERROR, (unsigned)diag::Severity::Error, "attempting to use the forward class %0 as superclass of %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_friend_decl_does_not_match, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend declaration of %0 does not match any declaration in %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_friend_decl_with_def_arg_must_be_def, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend declaration specifying a default argument must be a definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_friend_decl_with_def_arg_redeclared, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend declaration specifying a default argument must be the only declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_friend_def_in_local_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend function cannot be defined in a local class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_friend_is_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "friends cannot be members of the declaring class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_friend_not_first_in_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "'friend' must appear first in a non-function declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_func_def_incomplete_result, CLASS_ERROR, (unsigned)diag::Severity::Error, "incomplete result type %0 in function definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_func_returning_array_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "function cannot return %select{array|function}0 type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_func_returning_qualified_void, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "function cannot return qualified void type %0", 554, SFINAE_Suppress, false, false, 2) +DIAG(err_function_attribute_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "function declared with %0 attribute was previously declared without the %0 attribute", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_function_concept_bool_ret, CLASS_ERROR, (unsigned)diag::Severity::Error, "declared return type of function concept must be 'bool'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_function_concept_exception_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "function concept cannot have exception specification", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_function_concept_not_defined, CLASS_ERROR, (unsigned)diag::Severity::Error, "function concept declaration must be a definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_function_concept_with_params, CLASS_ERROR, (unsigned)diag::Severity::Error, "function concept cannot have any parameters", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_function_marked_override_not_overriding, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 marked 'override' but does not override any member functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_function_parameter_pack_without_parameter_packs, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %0 of function parameter pack does not contain any unexpanded parameter packs", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_function_template_partial_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "function template partial specialization is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_function_template_spec_ambiguous, CLASS_ERROR, (unsigned)diag::Severity::Error, "function template specialization %0 ambiguously refers to more than one function template; explicitly specify%select{| additional}1 template arguments to identify a particular function template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_function_template_spec_no_match, CLASS_ERROR, (unsigned)diag::Severity::Error, "no function template matches function template specialization %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_gc_weak_property_strong_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "weak attribute declared on a __strong type property in GC mode", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_generic_sel_multi_match, CLASS_ERROR, (unsigned)diag::Severity::Error, "controlling expression type %0 compatible with %1 generic association types", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_generic_sel_no_match, CLASS_ERROR, (unsigned)diag::Severity::Error, "controlling expression type %0 not compatible with any generic association type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_getter_not_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "no getter method for read from property", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_global_call_not_config, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to global function %0 not configured", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_goto_into_protected_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot jump from this goto statement to its label", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_goto_ms_asm_label, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot jump from this goto statement to label %0 inside an inline assembly block", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_half_const_requires_fp16, CLASS_ERROR, (unsigned)diag::Severity::Error, "half precision constant requires cl_khr_fp16", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_hexagon_builtin_requires_hvx, CLASS_ERROR, (unsigned)diag::Severity::Error, "builtin requires HVX", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_hexagon_builtin_unsupported_cpu, CLASS_ERROR, (unsigned)diag::Severity::Error, "builtin is not supported on this CPU", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_hexagon_builtin_unsupported_hvx, CLASS_ERROR, (unsigned)diag::Severity::Error, "builtin is not supported on this version of HVX", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_iboutletcollection_builtintype, CLASS_ERROR, (unsigned)diag::Severity::Error, "type argument of iboutletcollection attribute cannot be a builtin type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_iboutletcollection_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid type %0 as argument of iboutletcollection attribute", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ice_ambiguous_conversion, CLASS_ERROR, (unsigned)diag::Severity::Error, "ambiguous conversion from type %0 to an integral or unscoped enumeration type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ice_explicit_conversion, CLASS_ERROR, (unsigned)diag::Severity::Error, "integral constant expression requires explicit conversion from %0 to %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ice_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "integral constant expression has incomplete class type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ice_not_integral, CLASS_ERROR, (unsigned)diag::Severity::Error, "integral constant expression must have integral or unscoped enumeration type, not %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ice_too_large, CLASS_ERROR, (unsigned)diag::Severity::Error, "integer constant expression evaluates to value %0 that cannot be represented in a %1-bit %select{signed|unsigned}2 integer type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ident_in_dtor_not_a_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "identifier %0 in object destruction expression does not name a type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ident_list_in_fn_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "a parameter list without types is only allowed in a function definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_container_subscripting_op, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal operation on Objective-C container subscripting", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_decl_array_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "array has incomplete element type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_decl_array_of_auto, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' declared as array of %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_decl_array_of_functions, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' declared as array of functions of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_decl_array_of_references, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' declared as array of references of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_decl_mempointer_in_nonclass, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' does not point into a class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_decl_mempointer_to_reference, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' declared as a member pointer to a reference of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_decl_mempointer_to_void, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' declared as a member pointer to void", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_decl_pointer_to_reference, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' declared as a pointer to a reference of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_initializer, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal initializer (only variables can be initialized)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_initializer_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal initializer type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_message_expr_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "Objective-C message has incomplete result type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_qualifiers_on_catch_parm, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal qualifiers on @catch parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_illegal_union_or_anon_struct_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{anonymous struct|union}0 member %1 has a non-trivial %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_imaginary_not_supported, CLASS_ERROR, (unsigned)diag::Severity::Error, "imaginary types are not supported", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_impcast_complex_scalar, CLASS_ERROR, (unsigned)diag::Severity::Error, "implicit conversion from %0 to %1 is not permitted in C++", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_implicit_coroutine_std_nothrow_type_not_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "std::nothrow was not found; include <new> before defining a coroutine which uses get_return_object_on_allocation_failure()", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_implicit_empty_initializer, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer for aggregate with no elements requires explicit braces", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_implicit_instantiate_member_undefined, CLASS_ERROR, (unsigned)diag::Severity::Error, "implicit instantiation of undefined member %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_implied_comparison_category_type_not_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce return type of 'operator<=>' because type '%0' was not found; include <compare>", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_implied_coroutine_type_not_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 type was not found; include <experimental/coroutine> before defining a coroutine", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_implied_std_coroutine_traits_promise_type_not_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "this function cannot be a coroutine: %0 is not a class", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_implied_std_coroutine_traits_promise_type_not_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "this function cannot be a coroutine: %q0 has no member named 'promise_type'", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_implied_std_initializer_list_not_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce type of initializer list because std::initializer_list was not found; include <initializer_list>", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_in_class_initializer_bad_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "static data member of type %0 must be initialized out of line", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_in_class_initializer_cycle, CLASS_ERROR, (unsigned)diag::Severity::Error, "default member initializer for %0 uses itself", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_in_class_initializer_literal_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "in-class initializer for static data member of type %0 requires 'constexpr' specifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_in_class_initializer_non_const, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-const static data member must be initialized out of line", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_in_class_initializer_non_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "in-class initializer for static data member is not a constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_in_class_initializer_not_yet_parsed, CLASS_ERROR, (unsigned)diag::Severity::Error, "default member initializer for %1 needed within definition of enclosing class %0 outside of member functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_in_class_initializer_volatile, CLASS_ERROR, (unsigned)diag::Severity::Error, "static const volatile data member must be initialized out of line", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incompatible_exception_specs, CLASS_ERROR, (unsigned)diag::Severity::Error, "target exception specification is not superset of source", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incomplete_base_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "base class has incomplete type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incomplete_in_exception_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{|pointer to |reference to }0incomplete type %1 is not allowed in exception specification", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incomplete_member_access, CLASS_ERROR, (unsigned)diag::Severity::Error, "member access into incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incomplete_nested_name_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "incomplete type %0 named in nested name specifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incomplete_object_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "incomplete type in call to object of type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incomplete_receiver_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "incomplete receiver type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incomplete_synthesized_property, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot synthesize property %0 with incomplete type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "incomplete type %0 where a complete type is required", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incomplete_type_objc_at_encode, CLASS_ERROR, (unsigned)diag::Severity::Error, "'@encode' of incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incomplete_type_used_in_type_trait_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "incomplete type %0 used in type trait expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incomplete_typeid, CLASS_ERROR, (unsigned)diag::Severity::Error, "'typeid' of incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_inconsistent_ivar_count, CLASS_ERROR, (unsigned)diag::Severity::Error, "inconsistent number of instance variables specified", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incorrect_defaulted_constexpr, CLASS_ERROR, (unsigned)diag::Severity::Error, "defaulted definition of %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 is not constexpr", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incorrect_defaulted_exception_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "exception specification of explicitly defaulted %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 does not match the calculated one", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_incorrect_number_of_vector_initializers, CLASS_ERROR, (unsigned)diag::Severity::Error, "number of elements must be either one or match the size of the vector", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_increment_decrement_enum, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot %select{decrement|increment}0 expression of enum type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_indirect_goto_in_protected_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot jump from this indirect goto statement to one of its possible targets", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_indirect_goto_without_addrlabel, CLASS_ERROR, (unsigned)diag::Severity::Error, "indirect goto in function with no address-of-label expressions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_init_capture_deduction_failure, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce type for lambda capture %0 from initializer of type %2", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_init_capture_deduction_failure_from_init_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce type for lambda capture %0 from initializer list", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_init_capture_multiple_expressions, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer for lambda capture %0 contains multiple expressions", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_init_capture_no_expression, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer missing for lambda capture %0", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_init_capture_paren_braces, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce type for lambda capture %1 from %select{parenthesized|nested}0 initializer list", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_init_conversion_failed, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot initialize %select{a variable|a parameter|return object|statement expression result|an exception object|a member subobject|an array element|a new value|a value|a base class|a constructor delegation|a vector element|a block element|a block element|a complex element|a lambda capture|a compound literal initializer|a related result|a parameter of CF audited function}0 %diff{of type $ with an %select{rvalue|lvalue}2 of type $|with an %select{rvalue|lvalue}2 of incompatible type}1,3%select{|: different classes%diff{ ($ vs $)|}5,6|: different number of parameters (%5 vs %6)|: type mismatch at %ordinal5 parameter%diff{ ($ vs $)|}6,7|: different return type%diff{ ($ vs $)|}5,6|: different qualifiers (%5 vs %6)|: different exception specifications}4", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_init_element_not_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer element is not a compile-time constant", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_init_for_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot create object of function type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_init_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "initialization of incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_init_list_bad_dest_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{|non-aggregate }0type %1 cannot be initialized with an initializer list", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_init_method_bad_return_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "init methods must return an object pointer type, not %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_init_non_aggr_init_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "initialization of non-aggregate type %0 with an initializer list", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_init_objc_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot initialize Objective-C class type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_init_priority_object_attr, CLASS_ERROR, (unsigned)diag::Severity::Error, "can only use 'init_priority' attribute on file-scope definitions of objects of class type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_init_reference_member_uninitialized, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference member of type %0 uninitialized", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_initializer_string_for_char_array_too_long, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer-string for char array is too long", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_inline_decl_follows_def, CLASS_ERROR, (unsigned)diag::Severity::Error, "inline declaration of %0 follows non-inline definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_inline_declaration_block_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "inline declaration of %0 not allowed in block scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_inline_main, CLASS_ERROR, (unsigned)diag::Severity::Error, "'main' is not allowed to be declared inline", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_inline_namespace_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-inline namespace cannot be reopened as inline", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_inline_non_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "'inline' can only appear on functions%select{| and non-local variables}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_int_to_block_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid block pointer conversion %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_integer_sequence_integral_element_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "integer sequences must have integral element type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_integer_sequence_negative_length, CLASS_ERROR, (unsigned)diag::Severity::Error, "integer sequences must have non-negative sequence length", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_internal_linkage_redeclaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "'internal_linkage' attribute does not appear on the first declaration of %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_introducing_special_friend, CLASS_ERROR, (unsigned)diag::Severity::Error, "%plural{[0,2]:must use a qualified name when declaring|3:cannot declare}0 a %select{constructor|destructor|conversion operator|deduction guide}0 as a friend", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_asm_cast_lvalue, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_invalid_asm_value_for_constraint, CLASS_ERROR, (unsigned)diag::Severity::Error, "value '%0' out of range for constraint '%1'", 0, SFINAE_SubstitutionFailure, false, true, 12) +DIAG(err_invalid_astype_of_different_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid reinterpretation: sizes of %0 and %1 must match", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_attribute_on_virtual_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute cannot be applied to virtual functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_base_in_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "interface type cannot inherit from %select{struct|non-public interface|class}0 %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_collection_element, CLASS_ERROR, (unsigned)diag::Severity::Error, "collection element of type %0 is not an Objective-C object", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_complex_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "'_Complex %0' is invalid", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_constexpr, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{function parameter|typedef|non-static data member}0 cannot be constexpr", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_constexpr_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-static data member cannot be constexpr%select{; did you intend to make it %select{const|static}0?|}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_constexpr_var_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "constexpr variable declaration must be a definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_conversion_between_ext_vectors, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid conversion between ext-vector type %0 and %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_conversion_between_vector_and_integer, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid conversion between vector type %0 and integer type %1 of different size", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_conversion_between_vector_and_scalar, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid conversion between vector type %0 and scalar type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_conversion_between_vectors, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid conversion between vector type%diff{ $ and $|}0,1 of different size", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_cpu_is, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid cpu name for builtin", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_cpu_specific_dispatch_value, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid option '%0' for %select{cpu_specific|cpu_dispatch}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_cpu_supports, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid cpu feature string for builtin", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_decl_spec_combination, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot combine with previous '%0' declaration specifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_decl_specifier_in_nontype_parm, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid declaration specifier in template non-type parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_declarator_global_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition or redeclaration of %0 cannot name the global scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_declarator_in_block, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition or redeclaration of %0 not allowed inside a block", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_declarator_in_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition or redeclaration of %0 not allowed inside a function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_declarator_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot define or redeclare %0 here because namespace %1 does not enclose namespace %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_form_pointer_member_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot create a non-constant pointer to member function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_incomplete_type_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid use of incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_mask_type_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "mask type size must be between 1-byte and 8-bytes", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_member_use_in_static_method, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid use of member %0 in static member function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_neon_type_code, CLASS_ERROR, (unsigned)diag::Severity::Error, "incompatible constant for this __builtin_neon function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_non_static_member_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid use of non-static data member %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_nsnumber_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not a valid literal type for NSNumber", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_pcs, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid PCS type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_pixel_decl_spec_combination, CLASS_ERROR, (unsigned)diag::Severity::Error, "'__pixel' must be preceded by '__vector'. '%0' declaration specifier not allowed here", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_property_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not a valid property name (accessing an object of type %1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_protocol_qualifiers, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid protocol qualifiers on non-ObjC type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_qualified_constructor, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' qualifier is not allowed on a constructor", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_qualified_destructor, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' qualifier is not allowed on a destructor", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_qualified_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{non-member function|static member function|deduction guide}0 %select{of type %2 |}1cannot have '%3' qualifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_receiver_class_message, CLASS_ERROR, (unsigned)diag::Severity::Error, "receiver type %0 is not an Objective-C class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_receiver_to_message_super, CLASS_ERROR, (unsigned)diag::Severity::Error, "'super' is only valid in a method body", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_saturation_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "'_Sat' specifier is only valid on '_Fract' or '_Accum', not '%0'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_sign_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' cannot be signed or unsigned", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_super_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid use of '__super', this keyword can only be used inside class or member function scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_this_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid use of 'this' outside of a non-static member function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_thread, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' is only allowed on variable declarations", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_type_for_program_scope_var, CLASS_ERROR, (unsigned)diag::Severity::Error, "the %0 type cannot be used to declare a program scope variable", 0, SFINAE_SubstitutionFailure, false, true, 17) +DIAG(err_invalid_use_of_array_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "an array type is not allowed here", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_use_of_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "a function type is not allowed here", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_var_template_spec_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %2 of %select{explicit instantiation|explicit specialization|partial specialization|redeclaration}0 of %1 does not match expected type %3", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_vector_bool_decl_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use '%0' with '__vector bool'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_vector_decl_spec_combination, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot combine with previous '%0' declaration specifier. '__vector' must be first", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_vector_double_decl_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of 'double' with '__vector' requires VSX support to be enabled (available on POWER7 or later)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_vector_float_decl_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use 'float' with '__vector'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_vector_long_decl_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use 'long' with '__vector'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_vector_long_double_decl_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use 'long double' with '__vector'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_vector_long_long_decl_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of 'long long' with '__vector bool' requires VSX support (available on POWER7 or later) or extended Altivec support (available on POWER8 or later) to be enabled", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_invalid_width_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%select{|short|long|long long}0 %1' is invalid", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ivar_access_using_property_syntax_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %0 not found on object of type %1; did you mean to access instance variable %2?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ivar_in_superclass_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %0 attempting to use instance variable %1 declared in super class %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ivar_reference_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "instance variables cannot be of reference type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ivar_use_in_class_method, CLASS_ERROR, (unsigned)diag::Severity::Error, "instance variable %0 accessed in class method", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_kern_call_not_global_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "kernel call to non-global function %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_kern_is_nonstatic_method, CLASS_ERROR, (unsigned)diag::Severity::Error, "kernel function %0 must be a free function or static member function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_kern_type_not_void_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "kernel function type %0 must have void return type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_kernel_arg_address_space, CLASS_ERROR, (unsigned)diag::Severity::Error, "pointer arguments to kernel functions must reside in '__global', '__constant' or '__local' address space", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_lambda_capture_anonymous_var, CLASS_ERROR, (unsigned)diag::Severity::Error, "unnamed variable cannot be implicitly captured in a lambda expression", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_lambda_capture_default_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "lambda expression in default argument cannot capture any entity", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_lambda_capture_flexarray_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable %0 with flexible array member cannot be captured in a lambda expression", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_lambda_decl_ref_not_modifiable_lvalue, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot assign to a variable captured by copy in a non-mutable lambda", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_lambda_impcap, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable %0 cannot be implicitly captured in a lambda with no capture-default specified", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_lambda_in_constant_expression, CLASS_ERROR, (unsigned)diag::Severity::Error, "a lambda expression may not appear inside of a constant expression", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_lambda_in_invalid_context, CLASS_ERROR, (unsigned)diag::Severity::Error, "a lambda expression cannot appear in this context", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_lambda_incomplete_result, CLASS_ERROR, (unsigned)diag::Severity::Error, "incomplete result type %0 in lambda expression", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_lambda_return_init_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot deduce lambda return type from initializer list", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_lambda_unevaluated_operand, CLASS_ERROR, (unsigned)diag::Severity::Error, "lambda expression in an unevaluated operand", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_language_linkage_spec_not_ascii, CLASS_ERROR, (unsigned)diag::Severity::Error, "string literal in language linkage specifier cannot have an encoding-prefix", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_language_linkage_spec_unknown, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown linkage language", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_late_asm_label_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot apply asm label to %select{variable|function}0 after its first use", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_lifetimebound_ctor_dtor, CLASS_ERROR, (unsigned)diag::Severity::Error, "'lifetimebound' attribute cannot be applied to a %select{constructor|destructor}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_lifetimebound_no_object_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "'lifetimebound' attribute cannot be applied; %select{static |non-}0member function has no implicit object parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_list_init_in_parens, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot initialize %select{non-class|reference}0 type %1 with a parenthesized initializer list", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_literal_operator_bad_param_count, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-template literal operator must have one or two parameters", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_literal_operator_default_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "literal operator cannot have a default argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_literal_operator_extern_c, CLASS_ERROR, (unsigned)diag::Severity::Error, "literal operator must have C++ linkage", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_literal_operator_id_outside_namespace, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-namespace scope '%0' cannot have a literal operator member", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_literal_operator_invalid_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter of literal operator must have type 'unsigned long long', 'long double', 'char', 'wchar_t', 'char16_t', 'char32_t', or 'const char *'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_literal_operator_outside_namespace, CLASS_ERROR, (unsigned)diag::Severity::Error, "literal operator %0 must be in a namespace or global scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_literal_operator_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid literal operator parameter type %0, did you mean %1?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_literal_operator_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "template parameter list for literal operator must be either 'char...' or 'typename T, T...'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_literal_operator_template_with_params, CLASS_ERROR, (unsigned)diag::Severity::Error, "literal operator template cannot have any parameters", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_local_cant_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "'__local' variable cannot have an initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_lvalue_reference_bind_to_initlist, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{non-const|volatile}0 lvalue reference to type %1 cannot bind to an initializer list temporary", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_lvalue_reference_bind_to_temporary, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{non-const|volatile}0 lvalue reference %diff{to type $ cannot bind to a temporary of type $|cannot bind to incompatible temporary}1,2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_lvalue_reference_bind_to_unrelated, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{non-const|volatile}0 lvalue reference %diff{to type $ cannot bind to a value of unrelated type $|cannot bind to a value of unrelated type}1,2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_lvalue_to_rvalue_ref, CLASS_ERROR, (unsigned)diag::Severity::Error, "rvalue reference %diff{to type $ cannot bind to lvalue of type $|cannot bind to incompatible lvalue}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_machine_mode, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{unknown|unsupported}0 machine mode %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_main_arg_wrong, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{first|second|third|fourth}0 parameter of 'main' (%select{argument count|argument array|environment|platform-specific data}0) must be of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_main_global_variable, CLASS_ERROR, (unsigned)diag::Severity::Error, "main cannot be declared as global variable", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_main_returns_nonint, CLASS_ERROR, (unsigned)diag::Severity::Error, "'main' must return 'int'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_main_surplus_args, CLASS_ERROR, (unsigned)diag::Severity::Error, "too many parameters (%0) for 'main': must be 0, 2, or 3", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mainlike_template_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot be a template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_malformed_std_coroutine_handle, CLASS_ERROR, (unsigned)diag::Severity::Error, "std::experimental::coroutine_handle must be a class template", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_malformed_std_coroutine_traits, CLASS_ERROR, (unsigned)diag::Severity::Error, "'std::experimental::coroutine_traits' must be a class template", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_malformed_std_initializer_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "std::initializer_list must be a class template with a single type parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_malformed_std_nothrow, CLASS_ERROR, (unsigned)diag::Severity::Error, "std::nothrow must be a valid variable declaration", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_maybe_falloff_nonvoid_block, CLASS_ERROR, (unsigned)diag::Severity::Error, "control may reach end of non-void block", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mem_init_not_member_or_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "member initializer %0 does not name a non-static data member or base class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mem_init_not_member_or_class_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer %0 does not name a non-static data member or base class; did you mean the %select{base class|member}1 %2?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_call_without_object, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to non-static member function without an object argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_decl_does_not_match, CLASS_ERROR, (unsigned)diag::Severity::Error, "out-of-line %select{declaration|definition}2 of %0 does not match any declaration in %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_decl_does_not_match_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "out-of-line %select{declaration|definition}2 of %0 does not match any declaration in %1; did you mean %3?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_def_does_not_match_ret_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "return type of out-of-line definition of %q0 differs from that in the declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_def_undefined_record, CLASS_ERROR, (unsigned)diag::Severity::Error, "out-of-line definition of %0 from class %1 without definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_extra_qualification, CLASS_ERROR, (unsigned)diag::Severity::Error, "extra qualification on member %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_function_call_bad_cvr, CLASS_ERROR, (unsigned)diag::Severity::Error, "'this' argument to member function %0 has type %1, but function is not marked %select{const|restrict|const or restrict|volatile|const or volatile|volatile or restrict|const, volatile, or restrict}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_function_call_bad_ref, CLASS_ERROR, (unsigned)diag::Severity::Error, "'this' argument to member function %0 is an %select{lvalue|rvalue}1, but function has %select{non-const lvalue|rvalue}2 ref-qualifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_function_call_bad_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot initialize object parameter of type %0 with an expression of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_function_initialization, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer on function does not look like a pure-specifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_name_of_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "member %0 has the same name as its class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_not_yet_instantiated, CLASS_ERROR, (unsigned)diag::Severity::Error, "no member %0 in %1; it has not yet been instantiated", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_qualification, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-friend class member %0 cannot have a qualified name", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_redeclared, CLASS_ERROR, (unsigned)diag::Severity::Error, "class member cannot be redeclared", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_redeclared_in_instantiation, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple overloads of %0 instantiate to the same signature %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_member_reference_needs_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "base of member reference is a function; perhaps you meant to call it%select{| with no arguments}0?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mempointer_in_nonclass_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "member pointer refers into non-class type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_memptr_conv_via_virtual, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion from pointer to member of class %0 to pointer to member of class %1 via virtual base %2 is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_memptr_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "member pointer has incomplete base type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_method_not_found_with_typo, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{instance|class}1 method %0 not found ; did you mean %2?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mismatched_code_seg_base, CLASS_ERROR, (unsigned)diag::Severity::Error, "derived class must specify the same code segment as its base classes", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mismatched_code_seg_override, CLASS_ERROR, (unsigned)diag::Severity::Error, "overriding virtual function must specify the same code segment as its overridden function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mismatched_exception_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "exception specification in declaration does not match previous declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mismatched_exception_spec_explicit_instantiation, CLASS_ERROR, (unsigned)diag::Severity::Error, "exception specification in explicit instantiation does not match instantiated one", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mismatched_ms_inheritance, CLASS_ERROR, (unsigned)diag::Severity::Error, "inheritance model does not match %select{definition|previous declaration}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mismatched_owning_module, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaration of %0 in %select{the global module|module %2}1 follows declaration in %select{the global module|module %4}3", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mismatched_uuid, CLASS_ERROR, (unsigned)diag::Severity::Error, "uuid does not match previous declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mismatched_visibility, CLASS_ERROR, (unsigned)diag::Severity::Error, "visibility does not match previous declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_misplaced_ivar, CLASS_ERROR, (unsigned)diag::Severity::Error, "instance variables may not be placed in %select{categories|class extension}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_missing_actual_pipe_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing actual type specifier for pipe", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_missing_atsign_prefix, CLASS_ERROR, (unsigned)diag::Severity::Error, "string literal must be prefixed by '@' ", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_missing_default_ctor, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{constructor for %1 must explicitly initialize the|implicit default constructor for %1 must explicitly initialize the|cannot use constructor inherited from base class %4;}0 %select{base class|member}2 %3 %select{which|which|of %1}0 does not have a default constructor", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_missing_exception_specification, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is missing exception specification '%1'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_missing_method_context, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing context for method declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_missing_open_square_message_send, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing '[' at start of message send expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_missing_property_context, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing context for property implementation declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_missing_property_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "property implementation in a category with no category declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_missing_property_ivar_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "synthesized property %0 must either be named the same as a compatible instance variable or must explicitly name an instance variable", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_missing_type_specifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "C++ requires a type specifier for all declarations", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mixing_cxx_try_seh_try, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use C++ 'try' in the same function as SEH '__try'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mode_not_primitive, CLASS_ERROR, (unsigned)diag::Severity::Error, "mode attribute only supported for integer and floating-point types", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mode_wrong_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "type of machine mode does not match type of base type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_module_decl_in_header_module, CLASS_ERROR, (unsigned)diag::Severity::Error, "'module' declaration found while building header module", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_decl_in_module_map_module, CLASS_ERROR, (unsigned)diag::Severity::Error, "'module' declaration found while building module from module map", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_declaration_missing, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing 'export module' declaration in module interface unit", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_import_in_implementation, CLASS_ERROR, (unsigned)diag::Severity::Error, "@import of module '%0' in implementation of '%1'; use #import", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_import_not_at_top_level_fatal, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "import of module '%0' appears within %1", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_interface_implementation_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing 'export' specifier in module declaration while building module interface", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_not_defined, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition of module '%0' is not available; use -fmodule-file= to specify path to precompiled module interface", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_private_local, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{local variable|parameter|typedef}0 %1 cannot be declared __module_private__", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_private_local_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "local %select{struct|interface|union|class|enum}0 cannot be declared __module_private__", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_private_specialization, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{template|partial|member}0 specialization cannot be declared __module_private__", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_redeclaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "translation unit contains multiple module declarations", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_redefinition, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of module '%0'", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_self_import, CLASS_ERROR, (unsigned)diag::Severity::Error, "import of module '%0' appears within same top-level module '%1'", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_unimported_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{declaration|definition|default argument|explicit specialization|partial specialization}0 of %1 must be imported from module '%2' before it is required", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_unimported_use_header, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing '#include %3'; %select{declaration|definition|default argument|explicit specialization|partial specialization}0 of %1 must be imported from module '%2' before it is required", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_module_unimported_use_multiple, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{declaration|definition|default argument|explicit specialization|partial specialization}0 of %1 must be imported from one of the following modules before it is required:%2", 0, SFINAE_SubstitutionFailure, false, true, 13) +DIAG(err_ms___leave_not_in___try, CLASS_ERROR, (unsigned)diag::Severity::Error, "'__leave' statement not in __try block", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ms_va_start_used_in_sysv_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "'__builtin_ms_va_start' used in System V ABI function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_msvc_annotation_wide_str, CLASS_ERROR, (unsigned)diag::Severity::Error, "arguments to __annotation must be wide string constants", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_multiple_base_initialization, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple initializations given for base %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_multiple_default_labels_defined, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple default labels in one switch", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_multiple_final_overriders, CLASS_ERROR, (unsigned)diag::Severity::Error, "virtual function %q0 has more than one final overrider in %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_multiple_mem_initialization, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple initializations given for non-static member %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_multiple_mem_union_initialization, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializing multiple members of union", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_multiversion_after_used, CLASS_ERROR, (unsigned)diag::Severity::Error, "function declaration cannot become a multiversioned function after first usage", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_multiversion_diff, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiversioned function declaration has a different %select{calling convention|return type|constexpr specification|inline specification|storage class|linkage}0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_multiversion_doesnt_support, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute '%select{target|cpu_specific|cpu_dispatch}0' multiversioned functions do not yet support %select{function templates|virtual functions|deduced return types|constructors|destructors|deleted functions|defaulted functions|constexpr functions}1", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_multiversion_duplicate, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiversioned function redeclarations require identical target attributes", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_multiversion_no_other_attrs, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute '%select{target|cpu_specific|cpu_dispatch}0' multiversioning cannot be combined with other attributes", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_multiversion_noproto, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiversioned function must have a prototype", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_multiversion_not_allowed_on_main, CLASS_ERROR, (unsigned)diag::Severity::Error, "'main' cannot be a multiversioned function", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_multiversion_not_supported, CLASS_ERROR, (unsigned)diag::Severity::Error, "function multiversioning is not supported on the current target", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_multiversion_required_in_redecl, CLASS_ERROR, (unsigned)diag::Severity::Error, "function declaration is missing %select{'target'|'cpu_specific' or 'cpu_dispatch'}0 attribute in a multiversioned function", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_multiversion_types_mixed, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiversioning attributes cannot be combined", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_mutable_const, CLASS_ERROR, (unsigned)diag::Severity::Error, "'mutable' and 'const' cannot be mixed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mutable_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "'mutable' cannot be applied to functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mutable_nonmember, CLASS_ERROR, (unsigned)diag::Severity::Error, "'mutable' can only be applied to member variables", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_mutable_reference, CLASS_ERROR, (unsigned)diag::Severity::Error, "'mutable' cannot be applied to references", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_need_header_before_ms_uuidof, CLASS_ERROR, (unsigned)diag::Severity::Error, "you need to include <guiddef.h> before using the '__uuidof' operator", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_need_header_before_typeid, CLASS_ERROR, (unsigned)diag::Severity::Error, "you need to include <typeinfo> before using the 'typeid' operator", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nested_name_member_ref_lookup_ambiguous, CLASS_ERROR, (unsigned)diag::Severity::Error, "lookup of %0 in member access expression is ambiguous", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nested_name_spec_is_not_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot appear before '::' because it is not a class%select{ or namespace|, namespace, or enumeration}1; did you mean ':'?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nested_name_spec_non_tag, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %0 cannot be used prior to '::' because it has no members", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nested_non_static_member_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{call to non-static member function|use of non-static data member}0 %2 of %1 from nested type %3", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nested_redefinition, CLASS_ERROR, (unsigned)diag::Severity::Error, "nested redefinition of %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_new_abi_tag_on_redeclaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "'abi_tag' %0 missing in original declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_new_array_init_args, CLASS_ERROR, (unsigned)diag::Severity::Error, "array 'new' cannot have initialization arguments", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_new_array_nonconst, CLASS_ERROR, (unsigned)diag::Severity::Error, "only the first dimension of an allocated array may have dynamic size", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_new_array_of_auto, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot allocate array of 'auto'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_new_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "allocation of incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_accessor_for_property, CLASS_ERROR, (unsigned)diag::Severity::Error, "no %select{getter|setter}0 defined for property %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_base_classes, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid use of '__super', %0 has no base classes", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_dynamic_cast_with_fno_rtti, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of dynamic_cast requires -frtti", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_matching_local_friend, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching function found in local scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_matching_local_friend_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching function %0 found in local scope; did you mean %3?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "no member named %0 in %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_member_overloaded_arrow, CLASS_ERROR, (unsigned)diag::Severity::Error, "no member named %0 in %1; did you mean to use '->' instead of '.'?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_member_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "no member named %0 in %1; did you mean %select{|simply }2%3?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_member_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "no template named %0 in %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_member_template_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "no template named %0 in %1; did you mean %select{|simply }2%3?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_nsconstant_string_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find interface declaration for %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_subobject_property_setting, CLASS_ERROR, (unsigned)diag::Severity::Error, "expression is not assignable", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_suitable_delete_member_function_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "no suitable member %0 in %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_super_class_message, CLASS_ERROR, (unsigned)diag::Severity::Error, "no @interface declaration found in class messaging of %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "no template named %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_template_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "no template named %0; did you mean %1?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_no_typeid_with_fno_rtti, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of typeid requires -frtti", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_noexcept_needs_constant_expression, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument to noexcept specifier must be a constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nogetter_property_compound_assignment, CLASS_ERROR, (unsigned)diag::Severity::Error, "a getter method is needed to perform a compound assignment on a property", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nogetter_property_incdec, CLASS_ERROR, (unsigned)diag::Severity::Error, "no getter method %1 for %select{increment|decrement}0 of property", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_asm_stmt_in_naked_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-ASM statement in naked function is not supported", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_deleted_override, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-deleted function %0 cannot override a deleted function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_extern_extern, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-extern declaration of %0 follows extern declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_local_variable_decl_in_for, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaration of non-local variable in 'for' loop", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_static_static, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-static declaration of %0 follows static declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_template_in_member_template_id_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "member %0 of %1 is not a template; did you mean %select{|simply }2%3?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_template_in_template_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 does not name a template but is followed by template arguments", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_template_in_template_id_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 does not name a template but is followed by template arguments; did you mean %1?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_thread_thread, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-thread-local declaration of %0 follows thread-local declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_type_template_arg_addr_label_diff, CLASS_ERROR, (unsigned)diag::Severity::Error, "template argument / label address difference / what did you expect?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_type_template_arg_subobject, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument refers to subobject '%0'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_type_template_in_nested_name_specifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "qualified name refers into a specialization of %select{function|variable}0 template %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_type_template_parm_type_deduction_failure, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template parameter %0 with type %1 has incompatible initializer of type %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_variable_decl_in_for, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-variable declaration in 'for' loop", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_non_virtual_pure, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not virtual and cannot be declared pure", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nonfunction_block_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "block pointer to non-function type is invalid", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nonstatic_member_out_of_line, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-static data member defined out-of-line", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nontemporal_builtin_must_be_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to nontemporal builtin must be a pointer (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nontemporal_builtin_must_be_pointer_intfltptr_or_vector, CLASS_ERROR, (unsigned)diag::Severity::Error, "address argument to nontemporal builtin must be a pointer to integer, float, pointer, or a vector of such types (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nontrivial_primitive_type_in_union, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-trivial C types are disallowed in union", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_noreturn_block_has_return_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "block declared 'noreturn' should not return", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_noreturn_lambda_has_return_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "lambda declared 'noreturn' should not return", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_noreturn_missing_on_first_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "function declared '[[noreturn]]' after its first declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_noreturn_non_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "'_Noreturn' can only appear on functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nosetter_property_assignment, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{assignment to readonly property|no setter method %1 for assignment to property}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nosetter_property_incdec, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{%select{increment|decrement}1 of readonly property|no setter method %2 for %select{increment|decrement}1 of property}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_not_class_template_specialization, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot specialize a %select{dependent template|template template parameter}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_not_direct_base_or_virtual, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %0 is not a direct or virtual base of %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_not_found_by_two_phase_lookup, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to function %0 that is neither visible in the template definition nor found by argument-dependent lookup", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_not_integral_type_anon_bitfield, CLASS_ERROR, (unsigned)diag::Severity::Error, "anonymous bit-field has non-integral type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_not_integral_type_bitfield, CLASS_ERROR, (unsigned)diag::Severity::Error, "bit-field %0 has non-integral type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_not_tag_in_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "no %select{struct|interface|union|class|enum}0 named %1 in %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ns_attribute_wrong_parameter_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute only applies to %select{Objective-C object|pointer|pointer-to-CF-pointer}1 parameters", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nsconsumed_attribute_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "overriding method has mismatched ns_consumed attribute on its parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nsobject_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "'NSObject' attribute is for pointer types only", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nsreturns_retained_attribute_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "overriding method has mismatched ns_returns_%select{not_retained|retained}0 attributes", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_nullability_cs_multilevel, CLASS_ERROR, (unsigned)diag::Severity::Error, "nullability keyword %0 cannot be applied to multi-level pointer type %1", 0, SFINAE_SubstitutionFailure, false, true, 19) +DIAG(err_nullability_nonpointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "nullability specifier %0 cannot be applied to non-pointer type %1", 0, SFINAE_SubstitutionFailure, false, true, 19) +DIAG(err_objc_array_of_interfaces, CLASS_ERROR, (unsigned)diag::Severity::Error, "array of interface %0 is invalid (probably should be an array of pointers)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_attr_not_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter of %0 attribute must be a single name of an Objective-C %select{class|protocol}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_attr_protocol_requires_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute %0 can only be applied to @protocol definitions, not forward declarations", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_attr_typedef_not_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter of %0 attribute must be 'id' when used on a typedef", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_attr_typedef_not_void_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "'objc_bridge(id)' is only allowed on structs and typedefs of void pointers", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_bridged_related_invalid_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "could not find Objective-C class %0 to convert %1 to %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_bridged_related_invalid_class_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 must be name of an Objective-C class to be able to convert %1 to %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_bridged_related_known_method, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 must be explicitly converted to %1; use %select{%objcclass2|%objcinstance2}3 method for this conversion", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_cf_bridged_not_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "CF object of type %0 is bridged to %1, which is not an Objective-C class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_decls_may_only_appear_in_global_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "Objective-C declarations may only appear in global scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_exceptions_disabled, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use '%0' with Objective-C exceptions disabled", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_for_range_init_stmt, CLASS_ERROR, (unsigned)diag::Severity::Error, "initialization statement is not supported when iterating over Objective-C collection", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_illegal_boxed_expression_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal type %0 used in a boxed expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_incomplete_boxed_expression_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "incomplete type %0 used in a boxed expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_index_incomplete_class_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "Objective-C index expression has incomplete class type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_indexing_method_result_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "method for accessing %select{dictionary|array}1 element must have Objective-C object return type instead of %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_kindof_nonobject, CLASS_ERROR, (unsigned)diag::Severity::Error, "'__kindof' specifier cannot be applied to non-object type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_kindof_wrong_position, CLASS_ERROR, (unsigned)diag::Severity::Error, "'__kindof' type specifier must precede the declarator", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_literal_method_sig, CLASS_ERROR, (unsigned)diag::Severity::Error, "literal construction method %0 has incompatible signature", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_method_unsupported_param_ret_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 %select{parameter|return}1 type is unsupported; support for vector types for this target is introduced in %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_multiple_subscript_type_conversion, CLASS_ERROR, (unsigned)diag::Severity::Error, "indexing expression is invalid because subscript type %0 has multiple type conversion functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_non_trivially_copyable_boxed_expression_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-trivially copyable type %0 cannot be used in a boxed expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_ns_bridged_invalid_cfobject, CLASS_ERROR, (unsigned)diag::Severity::Error, "ObjectiveC object of type %0 is bridged to %1, which is not valid CF object", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_object_assignment, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot assign to class object (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_object_catch, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot catch an Objective-C object by value", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_parameterized_category_nonclass, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{extension|category}0 of non-parameterized class %1 cannot have type parameters", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_parameterized_forward_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "forward declaration of non-parameterized class %0 cannot have type parameters", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_parameterized_forward_class_first, CLASS_ERROR, (unsigned)diag::Severity::Error, "class %0 previously declared with type parameters", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_precise_lifetime_bad_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "objc_precise_lifetime only applies to retainable types; type here is %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_property_attr_mutually_exclusive, CLASS_ERROR, (unsigned)diag::Severity::Error, "property attributes '%0' and '%1' are mutually exclusive", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_property_requires_object, CLASS_ERROR, (unsigned)diag::Severity::Error, "property with '%0' attribute must be of object type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_root_class_subclass, CLASS_ERROR, (unsigned)diag::Severity::Error, "objc_root_class attribute may only be specified on a root class declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_runtime_visible_category, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot implement a category for class %0 that is only visible via the Objective-C runtime", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_runtime_visible_subclass, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot implement subclass %0 of a superclass %1 that is only visible via the Objective-C runtime", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_subscript_base_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{dictionary|array}1 subscript base type %0 is not an Objective-C object", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_subscript_dic_object_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "method object parameter type %0 is not object type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_subscript_index_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "method index parameter type %0 is not integral type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_subscript_key_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "method key parameter type %0 is not object type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_subscript_method_not_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected method to %select{read|write}1 %select{dictionary|array}2 element not found on object of type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_subscript_object_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot assign to this %select{dictionary|array}1 because assigning method's 2nd parameter of type %0 is not an Objective-C pointer type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_subscript_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "indexing expression is invalid because subscript type %0 is not an Objective-C pointer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_subscript_type_conversion, CLASS_ERROR, (unsigned)diag::Severity::Error, "indexing expression is invalid because subscript type %0 is not an integral or Objective-C pointer type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_synchronized_expects_object, CLASS_ERROR, (unsigned)diag::Severity::Error, "@synchronized requires an Objective-C object type (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_throw_expects_object, CLASS_ERROR, (unsigned)diag::Severity::Error, "@throw requires an Objective-C object type (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_type_arg_does_not_match_bound, CLASS_ERROR, (unsigned)diag::Severity::Error, "type argument %0 does not satisfy the bound (%1) of type parameter %2", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_objc_type_arg_explicit_nullability, CLASS_ERROR, (unsigned)diag::Severity::Error, "type argument %0 cannot explicitly specify nullability", 0, SFINAE_SubstitutionFailure, false, true, 19) +DIAG(err_objc_type_arg_missing, CLASS_ERROR, (unsigned)diag::Severity::Error, "no type or protocol named %0", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_arg_missing_star, CLASS_ERROR, (unsigned)diag::Severity::Error, "type argument %0 must be a pointer (requires a '*')", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_arg_not_id_compatible, CLASS_ERROR, (unsigned)diag::Severity::Error, "type argument %0 is neither an Objective-C object nor a block type", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_objc_type_arg_qualified, CLASS_ERROR, (unsigned)diag::Severity::Error, "type argument %0 cannot be qualified with '%1'", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_args_and_protocols, CLASS_ERROR, (unsigned)diag::Severity::Error, "angle brackets contain both a %select{type|protocol}0 (%1) and a %select{protocol|type}0 (%2)", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_args_non_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "type arguments cannot be applied to non-class type %0", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_args_non_parameterized_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "type arguments cannot be applied to non-parameterized class %0", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_args_specialized_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "type arguments cannot be applied to already-specialized class type %0", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_args_wrong_arity, CLASS_ERROR, (unsigned)diag::Severity::Error, "too %select{many|few}0 type arguments for class %1 (have %2, expected %3)", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_param_arity_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{forward class declaration|class definition|category|extension}0 has too %select{few|many}1 type parameters (expected %2, have %3)", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_param_bound_conflict, CLASS_ERROR, (unsigned)diag::Severity::Error, "type bound %0 for type parameter %1 conflicts with %select{implicit|previous}2 bound %3%select{for type parameter %5|}4", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_param_bound_explicit_nullability, CLASS_ERROR, (unsigned)diag::Severity::Error, "type parameter %0 bound %1 cannot explicitly specify nullability", 0, SFINAE_SubstitutionFailure, false, true, 19) +DIAG(err_objc_type_param_bound_missing, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing type bound %0 for type parameter %1 in %select{@interface|@class}2", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_param_bound_missing_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing '*' in type bound %0 for type parameter %1", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_param_bound_nonobject, CLASS_ERROR, (unsigned)diag::Severity::Error, "type bound %0 for type parameter %1 is not an Objective-C pointer type", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_param_bound_qualified, CLASS_ERROR, (unsigned)diag::Severity::Error, "type bound %1 for type parameter %0 cannot be qualified with '%2'", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_param_redecl, CLASS_ERROR, (unsigned)diag::Severity::Error, "redeclaration of type parameter %0", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_type_param_variance_conflict, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{in|co|contra}0variant type parameter %1 conflicts with previous %select{in|co|contra}2variant type parameter %3", 0, SFINAE_SubstitutionFailure, false, true, 20) +DIAG(err_objc_var_decl_inclass, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot declare variable inside @interface or @protocol", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_objc_variable_sized_type_not_at_end, CLASS_ERROR, (unsigned)diag::Severity::Error, "field %0 with variable sized type %1 is not at the end of class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_object_cannot_be_passed_returned_by_value, CLASS_ERROR, (unsigned)diag::Severity::Error, "interface type %1 cannot be %select{returned|passed}0 by value; did you forget * in %1?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_offsetof_array_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "offsetof requires array type, %0 invalid", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_offsetof_bitfield, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot compute offset of bit-field %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_offsetof_field_of_virtual_base, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of 'offsetof' to a field of a virtual base", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_offsetof_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "offsetof of incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_offsetof_record_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "offsetof requires struct, union, or class type, %0 invalid", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_omp_aligned_expected_array_or_ptr, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument of aligned clause should be array%select{ or pointer|, pointer, reference to array or reference to pointer}1, not %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_aligned_twice, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{a variable|a parameter|'this'}0 cannot appear in more than one aligned clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_ambiguous_conversion, CLASS_ERROR, (unsigned)diag::Severity::Error, "ambiguous conversion from type %0 to an integral or unscoped enumeration type", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_argument_type_isdeviceptr, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_array_section_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "OpenMP array section is not allowed here", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_at_least_one_motion_clause_required, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected at least one 'to' clause or 'from' clause specified to '#pragma omp target update'", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_atomic_capture_not_compound_statement, CLASS_ERROR, (unsigned)diag::Severity::Error, "the statement for 'atomic capture' must be a compound statement of form '{v = x; x binop= expr;}', '{x binop= expr; v = x;}', '{v = x; x = x binop expr;}', '{v = x; x = expr binop x;}', '{x = x binop expr; v = x;}', '{x = expr binop x; v = x;}' or '{v = x; x = expr;}', '{v = x; x++;}', '{v = x; ++x;}', '{++x; v = x;}', '{x++; v = x;}', '{v = x; x--;}', '{v = x; --x;}', '{--x; v = x;}', '{x--; v = x;}' where x is an l-value expression with scalar type", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_atomic_capture_not_expression_statement, CLASS_ERROR, (unsigned)diag::Severity::Error, "the statement for 'atomic capture' must be an expression statement of form 'v = ++x;', 'v = --x;', 'v = x++;', 'v = x--;', 'v = x binop= expr;', 'v = x = x binop expr' or 'v = x = expr binop x', where x and v are both l-value expressions with scalar type", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_atomic_not_expression_statement, CLASS_ERROR, (unsigned)diag::Severity::Error, "the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_atomic_read_not_expression_statement, CLASS_ERROR, (unsigned)diag::Severity::Error, "the statement for 'atomic read' must be an expression statement of form 'v = x;', where v and x are both lvalue expressions with scalar type", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_atomic_several_clauses, CLASS_ERROR, (unsigned)diag::Severity::Error, "directive '#pragma omp atomic' cannot contain more than one 'read', 'write', 'update' or 'capture' clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_atomic_update_not_expression_statement, CLASS_ERROR, (unsigned)diag::Severity::Error, "the statement for 'atomic update' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_atomic_write_not_expression_statement, CLASS_ERROR, (unsigned)diag::Severity::Error, "the statement for 'atomic write' must be an expression statement of form 'x = expr;', where x is a lvalue expression with scalar type", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_bit_fields_forbidden_in_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "bit fields cannot be used to specify storage in a '%0' clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_clause_floating_type_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "arguments of OpenMP clause '%0' with bitwise operators cannot be of floating type", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_clause_not_arithmetic_type_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "arguments of OpenMP clause '%0' for 'min' or 'max' must be of %select{scalar|arithmetic}1 type", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_const_list_item, CLASS_ERROR, (unsigned)diag::Severity::Error, "const-qualified list item cannot be %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_const_not_mutable_variable, CLASS_ERROR, (unsigned)diag::Severity::Error, "const-qualified variable without mutable fields cannot be %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_const_variable, CLASS_ERROR, (unsigned)diag::Severity::Error, "const-qualified variable cannot be %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_critical_with_hint, CLASS_ERROR, (unsigned)diag::Severity::Error, "constructs with the same name must have a 'hint' clause with the same value", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_declare_mapper_redefinition, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of user-defined mapper for type %0 with name %1", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_declare_mapper_wrong_var, CLASS_ERROR, (unsigned)diag::Severity::Error, "only variable %0 is allowed in map clauses of this 'omp declare mapper' directive", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_declare_reduction_redefinition, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of user-defined reduction for type %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_declare_target_multiple, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 appears multiple times in clauses on the same declare target directive", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_declare_target_to_and_link, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 must not appear in both clauses 'to' and 'link'", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_depend_clause_thread_simd, CLASS_ERROR, (unsigned)diag::Severity::Error, "'depend' clauses cannot be mixed with '%0' clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_depend_sink_expected_loop_iteration, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected%select{| %1}0 loop iteration variable", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_depend_sink_expected_plus_minus, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected '+' or '-' operation", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_depend_sink_source_not_allowed, CLASS_ERROR, (unsigned)diag::Severity::Error, "'depend(%select{source|sink:vec}0)' clause%select{|s}0 cannot be mixed with 'depend(%select{sink:vec|source}0)' clause%select{s|}0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_depend_sink_unexpected_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected expression: number of expressions is larger than the number of associated loops", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_duplicate_map_type_modifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "same map type modifier has been specified more than once", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_expected_access_to_data_field, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected access to data field", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_expected_addressable_lvalue_or_array_item, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected addressable lvalue expression, array element or array section", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_expected_base_var_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected variable name as a base of the array %select{subscript|section}0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_expected_int_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a reference to an integer-typed parameter", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_expected_named_var_member_or_array_expression, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected expression containing only member accesses and/or array sections based on named variables", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_expected_uniform_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a reference to a parameter specified in a 'uniform' clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_expected_var_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not a global variable, static local variable or static data member", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_expected_var_arg_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not a global variable, static local variable or static data member; did you mean %1", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_expected_var_name_member_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected variable name%select{| or data member of current class}0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_expected_var_name_member_expr_or_array_item, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected variable name%select{|, data member of current class}0, array element or array section", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_explicit_conversion, CLASS_ERROR, (unsigned)diag::Severity::Error, "expression requires explicit conversion from %0 to %1", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_firstprivate_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "a firstprivate variable with incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_function_expected, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma omp declare simd' can only be applied to functions", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_function_in_link_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "function name is not allowed in 'link' clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_global_var_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "arguments of '#pragma omp %0' must have %select{global storage|static storage duration}1", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_grainsize_num_tasks_mutually_exclusive, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' and '%1' clause are mutually exclusive and may not appear on the same directive", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_hint_clause_no_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "the name of the construct must be specified in presence of 'hint' clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_in_reduction_not_task_reduction, CLASS_ERROR, (unsigned)diag::Severity::Error, "in_reduction variable must appear in a task_reduction clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "expression has incomplete class type %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_invalid_map_this_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid 'this' expression on 'map' clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_invalid_map_type_for_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{map type '%1' is not allowed|map type must be specified}0 for '#pragma omp %2'", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_invalid_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma omp %0' directive must appear only in file scope", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_invalid_target_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 used in declare target directive is not a variable or a function name", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_lastprivate_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "a lastprivate variable with incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_linear_distribute_var_non_loop_iteration, CLASS_ERROR, (unsigned)diag::Severity::Error, "only loop iteration variables are allowed in 'linear' clause in distribute directives", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_linear_expected_int_or_ptr, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument of a linear clause should be of integral or pointer type, not %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_linear_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "a linear variable with incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_linear_ordered, CLASS_ERROR, (unsigned)diag::Severity::Error, "'linear' clause cannot be specified along with 'ordered' clause with a parameter", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_local_var_in_threadprivate_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable with local storage in initial value of threadprivate variable", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_loop_cannot_use_stmt, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' statement cannot be used in OpenMP for loop", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_loop_diff_cxx, CLASS_ERROR, (unsigned)diag::Severity::Error, "could not calculate number of iterations calling 'operator-' with upper and lower loop bounds", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_loop_incr_not_compatible, CLASS_ERROR, (unsigned)diag::Severity::Error, "increment expression must cause %0 to %select{decrease|increase}1 on each iteration of OpenMP for loop", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_loop_not_canonical_cond, CLASS_ERROR, (unsigned)diag::Severity::Error, "condition of OpenMP for loop must be a relational comparison ('<', '<=', '>', or '>=') of loop variable %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_loop_not_canonical_incr, CLASS_ERROR, (unsigned)diag::Severity::Error, "increment clause of OpenMP for loop must perform simple addition or subtraction on loop variable %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_loop_not_canonical_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "initialization clause of OpenMP for loop is not in canonical form ('var = init' or 'T var = init')", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_loop_var_dsa, CLASS_ERROR, (unsigned)diag::Severity::Error, "loop iteration variable in the associated loop of 'omp %1' directive may not be %0, predetermined as %2", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_loop_variable_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable must be of integer or %select{pointer|random access iterator}0 type", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_map_shared_storage, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable already marked as mapped in current construct", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_mapper_wrong_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "mapper type must be of struct, union or class type", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_multiple_array_items_in_map_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple array elements associated with the same variable are not allowed in map clauses of the same construct", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_negative_expression_in_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument to '%0' clause must be a %select{non-negative|strictly positive}1 integer value", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_no_clause_for_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected at least one %0 clause for '#pragma omp %1'", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_no_dsa_for_variable, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable %0 must have explicitly specified data sharing attributes", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_no_more_if_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "no more 'if' clause is allowed", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_not_for, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{statement after '#pragma omp %1' must be a for loop|expected %2 for loops after '#pragma omp %1'%select{|, but found only %4}3}0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_not_integral, CLASS_ERROR, (unsigned)diag::Severity::Error, "expression must have integral or unscoped enumeration type, not %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_not_resolved_reduction_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to resolve declare reduction construct for type %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_once_referenced, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable can appear only once in OpenMP '%0' clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_once_referenced_in_target_update, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable can appear only once in OpenMP 'target update' construct", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_ordered_directive_with_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "'ordered' directive %select{without any clauses|with 'threads' clause}0 cannot be closely nested inside ordered region with specified parameter", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_ordered_directive_without_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "'ordered' directive with 'depend' clause cannot be closely nested inside ordered region without specified parameter", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_ordered_simd, CLASS_ERROR, (unsigned)diag::Severity::Error, "'ordered' clause with a parameter can not be specified in '#pragma omp %0' directive", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_original_storage_is_shared_and_does_not_contain, CLASS_ERROR, (unsigned)diag::Severity::Error, "original storage of expression in data environment is shared but data environment do not fully contain mapped expression storage", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_orphaned_device_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "orphaned 'omp %0' directives are prohibited; perhaps you forget to enclose the directive into a %select{|||target |teams }1region?", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_orphaned_section_directive, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{orphaned 'omp section' directives are prohibited, it|'omp section' directive}0 must be closely nested to a sections region%select{|, not a %1 region}0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_parallel_reduction_in_task_firstprivate, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument of a reduction clause of a %0 construct must not appear in a firstprivate clause on a task construct", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_parallel_sections_not_compound_stmt, CLASS_ERROR, (unsigned)diag::Severity::Error, "the statement for '#pragma omp parallel sections' must be a compound statement", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_parallel_sections_substmt_not_section, CLASS_ERROR, (unsigned)diag::Severity::Error, "statement in 'omp parallel sections' directive must be enclosed into a section region", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_param_or_this_in_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected reference to one of the parameters of function %0%select{| or 'this'}1", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_parent_cancel_region_nowait, CLASS_ERROR, (unsigned)diag::Severity::Error, "parent region for 'omp %select{cancellation point|cancel}0' construct cannot be nowait", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_parent_cancel_region_ordered, CLASS_ERROR, (unsigned)diag::Severity::Error, "parent region for 'omp %select{cancellation point|cancel}0' construct cannot be ordered", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_pointer_mapped_along_with_derived_section, CLASS_ERROR, (unsigned)diag::Severity::Error, "pointer cannot be mapped along with a section derived from itself", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_private_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "a private variable with incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_prohibited_region, CLASS_ERROR, (unsigned)diag::Severity::Error, "region cannot be%select{| closely}0 nested inside '%1' region%select{|; perhaps you forget to enclose 'omp %3' directive into a parallel region?|; perhaps you forget to enclose 'omp %3' directive into a for or a parallel for region with 'ordered' clause?|; perhaps you forget to enclose 'omp %3' directive into a target region?|; perhaps you forget to enclose 'omp %3' directive into a teams region?}2", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_prohibited_region_atomic, CLASS_ERROR, (unsigned)diag::Severity::Error, "OpenMP constructs may not be nested inside an atomic region", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_prohibited_region_critical_same_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot nest 'critical' regions having the same name %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_prohibited_region_simd, CLASS_ERROR, (unsigned)diag::Severity::Error, "OpenMP constructs may not be nested inside a simd region", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_reduction_id_not_compatible, CLASS_ERROR, (unsigned)diag::Severity::Error, "list item of type %0 is not valid for specified reduction operation: unable to provide default initialization value", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_reduction_identifier_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "in_reduction variable must have the same reduction operation as in a task_reduction clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_reduction_in_task, CLASS_ERROR, (unsigned)diag::Severity::Error, "reduction variables may not be accessed in an explicit task", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_reduction_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "a reduction list item with incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_reduction_non_addressable_expression, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected addressable reduction item for the task-based directives", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_reduction_ref_type_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument of OpenMP clause '%0' must reference the same object in all threads", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_reduction_vla_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot generate code for reduction on %select{|array section, which requires a }0variable length array", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_reduction_with_nogroup, CLASS_ERROR, (unsigned)diag::Severity::Error, "'reduction' clause cannot be used with 'nogroup' clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_reduction_wrong_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "reduction type cannot be %select{qualified with 'const', 'volatile' or 'restrict'|a function|a reference|an array}0 type", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_ref_type_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "arguments of '#pragma omp %0' cannot be of reference type %1", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_region_not_file_context, CLASS_ERROR, (unsigned)diag::Severity::Error, "directive must be at file or namespace scope", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_required_access, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 variable must be %1", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_requires_clause_redeclaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "Only one %0 clause can appear on a requires directive in a single translation unit", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_same_pointer_dereferenced, CLASS_ERROR, (unsigned)diag::Severity::Error, "same pointer dereferenced in multiple different ways in map clause expressions", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_schedule_nonmonotonic_ordered, CLASS_ERROR, (unsigned)diag::Severity::Error, "'schedule' clause with 'nonmonotonic' modifier cannot be specified if an 'ordered' clause is specified", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_schedule_nonmonotonic_static, CLASS_ERROR, (unsigned)diag::Severity::Error, "'nonmonotonic' modifier can only be specified with 'dynamic' or 'guided' schedule kind", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_section_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "section of pointer to function type %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_section_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "section of pointer to incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_section_length_negative, CLASS_ERROR, (unsigned)diag::Severity::Error, "section length is evaluated to a negative value %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_section_length_undefined, CLASS_ERROR, (unsigned)diag::Severity::Error, "section length is unspecified and cannot be inferred because subscripted value is %select{not an array|an array of unknown bound}0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_section_not_subset_of_array, CLASS_ERROR, (unsigned)diag::Severity::Error, "array section must be a subset of the original array", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_sections_not_compound_stmt, CLASS_ERROR, (unsigned)diag::Severity::Error, "the statement for '#pragma omp sections' must be a compound statement", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_sections_substmt_not_section, CLASS_ERROR, (unsigned)diag::Severity::Error, "statement in 'omp sections' directive must be enclosed into a section region", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_simd_region_cannot_use_stmt, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' statement cannot be used in OpenMP simd region", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_single_copyprivate_with_nowait, CLASS_ERROR, (unsigned)diag::Severity::Error, "the 'copyprivate' clause must not be used with the 'nowait' clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_single_decl_in_declare_simd, CLASS_ERROR, (unsigned)diag::Severity::Error, "single declaration is expected after 'declare simd' directive", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_target_contains_not_only_teams, CLASS_ERROR, (unsigned)diag::Severity::Error, "target construct with nested teams region contains statements outside of the teams construct", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_threadprivate_in_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "threadprivate variables are not allowed in '%0' clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_threadprivate_in_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "threadprivate variables cannot be used in target constructs", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_threadprivate_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "threadprivate variable with incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_typecheck_section_not_integer, CLASS_ERROR, (unsigned)diag::Severity::Error, "array section %select{lower bound|length}0 is not an integer", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_typecheck_section_value, CLASS_ERROR, (unsigned)diag::Severity::Error, "subscripted value is not an array or pointer", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_unexpected_clause_value, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected %0 in OpenMP clause '%1'", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_unexpected_schedule_modifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "modifier '%0' cannot be used along with modifier '%1'", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_union_type_not_allowed, CLASS_ERROR, (unsigned)diag::Severity::Error, "mapping of union members is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_unknown_reduction_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "incorrect reduction identifier, expected one of '+', '-', '*', '&', '|', '^', '&&', '||', 'min' or 'max' or declare reduction for type %0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_unnamed_if_clause, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected %select{|one of}0 %1 directive name modifier%select{|s}0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_usedeviceptr_not_a_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected pointer or reference to pointer in 'use_device_ptr' clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_var_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma omp %0' must appear in the scope of the %q1 variable declaration", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_var_thread_local, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable %0 cannot be threadprivate because it is %select{thread-local|a global named register variable}1", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_var_used, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma omp %0' must precede all references to variable %q1", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_variable_in_given_clause_and_dsa, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 variable cannot be in a %1 clause in '#pragma omp %2' directive", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_variably_modified_type_not_supported, CLASS_ERROR, (unsigned)diag::Severity::Error, "arguments of OpenMP clause '%0' in '#pragma omp %2' directive cannot be of variably-modified type %1", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_wrong_cancel_region, CLASS_ERROR, (unsigned)diag::Severity::Error, "one of 'for', 'parallel', 'sections' or 'taskgroup' is expected", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_wrong_dsa, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 variable cannot be %1", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_wrong_if_directive_name_modifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "directive name modifier '%0' is not allowed for '#pragma omp %1'", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_wrong_linear_modifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected %select{'val' modifier|one of 'ref', val' or 'uval' modifiers}0", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_wrong_linear_modifier_non_reference, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable of non-reference type %0 can be used only with 'val' modifier, but used with '%1'", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_wrong_ordered_loop_count, CLASS_ERROR, (unsigned)diag::Severity::Error, "the parameter of the 'ordered' clause must be greater than or equal to the parameter of the 'collapse' clause", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_wrong_simdlen_safelen_values, CLASS_ERROR, (unsigned)diag::Severity::Error, "the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_omp_wrong_var_in_declare_reduction, CLASS_ERROR, (unsigned)diag::Severity::Error, "only %select{'omp_priv' or 'omp_orig'|'omp_in' or 'omp_out'}0 variables are allowed in %select{initializer|combiner}0 expression", 0, SFINAE_SubstitutionFailure, false, true, 11) +DIAG(err_only_annotate_after_access_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "access specifier can only have annotation attributes", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_only_constructors_take_base_inits, CLASS_ERROR, (unsigned)diag::Severity::Error, "only constructors take base initializers", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_only_enums_have_underlying_types, CLASS_ERROR, (unsigned)diag::Severity::Error, "only enumeration types have underlying types", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_addrspace_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "variables in the %0 address space can only be declared in the outermost scope of a kernel function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_atomic_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "atomic variable can be %select{assigned|initialized}0 to a variable only in global address space", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_bitfields, CLASS_ERROR, (unsigned)diag::Severity::Error, "bit-fields are not supported in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_block_ref_block, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot refer to a block inside block", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_block_storage_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "the __block storage type is not permitted", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_builtin_expected_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal call to %0, expected %1 argument type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_builtin_pipe_arg_num, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid number of arguments to function: %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_builtin_pipe_first_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "first argument to %0 must be a pipe type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_builtin_pipe_invalid_access_modifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid pipe access modifier (expecting %0)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_builtin_pipe_invalid_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument type to function %0 (expecting %1 having %2)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_builtin_to_addr_arg_num, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid number of arguments to function: %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_builtin_to_addr_invalid_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument %0 to function: %1, expecting a generic pointer argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_cast_non_zero_to_event_t, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot cast non-zero value '%0' to 'event_t'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_cast_to_half, CLASS_ERROR, (unsigned)diag::Severity::Error, "casting to type %0 is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_constant_no_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable in constant address space must be initialized", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_enqueue_kernel_blocks_no_args, CLASS_ERROR, (unsigned)diag::Severity::Error, "blocks with parameters are not accepted in this prototype of enqueue_kernel call", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_enqueue_kernel_blocks_non_local_void_args, CLASS_ERROR, (unsigned)diag::Severity::Error, "blocks used in enqueue_kernel call are expected to have parameters of type 'local void*'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_enqueue_kernel_incorrect_args, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal call to enqueue_kernel, incorrect argument types", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_enqueue_kernel_invalid_local_size_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal call to enqueue_kernel, parameter needs to be specified as integer type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_enqueue_kernel_local_size_args, CLASS_ERROR, (unsigned)diag::Severity::Error, "mismatch in number of block parameters and local size arguments passed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_ext_vector_component_invalid_length, CLASS_ERROR, (unsigned)diag::Severity::Error, "vector component access has invalid length %0. Supported: 1,2,3,4,8,16.", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_extern_block_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid block variable declaration - using 'extern' storage class is disallowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_function_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "pointers to functions are not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_function_variable, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{non-kernel function|function scope}0 variable cannot be declared in %1 address space", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_global_invalid_addr_space, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{program scope|static local|extern}0 variable must reside in %1 address space", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_half_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaring variable of type %0 is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_half_load_store, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{loading directly from|assigning directly to}0 pointer to type %1 requires cl_khr_fp16. Use vector data %select{load|store}0 builtin functions instead", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_half_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaring function parameter of type %0 is not allowed; did you forget * ?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_implicit_function_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "implicit declaration of function %0 is invalid in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_implicit_vector_conversion, CLASS_ERROR, (unsigned)diag::Severity::Error, "implicit conversions between vector types (%0 and %1) are not permitted", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_invalid_access_qualifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "access qualifier can only be used for pipe and image type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_invalid_block_declaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid block variable declaration - must be %select{const qualified|initialized}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_invalid_read_write, CLASS_ERROR, (unsigned)diag::Severity::Error, "access qualifier %0 can not be used for %1 %select{|prior to OpenCL version 2.0}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_invalid_return, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaring function return value of type %0 is not allowed %select{; did you forget * ?|}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_invalid_type_array, CLASS_ERROR, (unsigned)diag::Severity::Error, "array of %0 type is invalid in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_kernel_attr, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute %0 can only be applied to an OpenCL kernel function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_multiple_access_qualifiers, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple access qualifiers", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_no_main, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{function|kernel}0 cannot be called 'main'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_nonconst_global_sampler, CLASS_ERROR, (unsigned)diag::Severity::Error, "global sampler requires a const or constant address space qualifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_pointer_to_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "pointer to type %0 is invalid in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_ptrptr_kernel_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "kernel parameter cannot be declared as a pointer to a pointer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_requires_extension, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of %select{type|declaration}0 %1 requires %2 extension to be enabled", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_return_value_with_address_space, CLASS_ERROR, (unsigned)diag::Severity::Error, "return value cannot be qualified with address space", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_scalar_type_rank_greater_than_vector_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "scalar operand type has greater rank than the type of the vector element. (%0 and %1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_sizeof_alignof_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align|__alignof}0' to a void type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_taking_address_capture, CLASS_ERROR, (unsigned)diag::Severity::Error, "taking address of a capture is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_ternary_with_block, CLASS_ERROR, (unsigned)diag::Severity::Error, "block type cannot be used as expression in ternary expression in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_type_can_only_be_used_as_function_parameter, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %0 can only be used as a function parameter in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_type_struct_or_union_field, CLASS_ERROR, (unsigned)diag::Severity::Error, "the %0 type cannot be used to declare a structure or union field", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_variadic_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid prototype, variadic arguments are not allowed in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_opencl_vla, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable length arrays are not supported in OpenCL", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_openmp_default_simd_align_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of '__builtin_omp_required_simd_align' to an expression, only type is allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_arrow_circular, CLASS_ERROR, (unsigned)diag::Severity::Error, "circular pointer delegation detected", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_arrow_depth_exceeded, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of 'operator->' on type %0 would invoke a sequence of more than %1 'operator->' calls", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_delete_dependent_param_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot take a dependent type as first parameter; use %1 instead", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_delete_param_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "first parameter of %0 must have type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_new_default_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter of %0 cannot have a default argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_new_delete_declared_in_namespace, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot be declared inside a namespace", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_new_delete_declared_static, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot be declared static in global scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_new_delete_dependent_result_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot have a dependent return type; use %1 instead", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_new_delete_invalid_result_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 must return type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_new_delete_template_too_few_parameters, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 template must have at least two parameters", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_new_delete_too_few_parameters, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 must have at least one parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_new_dependent_param_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot take a dependent type as first parameter; use size_t (%1) instead", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_new_param_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 takes type size_t (%1) as first parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_overload_default_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter of overloaded %0 cannot have a default argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_overload_must_be, CLASS_ERROR, (unsigned)diag::Severity::Error, "overloaded %0 must be a %select{unary|binary|unary or binary}2 operator (has %1 parameter%s1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_overload_must_be_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "overloaded %0 must be a non-static member function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_overload_needs_class_or_enum, CLASS_ERROR, (unsigned)diag::Severity::Error, "overloaded %0 must have at least one parameter of class or enumeration type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_overload_post_incdec_must_be_int, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter of overloaded post-%select{increment|decrement}1 operator must have type 'int' (not %0)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_overload_static, CLASS_ERROR, (unsigned)diag::Severity::Error, "overloaded %0 cannot be a static member function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_operator_overload_variadic, CLASS_ERROR, (unsigned)diag::Severity::Error, "overloaded %0 cannot be variadic", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_os_log_argument_too_big, CLASS_ERROR, (unsigned)diag::Severity::Error, "os_log() argument %0 is too big (%1 bytes, max %2)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_os_log_format_not_string_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "os_log() format argument is not a string constant", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_out_of_line_default_deletes, CLASS_ERROR, (unsigned)diag::Severity::Error, "defaulting this %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 would delete it after its first declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_out_of_line_qualified_id_type_names_constructor, CLASS_ERROR, (unsigned)diag::Severity::Error, "qualified reference to %0 is a constructor name rather than a %select{template name|type}1 in this context", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_overflow_builtin_must_be_int, CLASS_ERROR, (unsigned)diag::Severity::Error, "operand argument to overflow builtin must be an integer (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_overflow_builtin_must_be_ptr_int, CLASS_ERROR, (unsigned)diag::Severity::Error, "result argument to overflow builtin must be a pointer to a non-const integer (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_override_exception_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "exception specification of overriding function is more lax than base version", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_ambiguous_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to %0 is ambiguous", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_ambiguous_conversion_in_cast, CLASS_ERROR, (unsigned)diag::Severity::Error, "ambiguous conversion for %select{|static_cast|reinterpret_cast|dynamic_cast|C-style cast|functional-style cast}0 from %1 to %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_ambiguous_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to constructor of %0 is ambiguous", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_ambiguous_member_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to member function %0 is ambiguous", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_ambiguous_object_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to object of type %0 is ambiguous", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_ambiguous_oper_binary, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of overloaded operator '%0' is ambiguous (with operand types %1 and %2)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_ambiguous_oper_unary, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of overloaded operator '%0' is ambiguous (operand type %1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_deleted_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to %select{unavailable|deleted}0 function %1%2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_deleted_conversion_in_cast, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{|static_cast|reinterpret_cast|dynamic_cast|C-style cast|functional-style cast}0 from %1 to %2 uses deleted function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_deleted_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to %select{unavailable|deleted}0 constructor of %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_deleted_member_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to %select{unavailable|deleted}0 member function %1%2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_deleted_object_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to %select{unavailable|deleted}0 function call operator in type %1%2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_deleted_oper, CLASS_ERROR, (unsigned)diag::Severity::Error, "overload resolution selected %select{unavailable|deleted}0 operator '%1'%2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_deleted_special_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to implicitly-deleted %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor|function}0 of %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_deleted_special_oper, CLASS_ERROR, (unsigned)diag::Severity::Error, "object of type %0 cannot be %select{constructed|copied|moved|assigned|assigned|destroyed}1 because its %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}1 is implicitly deleted", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_diff_return_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "functions that differ only in their return type cannot be overloaded", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_no_conversion_in_cast, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot convert %1 to %2 without a conversion operator", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_no_oper, CLASS_ERROR, (unsigned)diag::Severity::Error, "type %0 does not provide a %select{subscript|call}1 operator", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_no_viable_conversion_in_cast, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching conversion for %select{|static_cast|reinterpret_cast|dynamic_cast|C-style cast|functional-style cast}0 from %1 to %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_no_viable_function_in_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching function for call to %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_no_viable_function_in_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching constructor for initialization of %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_no_viable_literal_operator, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching literal operator for call to %0%select{| with argument of type %2| with arguments of types %2 and %3}1%select{| or 'const char *'}4%select{|, and no matching literal operator template}5", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_no_viable_member_function_in_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching member function for call to %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_no_viable_object_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "no matching function for call to object of type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_no_viable_oper, CLASS_ERROR, (unsigned)diag::Severity::Error, "no viable overloaded '%0'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_no_viable_subscript, CLASS_ERROR, (unsigned)diag::Severity::Error, "no viable overloaded operator[] for type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_static_nonstatic_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "static and non-static member functions with the same parameter types cannot be overloaded", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ovl_unresolvable, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference to %select{overloaded|multiversioned}1 function could not be resolved; did you mean to call it%select{| with no arguments}0?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ownership_returns_index_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "'ownership_returns' attribute index does not match; here it is %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ownership_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute only applies to %select{pointer|integer}1 arguments", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pack_expansion_length_conflict, CLASS_ERROR, (unsigned)diag::Severity::Error, "pack expansion contains parameter packs %0 and %1 that have different lengths (%2 vs. %3)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pack_expansion_length_conflict_multilevel, CLASS_ERROR, (unsigned)diag::Severity::Error, "pack expansion contains parameter pack %0 that has a different length (%1 vs. %2) from outer parameter packs", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pack_expansion_length_conflict_partial, CLASS_ERROR, (unsigned)diag::Severity::Error, "pack expansion contains parameter pack %0 that has a different length (at least %1 vs. %2) from outer parameter packs", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pack_expansion_member_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "pack expansion for initialization of member %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pack_expansion_without_parameter_packs, CLASS_ERROR, (unsigned)diag::Severity::Error, "pack expansion does not contain any unexpanded parameter packs", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_param_default_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "C does not support default arguments", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_param_default_argument_member_template_redecl, CLASS_ERROR, (unsigned)diag::Severity::Error, "default arguments cannot be added to an out-of-line definition of a member of a %select{class template|class template partial specialization|nested class in a template}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_param_default_argument_missing, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing default argument on parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_param_default_argument_missing_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing default argument on parameter %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_param_default_argument_nonfunc, CLASS_ERROR, (unsigned)diag::Severity::Error, "default arguments can only be specified for parameters in a function declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_param_default_argument_on_parameter_pack, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter pack cannot have a default argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_param_default_argument_redefinition, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of default argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_param_default_argument_references_local, CLASS_ERROR, (unsigned)diag::Severity::Error, "default argument references local variable %0 of enclosing function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_param_default_argument_references_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "default argument references parameter %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_param_default_argument_references_this, CLASS_ERROR, (unsigned)diag::Severity::Error, "default argument references 'this'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_param_default_argument_template_redecl, CLASS_ERROR, (unsigned)diag::Severity::Error, "default arguments cannot be added to a function template that has already been declared", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_param_with_void_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument may not have 'void' type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_parameter_name_omitted, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter name omitted", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_parameter_shadow_capture, CLASS_ERROR, (unsigned)diag::Severity::Error, "a lambda parameter cannot shadow an explicitly captured entity", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_parameters_retval_cannot_have_fp16_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{parameters|function return value}0 cannot have __fp16 type; did you forget * ?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_parens_pointer_member_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot parenthesize the name of a method when forming a member pointer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_partial_spec_args_match_primary_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{class|variable}0 template partial specialization does not specialize any template argument; to %select{declare|define}1 the primary template, remove the template argument list", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_partial_spec_fully_specialized, CLASS_ERROR, (unsigned)diag::Severity::Error, "partial specialization of %0 does not use any of its template parameters", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_partial_spec_ordering_ambiguous, CLASS_ERROR, (unsigned)diag::Severity::Error, "ambiguous partial specializations of %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_partial_spec_redeclared, CLASS_ERROR, (unsigned)diag::Severity::Error, "class template partial specialization %0 cannot be redeclared", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_partial_specialization_friend, CLASS_ERROR, (unsigned)diag::Severity::Error, "partial specialization cannot be declared as a friend", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_placement_new_non_placement_delete, CLASS_ERROR, (unsigned)diag::Severity::Error, "'new' expression with placement arguments refers to non-placement 'operator delete'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pointer_to_member_call_drops_quals, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to pointer to member function of type %0 drops '%1' qualifier%s2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pointer_to_member_oper_value_classify, CLASS_ERROR, (unsigned)diag::Severity::Error, "pointer-to-member function type %0 can only be called on an %select{rvalue|lvalue}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pointer_to_member_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid use of pointer to member type after %select{.*|->*}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ppc_builtin_only_on_pwr7, CLASS_ERROR, (unsigned)diag::Severity::Error, "this builtin is only valid on POWER7 or later CPUs", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pragma_attr_attr_no_push, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma clang attribute' attribute with no matching '#pragma clang attribute push'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pragma_attribute_invalid_matchers, CLASS_ERROR, (unsigned)diag::Severity::Error, "attribute %0 can't be applied to %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pragma_attribute_matcher_negated_subrule_contradicts_subrule, CLASS_ERROR, (unsigned)diag::Severity::Error, "negated attribute subject matcher sub-rule '%0' contradicts sub-rule '%1'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pragma_attribute_matcher_subrule_contradicts_rule, CLASS_ERROR, (unsigned)diag::Severity::Error, "redundant attribute subject matcher sub-rule '%0'; '%1' already matches those declarations", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pragma_attribute_no_pop_eof, CLASS_ERROR, (unsigned)diag::Severity::Error, "unterminated '#pragma clang attribute push' at end of file", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pragma_attribute_stack_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "'#pragma clang attribute %select{%1.|}0pop' with no matching '#pragma clang attribute %select{%1.|}0push'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pragma_loop_compatibility, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{incompatible|duplicate}0 directives '%1' and '%2'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pragma_loop_invalid_argument_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument of type %0; expected an integer type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pragma_loop_invalid_argument_value, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{invalid value '%0'; must be positive|value '%0' is too large}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pragma_loop_precedes_nonloop, CLASS_ERROR, (unsigned)diag::Severity::Error, "expected a for, while, or do-while loop to follow '%0'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pragma_options_align_mac68k_target_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "mac68k alignment pragma is not supported on this target", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pragma_pop_visibility_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "#pragma visibility pop with no matching #pragma visibility push", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pragma_push_visibility_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "#pragma visibility push with no matching #pragma visibility pop", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_private_ivar_access, CLASS_ERROR, (unsigned)diag::Severity::Error, "instance variable %0 is private", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_property_accessor_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "type of property %0 (%1) does not match type of accessor %2 (%3)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_property_found_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %0 found on object of type %1; did you mean to access it with the \".\" operator?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_property_function_in_objc_container, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of Objective-C property in function nested in Objective-C container not supported, move function outside its container", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_property_implemented, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %0 is already implemented", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_property_is_variably_modified, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %0 has a variably modified type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_property_ivar_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "type of property %0 (%1) does not match type of instance variable %2 (%3)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_property_method_unavailable, CLASS_ERROR, (unsigned)diag::Severity::Error, "property access is using %0 method which is unavailable", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_property_not_as_forward_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %0 refers to an incomplete Objective-C class %1 (with no @interface available)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_property_not_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %0 not found on object of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_property_not_found_forward_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %0 cannot be found in forward class object %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_property_not_found_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %0 not found on object of type %1; did you mean %2?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_property_setter_ambiguous_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "synthesized properties %0 and %1 both claim setter %2 - use of this setter will cause unexpected behavior", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_property_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "property cannot have array or function type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_protected_ivar_access, CLASS_ERROR, (unsigned)diag::Severity::Error, "instance variable %0 is protected", 0, SFINAE_AccessControl, false, true, 2) +DIAG(err_protocol_has_circular_dependency, CLASS_ERROR, (unsigned)diag::Severity::Error, "protocol has circular dependency", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_protocol_property_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "property %select{of type %1|with attribute '%1'|without attribute '%1'|with getter %1|with setter %1}0 was selected for synthesis", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pseudo_dtor_base_not_scalar, CLASS_ERROR, (unsigned)diag::Severity::Error, "object expression of non-scalar type %0 cannot be used in a pseudo-destructor expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pseudo_dtor_call_with_args, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to pseudo-destructor cannot have any arguments", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pseudo_dtor_destructor_non_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 does not refer to a type name in pseudo-destructor expression; expected the name of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pseudo_dtor_type_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "the type of object expression %diff{($) does not match the type being destroyed ($)|does not match the type being destroyed}0,1 in pseudo-destructor expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_pure_friend, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend declaration cannot have a pure-specifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_qualified_catch_declarator, CLASS_ERROR, (unsigned)diag::Severity::Error, "exception declarator cannot be qualified", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_qualified_friend_def, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend function definition cannot be qualified with '%0'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_qualified_friend_no_match, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend declaration of %0 does not match any declaration in %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_qualified_member_nonclass, CLASS_ERROR, (unsigned)diag::Severity::Error, "qualified member access refers to a member in %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_qualified_member_of_unrelated, CLASS_ERROR, (unsigned)diag::Severity::Error, "%q0 is not a member of class %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_qualified_objc_access, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{property|instance variable}0 access cannot be qualified with '%1'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_qualified_objc_catch_parm, CLASS_ERROR, (unsigned)diag::Severity::Error, "@catch parameter declarator cannot be qualified", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_qualified_param_declarator, CLASS_ERROR, (unsigned)diag::Severity::Error, "parameter declarator cannot be qualified", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_qualified_typedef_declarator, CLASS_ERROR, (unsigned)diag::Severity::Error, "typedef declarator cannot be qualified", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_range_on_array_parameter, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot build range expression with array function parameter %0 since parameter with array type %1 is treated as pointer type %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_readonly_message_assignment, CLASS_ERROR, (unsigned)diag::Severity::Error, "assigning to 'readonly' return result of an Objective-C message not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_realimag_invalid_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid type %0 to %1 operator", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_record_with_pointers_kernel_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{struct|union}0 kernel parameters may not contain pointers", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_recursive_default_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "recursive evaluation of default argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_recursive_superclass, CLASS_ERROR, (unsigned)diag::Severity::Error, "trying to recursively use %0 as superclass of %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_redeclaration_different_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "redeclaration of %0 with a different type%diff{: $ vs $|}1,2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_redefinition, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_redefinition_different_kind, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of %0 as different kind of symbol", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_redefinition_different_namespace_alias, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of %0 as an alias for a different namespace", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_redefinition_different_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of %0 with a different type%diff{: $ vs $|}1,2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_redefinition_different_typedef, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{typedef|type alias|type alias template}0 redefinition with different types%diff{ ($ vs $)|}1,2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_redefinition_extern_inline, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of a 'extern inline' function %0 is not supported in %select{C99 mode|C++}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_redefinition_of_enumerator, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of enumerator %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_redefinition_of_label, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of label %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_redefinition_variably_modified_typedef, CLASS_ERROR, (unsigned)diag::Severity::Error, "redefinition of %select{typedef|type alias}0 for variably-modified type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ref_array_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot refer to declaration with an array type inside block", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ref_bad_target, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference to %select{__device__|__global__|__host__|__host__ __device__}0 function %1 in %select{__device__|__global__|__host__|__host__ __device__}2 function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ref_bad_target_global_initializer, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference to %select{__device__|__global__|__host__|__host__ __device__}0 function %1 in global initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ref_flexarray_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot refer to declaration of structure variable with flexible array member inside block", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ref_init_ambiguous, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference initialization of type %0 with initializer of type %1 is ambiguous", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ref_non_value, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 does not refer to a value", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ref_qualifier_constructor, CLASS_ERROR, (unsigned)diag::Severity::Error, "ref-qualifier '%select{&&|&}0' is not allowed on a constructor", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ref_qualifier_destructor, CLASS_ERROR, (unsigned)diag::Severity::Error, "ref-qualifier '%select{&&|&}0' is not allowed on a destructor", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ref_qualifier_overload, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot overload a member function %select{without a ref-qualifier|with ref-qualifier '&'|with ref-qualifier '&&'}0 with a member function %select{without a ref-qualifier|with ref-qualifier '&'|with ref-qualifier '&&'}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ref_vm_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot refer to declaration with a variably modified type inside block", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_reference_bind_drops_quals, CLASS_ERROR, (unsigned)diag::Severity::Error, "binding value %diff{of type $ to reference to type $|to reference}0,1 drops %select{<<ERROR>>|'const'|'restrict'|'const' and 'restrict'|'volatile'|'const' and 'volatile'|'restrict' and 'volatile'|'const', 'restrict', and 'volatile'}2 qualifier%plural{1:|2:|4:|:s}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_reference_bind_failed, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference %diff{to %select{type|incomplete type}1 $ could not bind to an %select{rvalue|lvalue}2 of type $|could not bind to %select{rvalue|lvalue}2 of incompatible type}0,3", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_reference_bind_init_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference to type %0 cannot bind to an initializer list", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_reference_bind_to_bitfield, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{non-const|volatile}0 reference cannot bind to bit-field%select{| %1}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_reference_bind_to_vector_element, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{non-const|volatile}0 reference cannot bind to vector element", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_reference_capture_with_reference_default, CLASS_ERROR, (unsigned)diag::Severity::Error, "'&' cannot precede a capture when the capture default is '&'", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_reference_has_multiple_inits, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference cannot be initialized with multiple values", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_reference_pipe_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "pipes packet types cannot be of reference type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_reference_to_local_in_enclosing_context, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference to local %select{variable|binding}1 %0 declared in enclosing %select{%3|block literal|lambda expression|context}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_reference_to_void, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot form a reference to 'void'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_reference_var_requires_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaration of reference variable %0 requires an initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_reference_without_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference to type %0 requires an initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_regparm_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "function declared with regparm(%0) attribute was previously declared %plural{0:without the regparm|:with the regparm(%1)}1 attribute", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_repeat_attribute, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute cannot be repeated", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_require_constant_init_failed, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable does not have a constant initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_restricted_superclass_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot subclass a class that was declared with the 'objc_subclassing_restricted' attribute", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_ret_local_block, CLASS_ERROR, (unsigned)diag::Severity::Error, "returning block that lives on the local stack", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_rethrow_used_outside_catch, CLASS_ERROR, (unsigned)diag::Severity::Error, "@throw (rethrow) used outside of a @catch block", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_return_block_has_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "void block should not return a value", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_return_in_captured_stmt, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot return from %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_return_in_constructor_handler, CLASS_ERROR, (unsigned)diag::Severity::Error, "return in the catch of a function try block of a constructor is illegal", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_return_in_coroutine, CLASS_ERROR, (unsigned)diag::Severity::Error, "return statement not allowed in coroutine; did you mean 'co_return'?", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_return_init_list, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{void function|void method|constructor|destructor}1 %0 must not return a value", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_root_class_cannot_use_super, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot use 'super' because it is a root class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_rref_in_exception_spec, CLASS_ERROR, (unsigned)diag::Severity::Error, "rvalue reference type %0 is not allowed in exception specification", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_sampler_argument_required, CLASS_ERROR, (unsigned)diag::Severity::Error, "sampler_t variable required - got %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_sampler_initializer_not_integer, CLASS_ERROR, (unsigned)diag::Severity::Error, "sampler_t initialization requires 32-bit integer, not %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_second_argument_to_cwsc_not_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "second argument to __builtin_call_with_static_chain must be of pointer type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_second_parameter_to_va_arg_abstract, CLASS_ERROR, (unsigned)diag::Severity::Error, "second argument to 'va_arg' is of abstract type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_second_parameter_to_va_arg_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "second argument to 'va_arg' is of incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_section_conflict, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 causes a section type conflict with %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_seh_in_a_coroutine_with_cxx_exceptions, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use SEH '__try' in a coroutine when C++ exceptions are enabled", 0, SFINAE_SubstitutionFailure, false, true, 14) +DIAG(err_seh_try_outside_functions, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot use SEH '__try' in blocks, captured regions, or Obj-C method decls", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_seh_try_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "SEH '__try' is not supported on this target", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_selected_explicit_constructor, CLASS_ERROR, (unsigned)diag::Severity::Error, "chosen constructor is explicit in copy-initialization", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_selector_element_const_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "selector element of type %0 cannot be a constant l-value expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_selector_element_not_lvalue, CLASS_ERROR, (unsigned)diag::Severity::Error, "selector element is not a valid lvalue", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_selector_element_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "selector element type %0 is not a valid object", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_setter_type_void, CLASS_ERROR, (unsigned)diag::Severity::Error, "type of setter must be void", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_shared_var_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "initialization is not supported for __shared__ variables.", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_shift_rhs_only_vector, CLASS_ERROR, (unsigned)diag::Severity::Error, "requested shift is a vector of type %0 but the first operand is not a vector (%1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_shufflevector_argument_too_large, CLASS_ERROR, (unsigned)diag::Severity::Error, "index for __builtin_shufflevector must be less than the total number of vector elements", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_shufflevector_nonconstant_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "index for __builtin_shufflevector must be a constant integer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_sizeof_alignof_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align|__alignof}0' to a function type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_sizeof_alignof_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align|__alignof}0' to an incomplete type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_sizeof_alignof_typeof_bitfield, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid application of '%select{sizeof|alignof|typeof}0' to bit-field", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_sizeof_nonfragile_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "application of '%select{alignof|sizeof}1' to interface %0 is not supported on this architecture and platform", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_sizeof_pack_no_pack_name, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 does not refer to the name of a parameter pack", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_sizeof_pack_no_pack_name_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 does not refer to the name of a parameter pack; did you mean %1?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_spaceship_argument_narrowing, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument to 'operator<=>' %select{cannot be narrowed from type %1 to %2|evaluates to %1, which cannot be narrowed to type %2}0", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_spec_member_not_instantiated, CLASS_ERROR, (unsigned)diag::Severity::Error, "specialization of member %q0 does not specialize an instantiated member", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_specialization_after_instantiation, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit specialization of %0 after instantiation", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_specialization_not_primary_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot reference member of primary template because deduced class template specialization %0 is %select{instantiated from a partial|an explicit}1 specialization", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_specialize_member_of_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot specialize %select{|(with 'template<>') }0a member of an unspecialized template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_standalone_class_nested_name_specifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "forward declaration of %select{class|struct|interface|union|enum}0 cannot have a nested name specifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_assert_expression_is_not_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "static_assert expression is not an integral constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_assert_failed, CLASS_ERROR, (unsigned)diag::Severity::Error, "static_assert failed%select{ %1|}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_assert_requirement_failed, CLASS_ERROR, (unsigned)diag::Severity::Error, "static_assert failed due to requirement '%0'%select{ %2|}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_block_func, CLASS_ERROR, (unsigned)diag::Severity::Error, "function declared in block scope cannot have 'static' storage class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_data_member_not_allowed_in_anon_struct, CLASS_ERROR, (unsigned)diag::Severity::Error, "static data member %0 not allowed in anonymous struct", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_data_member_not_allowed_in_local_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "static data member %0 not allowed in local class %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_data_member_reinitialization, CLASS_ERROR, (unsigned)diag::Severity::Error, "static data member %0 already has an initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_downcast_via_virtual, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot cast %0 to %1 via virtual base %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_function_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "variables in function scope cannot be declared static", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_illegal_in_new, CLASS_ERROR, (unsigned)diag::Severity::Error, "the 'static' modifier for the array size is not legal in new expressions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_kernel, CLASS_ERROR, (unsigned)diag::Severity::Error, "kernel functions cannot be declared static", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_main, CLASS_ERROR, (unsigned)diag::Severity::Error, "'main' is not allowed to be declared static", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_non_static, CLASS_ERROR, (unsigned)diag::Severity::Error, "static declaration of %0 follows non-static declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_not_bitfield, CLASS_ERROR, (unsigned)diag::Severity::Error, "static member %0 cannot be a bit-field", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_out_of_line, CLASS_ERROR, (unsigned)diag::Severity::Error, "'static' can only be specified inside the class definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_static_overrides_virtual, CLASS_ERROR, (unsigned)diag::Severity::Error, "'static' member function %0 overrides a virtual function in a base class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_statically_allocated_object, CLASS_ERROR, (unsigned)diag::Severity::Error, "interface type cannot be statically allocated", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_std_compare_type_not_supported, CLASS_ERROR, (unsigned)diag::Severity::Error, "standard library implementation of %0 is not supported; %select{member '%2' does not have expected form|member '%2' is missing|the type is not trivially copyable|the type does not have the expected form}1", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(err_std_type_trait_not_class_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported standard library implementation: 'std::%0' is not a class template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_stmt_attribute_invalid_on_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 attribute cannot be applied to a declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_storage_class_for_static_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "static data member definition cannot specify a storage class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_storage_spec_on_catch_parm, CLASS_ERROR, (unsigned)diag::Severity::Error, "@catch parameter cannot have storage specifier '%0'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_storageclass_invalid_for_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "storage class specified for a member declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_strong_property, CLASS_ERROR, (unsigned)diag::Severity::Error, "existing instance variable %1 for strong property %0 may not be __weak", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_subscript_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "subscript of pointer to function type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_subscript_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "subscript of pointer to incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_subscript_nonfragile_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "subscript requires size of interface %0, which is not constant for this architecture and platform", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_super_in_lambda_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of '__super' inside a lambda is unsupported", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_swift_abi_parameter_wrong_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' parameter must have pointer%select{| to unqualified pointer}1 type; type here is %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_swift_error_result_not_after_swift_context, CLASS_ERROR, (unsigned)diag::Severity::Error, "'swift_error_result' parameter must follow 'swift_context' parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_swift_indirect_result_not_first, CLASS_ERROR, (unsigned)diag::Severity::Error, "'swift_indirect_result' parameters must be first parameters of function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_swift_param_attr_not_swiftcall, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' parameter can only be used with swiftcall calling convention", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_switch_explicit_conversion, CLASS_ERROR, (unsigned)diag::Severity::Error, "switch condition type %0 requires explicit conversion to %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_switch_incomplete_class_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "switch condition has incomplete class type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_switch_into_protected_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot jump from switch statement to this case label", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_switch_multiple_conversions, CLASS_ERROR, (unsigned)diag::Severity::Error, "multiple conversions from switch condition type %0 to an integral or enumeration type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_synthesize_category_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "@synthesize not allowed in a category's implementation", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_synthesize_on_class_property, CLASS_ERROR, (unsigned)diag::Severity::Error, "@synthesize not allowed on a class property %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_synthesize_variable_sized_ivar, CLASS_ERROR, (unsigned)diag::Severity::Error, "synthesized property with variable size type %0 requires an existing instance variable", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_synthesizing_arc_weak_property_disabled, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot synthesize weak property in file using manual reference counting", 0, SFINAE_SubstitutionFailure, false, true, 9) +DIAG(err_synthesizing_arc_weak_property_no_runtime, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot synthesize weak property because the current deployment target does not support weak references", 0, SFINAE_SubstitutionFailure, false, true, 9) +DIAG(err_systemz_invalid_tabort_code, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid transaction abort code", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_tag_definition_of_typedef, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition of type %0 conflicts with %select{typedef|type alias}1 of the same name", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_tag_index_out_of_range, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{type tag|argument}0 index %1 is greater than the number of arguments specified", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_tag_reference_conflict, CLASS_ERROR, (unsigned)diag::Severity::Error, "implicit declaration introduced by elaborated type conflicts with a %select{non-struct type|non-class type|non-union type|non-enum type|typedef|type alias|template|type alias template|template template argument}0 of the same name", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_tag_reference_non_tag, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{non-struct type|non-class type|non-union type|non-enum type|typedef|type alias|template|type alias template|template template argument}1 %0 cannot be referenced with a %select{struct|interface|union|class|enum}2 specifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_tagless_friend_type_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "friend type templates must use an elaborated type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_temp_copy_ambiguous, CLASS_ERROR, (unsigned)diag::Severity::Error, "ambiguous constructor call when %select{copying variable|copying parameter|returning object|initializing statement expression result|throwing object|copying member subobject|copying array element|allocating object|copying temporary|initializing base subobject|initializing vector element|capturing value}0 of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_temp_copy_deleted, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{copying variable|copying parameter|returning object|initializing statement expression result|throwing object|copying member subobject|copying array element|allocating object|copying temporary|initializing base subobject|initializing vector element|capturing value}0 of type %1 invokes deleted constructor", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_temp_copy_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "copying a temporary object of incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_temp_copy_no_viable, CLASS_ERROR, (unsigned)diag::Severity::Error, "no viable constructor %select{copying variable|copying parameter|returning object|initializing statement expression result|throwing object|copying member subobject|copying array element|allocating object|copying temporary|initializing base subobject|initializing vector element|capturing value}0 of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_address_of_non_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "address taken in non-type template argument for template parameter of reference type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_deduced_incomplete_pack, CLASS_ERROR, (unsigned)diag::Severity::Error, "deduced incomplete pack %0 for template parameter %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_field, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument refers to non-static data member %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_list_different_arity, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{too few|too many}0 template arguments for %select{class template|function template|variable template|alias template|template template parameter|template}1 %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_member_ptr_base_derived_not_supported, CLASS_ERROR, (unsigned)diag::Severity::Error, "sorry, non-type template argument of pointer-to-member type %1 that refers to member %q0 of a different class is not supported yet", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_method, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument refers to non-static member function %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_must_be_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "template argument for non-type template parameter must be an expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_must_be_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "template argument for template template parameter must be a class template%select{| or type alias template}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_must_be_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "template argument for template type parameter must be a type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_must_be_type_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "template argument for template type parameter must be a type; did you forget 'typename'?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_no_ref_bind, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template parameter of reference type %diff{$ cannot bind to template argument of type $|cannot bind to template of incompatible argument type}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_nontype_ambig, CLASS_ERROR, (unsigned)diag::Severity::Error, "template argument for non-type template parameter is treated as function type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_not_address_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument of type %0 is not a constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_not_address_of, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument for template parameter of pointer type %0 must have its address taken", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_not_convertible, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument of type %0 cannot be converted to a value of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_not_decl_ref, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument does not refer to any declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_not_ice, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument of type %0 is not an integral constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_not_integral_or_enumeral, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument of type %0 must have an integral or enumeration type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_not_object_or_func, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument does not refer to an object or function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_not_pointer_to_member_form, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument is not a pointer to member constant", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_not_valid_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "template argument does not refer to a class or alias template, or template template parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_object_no_linkage, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument refers to %select{function|object}0 %1 that does not have linkage", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_overload_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "template argument is the type of an unresolved overloaded function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_ref_bind_ignores_quals, CLASS_ERROR, (unsigned)diag::Severity::Error, "reference binding of non-type template parameter %diff{of type $ to template argument of type $|to template argument}0,1 ignores qualifiers", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_reference_var, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument of reference type %0 is not an object", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_template_params_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "template template argument has different template parameters than its corresponding template template parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_thread_local, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template argument refers to thread-local object", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_untyped_null_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "null non-type template argument must be cast to template parameter type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_arg_wrongtype_null_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "null non-type template argument of type %0 does not match template parameter of type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_different_associated_constraints, CLASS_ERROR, (unsigned)diag::Severity::Error, "associated constraints differ in template redeclaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_id_not_a_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "template name refers to non-type template %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_inside_local_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "templates cannot be declared inside of a local class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_instantiate_undefined, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{implicit|explicit}0 instantiation of undefined template %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_instantiate_within_definition, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{implicit|explicit}0 instantiation of template %1 within its own definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_kw_missing, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing 'template' keyword prior to dependent template name '%0%1'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_kw_refers_to_class_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0%1' instantiated to a class template, not a function template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_kw_refers_to_non_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 following the 'template' keyword does not refer to a template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_linkage, CLASS_ERROR, (unsigned)diag::Severity::Error, "templates must have C++ linkage", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "member %0 declared as a template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_member_noparams, CLASS_ERROR, (unsigned)diag::Severity::Error, "extraneous 'template<>' in declaration of member %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_missing_args, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of %select{class template|function template|variable template|alias template|template template parameter|template}0 %1 requires template arguments", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_nontype_parm_bad_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "a non-type template parameter cannot have type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_nontype_parm_different_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "template non-type parameter has a different type %0 in template %select{|template parameter }1redeclaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_outside_namespace_or_class_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "templates can only be declared in namespace or class scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_param_default_arg_missing, CLASS_ERROR, (unsigned)diag::Severity::Error, "template parameter missing a default argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_param_default_arg_redefinition, CLASS_ERROR, (unsigned)diag::Severity::Error, "template parameter redefines default argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_param_different_kind, CLASS_ERROR, (unsigned)diag::Severity::Error, "template parameter has a different kind in template %select{|template parameter }0redeclaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_param_list_different_arity, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{too few|too many}0 template parameters in template %select{|template parameter }1redeclaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_param_list_matches_nontemplate, CLASS_ERROR, (unsigned)diag::Severity::Error, "template parameter list matching the non-templated nested type %0 should be empty ('template<>')", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_param_pack_default_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "template parameter pack cannot have a default argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_param_pack_must_be_last_template_parameter, CLASS_ERROR, (unsigned)diag::Severity::Error, "template parameter pack must be the last template parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_param_shadow, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaration of %0 shadows template parameter", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_parameter_default_friend_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "default template argument not permitted on a friend template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_parameter_default_template_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot add a default template argument to the definition of a member of a class template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_parameter_pack_non_pack, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{template type|non-type template|template template}0 parameter%select{| pack}1 conflicts with previous %select{template type|non-type template|template template}0 parameter%select{ pack|}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_qualified_declarator_no_match, CLASS_ERROR, (unsigned)diag::Severity::Error, "nested name specifier '%0' for declaration does not refer into a class, class template or class template partial specialization", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_recursion_depth_exceeded, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "recursive template instantiation exceeded maximum depth of %0", 0, SFINAE_Report, false, true, 2) +DIAG(err_template_spec_decl_friend, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot declare an explicit specialization in a friend", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_spec_decl_function_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "explicit specialization of %0 in function scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_spec_default_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "default argument not permitted on an explicit %select{instantiation|specialization}0 of function %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_spec_extra_headers, CLASS_ERROR, (unsigned)diag::Severity::Error, "extraneous template parameter list in template specialization or out-of-line template definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_spec_friend, CLASS_ERROR, (unsigned)diag::Severity::Error, "template specialization declaration cannot be a friend", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_spec_needs_header, CLASS_ERROR, (unsigned)diag::Severity::Error, "template specialization requires 'template<>'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_spec_needs_template_parameters, CLASS_ERROR, (unsigned)diag::Severity::Error, "template specialization or definition requires a template parameter list corresponding to the nested type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_spec_redecl_global_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{class template|class template partial|variable template|variable template partial|function template|member function|static data member|member class|member enumeration}0 specialization of %1 must occur at global scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_spec_redecl_out_of_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{class template|class template partial|variable template|variable template partial|function template|member function|static data member|member class|member enumeration}0 specialization of %1 not in %select{a namespace enclosing %2|class %2 or an enclosing namespace}3", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_spec_unknown_kind, CLASS_ERROR, (unsigned)diag::Severity::Error, "can only provide an explicit specialization for a class template, function template, variable template, or a member function, static data member, %select{or member class|member class, or member enumeration}0 of a class template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_tag_noparams, CLASS_ERROR, (unsigned)diag::Severity::Error, "extraneous 'template<>' in declaration of %0 %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_template_parm_no_parms, CLASS_ERROR, (unsigned)diag::Severity::Error, "template template parameter must have its own template parameters", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_typedef, CLASS_ERROR, (unsigned)diag::Severity::Error, "a typedef cannot be a template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_unnamed_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot declare a class template with no name", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_template_variable_noparams, CLASS_ERROR, (unsigned)diag::Severity::Error, "extraneous 'template<>' in declaration of variable %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_tentative_def_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "tentative definition has type %0 that is never completed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_this_capture, CLASS_ERROR, (unsigned)diag::Severity::Error, "'this' cannot be %select{implicitly |}0captured in this context", 0, SFINAE_SubstitutionFailure, false, true, 3) +DIAG(err_this_static_member_func, CLASS_ERROR, (unsigned)diag::Severity::Error, "'this' cannot be%select{| implicitly}0 used in a static member function declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_thread_dynamic_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "initializer for thread-local variable must be a constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_thread_non_global, CLASS_ERROR, (unsigned)diag::Severity::Error, "'%0' variables must have global storage", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_thread_non_thread, CLASS_ERROR, (unsigned)diag::Severity::Error, "thread-local declaration of %0 follows non-thread-local declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_thread_nontrivial_dtor, CLASS_ERROR, (unsigned)diag::Severity::Error, "type of thread-local variable has non-trivial destruction", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_thread_thread_different_kind, CLASS_ERROR, (unsigned)diag::Severity::Error, "thread-local declaration of %0 with %select{static|dynamic}1 initialization follows declaration with %select{dynamic|static}1 initialization", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_thread_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "thread-local storage is not supported for the current target", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_throw_abstract_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot throw an object of abstract type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_throw_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot throw object of incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_throw_incomplete_ptr, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot throw pointer to object of incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_tls_var_aligned_over_maximum, CLASS_ERROR, (unsigned)diag::Severity::Error, "alignment (%0) of thread-local variable %1 is greater than the maximum supported alignment (%2) for a thread-local variable on this target", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_toomany_element_decls, CLASS_ERROR, (unsigned)diag::Severity::Error, "only one element declaration is allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_trailing_return_in_parens, CLASS_ERROR, (unsigned)diag::Severity::Error, "trailing return type may not be nested within parentheses", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_trailing_return_without_auto, CLASS_ERROR, (unsigned)diag::Severity::Error, "function with trailing return type must specify return type 'auto', not %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_type_defined_in_alias_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot be defined in a type alias template", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_type_defined_in_condition, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot be defined in a condition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_type_defined_in_enum, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot be defined in an enumeration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_type_defined_in_for_range, CLASS_ERROR, (unsigned)diag::Severity::Error, "types may not be defined in a for range declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_type_defined_in_param_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot be defined in a parameter type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_type_defined_in_result_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot be defined in the result type of a function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_type_defined_in_type_specifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 cannot be defined in a type specifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_type_mismatch_continuation_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "type of property %0 in class extension does not match property type in primary class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_type_pack_element_out_of_bounds, CLASS_ERROR, (unsigned)diag::Severity::Error, "a parameter pack may not be accessed at an out of bounds index", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_type_tag_for_datatype_not_ice, CLASS_ERROR, (unsigned)diag::Severity::Error, "'type_tag_for_datatype' attribute requires the initializer to be an %select{integer|integral}0 constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_type_tag_for_datatype_too_large, CLASS_ERROR, (unsigned)diag::Severity::Error, "'type_tag_for_datatype' attribute requires the initializer to be an %select{integer|integral}0 constant expression that can be represented by a 64 bit integer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_type_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not supported on this target", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_address_of, CLASS_ERROR, (unsigned)diag::Severity::Error, "address of %select{bit-field|vector element|property expression|register variable}0 requested", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_addrof_dtor, CLASS_ERROR, (unsigned)diag::Severity::Error, "taking the address of a destructor", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_addrof_temporary, CLASS_ERROR, (unsigned)diag::Severity::Error, "taking the address of a temporary object of type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_ambiguous_condition, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion %diff{from $ to $|between types}0,1 is ambiguous", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_arc_assign_externally_retained, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable declared with 'objc_externally_retained' cannot be modified in ARC", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_typecheck_arc_assign_self, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot assign to 'self' outside of a method in the init family", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_typecheck_arc_assign_self_class_method, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot assign to 'self' in a class method", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_typecheck_arithmetic_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "arithmetic on a pointer to an incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_arr_assign_enumeration, CLASS_ERROR, (unsigned)diag::Severity::Error, "fast enumeration variables cannot be modified in ARC by default; declare the variable __strong to allow this", 0, SFINAE_SubstitutionFailure, false, true, 5) +DIAG(err_typecheck_array_not_modifiable_lvalue, CLASS_ERROR, (unsigned)diag::Severity::Error, "array type %0 is not assignable", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_assign_const, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{cannot assign to return value because function %1 returns a const value|cannot assign to variable %1 with const-qualified type %2|cannot assign to %select{non-|}1static data member %2 with const-qualified type %3|cannot assign to non-static data member within const member function %1|cannot assign to %select{variable %2|non-static data member %2|lvalue}1 with %select{|nested }3const-qualified data member %4|read-only variable is not assignable}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_bool_condition, CLASS_ERROR, (unsigned)diag::Severity::Error, "value of type %0 is not contextually convertible to 'bool'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_invalid_ordered_compare, CLASS_ERROR, (unsigned)diag::Severity::Error, "ordered compare requires two args of floating point type%diff{ ($ and $)|}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_invalid_unary_fp, CLASS_ERROR, (unsigned)diag::Severity::Error, "floating point classification requires argument of floating point type (passed in %0)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_not_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "called object type %0 is not a function or function pointer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_too_few_args, CLASS_ERROR, (unsigned)diag::Severity::Error, "too few %select{|||execution configuration }0arguments to %select{function|block|method|kernel function}0 call, expected %1, have %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_too_few_args_at_least, CLASS_ERROR, (unsigned)diag::Severity::Error, "too few %select{|||execution configuration }0arguments to %select{function|block|method|kernel function}0 call, expected at least %1, have %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_too_few_args_at_least_one, CLASS_ERROR, (unsigned)diag::Severity::Error, "too few %select{|||execution configuration }0arguments to %select{function|block|method|kernel function}0 call, at least argument %1 must be specified", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_too_few_args_at_least_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "too few %select{|||execution configuration }0arguments to %select{function|block|method|kernel function}0 call, expected at least %1, have %2; did you mean %3?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_too_few_args_one, CLASS_ERROR, (unsigned)diag::Severity::Error, "too few %select{|||execution configuration }0arguments to %select{function|block|method|kernel function}0 call, single argument %1 was not specified", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_too_few_args_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "too few %select{|||execution configuration }0arguments to %select{function|block|method|kernel function}0 call, expected %1, have %2; did you mean %3?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_too_many_args, CLASS_ERROR, (unsigned)diag::Severity::Error, "too many %select{|||execution configuration }0arguments to %select{function|block|method|kernel function}0 call, expected %1, have %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_too_many_args_at_most, CLASS_ERROR, (unsigned)diag::Severity::Error, "too many %select{|||execution configuration }0arguments to %select{function|block|method|kernel function}0 call, expected at most %1, have %2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_too_many_args_at_most_one, CLASS_ERROR, (unsigned)diag::Severity::Error, "too many %select{|||execution configuration }0arguments to %select{function|block|method|kernel function}0 call, expected at most single argument %1, have %2 arguments", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_too_many_args_at_most_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "too many %select{|||execution configuration }0arguments to %select{function|block|method|kernel function}0 call, expected at most %1, have %2; did you mean %3?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_too_many_args_one, CLASS_ERROR, (unsigned)diag::Severity::Error, "too many %select{|||execution configuration }0arguments to %select{function|block|method|kernel function}0 call, expected single argument %1, have %2 arguments", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_call_too_many_args_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "too many %select{|||execution configuration }0arguments to %select{function|block|method|kernel function}0 call, expected %1, have %2; did you mean %3?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_cast_to_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "cast to incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_cast_to_union_no_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cast to union type from type %0 not present in union", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_choose_expr_requires_constant, CLASS_ERROR, (unsigned)diag::Severity::Error, "'__builtin_choose_expr' requires a constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_comparison_of_distinct_blocks, CLASS_ERROR, (unsigned)diag::Severity::Error, "comparison of distinct block types%diff{ ($ and $)|}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_comparison_of_distinct_pointers, CLASS_ERROR, (unsigned)diag::Severity::Error, "comparison of distinct pointer types%diff{ ($ and $)|}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_comparison_of_fptr_to_void, CLASS_ERROR, (unsigned)diag::Severity::Error, "equality comparison between function pointer and void pointer (%0 and %1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_comparison_of_pointer_integer, CLASS_ERROR, (unsigned)diag::Severity::Error, "comparison between pointer and integer (%0 and %1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_cond_expect_int_float, CLASS_ERROR, (unsigned)diag::Severity::Error, "used type %0 where integer or floating point type is required", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_cond_expect_nonfloat, CLASS_ERROR, (unsigned)diag::Severity::Error, "used type %0 where floating point type is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_cond_expect_scalar, CLASS_ERROR, (unsigned)diag::Severity::Error, "used type %0 where arithmetic or pointer type is required", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_cond_incompatible_operands, CLASS_ERROR, (unsigned)diag::Severity::Error, "incompatible operand types%diff{ ($ and $)|}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_cond_incompatible_operands_null, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-pointer operand type %0 incompatible with %select{NULL|nullptr}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_convert_incompatible, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{%diff{assigning to $ from incompatible type $|assigning to type from incompatible type}0,1|%diff{passing $ to parameter of incompatible type $|passing type to parameter of incompatible type}0,1|%diff{returning $ from a function with incompatible result type $|returning type from a function with incompatible result type}0,1|%diff{converting $ to incompatible type $|converting type to incompatible type}0,1|%diff{initializing $ with an expression of incompatible type $|initializing type with an expression of incompatible type}0,1|%diff{sending $ to parameter of incompatible type $|sending type to parameter of incompatible type}0,1|%diff{casting $ to incompatible type $|casting type to incompatible type}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3%select{|: different classes%diff{ ($ vs $)|}5,6|: different number of parameters (%5 vs %6)|: type mismatch at %ordinal5 parameter%diff{ ($ vs $)|}6,7|: different return type%diff{ ($ vs $)|}5,6|: different qualifiers (%5 vs %6)|: different exception specifications}4", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_convert_incompatible_block_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "incompatible block pointer types %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_converted_constant_expression, CLASS_ERROR, (unsigned)diag::Severity::Error, "value of type %0 is not implicitly convertible to %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_converted_constant_expression_disallowed, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion from %0 to %1 is not allowed in a converted constant expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_converted_constant_expression_indirect, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion from %0 to %1 in converted constant expression would bind reference to a temporary", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_decl_incomplete_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable has incomplete type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_deleted_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "conversion function %diff{from $ to $|between types}0,1 invokes a deleted function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_duplicate_vector_components_not_mlvalue, CLASS_ERROR, (unsigned)diag::Severity::Error, "vector is not assignable (contains duplicate components)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_expect_int, CLASS_ERROR, (unsigned)diag::Severity::Error, "used type %0 where integer is required", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_expect_scalar_operand, CLASS_ERROR, (unsigned)diag::Severity::Error, "operand of type %0 where arithmetic or pointer type is required", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_expression_not_modifiable_lvalue, CLASS_ERROR, (unsigned)diag::Severity::Error, "expression is not assignable", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_field_variable_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "fields must have a constant size: 'variable length array in structure' extension will never be supported", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_illegal_increment_decrement, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot %select{decrement|increment}1 value of type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_incompatible_address_space, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{%diff{assigning $ to $|assigning to different types}1,0|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 changes address space of pointer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_incompatible_ownership, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{%diff{assigning $ to $|assigning to different types}1,0|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 changes retain/release properties of pointer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_incomplete_array_needs_initializer, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition of variable with array type needs an explicit size or an initializer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_incomplete_tag, CLASS_ERROR, (unsigned)diag::Severity::Error, "incomplete definition of type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_incomplete_type_not_modifiable_lvalue, CLASS_ERROR, (unsigned)diag::Severity::Error, "incomplete type %0 is not assignable", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_indirection_requires_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "indirection requires pointer operand (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_invalid_lvalue_addrof, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot take the address of an rvalue of type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_invalid_lvalue_addrof_addrof_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "extra '&' taking address of overloaded function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_invalid_operands, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid operands to binary expression (%0 and %1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_invalid_restrict_invalid_pointee, CLASS_ERROR, (unsigned)diag::Severity::Error, "pointer to function type %0 may not be 'restrict' qualified", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_invalid_restrict_not_pointer, CLASS_ERROR, (unsigned)diag::Severity::Error, "restrict requires a pointer or reference (%0 is invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_invalid_restrict_not_pointer_noarg, CLASS_ERROR, (unsigned)diag::Severity::Error, "restrict requires a pointer or reference", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_ivar_variable_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "instance variables must have a constant size", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_logical_vector_expr_gnu_cpp_restrict, CLASS_ERROR, (unsigned)diag::Severity::Error, "logical expression with vector %select{type %1 and non-vector type %2|types %1 and %2}0 is only supported in C++", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_lvalue_casts_not_supported, CLASS_ERROR, (unsigned)diag::Severity::Error, "assignment to cast is illegal, lvalue casts are not supported", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_member_reference_arrow, CLASS_ERROR, (unsigned)diag::Severity::Error, "member reference type %0 is not a pointer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_member_reference_ivar, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 does not have a member named %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_member_reference_ivar_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 does not have a member named %1; did you mean %2?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_member_reference_struct_union, CLASS_ERROR, (unsigned)diag::Severity::Error, "member reference base type %0 is not a structure or union", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_member_reference_suggestion, CLASS_ERROR, (unsigned)diag::Severity::Error, "member reference type %0 is %select{a|not a}1 pointer; did you mean to use '%select{->|.}1'?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_member_reference_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot refer to type member %0 in %1 with '%select{.|->}2'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_member_reference_unknown, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot refer to member %0 in %1 with '%select{.|->}2'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_missing_return_type_incompatible, CLASS_ERROR, (unsigned)diag::Severity::Error, "%diff{return type $ must match previous return type $|return type must match previous return type}0,1 when %select{block literal|lambda expression}2 has unspecified explicit return type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_negative_array_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "array size is negative", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_non_object_not_modifiable_lvalue, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-object type %0 is not assignable", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_nonviable_condition, CLASS_ERROR, (unsigned)diag::Severity::Error, "no viable conversion%select{%diff{ from $ to $|}1,2|%diff{ from returned value of type $ to function return type $|}1,2}0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_nonviable_condition_incomplete, CLASS_ERROR, (unsigned)diag::Severity::Error, "no viable conversion%diff{ from $ to incomplete type $|}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_op_on_nonoverlapping_address_space_pointers, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{comparison between %diff{ ($ and $)|}0,1|arithmetic operation with operands of type %diff{ ($ and $)|}0,1|conditional operator with the second and third operands of type %diff{ ($ and $)|}0,1}2 which are pointers to non-overlapping address spaces", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_ordered_comparison_of_pointer_and_zero, CLASS_ERROR, (unsigned)diag::Severity::Error, "ordered comparison between pointer and zero (%0 and %1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_pointer_arith_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "arithmetic on%select{ a|}0 pointer%select{|s}0 to%select{ the|}2 function type%select{|s}2 %1%select{| and %3}2", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_pointer_arith_void_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "arithmetic on%select{ a|}0 pointer%select{|s}0 to void", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_sclass_fscope, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal storage class on file-scoped variable", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_sclass_func, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal storage class on function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_statement_requires_integer, CLASS_ERROR, (unsigned)diag::Severity::Error, "statement requires expression of integer type (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_statement_requires_scalar, CLASS_ERROR, (unsigned)diag::Severity::Error, "statement requires expression of scalar type (%0 invalid)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_sub_ptr_compatible, CLASS_ERROR, (unsigned)diag::Severity::Error, "%diff{$ and $ are not pointers to compatible types|pointers to incompatible types}0,1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_subscript_not_integer, CLASS_ERROR, (unsigned)diag::Severity::Error, "array subscript is not an integer", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_subscript_value, CLASS_ERROR, (unsigned)diag::Severity::Error, "subscripted value is not an array, pointer, or vector", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_unary_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid argument type %0 to unary expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_vector_lengths_not_equal, CLASS_ERROR, (unsigned)diag::Severity::Error, "vector operands do not have the same number of elements (%0 and %1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_vector_not_convertable, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot convert between vector values of different size (%0 and %1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_vector_not_convertable_implict_truncation, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot convert between %select{scalar|vector}0 type %1 and vector type %2 as implicit conversion would cause truncation", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_vector_not_convertable_non_scalar, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot convert between vector and non-scalar values (%0 and %1)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typecheck_zero_array_size, CLASS_ERROR, (unsigned)diag::Severity::Error, "zero-length arrays are not permitted in C++", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typedef_changes_linkage, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported: typedef changes linkage of anonymous type, but linkage was already computed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typedef_not_bitfield, CLASS_ERROR, (unsigned)diag::Severity::Error, "typedef member %0 cannot be a bit-field", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typedef_not_identifier, CLASS_ERROR, (unsigned)diag::Severity::Error, "typedef name must be an identifier", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typename_missing, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing 'typename' prior to dependent type name '%0%1'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typename_missing_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "missing 'typename' prior to dependent type template name '%0%1'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typename_nested_not_found, CLASS_ERROR, (unsigned)diag::Severity::Error, "no type named %0 in %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typename_nested_not_found_enable_if, CLASS_ERROR, (unsigned)diag::Severity::Error, "no type named 'type' in %0; 'enable_if' cannot be used to disable this declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typename_nested_not_found_requirement, CLASS_ERROR, (unsigned)diag::Severity::Error, "failed requirement '%0'; 'enable_if' cannot be used to disable this declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typename_nested_not_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "typename specifier refers to non-type member %0 in %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_typename_refers_to_using_value_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "typename specifier refers to a dependent using declaration for a value %0 in %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unavailable, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is unavailable", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unavailable_in_arc, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is unavailable in ARC", 0, SFINAE_SubstitutionFailure, false, true, 10) +DIAG(err_unavailable_message, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is unavailable: %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_uncasted_call_of_unknown_any, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 has unknown return type; cast the call to its declared return type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_uncasted_send_to_unknown_any_method, CLASS_ERROR, (unsigned)diag::Severity::Error, "no known method %select{%objcinstance1|%objcclass1}0; cast the message send to the method's return type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_uncasted_use_of_unknown_any, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 has unknown type; cast it to its declared type to use it", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undeclared_boxing_method, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaration of %0 is missing in %1 class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undeclared_label_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of undeclared label %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undeclared_objc_literal_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition of class %0 must be available to use Objective-C %select{array literals|dictionary literals|numeric literals|boxed expressions|string literals}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undeclared_protocol, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find protocol declaration for %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undeclared_protocol_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find protocol declaration for %0; did you mean %1?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undeclared_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of undeclared %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undeclared_use_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of undeclared %0; did you mean %1?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undeclared_var_use, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of undeclared identifier %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undeclared_var_use_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of undeclared identifier %0; did you mean %1?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undef_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find interface declaration for %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undef_interface_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find interface declaration for %0; did you mean %1?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undef_superclass, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find interface declaration for %0, superclass of %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undef_superclass_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot find interface declaration for %0, superclass of %1; did you mean %2?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undefined_inline_var, CLASS_ERROR, (unsigned)diag::Severity::Error, "inline variable %q0 is not defined", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_undefined_internal_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{function|variable}0 %q1 is used but not defined in this translation unit, and cannot be defined in any other translation unit because its type does not have linkage", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_underlying_type_of_incomplete_enum, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot determine underlying type of incomplete enumeration type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unexpanded_parameter_pack, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{expression|base type|declaration type|data member type|bit-field size|static assertion|fixed underlying type|enumerator value|using declaration|friend declaration|qualifier|initializer|default argument|non-type template parameter type|exception type|partial specialization|__if_exists name|__if_not_exists name|lambda|block}0 contains%plural{0: an|:}1 unexpanded parameter pack%plural{0:|1: %2|2:s %2 and %3|:s %2, %3, ...}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unexpected_friend, CLASS_ERROR, (unsigned)diag::Severity::Error, "friends can only be classes or functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unexpected_interface, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected interface name %0: expected expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unexpected_namespace, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected namespace name %0: expected expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unexpected_typedef, CLASS_ERROR, (unsigned)diag::Severity::Error, "unexpected type name %0: expected expression", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_uninitialized_member_for_assign, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot define the implicit copy assignment operator for %0, because non-static %select{reference|const}1 member %2 cannot use copy assignment operator", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_uninitialized_member_in_ctor, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{constructor for %1|implicit default constructor for %1|cannot use constructor inherited from %1:}0 must explicitly initialize the %select{reference|const}2 member %3", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_union_as_base_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "unions cannot be base classes", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_union_member_of_reference_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "union member %0 has reference type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unknown_any_addrof, CLASS_ERROR, (unsigned)diag::Severity::Error, "the address of a declaration with unknown type can only be cast to a pointer type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unknown_any_addrof_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "address-of operator cannot be applied to a call to a function with unknown return type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unknown_any_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "function %0 with unknown type must be given a function type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unknown_any_var_function_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable %0 with unknown type cannot be given a function type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unknown_nested_typename_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "no type named %0 in %1; did you mean %select{|simply }2%3?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unknown_receiver_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown receiver %0; did you mean %1?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unknown_type_or_class_name_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown %select{type|class}1 name %0; did you mean %2?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unknown_typename, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown type name %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unknown_typename_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "unknown type name %0; did you mean %1?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unqualified_pointer_member_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "must explicitly qualify name of member function when taking its address", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unsupported_unknown_any_call, CLASS_ERROR, (unsigned)diag::Severity::Error, "call to unsupported expression with unknown type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unsupported_unknown_any_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 has unknown type, which is not supported for this kind of declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_unsupported_unknown_any_expr, CLASS_ERROR, (unsigned)diag::Severity::Error, "unsupported expression with unknown type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_upcast_to_inaccessible_base, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot cast %0 to its %select{private|protected}2 base class %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_use_continuation_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal redeclaration of property in class extension %0 (attribute must be 'readwrite', while its primary must be 'readonly')", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_use_continuation_class_redeclaration_readwrite, CLASS_ERROR, (unsigned)diag::Severity::Error, "illegal redeclaration of 'readwrite' property in class extension %0 (perhaps you intended this to be a 'readwrite' redeclaration of a 'readonly' public property?)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_use_of_default_argument_to_function_declared_later, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of default argument to function %0 that is declared later in class %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_use_with_wrong_tag, CLASS_ERROR, (unsigned)diag::Severity::Error, "use of %0 with tag type that does not match previous declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_can_not_refer_to_class_member, CLASS_ERROR, (unsigned)diag::Severity::Error, "using declaration cannot refer to class member", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_can_not_refer_to_namespace, CLASS_ERROR, (unsigned)diag::Severity::Error, "using declaration cannot refer to a namespace", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_can_not_refer_to_scoped_enum, CLASS_ERROR, (unsigned)diag::Severity::Error, "using declaration cannot refer to a scoped enumerator", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_conflict, CLASS_ERROR, (unsigned)diag::Severity::Error, "target of using declaration conflicts with declaration already in scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_conflict_reverse, CLASS_ERROR, (unsigned)diag::Severity::Error, "declaration conflicts with target of using declaration already in scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_constructor, CLASS_ERROR, (unsigned)diag::Severity::Error, "using declaration cannot refer to a constructor", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_constructor_not_in_direct_base, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is not a direct base of %1, cannot inherit constructors", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_destructor, CLASS_ERROR, (unsigned)diag::Severity::Error, "using declaration cannot refer to a destructor", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_friend, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot befriend target of using declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_nested_name_specifier_is_current_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "using declaration refers to its own class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_nested_name_specifier_is_not_base_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "using declaration refers into '%0', which is not a base class of %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_nested_name_specifier_is_not_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "using declaration in class refers into '%0', which is not a class", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_redeclaration, CLASS_ERROR, (unsigned)diag::Severity::Error, "redeclaration of using declaration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_redeclaration_expansion, CLASS_ERROR, (unsigned)diag::Severity::Error, "using declaration pack expansion at block scope produces multiple values", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_decl_template_id, CLASS_ERROR, (unsigned)diag::Severity::Error, "using declaration cannot refer to a template specialization", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_dependent_value_is_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "dependent using declaration resolved to type without 'typename'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_directive_member_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "no namespace named %0 in %1; did you mean %select{|simply }2%3?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_directive_suggest, CLASS_ERROR, (unsigned)diag::Severity::Error, "no namespace named %0; did you mean %1?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_pack_expansion_empty, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{|member}0 using declaration %1 instantiates to an empty pack", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_requires_qualname, CLASS_ERROR, (unsigned)diag::Severity::Error, "using declaration requires a qualified name", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_using_typename_non_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "'typename' keyword used on a non-type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_uuidof_with_multiple_guids, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot call operator __uuidof on a type with multiple GUIDs", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_uuidof_without_guid, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot call operator __uuidof on a type with no GUID", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_va_arg_in_device, CLASS_ERROR, (unsigned)diag::Severity::Error, "CUDA device code does not support va_arg", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_va_start_captured_stmt, CLASS_ERROR, (unsigned)diag::Severity::Error, "'va_start' cannot be used in a captured statement", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_va_start_fixed_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "'va_start' used in function with fixed args", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_va_start_outside_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "'va_start' cannot be used outside a function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_va_start_used_in_wrong_abi_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "'va_start' used in %select{System V|Win64}0 ABI function", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_value_init_for_array_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "array types cannot be value-initialized", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_var_concept_not_initialized, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable concept declaration must be initialized", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_var_partial_spec_redeclared, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable template partial specialization %0 cannot be redefined", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_var_spec_no_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "no variable template matches%select{| partial}0 specialization", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_var_spec_no_template_but_method, CLASS_ERROR, (unsigned)diag::Severity::Error, "no variable template matches specialization; did you mean to use %0 as function template instead?", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_variable_concept_bool_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "declared type of variable concept must be 'bool'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_variable_instantiates_to_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{variable|static data member}0 instantiated with function type %1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_variable_object_no_init, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable-sized object may not be initialized", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_variably_modified_new_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "'new' cannot allocate object of variably modified type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_variably_modified_nontype_template_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-type template parameter of variably modified type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_variably_modified_template_arg, CLASS_ERROR, (unsigned)diag::Severity::Error, "variably modified type %0 cannot be used as a template argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_variably_modified_typeid, CLASS_ERROR, (unsigned)diag::Severity::Error, "'typeid' of variably modified type %0", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_variadic_device_fn, CLASS_ERROR, (unsigned)diag::Severity::Error, "CUDA device code does not support variadic functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_vec_builtin_incompatible_vector, CLASS_ERROR, (unsigned)diag::Severity::Error, "first two arguments to %0 must have the same type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_vec_builtin_non_vector, CLASS_ERROR, (unsigned)diag::Severity::Error, "first two arguments to %0 must be vectors", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_vecstep_non_scalar_vector_type, CLASS_ERROR, (unsigned)diag::Severity::Error, "'vec_step' requires built-in scalar or vector type, %0 invalid", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_vector_incorrect_num_initializers, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{too many|too few}0 elements in vector initialization (expected %1 elements, have %2)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_virtual_in_union, CLASS_ERROR, (unsigned)diag::Severity::Error, "unions cannot have virtual functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_virtual_member_function_template, CLASS_ERROR, (unsigned)diag::Severity::Error, "'virtual' cannot be specified on member function templates", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_virtual_non_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "'virtual' can only appear on non-static member functions", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_virtual_out_of_class, CLASS_ERROR, (unsigned)diag::Severity::Error, "'virtual' can only be specified inside the class definition", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_vla_decl_has_extern_linkage, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable length array declaration cannot have 'extern' linkage", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_vla_decl_has_static_storage, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable length array declaration cannot have 'static' storage duration", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_vla_decl_in_file_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable length array declaration not allowed at file scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_vla_in_sfinae, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable length array cannot be formed during template argument deduction", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_vla_unsupported, CLASS_ERROR, (unsigned)diag::Severity::Error, "variable length arrays are not supported for the current target", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_vm_decl_has_extern_linkage, CLASS_ERROR, (unsigned)diag::Severity::Error, "variably modified type declaration cannot have 'extern' linkage", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_vm_decl_in_file_scope, CLASS_ERROR, (unsigned)diag::Severity::Error, "variably modified type declaration not allowed at file scope", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_vm_func_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "function declaration cannot have variably modified type", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_void_only_param, CLASS_ERROR, (unsigned)diag::Severity::Error, "'void' must be the first and only parameter if specified", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_void_param_qualified, CLASS_ERROR, (unsigned)diag::Severity::Error, "'void' as parameter must not have type qualifiers", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_vsx_builtin_nonconstant_argument, CLASS_ERROR, (unsigned)diag::Severity::Error, "argument %0 to %1 must be a 2-bit unsigned literal (i.e. 0, 1, 2 or 3)", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_weak_property, CLASS_ERROR, (unsigned)diag::Severity::Error, "existing instance variable %1 for __weak property %0 must be __weak", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_wrong_sampler_addressspace, CLASS_ERROR, (unsigned)diag::Severity::Error, "sampler type cannot be used with the __local and __global address space qualifiers", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_x86_builtin_invalid_rounding, CLASS_ERROR, (unsigned)diag::Severity::Error, "invalid rounding argument", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(err_x86_builtin_invalid_scale, CLASS_ERROR, (unsigned)diag::Severity::Error, "scale argument must be 1, 2, 4, or 8", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(error_inoutput_conflict_with_clobber, CLASS_ERROR, (unsigned)diag::Severity::Error, "asm-specifier for input or output variable conflicts with asm clobber list", 0, SFINAE_SubstitutionFailure, false, true, 0) +DIAG(ext_aggregate_init_not_constant, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "initializer for aggregate is not a compile-time constant", 114, SFINAE_Suppress, false, false, 2) +DIAG(ext_anonymous_record_with_anonymous_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "anonymous types declared in an anonymous %select{struct|union}0 are an extension", 432, SFINAE_Suppress, false, false, 2) +DIAG(ext_anonymous_record_with_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "types declared in an anonymous %select{struct|union}0 are a Microsoft extension", 372, SFINAE_Suppress, false, false, 2) +DIAG(ext_anonymous_struct_union_qualified, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "anonymous %select{struct|union}0 cannot be '%1'", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_anonymous_union, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "anonymous unions are a C11 extension", 112, SFINAE_Suppress, false, false, 2) +DIAG(ext_array_init_copy, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "initialization of an array %diff{of type $ from a compound literal of type $|from a compound literal}0,1 is a GNU extension", 260, SFINAE_Suppress, false, false, 2) +DIAG(ext_array_init_parens, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "parenthesized initialization of a member array is a GNU extension", 255, SFINAE_Suppress, false, false, 2) +DIAG(ext_array_size_conversion, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "implicit conversion from array size expression of type %0 to %select{integral|enumeration}1 type %2 is a C++11 extension", 79, SFINAE_Suppress, false, false, 2) +DIAG(ext_auto_new_list_init, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C++ standards before C++17 do not allow new expression for type %0 to use list-initialization", 91, SFINAE_Suppress, false, false, 2) +DIAG(ext_auto_type_specifier, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'auto' type specifier is a C++11 extension", 79, SFINAE_Suppress, false, false, 2) +DIAG(ext_bad_cxx_cast_qualifiers_away_incoherent, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++ does not allow %select{const_cast|static_cast|reinterpret_cast|dynamic_cast|C-style cast|functional-style cast}0 from %1 to %2 because it casts away qualifiers, even though the source and destination types are unrelated", 120, SFINAE_SubstitutionFailure, false, false, 2) +DIAG(ext_c11_anonymous_struct, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "anonymous structs are a C11 extension", 112, SFINAE_Suppress, false, false, 2) +DIAG(ext_c99_array_usage, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%select{qualifier in |static |}0array size %select{||'[*] '}0is a C99 feature", 114, SFINAE_Suppress, false, false, 2) +DIAG(ext_c99_flexible_array_member, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array members are a C99 feature", 114, SFINAE_Suppress, false, false, 2) +DIAG(ext_cannot_use_trivial_abi, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'trivial_abi' cannot be applied to %0", 282, SFINAE_Suppress, false, false, 2) +DIAG(ext_cast_fn_obj, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "cast between pointer-to-function and pointer-to-object is an extension", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_cce_narrowing, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "%select{case value|enumerator value|non-type template argument|array size|constexpr if condition}0 %select{cannot be narrowed from type %2 to %3|evaluates to %2, which cannot be narrowed to type %3}1", 83, SFINAE_SubstitutionFailure, false, false, 2) +DIAG(ext_complex_component_init, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "complex initialization specifying real and imaginary components is an extension", 129, SFINAE_Suppress, false, false, 2) +DIAG(ext_constexpr_body_invalid_stmt, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of this statement in a constexpr %select{function|constructor}0 is a C++14 extension", 87, SFINAE_Suppress, false, false, 2) +DIAG(ext_constexpr_body_invalid_stmt_cxx2a, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of this statement in a constexpr %select{function|constructor}0 is a C++2a extension", 98, SFINAE_Suppress, false, false, 2) +DIAG(ext_constexpr_body_multiple_return, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "multiple return statements in constexpr function is a C++14 extension", 87, SFINAE_Suppress, false, false, 2) +DIAG(ext_constexpr_function_never_constant_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "constexpr %select{function|constructor}0 never produces a constant expression", 336, SFINAE_Suppress, false, false, 2) +DIAG(ext_constexpr_function_try_block_cxx2a, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "function try block in constexpr %select{function|constructor}0 is a C++2a extension", 98, SFINAE_Suppress, false, false, 2) +DIAG(ext_constexpr_local_var, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "variable declaration in a constexpr %select{function|constructor}0 is a C++14 extension", 87, SFINAE_Suppress, false, false, 2) +DIAG(ext_constexpr_type_definition, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "type definition in a constexpr %select{function|constructor}0 is a C++14 extension", 87, SFINAE_Suppress, false, false, 2) +DIAG(ext_cxx14_attr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of the %0 attribute is a C++14 extension", 87, SFINAE_Suppress, false, false, 2) +DIAG(ext_cxx17_attr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "use of the %0 attribute is a C++17 extension", 91, SFINAE_Suppress, false, false, 2) +DIAG(ext_decomp_decl, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "decomposition declarations are a C++17 extension", 91, SFINAE_Suppress, false, false, 2) +DIAG(ext_decomp_decl_cond, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++17 does not permit structured binding declaration in a condition", 58, SFINAE_Suppress, false, false, 2) +DIAG(ext_default_init_const, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "default initialization of an object of const type %0%select{| without a user-provided default constructor}1 is a Microsoft extension", 376, SFINAE_Suppress, false, false, 2) +DIAG(ext_delete_void_ptr_operand, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "cannot delete expression with pointer-to-'void' type %0", 161, SFINAE_Suppress, false, false, 2) +DIAG(ext_deprecated_string_literal_conversion, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++11 does not allow conversion from string literal to %0", 756, SFINAE_SubstitutionFailure, false, false, 2) +DIAG(ext_designated_init, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "designated initializers are a C99 feature", 114, SFINAE_Suppress, false, false, 2) +DIAG(ext_empty_struct_union, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "empty %select{struct|union}0 is a GNU extension", 264, SFINAE_Suppress, false, false, 2) +DIAG(ext_enum_friend, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "befriending enumeration type %0 is a C++11 extension", 79, SFINAE_Suppress, false, false, 2) +DIAG(ext_enum_too_large, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "enumeration values exceed range of largest integer", 211, SFINAE_Suppress, false, false, 2) +DIAG(ext_enum_value_not_int, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C restricts enumerator values to range of 'int' (%0 is too %select{small|large}1)", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_enumerator_increment_too_large, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incremented enumerator value %0 is not representable in the largest integer type", 211, SFINAE_Suppress, false, false, 2) +DIAG(ext_enumerator_too_large, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "enumerator value is not representable in the underlying type %0", 381, SFINAE_Suppress, false, false, 2) +DIAG(ext_equals_this_lambda_capture_cxx2a, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "explicit capture of 'this' with a capture default of '=' is a C++2a extension", 98, SFINAE_Suppress, false, false, 3) +DIAG(ext_equivalent_internal_linkage_decl_in_modules, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ambiguous use of internal linkage declaration %0 defined in multiple modules", 423, SFINAE_Suppress, false, false, 13) +DIAG(ext_excess_initializers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "excess elements in %select{array|vector|scalar|union|struct}0 initializer", 0, SFINAE_Suppress, false, false, 2) +DIAG(ext_excess_initializers_in_char_array_initializer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "excess elements in char array initializer", 0, SFINAE_Suppress, false, false, 2) +DIAG(ext_explicit_conversion_functions, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "explicit conversion functions are a C++11 extension", 79, SFINAE_Suppress, false, false, 2) +DIAG(ext_explicit_instantiation_duplicate, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "duplicate explicit instantiation of %0 ignored as a Microsoft extension", 395, SFINAE_Suppress, false, false, 2) +DIAG(ext_explicit_instantiation_without_qualified_id, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "qualifier in explicit instantiation of %q0 requires a template-id (a typedef is not permitted)", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_explicit_specialization_storage_class, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "explicit specialization cannot have a storage class", 0, SFINAE_Suppress, false, false, 2) +DIAG(ext_expr_not_ice, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "expression is not an %select{integer|integral}0 constant expression; folding it to a constant is a GNU extension", 267, SFINAE_Suppress, false, false, 2) +DIAG(ext_flexible_array_empty_aggregate_gnu, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array member %0 in otherwise empty %select{struct|interface|union|class|enum}1 is a GNU extension", 264, SFINAE_Suppress, false, false, 2) +DIAG(ext_flexible_array_empty_aggregate_ms, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array member %0 in otherwise empty %select{struct|interface|union|class|enum}1 is a Microsoft extension", 387, SFINAE_Suppress, false, false, 2) +DIAG(ext_flexible_array_in_array, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%0 may not be used as an array element due to flexible array member", 228, SFINAE_Suppress, false, false, 2) +DIAG(ext_flexible_array_in_struct, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%0 may not be nested in a struct due to flexible array member", 228, SFINAE_Suppress, false, false, 2) +DIAG(ext_flexible_array_init, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array initialization is a GNU extension", 265, SFINAE_Suppress, false, false, 2) +DIAG(ext_flexible_array_union_gnu, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array member %0 in a union is a GNU extension", 266, SFINAE_Suppress, false, false, 2) +DIAG(ext_flexible_array_union_ms, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "flexible array member %0 in a union is a Microsoft extension", 387, SFINAE_Suppress, false, false, 2) +DIAG(ext_for_range_begin_end_types_differ, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'begin' and 'end' returning different types (%0 and %1) is a C++17 extension", 91, SFINAE_Suppress, false, false, 2) +DIAG(ext_forward_ref_enum, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C forbids forward references to 'enum' types", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_forward_ref_enum_def, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "redeclaration of already-defined enum %0 is a GNU extension", 271, SFINAE_Suppress, false, false, 2) +DIAG(ext_found_via_dependent_bases_lookup, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of identifier %0 found via unqualified lookup into dependent bases of class templates is a Microsoft extension", 395, SFINAE_Suppress, false, false, 2) +DIAG(ext_freestanding_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "complex numbers are an extension in a freestanding C99 implementation", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_friend_tag_redecl_outside_namespace, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unqualified friend declaration referring to type outside of the nearest enclosing namespace is a Microsoft extension; add a nested name specifier", 397, SFINAE_Suppress, false, false, 2) +DIAG(ext_gnu_anonymous_struct, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "anonymous structs are a GNU extension", 254, SFINAE_Suppress, false, false, 2) +DIAG(ext_gnu_ptr_func_arith, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "arithmetic on%select{ a|}0 pointer%select{|s}0 to%select{ the|}2 function type%select{|s}2 %1%select{| and %3}2 is a GNU extension", 530, SFINAE_Suppress, false, false, 2) +DIAG(ext_gnu_subscript_void_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "subscript of a pointer to void is a GNU extension", 530, SFINAE_Suppress, false, false, 2) +DIAG(ext_gnu_void_ptr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "arithmetic on%select{ a|}0 pointer%select{|s}0 to void is a GNU extension", 530, SFINAE_Suppress, false, false, 2) +DIAG(ext_goto_into_protected_scope, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "jump from this goto statement to its label is a Microsoft extension", 388, SFINAE_Suppress, false, false, 2) +DIAG(ext_imaginary_constant, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "imaginary constants are a GNU extension", 268, SFINAE_Suppress, false, false, 2) +DIAG(ext_implicit_exception_spec_mismatch, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "function previously declared with an %select{explicit|implicit}0 exception specification redeclared with an %select{implicit|explicit}0 exception specification", 291, SFINAE_Suppress, false, false, 2) +DIAG(ext_implicit_function_decl, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "implicit declaration of function %0 is invalid in C99", 296, SFINAE_Suppress, false, false, 2) +DIAG(ext_implicit_lib_function_decl, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "implicitly declaring library function '%0' with type %1", 296, SFINAE_Suppress, false, false, 2) +DIAG(ext_in_class_initializer_float_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "in-class initializer for static data member of type %0 is a GNU extension", 273, SFINAE_Suppress, false, false, 2) +DIAG(ext_in_class_initializer_float_type_cxx11, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "in-class initializer for static data member of type %0 requires 'constexpr' specifier", 616, SFINAE_Suppress, false, false, 2) +DIAG(ext_in_class_initializer_non_constant, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension", 267, SFINAE_Suppress, false, false, 2) +DIAG(ext_incomplete_in_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{|pointer to |reference to }0incomplete type %1 is not allowed in exception specification", 382, SFINAE_Suppress, false, false, 2) +DIAG(ext_increment_bool, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "ISO C++17 does not allow incrementing expression of type bool", 321, SFINAE_Suppress, false, false, 2) +DIAG(ext_init_capture, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "initialized lambda captures are a C++14 extension", 87, SFINAE_Suppress, false, false, 3) +DIAG(ext_init_list_constant_narrowing, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "constant expression evaluates to %0 which cannot be narrowed to type %1", 83, SFINAE_SubstitutionFailure, false, false, 2) +DIAG(ext_init_list_type_narrowing, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "type %0 cannot be narrowed to %1 in initializer list", 83, SFINAE_SubstitutionFailure, false, false, 2) +DIAG(ext_init_list_variable_narrowing, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "non-constant-expression cannot be narrowed from type %0 to %1 in initializer list", 83, SFINAE_SubstitutionFailure, false, false, 2) +DIAG(ext_initializer_string_for_char_array_too_long, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "initializer-string for char array is too long", 0, SFINAE_Suppress, false, false, 2) +DIAG(ext_inline_variable, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "inline variables are a C++17 extension", 91, SFINAE_Suppress, false, false, 2) +DIAG(ext_integer_complement_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C does not support '~' for complex conjugation of %0", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_integer_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "complex integer types are a GNU extension", 259, SFINAE_Suppress, false, false, 2) +DIAG(ext_integer_increment_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C does not support '++'/'--' on complex integer type %0", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_internal_in_extern_inline, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "static %select{function|variable}0 %1 is used in an inline function with external linkage", 617, SFINAE_Suppress, false, false, 2) +DIAG(ext_internal_in_extern_inline_quiet, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "static %select{function|variable}0 %1 is used in an inline function with external linkage", 617, SFINAE_Suppress, false, false, 2) +DIAG(ext_invalid_sign_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "'%0' cannot be signed or unsigned", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_main_returns_nonint, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "return type of 'main' is not 'int'", 364, SFINAE_Suppress, false, false, 2) +DIAG(ext_main_used, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C++ does not allow 'main' to be used by a program", 363, SFINAE_Suppress, false, false, 2) +DIAG(ext_many_braces_around_scalar_init, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "too many braces around scalar initializer", 366, SFINAE_SubstitutionFailure, false, false, 2) +DIAG(ext_member_redeclared, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "class member cannot be redeclared", 560, SFINAE_Suppress, false, false, 2) +DIAG(ext_mismatched_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "exception specification in declaration does not match previous declaration", 382, SFINAE_Suppress, false, false, 2) +DIAG(ext_mismatched_exception_spec_explicit_instantiation, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "exception specification in explicit instantiation does not match instantiated one", 382, SFINAE_Suppress, false, false, 2) +DIAG(ext_missing_declspec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "declaration specifier missing, defaulting to 'int'", 0, SFINAE_Suppress, false, false, 2) +DIAG(ext_missing_exception_specification, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%0 is missing exception specification '%1'", 406, SFINAE_Suppress, false, false, 2) +DIAG(ext_missing_type_specifier, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "type specifier missing, defaults to 'int'", 297, SFINAE_Suppress, false, false, 2) +DIAG(ext_mixed_decls_code, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C90 forbids mixing declarations and code", 157, SFINAE_Suppress, false, false, 2) +DIAG(ext_module_import_in_extern_c, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "import of C++ module '%0' appears within extern \"C\" language linkage specification", 422, SFINAE_Suppress, false, false, 13) +DIAG(ext_module_import_not_at_top_level_noop, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "redundant #include of module '%0' appears within %1", 424, SFINAE_Suppress, false, false, 13) +DIAG(ext_ms_ambiguous_direct_base, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "accessing inaccessible direct base %0 of %1 is a Microsoft extension", 389, SFINAE_Suppress, false, false, 2) +DIAG(ext_ms_anonymous_record, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "anonymous %select{structs|unions}0 are a Microsoft extension", 372, SFINAE_Suppress, false, false, 2) +DIAG(ext_ms_cast_fn_obj, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "static_cast between pointer-to-function and pointer-to-object is a Microsoft extension", 373, SFINAE_Suppress, false, false, 2) +DIAG(ext_ms_delayed_template_argument, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "using the undeclared type %0 as a default template argument is a Microsoft extension", 395, SFINAE_Suppress, false, false, 2) +DIAG(ext_ms_deref_template_argument, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "non-type template argument containing a dereference operation is a Microsoft extension", 395, SFINAE_Suppress, false, false, 2) +DIAG(ext_ms_explicit_constructor_call, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "explicit constructor calls are a Microsoft extension", 384, SFINAE_Suppress, false, false, 2) +DIAG(ext_ms_forward_ref_enum, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "forward references to 'enum' types are a Microsoft extension", 380, SFINAE_Suppress, false, false, 2) +DIAG(ext_ms_impcast_fn_obj, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "implicit conversion between pointer-to-function and pointer-to-object is a Microsoft extension", 373, SFINAE_Suppress, false, false, 2) +DIAG(ext_ms_missing_exception_specification, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%0 is missing exception specification '%1'", 382, SFINAE_Suppress, false, false, 2) +DIAG(ext_ms_template_spec_redecl_out_of_scope, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{class template|class template partial|variable template|variable template partial|function template|member function|static data member|member class|member enumeration}0 specialization of %1 not in %select{a namespace enclosing %2|class %2 or an enclosing namespace}3 is a Microsoft extension", 395, SFINAE_Suppress, false, false, 2) +DIAG(ext_ms_template_type_arg_missing_typename, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "template argument for template type parameter must be a type; omitted 'typename' is a Microsoft extension", 395, SFINAE_Suppress, false, false, 2) +DIAG(ext_ms_using_declaration_inaccessible, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "using declaration referring to inaccessible member '%0' (which refers to accessible member '%1') is a Microsoft compatibility extension", 398, SFINAE_AccessControl, false, false, 2) +DIAG(ext_mutable_reference, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'mutable' on a reference type is a Microsoft extension", 391, SFINAE_Suppress, false, false, 2) +DIAG(ext_nested_name_member_ref_lookup_ambiguous, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "lookup of %0 in member access expression is ambiguous; using member of %1", 20, SFINAE_Suppress, false, false, 2) +DIAG(ext_nested_name_spec_is_enum, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of enumeration in a nested name specifier is a C++11 extension", 79, SFINAE_Suppress, false, false, 2) +DIAG(ext_nested_pointer_qualifier_mismatch, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 discards qualifiers in nested pointer types", 311, SFINAE_Suppress, false, false, 2) +DIAG(ext_new_paren_array_nonconst, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "when type is in parentheses, array cannot have dynamic size", 0, SFINAE_Suppress, false, false, 2) +DIAG(ext_no_declarators, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "declaration does not declare anything", 405, SFINAE_Suppress, false, false, 2) +DIAG(ext_no_named_members_in_struct_union, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%select{struct|union}0 without named members is a GNU extension", 264, SFINAE_Suppress, false, false, 2) +DIAG(ext_nonclass_type_friend, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "non-class friend type %0 is a C++11 extension", 79, SFINAE_Suppress, false, false, 2) +DIAG(ext_noreturn_main, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'main' is not allowed to be declared _Noreturn", 363, SFINAE_Suppress, false, false, 2) +DIAG(ext_offsetof_non_pod_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "offset of on non-POD type %0", 341, SFINAE_Suppress, false, false, 2) +DIAG(ext_offsetof_non_standardlayout_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "offset of on non-standard-layout type %0", 341, SFINAE_Suppress, false, false, 2) +DIAG(ext_omp_loop_not_canonical_init, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "initialization clause of OpenMP for loop is not in canonical form ('var = init' or 'T var = init')", 502, SFINAE_Suppress, false, false, 11) +DIAG(ext_opencl_ext_vector_type_rgba_selector, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "vector component name '%0' is an OpenCL version 2.2 feature", 500, SFINAE_Suppress, false, false, 2) +DIAG(ext_operator_new_delete_declared_inline, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "replacement function %0 cannot be declared 'inline'", 328, SFINAE_Suppress, false, false, 2) +DIAG(ext_out_of_line_declaration, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "out-of-line declaration of a member must be a definition", 506, SFINAE_Suppress, false, false, 2) +DIAG(ext_out_of_line_qualified_id_type_names_constructor, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++ specifies that qualified reference to %0 is a constructor name rather than a %select{template name|type}1 in this context, despite preceding %select{'typename'|'template'}2 keyword", 325, SFINAE_SubstitutionFailure, false, false, 2) +DIAG(ext_override_exception_spec, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "exception specification of overriding function is more lax than base version", 382, SFINAE_Suppress, false, false, 2) +DIAG(ext_param_default_argument_redefinition, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "redefinition of default argument", 378, SFINAE_Suppress, false, false, 2) +DIAG(ext_param_not_declared, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "parameter %0 was not declared, defaulting to type 'int'", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_param_promoted_not_compatible_with_prototype, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%diff{promoted type $ of K&R function parameter is not compatible with the parameter type $|promoted type of K&R function parameter is not compatible with parameter type}0,1 declared in a previous prototype", 351, SFINAE_Suppress, false, false, 2) +DIAG(ext_partial_spec_not_more_specialized_than_primary, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "%select{class|variable}0 template partial specialization is not more specialized than the primary template", 343, SFINAE_Suppress, false, false, 2) +DIAG(ext_partial_specs_not_deducible, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "%select{class|variable}0 template partial specialization contains %select{a template parameter|template parameters}1 that cannot be deduced; this partial specialization will never be used", 717, SFINAE_Suppress, false, false, 2) +DIAG(ext_plain_complex, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "plain '_Complex' requires a type specifier; assuming '_Complex double'", 0, SFINAE_Suppress, false, false, 2) +DIAG(ext_pointer_to_const_ref_member_on_rvalue, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "invoking a pointer to a 'const &' member function on an rvalue is a C++2a extension", 98, SFINAE_SubstitutionFailure, false, false, 2) +DIAG(ext_predef_outside_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "predefined identifier is only valid inside function", 543, SFINAE_Suppress, false, false, 2) +DIAG(ext_pseudo_dtor_on_void, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pseudo-destructors on type void are a Microsoft extension", 399, SFINAE_Suppress, false, false, 2) +DIAG(ext_pure_function_definition, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "function definition with pure-specifier is a Microsoft extension", 392, SFINAE_Suppress, false, false, 2) +DIAG(ext_redefinition_of_typedef, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "redefinition of typedef %0 is a C11 feature", 672, SFINAE_Suppress, false, false, 2) +DIAG(ext_register_storage_class, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "ISO C++17 does not allow 'register' storage class specifier", 564, SFINAE_Suppress, false, false, 2) +DIAG(ext_retained_language_linkage, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "friend function %0 retaining previous language linkage is an extension", 571, SFINAE_Suppress, false, false, 2) +DIAG(ext_return_has_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "%select{void function|void method|constructor|destructor}1 %0 should not return a value", 575, SFINAE_Suppress, false, false, 2) +DIAG(ext_return_has_void_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "void %select{function|method|block}1 %0 should not return void expression", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_return_missing_expr, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "non-void %select{function|method}1 %0 should return a value", 575, SFINAE_Suppress, false, false, 2) +DIAG(ext_rvalue_to_reference_access_ctor, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C++98 requires an accessible copy constructor for class %2 when binding a reference to a temporary; was %select{private|protected}0", 57, SFINAE_AccessControl, false, false, 2) +DIAG(ext_rvalue_to_reference_temp_copy_no_viable, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "no viable constructor %select{copying variable|copying parameter|returning object|initializing statement expression result|throwing object|copying member subobject|copying array element|allocating object|copying temporary|initializing base subobject|initializing vector element|capturing value}0 of type %1; C++98 requires a copy constructor when binding a reference to a temporary", 57, SFINAE_Suppress, false, false, 2) +DIAG(ext_sizeof_alignof_function_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align|__alignof}0' to a function type", 530, SFINAE_Suppress, false, false, 2) +DIAG(ext_sizeof_alignof_void_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align|__alignof}0' to a void type", 530, SFINAE_Suppress, false, false, 2) +DIAG(ext_standalone_specifier, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'%0' is not permitted on a declaration of a type", 405, SFINAE_Suppress, false, false, 2) +DIAG(ext_star_this_lambda_capture_cxx17, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "capture of '*this' by copy is a C++17 extension", 91, SFINAE_Suppress, false, false, 3) +DIAG(ext_static_data_member_in_union, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "static data member %0 in union is a C++11 extension", 79, SFINAE_Suppress, false, false, 2) +DIAG(ext_static_non_static, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "redeclaring non-static %0 as static is a Microsoft extension", 393, SFINAE_Suppress, false, false, 2) +DIAG(ext_static_out_of_line, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'static' can only be specified inside the class definition", 395, SFINAE_Suppress, false, false, 2) +DIAG(ext_string_literal_operator_template, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "string literal operator templates are a GNU extension", 274, SFINAE_Suppress, false, false, 2) +DIAG(ext_subscript_non_lvalue, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C90 does not allow subscripting non-lvalue array", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_template_arg_extra_parens, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "address non-type template argument cannot be surrounded by parentheses", 0, SFINAE_Suppress, false, false, 2) +DIAG(ext_template_arg_local_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "template argument uses local type %0", 357, SFINAE_Suppress, false, false, 2) +DIAG(ext_template_arg_object_internal, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "non-type template argument referring to %select{function|object}0 %1 with internal linkage is a C++11 extension", 79, SFINAE_Suppress, false, false, 2) +DIAG(ext_template_arg_unnamed_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "template argument uses unnamed type", 699, SFINAE_Suppress, false, false, 2) +DIAG(ext_template_outside_of_template, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'template' keyword outside of a template", 79, SFINAE_Suppress, false, false, 2) +DIAG(ext_template_parameter_default_in_function_template, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "default template arguments for a function template are a C++11 extension", 79, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_addrof_temporary, CLASS_EXTENSION, (unsigned)diag::Severity::Error, "taking the address of a temporary object of type %0", 13, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_addrof_void, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C forbids taking the address of an expression of type 'void'", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_base_super, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "method parameter type %diff{$ does not match super class method parameter type $|does not match super class method parameter type}0,1", 641, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_cast_nonscalar, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C99 forbids casting nonscalar type %0 to the same type", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_cast_to_union, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "cast to union type is a GNU extension", 275, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_comparison_of_distinct_pointers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "comparison of distinct pointer types%diff{ ($ and $)|}0,1", 128, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_comparison_of_fptr_to_void, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "equality comparison between function pointer and void pointer (%0 and %1)", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_comparison_of_pointer_integer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "comparison between pointer and integer (%0 and %1)", 532, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_cond_incompatible_operands, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible operand types (%0 and %1)", 0, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_cond_incompatible_pointers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pointer type mismatch%diff{ ($ and $)|}0,1", 535, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_cond_one_void, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "C99 forbids conditional expressions with only one void side", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_cond_pointer_integer_mismatch, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "pointer/integer type mismatch in conditional expression%diff{ ($ and $)|}0,1", 130, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_convert_discards_qualifiers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 discards qualifiers", 311, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_convert_incompatible_function_pointer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible function pointer types %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3", 307, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_convert_incompatible_pointer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible pointer types %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3", 310, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_convert_incompatible_pointer_sign, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "%select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 converts between pointers to integer types with different sign", 533, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_convert_int_pointer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible integer to pointer conversion %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3", 330, SFINAE_SubstitutionFailure, false, false, 24) +DIAG(ext_typecheck_convert_pointer_int, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "incompatible pointer to integer conversion %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2%select{|; dereference with *|; take the address with &|; remove *|; remove &}3", 330, SFINAE_Suppress, false, false, 24) +DIAG(ext_typecheck_convert_pointer_void_func, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "%select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 converts between void pointer and function pointer", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_decl_incomplete_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "tentative definition of variable with internal linkage has incomplete non-array type %0", 660, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_indirection_through_void_pointer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ISO C++ does not allow indirection on operand of type %0", 752, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_ordered_comparison_of_function_pointers, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ordered comparison of function pointers (%0 and %1)", 505, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_ordered_comparison_of_pointer_and_zero, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ordered comparison between pointer and zero (%0 and %1) is an extension", 527, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_ordered_comparison_of_pointer_integer, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "ordered comparison between pointer and integer (%0 and %1)", 0, SFINAE_Suppress, false, false, 2) +DIAG(ext_typecheck_zero_array_size, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "zero size arrays are an extension", 759, SFINAE_Suppress, false, false, 2) +DIAG(ext_typedef_without_a_name, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "typedef requires a name", 405, SFINAE_Suppress, false, false, 2) +DIAG(ext_typename_missing, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "missing 'typename' prior to dependent type name '%0%1'", 673, SFINAE_Suppress, false, false, 2) +DIAG(ext_typename_outside_of_template, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'typename' occurs outside of a template", 79, SFINAE_Suppress, false, false, 2) +DIAG(ext_undeclared_unqual_id_with_dependent_base, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of undeclared identifier %0; unqualified lookup into dependent bases of class template %1 is a Microsoft extension", 395, SFINAE_Suppress, false, false, 2) +DIAG(ext_undefined_internal_type, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "ISO C++ requires a definition in this translation unit for %select{function|variable}0 %q1 because its type does not have linkage", 682, SFINAE_Suppress, false, false, 2) +DIAG(ext_unelaborated_friend_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "unelaborated friend declaration is a C++11 extension; specify '%select{struct|interface|union|class|enum}0' to befriend %1", 79, SFINAE_Suppress, false, false, 2) +DIAG(ext_union_member_of_reference_type, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "union member %0 has reference type %1, which is a Microsoft extension", 396, SFINAE_Suppress, false, false, 2) +DIAG(ext_use_out_of_scope_declaration, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "use of out-of-scope declaration of %0%select{| whose type is not compatible with that of an implicit declaration}1", 507, SFINAE_Suppress, false, false, 2) +DIAG(ext_using_undefined_std, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "using directive refers to implicitly-defined namespace 'std'", 0, SFINAE_Suppress, false, false, 2) +DIAG(ext_variable_sized_type_in_struct, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "field %0 with variable sized type %1 not at the end of a struct or class is a GNU extension", 276, SFINAE_Suppress, false, false, 2) +DIAG(ext_variable_template, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "variable templates are a C++14 extension", 87, SFINAE_Suppress, false, false, 2) +DIAG(ext_variadic_main, CLASS_EXTENSION, (unsigned)diag::Severity::Warning, "'main' is not allowed to be declared variadic", 363, SFINAE_Suppress, false, false, 2) +DIAG(ext_vla, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "variable length arrays are a C99 feature", 751, SFINAE_Suppress, false, false, 2) +DIAG(ext_vla_folded_to_constant, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "variable length array folded to constant array as an extension", 267, SFINAE_Suppress, false, false, 2) +DIAG(note_access_constrained_by_path, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "constrained by %select{|implicitly }1%select{private|protected}0 inheritance here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_access_natural, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{|implicitly }1declared %select{private|protected}0 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_access_protected_restricted_ctordtor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "protected %select{constructor|destructor}0 can only be used to %select{construct|destroy}0 a base class subobject", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_access_protected_restricted_noobject, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "must name member using the type of the current context %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_access_protected_restricted_object, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "can only access this member on an object of type %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_add_std_move, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "call 'std::move' explicitly to avoid copying", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_add_std_move_in_cxx11, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "call 'std::move' explicitly to avoid copying on older compilers", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_add_synthesize_directive, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add a '@synthesize' directive", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_additional_parens_for_variable_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add a pair of parentheses to declare a variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_addrof_ovl_candidate_disabled_by_enable_if_attr, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate function made ineligible by enable_if", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_alignas_on_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declared with %0 attribute here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_allocated_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "allocated with 'new%select{[]|}0' here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ambig_member_ref_object_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "lookup in the object type %0 refers here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ambig_member_ref_scope, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "lookup from the current scope refers here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ambiguous_candidate, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate found by name lookup is %q0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ambiguous_inherited_constructor_using, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "inherited from base class %0 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ambiguous_member_found, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "member found by ambiguous name lookup", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ambiguous_type_conversion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "because of ambiguity in conversion %diff{of $ to $|between types}0,1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_arc_bridge, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use __bridge to convert directly (no change in ownership)", 0, SFINAE_Suppress, false, false, 7) +DIAG(note_arc_bridge_retained, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use %select{__bridge_retained|CFBridgingRetain call}1 to make an ARC object available as a +1 %0", 0, SFINAE_Suppress, false, false, 7) +DIAG(note_arc_bridge_transfer, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use %select{__bridge_transfer|CFBridgingRelease call}1 to transfer ownership of a +1 %0 into ARC", 0, SFINAE_Suppress, false, false, 7) +DIAG(note_arc_cstyle_bridge, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use __bridge with C-style cast to convert directly (no change in ownership)", 0, SFINAE_Suppress, false, false, 7) +DIAG(note_arc_cstyle_bridge_retained, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use __bridge_retained with C-style cast to make an ARC object available as a +1 %0", 0, SFINAE_Suppress, false, false, 7) +DIAG(note_arc_cstyle_bridge_transfer, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use __bridge_transfer with C-style cast to transfer ownership of a +1 %0 into ARC", 0, SFINAE_Suppress, false, false, 7) +DIAG(note_arc_field_with_ownership, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "field has non-trivial ownership qualification", 0, SFINAE_Suppress, false, false, 10) +DIAG(note_arc_forbidden_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declaration uses type that is ill-formed in ARC", 0, SFINAE_Suppress, false, false, 10) +DIAG(note_arc_gained_method_convention, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declaration in interface is not in the '%select{alloc|copy|init|new}0' family because %select{its result type is not an object pointer|its result type is unrelated to its receiver type}1", 0, SFINAE_Suppress, false, false, 5) +DIAG(note_arc_init_returns_unrelated, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "init method must return a type related to its receiver type", 0, SFINAE_Suppress, false, false, 10) +DIAG(note_arc_lost_method_convention, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declaration in interface", 0, SFINAE_Suppress, false, false, 5) +DIAG(note_arc_retain_cycle_owner, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "block will be retained by %select{the captured object|an object strongly retained by the captured object}0", 0, SFINAE_Suppress, false, false, 26) +DIAG(note_arc_weak_also_accessed_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "also accessed here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_arc_weak_disabled, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declaration uses __weak, but ARC is disabled", 0, SFINAE_Suppress, false, false, 10) +DIAG(note_arc_weak_no_runtime, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declaration uses __weak, which the current deployment target does not support", 0, SFINAE_Suppress, false, false, 10) +DIAG(note_array_index_out_of_bounds, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "array %0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_array_init_plain_string_into_char8_t, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add 'u8' prefix to form a 'char8_t' string literal", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_array_size_conversion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "conversion to %select{integral|enumeration}0 type %1 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_asm_input_duplicate_first, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "constraint '%0' is already present here", 0, SFINAE_Suppress, false, false, 12) +DIAG(note_asm_missing_constraint_modifier, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use constraint modifier \"%0\"", 0, SFINAE_Suppress, false, false, 12) +DIAG(note_assign_lhs_incomplete, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "type %0 is incomplete", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_atomic_property_fixup_suggest, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "setter and getter must both be synthesized, or both be user defined,or the property must be nonatomic", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_attribute, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "attribute is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_attribute_overloadable_prev_overload, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous %select{unmarked |}0overload of function is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_auto_readonly_iboutlet_fixup_suggest, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "property should be changed to be readwrite", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_availability_specified_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 has been explicitly marked %select{unavailable|deleted|deprecated}1 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_await_ready_no_bool_conversion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "return type of 'await_ready' is required to be contextually convertible to 'bool'", 0, SFINAE_Suppress, false, false, 14) +DIAG(note_bad_memaccess_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "explicitly cast the pointer to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_base_class_specified_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "base class %0 specified here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_bitfield_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "bit-field is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_block_var_fixit_add_initialization, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean to use __block %0?", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_called_by, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "called by %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_callee_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_callee_static_array, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "callee declares array parameter as static here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_carries_dependency_missing_first_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declaration missing '[[carries_dependency]]' attribute is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_cast_to_void, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "cast expression to void to silence warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_cat_conform_to_noescape_prot, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{category|class extension}0 conforms to protocol %1 which defines method %2", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_change_bitfield_sign, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "consider making the bitfield type %select{unsigned|signed}0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_change_calling_conv_fixit, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "consider defining %0 with the '%1' calling convention", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_class_declared, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "class is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_cocoa_naming_declare_family, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "explicitly declare getter %objcinstance0 with '%1' to return an 'unowned' object", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_collapse_loop_count, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "parameter of the 'collapse' clause", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_compat_assoc, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "compatible type %0 specified here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_condition_assign_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "place parentheses around the assignment to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_condition_assign_to_comparison, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use '==' to turn this assignment into an equality comparison", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_condition_or_assign_to_comparison, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use '!=' to turn this compound assignment into an inequality comparison", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_conflicting_attribute, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "conflicting attribute is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_conflicting_try_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "conflicting %0 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_constexpr_body_previous_return, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous return statement is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_constexpr_ctor_missing_init, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "member not initialized by constructor", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_constexpr_virtual_base_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "virtual base class declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_conv_function_declared_at, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "type conversion function declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_convert_inline_to_static, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use 'static' to give inline function %0 internal linkage", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_coroutine_promise_call_implicitly_required, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "call to %0 implicitly required by coroutine function here", 0, SFINAE_Suppress, false, false, 14) +DIAG(note_coroutine_promise_implicit_await_transform_required_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "call to 'await_transform' implicitly required by 'co_await' here", 0, SFINAE_Suppress, false, false, 14) +DIAG(note_coroutine_promise_suspend_implicitly_required, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "call to '%select{initial_suspend|final_suspend}0' implicitly required by the %select{initial suspend point|final suspend point}0", 0, SFINAE_Suppress, false, false, 14) +DIAG(note_cuda_conflicting_device_function_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "conflicting __device__ function declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_cuda_ovl_candidate_target_mismatch, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: target attributes do not match", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_cxx2a_compat_utf8_string_remove_u8, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "remove 'u8' prefix to avoid a change of behavior; Clang encodes unprefixed narrow string literals as UTF-8", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_decl_unguarded_availability_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "annotate %select{%1|anonymous %1}0 with an availability attribute to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_declaration_not_a_prototype, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "this declaration is not a prototype; add 'void' to make it a prototype for a zero-parameter function", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_declare_parameter_strong, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declare the parameter __strong or capture a __block __strong variable to keep values alive across autorelease pools", 0, SFINAE_Suppress, false, false, 5) +DIAG(note_declared_coroutine_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "function is a coroutine due to use of '%0' here", 0, SFINAE_Suppress, false, false, 14) +DIAG(note_declared_nonnull, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declared %select{'returns_nonnull'|'nonnull'}0 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_declared_required_constant_init_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "required by 'require_constant_initialization' attribute here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_deduced_template_arg_substitution_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "during template argument deduction for %select{class|variable}0 template %select{partial specialization |}1%2 %3", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_deduction_guide_access, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "deduction guide declared %0 by intervening access specifier", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_deduction_guide_template_access, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "member template declared %0 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_default_arg_instantiation_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in instantiation of default argument for '%0' required here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_default_argument_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "default argument declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_default_function_arg_instantiation_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in instantiation of default function argument expression for '%0' required here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_defined_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 defined here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_delete_conversion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "conversion to pointer type %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_delete_non_virtual, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "qualify call to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_deleted_assign_field, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{copy|move}0 assignment operator of %1 is implicitly deleted because field %2 is of %select{reference|const-qualified}4 type %3", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_deleted_copy_ctor_rvalue_reference, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "copy constructor of %0 is implicitly deleted because field %1 is of rvalue reference type %2", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_deleted_copy_user_declared_move, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "copy %select{constructor|assignment operator}0 is implicitly deleted because %1 has a user-declared move %select{constructor|assignment operator}2", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_deleted_default_ctor_all_const, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{default constructor of|constructor inherited by}0 %1 is implicitly deleted because all %select{data members|data members of an anonymous union member}2 are const-qualified", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_deleted_default_ctor_uninit_field, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{default constructor of|constructor inherited by}0 %1 is implicitly deleted because field %2 of %select{reference|const-qualified}4 type %3 would not be initialized", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_deleted_dtor_no_operator_delete, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "virtual destructor requires an unambiguous, accessible 'operator delete'", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_deleted_special_member_class_subobject, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{default constructor of|copy constructor of|move constructor of|copy assignment operator of|move assignment operator of|destructor of|constructor inherited by}0 %1 is implicitly deleted because %select{base class %3|%select{||||variant }4field %3}2 %select{has %select{no|a deleted|multiple|an inaccessible|a non-trivial}4 %select{%select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor|%select{default|corresponding|default|default|default}4 constructor}0|destructor}5%select{||s||}4|is an ObjC pointer}6", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_deleted_type_mismatch, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "function is implicitly deleted because its declared type does not match the type of an implicit %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_dependent_function_template_spec_discard_reason, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate ignored: %select{not a function template|not a member of the enclosing namespace; did you mean to explicitly qualify the specialization?}0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_dependent_non_type_default_arg_in_partial_spec, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "template parameter is used in default argument declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_dependent_var_use, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "must qualify identifier to find this declaration in dependent base class", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_deprecated_this_capture, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add an explicit capture of 'this' to capture '*this' by reference", 0, SFINAE_Suppress, false, false, 3) +DIAG(note_destructor_type_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "type %0 is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_due_to_dllexported_class, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "due to %0 being dllexported%select{|; try compiling in C++11 mode}1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_duplicate_element, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "element %0 also has value %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_empty_body_on_separate_line, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "put the semicolon on a separate line to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_empty_parens_default_ctor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "remove parentheses to declare a variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_empty_parens_function_call, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "change this ',' to a ';' to call %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_empty_parens_zero_initialize, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "replace parentheses with an initializer to declare a variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_enters_block_captures_cxx_obj, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump enters lifetime of block which captures a destructible C++ object", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_enters_block_captures_non_trivial_c_struct, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump enters lifetime of block which captures a C struct that is non-trivial to destroy", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_enters_block_captures_strong, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump enters lifetime of block which strongly captures a variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_enters_block_captures_weak, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump enters lifetime of block which weakly captures a variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_entity_declared_at, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_enum_specialized_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "enum %0 was explicitly specialized here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_equality_comparison_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "remove extraneous parentheses around the comparison to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_equality_comparison_to_assign, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use '=' to turn this equality comparison into an assignment", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_equivalent_internal_linkage_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declared here%select{ in module '%1'|}0", 0, SFINAE_Suppress, false, false, 13) +DIAG(note_evaluate_comparison_first, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "place parentheses around comparison expression to evaluate it first", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_evaluating_exception_spec_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in evaluation of exception specification for %q0 needed here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits___block, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits scope of __block variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_block_captures_cxx_obj, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits lifetime of block which captures a destructible C++ object", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_block_captures_non_trivial_c_struct, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits lifetime of block which captures a C struct that is non-trivial to destroy", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_block_captures_strong, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits lifetime of block which strongly captures a variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_block_captures_weak, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits lifetime of block which weakly captures a variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_cleanup, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits scope of variable with __attribute__((cleanup))", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_cxx_catch, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits catch block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_cxx_try, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits try block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_dtor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits scope of variable with non-trivial destructor", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_objc_autoreleasepool, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits autoreleasepool block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_objc_catch, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits @catch block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_objc_finally, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits @finally block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_objc_strong, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits scope of __strong variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_objc_synchronized, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits @synchronized block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_objc_try, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits @try block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_objc_weak, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits scope of __weak variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_seh_except, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits __except block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_seh_finally, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits __finally block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_seh_try, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits __try block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_exits_temporary_dtor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump exits scope of lifetime-extended temporary with non-trivial destructor", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_explicit_ctor_deduction_guide_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "explicit %select{constructor|deduction guide}0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_explicit_instantiation_candidate, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "explicit instantiation candidate function %q0 template here %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_explicit_instantiation_definition_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "explicit instantiation definition is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_explicit_instantiation_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "explicit instantiation refers here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_explicit_specialization_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "explicit specialization declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_explicit_template_arg_substitution_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "while substituting explicitly-specified template arguments into function template %0 %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_explicit_template_spec_does_not_need_header, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'template<>' header not required for explicitly-specialized class %0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_extern_c_begins_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "extern \"C\" language linkage specification begins here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_extern_c_global_conflict, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declared %select{in global scope|with C language linkage}0 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_fallthrough_insert_semi_fixit, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you forget ';'?", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_field_designator_found, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "field designator refers here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_final_overrider, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "final overrider of %q0 in %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_flexible_array_member, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "initialized flexible array member %0 is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_for_range_begin_end, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "selected '%select{begin|end}0' %select{function|template }1%2 with iterator type %3", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_for_range_invalid_iterator, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in implicit call to 'operator%select{!=|*|++}0' for iterator of type %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_for_range_member_begin_end_ignored, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "member is not a candidate because range type %0 has no '%select{end|begin}1' member", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_format_fix_specifier, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean to use '%0'?", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_format_security_fixit, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "treat the string as an argument to avoid this", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_format_string_defined, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "format string is defined here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_forward_class, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "forward declaration of class here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_forward_template_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "forward declaration of template entity is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_found_mutex_near_match, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "found near match '%0'", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_from_diagnose_if, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "from 'diagnose_if' attribute on %0:", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_function_style_cast_add_parentheses, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add enclosing parentheses to perform a function-style cast", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_function_suggestion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean %0?", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_function_template_deduction_instantiation_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "while substituting deduced template arguments into function template %0 %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_function_template_spec_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in instantiation of function template specialization %q0 requested here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_function_template_spec_matched, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "function template %q0 matches specialization %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_function_to_function_call, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "suffix with parentheses to turn this into a function call", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_function_warning_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "prefix with the address-of operator to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_getter_unavailable, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "or because setter is declared here, but no getter method %0 is found", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_goto_ms_asm_label, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "inline assembly label %0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_guarded_by_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "Guarded_by declared here.", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_hidden_overloaded_virtual_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "hidden overloaded virtual function %q0 declared here%select{|: different classes%diff{ ($ vs $)|}2,3|: different number of parameters (%2 vs %3)|: type mismatch at %ordinal2 parameter%diff{ ($ vs $)|}3,4|: different return type%diff{ ($ vs $)|}2,3|: different qualifiers (%2 vs %3)|: different exception specifications}1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_hidden_tag, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "type declaration hidden", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_hiding_object, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declaration hides type", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ice_conversion_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "conversion to %select{integral|enumeration}0 type %1 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_illegal_field_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "field of illegal %select{type|pointer type}0 %1 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_implementation_declared, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "class implementation is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_implemented_by_class, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "when implemented by class %0", 0, SFINAE_Suppress, false, false, 9) +DIAG(note_implicit_delete_this_in_destructor_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "while checking implicit 'delete this' for virtual destructor", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_implicit_member_target_infer_collision, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "implicit %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 inferred target collision: call to both %select{__device__|__global__|__host__|__host__ __device__}1 and %select{__device__|__global__|__host__|__host__ __device__}2 members", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_implicit_param_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 is an implicit parameter", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_implicitly_deleted, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "explicitly defaulted function was implicitly deleted here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_in_binding_decl_init, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in implicit initialization of binding declaration %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_in_class_initializer_float_type_cxx11, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add 'constexpr'", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_in_class_initializer_not_yet_parsed, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "default member initializer declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_in_declaration_of_implicit_special_member, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "while declaring the implicit %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}1 for %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_in_for_range, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "when looking up '%select{begin|end}0' function for range expression of type %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_in_omitted_aggregate_initializer, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in implicit initialization of %select{array element %1 with omitted initializer|field %1 with omitted initializer|trailing array elements in runtime-sized array new}0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_in_reference_temporary_list_initializer, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in initialization of temporary of type %0 created to list-initialize this reference", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_include_header_or_declare, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "include the header <%0> or explicitly provide a declaration for '%1'", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_incomplete_class_and_qualified_id, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "conformance of forward class %0 to protocol %1 can not be confirmed", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_indirect_goto_target, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "possible target of indirect goto statement", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_indirection_through_null, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "consider using __builtin_trap() or qualifying pointer with 'volatile'", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_inequality_comparison_to_or_assign, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use '|=' to turn this inequality comparison into an or-assignment", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_init_list_narrowing_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "insert an explicit cast to silence this issue", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_init_with_default_member_initalizer, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "initializing field %0 with default member initializer", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_insert_break_fixit, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "insert 'break;' to avoid fall-through", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_insert_fallthrough_fixit, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "insert '%0;' to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_inst_declaration_hint, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add an explicit instantiation declaration to suppress this warning if %q0 is explicitly instantiated in another translation unit", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_instantiation_contexts_suppressed, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "(skipping %0 context%s0 in backtrace; use -ftemplate-backtrace-limit=0 to see all)", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_instantiation_required_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{implicit|explicit}0 instantiation first required here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_it_delegates_to, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "it delegates to", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ivar_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "instance variable is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_lambda_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "lambda expression begins here", 0, SFINAE_Suppress, false, false, 3) +DIAG(note_lambda_to_block_conv, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "implicit capture of lambda object due to conversion to block pointer here", 0, SFINAE_Suppress, false, false, 3) +DIAG(note_lifetime_extending_member_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{%select{reference|'std::initializer_list'}0 member|member with %select{reference|'std::initializer_list'}0 subobject}1 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_local_decl_close_match, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "local declaration nearly matches", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_local_decl_close_param_match, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "type of %ordinal0 parameter of local declaration does not match definition%diff{ ($ vs $)|}1,2", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_local_var_initializer, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{via initialization of|binding reference}0 variable %select{%2 |}1here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_lock_exclusive_and_shared, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "the other acquisition of %0 '%1' is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_locked_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 acquired here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_logical_instead_of_bitwise_change_operator, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use '%0' for a bitwise operation", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_logical_instead_of_bitwise_remove_constant, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "remove constant to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_logical_not_fix, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add parentheses after the '!' to evaluate the %select{comparison|bitwise operator}0 first", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_logical_not_silence_with_parens, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add parentheses around left hand side expression to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_loop_iteration_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{decremented|incremented}0 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_main_change_return_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "change return type to 'int'", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_main_remove_noreturn, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "remove '_Noreturn'", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_member_declared_at, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "member is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_member_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "member %0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_member_def_close_const_match, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "member declaration does not match because it %select{is|is not}0 const qualified", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_member_def_close_match, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "member declaration nearly matches", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_member_def_close_param_match, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "type of %ordinal0 parameter of member declaration does not match definition%diff{ ($ vs $)|}1,2", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_member_first_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "member %0 first declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_member_reference_arrow_from_operator_arrow, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'->' applied to return value of the operator->() declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_member_synthesized_at, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in implicit %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 for %1 first required here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_memsize_comparison_cast_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "explicitly cast the argument to size_t to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_memsize_comparison_paren, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean to compare the result of %0 instead?", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_method_declared_at, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "method %0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_method_return_type_change, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "compiler has implicitly changed method %0 return type", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_method_sent_forward_class, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "method %0 is used for the forward class", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_module_import_not_at_top_level, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 begins here", 0, SFINAE_Suppress, false, false, 13) +DIAG(note_multiversioning_caused_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "function multiversioning caused by this declaration", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_namespace_defined_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "namespace %0 defined here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_neon_vector_initializer_non_portable, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "consider using vld1_%0%1() to initialize a vector from memory, or vcreate_%0%1() to initialize from an integer constant", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_neon_vector_initializer_non_portable_q, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "consider using vld1q_%0%1() to initialize a vector from memory, or vcombine_%0%1(vcreate_%0%1(), vcreate_%0%1()) to initialize from integer constants", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_next_field_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "next field declaration is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_next_ivar_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "next %select{instance variable declaration|synthesized instance variable}0 is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_non_deducible_parameter, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "non-deducible template parameter %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_non_instantiated_member_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "not-yet-instantiated member is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_non_literal_base_class, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 is not literal because it has base class %1 of non-literal type", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_non_literal_field, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 is not literal because it has data member %1 of %select{non-literal|volatile}3 type %2", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_non_literal_incomplete, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "incomplete type %0 is not a literal type", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_non_literal_lambda, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "lambda closure types are non-literal types before C++17", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_non_literal_no_constexpr_ctors, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 is not literal because it is not an aggregate and has no constexpr constructors other than copy or move constructors", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_non_literal_nontrivial_dtor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 is not literal because it has a non-trivial destructor", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_non_literal_user_provided_dtor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 is not literal because it has a user-provided destructor", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_non_literal_virtual_base, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{struct|interface|class}0 with virtual base %plural{1:class|:classes}1 is not a literal type", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_non_template_in_template_id_found, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "non-template declaration found by name lookup", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_non_usual_function_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "non-usual %0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nontemplate_decl_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "non-templated declaration is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nontrivial_default_arg, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "because it has a default argument", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nontrivial_field, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "field is non-trivial to %select{copy|default-initialize}0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nontrivial_has_virtual, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "because type %0 has a virtual %select{member function|base class}1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nontrivial_in_class_init, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "because field %0 has an initializer", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nontrivial_no_copy, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "because no %select{<<ERROR>>|constructor|constructor|assignment operator|assignment operator|<<ERROR>>}2 can be used to %select{<<ERROR>>|copy|move|copy|move|<<ERROR>>}2 %select{base class|field|an object}0 of type %3", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nontrivial_no_def_ctor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "because %select{base class of |field of |}0type %1 has no default constructor", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nontrivial_objc_ownership, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "because type %0 has a member with %select{no|no|__strong|__weak|__autoreleasing}1 ownership", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nontrivial_param_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "because its parameter is %diff{of type $, not $|of the wrong type}2,3", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nontrivial_subobject, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "because the function selected to %select{construct|copy|move|copy|move|destroy}2 %select{base class|field}0 of type %1 is not trivial", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nontrivial_user_provided, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "because %select{base class of |field of |}0type %1 has a user-provided %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}2", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nontrivial_variadic, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "because it is a variadic function", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nontrivial_virtual_dtor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "destructor for %0 is not trivial because it is virtual", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_noreturn_missing_first_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declaration missing '[[noreturn]]' attribute is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_not_found_by_two_phase_lookup, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 should be declared prior to the call site%select{| or in %2| or in an associated namespace of one of its arguments}1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_nullability_fix_it, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "insert '%select{_Nonnull|_Nullable|_Null_unspecified}0' if the %select{pointer|block pointer|member pointer|array parameter}1 %select{should never be null|may be null|should not declare nullability}0", 0, SFINAE_Suppress, false, false, 19) +DIAG(note_nullability_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 specified here", 0, SFINAE_Suppress, false, false, 19) +DIAG(note_nullability_type_specifier, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use nullability type specifier %0 to affect the innermost pointer type of %1", 0, SFINAE_Suppress, false, false, 19) +DIAG(note_objc_circular_container_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_objc_designated_init_marked_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "method marked as designated initializer of the class here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_objc_literal_comparison_isequal, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use 'isEqual:' instead", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_objc_literal_method_param, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{first|second|third}0 parameter has unexpected type %1 (should be %2)", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_objc_literal_method_return, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "method returns unexpected type %0 (should be an object type)", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_objc_needs_superclass, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add a super class to fix this problem", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_objc_type_param_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "type parameter %0 declared here", 0, SFINAE_Suppress, false, false, 20) +DIAG(note_objc_unsafe_perform_selector_method_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "method %0 that returns %1 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_omp_atomic_capture, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{expected assignment expression|expected compound statement|expected exactly two expression statements|expected in right hand side of the first expression}0", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_atomic_previous_clause, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'%0' clause used here", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_atomic_read_write, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{expected an expression statement|expected built-in assignment operator|expected expression of scalar type|expected lvalue expression}0", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_atomic_update, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{expected an expression statement|expected built-in binary or unary operator|expected unary decrement/increment operation|expected expression of scalar type|expected assignment expression|expected built-in binary operator|expected one of '+', '*', '-', '/', '&', '^', '%|', '<<', or '>>' built-in operations|expected in right hand side of expression}0", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_collapse_ordered_expr, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "as specified in %select{'collapse'|'ordered'|'collapse' and 'ordered'}0 clause%select{||s}0", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_conversion_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "conversion to %select{integral|enumeration}0 type %1 declared here", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_critical_hint_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{|previous }0'hint' clause with value '%1'", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_critical_no_hint, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{|previous }0directive with no 'hint' clause specified", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_explicit_dsa, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "defined as %0", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_implicit_dsa, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "implicitly determined as %0", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_invalid_length_on_this_ptr_mapping, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "expected length on mapping of 'this' array section expression to be '1'", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_invalid_lower_bound_on_this_ptr_mapping, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "expected lower bound on mapping of 'this' array section expression to be '0' or not specified", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_invalid_subscript_on_this_ptr_map, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "expected 'this' subscript expression on map clause to be 'this[0]'", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_loop_cond_requres_compatible_incr, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "loop step is expected to be %select{negative|positive}0 due to this condition", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_nested_statement_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{statement|directive}0 outside teams construct here", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_nested_teams_construct_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "nested teams construct here", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_nowait_clause_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'nowait' clause is here", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_ordered_param, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'ordered' clause with specified parameter", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_predetermined_dsa, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{static data member is predetermined as shared|variable with static storage duration is predetermined as shared|loop iteration variable is predetermined as private|loop iteration variable is predetermined as linear|loop iteration variable is predetermined as lastprivate|constant variable is predetermined as shared|global variable is predetermined as shared|non-shared variable in a task construct is predetermined as firstprivate|variable with automatic storage duration is predetermined as private}0%select{|; perhaps you forget to enclose 'omp %2' directive into a parallel or another task region?}1", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_previous_critical_region, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous 'critical' region starts here", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_previous_grainsize_num_tasks, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'%0' clause is specified here", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_previous_named_if_clause, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous clause with directive name modifier specified here", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_previous_reduction_identifier, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previously marked as task_reduction with different reduction operation", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_referenced, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previously referenced here", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_requires_previous_clause, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 clause previously used here", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_omp_task_predetermined_firstprivate_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "predetermined as a firstprivate in a task construct here", 0, SFINAE_Suppress, false, false, 11) +DIAG(note_opencl_typedef_access_qualifier, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previously declared '%0' here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_operator_arrow_depth, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use -foperator-arrow-depth=N to increase 'operator->' limit", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_operator_arrow_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'operator->' declared here produces an object of type %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_operator_arrows_suppressed, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "(skipping %0 'operator->'%s0 in backtrace)", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_overridden_marked_noescape, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "parameter of overridden method is annotated with __attribute__((noescape))", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_overridden_method, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "overridden method is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_overridden_virtual_function, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "overridden virtual function is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_builtin_binary_candidate, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "built-in candidate %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_builtin_unary_candidate, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "built-in candidate %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %3}1%select{| has different class%diff{ (expected $ but has $)|}5,6| has different number of parameters (expected %5 but has %6)| has type mismatch at %ordinal5 parameter%diff{ (expected $ but has $)|}6,7| has different return type%diff{ ($ expected but has $)|}5,6| has different qualifiers (expected %5 but found %6)| has different exception specification}4", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_arity, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: requires%select{ at least| at most|}3 %4 argument%s4, but %5 %plural{1:was|:were}5 provided", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_arity_one, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: %select{requires at least|allows at most single|requires single}3 argument %4, but %plural{0:no|:%5}5 arguments were provided", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_addrspace, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: address space mismatch in %select{%ordinal6|'this'}5 argument (%3), parameter type must be %4", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_arc_conv, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: cannot implicitly convert argument %diff{of type $ to $|type to parameter type}3,4 for %select{%ordinal6 argument|object argument}5 under ARC", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_base_to_derived_conv, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: cannot %select{convert from|convert from|bind}3 %select{base class pointer|superclass|base class object of type}3 %4 to %select{derived class pointer|subclass|derived class reference}3 %5 for %ordinal6 argument", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_conv, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: no known conversion %diff{from $ to $|from argument type to parameter type}3,4 for %select{%ordinal6 argument|object argument}5%select{|; dereference the argument with *|; take the address of the argument with &|; remove *|; remove &}7", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_conv_incomplete, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: cannot convert argument of incomplete type %diff{$ to $|to parameter type}3,4 for %select{%ordinal6 argument|object argument}5%select{|; dereference the argument with *|; take the address of the argument with &|; remove *|; remove &}7", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_cvr, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: %ordinal5 argument (%3) would lose %select{const|restrict|const and restrict|volatile|const and volatile|volatile and restrict|const, volatile, and restrict}4 qualifier%select{||s||s|s|s}4", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_cvr_this, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: 'this' argument has type %3, but method is not marked %select{const|restrict|const or restrict|volatile|const or volatile|volatile or restrict|const, volatile, or restrict}4", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_deduction, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: failed template argument deduction", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_gc, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: %select{%ordinal7|'this'}6 argument (%3) has %select{no|__weak|__strong}4 ownership, but parameter has %select{no|__weak|__strong}5 ownership", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_list_argument, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: cannot convert initializer list argument to %4", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_lvalue, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: expects an l-value for %select{%ordinal4 argument|object argument}3", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_overload, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: no overload of %4 matching %3 for %ordinal5 argument", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_ownership, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: %select{%ordinal7|'this'}6 argument (%3) has %select{no|__unsafe_unretained|__strong|__weak|__autoreleasing}4 ownership, but parameter has %select{no|__unsafe_unretained|__strong|__weak|__autoreleasing}5 ownership", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_target, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: call to %select{__device__|__global__|__host__|__host__ __device__|invalid}3 function from %select{__device__|__global__|__host__|__host__ __device__|invalid}4 function", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_bad_unaligned, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 not viable: %ordinal5 argument (%3) would lose __unaligned qualifier", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_deduced_mismatch, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: deduced type %diff{$ of %select{|element of }4%ordinal0 parameter does not match adjusted type $ of %select{|element of }4argument|of %select{|element of }4%ordinal0 parameter does not match adjusted type of %select{|element of }4argument}1,2%3", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_deleted, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{function|function|constructor|constructor (the implicit default constructor)|constructor (the implicit copy constructor)|constructor (the implicit move constructor)|function (the implicit copy assignment operator)|function (the implicit move assignment operator)|inherited constructor}0%select{| template| %2}1 has been %select{explicitly made unavailable|explicitly deleted|implicitly deleted}3", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_disabled_by_enable_if, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: disabled by %0%1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_disabled_by_extension, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate unavailable as it requires OpenCL extension '%0' to be enabled", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_disabled_by_function_cond_attr, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate disabled: %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_disabled_by_requirement, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: requirement '%0' was not satisfied%1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_explicit_arg_mismatch_named, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: invalid explicitly-specified argument for template parameter %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_explicit_arg_mismatch_unnamed, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: invalid explicitly-specified argument for %ordinal0 template parameter", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_has_pass_object_size_params, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate address cannot be taken because parameter %0 has pass_object_size attribute", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_illegal_constructor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{constructor|template}0 ignored: instantiation %select{takes|would take}0 its own class type by value", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_incomplete_deduction, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: couldn't infer template argument %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_incomplete_deduction_pack, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: deduced too few arguments for expanded pack %0; no argument for %ordinal1 expanded parameter in deduced argument pack %2", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_inconsistent_deduction, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: deduced conflicting %select{types|values|templates}0 for parameter %1%diff{ ($ vs. $)|}2,3", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_inconsistent_deduction_types, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: deduced values %diff{of conflicting types for parameter %0 (%1 of type $ vs. %3 of type $)|%1 and %3 of conflicting types for parameter %0}2,4", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_inherited_constructor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "constructor from base class %0 inherited here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_inherited_constructor_slice, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate %select{constructor|template}0 ignored: inherited constructor cannot be used to %select{copy|move}1 object", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_instantiation_depth, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: substitution exceeded maximum template instantiation depth", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_non_deduced_mismatch, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: could not match %diff{$ against $|types}0,1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_non_deduced_mismatch_qualified, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: could not match %q0 against %q1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_substitution_failure, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: substitution failure%0%1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_candidate_underqualified, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "candidate template ignored: cannot deduce a type for %0 that would make %2 equal %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_surrogate_cand, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "conversion candidate of type %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ovl_too_many_candidates, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "remaining %0 candidate%s0 omitted; pass -fshow-overloads=all to show them", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_ownership_returns_index_mismatch, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declared with index %0 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_parameter_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "passing argument to parameter here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_parameter_named_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "passing argument to parameter %0 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_parameter_pack_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "parameter pack %0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_parameter_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "parameter of type %0 is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_partial_availability_specified_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 has been marked as being introduced in %1 %2 here, but the deployment target is %1 %3", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_partial_spec_match, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "partial specialization matches %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_partial_spec_not_more_specialized_than_primary, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_partial_specialization_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "explicit specialization declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_performs_forbidden_arc_conversion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "inline function performs a conversion which is forbidden in ARC", 0, SFINAE_Suppress, false, false, 10) +DIAG(note_possible_target_of_call, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "possible target for call", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_pragma_attribute_applied_decl_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "when applied to this declaration", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_pragma_attribute_region_ends_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'#pragma clang attribute push' regions ends here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_pragma_pack_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous '#pragma pack' directive that modifies alignment is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_pragma_pack_pop_instead_reset, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you intend to use '#pragma pack (pop)' instead of '#pragma pack()'?", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_precedence_bitwise_first, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "place parentheses around the %0 expression to evaluate it first", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_precedence_conditional_first, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "place parentheses around the '?:' expression to evaluate it first", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_precedence_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "place parentheses around the '%0' expression to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_prev_module_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous module declaration is here", 0, SFINAE_Suppress, false, false, 13) +DIAG(note_prev_module_definition, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previously defined here", 0, SFINAE_Suppress, false, false, 13) +DIAG(note_prev_module_definition_from_ast_file, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "module loaded from '%0'", 0, SFINAE_Suppress, false, false, 13) +DIAG(note_prev_partial_spec_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous declaration of class template partial specialization %0 is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_previous_access_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previously declared '%1' here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_previous_attribute, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous attribute is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_previous_builtin_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 is a builtin with type %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_previous_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_previous_exception_handler, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "for type %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_previous_explicit_instantiation, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous explicit instantiation is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_previous_initializer, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous initialization %select{|with side effects }0is here%select{| (side effects may not occur at run time)}0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_previous_ms_inheritance, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous inheritance model specified here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_previous_namespace_alias, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previously defined as an alias for %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_previous_template_specialization, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous template specialization is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_previous_uuid, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous uuid specified here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_printf_c_str, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean to call the %0 method?", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_prior_template_arg_substitution, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "while substituting prior template arguments into %select{non-type|template}0 template parameter%1 %2", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_private_extern, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use __attribute__((visibility(\"hidden\"))) attribute instead", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_property_attribute, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "property %0 is declared %select{deprecated|unavailable|partial}1 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_property_declare, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "property declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_property_synthesize, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "property synthesized here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by___block, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses setup of __block variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_cleanup, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of variable with __attribute__((cleanup))", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_constexpr_if, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump enters controlled statement of constexpr if", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_cxx_catch, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of catch block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_cxx_try, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of try block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_if_available, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump enters controlled statement of if available", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_non_trivial_c_struct_init, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of variable of non-trivial C struct type", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_objc_autoreleasepool, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses auto release push of @autoreleasepool block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_objc_catch, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of @catch block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_objc_fast_enumeration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump enters Objective-C fast enumeration loop", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_objc_finally, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of @finally block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_objc_strong_init, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of __strong variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_objc_synchronized, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of @synchronized block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_objc_try, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of @try block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_objc_weak_init, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of __weak variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_seh_except, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of __except block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_seh_finally, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of __finally block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_seh_try, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of __try block", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_variable_init, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses variable initialization", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_variable_non_pod, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of non-POD variable", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_variable_nontriv_destructor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses variable with a non-trivial destructor", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_vla, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of variable length array", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_vla_type_alias, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of VLA type alias", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protected_by_vla_typedef, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "jump bypasses initialization of VLA typedef", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protocol_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "protocol is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protocol_decl_undefined, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "protocol %0 has no definition", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protocol_method, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "protocol method is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_protocol_property_declare, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "it could also be property %select{of type %1|without attribute '%1'|with attribute '%1'|with getter %1|with setter %1}0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_pure_qualified_call_kext, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "qualified call to %0::%1 is treated as a virtual call to %1 due to -fapple-kext", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_pure_virtual_function, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "unimplemented pure virtual method %0 in %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_raii_guard_add_name, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add a variable name to declare a %0 initialized with %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_receiver_class_declared, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "receiver is instance of class declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_receiver_expr_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "receiver expression is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_receiver_is_id, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "receiver is treated with 'id' type for purpose of method lookup", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_redefinition_include_same_file, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'%0' included multiple times, additional include site here", 0, SFINAE_Suppress, false, false, 13) +DIAG(note_redefinition_modules_same_file, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'%0' included multiple times, additional include site in header from module '%1'", 0, SFINAE_Suppress, false, false, 13) +DIAG(note_ref_or_ptr_member_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{reference|pointer}0 member declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_refconst_member_not_initialized, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{const|reference}0 member %1 will never be initialized", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_reference_is_return_value, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 returns a reference", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_referenced_class_template, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "class template declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_reinterpret_updowncast_use_static, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use 'static_cast' to adjust the pointer correctly while %select{upcasting|downcasting}0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_related_result_type_explicit, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{overridden|current}0 method is explicitly declared 'instancetype'%select{| and is expected to return an instance of its class type}0", 0, SFINAE_Suppress, false, false, 17) +DIAG(note_related_result_type_family, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{overridden|current}0 method is part of the '%select{|alloc|copy|init|mutableCopy|new|autorelease|dealloc|finalize|release|retain|retainCount|self}1' method family%select{| and is expected to return an instance of its class type}0", 0, SFINAE_Suppress, false, false, 17) +DIAG(note_related_result_type_inferred, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{class|instance}0 method %1 is assumed to return an instance of its receiver type (%2)", 0, SFINAE_Suppress, false, false, 17) +DIAG(note_related_result_type_overridden, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "overridden method returns an instance of its class type", 0, SFINAE_Suppress, false, false, 17) +DIAG(note_remove_abs, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "remove the call to '%0' since unsigned values cannot be negative", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_remove_max_call, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "remove call to max function and unsigned zero argument", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_remove_move, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "remove std::move call here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_remove_parens_for_variable_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "remove parentheses to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_replace_abs_function, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use function '%0' instead", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_riscv_repeated_interrupt_attribute, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "repeated RISC-V 'interrupt' attribute is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_sentinel_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{function|method|block}0 has been explicitly marked sentinel here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_shadow_field, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declared here", 0, SFINAE_Suppress, false, false, 0) +DIAG(note_silence_aligned_allocation_unavailable, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "if you supply your own aligned allocation functions, use -faligned-allocation to silence this diagnostic", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_specialized_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "attempt to specialize declaration here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_specialized_entity, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "explicitly specialized declaration is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_string_plus_scalar_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use array indexing to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_strlcpycat_wrong_size, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "change size argument to be the size of the destination", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_strncat_wrong_size, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "change the argument to be the free space in the destination buffer minus the terminating null byte", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_struct_class_suggestion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean %select{struct|interface|class}0 here?", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_suppress_ctad_maybe_unsupported, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add a deduction guide to suppress this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_suppressed_class_declare, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "class with specified objc_requires_property_definitions attribute is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_surrounding_namespace_ends_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "surrounding namespace with visibility attribute ends here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_surrounding_namespace_starts_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "surrounding namespace with visibility attribute starts here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_suspicious_bzero_size_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "parenthesize the second argument to silence", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_suspicious_sizeof_memset_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{parenthesize the third argument|cast the second argument to 'int'}0 to silence", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_switch_conversion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "conversion to %select{integral|enumeration}0 type %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_arg_internal_object, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "non-type template argument refers to %select{function|object}0 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_arg_refers_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "non-type template argument refers here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_arg_refers_here_func, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "template argument refers to function template %0, here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_class_explicit_specialization_was_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "class template %0 was explicitly specialized here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_class_instantiation_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in instantiation of template class %q0 requested here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_class_instantiation_was_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "class template %0 was instantiated here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_decl_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "template is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{function template|class template|variable template|type alias template|template template parameter}0 %1 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_default_arg_checking, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "while checking a default template argument used here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_enum_def_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in instantiation of enumeration %q0 requested here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_exception_spec_instantiation_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in instantiation of exception specification for %0 requested here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_kw_refers_to_non_template, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declared as a non-template here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_member_class_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in instantiation of member class %q0 requested here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_member_function_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in instantiation of member function %q0 requested here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_nontype_parm_different_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "template non-type parameter has a different type %0 in template argument", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_nontype_parm_prev_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous non-type template parameter with type %0 is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_nsdmi_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in instantiation of default member initializer %q0 requested here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_param_different_kind, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "template parameter has a different kind in template argument", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_param_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "template parameter is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_param_list_different_arity, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{too few|too many}0 template parameters in template template argument", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_param_prev_default_arg, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous default template argument defined here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_parameter_pack_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous %select{template type|non-type template|template template}0 parameter%select{| pack}1 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_parameter_pack_non_pack, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{template type|non-type template|template template}0 parameter%select{| pack}1 does not match %select{template type|non-type template|template template}0 parameter%select{ pack|}1 in template argument", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_prev_declaration, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous template %select{declaration|template parameter}0 is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_recursion_depth, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use -ftemplate-depth=N to increase recursive template instantiation depth", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_static_data_member_def_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in instantiation of static data member %q0 requested here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_type_alias_instantiation_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in instantiation of template type alias %0 requested here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_unnamed_type_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "unnamed type used in template argument was declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_template_variable_def_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in instantiation of variable template specialization %q0 requested here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_thread_warning_in_fun, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "Thread warning in function %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_throw_in_dtor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{destructor|deallocator}0 has a %select{non-throwing|implicit non-throwing}1 exception specification", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_throw_in_function, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "function declared non-throwing here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_transparent_union_first_field_size_align, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{alignment|size}0 of first field is %1 bits", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_type_incomplete, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%0 is incomplete", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_typecheck_assign_const, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{function %1 which returns const-qualified type %2 declared here|variable %1 declared const here|%select{non-|}1static data member %2 declared const here|member function %q1 is declared const here|%select{|nested }1data member %2 declared const here}0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_typecheck_invalid_operands_converted, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{first|second}0 operand was implicitly converted to type %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_typecheck_member_reference_suggestion, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean to use '.' instead?", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_typedef_changes_linkage, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use a tag name here to establish linkage prior to definition", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_typename_refers_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "referenced member %0 is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_unguarded_available_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "enclose %0 in %select{an @available|a __builtin_available}1 check to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_uninit_fixit_remove_cond, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "remove the %select{'%1' if its condition|condition if it}0 is always %select{false|true}2", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_uninit_in_this_constructor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "during field initialization in %select{this|the implicit default}0 constructor", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_uninit_reference_member, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "uninitialized reference member is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_uninit_var_use, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{uninitialized use occurs|variable is captured by block}0 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_unreachable_silence, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "silence by adding parentheses to mark code as explicitly dead", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_use_ifdef_guards, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "unguarded header; consider using #ifdef guards or #pragma once", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_use_non_reference_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use non-reference type %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_use_reference_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use reference type %0 to prevent copying", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_use_thread_local, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use 'thread_local' to allow this", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_use_type_or_non_reference, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use non-reference type %0 to keep the copy or type %1 to prevent copying", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_used_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "used here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_used_in_initialization_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "used in initialization here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_user_declared_ctor, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "implicit default constructor suppressed by user-declared constructor", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_using_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{|previous }0using declaration", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_using_decl_class_member_workaround, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "use %select{an alias declaration|a typedef declaration|a reference|a const variable|a constexpr variable}0 instead", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_using_decl_conflict, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "conflicting declaration", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_using_decl_target, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "target of using declaration", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_using_value_decl_missing_typename, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "add 'typename' to treat this using declaration as a type", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_value_initialization_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in value-initialization of type %0 here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_var_declared_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "variable %0 is declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_var_explicitly_captured_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "variable %0 is%select{| explicitly}1 captured here", 0, SFINAE_Suppress, false, false, 3) +DIAG(note_var_fixit_add_initialization, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "initialize the variable %0 to silence this warning", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_var_prev_partial_spec_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "previous declaration of variable template partial specialization is here", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_vbase_moved_here, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "%select{%1 is a virtual base class of base class %2 declared here|virtual base class %1 declared here}0", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_vla_unsupported, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "variable length arrays are not supported for the current target", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_which_delegates_to, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "which delegates to", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_while_in_implementation, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "detected while default synthesizing properties in class implementation", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_widen_bitfield, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "widen this field to %0 bits to store all values of %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(note_within_field_of_type, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "within field of type %0 declared here", 0, SFINAE_Suppress, false, false, 2) +DIAG(override_keyword_hides_virtual_member_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "non-virtual member function marked '%0' hides virtual member %select{function|functions}1", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(override_keyword_only_allowed_on_virtual_member_functions, CLASS_ERROR, (unsigned)diag::Severity::Error, "only virtual member functions can be marked '%0'", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(warn_abs_too_small, CLASS_WARNING, (unsigned)diag::Severity::Warning, "absolute value function %0 given an argument of type %1 but has parameter of type %2 which may cause truncation of value", 8, SFINAE_Suppress, false, false, 2) +DIAG(warn_abstract_final_class, CLASS_WARNING, (unsigned)diag::Severity::Warning, "abstract class is marked '%select{final|sealed}0'", 9, SFINAE_Suppress, false, false, 2) +DIAG(warn_abstract_vbase_init_ignored, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "initializer for virtual base class %0 of abstract class %1 will never be used", 10, SFINAE_Suppress, false, false, 2) +DIAG(warn_access_decl_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "access declarations are deprecated; use using declarations instead", 164, SFINAE_Suppress, false, false, 27) +DIAG(warn_accessor_property_type_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "type of property %0 does not match type of accessor %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_acquire_requires_negative_cap, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "acquiring %0 '%1' requires negative capability '%2'", 665, SFINAE_Suppress, false, false, 2) +DIAG(warn_acquired_before, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 '%1' must be acquired before '%2'", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_acquired_before_after_cycle, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "Cycle in acquired_before/after dependencies, starting with '%0'", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_addition_in_bitshift, CLASS_WARNING, (unsigned)diag::Severity::Warning, "operator '%0' has lower precedence than '%1'; '%1' will be evaluated first", 599, SFINAE_Suppress, false, false, 2) +DIAG(warn_address_of_reference_bool_conversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "reference cannot be bound to dereferenced null pointer in well-defined C++ code; pointer may be assumed to always convert to true", 678, SFINAE_Suppress, false, false, 24) +DIAG(warn_address_of_reference_null_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "reference cannot be bound to dereferenced null pointer in well-defined C++ code; comparison may be assumed to always evaluate to %select{true|false}0", 657, SFINAE_Suppress, false, false, 2) +DIAG(warn_alloca_align_alignof, CLASS_WARNING, (unsigned)diag::Severity::Warning, "second argument to __builtin_alloca_with_align is supposed to be in bits", 16, SFINAE_Suppress, false, false, 2) +DIAG(warn_ambiguous_suitable_delete_function_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "multiple suitable %0 functions for %1; no 'operator delete' function will be invoked if initialization throws an exception", 17, SFINAE_Suppress, false, false, 2) +DIAG(warn_anon_bitfield_width_exceeds_type_width, CLASS_WARNING, (unsigned)diag::Severity::Warning, "width of anonymous bit-field (%0 bits) exceeds width of its type; value will be truncated to %1 bit%s1", 61, SFINAE_Suppress, false, false, 2) +DIAG(warn_arc_lifetime_result_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ARC %select{unused|__unsafe_unretained|__strong|__weak|__autoreleasing}0 lifetime qualifier on return type is ignored", 287, SFINAE_Suppress, false, false, 5) +DIAG(warn_arc_literal_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "assigning %select{array literal|dictionary literal|numeric literal|boxed expression|<should not happen>|block literal}0 to a weak %select{property|variable}1; object will be released after assignment", 30, SFINAE_Suppress, false, false, 5) +DIAG(warn_arc_object_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{destination for|source of}0 this %1 call is a pointer to ownership-qualified type %2", 26, SFINAE_Suppress, false, false, 5) +DIAG(warn_arc_perform_selector_leaks, CLASS_WARNING, (unsigned)diag::Severity::Warning, "performSelector may cause a leak because its selector is unknown", 27, SFINAE_Suppress, false, false, 2) +DIAG(warn_arc_possible_repeated_use_of_weak, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "weak %select{variable|property|implicit property|instance variable}0 %1 may be accessed multiple times in this %select{function|method|block|lambda}2 and may be unpredictably set to nil; assign to a strong variable to keep the object alive", 25, SFINAE_Suppress, false, false, 2) +DIAG(warn_arc_repeated_use_of_weak, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "weak %select{variable|property|implicit property|instance variable}0 %1 is accessed multiple times in this %select{function|method|block|lambda}2 but may be unpredictably set to nil; assign to a strong variable to keep the object alive", 28, SFINAE_Suppress, false, false, 2) +DIAG(warn_arc_retain_cycle, CLASS_WARNING, (unsigned)diag::Severity::Warning, "capturing %0 strongly in this block is likely to lead to a retain cycle", 29, SFINAE_Suppress, false, false, 26) +DIAG(warn_arc_retained_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "assigning retained object to %select{weak|unsafe_unretained}0 %select{property|variable}1; object will be released after assignment", 30, SFINAE_Suppress, false, false, 5) +DIAG(warn_arc_retained_property_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "assigning retained object to unsafe property; object will be released after assignment", 30, SFINAE_Suppress, false, false, 5) +DIAG(warn_arc_strong_pointer_objc_pointer, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "method parameter of type %0 with no explicit ownership", 217, SFINAE_Suppress, false, false, 10) +DIAG(warn_argument_invalid_range, CLASS_WARNING, (unsigned)diag::Severity::Error, "argument value %0 is outside the valid range [%1, %2]", 31, SFINAE_Suppress, false, false, 2) +DIAG(warn_arm_interrupt_calling_convention, CLASS_WARNING, (unsigned)diag::Severity::Warning, "call to function without interrupt attribute could clobber interruptee's VFP registers", 220, SFINAE_Suppress, false, false, 2) +DIAG(warn_array_index_exceeds_bounds, CLASS_WARNING, (unsigned)diag::Severity::Warning, "array index %0 is past the end of the array (which contains %1 element%s2)", 32, SFINAE_Suppress, false, false, 2) +DIAG(warn_array_index_precedes_bounds, CLASS_WARNING, (unsigned)diag::Severity::Warning, "array index %0 is before the beginning of the array", 32, SFINAE_Suppress, false, false, 2) +DIAG(warn_asm_label_on_auto_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignored asm label '%0' on automatic variable", 0, SFINAE_Suppress, false, false, 12) +DIAG(warn_asm_mismatched_size_modifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "value size does not match register size specified by the constraint and modifier", 36, SFINAE_Suppress, false, false, 12) +DIAG(warn_assume_side_effects, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the argument to %0 has side effects that will be discarded", 38, SFINAE_Suppress, false, false, 2) +DIAG(warn_at_available_unchecked_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{@available|__builtin_available}0 does not guard availability here; use if (%select{@available|__builtin_available}0) instead", 709, SFINAE_Suppress, false, false, 2) +DIAG(warn_atl_uuid_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "specifying 'uuid' as an ATL attribute is deprecated; use __declspec instead", 166, SFINAE_Suppress, false, false, 27) +DIAG(warn_atomic_implicit_seq_cst, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit use of sequentially-consistent atomic may incur stronger memory barriers than necessary", 42, SFINAE_Suppress, false, false, 2) +DIAG(warn_atomic_op_has_invalid_memory_order, CLASS_WARNING, (unsigned)diag::Severity::Warning, "memory order argument to atomic operation is invalid", 43, SFINAE_Suppress, false, false, 2) +DIAG(warn_atomic_property_rule, CLASS_WARNING, (unsigned)diag::Severity::Warning, "writable atomic property %0 cannot pair a synthesized %select{getter|setter}1 with a user defined %select{getter|setter}2", 45, SFINAE_Suppress, false, false, 2) +DIAG(warn_attr_abi_tag_namespace, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'abi_tag' attribute on %select{non-inline|anonymous}0 namespace ignored", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attr_on_unconsumable_class, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "consumed analysis attribute is attached to member of class '%0' which isn't marked as consumable", 136, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_address_multiple_identical_qualifiers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "multiple identical address spaces specified for type", 193, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_after_definition_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 after definition is ignored", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_argument_n_negative, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute parameter %1 is negative and will be ignored", 147, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_dll_instantiated_base_class, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "propagating dll attribute to %select{already instantiated|explicitly specialized}0 base class template without dll attribute is not supported", 711, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_dll_redeclaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "redeclaration of %q0 should not add %q1 attribute", 183, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_dllexport_explicit_instantiation_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicit instantiation declaration should not be 'dllexport'", 184, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_dllimport_static_field_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "definition of dllimport static field", 185, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_iboutlet, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute can only be applied to instance variables or properties", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute ignored", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_ignored_for_field_of_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute ignored for field of type %1", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_ignored_on_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute ignored on inline function", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_invalid_on_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' attribute cannot be specified on a definition", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_nonnull_no_pointers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'nonnull' attribute applied to function with no pointer arguments", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_nonnull_parm_no_args, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'nonnull' attribute when used on parameters takes no arguments", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_not_on_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute ignored when parsing type", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_packed_for_bitfield, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'packed' attribute was ignored on bit-fields with single-byte alignment in older versions of GCC and Clang", 46, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_pointer_or_reference_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to a pointer or reference (%1 is invalid)", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_pointers_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to%select{| constant}1 pointer arguments", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_precede_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute declaration must precede definition", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_protected_visibility, CLASS_WARNING, (unsigned)diag::Severity::Warning, "target does not support 'protected' visibility; using 'default'", 716, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_return_pointers_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to return values that are pointers", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_return_pointers_refs_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to return values that are pointers or references", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_section_on_redeclaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "section attribute is specified on redeclared variable", 578, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_sentinel_named_arguments, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'sentinel' attribute requires named arguments", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_sentinel_not_variadic, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'sentinel' attribute only supported for variadic %select{functions|blocks}0", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_type_not_supported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute argument not supported: %1", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_unknown_visibility, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown visibility %0", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_void_function_method, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 cannot be applied to %select{functions|Objective-C method}1 without return value", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_weak_on_field, CLASS_WARNING, (unsigned)diag::Severity::Warning, "__weak attribute cannot be specified on a field declaration", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_weak_on_local, CLASS_WARNING, (unsigned)diag::Severity::Warning, "__weak attribute cannot be specified on an automatic variable when ARC is not enabled", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_wrong_decl_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to %select{functions|unions|variables and functions|functions and methods|functions, methods and blocks|functions, methods, and parameters|variables|variables and fields|variables, data members and tag types|types and namespaces|variables, functions and classes|kernel functions|non-K&R-style functions}1", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_attribute_wrong_decl_type_str, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to %1", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_auto_implicit_atomic_property, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "property is assumed atomic when auto-synthesizing the property", 289, SFINAE_Suppress, false, false, 2) +DIAG(warn_auto_readonly_iboutlet_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "readonly IBOutlet property %0 when auto-synthesized may not work correctly with 'nib' loader", 557, SFINAE_Suppress, false, false, 2) +DIAG(warn_auto_storage_class, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'auto' storage class specifier is redundant and incompatible with C++11", 75, SFINAE_Suppress, false, false, 2) +DIAG(warn_auto_synthesizing_protocol_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto property synthesis will not synthesize property %0 declared in protocol %1", 488, SFINAE_Suppress, false, false, 2) +DIAG(warn_auto_var_is_id, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'auto' deduced as 'id' in declaration of %0", 51, SFINAE_Suppress, false, false, 2) +DIAG(warn_autosynthesis_property_in_superclass, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto property synthesis will not synthesize property %0; it will be implemented by its superclass, use @dynamic to acknowledge intention", 486, SFINAE_Suppress, false, false, 2) +DIAG(warn_autosynthesis_property_ivar_match, CLASS_WARNING, (unsigned)diag::Severity::Warning, "autosynthesized property %0 will use %select{|synthesized}1 instance variable %2, not existing instance variable %3", 464, SFINAE_Suppress, false, false, 2) +DIAG(warn_availability_on_static_initializer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring availability attribute %select{on '+load' method|with constructor attribute|with destructor attribute}0", 52, SFINAE_Suppress, false, false, 2) +DIAG(warn_availability_swift_unavailable_deprecated_only, CLASS_WARNING, (unsigned)diag::Severity::Warning, "only 'unavailable' and 'deprecated' are supported for Swift availability", 52, SFINAE_Suppress, false, false, 2) +DIAG(warn_availability_unknown_platform, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown platform %0 in availability macro", 52, SFINAE_Suppress, false, false, 2) +DIAG(warn_availability_version_ordering, CLASS_WARNING, (unsigned)diag::Severity::Warning, "feature cannot be %select{introduced|deprecated|obsoleted}0 in %1 version %2 before it was %select{introduced|deprecated|obsoleted}3 in version %4; attribute ignored", 52, SFINAE_Suppress, false, false, 2) +DIAG(warn_bad_function_cast, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cast from function call of type %0 to non-matching type %1", 55, SFINAE_Suppress, false, false, 2) +DIAG(warn_bad_receiver_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "receiver type %0 is not 'id' or interface pointer, consider casting it to 'id'", 558, SFINAE_Suppress, false, false, 2) +DIAG(warn_base_class_is_uninit, CLASS_WARNING, (unsigned)diag::Severity::Warning, "base class %0 is uninitialized when used here to access %q1", 692, SFINAE_Suppress, false, false, 2) +DIAG(warn_bind_ref_member_to_parameter, CLASS_WARNING, (unsigned)diag::Severity::Warning, "binding reference member %0 to stack allocated %select{variable|parameter}2 %1", 151, SFINAE_Suppress, false, false, 2) +DIAG(warn_binding_null_to_reference, CLASS_WARNING, (unsigned)diag::Severity::Warning, "binding dereferenced null pointer to reference has undefined behavior", 455, SFINAE_Suppress, false, false, 2) +DIAG(warn_bitfield_too_small_for_enum, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "bit-field %0 is not wide enough to store all enumerators of %1", 60, SFINAE_Suppress, false, false, 24) +DIAG(warn_bitfield_width_exceeds_type_width, CLASS_WARNING, (unsigned)diag::Severity::Warning, "width of bit-field %0 (%1 bits) exceeds the width of its type; value will be truncated to %2 bit%s2", 61, SFINAE_Suppress, false, false, 2) +DIAG(warn_bitwise_op_in_bitwise_op, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' within '%1'", 62, SFINAE_Suppress, false, false, 2) +DIAG(warn_block_capture_autoreleasing, CLASS_WARNING, (unsigned)diag::Severity::Warning, "block captures an autoreleasing out-parameter, which may result in use-after-free bugs", 63, SFINAE_Suppress, false, false, 5) +DIAG(warn_block_literal_attributes_on_omitted_return_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 ignored, because it cannot be applied to omitted return type", 282, SFINAE_Suppress, false, false, 0) +DIAG(warn_block_literal_qualifiers_on_omitted_return_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' qualifier on omitted return type %1 has no effect", 287, SFINAE_Suppress, false, false, 0) +DIAG(warn_bool_switch_condition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "switch condition has boolean value", 645, SFINAE_Suppress, false, false, 2) +DIAG(warn_braces_around_scalar_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "braces around scalar initializer", 66, SFINAE_Suppress, false, false, 2) +DIAG(warn_break_binds_to_switch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'break' is bound to loop, GCC binds it to switch", 250, SFINAE_Suppress, false, false, 2) +DIAG(warn_builtin_unknown, CLASS_WARNING, (unsigned)diag::Severity::Error, "use of unknown builtin %0", 296, SFINAE_Suppress, false, false, 2) +DIAG(warn_call_to_pure_virtual_member_function_from_ctor_dtor, CLASS_WARNING, (unsigned)diag::Severity::Warning, "call to pure virtual member function %0 has undefined behavior; overrides of %0 in subclasses are not available in the %select{constructor|destructor}1 of %2", 115, SFINAE_Suppress, false, false, 2) +DIAG(warn_call_wrong_number_of_arguments, CLASS_WARNING, (unsigned)diag::Severity::Warning, "too %select{few|many}0 arguments in call to %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_cannot_pass_non_pod_arg_to_vararg, CLASS_WARNING, (unsigned)diag::Severity::Error, "cannot pass object of %select{non-POD|non-trivial}0 type %1 through variadic %select{function|block|method|constructor}2; call will abort at runtime", 442, SFINAE_Suppress, false, false, 2) +DIAG(warn_cannot_resolve_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cannot resolve lock expression", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_case_empty_range, CLASS_WARNING, (unsigned)diag::Severity::Warning, "empty case range specified", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_case_value_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overflow converting case value to switch condition type (%0 to %1)", 644, SFINAE_Suppress, false, false, 2) +DIAG(warn_cast_align, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cast from %0 to %1 increases required alignment from %2 to %3", 116, SFINAE_Suppress, false, false, 2) +DIAG(warn_cast_calling_conv, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cast between incompatible calling conventions '%0' and '%1'; calls through this pointer may abort at runtime", 117, SFINAE_Suppress, false, false, 2) +DIAG(warn_cast_nonnull_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "nonnull %select{function call|parameter}0 '%1' will evaluate to 'true' on first encounter", 531, SFINAE_Suppress, false, false, 24) +DIAG(warn_cast_pointer_from_sel, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cast of type %0 to %1 is deprecated; use sel_getName instead", 118, SFINAE_Suppress, false, false, 2) +DIAG(warn_cast_qual, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cast from %0 to %1 drops %select{const and volatile qualifiers|const qualifier|volatile qualifier}2", 119, SFINAE_Suppress, false, false, 2) +DIAG(warn_cast_qual2, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cast from %0 to %1 must have all intermediate pointers const qualified to be safe", 119, SFINAE_Suppress, false, false, 2) +DIAG(warn_category_method_impl_match, CLASS_WARNING, (unsigned)diag::Severity::Warning, "category is implementing a method which will also be implemented by its primary class", 487, SFINAE_Suppress, false, false, 2) +DIAG(warn_cconv_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "calling convention %0 ignored for this target", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_cconv_knr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "function with no prototype cannot use the %0 calling convention", 413, SFINAE_Suppress, false, false, 2) +DIAG(warn_cconv_structors, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 calling convention ignored on constructor/destructor", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_cconv_varargs, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 calling convention ignored on variadic function", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_cdtor_function_try_handler_mem_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot refer to a non-static member from the handler of a %select{constructor|destructor}0 function try block", 212, SFINAE_Suppress, false, false, 2) +DIAG(warn_cfstring_truncated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "input conversion stopped due to an input byte that does not belong to the input codeset UTF-8", 3, SFINAE_Suppress, false, false, 2) +DIAG(warn_class_method_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class method %objcclass0 not found (return type defaults to 'id')", 475, SFINAE_Suppress, false, false, 2) +DIAG(warn_class_method_not_found_with_typo, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class method %objcclass0 not found (return type defaults to 'id'); did you mean %objcclass2?", 475, SFINAE_Suppress, false, false, 2) +DIAG(warn_cleanup_ext, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow the 'cleanup' attribute argument to be anything other than a simple identifier", 250, SFINAE_Suppress, false, false, 2) +DIAG(warn_cocoa_naming_owned_rule, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property follows Cocoa naming convention for returning 'owned' objects", 484, SFINAE_Suppress, false, false, 2) +DIAG(warn_collection_expr_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "collection expression type %0 may not respond to %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_comma_operator, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "possible misuse of comma operator here", 125, SFINAE_Suppress, false, false, 2) +DIAG(warn_comparison_always, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{self-|array }0comparison always evaluates to %select{a constant|%2}1", 650, SFINAE_Suppress, false, false, 2) +DIAG(warn_comparison_bitwise_always, CLASS_WARNING, (unsigned)diag::Severity::Warning, "bitwise comparison always evaluates to %select{false|true}0", 650, SFINAE_Suppress, false, false, 2) +DIAG(warn_comparison_of_mixed_enum_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison of two values with different enumeration types%diff{ ($ and $)|}0,1", 208, SFINAE_Suppress, false, false, 2) +DIAG(warn_comparison_of_mixed_enum_types_switch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison of two values with different enumeration types in switch statement%diff{ ($ and $)|}0,1", 209, SFINAE_Suppress, false, false, 2) +DIAG(warn_concatenated_nsarray_literal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "concatenated NSString literal for an NSArray expression - possibly missing a comma", 495, SFINAE_Suppress, false, false, 2) +DIAG(warn_condition_is_assignment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using the result of an assignment as a condition without parentheses", 519, SFINAE_Suppress, false, false, 2) +DIAG(warn_condition_is_idiomatic_assignment, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using the result of an assignment as a condition without parentheses", 281, SFINAE_Suppress, false, false, 2) +DIAG(warn_conflicting_overriding_param_modifiers, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting distributed object modifiers on parameter type in declaration of %0", 515, SFINAE_Suppress, false, false, 2) +DIAG(warn_conflicting_overriding_param_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting parameter types in declaration of %0%diff{: $ vs $|}1,2", 515, SFINAE_Suppress, false, false, 2) +DIAG(warn_conflicting_overriding_ret_type_modifiers, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting distributed object modifiers on return type in declaration of %0", 515, SFINAE_Suppress, false, false, 2) +DIAG(warn_conflicting_overriding_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting return type in declaration of %0%diff{: $ vs $|}1,2", 515, SFINAE_Suppress, false, false, 2) +DIAG(warn_conflicting_overriding_variadic, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting variadic declaration of method and its implementation", 515, SFINAE_Suppress, false, false, 2) +DIAG(warn_conflicting_param_modifiers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting distributed object modifiers on parameter type in implementation of %0", 180, SFINAE_Suppress, false, false, 2) +DIAG(warn_conflicting_param_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting parameter types in implementation of %0%diff{: $ vs $|}1,2", 401, SFINAE_Suppress, false, false, 2) +DIAG(warn_conflicting_ret_type_modifiers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting distributed object modifiers on return type in implementation of %0", 180, SFINAE_Suppress, false, false, 2) +DIAG(warn_conflicting_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting return type in implementation of %0%diff{: $ vs $|}1,2", 402, SFINAE_Suppress, false, false, 2) +DIAG(warn_conflicting_variadic, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conflicting variadic declaration of method and its implementation", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_conv_to_base_not_used, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conversion function converting %0 to its base class %1 will never be used", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_conv_to_self_not_used, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conversion function converting %0 to itself will never be used", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_conv_to_void_not_used, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conversion function converting %0 to %1 will never be used", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_coroutine_promise_unhandled_exception_required_with_exceptions, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is required to declare the member 'unhandled_exception()' when exceptions are enabled", 140, SFINAE_Suppress, false, false, 14) +DIAG(warn_cstruct_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{destination for|source of|first operand of|second operand of}0 this %1 call is a pointer to record %2 that is not trivial to %select{primitive-default-initialize|primitive-copy}3", 449, SFINAE_Suppress, false, false, 2) +DIAG(warn_ctad_maybe_unsupported, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 may not intend to support class template argument deduction", 144, SFINAE_Suppress, false, false, 2) +DIAG(warn_ctor_parm_shadows_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "constructor parameter %0 shadows the field %1 of %2", 592, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx11_compat_constexpr_body_invalid_stmt, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "use of this statement in a constexpr %select{function|constructor}0 is incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx11_compat_constexpr_body_multiple_return, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "multiple return statements in constexpr function is incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx11_compat_constexpr_body_no_return, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "constexpr function with no return statements is incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx11_compat_constexpr_local_var, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable declaration in a constexpr %select{function|constructor}0 is incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx11_compat_constexpr_type_definition, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "type definition in a constexpr %select{function|constructor}0 is incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx11_compat_deduced_return_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "return type deduction is incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx11_compat_generic_lambda, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "generic lambdas are incompatible with C++11", 103, SFINAE_Suppress, false, false, 3) +DIAG(warn_cxx11_compat_init_capture, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "initialized lambda captures are incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 3) +DIAG(warn_cxx11_compat_variable_template, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable templates are incompatible with C++ standards before C++14", 103, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx11_gnu_attribute_on_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 ignored, because it cannot be applied to a type", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx14_compat_class_template_argument_deduction, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "class template argument deduction is incompatible with C++ standards before C++17%select{|; for compatibility, use explicit type name %1}0", 101, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx14_compat_constexpr_not_const, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'constexpr' non-static member function will not be implicitly 'const' in C++14; add 'const' to avoid a change in behavior", 135, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx14_compat_decomp_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "decomposition declarations are incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx14_compat_inline_variable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "inline variables are incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx14_compat_star_this_lambda_capture, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "by value capture of '*this' is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 3) +DIAG(warn_cxx14_compat_template_nontype_parm_auto_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-type template parameters declared with %0 are incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx17_compat_constexpr_body_invalid_stmt, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "use of this statement in a constexpr %select{function|constructor}0 is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx17_compat_constexpr_function_try_block, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "function try block in constexpr %select{function|constructor}0 is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx17_compat_defaulted_method_type_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicitly defaulting this %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 with a type different from the implicit type is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx17_compat_equals_this_lambda_capture, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit capture of 'this' with a capture default of '=' is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 3) +DIAG(warn_cxx17_compat_exception_spec_in_signature, CLASS_WARNING, (unsigned)diag::Severity::Warning, "mangled name of %0 will change in C++17 due to non-throwing exception specification in function signature", 89, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx17_compat_lambda_def_ctor_assign, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{default construction|assignment}0 of lambda is incompatible with C++ standards before C++2a", 99, SFINAE_Suppress, false, false, 3) +DIAG(warn_cxx17_compat_pointer_to_const_ref_member_on_rvalue, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "invoking a pointer to a 'const &' member function on an rvalue is incompatible with C++ standards before C++2a", 100, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx17_compat_unicode_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'char8_t' type specifier is incompatible with C++ standards before C++20", 99, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx2a_compat_aggregate_init_with_ctors, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "aggregate initialization of type %0 with user-declared constructors is incompatible with C++2a", 96, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx2a_compat_utf8_string, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "type of UTF-8 string literal will change from array of const char to array of const char8_t in C++2a", 96, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_array_size_conversion, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion from array size expression of type %0 to %select{integral|enumeration}1 type %2 is incompatible with C++98", 110, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_auto_type_specifier, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'auto' type specifier is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_cast_fn_obj, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cast between pointer-to-function and pointer-to-object is incompatible with C++98", 110, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_constexpr, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'constexpr' specifier is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_ctor_list_init, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "constructor call from initializer list is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_delegating_ctor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "delegating constructors are incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_empty_scalar_initializer, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "scalar initialized from empty initializer list is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_enum_friend, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "befriending enumeration type %0 is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_enum_nested_name_spec, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "enumeration type in nested name specifier is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_explicit_conversion_functions, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit conversion functions are incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_friend_is_member, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "friend declaration naming a member of the declaring class is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_goto_into_protected_scope, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "jump from this goto statement to its label is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_indirect_goto_in_protected_scope, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "jump from this indirect goto statement to one of its possible targets is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_initializer_list_init, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "initialization of initializer_list object is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_non_static_member_use, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "use of non-static data member %0 in an unevaluated context is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_nonclass_type_friend, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-class friend type %0 is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_nontrivial_union_or_anon_struct_member, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{anonymous struct|union}0 member %1 with a non-trivial %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}2 is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_pass_non_pod_arg_to_vararg, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "passing object of trivial but non-POD type %0 through variadic %select{function|block|method|constructor}1 is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_reference_list_init, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "reference initialized from initializer list is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_sfinae_access_control, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "substitution failure due to access control is incompatible with C++98", 106, SFINAE_Report, false, false, 2) +DIAG(warn_cxx98_compat_static_data_member_in_union, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "static data member %0 in union is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_switch_into_protected_scope, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "jump from switch statement to this case label is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_temp_copy, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{copying variable|copying parameter|returning object|initializing statement expression result|throwing object|copying member subobject|copying array element|allocating object|copying temporary|initializing base subobject|initializing vector element|capturing value}1 of type %2 when binding a reference to a temporary would %select{invoke an inaccessible constructor|find no viable constructor|find ambiguous constructors|invoke a deleted constructor}0 in C++98", 107, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_template_arg_extra_parens, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "redundant parentheses surrounding address non-type template argument are incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_template_arg_local_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "local type %0 as template argument is incompatible with C++98", 109, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_template_arg_null, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "use of null pointer as non-type template argument is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_template_arg_object_internal, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-type template argument referring to %select{function|object}0 %1 with internal linkage is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_template_arg_unnamed_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unnamed type as template argument is incompatible with C++98", 111, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_template_outside_of_template, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "use of 'template' keyword outside of a template is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_template_parameter_default_in_function_template, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "default template arguments for a function template are incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_typename_outside_of_template, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "use of 'typename' outside of a template is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_unelaborated_friend_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "befriending %1 without '%select{struct|interface|union|class|enum}0' keyword is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_unicode_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%0' type specifier is incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx98_compat_using_decl_constructor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "inheriting constructors are incompatible with C++98", 106, SFINAE_Suppress, false, false, 2) +DIAG(warn_cxx_ms_struct, CLASS_WARNING, (unsigned)diag::Severity::Error, "ms_struct may not produce Microsoft-compatible layouts for classes with base classes or virtual functions", 309, SFINAE_Suppress, false, false, 2) +DIAG(warn_dangling_member, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{reference|backing array for 'std::initializer_list'}2 %select{|subobject of }1member %0 %select{binds to|is}2 a temporary object whose lifetime is shorter than the lifetime of the constructed object", 151, SFINAE_Suppress, false, false, 2) +DIAG(warn_dangling_variable, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{temporary %select{whose address is used as value of|%select{|implicitly }2bound to}4 %select{%select{|reference }4member of local variable|local %select{variable|reference}4}1|array backing %select{initializer list subobject of local variable|local initializer list}1}0 %select{%3 |}2will be destroyed at the end of the full-expression", 149, SFINAE_Suppress, false, false, 2) +DIAG(warn_dealloc_in_category, CLASS_WARNING, (unsigned)diag::Severity::Warning, "-dealloc is being overridden in a category", 155, SFINAE_Suppress, false, false, 2) +DIAG(warn_decl_in_param_list, CLASS_WARNING, (unsigned)diag::Severity::Warning, "declaration of %0 will not be visible outside of this function", 749, SFINAE_Suppress, false, false, 2) +DIAG(warn_decl_shadow, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration shadows a %select{local variable|variable in %2|static data member of %2|field of %2|typedef in %2|type alias in %2}1", 589, SFINAE_Suppress, false, false, 2) +DIAG(warn_decl_shadow_uncaptured_local, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration shadows a %select{local variable|variable in %2|static data member of %2|field of %2|typedef in %2|type alias in %2}1", 595, SFINAE_Suppress, false, false, 2) +DIAG(warn_declspec_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 is ignored, place it after \"%select{class|struct|interface|union|enum}1\" to apply attribute to type declaration", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_deep_exception_specs_differ, CLASS_WARNING, (unsigned)diag::Severity::Warning, "exception specifications of %select{return|argument}0 types differ", 306, SFINAE_Suppress, false, false, 2) +DIAG(warn_def_missing_case, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%plural{1:enumeration value %1 not explicitly handled in switch|2:enumeration values %1 and %2 not explicitly handled in switch|3:enumeration values %1, %2, and %3 not explicitly handled in switch|:%0 enumeration values not explicitly handled in switch: %1, %2, %3...}0", 647, SFINAE_Suppress, false, false, 2) +DIAG(warn_default_atomic_custom_getter_setter, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "atomic by default property %0 has a user defined %select{getter|setter}1 (property should be marked 'atomic' if this is intended)", 148, SFINAE_Suppress, false, false, 2) +DIAG(warn_defaulted_method_deleted, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicitly defaulted %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 is implicitly deleted", 158, SFINAE_Suppress, false, false, 2) +DIAG(warn_delegating_ctor_cycle, CLASS_WARNING, (unsigned)diag::Severity::Error, "constructor for %0 creates a delegation cycle", 159, SFINAE_Suppress, false, false, 2) +DIAG(warn_delete_abstract_non_virtual_dtor, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{delete|destructor}0 called on %1 that is abstract but has non-virtual destructor", 160, SFINAE_Suppress, false, true, 2) +DIAG(warn_delete_array_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'delete' applied to a pointer-to-array type %0 treated as 'delete[]'", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_delete_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "deleting pointer to incomplete type %0 may cause undefined behavior", 161, SFINAE_Suppress, false, false, 2) +DIAG(warn_delete_non_virtual_dtor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{delete|destructor}0 called on non-final %1 that has virtual functions but non-virtual destructor", 162, SFINAE_Suppress, false, true, 2) +DIAG(warn_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is deprecated", 166, SFINAE_Suppress, false, false, 27) +DIAG(warn_deprecated_anonymous_namespace, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'deprecated' attribute on anonymous namespace ignored", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_deprecated_copy_operation, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "definition of implicit copy %select{constructor|assignment operator}1 for %0 is deprecated because it has a user-declared %select{copy %select{assignment operator|constructor}1|destructor}2", 164, SFINAE_Suppress, false, false, 27) +DIAG(warn_deprecated_def, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implementing deprecated %select{method|class|category}0", 168, SFINAE_Suppress, false, false, 2) +DIAG(warn_deprecated_fwdclass_message, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 may be deprecated because the receiver type is unknown", 166, SFINAE_Suppress, false, false, 27) +DIAG(warn_deprecated_message, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is deprecated: %1", 166, SFINAE_Suppress, false, false, 27) +DIAG(warn_deprecated_redundant_constexpr_static_def, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated", 164, SFINAE_Suppress, false, false, 27) +DIAG(warn_deprecated_register, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'register' storage class specifier is deprecated and incompatible with C++17", 173, SFINAE_Suppress, false, false, 27) +DIAG(warn_deprecated_string_literal_conversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "conversion from string literal to %0 is deprecated", 76, SFINAE_Suppress, false, false, 27) +DIAG(warn_deprecated_this_capture, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit capture of 'this' with a capture default of '=' is deprecated", 174, SFINAE_Suppress, false, false, 27) +DIAG(warn_dereference_of_noderef_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "dereferencing %0; was declared with a 'noderef' type", 436, SFINAE_Suppress, false, false, 0) +DIAG(warn_dereference_of_noderef_type_no_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "dereferencing expression marked as 'noderef'", 436, SFINAE_Suppress, false, false, 0) +DIAG(warn_destructor_marked_not_override_overriding, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 overrides a destructor but is not marked 'override'", 319, SFINAE_Suppress, false, false, 2) +DIAG(warn_diagnose_if_succeeded, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0", 742, SFINAE_Suppress, false, true, 2) +DIAG(warn_direct_initialize_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicit call to +initialize results in duplicate call to +initialize", 216, SFINAE_Suppress, false, false, 2) +DIAG(warn_direct_ivar_access, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "instance variable %0 is being directly accessed", 176, SFINAE_Suppress, false, false, 2) +DIAG(warn_direct_super_initialize_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicit call to [super initialize] should only be in implementation of +initialize", 216, SFINAE_Suppress, false, false, 2) +DIAG(warn_dispatch_body_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "body of cpu_dispatch function will be ignored", 248, SFINAE_Suppress, false, false, 0) +DIAG(warn_division_sizeof_ptr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' will return the size of the pointer, not the array itself", 609, SFINAE_Suppress, false, false, 2) +DIAG(warn_dllimport_dropped_from_inline_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%q0 redeclared inline; %1 attribute ignored", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_double_const_requires_fp64, CLASS_WARNING, (unsigned)diag::Severity::Warning, "double precision constant requires cl_khr_fp64, casting to single precision", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_double_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "acquiring %0 '%1' that is already held", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_duplicate_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 is already applied with different parameters", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_duplicate_attribute_exact, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute %0 is already applied", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_duplicate_codeseg_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate code segment specifiers", 578, SFINAE_Suppress, false, false, 2) +DIAG(warn_duplicate_enum_values, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "element %0 has been implicitly assigned %1 which another element has been assigned", 194, SFINAE_Suppress, false, false, 2) +DIAG(warn_duplicate_method_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "multiple declarations of method %0 found and ignored", 196, SFINAE_Suppress, false, false, 2) +DIAG(warn_duplicate_protocol_def, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate protocol definition of %0 is ignored", 197, SFINAE_Suppress, false, false, 2) +DIAG(warn_dyn_class_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{destination for|source of|first operand of|second operand of}0 this %1 call is a pointer to %select{|class containing a }2dynamic class %3; vtable pointer will be %select{overwritten|copied|moved|compared}4", 198, SFINAE_Suppress, false, false, 2) +DIAG(warn_empty_for_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "for loop has empty body", 202, SFINAE_Suppress, false, false, 2) +DIAG(warn_empty_format_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string is empty", 242, SFINAE_Suppress, false, false, 28) +DIAG(warn_empty_if_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "if statement has empty body", 202, SFINAE_Suppress, false, false, 2) +DIAG(warn_empty_parens_are_function_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "empty parentheses interpreted as a function declaration", 748, SFINAE_Suppress, false, false, 2) +DIAG(warn_empty_range_based_for_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "range-based for loop has empty body", 202, SFINAE_Suppress, false, false, 2) +DIAG(warn_empty_switch_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "switch statement has empty body", 202, SFINAE_Suppress, false, false, 2) +DIAG(warn_empty_while_body, CLASS_WARNING, (unsigned)diag::Severity::Warning, "while loop has empty body", 202, SFINAE_Suppress, false, false, 2) +DIAG(warn_enum_value_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overflow in enumeration value", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_equality_with_extra_parens, CLASS_WARNING, (unsigned)diag::Severity::Warning, "equality comparison with extraneous parentheses", 520, SFINAE_Suppress, false, false, 2) +DIAG(warn_exception_caught_by_earlier_handler, CLASS_WARNING, (unsigned)diag::Severity::Warning, "exception of type %0 will be caught by earlier handler", 212, SFINAE_Suppress, false, false, 2) +DIAG(warn_exit_time_destructor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration requires an exit-time destructor", 213, SFINAE_Suppress, false, false, 2) +DIAG(warn_expecting_lock_held_on_loop, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "expecting %0 '%1' to be held at start of each loop", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_expecting_locked, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "expecting %0 '%1' to be held at the end of function", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_explicit_instantiation_after_specialization, CLASS_WARNING, (unsigned)diag::Severity::Warning, "explicit instantiation of %0 that occurs after an explicit specialization has no effect", 329, SFINAE_Suppress, false, false, 2) +DIAG(warn_explicit_instantiation_inline_0x, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit instantiation cannot be 'inline'", 75, SFINAE_Suppress, false, false, 2) +DIAG(warn_explicit_instantiation_must_be_global_0x, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit instantiation of %0 must occur at global scope", 75, SFINAE_Suppress, false, false, 2) +DIAG(warn_explicit_instantiation_out_of_scope_0x, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit instantiation of %0 not in a namespace enclosing %1", 75, SFINAE_Suppress, false, false, 2) +DIAG(warn_explicit_instantiation_unqualified_wrong_namespace_0x, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit instantiation of %q0 must occur in namespace %1", 75, SFINAE_Suppress, false, false, 2) +DIAG(warn_extern_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'extern' variable has an initializer", 219, SFINAE_Suppress, false, false, 2) +DIAG(warn_falloff_nonvoid_coroutine, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control reaches end of coroutine; which is undefined behavior because the promise type %0 does not declare 'return_void()'", 575, SFINAE_Suppress, false, false, 2) +DIAG(warn_falloff_nonvoid_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control reaches end of non-void function", 575, SFINAE_Suppress, false, false, 2) +DIAG(warn_falloff_nonvoid_lambda, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control reaches end of non-void lambda", 575, SFINAE_Suppress, false, false, 3) +DIAG(warn_falloff_noreturn_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "function declared 'noreturn' should not return", 340, SFINAE_Suppress, false, false, 2) +DIAG(warn_fallthrough_attr_unreachable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "fallthrough annotation in unreachable code", 292, SFINAE_Suppress, false, false, 2) +DIAG(warn_field_is_uninit, CLASS_WARNING, (unsigned)diag::Severity::Warning, "field %0 is uninitialized when used here", 692, SFINAE_Suppress, false, false, 2) +DIAG(warn_flag_enum_constant_out_of_range, CLASS_WARNING, (unsigned)diag::Severity::Warning, "enumeration value %0 is out of range of flags in enumeration type %1", 227, SFINAE_Suppress, false, false, 2) +DIAG(warn_float_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "magnitude of floating-point constant too large for type %0; maximum is %1", 356, SFINAE_Suppress, false, false, 2) +DIAG(warn_float_underflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "magnitude of floating-point constant too small for type %0; minimum is %1", 356, SFINAE_Suppress, false, false, 2) +DIAG(warn_floatingpoint_eq, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "comparing floating point with == or != is unsafe", 230, SFINAE_Suppress, false, false, 2) +DIAG(warn_for_range_begin_end_types_differ, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'begin' and 'end' returning different types (%0 and %1) is incompatible with C++ standards before C++17", 101, SFINAE_Suppress, false, false, 2) +DIAG(warn_for_range_const_reference_copy, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "loop variable %0 %diff{has type $ but is initialized with type $| is initialized with a value of a different type}1,2 resulting in a copy", 556, SFINAE_Suppress, false, false, 2) +DIAG(warn_for_range_copy, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "loop variable %0 of type %1 creates a copy from type %2", 556, SFINAE_Suppress, false, false, 2) +DIAG(warn_for_range_variable_always_copy, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "loop variable %0 is always a copy because the range of type %1 does not return a reference", 556, SFINAE_Suppress, false, false, 2) +DIAG(warn_format_P_no_precision, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using '%%P' format specifier without precision", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_format_argument_needs_cast, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{values of type|enum values with underlying type}2 '%0' should not be used as format arguments; add an explicit cast to %1 instead", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_format_argument_needs_cast_pedantic, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{values of type|enum values with underlying type}2 '%0' should not be used as format arguments; add an explicit cast to %1 instead", 239, SFINAE_Suppress, false, false, 2) +DIAG(warn_format_conversion_argument_type_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format specifies type %0 but the argument has %select{type|underlying type}2 %1", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_format_conversion_argument_type_mismatch_pedantic, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "format specifies type %0 but the argument has %select{type|underlying type}2 %1", 239, SFINAE_Suppress, false, false, 2) +DIAG(warn_format_invalid_annotation, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using '%0' format specifier annotation outside of os_log()/os_trace()", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_format_invalid_conversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid conversion specifier '%0'", 236, SFINAE_Suppress, false, false, 28) +DIAG(warn_format_invalid_positional_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid position specified for %select{field width|field precision}0", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_format_mix_positional_nonpositional_args, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot mix positional and non-positional arguments in format string", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_format_non_standard, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%0' %select{length modifier|conversion specifier}1 is not supported by ISO C", 237, SFINAE_Suppress, false, false, 2) +DIAG(warn_format_non_standard_conversion_spec, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using length modifier '%0' with conversion specifier '%1' is not supported by ISO C", 237, SFINAE_Suppress, false, false, 2) +DIAG(warn_format_non_standard_positional_arg, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "positional arguments are not supported by ISO C", 237, SFINAE_Suppress, false, false, 2) +DIAG(warn_format_nonliteral, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "format string is not a string literal", 238, SFINAE_Suppress, false, false, 2) +DIAG(warn_format_nonliteral_noargs, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string is not a string literal (potentially insecure)", 240, SFINAE_Suppress, false, false, 28) +DIAG(warn_format_nonsensical_length, CLASS_WARNING, (unsigned)diag::Severity::Warning, "length modifier '%0' results in undefined behavior or no effect with '%1' conversion specifier", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_format_string_is_wide_literal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string should not be a wide string", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_format_zero_positional_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "position arguments in format strings start counting at 1 (not 0)", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_forward_class_redefinition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "redefinition of forward class %0 of a typedef name of an object type is ignored", 469, SFINAE_Suppress, false, false, 2) +DIAG(warn_fun_excludes_mutex, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "cannot call function '%1' while %0 '%2' is held", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_fun_requires_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "calling function %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_fun_requires_lock_precise, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "calling function %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 666, SFINAE_Suppress, false, false, 2) +DIAG(warn_func_template_missing, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "instantiation of function %q0 required here, but no definition is available", 679, SFINAE_Suppress, false, false, 2) +DIAG(warn_function_def_in_objc_container, CLASS_WARNING, (unsigned)diag::Severity::Warning, "function definition inside an Objective-C container is deprecated", 247, SFINAE_Suppress, false, false, 2) +DIAG(warn_function_marked_not_override_overriding, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 overrides a member function but is not marked 'override'", 320, SFINAE_Suppress, false, false, 2) +DIAG(warn_gc_attribute_weak_on_local, CLASS_WARNING, (unsigned)diag::Severity::Warning, "Objective-C GC does not allow weak variables on the stack", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_gcc_ignores_type_attr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "GCC does not allow the %0 attribute to be written on a type", 250, SFINAE_Suppress, false, false, 2) +DIAG(warn_global_constructor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration requires a global constructor", 251, SFINAE_Suppress, false, false, 2) +DIAG(warn_global_destructor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration requires a global destructor", 251, SFINAE_Suppress, false, false, 2) +DIAG(warn_gnu_inline_attribute_requires_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'gnu_inline' attribute requires function to be marked 'inline', attribute ignored", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_gnu_null_ptr_arith, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension", 456, SFINAE_Suppress, false, false, 2) +DIAG(warn_guarded_pass_by_reference, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "passing variable %1 by reference requires holding %0 %select{'%2'|'%2' exclusively}3", 667, SFINAE_Suppress, false, false, 2) +DIAG(warn_iboutlet_object_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{instance variable|property}2 with %0 attribute must be an object type (invalid %1)", 337, SFINAE_Suppress, false, false, 2) +DIAG(warn_iboutletcollection_property_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "IBOutletCollection properties should be copy/strong and not assign", 337, SFINAE_Suppress, false, false, 2) +DIAG(warn_identity_field_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "assigning %select{field|instance variable}0 to itself", 582, SFINAE_Suppress, false, false, 2) +DIAG(warn_ignored_ms_inheritance, CLASS_WARNING, (unsigned)diag::Severity::Warning, "inheritance model ignored on %select{primary template|partial specialization}0", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_ignored_objc_externally_retained, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'objc_externally_retained' can only be applied to local variables %select{of retainable type|with strong ownership}0", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_illegal_constant_array_size, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "size of static array must be an integer constant expression", 527, SFINAE_Suppress, false, false, 2) +DIAG(warn_impcast_bitfield_precision_constant, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit truncation from %2 to bit-field changes value from %0 to %1", 59, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_bool_to_null_pointer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "initialization of pointer of type %0 to null from a constant boolean expression", 64, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_complex_scalar, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion discards imaginary component: %0 to %1", 137, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_different_enum_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion from enumeration type %0 to different enumeration type %1", 210, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_double_promotion, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion increases floating-point precision: %0 to %1", 192, SFINAE_Suppress, false, false, 2) +DIAG(warn_impcast_fixed_point_range, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion from %0 cannot fit within the range of values for %1", 294, SFINAE_Suppress, false, false, 2) +DIAG(warn_impcast_float_integer, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion turns floating-point number into integer: %0 to %1", 229, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_float_precision, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion loses floating-point precision: %0 to %1", 295, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_float_result_precision, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion when assigning computation result loses floating-point precision: %0 to %1", 295, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_float_to_integer, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion from %0 to %1 changes value from %2 to %3", 231, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_float_to_integer_out_of_range, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion of out of range value from %0 to %1 is undefined", 231, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_float_to_integer_zero, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion from %0 to %1 changes non-zero value from %2 to %3", 232, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_floating_point_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion turns floating-point number into bool: %0 to %1", 290, SFINAE_Suppress, false, false, 2) +DIAG(warn_impcast_high_order_zero_bits, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "higher order bits are zeroes after implicit conversion", 298, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_integer_64_32, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion loses integer precision: %0 to %1", 602, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_integer_precision, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion loses integer precision: %0 to %1", 298, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_integer_precision_constant, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion from %2 to %3 changes value from %0 to %1", 133, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_integer_sign, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion changes signedness: %0 to %1", 604, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_integer_sign_conditional, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "operand of ? changes signedness: %0 to %1", 604, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_literal_float_to_integer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion from %0 to %1 changes value from %2 to %3", 355, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_literal_float_to_integer_out_of_range, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion of out of range value from %0 to %1 is undefined", 355, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_nonnegative_result, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "the resulting value is always non-negative after implicit conversion", 604, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_null_pointer_to_integer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit conversion of %select{NULL|nullptr}0 constant to %1", 454, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_objective_c_literal_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "implicit boolean conversion of Objective-C object literal always evaluates to true", 472, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_pointer_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "address of%select{| function| array}0 '%1' will always evaluate to 'true'", 531, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_string_literal_to_bool, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion turns string literal into bool: %0 to %1", 636, SFINAE_Suppress, false, false, 24) +DIAG(warn_impcast_vector_scalar, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion turns vector to scalar: %0 to %1", 137, SFINAE_Suppress, false, false, 24) +DIAG(warn_impl_required_for_class_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class property %0 requires method %1 to be defined - use @dynamic or provide a method implementation in this class implementation", 482, SFINAE_Suppress, false, false, 2) +DIAG(warn_impl_required_in_category_for_class_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class property %0 requires method %1 to be defined - use @dynamic or provide a method implementation in this category", 482, SFINAE_Suppress, false, false, 2) +DIAG(warn_implements_nscopying, CLASS_WARNING, (unsigned)diag::Severity::Warning, "default assign attribute on property %0 which implements NSCopying protocol is not appropriate with -fobjc-gc[-only]", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_implicit_atomic_property, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "property is assumed atomic by default", 289, SFINAE_Suppress, false, false, 2) +DIAG(warn_implicit_decl_requires_sysheader, CLASS_WARNING, (unsigned)diag::Severity::Warning, "declaration of built-in function '%1' requires inclusion of the header <%0>", 70, SFINAE_Suppress, false, false, 2) +DIAG(warn_implicit_function_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit declaration of function %0", 296, SFINAE_Suppress, false, false, 2) +DIAG(warn_implicitly_retains_self, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior", 299, SFINAE_Suppress, false, false, 2) +DIAG(warn_inaccessible_base_class, CLASS_WARNING, (unsigned)diag::Severity::Warning, "direct base %0 is inaccessible due to ambiguity:%1", 303, SFINAE_Suppress, false, false, 2) +DIAG(warn_incompatible_exception_specs, CLASS_WARNING, (unsigned)diag::Severity::Warning, "target exception specification is not superset of source", 306, SFINAE_Suppress, false, false, 2) +DIAG(warn_incompatible_qualified_id, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{%diff{assigning to $ from incompatible type $|assigning to type from incompatible type}0,1|%diff{passing $ to parameter of incompatible type $|passing type to parameter of incompatible type}0,1|%diff{returning $ from a function with incompatible result type $|returning type from a function with incompatible result type}0,1|%diff{converting $ to incompatible type $|converting type to incompatible type}0,1|%diff{initializing $ with an expression of incompatible type $|initializing type with an expression of incompatible type}0,1|%diff{sending $ to parameter of incompatible type $|sending type to parameter of incompatible type}0,1|%diff{casting $ to incompatible type $|casting type to incompatible type}0,1}2", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_incompatible_vectors, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "incompatible vector types %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2", 746, SFINAE_Suppress, false, false, 2) +DIAG(warn_incomplete_encoded_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "encoding of %0 type is incomplete because %1 component has unknown encoding", 206, SFINAE_Suppress, false, false, 2) +DIAG(warn_increment_bool, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incrementing expression of type bool is deprecated and incompatible with C++17", 169, SFINAE_Suppress, false, false, 27) +DIAG(warn_independentclass_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'objc_independent_class' attribute may be put on a typedef only; attribute is ignored", 5, SFINAE_Suppress, false, false, 2) +DIAG(warn_indirection_through_null, CLASS_WARNING, (unsigned)diag::Severity::Warning, "indirection of non-volatile null pointer will be deleted, not trap", 455, SFINAE_Suppress, false, false, 2) +DIAG(warn_infinite_recursive_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "all paths through this function will call itself", 322, SFINAE_Suppress, false, false, 2) +DIAG(warn_init_list_constant_narrowing, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "constant expression evaluates to %0 which cannot be narrowed to type %1 in C++11", 83, SFINAE_Suppress, false, false, 2) +DIAG(warn_init_list_type_narrowing, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "type %0 cannot be narrowed to %1 in initializer list in C++11", 83, SFINAE_Suppress, false, false, 2) +DIAG(warn_init_list_variable_narrowing, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-constant-expression cannot be narrowed from type %0 to %1 in initializer list in C++11", 83, SFINAE_Suppress, false, false, 2) +DIAG(warn_init_ptr_member_to_parameter_addr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "initializing pointer member %0 with the stack address of %select{variable|parameter}2 %1", 151, SFINAE_Suppress, false, false, 2) +DIAG(warn_initializer_out_of_order, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{field|base class}0 %1 will be initialized after %select{field|base}2 %3", 567, SFINAE_Suppress, false, false, 2) +DIAG(warn_initializer_overrides, CLASS_WARNING, (unsigned)diag::Severity::Warning, "initializer overrides prior initialization of this subobject", 324, SFINAE_Suppress, false, false, 2) +DIAG(warn_inline_namespace_reopened_noninline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "inline namespace reopened as a non-inline namespace", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_inst_method_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instance method %objcinstance0 not found (return type defaults to 'id')", 475, SFINAE_Suppress, false, false, 2) +DIAG(warn_instance_method_not_found_with_typo, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instance method %objcinstance0 not found (return type defaults to 'id'); did you mean %objcinstance2?", 475, SFINAE_Suppress, false, false, 2) +DIAG(warn_instance_method_on_class_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instance method %0 found instead of class method %1", 475, SFINAE_Suppress, false, false, 2) +DIAG(warn_int_to_pointer_cast, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cast to %1 from smaller integer type %0", 332, SFINAE_Suppress, false, false, 2) +DIAG(warn_int_to_void_pointer_cast, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cast to %1 from smaller integer type %0", 333, SFINAE_Suppress, false, false, 2) +DIAG(warn_internal_linkage_local_storage, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'internal_linkage' attribute on a non-static local variable is ignored", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_interrupt_attribute_invalid, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{MIPS|MSP430|RISC-V}0 'interrupt' attribute only applies to functions that have %select{no parameters|a 'void' return type}1", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_invalid_asm_cast_lvalue, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid use of a cast in an inline asm context requiring an l-value: accepted due to -fheinous-gnu-extensions, but clang may remove support for this in the future", 0, SFINAE_Suppress, false, false, 12) +DIAG(warn_invalid_capability_name, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "invalid capability name '%0'; capability name must be 'mutex' or 'role'", 663, SFINAE_Suppress, false, false, 2) +DIAG(warn_invalid_initializer_from_system_header, CLASS_WARNING, (unsigned)diag::Severity::Warning, "invalid constructor form class in system header, should not be explicit", 338, SFINAE_Suppress, false, false, 2) +DIAG(warn_ivar_use_hidden, CLASS_WARNING, (unsigned)diag::Severity::Warning, "local declaration of %0 hides instance variable", 594, SFINAE_Suppress, false, false, 2) +DIAG(warn_ivars_in_interface, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "declaration of instance variables in the interface is deprecated", 470, SFINAE_Suppress, false, false, 2) +DIAG(warn_jump_out_of_seh_finally, CLASS_WARNING, (unsigned)diag::Severity::Warning, "jump out of __finally block has undefined behavior", 348, SFINAE_Suppress, false, false, 2) +DIAG(warn_kern_is_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignored 'inline' attribute on kernel function %0", 147, SFINAE_Suppress, false, false, 2) +DIAG(warn_kern_is_method, CLASS_EXTENSION, (unsigned)diag::Severity::Ignored, "kernel function %0 is a member function; this may not be accepted by nvcc", 147, SFINAE_Suppress, false, false, 2) +DIAG(warn_lock_exclusive_and_shared, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 '%1' is acquired exclusively and shared in the same scope", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_lock_some_predecessors, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 '%1' is not held on every path through here", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_logical_and_in_logical_or, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'&&' within '||'", 359, SFINAE_Suppress, false, false, 2) +DIAG(warn_logical_instead_of_bitwise, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of logical '%0' with constant operand", 134, SFINAE_Suppress, false, false, 2) +DIAG(warn_logical_not_on_lhs_of_check, CLASS_WARNING, (unsigned)diag::Severity::Warning, "logical not is only applied to the left hand side of this %select{comparison|bitwise operator}0", 358, SFINAE_Suppress, false, false, 2) +DIAG(warn_loop_ctrl_binds_to_inner, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' is bound to current loop, GCC binds it to the enclosing loop", 250, SFINAE_Suppress, false, false, 2) +DIAG(warn_loop_state_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "state of variable '%0' must match at the entry and exit of loop", 136, SFINAE_Suppress, false, false, 2) +DIAG(warn_main_one_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "only one parameter on 'main' declaration", 363, SFINAE_Suppress, false, false, 2) +DIAG(warn_main_redefined, CLASS_WARNING, (unsigned)diag::Severity::Warning, "variable named 'main' with external linkage has undefined behavior", 363, SFINAE_Suppress, false, false, 2) +DIAG(warn_main_returns_bool_literal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "bool literal returned from 'main'", 363, SFINAE_Suppress, false, false, 2) +DIAG(warn_max_unsigned_zero, CLASS_WARNING, (unsigned)diag::Severity::Warning, "taking the max of %select{a value and unsigned zero|unsigned zero and a value}0 is always equal to the other value", 367, SFINAE_Suppress, false, false, 2) +DIAG(warn_maybe_falloff_nonvoid_coroutine, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control may reach end of coroutine; which is undefined behavior because the promise type %0 does not declare 'return_void()'", 575, SFINAE_Suppress, false, false, 2) +DIAG(warn_maybe_falloff_nonvoid_function, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control may reach end of non-void function", 575, SFINAE_Suppress, false, false, 2) +DIAG(warn_maybe_falloff_nonvoid_lambda, CLASS_WARNING, (unsigned)diag::Severity::Warning, "control may reach end of non-void lambda", 575, SFINAE_Suppress, false, false, 3) +DIAG(warn_maybe_uninit_var, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable %0 may be uninitialized when %select{used here|captured by block}1", 131, SFINAE_Suppress, false, false, 2) +DIAG(warn_maynot_respond, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 may not respond to %1", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_member_extra_qualification, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extra qualification on member %0", 385, SFINAE_Suppress, false, false, 2) +DIAG(warn_memcpy_chk_overflow, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' will always overflow; destination buffer has size %1, but size argument is %2", 69, SFINAE_Suppress, false, false, 2) +DIAG(warn_memsize_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "size argument in %0 call is a comparison", 369, SFINAE_Suppress, false, false, 2) +DIAG(warn_messaging_unqualified_id, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "messaging unqualified id", 474, SFINAE_Suppress, false, false, 2) +DIAG(warn_mismatched_availability, CLASS_WARNING, (unsigned)diag::Severity::Warning, "availability does not match previous declaration", 52, SFINAE_Suppress, false, false, 2) +DIAG(warn_mismatched_availability_override, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{|overriding }4method %select{introduced after|deprecated before|obsoleted before}0 %select{the protocol method it implements|overridden method}4 on %1 (%2 vs. %3)", 52, SFINAE_Suppress, false, false, 2) +DIAG(warn_mismatched_availability_override_unavail, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{|overriding }1method cannot be unavailable on %0 when %select{the protocol method it implements|its overridden method}1 is available", 52, SFINAE_Suppress, false, false, 2) +DIAG(warn_mismatched_delete_new, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'delete%select{|[]}0' applied to a pointer that was allocated with 'new%select{[]|}0'; did you mean 'delete%select{[]|}0'?", 400, SFINAE_Suppress, false, false, 2) +DIAG(warn_mismatched_nullability_attr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "nullability specifier %0 conflicts with existing specifier %1", 457, SFINAE_Suppress, false, false, 19) +DIAG(warn_mismatched_section, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{codeseg|section}0 does not match previous declaration", 578, SFINAE_Suppress, false, false, 2) +DIAG(warn_missing_braces, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "suggest braces around initialization of subobject", 404, SFINAE_Suppress, false, false, 2) +DIAG(warn_missing_case, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%plural{1:enumeration value %1 not handled in switch|2:enumeration values %1 and %2 not handled in switch|3:enumeration values %1, %2, and %3 not handled in switch|:%0 enumeration values not handled in switch: %1, %2, %3...}0", 644, SFINAE_Suppress, false, false, 2) +DIAG(warn_missing_case_for_condition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no case matching constant switch condition '%0'", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_missing_explicit_synthesis, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "auto property synthesis is synthesizing property not explicitly synthesized", 476, SFINAE_Suppress, false, false, 2) +DIAG(warn_missing_field_initializers, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "missing field %0 initializer", 407, SFINAE_Suppress, false, false, 2) +DIAG(warn_missing_format_string, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string missing", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_missing_method_return_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "method has no return type specified; defaults to 'id'", 410, SFINAE_Suppress, false, false, 2) +DIAG(warn_missing_prototype, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "no previous prototype for function %0", 414, SFINAE_Suppress, false, false, 2) +DIAG(warn_missing_sentinel, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing sentinel in %select{function call|method dispatch|block call}0", 586, SFINAE_Suppress, false, false, 2) +DIAG(warn_missing_variable_declarations, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "no previous extern declaration for non-static variable %0", 417, SFINAE_Suppress, false, false, 2) +DIAG(warn_mixed_sign_comparison, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "comparison of integers of different signs: %0 and %1", 603, SFINAE_Suppress, false, false, 2) +DIAG(warn_modifying_shadowing_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "modifying constructor parameter %0 that shadows a field of %1", 593, SFINAE_Suppress, false, false, 2) +DIAG(warn_multiple_method_decl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "multiple methods named %0 found", 478, SFINAE_Suppress, false, false, 2) +DIAG(warn_multiple_selectors, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "several methods with selector %0 of mismatched types are found for the @selector expression", 580, SFINAE_Suppress, false, false, 2) +DIAG(warn_multiversion_duplicate_entries, CLASS_WARNING, (unsigned)diag::Severity::Warning, "CPU list contains duplicate entries; attribute ignored", 248, SFINAE_Suppress, false, false, 0) +DIAG(warn_namespace_member_extra_qualification, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extra qualification on member %0", 221, SFINAE_Suppress, false, false, 2) +DIAG(warn_neon_vector_initializer_non_portable, CLASS_WARNING, (unsigned)diag::Severity::Warning, "vector initializers are not compatible with NEON intrinsics in big endian mode", 448, SFINAE_Suppress, false, false, 2) +DIAG(warn_new_dangling_initializer_list, CLASS_WARNING, (unsigned)diag::Severity::Warning, "array backing %select{initializer list subobject of the allocated object|the allocated initializer list}0 will be destroyed at the end of the full-expression", 152, SFINAE_Suppress, false, false, 2) +DIAG(warn_new_dangling_reference, CLASS_WARNING, (unsigned)diag::Severity::Warning, "temporary bound to reference member of allocated object will be destroyed at the end of the full-expression", 151, SFINAE_Suppress, false, false, 2) +DIAG(warn_no_autosynthesis_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto property synthesis will not synthesize property %0 because it is 'readwrite' but it will be synthesized 'readonly' via another property", 486, SFINAE_Suppress, false, false, 2) +DIAG(warn_no_autosynthesis_shared_ivar_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "auto property synthesis will not synthesize property %0 because it cannot share an ivar with another synthesized property", 486, SFINAE_Suppress, false, false, 2) +DIAG(warn_no_constructor_for_refconst, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{struct|interface|union|class|enum}0 %1 does not declare any constructor to initialize its non-modifiable members", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_no_underlying_type_specified_for_enum_bitfield, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "enums in the Microsoft ABI are signed integers by default; consider giving the enum %0 an unsigned underlying type to make this code portable", 606, SFINAE_Suppress, false, false, 2) +DIAG(warn_no_unlock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 '%1' is still held at the end of function", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_nocf_check_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'nocf_check' attribute ignored; use -fcf-protection to enable the attribute", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_noderef_on_non_pointer_or_array, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'noderef' can only be used on an array or pointer type", 282, SFINAE_Suppress, false, false, 0) +DIAG(warn_noderef_to_dereferenceable_pointer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "casting to dereferenceable pointer removes 'noderef' attribute", 436, SFINAE_Suppress, false, false, 0) +DIAG(warn_non_contravariant_overriding_param_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting parameter types in declaration of %0: %1 vs %2", 515, SFINAE_Suppress, false, false, 2) +DIAG(warn_non_contravariant_param_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting parameter types in implementation of %0: %1 vs %2", 370, SFINAE_Suppress, false, false, 2) +DIAG(warn_non_covariant_overriding_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting return type in declaration of %0: %1 vs %2", 515, SFINAE_Suppress, false, false, 2) +DIAG(warn_non_covariant_ret_types, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "conflicting return type in implementation of %0: %1 vs %2", 370, SFINAE_Suppress, false, false, 2) +DIAG(warn_non_literal_null_pointer, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression which evaluates to zero treated as a null pointer constant of type %0", 439, SFINAE_Suppress, false, false, 24) +DIAG(warn_non_pod_vararg_with_format_string, CLASS_WARNING, (unsigned)diag::Severity::Error, "cannot pass %select{non-POD|non-trivial}0 object of type %1 to variadic %select{function|block|method|constructor}2; expected type from format string was %3", 442, SFINAE_Suppress, false, false, 2) +DIAG(warn_non_virtual_dtor, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 has virtual functions but non-virtual destructor", 443, SFINAE_Suppress, false, false, 2) +DIAG(warn_nonnull_expr_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison of nonnull %select{function call|parameter}0 '%1' %select{not |}2equal to a null pointer is '%select{true|false}2' on first encounter", 655, SFINAE_Suppress, false, false, 2) +DIAG(warn_noreturn_function_has_return_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "function %0 declared 'noreturn' should not return", 340, SFINAE_Suppress, false, false, 2) +DIAG(warn_not_a_doxygen_trailing_member_comment, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "not a Doxygen trailing comment", 186, SFINAE_Suppress, false, false, 25) +DIAG(warn_not_compound_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of unary operator that may be intended as compound assignment (%0=)", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_not_enough_argument, CLASS_WARNING, (unsigned)diag::Severity::Warning, "not enough variable arguments in %0 declaration to fit a sentinel", 586, SFINAE_Suppress, false, false, 2) +DIAG(warn_not_in_enum, CLASS_WARNING, (unsigned)diag::Severity::Warning, "case value not in enumerated type %0", 644, SFINAE_Suppress, false, false, 2) +DIAG(warn_not_in_enum_assignment, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "integer constant not in range of enumerated type %0", 37, SFINAE_Suppress, false, false, 2) +DIAG(warn_ns_attribute_wrong_parameter_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to %select{Objective-C object|pointer|pointer-to-CF-pointer|pointer/reference-to-OSObject-pointer}1 parameters", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_ns_attribute_wrong_return_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute only applies to %select{functions|methods|properties}1 that return %select{an Objective-C object|a pointer|a non-retainable pointer}2", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_nsconsumed_attribute_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overriding method has mismatched ns_consumed attribute on its parameter", 450, SFINAE_Suppress, false, false, 2) +DIAG(warn_nsobject_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'NSObject' attribute may be put on a typedef only; attribute is ignored", 6, SFINAE_Suppress, false, false, 2) +DIAG(warn_nsreturns_retained_attribute_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overriding method has mismatched ns_returns_%select{not_retained|retained}0 attributes", 451, SFINAE_Suppress, false, false, 2) +DIAG(warn_null_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "null passed to a callee that requires a non-null argument", 444, SFINAE_Suppress, false, false, 28) +DIAG(warn_null_in_arithmetic_operation, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of NULL in arithmetic operation", 452, SFINAE_Suppress, false, false, 2) +DIAG(warn_null_in_comparison_operation, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison between NULL and non-pointer %select{(%1 and NULL)|(NULL and %1)}0", 452, SFINAE_Suppress, false, false, 2) +DIAG(warn_null_pointer_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "comparison of %select{address of|function|array}0 '%1' %select{not |}2equal to a null pointer is always %select{true|false}2", 655, SFINAE_Suppress, false, false, 2) +DIAG(warn_null_resettable_setter, CLASS_WARNING, (unsigned)diag::Severity::Warning, "synthesized setter %0 for null_resettable property %1 does not handle nil", 457, SFINAE_Suppress, false, false, 19) +DIAG(warn_null_ret, CLASS_WARNING, (unsigned)diag::Severity::Warning, "null returned from %select{function|method}0 that requires a non-null return value", 444, SFINAE_Suppress, false, false, 28) +DIAG(warn_nullability_declspec, CLASS_WARNING, (unsigned)diag::Severity::Error, "nullability specifier %0 cannot be applied to non-pointer type %1; did you mean to apply the specifier to the %select{pointer|block pointer|member pointer|function pointer|member function pointer}2?", 460, SFINAE_Suppress, false, false, 19) +DIAG(warn_nullability_inferred_on_nested_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "inferring '_Nonnull' for pointer type within %select{array|reference}0 is deprecated", 462, SFINAE_Suppress, false, false, 19) +DIAG(warn_nullability_lost, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implicit conversion from nullable pointer %0 to non-nullable pointer type %1", 463, SFINAE_Suppress, false, false, 19) +DIAG(warn_nullability_missing, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{pointer|block pointer|member pointer}0 is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)", 458, SFINAE_Suppress, false, false, 19) +DIAG(warn_nullability_missing_array, CLASS_WARNING, (unsigned)diag::Severity::Warning, "array parameter is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)", 459, SFINAE_Suppress, false, false, 19) +DIAG(warn_objc_cdirective_format_string, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using %0 directive in %select{NSString|CFString}1 which is being passed as a formatting argument to the formatting %select{method|CFfunction}2", 143, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_circular_container, CLASS_WARNING, (unsigned)diag::Severity::Warning, "adding %0 to %1 might cause circular dependency in container", 465, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_collection_literal_element, CLASS_WARNING, (unsigned)diag::Severity::Warning, "object of type %0 is not compatible with %select{array element type|dictionary key type|dictionary value type}1 %2", 472, SFINAE_Suppress, false, false, 24) +DIAG(warn_objc_designated_init_missing_super_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "designated initializer missing a 'super' call to a designated initializer of the super class", 467, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_designated_init_non_designated_init_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "designated initializer invoked a non-designated initializer", 467, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_designated_init_non_super_designated_init_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "designated initializer should only invoke a designated initializer on 'super'", 467, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_implementation_missing_designated_init_override, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method override for the designated initializer of the superclass %objcinstance0 not found", 467, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_invalid_bridge, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 bridges to %1, not %2", 67, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_invalid_bridge_to_cf, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 cannot bridge to %1", 67, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_isa_assign, CLASS_WARNING, (unsigned)diag::Severity::Warning, "assignment to Objective-C's isa is deprecated in favor of object_setClass()", 170, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_isa_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "direct access to Objective-C's isa is deprecated in favor of object_getClass()", 170, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_literal_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "direct comparison of %select{an array literal|a dictionary literal|a numeric literal|a boxed expression|}0 has undefined behavior", 471, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_missing_super_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method possibly missing a [super %0] call", 477, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_pointer_cxx_catch_fragile, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot catch an exception thrown with @throw in C++ in the non-unified exception model", 480, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_pointer_masking, CLASS_WARNING, (unsigned)diag::Severity::Warning, "bitmasking for introspection of Objective-C object pointers is strongly discouraged", 171, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_pointer_masking_performSelector, CLASS_WARNING, (unsigned)diag::Severity::Warning, "bitmasking for introspection of Objective-C object pointers is strongly discouraged", 172, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_precise_lifetime_meaningless, CLASS_ERROR, (unsigned)diag::Severity::Error, "objc_precise_lifetime is not meaningful for %select{__unsafe_unretained|__autoreleasing}0 objects", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(warn_objc_property_assign_on_object, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'assign' property of object type may become a dangling reference; consider using 'unsafe_unretained'", 481, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_property_copy_missing_on_block, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'copy' attribute must be specified for the block property when -fobjc-gc-only is specified", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_property_default_assign_on_object, CLASS_WARNING, (unsigned)diag::Severity::Warning, "default property attribute 'assign' not appropriate for object", 485, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_property_no_assignment_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed", 485, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_property_retain_of_block, CLASS_WARNING, (unsigned)diag::Severity::Warning, "retain'ed block property does not copy the block - use copy attribute instead", 479, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_readonly_property_has_setter, CLASS_WARNING, (unsigned)diag::Severity::Warning, "setter cannot be specified for a readonly property", 490, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_redundant_literal_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using %0 with a literal is redundant", 492, SFINAE_Suppress, false, false, 29) +DIAG(warn_objc_redundant_qualified_class_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "parameterized class %0 already conforms to the protocols listed; did you forget a '*'?", 489, SFINAE_Suppress, false, false, 0) +DIAG(warn_objc_requires_super_protocol, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute cannot be applied to %select{methods in protocols|dealloc}1", 568, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_root_class_missing, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class %0 defined without specifying a base class", 493, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_secondary_init_missing_init_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "convenience initializer missing a 'self' call to another initializer", 467, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_secondary_init_super_init_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "convenience initializer should not invoke an initializer on 'super'", 467, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_string_literal_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "direct comparison of a string literal has undefined behavior", 494, SFINAE_Suppress, false, false, 2) +DIAG(warn_objc_unsafe_perform_selector, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is incompatible with selectors that return a %select{struct|union|vector}1 type", 496, SFINAE_Suppress, false, false, 2) +DIAG(warn_old_style_cast, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "use of old-style cast", 498, SFINAE_Suppress, false, false, 2) +DIAG(warn_omp_alignment_not_power_of_two, CLASS_WARNING, (unsigned)diag::Severity::Warning, "aligned clause will be ignored because the requested alignment is not a power of 2", 501, SFINAE_Suppress, false, false, 11) +DIAG(warn_omp_linear_step_zero, CLASS_WARNING, (unsigned)diag::Severity::Warning, "zero linear step (%0 %select{|and other variables in clause }1should probably be const)", 501, SFINAE_Suppress, false, false, 11) +DIAG(warn_omp_loop_64_bit_var, CLASS_WARNING, (unsigned)diag::Severity::Warning, "OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed", 502, SFINAE_Suppress, false, false, 11) +DIAG(warn_omp_nesting_simd, CLASS_WARNING, (unsigned)diag::Severity::Warning, "OpenMP only allows an ordered construct with the simd clause nested in a simd construct", 613, SFINAE_Suppress, false, false, 11) +DIAG(warn_omp_non_trivial_type_mapped, CLASS_WARNING, (unsigned)diag::Severity::Warning, "Non-trivial type %0 is mapped, only trivial types are guaranteed to be mapped correctly", 503, SFINAE_Suppress, false, false, 11) +DIAG(warn_omp_not_in_target_context, CLASS_WARNING, (unsigned)diag::Severity::Warning, "declaration is not declared in any declare target region", 503, SFINAE_Suppress, false, false, 11) +DIAG(warn_omp_section_is_char, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "array section %select{lower bound|length}0 is of type 'char'", 122, SFINAE_Suppress, false, false, 11) +DIAG(warn_on_superclass_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "class implementation may not have super class", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_opencl_attr_deprecated_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 attribute is deprecated and ignored in OpenCL version %1", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_opencl_generic_address_space_arg, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "passing non-generic address space pointer to %0 may cause dynamic conversion affecting performance", 137, SFINAE_Suppress, false, false, 24) +DIAG(warn_operator_new_returns_null, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 should not return a null pointer unless it is declared 'throw()'%select{| or 'noexcept'}1", 434, SFINAE_Suppress, false, false, 2) +DIAG(warn_os_log_format_narg, CLASS_ERROR, (unsigned)diag::Severity::Error, "os_log() '%%n' format specifier is not allowed", 0, SFINAE_SubstitutionFailure, false, true, 2) +DIAG(warn_out_of_range_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "result of comparison of %select{constant %0|true|false}1 with %select{expression of type %2|boolean expression}3 is always %4", 653, SFINAE_Suppress, false, false, 2) +DIAG(warn_overaligned_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "type %0 requires %1 bytes of alignment and the default allocator only guarantees %2 bytes", 508, SFINAE_Suppress, false, false, 2) +DIAG(warn_overloaded_shift_in_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "overloaded operator %select{>>|<<}0 has higher precedence than comparison operator", 511, SFINAE_Suppress, false, false, 2) +DIAG(warn_overloaded_virtual, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%q0 hides overloaded virtual %select{function|functions}1", 512, SFINAE_Suppress, false, false, 2) +DIAG(warn_overriding_method_missing_noescape, CLASS_WARNING, (unsigned)diag::Severity::Warning, "parameter of overriding method should be annotated with __attribute__((noescape))", 411, SFINAE_Suppress, false, false, 2) +DIAG(warn_param_return_typestate_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "parameter '%0' not in expected state when the function returns: expected '%1', observed '%2'", 136, SFINAE_Suppress, false, false, 2) +DIAG(warn_param_typestate_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "argument not in expected state; expected '%0', observed '%1'", 136, SFINAE_Suppress, false, false, 2) +DIAG(warn_parameter_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is a large (%1 bytes) pass-by-value argument; pass it by reference instead ?", 353, SFINAE_Suppress, false, false, 2) +DIAG(warn_parens_disambiguated_as_function_declaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "parentheses were disambiguated as a function declaration", 748, SFINAE_Suppress, false, false, 2) +DIAG(warn_parens_disambiguated_as_variable_declaration, CLASS_WARNING, (unsigned)diag::Severity::Warning, "parentheses were disambiguated as redundant parentheses around declaration of variable named %0", 748, SFINAE_Suppress, false, false, 2) +DIAG(warn_pass_class_arg_to_vararg, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "passing object of class type %0 through variadic %select{function|block|method|constructor}1%select{|; did you mean to call '%3'?}2", 124, SFINAE_Suppress, false, false, 2) +DIAG(warn_pessimizing_move_on_initialization, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "moving a temporary object prevents copy elision", 529, SFINAE_Suppress, false, false, 2) +DIAG(warn_pessimizing_move_on_return, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "moving a local object in a return statement prevents copy elision", 529, SFINAE_Suppress, false, false, 2) +DIAG(warn_pointer_abs, CLASS_WARNING, (unsigned)diag::Severity::Warning, "taking the absolute value of %select{pointer|function|array}0 type %1 is suspicious", 8, SFINAE_Suppress, false, false, 2) +DIAG(warn_pointer_arith_null_ptr, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "performing pointer arithmetic on a null pointer has undefined behavior%select{| if the offset is nonzero}0", 456, SFINAE_Suppress, false, false, 2) +DIAG(warn_pointer_indirection_from_incompatible_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "dereference of type %1 that was reinterpret_cast from type %0 has undefined behavior", 683, SFINAE_Suppress, false, false, 2) +DIAG(warn_pragma_attribute_unused, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unused attribute %0 in '#pragma clang attribute push' region", 537, SFINAE_Suppress, false, false, 2) +DIAG(warn_pragma_options_align_reset_failed, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma options align=reset failed: %0", 286, SFINAE_Suppress, false, false, 2) +DIAG(warn_pragma_pack_invalid_alignment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expected #pragma pack parameter to be '1', '2', '4', '8', or '16'", 286, SFINAE_Suppress, false, false, 2) +DIAG(warn_pragma_pack_modified_after_include, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the current #pragma pack alignment value is modified in the included file", 539, SFINAE_Suppress, false, false, 2) +DIAG(warn_pragma_pack_no_pop_eof, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unterminated '#pragma pack (push, ...)' at end of file", 539, SFINAE_Suppress, false, false, 2) +DIAG(warn_pragma_pack_non_default_at_include, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-default #pragma pack value changes the alignment of struct or union members in the included file", 540, SFINAE_Suppress, false, false, 2) +DIAG(warn_pragma_pack_pop_identifier_and_alignment, CLASS_WARNING, (unsigned)diag::Severity::Warning, "specifying both a name and alignment to 'pop' is undefined", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_pragma_pack_show, CLASS_WARNING, (unsigned)diag::Severity::Warning, "value of #pragma pack(show) == %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_pragma_pop_failed, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma %0(pop, ...) failed: %1", 286, SFINAE_Suppress, false, false, 2) +DIAG(warn_pragma_unused_expected_var_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "only variables can be arguments to '#pragma unused'", 286, SFINAE_Suppress, false, false, 2) +DIAG(warn_pragma_unused_undeclared_var, CLASS_WARNING, (unsigned)diag::Severity::Warning, "undeclared variable %0 used as an argument for '#pragma unused'", 286, SFINAE_Suppress, false, false, 2) +DIAG(warn_precedence_bitwise_rel, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 has lower precedence than %1; %1 will be evaluated first", 519, SFINAE_Suppress, false, false, 2) +DIAG(warn_precedence_conditional, CLASS_WARNING, (unsigned)diag::Severity::Warning, "operator '?:' has lower precedence than '%0'; '%0' will be evaluated first", 519, SFINAE_Suppress, false, false, 2) +DIAG(warn_printf_ObjCflags_without_ObjCConversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "object format flags cannot be used with '%0' conversion specifier", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_printf_asterisk_missing_arg, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%select{*|.*}0' specified field %select{width|precision}0 is missing a matching 'int' argument", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_printf_asterisk_wrong_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "field %select{width|precision}0 should have type %1, but argument has type %2", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_printf_data_arg_not_used, CLASS_WARNING, (unsigned)diag::Severity::Warning, "data argument not used by format string", 235, SFINAE_Suppress, false, false, 28) +DIAG(warn_printf_empty_objc_flag, CLASS_WARNING, (unsigned)diag::Severity::Warning, "missing object format flag", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_printf_format_string_contains_null_char, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string contains '\\0' within the string body", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_printf_format_string_not_null_terminated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "format string is not null-terminated", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_printf_ignored_flag, CLASS_WARNING, (unsigned)diag::Severity::Warning, "flag '%0' is ignored when flag '%1' is present", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_printf_incomplete_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incomplete format specifier", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_printf_insufficient_data_args, CLASS_WARNING, (unsigned)diag::Severity::Warning, "more '%%' conversions than data arguments", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_printf_invalid_objc_flag, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' is not a valid object format flag", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_printf_nonsensical_flag, CLASS_WARNING, (unsigned)diag::Severity::Warning, "flag '%0' results in undefined behavior with '%1' conversion specifier", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_printf_nonsensical_optional_amount, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{field width|precision}0 used with '%1' conversion specifier, resulting in undefined behavior", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_printf_positional_arg_exceeds_data_args, CLASS_WARNING, (unsigned)diag::Severity::Warning, "data argument position '%0' exceeds the number of data arguments (%1)", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_private_extern, CLASS_WARNING, (unsigned)diag::Severity::Warning, "use of __private_extern__ on a declaration may not produce external symbol private to the linkage unit and is deprecated", 544, SFINAE_Suppress, false, false, 2) +DIAG(warn_property_access_suggest, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property %0 not found on object of type %1; did you mean to access property %2?", 550, SFINAE_Suppress, false, false, 2) +DIAG(warn_property_attr_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property attribute in class extension does not match the primary class", 551, SFINAE_Suppress, false, false, 2) +DIAG(warn_property_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%1' attribute on property %0 does not match the property inherited from %2", 551, SFINAE_Suppress, false, false, 2) +DIAG(warn_property_getter_owning_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property declared as returning non-retained objects; getter returning retained objects", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_property_implicitly_mismatched, CLASS_WARNING, (unsigned)diag::Severity::Warning, "primary property declaration is implicitly strong while redeclaration in class extension is weak", 483, SFINAE_Suppress, false, false, 2) +DIAG(warn_property_method_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property access is using %0 method which is deprecated", 166, SFINAE_Suppress, false, false, 27) +DIAG(warn_property_redecl_getter_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "getter name mismatch between property redeclaration (%1) and its original declaration (%0)", 551, SFINAE_Suppress, false, false, 2) +DIAG(warn_property_types_are_incompatible, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property type %0 is incompatible with type %1 inherited from %2", 312, SFINAE_Suppress, false, false, 2) +DIAG(warn_protocol_property_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property %select{of type %1|with attribute '%1'|without attribute '%1'|with getter %1|with setter %1}0 was selected for synthesis", 553, SFINAE_Suppress, false, false, 2) +DIAG(warn_pt_guarded_pass_by_reference, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "passing the value that %1 points to by reference requires holding %0 %select{'%2'|'%2' exclusively}3", 667, SFINAE_Suppress, false, false, 2) +DIAG(warn_ptr_arith_exceeds_bounds, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "the pointer incremented by %0 refers past the end of the array (that contains %1 element%s2)", 33, SFINAE_Suppress, false, false, 2) +DIAG(warn_ptr_arith_precedes_bounds, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "the pointer decremented by %0 refers before the beginning of the array", 33, SFINAE_Suppress, false, false, 2) +DIAG(warn_ptr_independentclass_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'objc_independent_class' attribute may be put on Objective-C object pointer type only; attribute is ignored", 5, SFINAE_Suppress, false, false, 2) +DIAG(warn_qual_return_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'%0' type qualifier%s1 on return type %plural{1:has|:have}1 no effect", 287, SFINAE_Suppress, false, false, 2) +DIAG(warn_readonly_property, CLASS_WARNING, (unsigned)diag::Severity::Warning, "attribute 'readonly' of property %0 restricts attribute 'readwrite' of property inherited from %1", 551, SFINAE_Suppress, false, false, 2) +DIAG(warn_receiver_forward_class, CLASS_WARNING, (unsigned)diag::Severity::Warning, "receiver %0 is a forward class and corresponding @interface may not exist", 559, SFINAE_Suppress, false, false, 2) +DIAG(warn_receiver_forward_instance, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "receiver type %0 for instance message is a forward declaration", 559, SFINAE_Suppress, false, false, 5) +DIAG(warn_redecl_library_builtin, CLASS_WARNING, (unsigned)diag::Severity::Warning, "incompatible redeclaration of library function %0", 308, SFINAE_Suppress, false, false, 2) +DIAG(warn_redeclaration_without_attribute_prev_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%q0 redeclared without %1 attribute: previous %1 ignored", 318, SFINAE_Suppress, false, false, 2) +DIAG(warn_redeclaration_without_import_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%q0 redeclared without 'dllimport' attribute: 'dllexport' attribute added", 318, SFINAE_Suppress, false, false, 2) +DIAG(warn_redefine_extname_not_applied, CLASS_WARNING, (unsigned)diag::Severity::Warning, "#pragma redefine_extname is applicable to external C declarations only; not applied to %select{function|variable}0 %1", 542, SFINAE_Suppress, false, false, 2) +DIAG(warn_redefinition_in_param_list, CLASS_WARNING, (unsigned)diag::Severity::Warning, "redefinition of %0 will not be visible outside of this function", 749, SFINAE_Suppress, false, false, 2) +DIAG(warn_redundant_loop_iteration, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable %0 is %select{decremented|incremented}1 both in the loop header and in the loop body", 233, SFINAE_Suppress, false, false, 2) +DIAG(warn_redundant_move_on_return, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "redundant move in return statement", 562, SFINAE_Suppress, false, false, 2) +DIAG(warn_redundant_parens_around_declarator, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "redundant parentheses surrounding declarator", 563, SFINAE_Suppress, false, false, 2) +DIAG(warn_reference_field_is_uninit, CLASS_WARNING, (unsigned)diag::Severity::Warning, "reference %0 is not yet bound to a value when used here", 692, SFINAE_Suppress, false, false, 2) +DIAG(warn_register_objc_catch_parm, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'register' storage specifier on @catch parameter will be ignored", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_reinterpret_different_from_static, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'reinterpret_cast' %select{from|to}3 class %0 %select{to|from}3 its %select{virtual base|base at non-zero offset}2 %1 behaves differently from 'static_cast'", 565, SFINAE_Suppress, false, false, 2) +DIAG(warn_related_result_type_compatibility_class, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method is expected to return an instance of its class type %diff{$, but is declared to return $|, but is declared to return different type}0,1", 0, SFINAE_Suppress, false, false, 17) +DIAG(warn_related_result_type_compatibility_protocol, CLASS_WARNING, (unsigned)diag::Severity::Warning, "protocol method is expected to return an instance of the implementing class, but is declared to return %0", 0, SFINAE_Suppress, false, false, 17) +DIAG(warn_remainder_division_by_zero, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{remainder|division}0 by zero is undefined", 182, SFINAE_Suppress, false, false, 2) +DIAG(warn_ret_addr_label, CLASS_WARNING, (unsigned)diag::Severity::Warning, "returning address of label, which is local", 572, SFINAE_Suppress, false, false, 2) +DIAG(warn_ret_local_temp_addr_ref, CLASS_WARNING, (unsigned)diag::Severity::Warning, "returning %select{address of|reference to}0 local temporary object", 572, SFINAE_Suppress, false, false, 2) +DIAG(warn_ret_stack_addr_ref, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{address of|reference to}0 stack memory associated with %select{local variable|parameter}2 %1 returned", 572, SFINAE_Suppress, false, false, 2) +DIAG(warn_return_missing_expr, CLASS_WARNING, (unsigned)diag::Severity::Error, "non-void %select{function|method}1 %0 should return a value", 575, SFINAE_Suppress, false, false, 2) +DIAG(warn_return_std_move, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "local variable %0 will be copied despite being %select{returned|thrown}1 by name", 573, SFINAE_Suppress, false, false, 2) +DIAG(warn_return_std_move_in_cxx11, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "prior to the resolution of a defect report against ISO C++11, local variable %0 would have been copied despite being returned by name, due to its not matching the function return type%diff{ ($ vs $)|}1,2", 574, SFINAE_Suppress, false, false, 2) +DIAG(warn_return_typestate_for_unconsumable_type, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "return state set for an unconsumable type '%0'", 136, SFINAE_Suppress, false, false, 2) +DIAG(warn_return_typestate_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "return value not in expected state; expected '%0', observed '%1'", 136, SFINAE_Suppress, false, false, 2) +DIAG(warn_return_value_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "return value of %0 is a large (%1 bytes) pass-by-value object; pass it by reference instead ?", 353, SFINAE_Suppress, false, false, 2) +DIAG(warn_return_value_udt, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 has C-linkage specified, but returns user-defined type %1 which is incompatible with C", 576, SFINAE_Suppress, false, false, 2) +DIAG(warn_return_value_udt_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 has C-linkage specified, but returns incomplete type %1 which could be incompatible with C", 576, SFINAE_Suppress, false, false, 2) +DIAG(warn_riscv_repeated_interrupt_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "repeated RISC-V 'interrupt' attribute", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_root_inst_method_not_found, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instance method %0 is being used on 'Class' which is not in the root class", 475, SFINAE_Suppress, false, false, 2) +DIAG(warn_sampler_initializer_invalid_bits, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "sampler initializer has invalid %0 bits", 614, SFINAE_Suppress, false, false, 2) +DIAG(warn_scanf_nonzero_width, CLASS_WARNING, (unsigned)diag::Severity::Warning, "zero field width in scanf format string is unused", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_scanf_scanlist_incomplete, CLASS_WARNING, (unsigned)diag::Severity::Warning, "no closing ']' for '%%[' in scanf format string", 234, SFINAE_Suppress, false, false, 28) +DIAG(warn_second_arg_of_va_start_not_last_named_param, CLASS_WARNING, (unsigned)diag::Severity::Warning, "second argument to 'va_start' is not the last named parameter", 743, SFINAE_Suppress, false, false, 2) +DIAG(warn_second_parameter_to_va_arg_never_compatible, CLASS_WARNING, (unsigned)diag::Severity::Warning, "second argument to 'va_arg' is of promotable type %0; this va_arg has undefined behavior because arguments will be promoted to %1", 743, SFINAE_Suppress, false, false, 2) +DIAG(warn_second_parameter_to_va_arg_not_pod, CLASS_WARNING, (unsigned)diag::Severity::Error, "second argument to 'va_arg' is of non-POD type %0", 442, SFINAE_Suppress, false, false, 2) +DIAG(warn_second_parameter_to_va_arg_ownership_qualified, CLASS_WARNING, (unsigned)diag::Severity::Error, "second argument to 'va_arg' is of ARC ownership-qualified type %0", 442, SFINAE_Suppress, false, false, 2) +DIAG(warn_self_assignment_builtin, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicitly assigning value of variable of type %0 to itself", 581, SFINAE_Suppress, false, false, 2) +DIAG(warn_self_assignment_overloaded, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicitly assigning value of variable of type %0 to itself", 583, SFINAE_Suppress, false, false, 2) +DIAG(warn_self_move, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicitly moving variable of type %0 to itself", 584, SFINAE_Suppress, false, false, 2) +DIAG(warn_setter_getter_impl_required, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property %0 requires method %1 to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation", 482, SFINAE_Suppress, false, false, 2) +DIAG(warn_setter_getter_impl_required_in_category, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property %0 requires method %1 to be defined - use @dynamic or provide a method implementation in this category", 482, SFINAE_Suppress, false, false, 2) +DIAG(warn_shadow_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{parameter|non-static data member}3 %0 %select{|of %1 }3shadows member inherited from type %2", 591, SFINAE_Suppress, false, false, 0) +DIAG(warn_shift_gt_typewidth, CLASS_WARNING, (unsigned)diag::Severity::Warning, "shift count >= width of type", 597, SFINAE_Suppress, false, false, 2) +DIAG(warn_shift_lhs_negative, CLASS_WARNING, (unsigned)diag::Severity::Warning, "shifting a negative signed value is undefined", 598, SFINAE_Suppress, false, false, 2) +DIAG(warn_shift_negative, CLASS_WARNING, (unsigned)diag::Severity::Warning, "shift count is negative", 596, SFINAE_Suppress, false, false, 2) +DIAG(warn_shift_result_gt_typewidth, CLASS_WARNING, (unsigned)diag::Severity::Warning, "signed shift result (%0) requires %1 bits to represent, but %2 only has %3 bits", 600, SFINAE_Suppress, false, false, 2) +DIAG(warn_shift_result_sets_sign_bit, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "signed shift result (%0) sets the sign bit of the shift expression's type (%1) and becomes negative", 601, SFINAE_Suppress, false, false, 2) +DIAG(warn_side_effects_typeid, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression with side effects will be evaluated despite being used as an operand to 'typeid'", 536, SFINAE_Suppress, false, false, 32) +DIAG(warn_side_effects_unevaluated_context, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression with side effects has no effect in an unevaluated context", 685, SFINAE_Suppress, false, false, 32) +DIAG(warn_signed_bitfield_enum_conversion, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "signed bit-field %0 needs an extra bit to represent the largest positive enumerators of %1", 60, SFINAE_Suppress, false, false, 24) +DIAG(warn_sizeof_array_decay, CLASS_WARNING, (unsigned)diag::Severity::Warning, "sizeof on pointer operation will return size of %0 instead of %1", 608, SFINAE_Suppress, false, false, 2) +DIAG(warn_sizeof_array_param, CLASS_WARNING, (unsigned)diag::Severity::Warning, "sizeof on array function parameter will return size of %0 instead of %1", 607, SFINAE_Suppress, false, false, 2) +DIAG(warn_sizeof_pointer_expr_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' call operates on objects of type %1 while the size is based on a different type %2", 610, SFINAE_Suppress, false, false, 2) +DIAG(warn_sizeof_pointer_expr_memaccess_note, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "did you mean to %select{dereference the argument to 'sizeof' (and multiply it by the number of elements)|remove the addressof in the argument to 'sizeof' (and multiply it by the number of elements)|provide an explicit length}0?", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_sizeof_pointer_type_memaccess, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument to 'sizeof' in %0 call is the same pointer type %1 as the %select{destination|source}2; expected %3 or an explicit length", 610, SFINAE_Suppress, false, false, 2) +DIAG(warn_sometimes_uninit_var, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable %0 is %select{used|captured}1 uninitialized whenever %select{'%3' condition is %select{true|false}4|'%3' loop %select{is entered|exits because its condition is false}4|'%3' loop %select{condition is true|exits because its condition is false}4|switch %3 is taken|its declaration is reached|%3 is called}2", 612, SFINAE_Suppress, false, false, 2) +DIAG(warn_standalone_specifier, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' ignored on this declaration", 405, SFINAE_Suppress, false, false, 2) +DIAG(warn_static_array_too_small, CLASS_WARNING, (unsigned)diag::Severity::Warning, "array argument is too small; %select{contains %0 elements|is of size %0}2, callee requires at least %1", 32, SFINAE_Suppress, false, false, 2) +DIAG(warn_static_local_in_extern_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "non-constant static local variable in inline function may be different in different files", 619, SFINAE_Suppress, false, false, 2) +DIAG(warn_static_main, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'main' should not be declared static", 363, SFINAE_Suppress, false, false, 2) +DIAG(warn_static_self_reference_in_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "static variable %0 is suspiciously used within its own initialization", 620, SFINAE_Suppress, false, false, 2) +DIAG(warn_strict_multiple_method_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "multiple methods named %0 found", 634, SFINAE_Suppress, false, false, 2) +DIAG(warn_strict_prototypes, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "this %select{function declaration is not|block declaration is not|old-style function definition is not preceded by}0 a prototype", 633, SFINAE_Suppress, false, false, 2) +DIAG(warn_string_plus_char, CLASS_WARNING, (unsigned)diag::Severity::Warning, "adding %0 to a string pointer does not append to the string", 637, SFINAE_Suppress, false, false, 2) +DIAG(warn_string_plus_int, CLASS_WARNING, (unsigned)diag::Severity::Warning, "adding %0 to a string does not append to the string", 638, SFINAE_Suppress, false, false, 2) +DIAG(warn_stringcompare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "result of comparison against %select{a string literal|@encode}0 is unspecified (use strncmp instead)", 635, SFINAE_Suppress, false, false, 2) +DIAG(warn_strlcpycat_wrong_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "size argument in %0 call appears to be size of the source; expected the size of the destination", 639, SFINAE_Suppress, false, false, 2) +DIAG(warn_strncat_large_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the value of the size argument in 'strncat' is too large, might lead to a buffer overflow", 640, SFINAE_Suppress, false, false, 2) +DIAG(warn_strncat_src_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "size argument in 'strncat' call appears to be size of the source", 640, SFINAE_Suppress, false, false, 2) +DIAG(warn_strncat_wrong_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the value of the size argument to 'strncat' is wrong", 640, SFINAE_Suppress, false, false, 2) +DIAG(warn_struct_class_previous_tag_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%2 defined as %select{a struct|an interface|a class}0%select{| template}1 here but previously declared as %select{a struct|an interface|a class}3%select{| template}1; this is valid, but may result in linker errors under the Microsoft C++ ABI", 403, SFINAE_Suppress, false, false, 2) +DIAG(warn_struct_class_tag_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{struct|interface|class}0%select{| template}1 %2 was previously declared as a %select{struct|interface|class}3%select{| template}1; this is valid, but may result in linker errors under the Microsoft C++ ABI", 403, SFINAE_Suppress, false, false, 2) +DIAG(warn_sub_ptr_zero_size_types, CLASS_WARNING, (unsigned)diag::Severity::Warning, "subtraction of pointers to type %0 of zero size has undefined behavior", 530, SFINAE_Suppress, false, false, 2) +DIAG(warn_subobject_initializer_overrides, CLASS_WARNING, (unsigned)diag::Severity::Warning, "subobject initialization overrides initialization of other fields within its enclosing subobject", 324, SFINAE_Suppress, false, false, 2) +DIAG(warn_subscript_is_char, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "array subscript is of type 'char'", 122, SFINAE_Suppress, false, false, 2) +DIAG(warn_suggest_noreturn_block, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "block could be declared with attribute 'noreturn'", 412, SFINAE_Suppress, false, false, 2) +DIAG(warn_suggest_noreturn_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{function|method}0 %1 could be declared with attribute 'noreturn'", 412, SFINAE_Suppress, false, false, 2) +DIAG(warn_superclass_variable_sized_type_not_at_end, CLASS_WARNING, (unsigned)diag::Severity::Warning, "field %0 can overwrite instance variable %1 with variable sized type %2 in superclass %3", 468, SFINAE_Suppress, false, false, 2) +DIAG(warn_suspicious_bzero_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'size' argument to bzero is '0'", 642, SFINAE_Suppress, false, false, 2) +DIAG(warn_suspicious_sizeof_memset, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{'size' argument to memset is '0'|setting buffer to a 'sizeof' expression}0; did you mean to transpose the last two arguments?", 368, SFINAE_Suppress, false, false, 2) +DIAG(warn_sync_fetch_and_nand_semantics_change, CLASS_WARNING, (unsigned)diag::Severity::Warning, "the semantics of this intrinsic changed with GCC version 4.4 - the newer semantics are provided here", 648, SFINAE_Suppress, false, false, 2) +DIAG(warn_taking_address_of_packed_member, CLASS_WARNING, (unsigned)diag::Severity::Warning, "taking address of packed member %0 of class or structure %q1 may result in an unaligned pointer value", 12, SFINAE_Suppress, false, false, 2) +DIAG(warn_tautological_bool_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "result of comparison of %select{constant %0|true|false}1 with %select{expression of type %2|boolean expression}3 is always %4", 651, SFINAE_Suppress, false, false, 2) +DIAG(warn_tautological_constant_compare, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "result of comparison %select{%3|%1}0 %2 %select{%1|%3}0 is always %4", 656, SFINAE_Suppress, false, false, 2) +DIAG(warn_tautological_overlap_comparison, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "overlapping comparisons always evaluate to %select{false|true}0", 654, SFINAE_Suppress, false, false, 2) +DIAG(warn_template_arg_negative, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-type template argument with value '%0' converted to '%1' for unsigned template parameter of type %2", 137, SFINAE_Suppress, false, false, 24) +DIAG(warn_template_arg_too_large, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "non-type template argument value '%0' truncated to '%1' for template parameter of type %2", 137, SFINAE_Suppress, false, false, 24) +DIAG(warn_template_export_unsupported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "exported templates are unsupported", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_template_qualified_friend_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "dependent nested name specifier '%0' for friend template declaration is not supported; ignoring this friend declaration", 712, SFINAE_Suppress, false, false, 2) +DIAG(warn_template_qualified_friend_unsupported, CLASS_WARNING, (unsigned)diag::Severity::Warning, "dependent nested name specifier '%0' for friend class declaration is not supported; turning off access control for %1", 712, SFINAE_Suppress, false, false, 2) +DIAG(warn_template_spec_extra_headers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "extraneous template parameter list in template specialization", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_tentative_incomplete_array, CLASS_WARNING, (unsigned)diag::Severity::Warning, "tentative array definition assumed to have one element", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_this_bool_conversion, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true", 678, SFINAE_Suppress, false, false, 24) +DIAG(warn_this_null_compare, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'this' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to %select{true|false}0", 657, SFINAE_Suppress, false, false, 2) +DIAG(warn_thread_attribute_argument_not_lockable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 attribute requires arguments whose type is annotated with 'capability' attribute; type here is %1", 663, SFINAE_Suppress, false, false, 2) +DIAG(warn_thread_attribute_decl_not_lockable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 attribute can only be applied in a context annotated with 'capability(\"mutex\")' attribute", 663, SFINAE_Suppress, false, false, 2) +DIAG(warn_thread_attribute_decl_not_pointer, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 only applies to pointer types; type here is %1", 663, SFINAE_Suppress, false, false, 2) +DIAG(warn_thread_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "ignoring %0 attribute because its argument is invalid", 663, SFINAE_Suppress, false, false, 2) +DIAG(warn_thread_attribute_not_on_capability_member, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 attribute without capability arguments refers to 'this', but %1 isn't annotated with 'capability' or 'scoped_lockable' attribute", 663, SFINAE_Suppress, false, false, 2) +DIAG(warn_thread_attribute_not_on_non_static_member, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 attribute without capability arguments can only be applied to non-static methods of a class", 663, SFINAE_Suppress, false, false, 2) +DIAG(warn_thread_safety_beta, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "Thread safety beta warning.", 664, SFINAE_Suppress, false, false, 2) +DIAG(warn_thread_safety_verbose, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "Thread safety verbose warning.", 668, SFINAE_Suppress, false, false, 2) +DIAG(warn_throw_in_noexcept_func, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 has a non-throwing exception specification but can still throw", 212, SFINAE_Suppress, false, false, 2) +DIAG(warn_transparent_union_attribute_field_size_align, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{alignment|size}0 of field %1 (%2 bits) does not match the %select{alignment|size}0 of the first field in transparent union; transparent_union attribute ignored", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_transparent_union_attribute_floating, CLASS_WARNING, (unsigned)diag::Severity::Warning, "first field of a transparent union cannot have %select{floating point|vector}0 type %1; transparent_union attribute ignored", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_transparent_union_attribute_not_definition, CLASS_WARNING, (unsigned)diag::Severity::Warning, "transparent_union attribute can only be applied to a union definition; attribute ignored", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_transparent_union_attribute_zero_fields, CLASS_WARNING, (unsigned)diag::Severity::Warning, "transparent union definition must contain at least one field; transparent_union attribute ignored", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_type_attribute_wrong_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' only applies to %select{function|pointer|Objective-C object or block pointer}1 types; type here is %2", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_type_safety_null_pointer_required, CLASS_WARNING, (unsigned)diag::Severity::Warning, "specified %0 type tag requires a null pointer", 671, SFINAE_Suppress, false, false, 2) +DIAG(warn_type_safety_type_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Warning, "argument type %0 doesn't match specified %1 type tag %select{that requires %3|}2", 671, SFINAE_Suppress, false, false, 2) +DIAG(warn_type_tag_for_datatype_wrong_kind, CLASS_WARNING, (unsigned)diag::Severity::Warning, "this type tag was not designed to be used with this function", 671, SFINAE_Suppress, false, false, 2) +DIAG(warn_typecheck_function_qualifiers_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' qualifier on function type %1 has no effect", 287, SFINAE_Suppress, false, false, 2) +DIAG(warn_typecheck_function_qualifiers_unspecified, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' qualifier on function type %1 has unspecified behavior", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_typecheck_reference_qualifiers, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'%0' qualifier on reference type %1 has no effect", 287, SFINAE_Suppress, false, false, 2) +DIAG(warn_typecheck_vector_element_sizes_not_equal, CLASS_WARNING, (unsigned)diag::Severity::Error, "vector operands do not have the same elements sizes (%0 and %1)", 745, SFINAE_Suppress, false, false, 2) +DIAG(warn_typecheck_zero_static_array_size, CLASS_WARNING, (unsigned)diag::Severity::Warning, "'static' has no effect on zero-length arrays", 32, SFINAE_Suppress, false, false, 2) +DIAG(warn_unannotated_fallthrough, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unannotated fall-through between switch labels", 292, SFINAE_Suppress, false, false, 2) +DIAG(warn_unannotated_fallthrough_per_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unannotated fall-through between switch labels in partly-annotated function", 293, SFINAE_Suppress, false, false, 2) +DIAG(warn_unavailable_def, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "implementing unavailable method", 168, SFINAE_Suppress, false, false, 2) +DIAG(warn_unavailable_fwdclass_message, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 may be unavailable because the receiver type is unknown", 675, SFINAE_Suppress, false, false, 2) +DIAG(warn_undeclared_selector, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "undeclared selector %0", 676, SFINAE_Suppress, false, false, 2) +DIAG(warn_undeclared_selector_with_typo, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "undeclared selector %0; did you mean %1?", 676, SFINAE_Suppress, false, false, 2) +DIAG(warn_undef_interface, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot find interface declaration for %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_undef_interface_suggest, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot find interface declaration for %0; did you mean %1?", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_undef_method_impl, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method definition for %0 not found", 315, SFINAE_Suppress, false, false, 2) +DIAG(warn_undef_protocolref, CLASS_WARNING, (unsigned)diag::Severity::Warning, "cannot find protocol definition for %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_undefined_inline, CLASS_WARNING, (unsigned)diag::Severity::Warning, "inline function %q0 is not defined", 680, SFINAE_Suppress, false, false, 2) +DIAG(warn_undefined_internal, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{function|variable}0 %q1 has internal linkage but is not defined", 681, SFINAE_Suppress, false, false, 2) +DIAG(warn_undefined_reinterpret_cast, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "reinterpret_cast from %0 to %1 has undefined behavior", 683, SFINAE_Suppress, false, false, 2) +DIAG(warn_unguarded_availability, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 is only available on %1 %2 or newer", 686, SFINAE_Suppress, false, false, 2) +DIAG(warn_unguarded_availability_new, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%0 is only available on %1 %2 or newer", 687, SFINAE_Suppress, false, false, 2) +DIAG(warn_unhandled_ms_attribute_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "__declspec attribute %0 is not supported", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_unimplemented_protocol_method, CLASS_WARNING, (unsigned)diag::Severity::Warning, "method %0 in protocol %1 not implemented", 552, SFINAE_Suppress, false, false, 2) +DIAG(warn_unimplemented_selector, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "no method with selector %0 is implemented in this translation unit", 579, SFINAE_Suppress, false, false, 2) +DIAG(warn_uninit_byref_blockvar_captured_by_block, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "block pointer variable %0 is uninitialized when captured by block", 692, SFINAE_Suppress, false, false, 2) +DIAG(warn_uninit_self_reference_in_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "variable %0 is uninitialized when used within its own initialization", 692, SFINAE_Suppress, false, false, 2) +DIAG(warn_uninit_self_reference_in_reference_init, CLASS_WARNING, (unsigned)diag::Severity::Warning, "reference %0 is not yet bound to a value when used within its own initialization", 692, SFINAE_Suppress, false, false, 2) +DIAG(warn_uninit_var, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable %0 is uninitialized when %select{used here|captured by block}1", 692, SFINAE_Suppress, false, false, 2) +DIAG(warn_unknown_sanitizer_ignored, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unknown sanitizer '%0' ignored", 697, SFINAE_Suppress, false, false, 2) +DIAG(warn_unlock_but_no_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "releasing %0 '%1' that was not held", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_unlock_kind_mismatch, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "releasing %0 '%1' using %select{shared|exclusive}2 access, expected %select{shared|exclusive}3 access", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_unneeded_internal_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{function|variable}0 %1 is not needed and will not be emitted", 700, SFINAE_Suppress, false, false, 32) +DIAG(warn_unneeded_member_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "member function %0 is not needed and will not be emitted", 701, SFINAE_Suppress, false, false, 2) +DIAG(warn_unneeded_static_internal_decl, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'static' function %0 declared in header file should be declared 'static inline'", 700, SFINAE_Suppress, false, false, 32) +DIAG(warn_unreachable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "code will never be executed", 702, SFINAE_Suppress, false, false, 2) +DIAG(warn_unreachable_break, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'break' will never be executed", 704, SFINAE_Suppress, false, false, 2) +DIAG(warn_unreachable_default, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "default label in switch which covers all enumeration values", 141, SFINAE_Suppress, false, false, 2) +DIAG(warn_unreachable_loop_increment, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "loop will run at most once (loop increment never executed)", 705, SFINAE_Suppress, false, false, 2) +DIAG(warn_unreachable_return, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "'return' will never be executed", 706, SFINAE_Suppress, false, false, 2) +DIAG(warn_unsequenced_mod_mod, CLASS_WARNING, (unsigned)diag::Severity::Warning, "multiple unsequenced modifications to %0", 707, SFINAE_Suppress, false, false, 2) +DIAG(warn_unsequenced_mod_use, CLASS_WARNING, (unsigned)diag::Severity::Warning, "unsequenced modification and access to %0", 707, SFINAE_Suppress, false, false, 2) +DIAG(warn_unsigned_abs, CLASS_WARNING, (unsigned)diag::Severity::Warning, "taking the absolute value of unsigned type %0 has no effect", 8, SFINAE_Suppress, false, false, 2) +DIAG(warn_unsigned_always_true_comparison, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "result of comparison of %select{%3|unsigned expression}0 %2 %select{unsigned expression|%3}0 is always %4", 659, SFINAE_Suppress, false, false, 2) +DIAG(warn_unsigned_bitfield_assigned_signed_enum, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "assigning value of signed enum type %1 to unsigned bit-field %0; negative enumerators of enum %1 will be converted to positive values", 60, SFINAE_Suppress, false, false, 24) +DIAG(warn_unsigned_enum_always_true_comparison, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "result of comparison of %select{%3|unsigned enum expression}0 %2 %select{unsigned enum expression|%3}0 is always %4", 658, SFINAE_Suppress, false, false, 2) +DIAG(warn_unsupported_lifetime_extension, CLASS_WARNING, (unsigned)diag::Severity::Warning, "sorry, lifetime extension of %select{temporary|backing array of initializer list}0 created by aggregate initialization using default member initializer is not supported; lifetime of %select{temporary|backing array}0 will end at the end of the full-expression", 149, SFINAE_Suppress, false, false, 2) +DIAG(warn_unsupported_target_attribute, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{unsupported|duplicate}0%select{| architecture}1 '%2' in the 'target' attribute string; 'target' attribute ignored", 282, SFINAE_Suppress, false, false, 2) +DIAG(warn_unused_call, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring return value of function declared with %0 attribute", 737, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_comparison, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{equality|inequality|relational|three-way}0 comparison result unused", 721, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_const_variable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused variable %0", 722, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_container_subscript_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "container access result unused - container access should not be used for side effects", 737, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_exception_param, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused exception parameter %0", 723, SFINAE_Suppress, false, false, 2) +DIAG(warn_unused_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression result unused", 737, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused function %0", 724, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_label, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused label %0", 726, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_lambda_capture, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "lambda capture %0 is not %select{used|required to be captured for this use}1", 727, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_local_typedef, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused %select{typedef|type alias}0 %1", 728, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_member_function, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused member function %0", 731, SFINAE_Suppress, false, false, 2) +DIAG(warn_unused_parameter, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused parameter %0", 732, SFINAE_Suppress, false, false, 2) +DIAG(warn_unused_private_field, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "private field %0 is not used", 733, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_property_backing_ivar, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "ivar %0 which backs the property is not referenced in this property's accessor", 734, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_property_expr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "property access result unused - getters should not be used for side effects", 725, SFINAE_Suppress, false, false, 2) +DIAG(warn_unused_result, CLASS_WARNING, (unsigned)diag::Severity::Warning, "ignoring return value of function declared with %0 attribute", 735, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_template, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused %select{function|variable}0 template %1", 736, SFINAE_Suppress, false, false, 2) +DIAG(warn_unused_variable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "unused variable %0", 738, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_voidptr, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression result unused; should this cast be to 'void'?", 737, SFINAE_Suppress, false, false, 32) +DIAG(warn_unused_volatile, CLASS_WARNING, (unsigned)diag::Severity::Warning, "expression result unused; assign into a variable to force a volatile load", 739, SFINAE_Suppress, false, false, 2) +DIAG(warn_use_in_invalid_state, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "invalid invocation of method '%0' on object '%1' while it is in the '%2' state", 136, SFINAE_Suppress, false, false, 2) +DIAG(warn_use_of_temp_in_invalid_state, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "invalid invocation of method '%0' on a temporary object while it is in the '%1' state", 136, SFINAE_Suppress, false, false, 2) +DIAG(warn_used_but_marked_unused, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 was marked unused but was used", 740, SFINAE_Suppress, false, false, 2) +DIAG(warn_user_literal_reserved, CLASS_WARNING, (unsigned)diag::Severity::Warning, "user-defined literal suffixes not starting with '_' are reserved%select{; no literal will invoke this operator|}0", 741, SFINAE_Suppress, false, false, 2) +DIAG(warn_using_directive_in_header, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "using namespace directive in global context in header", 280, SFINAE_Suppress, false, false, 2) +DIAG(warn_va_start_type_is_undefined, CLASS_WARNING, (unsigned)diag::Severity::Warning, "passing %select{an object that undergoes default argument promotion|an object of reference type|a parameter declared with the 'register' keyword}0 to 'va_start' has undefined behavior", 743, SFINAE_Suppress, false, false, 2) +DIAG(warn_var_deref_requires_any_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}1 the value pointed to by %0 requires holding %select{any mutex|any mutex exclusively}1", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_var_deref_requires_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}3 the value pointed to by %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_var_deref_requires_lock_precise, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}3 the value pointed to by %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 666, SFINAE_Suppress, false, false, 2) +DIAG(warn_var_template_missing, CLASS_WARNING, (unsigned)diag::Severity::Warning, "instantiation of variable %q0 required here, but no definition is available", 684, SFINAE_Suppress, false, false, 2) +DIAG(warn_variable_requires_any_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}1 variable %0 requires holding %select{any mutex|any mutex exclusively}1", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_variable_requires_lock, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}3 variable %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 662, SFINAE_Suppress, false, false, 2) +DIAG(warn_variable_requires_lock_precise, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{reading|writing}3 variable %1 requires holding %0 %select{'%2'|'%2' exclusively}3", 666, SFINAE_Suppress, false, false, 2) +DIAG(warn_variable_sized_ivar_visibility, CLASS_WARNING, (unsigned)diag::Severity::Warning, "field %0 with variable sized type %1 is not visible to subclasses and can conflict with their instance variables", 468, SFINAE_Suppress, false, false, 2) +DIAG(warn_variables_not_in_loop_body, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable%select{s| %1|s %1 and %2|s %1, %2, and %3|s %1, %2, %3, and %4}0 used in loop condition not modified in loop body", 233, SFINAE_Suppress, false, false, 2) +DIAG(warn_vbase_moved_multiple_times, CLASS_WARNING, (unsigned)diag::Severity::Warning, "defaulted move assignment operator of %0 will move assign virtual base class %1 multiple times", 430, SFINAE_Suppress, false, false, 2) +DIAG(warn_vector_long_decl_spec_combination, CLASS_WARNING, (unsigned)diag::Severity::Warning, "Use of 'long' with '__vector' is deprecated", 164, SFINAE_Suppress, false, false, 27) +DIAG(warn_vector_mode_deprecated, CLASS_WARNING, (unsigned)diag::Severity::Warning, "specifying vector types with the 'mode' attribute is deprecated; use the 'vector_size' attribute instead", 165, SFINAE_Suppress, false, false, 27) +DIAG(warn_vla_used, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "variable length array used", 750, SFINAE_Suppress, false, false, 2) +DIAG(warn_weak_identifier_undeclared, CLASS_WARNING, (unsigned)diag::Severity::Warning, "weak identifier %0 never declared", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_weak_import, CLASS_WARNING, (unsigned)diag::Severity::Warning, "an already-declared variable is made a weak_import declaration %0", 0, SFINAE_Suppress, false, false, 2) +DIAG(warn_weak_template_vtable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "explicit template instantiation %0 will emit a vtable in every translation unit", 754, SFINAE_Suppress, false, false, 2) +DIAG(warn_weak_vtable, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%0 has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit", 755, SFINAE_Suppress, false, false, 2) +DIAG(warn_wrong_absolute_value_type, CLASS_WARNING, (unsigned)diag::Severity::Warning, "using %select{integer|floating point|complex}1 absolute value function %0 when argument is of %select{integer|floating point|complex}2 type", 8, SFINAE_Suppress, false, false, 2) +DIAG(warn_zero_as_null_pointer_constant, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "zero as null pointer constant", 758, SFINAE_Suppress, false, false, 19) +DIAG(warn_zero_size_struct_union_compat, CLASS_WARNING, (unsigned)diag::Severity::Ignored, "%select{|empty }0%select{struct|union}1 has size 0 in C, %select{size 1|non-zero size}2 in C++", 71, SFINAE_Suppress, false, false, 2) +DIAG(warn_zero_size_struct_union_in_extern_c, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{|empty }0%select{struct|union}1 has size 0 in C, %select{size 1|non-zero size}2 in C++", 218, SFINAE_Suppress, false, false, 2) diff --git a/clang-r353983/include/clang/Basic/DiagnosticSerialization.h b/clang-r353983/include/clang/Basic/DiagnosticSerialization.h new file mode 100644 index 00000000..7e46a36a --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticSerialization.h @@ -0,0 +1,28 @@ +//===--- DiagnosticSerialization.h - Serialization Diagnostics -*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_DIAGNOSTICSERIALIZATION_H +#define LLVM_CLANG_BASIC_DIAGNOSTICSERIALIZATION_H + +#include "clang/Basic/Diagnostic.h" + +namespace clang { +namespace diag { +enum { +#define DIAG(ENUM, FLAGS, DEFAULT_MAPPING, DESC, GROUP, SFINAE, NOWERROR, \ + SHOWINSYSHEADER, CATEGORY) \ + ENUM, +#define SERIALIZATIONSTART +#include "clang/Basic/DiagnosticSerializationKinds.inc" +#undef DIAG + NUM_BUILTIN_SERIALIZATION_DIAGNOSTICS +}; +} // end namespace diag +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_DIAGNOSTICSERIALIZATION_H diff --git a/clang-r353983/include/clang/Basic/DiagnosticSerializationKinds.inc b/clang-r353983/include/clang/Basic/DiagnosticSerializationKinds.inc new file mode 100644 index 00000000..cba4bccb --- /dev/null +++ b/clang-r353983/include/clang/Basic/DiagnosticSerializationKinds.inc @@ -0,0 +1,67 @@ +#ifdef SERIALIZATIONSTART +__SERIALIZATIONSTART = DIAG_START_SERIALIZATION, +#undef SERIALIZATIONSTART +#endif + +DIAG(err_fe_ast_file_modified, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "file '%0' has been modified since the AST file '%1' was built", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_fe_module_file_modified, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "file '%0' has been modified since the module file '%1' was built", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_fe_not_a_pch_file, CLASS_ERROR, (unsigned)diag::Severity::Error, "input is not a PCH file: '%0'", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_fe_pch_file_modified, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "file '%0' has been modified since the precompiled header '%1' was built", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_fe_pch_file_overridden, CLASS_ERROR, (unsigned)diag::Severity::Error, "file '%0' from the precompiled header has been overridden", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_fe_pch_malformed, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "malformed or corrupted AST file: '%0'", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_fe_pch_malformed_block, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "malformed block record in PCH file: '%0'", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_fe_unable_to_read_pch_file, CLASS_ERROR, (unsigned)diag::Severity::Error, "unable to read PCH file %0: '%1'", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_imported_module_modmap_changed, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "module '%0' imported by AST file '%1' found in a different module map file (%2) than when the importing AST file was built (%3)", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_imported_module_not_found, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "module '%0' in AST file '%1' (imported by AST file '%2') is not defined in any loaded module map file; maybe you need to load '%3'?", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_imported_module_relocated, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "module '%0' was built in directory '%1' but now resides in directory '%2'", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_different_modmap, CLASS_ERROR, (unsigned)diag::Severity::Error, "module '%0' %select{uses|does not use}1 additional module map '%2'%select{| not}1 used when the module was built", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_file_conflict, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "module '%0' is defined in both '%1' and '%2'", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_file_invalid, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "file '%1' is not a valid precompiled %select{PCH|module|AST}0 file", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_file_not_found, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "%select{PCH|module|AST}0 file '%1' not found%select{|: %3}2", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_file_not_module, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "AST file '%0' was not built as a module", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_file_out_of_date, CLASS_ERROR, (unsigned)diag::Severity::Fatal, "%select{PCH|module|AST}0 file '%1' is out of date and needs to be rebuilt%select{|: %3}2", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_no_size_mtime_for_header, CLASS_ERROR, (unsigned)diag::Severity::Error, "cannot emit module %0: %select{size|mtime}1 must be explicitly specified for missing header file \"%2\"", 0, SFINAE_SubstitutionFailure, false, true, 18) +DIAG(err_module_odr_violation_definition_data, CLASS_ERROR, (unsigned)diag::Severity::Error, "%q0 has different definitions in different modules; first difference is %select{definition in module '%2'|defined here}1 found %select{%4 base %plural{1:class|:classes}4|%4 virtual base %plural{1:class|:classes}4|%ordinal4 base class with type %5|%ordinal4 %select{non-virtual|virtual}5 base class %6|%ordinal4 base class %5 with %select{public|protected|private|no}6 access specifier}3", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_odr_violation_different_definitions, CLASS_ERROR, (unsigned)diag::Severity::Error, "%q0 has different definitions in different modules; %select{definition in module '%2' is here|defined here}1", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_odr_violation_different_instantiations, CLASS_ERROR, (unsigned)diag::Severity::Error, "instantiation of %q0 is different in different modules", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_odr_violation_enum, CLASS_ERROR, (unsigned)diag::Severity::Error, "%q0 has different definitions in different modules; %select{definition in module '%2'|defined here}1 first difference is %select{enum that is %select{not scoped|scoped}4|enum scoped with keyword %select{struct|class}4|enum %select{without|with}4 specified type|enum with specified type %4|enum with %4 element%s4|%ordinal4 element has name %5|%ordinal4 element %5 %select{has|does not have}6 an initilizer|%ordinal4 element %5 has an initializer|}3", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_odr_violation_function, CLASS_ERROR, (unsigned)diag::Severity::Error, "%q0 has different definitions in different modules; %select{definition in module '%2'|defined here}1 first difference is %select{return type is %4|%ordinal4 parameter with name %5|%ordinal4 parameter with type %5%select{| decayed from %7}6|%ordinal4 parameter with%select{out|}5 a default argument|%ordinal4 parameter with a default argument|function body}3", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_odr_violation_mismatch_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "%q0 has different definitions in different modules; first difference is %select{definition in module '%2'|defined here}1 found %select{end of class|public access specifier|private access specifier|protected access specifier|static assert|field|method|type alias|typedef|data member|friend declaration|function template}3", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_odr_violation_mismatch_decl_diff, CLASS_ERROR, (unsigned)diag::Severity::Error, "%q0 has different definitions in different modules; first difference is %select{definition in module '%2'|defined here}1 found %select{static assert with condition|static assert with message|static assert with %select{|no }4message|field %4|field %4 with type %5|%select{non-|}5bitfield %4|bitfield %4 with one width expression|%select{non-|}5mutable field %4|field %4 with %select{no|an}5 initalizer|field %4 with an initializer|%select{method %5|constructor|destructor}4|%select{method %5|constructor|destructor}4 is %select{not deleted|deleted}6|%select{method %5|constructor|destructor}4 is %select{not defaulted|defaulted}6|%select{method %5|constructor|destructor}4 is %select{|pure }6%select{not virtual|virtual}7|%select{method %5|constructor|destructor}4 is %select{not static|static}6|%select{method %5|constructor|destructor}4 is %select{not volatile|volatile}6|%select{method %5|constructor|destructor}4 is %select{not const|const}6|%select{method %5|constructor|destructor}4 is %select{not inline|inline}6|%select{method %5|constructor|destructor}4 that has %6 parameter%s6|%select{method %5|constructor|destructor}4 with %ordinal6 parameter of type %7%select{| decayed from %9}8|%select{method %5|constructor|destructor}4 with %ordinal6 parameter named %7|%select{method %5|constructor|destructor}4 with %ordinal6 parameter with%select{out|}7 a default argument|%select{method %5|constructor|destructor}4 with %ordinal6 parameter with a default argument|%select{method %5|constructor|destructor}4 with %select{no |}6template arguments|%select{method %5|constructor|destructor}4 with %6 template argument%s6|%select{method %5|constructor|destructor}4 with %6 for %ordinal7 template argument|%select{method %5|constructor|destructor}4 with %select{no body|body}6|%select{method %5|constructor|destructor}4 with body|%select{typedef|type alias}4 name %5|%select{typedef|type alias}4 %5 with underlying type %6|data member with name %4|data member %4 with type %5|data member %4 with%select{out|}5 an initializer|data member %4 with an initializer|data member %4 %select{is constexpr|is not constexpr}5|friend %select{class|function}4|friend %4|friend function %4|function template %4 with %5 template parameter%s5|function template %4 with %ordinal5 template parameter being a %select{type|non-type|template}6 template parameter|function template %4 with %ordinal5 template parameter %select{with no name|named %7}6|function template %4 with %ordinal5 template parameter with %select{no |}6default argument|function template %4 with %ordinal5 template parameter with default argument %6|function template %4 with %ordinal5 template parameter with one type|function template %4 with %ordinal5 template parameter %select{not |}6being a template parameter pack|}3", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_odr_violation_mismatch_decl_unknown, CLASS_ERROR, (unsigned)diag::Severity::Error, "%q0 %select{with definition in module '%2'|defined here}1 has different definitions in different modules; first difference is this %select{||||static assert|field|method|type alias|typedef|data member|friend declaration|unexpected decl}3", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_module_odr_violation_missing_decl, CLASS_ERROR, (unsigned)diag::Severity::Error, "%q0 from module '%1' is not present in definition of %q2%select{ in module '%4'| provided earlier}3", 0, SFINAE_Report, false, true, 15) +DIAG(err_module_odr_violation_template_parameter, CLASS_ERROR, (unsigned)diag::Severity::Error, "%q0 has different definitions in different modules; first difference is %select{definition in module '%2'|defined here}1 found %select{unnamed template parameter|template parameter %4|template parameter with %select{no |}4default argument|template parameter with default argument}3", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_diagopt_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 is currently enabled, but was not in the PCH file", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_different_branch, CLASS_ERROR, (unsigned)diag::Severity::Error, "PCH file built from a different branch (%0) than the compiler (%1)", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_langopt_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 was %select{disabled|enabled}1 in PCH file but is currently %select{disabled|enabled}2", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_langopt_value_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "%0 differs in PCH file vs. current file", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_macro_def_conflict, CLASS_ERROR, (unsigned)diag::Severity::Error, "definition of macro '%0' differs between the precompiled header ('%1') and the command line ('%2')", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_macro_def_undef, CLASS_ERROR, (unsigned)diag::Severity::Error, "macro '%0' was %select{defined|undef'd}1 in the precompiled header but %select{undef'd|defined}1 on the command line", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_modulecache_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "PCH was compiled with module cache path '%0', but the path is currently '%1'", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_pp_detailed_record, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{command line contains|precompiled header was built with}0 '-detailed-preprocessing-record' but %select{precompiled header was not built with it|it is not present on the command line}0", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_targetopt_feature_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{AST file was|current translation unit is}0 compiled with the target feature '%1' but the %select{current translation unit is|AST file was}0 not", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_targetopt_mismatch, CLASS_ERROR, (unsigned)diag::Severity::Error, "PCH file was compiled for the %0 '%1' but the current translation unit is being compiled for target '%2'", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_undef, CLASS_ERROR, (unsigned)diag::Severity::Error, "%select{command line contains|precompiled header was built with}0 '-undef' but %select{precompiled header was not built with it|it is not present on the command line}0", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_version_too_new, CLASS_ERROR, (unsigned)diag::Severity::Error, "PCH file uses a newer PCH format that cannot be read", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_version_too_old, CLASS_ERROR, (unsigned)diag::Severity::Error, "PCH file uses an older PCH format that is no longer supported", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(err_pch_with_compiler_errors, CLASS_ERROR, (unsigned)diag::Severity::Error, "PCH file contains compiler errors", 0, SFINAE_SubstitutionFailure, false, true, 15) +DIAG(note_first_module_difference, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in first definition, possible difference is here", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_imported_by_pch_module_not_found, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "consider adding '%0' to the header search path", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_module_cache_path, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "after modifying system headers, please delete the module cache at '%0'", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_module_file_imported_by, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "imported by %select{|module '%2' in }1'%0'", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_module_odr_violation_definition_data, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "but in '%0' found %select{%2 base %plural{1:class|:classes}2|%2 virtual base %plural{1:class|:classes}2|%ordinal2 base class with different type %3|%ordinal2 %select{non-virtual|virtual}3 base class %4|%ordinal2 base class %3 with %select{public|protected|private|no}4 access specifier}1", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_module_odr_violation_different_definitions, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "definition in module '%0' is here", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_module_odr_violation_enum, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "but in '%0' found %select{enum that is %select{not scoped|scoped}2|enum scoped with keyword %select{struct|class}2|enum %select{without|with}2 specified type|enum with specified type %2|enum with %2 element%s2|%ordinal2 element has name %3|%ordinal2 element %3 %select{has|does not have}4 an initializer|%ordinal2 element %3 has different initializer|}1", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_module_odr_violation_function, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "but in '%0' found %select{different return type %2|%ordinal2 parameter with name %3|%ordinal2 parameter with type %3%select{| decayed from %5}4|%ordinal2 parameter with%select{out|}3 a default argument|%ordinal2 parameter with a different default argument|a different body}1", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_module_odr_violation_mismatch_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "but in '%0' found %select{end of class|public access specifier|private access specifier|protected access specifier|static assert|field|method|type alias|typedef|data member|friend declaration|function template}1", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_module_odr_violation_mismatch_decl_diff, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "but in '%0' found %select{static assert with different condition|static assert with different message|static assert with %select{|no }2message|field %2|field %2 with type %3|%select{non-|}3bitfield %2|bitfield %2 with different width expression|%select{non-|}3mutable field %2|field %2 with %select{no|an}3 initializer|field %2 with a different initializer|%select{method %3|constructor|destructor}2|%select{method %3|constructor|destructor}2 is %select{not deleted|deleted}4|%select{method %3|constructor|destructor}2 is %select{not defaulted|defaulted}4|%select{method %3|constructor|destructor}2 is %select{|pure }4%select{not virtual|virtual}5|%select{method %3|constructor|destructor}2 is %select{not static|static}4|%select{method %3|constructor|destructor}2 is %select{not volatile|volatile}4|%select{method %3|constructor|destructor}2 is %select{not const|const}4|%select{method %3|constructor|destructor}2 is %select{not inline|inline}4|%select{method %3|constructor|destructor}2 that has %4 parameter%s4|%select{method %3|constructor|destructor}2 with %ordinal4 parameter of type %5%select{| decayed from %7}6|%select{method %3|constructor|destructor}2 with %ordinal4 parameter named %5|%select{method %3|constructor|destructor}2 with %ordinal4 parameter with%select{out|}5 a default argument|%select{method %3|constructor|destructor}2 with %ordinal4 parameter with a different default argument|%select{method %3|constructor|destructor}2 with %select{no |}4template arguments|%select{method %3|constructor|destructor}2 with %4 template argument%s4|%select{method %3|constructor|destructor}2 with %4 for %ordinal5 template argument|%select{method %3|constructor|destructor}2 with %select{no body|body}4|%select{method %3|constructor|destructor}2 with different body|%select{typedef|type alias}2 name %3|%select{typedef|type alias}2 %3 with different underlying type %4|data member with name %2|data member %2 with different type %3|data member %2 with%select{out|}3 an initializer|data member %2 with a different initializer|data member %2 %select{is constexpr|is not constexpr}3|friend %select{class|function}2|friend %2|friend function %2|function template %2 with %3 template parameter%s3|function template %2 with %ordinal3 template paramter being a %select{type|non-type|template}4 template parameter|function template %2 with %ordinal3 template parameter %select{with no name|named %5}4|function template %2 with %ordinal3 template parameter with %select{no |}4default argument|function template %2 with %ordinal3 template parameter with default argument %4|function template %2 with %ordinal3 template parameter with different type|function template %2 with %ordinal3 template parameter %select{not |}4being a template parameter pack|}1", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_module_odr_violation_mismatch_decl_unknown, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "but in '%0' found %select{||||different static assert|different field|different method|different type alias|different typedef|different data member|different friend declaration|another unexpected decl}1", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_module_odr_violation_no_possible_decls, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "definition has no member %0", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_module_odr_violation_possible_decl, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "declaration of %0 does not match", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_module_odr_violation_template_parameter, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "but in '%0' found %select{unnamed template parameter %2|template parameter %2|template parameter with %select{no |}2default argument|template parameter with different default argument}1", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_pch_rebuild_required, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "please rebuild precompiled header '%0'", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_pch_required_by, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "'%0' required by '%1'", 0, SFINAE_Suppress, false, false, 15) +DIAG(note_second_module_difference, CLASS_NOTE, (unsigned)diag::Severity::Fatal, "in second definition, possible difference is here", 0, SFINAE_Suppress, false, false, 15) +DIAG(warn_duplicate_module_file_extension, CLASS_WARNING, (unsigned)diag::Severity::Warning, "duplicate module file extension block name '%0'", 421, SFINAE_Suppress, false, false, 15) +DIAG(warn_module_system_bit_conflict, CLASS_WARNING, (unsigned)diag::Severity::Warning, "module file '%0' was validated as a system module and is now being imported as a non-system module; any difference in diagnostic options will be ignored", 419, SFINAE_Suppress, false, false, 15) +DIAG(warn_module_uses_date_time, CLASS_WARNING, (unsigned)diag::Severity::Warning, "%select{precompiled header|module}0 uses __DATE__ or __TIME__", 526, SFINAE_Suppress, false, false, 18) diff --git a/clang-r353983/include/clang/Basic/ExceptionSpecificationType.h b/clang-r353983/include/clang/Basic/ExceptionSpecificationType.h new file mode 100644 index 00000000..2f65efe7 --- /dev/null +++ b/clang-r353983/include/clang/Basic/ExceptionSpecificationType.h @@ -0,0 +1,66 @@ +//===--- ExceptionSpecificationType.h ---------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the ExceptionSpecificationType enumeration and various +/// utility functions. +/// +//===----------------------------------------------------------------------===// +#ifndef LLVM_CLANG_BASIC_EXCEPTIONSPECIFICATIONTYPE_H +#define LLVM_CLANG_BASIC_EXCEPTIONSPECIFICATIONTYPE_H + +namespace clang { + +/// The various types of exception specifications that exist in C++11. +enum ExceptionSpecificationType { + EST_None, ///< no exception specification + EST_DynamicNone, ///< throw() + EST_Dynamic, ///< throw(T1, T2) + EST_MSAny, ///< Microsoft throw(...) extension + EST_BasicNoexcept, ///< noexcept + EST_DependentNoexcept,///< noexcept(expression), value-dependent + EST_NoexceptFalse, ///< noexcept(expression), evals to 'false' + EST_NoexceptTrue, ///< noexcept(expression), evals to 'true' + EST_Unevaluated, ///< not evaluated yet, for special member function + EST_Uninstantiated, ///< not instantiated yet + EST_Unparsed ///< not parsed yet +}; + +inline bool isDynamicExceptionSpec(ExceptionSpecificationType ESpecType) { + return ESpecType >= EST_DynamicNone && ESpecType <= EST_MSAny; +} + +inline bool isComputedNoexcept(ExceptionSpecificationType ESpecType) { + return ESpecType >= EST_DependentNoexcept && + ESpecType <= EST_NoexceptTrue; +} + +inline bool isNoexceptExceptionSpec(ExceptionSpecificationType ESpecType) { + return ESpecType == EST_BasicNoexcept || isComputedNoexcept(ESpecType); +} + +inline bool isUnresolvedExceptionSpec(ExceptionSpecificationType ESpecType) { + return ESpecType == EST_Unevaluated || ESpecType == EST_Uninstantiated; +} + +/// Possible results from evaluation of a noexcept expression. +enum CanThrowResult { + CT_Cannot, + CT_Dependent, + CT_Can +}; + +inline CanThrowResult mergeCanThrow(CanThrowResult CT1, CanThrowResult CT2) { + // CanThrowResult constants are ordered so that the maximum is the correct + // merge result. + return CT1 > CT2 ? CT1 : CT2; +} + +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_EXCEPTIONSPECIFICATIONTYPE_H diff --git a/clang-r353983/include/clang/Basic/ExpressionTraits.h b/clang-r353983/include/clang/Basic/ExpressionTraits.h new file mode 100644 index 00000000..85005330 --- /dev/null +++ b/clang-r353983/include/clang/Basic/ExpressionTraits.h @@ -0,0 +1,25 @@ +//===- ExpressionTraits.h - C++ Expression Traits Support Enums -*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines enumerations for expression traits intrinsics. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_EXPRESSIONTRAITS_H +#define LLVM_CLANG_BASIC_EXPRESSIONTRAITS_H + +namespace clang { + + enum ExpressionTrait { + ET_IsLValueExpr, + ET_IsRValueExpr + }; +} + +#endif diff --git a/clang-r353983/include/clang/Basic/Features.def b/clang-r353983/include/clang/Basic/Features.def new file mode 100644 index 00000000..8fc4e5a6 --- /dev/null +++ b/clang-r353983/include/clang/Basic/Features.def @@ -0,0 +1,251 @@ +//===--- Features.def - Features and Extensions database --------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines features exposed via __has_feature and extensions exposed +// via __has_extension. Users of this file must either define the FEATURE or +// EXTENSION macros (or both) to make use of this information. Note that these +// macros expect the following declarations to be available for the Predicate: +// +// const LangOptions &LangOpts; +// const Preprocessor &PP; +// +// 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) +# error Define either the FEATURE or EXTENSION macro to handle features +#endif + +#ifndef FEATURE +#define FEATURE(Name, Predicate) +#endif + +#ifndef EXTENSION +#define EXTENSION(Name, Predicate) +#endif + +FEATURE(address_sanitizer, + LangOpts.Sanitize.hasOneOf(SanitizerKind::Address | + SanitizerKind::KernelAddress)) +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) +FEATURE(attribute_availability_with_message, true) +FEATURE(attribute_availability_app_extension, true) +FEATURE(attribute_availability_with_version_underscores, true) +FEATURE(attribute_availability_tvos, true) +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) +FEATURE(attribute_deprecated_with_message, true) +FEATURE(attribute_deprecated_with_replacement, true) +FEATURE(attribute_ext_vector_type, true) +FEATURE(attribute_ns_returns_not_retained, true) +FEATURE(attribute_ns_returns_retained, true) +FEATURE(attribute_ns_consumes_self, true) +FEATURE(attribute_ns_consumed, true) +FEATURE(attribute_cf_consumed, true) +FEATURE(attribute_objc_ivar_unused, true) +FEATURE(attribute_objc_method_family, true) +FEATURE(attribute_overloadable, true) +FEATURE(attribute_unavailable_with_message, true) +FEATURE(attribute_unused_on_fields, true) +FEATURE(attribute_diagnose_if_objc, true) +FEATURE(blocks, LangOpts.Blocks) +FEATURE(c_thread_safety_attributes, true) +FEATURE(cxx_exceptions, LangOpts.CXXExceptions) +FEATURE(cxx_rtti, LangOpts.RTTI &&LangOpts.RTTIData) +FEATURE(enumerator_attributes, true) +FEATURE(nullability, true) +FEATURE(nullability_on_arrays, true) +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, + LangOpts.Sanitize.hasOneOf(SanitizerKind::Efficiency)) +FEATURE(scudo, LangOpts.Sanitize.hasOneOf(SanitizerKind::Scudo)) +// Objective-C features +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.ObjC) +FEATURE(objc_fixed_enum, LangOpts.ObjC) +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) +FEATURE(objc_weak_class, LangOpts.ObjCRuntime.hasWeakClassImport()) +FEATURE(ownership_holds, true) +FEATURE(ownership_returns, true) +FEATURE(ownership_takes, true) +FEATURE(objc_bool, true) +FEATURE(objc_subscripting, LangOpts.ObjCRuntime.isNonFragile()) +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.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) +FEATURE(c_atomic, LangOpts.C11) +FEATURE(c_generic_selections, LangOpts.C11) +FEATURE(c_static_assert, LangOpts.C11) +FEATURE(c_thread_local, LangOpts.C11 &&PP.getTargetInfo().isTLSSupported()) +// C++11 features +FEATURE(cxx_access_control_sfinae, LangOpts.CPlusPlus11) +FEATURE(cxx_alias_templates, LangOpts.CPlusPlus11) +FEATURE(cxx_alignas, LangOpts.CPlusPlus11) +FEATURE(cxx_alignof, LangOpts.CPlusPlus11) +FEATURE(cxx_atomic, LangOpts.CPlusPlus11) +FEATURE(cxx_attributes, LangOpts.CPlusPlus11) +FEATURE(cxx_auto_type, LangOpts.CPlusPlus11) +FEATURE(cxx_constexpr, LangOpts.CPlusPlus11) +FEATURE(cxx_constexpr_string_builtins, LangOpts.CPlusPlus11) +FEATURE(cxx_decltype, LangOpts.CPlusPlus11) +FEATURE(cxx_decltype_incomplete_return_types, LangOpts.CPlusPlus11) +FEATURE(cxx_default_function_template_args, LangOpts.CPlusPlus11) +FEATURE(cxx_defaulted_functions, LangOpts.CPlusPlus11) +FEATURE(cxx_delegating_constructors, LangOpts.CPlusPlus11) +FEATURE(cxx_deleted_functions, LangOpts.CPlusPlus11) +FEATURE(cxx_explicit_conversions, LangOpts.CPlusPlus11) +FEATURE(cxx_generalized_initializers, LangOpts.CPlusPlus11) +FEATURE(cxx_implicit_moves, LangOpts.CPlusPlus11) +FEATURE(cxx_inheriting_constructors, LangOpts.CPlusPlus11) +FEATURE(cxx_inline_namespaces, LangOpts.CPlusPlus11) +FEATURE(cxx_lambdas, LangOpts.CPlusPlus11) +FEATURE(cxx_local_type_template_args, LangOpts.CPlusPlus11) +FEATURE(cxx_nonstatic_member_init, LangOpts.CPlusPlus11) +FEATURE(cxx_noexcept, LangOpts.CPlusPlus11) +FEATURE(cxx_nullptr, LangOpts.CPlusPlus11) +FEATURE(cxx_override_control, LangOpts.CPlusPlus11) +FEATURE(cxx_range_for, LangOpts.CPlusPlus11) +FEATURE(cxx_raw_string_literals, LangOpts.CPlusPlus11) +FEATURE(cxx_reference_qualified_functions, LangOpts.CPlusPlus11) +FEATURE(cxx_rvalue_references, LangOpts.CPlusPlus11) +FEATURE(cxx_strong_enums, LangOpts.CPlusPlus11) +FEATURE(cxx_static_assert, LangOpts.CPlusPlus11) +FEATURE(cxx_thread_local, + LangOpts.CPlusPlus11 &&PP.getTargetInfo().isTLSSupported()) +FEATURE(cxx_trailing_return, LangOpts.CPlusPlus11) +FEATURE(cxx_unicode_literals, LangOpts.CPlusPlus11) +FEATURE(cxx_unrestricted_unions, LangOpts.CPlusPlus11) +FEATURE(cxx_user_literals, LangOpts.CPlusPlus11) +FEATURE(cxx_variadic_templates, LangOpts.CPlusPlus11) +// C++14 features +FEATURE(cxx_aggregate_nsdmi, LangOpts.CPlusPlus14) +FEATURE(cxx_binary_literals, LangOpts.CPlusPlus14) +FEATURE(cxx_contextual_conversions, LangOpts.CPlusPlus14) +FEATURE(cxx_decltype_auto, LangOpts.CPlusPlus14) +FEATURE(cxx_generic_lambdas, LangOpts.CPlusPlus14) +FEATURE(cxx_init_captures, LangOpts.CPlusPlus14) +FEATURE(cxx_relaxed_constexpr, LangOpts.CPlusPlus14) +FEATURE(cxx_return_type_deduction, LangOpts.CPlusPlus14) +FEATURE(cxx_variable_templates, LangOpts.CPlusPlus14) +// NOTE: For features covered by SD-6, it is preferable to provide *only* +// the SD-6 macro and not a __has_feature check. + +// C++ TSes +// FEATURE(cxx_runtime_arrays, LangOpts.CPlusPlusTSArrays) +// FEATURE(cxx_concepts, LangOpts.CPlusPlusTSConcepts) +// FIXME: Should this be __has_feature or __has_extension? +// FEATURE(raw_invocation_type, LangOpts.CPlusPlus) +// Type traits +// N.B. Additional type traits should not be added to the following list. +// Instead, they should be detected by has_extension. +FEATURE(has_nothrow_assign, LangOpts.CPlusPlus) +FEATURE(has_nothrow_copy, LangOpts.CPlusPlus) +FEATURE(has_nothrow_constructor, LangOpts.CPlusPlus) +FEATURE(has_trivial_assign, LangOpts.CPlusPlus) +FEATURE(has_trivial_copy, LangOpts.CPlusPlus) +FEATURE(has_trivial_constructor, LangOpts.CPlusPlus) +FEATURE(has_trivial_destructor, LangOpts.CPlusPlus) +FEATURE(has_virtual_destructor, LangOpts.CPlusPlus) +FEATURE(is_abstract, LangOpts.CPlusPlus) +FEATURE(is_base_of, LangOpts.CPlusPlus) +FEATURE(is_class, LangOpts.CPlusPlus) +FEATURE(is_constructible, LangOpts.CPlusPlus) +FEATURE(is_convertible_to, LangOpts.CPlusPlus) +FEATURE(is_empty, LangOpts.CPlusPlus) +FEATURE(is_enum, LangOpts.CPlusPlus) +FEATURE(is_final, LangOpts.CPlusPlus) +FEATURE(is_literal, LangOpts.CPlusPlus) +FEATURE(is_standard_layout, LangOpts.CPlusPlus) +FEATURE(is_pod, LangOpts.CPlusPlus) +FEATURE(is_polymorphic, LangOpts.CPlusPlus) +FEATURE(is_sealed, LangOpts.CPlusPlus &&LangOpts.MicrosoftExt) +FEATURE(is_trivial, LangOpts.CPlusPlus) +FEATURE(is_trivially_assignable, LangOpts.CPlusPlus) +FEATURE(is_trivially_constructible, LangOpts.CPlusPlus) +FEATURE(is_trivially_copyable, LangOpts.CPlusPlus) +FEATURE(is_union, LangOpts.CPlusPlus) +FEATURE(modules, LangOpts.Modules) +FEATURE(safe_stack, LangOpts.Sanitize.has(SanitizerKind::SafeStack)) +FEATURE(shadow_call_stack, + LangOpts.Sanitize.has(SanitizerKind::ShadowCallStack)) +FEATURE(tls, PP.getTargetInfo().isTLSSupported()) +FEATURE(underlying_type, LangOpts.CPlusPlus) + +// C11 features supported by other languages as extensions. +EXTENSION(c_alignas, true) +EXTENSION(c_alignof, true) +EXTENSION(c_atomic, true) +EXTENSION(c_generic_selections, true) +EXTENSION(c_static_assert, true) +EXTENSION(c_thread_local, PP.getTargetInfo().isTLSSupported()) +// C++11 features supported by other languages as extensions. +EXTENSION(cxx_atomic, LangOpts.CPlusPlus) +EXTENSION(cxx_deleted_functions, LangOpts.CPlusPlus) +EXTENSION(cxx_explicit_conversions, LangOpts.CPlusPlus) +EXTENSION(cxx_inline_namespaces, LangOpts.CPlusPlus) +EXTENSION(cxx_local_type_template_args, LangOpts.CPlusPlus) +EXTENSION(cxx_nonstatic_member_init, LangOpts.CPlusPlus) +EXTENSION(cxx_override_control, LangOpts.CPlusPlus) +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 diff --git a/clang-r353983/include/clang/Basic/FileManager.h b/clang-r353983/include/clang/Basic/FileManager.h new file mode 100644 index 00000000..88c1467b --- /dev/null +++ b/clang-r353983/include/clang/Basic/FileManager.h @@ -0,0 +1,287 @@ +//===--- FileManager.h - File System Probing and Caching --------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the clang::FileManager interface and associated types. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_FILEMANAGER_H +#define LLVM_CLANG_BASIC_FILEMANAGER_H + +#include "clang/Basic/FileSystemOptions.h" +#include "clang/Basic/LLVM.h" +#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/IntrusiveRefCntPtr.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringMap.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/Allocator.h" +#include "llvm/Support/ErrorOr.h" +#include "llvm/Support/FileSystem.h" +#include "llvm/Support/VirtualFileSystem.h" +#include <ctime> +#include <map> +#include <memory> +#include <string> + +namespace llvm { + +class MemoryBuffer; + +} // end namespace llvm + +namespace clang { + +class FileSystemStatCache; + +/// Cached information about one directory (either on disk or in +/// the virtual file system). +class DirectoryEntry { + friend class FileManager; + + StringRef Name; // Name of the directory. + +public: + StringRef getName() const { return Name; } +}; + +/// Cached information about one file (either on disk +/// or in the virtual file system). +/// +/// If the 'File' member is valid, then this FileEntry has an open file +/// descriptor for the file. +class FileEntry { + friend class FileManager; + + StringRef Name; // Name of the file. + std::string RealPathName; // Real path to the file; could be empty. + off_t Size; // File size in bytes. + time_t ModTime; // Modification time of file. + const DirectoryEntry *Dir; // Directory file lives in. + unsigned UID; // A unique (small) ID for the file. + llvm::sys::fs::UniqueID UniqueID; + bool IsNamedPipe; + bool InPCH; + bool IsValid; // Is this \c FileEntry initialized and valid? + + /// The open file, if it is owned by the \p FileEntry. + mutable std::unique_ptr<llvm::vfs::File> File; + +public: + FileEntry() + : UniqueID(0, 0), IsNamedPipe(false), InPCH(false), IsValid(false) + {} + + FileEntry(const FileEntry &) = delete; + FileEntry &operator=(const FileEntry &) = delete; + + StringRef getName() const { return Name; } + StringRef tryGetRealPathName() const { return RealPathName; } + bool isValid() const { return IsValid; } + off_t getSize() const { return Size; } + unsigned getUID() const { return UID; } + const llvm::sys::fs::UniqueID &getUniqueID() const { return UniqueID; } + bool isInPCH() const { return InPCH; } + time_t getModificationTime() const { return ModTime; } + + /// Return the directory the file lives in. + const DirectoryEntry *getDir() const { return Dir; } + + bool operator<(const FileEntry &RHS) const { return UniqueID < RHS.UniqueID; } + + /// Check whether the file is a named pipe (and thus can't be opened by + /// the native FileManager methods). + bool isNamedPipe() const { return IsNamedPipe; } + + void closeFile() const { + File.reset(); // rely on destructor to close File + } + + // Only for use in tests to see if deferred opens are happening, rather than + // relying on RealPathName being empty. + bool isOpenForTests() const { return File != nullptr; } +}; + +struct FileData; + +/// Implements support for file system lookup, file system caching, +/// and directory search management. +/// +/// This also handles more advanced properties, such as uniquing files based +/// on "inode", so that a file with two names (e.g. symlinked) will be treated +/// as a single file. +/// +class FileManager : public RefCountedBase<FileManager> { + IntrusiveRefCntPtr<llvm::vfs::FileSystem> FS; + FileSystemOptions FileSystemOpts; + + /// Cache for existing real directories. + std::map<llvm::sys::fs::UniqueID, DirectoryEntry> UniqueRealDirs; + + /// Cache for existing real files. + std::map<llvm::sys::fs::UniqueID, FileEntry> UniqueRealFiles; + + /// The virtual directories that we have allocated. + /// + /// For each virtual file (e.g. foo/bar/baz.cpp), we add all of its parent + /// directories (foo/ and foo/bar/) here. + SmallVector<std::unique_ptr<DirectoryEntry>, 4> VirtualDirectoryEntries; + /// The virtual files that we have allocated. + SmallVector<std::unique_ptr<FileEntry>, 4> VirtualFileEntries; + + /// A cache that maps paths to directory entries (either real or + /// virtual) we have looked up + /// + /// The actual Entries for real directories/files are + /// owned by UniqueRealDirs/UniqueRealFiles above, while the Entries + /// for virtual directories/files are owned by + /// VirtualDirectoryEntries/VirtualFileEntries above. + /// + llvm::StringMap<DirectoryEntry*, llvm::BumpPtrAllocator> SeenDirEntries; + + /// A cache that maps paths to file entries (either real or + /// virtual) we have looked up. + /// + /// \see SeenDirEntries + llvm::StringMap<FileEntry*, llvm::BumpPtrAllocator> SeenFileEntries; + + /// The canonical names of directories. + llvm::DenseMap<const DirectoryEntry *, llvm::StringRef> CanonicalDirNames; + + /// Storage for canonical names that we have computed. + llvm::BumpPtrAllocator CanonicalNameStorage; + + /// Each FileEntry we create is assigned a unique ID #. + /// + unsigned NextFileUID; + + // Statistics. + unsigned NumDirLookups, NumFileLookups; + unsigned NumDirCacheMisses, NumFileCacheMisses; + + // Caching. + std::unique_ptr<FileSystemStatCache> StatCache; + + bool getStatValue(StringRef Path, FileData &Data, bool isFile, + std::unique_ptr<llvm::vfs::File> *F); + + /// Add all ancestors of the given path (pointing to either a file + /// or a directory) as virtual directories. + void addAncestorsAsVirtualDirs(StringRef Path); + + /// Fills the RealPathName in file entry. + void fillRealPathName(FileEntry *UFE, llvm::StringRef FileName); + +public: + FileManager(const FileSystemOptions &FileSystemOpts, + IntrusiveRefCntPtr<llvm::vfs::FileSystem> FS = nullptr); + ~FileManager(); + + /// Installs the provided FileSystemStatCache object within + /// the FileManager. + /// + /// Ownership of this object is transferred to the FileManager. + /// + /// \param statCache the new stat cache to install. Ownership of this + /// object is transferred to the FileManager. + void setStatCache(std::unique_ptr<FileSystemStatCache> statCache); + + /// Removes the FileSystemStatCache object from the manager. + void clearStatCache(); + + /// Lookup, cache, and verify the specified directory (real or + /// virtual). + /// + /// This returns NULL if the directory doesn't exist. + /// + /// \param CacheFailure If true and the file does not exist, we'll cache + /// the failure to find this file. + const DirectoryEntry *getDirectory(StringRef DirName, + bool CacheFailure = true); + + /// Lookup, cache, and verify the specified file (real or + /// virtual). + /// + /// This returns NULL if the file doesn't exist. + /// + /// \param OpenFile if true and the file exists, it will be opened. + /// + /// \param CacheFailure If true and the file does not exist, we'll cache + /// the failure to find this file. + const FileEntry *getFile(StringRef Filename, bool OpenFile = false, + bool CacheFailure = true); + + /// Returns the current file system options + FileSystemOptions &getFileSystemOpts() { return FileSystemOpts; } + const FileSystemOptions &getFileSystemOpts() const { return FileSystemOpts; } + + IntrusiveRefCntPtr<llvm::vfs::FileSystem> getVirtualFileSystem() const { + return FS; + } + + /// Retrieve a file entry for a "virtual" file that acts as + /// if there were a file with the given name on disk. + /// + /// The file itself is not accessed. + const FileEntry *getVirtualFile(StringRef Filename, off_t Size, + time_t ModificationTime); + + /// Open the specified file as a MemoryBuffer, returning a new + /// MemoryBuffer if successful, otherwise returning null. + llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> + getBufferForFile(const FileEntry *Entry, bool isVolatile = false, + bool ShouldCloseOpenFile = true); + llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> + getBufferForFile(StringRef Filename, bool isVolatile = false); + + /// Get the 'stat' information for the given \p Path. + /// + /// If the path is relative, it will be resolved against the WorkingDir of the + /// FileManager's FileSystemOptions. + /// + /// \returns false on success, true on error. + bool getNoncachedStatValue(StringRef Path, llvm::vfs::Status &Result); + + /// Remove the real file \p Entry from the cache. + void invalidateCache(const FileEntry *Entry); + + /// If path is not absolute and FileSystemOptions set the working + /// directory, the path is modified to be relative to the given + /// working directory. + /// \returns true if \c path changed. + bool FixupRelativePath(SmallVectorImpl<char> &path) const; + + /// Makes \c Path absolute taking into account FileSystemOptions and the + /// working directory option. + /// \returns true if \c Path changed to absolute. + bool makeAbsolutePath(SmallVectorImpl<char> &Path) const; + + /// Produce an array mapping from the unique IDs assigned to each + /// file to the corresponding FileEntry pointer. + void GetUniqueIDMapping( + SmallVectorImpl<const FileEntry *> &UIDToFiles) const; + + /// Modifies the size and modification time of a previously created + /// FileEntry. Use with caution. + static void modifyFileEntry(FileEntry *File, off_t Size, + time_t ModificationTime); + + /// Retrieve the canonical name for a given directory. + /// + /// This is a very expensive operation, despite its results being cached, + /// and should only be used when the physical layout of the file system is + /// required, which is (almost) never. + StringRef getCanonicalName(const DirectoryEntry *Dir); + + void PrintStats() const; +}; + +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_FILEMANAGER_H diff --git a/clang-r353983/include/clang/Basic/FileSystemOptions.h b/clang-r353983/include/clang/Basic/FileSystemOptions.h new file mode 100644 index 00000000..458af0c7 --- /dev/null +++ b/clang-r353983/include/clang/Basic/FileSystemOptions.h @@ -0,0 +1,31 @@ +//===--- FileSystemOptions.h - File System Options --------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the clang::FileSystemOptions interface. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_FILESYSTEMOPTIONS_H +#define LLVM_CLANG_BASIC_FILESYSTEMOPTIONS_H + +#include <string> + +namespace clang { + +/// Keeps track of options that affect how file operations are performed. +class FileSystemOptions { +public: + /// If set, paths are resolved as if the working directory was + /// set to the value of WorkingDir. + std::string WorkingDir; +}; + +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/FileSystemStatCache.h b/clang-r353983/include/clang/Basic/FileSystemStatCache.h new file mode 100644 index 00000000..0ae6a9eb --- /dev/null +++ b/clang-r353983/include/clang/Basic/FileSystemStatCache.h @@ -0,0 +1,117 @@ +//===- FileSystemStatCache.h - Caching for 'stat' calls ---------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines the FileSystemStatCache interface. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_FILESYSTEMSTATCACHE_H +#define LLVM_CLANG_BASIC_FILESYSTEMSTATCACHE_H + +#include "clang/Basic/LLVM.h" +#include "llvm/ADT/StringMap.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/Allocator.h" +#include "llvm/Support/FileSystem.h" +#include <cstdint> +#include <ctime> +#include <memory> +#include <string> +#include <utility> + +namespace llvm { + +namespace vfs { + +class File; +class FileSystem; + +} // namespace vfs +} // namespace llvm + +namespace clang { + +// FIXME: should probably replace this with vfs::Status +struct FileData { + std::string Name; + uint64_t Size = 0; + time_t ModTime = 0; + llvm::sys::fs::UniqueID UniqueID; + bool IsDirectory = false; + bool IsNamedPipe = false; + bool InPCH = false; + + // FIXME: remove this when files support multiple names + bool IsVFSMapped = false; + + FileData() = default; +}; + +/// Abstract interface for introducing a FileManager cache for 'stat' +/// system calls, which is used by precompiled and pretokenized headers to +/// improve performance. +class FileSystemStatCache { + virtual void anchor(); + +public: + virtual ~FileSystemStatCache() = default; + + enum LookupResult { + /// We know the file exists and its cached stat data. + CacheExists, + + /// We know that the file doesn't exist. + CacheMissing + }; + + /// Get the 'stat' information for the specified path, using the cache + /// to accelerate it if possible. + /// + /// \returns \c true if the path does not exist or \c false if it exists. + /// + /// If isFile is true, then this lookup should only return success for files + /// (not directories). If it is false this lookup should only return + /// success for directories (not files). On a successful file lookup, the + /// implementation can optionally fill in \p F with a valid \p File object and + /// the client guarantees that it will close it. + static bool get(StringRef Path, FileData &Data, bool isFile, + std::unique_ptr<llvm::vfs::File> *F, + FileSystemStatCache *Cache, llvm::vfs::FileSystem &FS); + +protected: + // FIXME: The pointer here is a non-owning/optional reference to the + // unique_ptr. Optional<unique_ptr<vfs::File>&> might be nicer, but + // Optional needs some work to support references so this isn't possible yet. + virtual LookupResult getStat(StringRef Path, FileData &Data, bool isFile, + std::unique_ptr<llvm::vfs::File> *F, + llvm::vfs::FileSystem &FS) = 0; +}; + +/// A stat "cache" that can be used by FileManager to keep +/// track of the results of stat() calls that occur throughout the +/// execution of the front end. +class MemorizeStatCalls : public FileSystemStatCache { +public: + /// The set of stat() calls that have been seen. + llvm::StringMap<FileData, llvm::BumpPtrAllocator> StatCalls; + + using iterator = + llvm::StringMap<FileData, llvm::BumpPtrAllocator>::const_iterator; + + iterator begin() const { return StatCalls.begin(); } + iterator end() const { return StatCalls.end(); } + + LookupResult getStat(StringRef Path, FileData &Data, bool isFile, + std::unique_ptr<llvm::vfs::File> *F, + llvm::vfs::FileSystem &FS) override; +}; + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_FILESYSTEMSTATCACHE_H diff --git a/clang-r353983/include/clang/Basic/FixedPoint.h b/clang-r353983/include/clang/Basic/FixedPoint.h new file mode 100644 index 00000000..f68ed568 --- /dev/null +++ b/clang-r353983/include/clang/Basic/FixedPoint.h @@ -0,0 +1,191 @@ +//===- FixedPoint.h - Fixed point constant handling -------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines the fixed point number interface. +/// This is a class for abstracting various operations performed on fixed point +/// types described in ISO/IEC JTC1 SC22 WG14 N1169 starting at clause 4. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_FIXEDPOINT_H +#define LLVM_CLANG_BASIC_FIXEDPOINT_H + +#include "llvm/ADT/APSInt.h" +#include "llvm/ADT/SmallString.h" +#include "llvm/Support/raw_ostream.h" + +namespace clang { + +class ASTContext; +class QualType; + +/// The fixed point semantics work similarly to llvm::fltSemantics. The width +/// specifies the whole bit width of the underlying scaled integer (with padding +/// if any). The scale represents the number of fractional bits in this type. +/// When HasUnsignedPadding is true and this type is signed, the first bit +/// in the value this represents is treaded as padding. +class FixedPointSemantics { +public: + FixedPointSemantics(unsigned Width, unsigned Scale, bool IsSigned, + bool IsSaturated, bool HasUnsignedPadding) + : Width(Width), Scale(Scale), IsSigned(IsSigned), + IsSaturated(IsSaturated), HasUnsignedPadding(HasUnsignedPadding) { + assert(Width >= Scale && "Not enough room for the scale"); + assert(!(IsSigned && HasUnsignedPadding) && + "Cannot have unsigned padding on a signed type."); + } + + unsigned getWidth() const { return Width; } + unsigned getScale() const { return Scale; } + bool isSigned() const { return IsSigned; } + bool isSaturated() const { return IsSaturated; } + bool hasUnsignedPadding() const { return HasUnsignedPadding; } + + void setSaturated(bool Saturated) { IsSaturated = Saturated; } + + /// Return the number of integral bits represented by these semantics. These + /// are separate from the fractional bits and do not include the sign or + /// padding bit. + unsigned getIntegralBits() const { + if (IsSigned || (!IsSigned && HasUnsignedPadding)) + return Width - Scale - 1; + else + return Width - Scale; + } + + /// Return the FixedPointSemantics that allows for calculating the full + /// precision semantic that can precisely represent the precision and ranges + /// of both input values. This does not compute the resulting semantics for a + /// given binary operation. + FixedPointSemantics + getCommonSemantics(const FixedPointSemantics &Other) const; + + /// Return the FixedPointSemantics for an integer type. + static FixedPointSemantics GetIntegerSemantics(unsigned Width, + bool IsSigned) { + return FixedPointSemantics(Width, /*Scale=*/0, IsSigned, + /*IsSaturated=*/false, + /*HasUnsignedPadding=*/false); + } + +private: + unsigned Width; + unsigned Scale; + bool IsSigned; + bool IsSaturated; + bool HasUnsignedPadding; +}; + +/// The APFixedPoint class works similarly to APInt/APSInt in that it is a +/// functional replacement for a scaled integer. It is meant to replicate the +/// fixed point types proposed in ISO/IEC JTC1 SC22 WG14 N1169. The class carries +/// info about the fixed point type's width, sign, scale, and saturation, and +/// provides different operations that would normally be performed on fixed point +/// types. +/// +/// Semantically this does not represent any existing C type other than fixed +/// point types and should eventually be moved to LLVM if fixed point types gain +/// native IR support. +class APFixedPoint { + public: + APFixedPoint(const llvm::APInt &Val, const FixedPointSemantics &Sema) + : Val(Val, !Sema.isSigned()), Sema(Sema) { + assert(Val.getBitWidth() == Sema.getWidth() && + "The value should have a bit width that matches the Sema width"); + } + + APFixedPoint(uint64_t Val, const FixedPointSemantics &Sema) + : APFixedPoint(llvm::APInt(Sema.getWidth(), Val, Sema.isSigned()), + Sema) {} + + // Zero initialization. + APFixedPoint(const FixedPointSemantics &Sema) : APFixedPoint(0, Sema) {} + + llvm::APSInt getValue() const { return llvm::APSInt(Val, !Sema.isSigned()); } + inline unsigned getWidth() const { return Sema.getWidth(); } + inline unsigned getScale() const { return Sema.getScale(); } + inline bool isSaturated() const { return Sema.isSaturated(); } + inline bool isSigned() const { return Sema.isSigned(); } + inline bool hasPadding() const { return Sema.hasUnsignedPadding(); } + FixedPointSemantics getSemantics() const { return Sema; } + + bool getBoolValue() const { return Val.getBoolValue(); } + + // Convert this number to match the semantics provided. If the overflow + // parameter is provided, set this value to true or false to indicate if this + // operation results in an overflow. + APFixedPoint convert(const FixedPointSemantics &DstSema, + bool *Overflow = nullptr) const; + + // Perform binary operations on a fixed point type. The resulting fixed point + // value will be in the common, full precision semantics that can represent + // the precision and ranges os both input values. See convert() for an + // explanation of the Overflow parameter. + APFixedPoint add(const APFixedPoint &Other, bool *Overflow = nullptr) const; + + /// Perform a unary negation (-X) on this fixed point type, taking into + /// account saturation if applicable. + APFixedPoint negate(bool *Overflow = nullptr) const; + + APFixedPoint shr(unsigned Amt) const { + return APFixedPoint(Val >> Amt, Sema); + } + + APFixedPoint shl(unsigned Amt) const { + return APFixedPoint(Val << Amt, Sema); + } + + llvm::APSInt getIntPart() const { + if (Val < 0 && Val != -Val) // Cover the case when we have the min val + return -(-Val >> getScale()); + else + return Val >> getScale(); + } + + void toString(llvm::SmallVectorImpl<char> &Str) const; + std::string toString() const { + llvm::SmallString<40> S; + toString(S); + return S.str(); + } + + // If LHS > RHS, return 1. If LHS == RHS, return 0. If LHS < RHS, return -1. + int compare(const APFixedPoint &Other) const; + bool operator==(const APFixedPoint &Other) const { + return compare(Other) == 0; + } + bool operator!=(const APFixedPoint &Other) const { + return compare(Other) != 0; + } + bool operator>(const APFixedPoint &Other) const { return compare(Other) > 0; } + bool operator<(const APFixedPoint &Other) const { return compare(Other) < 0; } + bool operator>=(const APFixedPoint &Other) const { + return compare(Other) >= 0; + } + bool operator<=(const APFixedPoint &Other) const { + return compare(Other) <= 0; + } + + static APFixedPoint getMax(const FixedPointSemantics &Sema); + static APFixedPoint getMin(const FixedPointSemantics &Sema); + +private: + llvm::APSInt Val; + FixedPointSemantics Sema; +}; + +inline llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, + const APFixedPoint &FX) { + OS << FX.toString(); + return OS; +} + +} // namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/IdentifierTable.h b/clang-r353983/include/clang/Basic/IdentifierTable.h new file mode 100644 index 00000000..465486ed --- /dev/null +++ b/clang-r353983/include/clang/Basic/IdentifierTable.h @@ -0,0 +1,984 @@ +//===- IdentifierTable.h - Hash table for identifier lookup -----*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines the clang::IdentifierInfo, clang::IdentifierTable, and +/// clang::Selector interfaces. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_IDENTIFIERTABLE_H +#define LLVM_CLANG_BASIC_IDENTIFIERTABLE_H + +#include "clang/Basic/LLVM.h" +#include "clang/Basic/TokenKinds.h" +#include "llvm/ADT/DenseMapInfo.h" +#include "llvm/ADT/SmallString.h" +#include "llvm/ADT/StringMap.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/Allocator.h" +#include "llvm/Support/PointerLikeTypeTraits.h" +#include "llvm/Support/type_traits.h" +#include <cassert> +#include <cstddef> +#include <cstdint> +#include <cstring> +#include <string> +#include <utility> + +namespace clang { + +class DeclarationName; +class DeclarationNameTable; +class IdentifierInfo; +class LangOptions; +class MultiKeywordSelector; +class SourceLocation; + +/// A simple pair of identifier info and location. +using IdentifierLocPair = std::pair<IdentifierInfo *, SourceLocation>; + +/// IdentifierInfo and other related classes are aligned to +/// 8 bytes so that DeclarationName can use the lower 3 bits +/// of a pointer to one of these classes. +enum { IdentifierInfoAlignment = 8 }; + +/// One of these records is kept for each identifier that +/// is lexed. This contains information about whether the token was \#define'd, +/// is a language keyword, or if it is a front-end token of some sort (e.g. a +/// variable or function name). The preprocessor keeps this information in a +/// set, and all tok::identifier tokens have a pointer to one of these. +/// It is aligned to 8 bytes because DeclarationName needs the lower 3 bits. +class alignas(IdentifierInfoAlignment) IdentifierInfo { + friend class IdentifierTable; + + // Front-end token ID or tok::identifier. + unsigned TokenID : 9; + + // ObjC keyword ('protocol' in '@protocol') or builtin (__builtin_inf). + // First NUM_OBJC_KEYWORDS values are for Objective-C, + // the remaining values are for builtins. + unsigned ObjCOrBuiltinID : 13; + + // True if there is a #define for this. + unsigned HasMacro : 1; + + // True if there was a #define for this. + unsigned HadMacro : 1; + + // True if the identifier is a language extension. + unsigned IsExtension : 1; + + // True if the identifier is a keyword in a newer or proposed Standard. + unsigned IsFutureCompatKeyword : 1; + + // True if the identifier is poisoned. + unsigned IsPoisoned : 1; + + // True if the identifier is a C++ operator keyword. + unsigned IsCPPOperatorKeyword : 1; + + // Internal bit set by the member function RecomputeNeedsHandleIdentifier. + // See comment about RecomputeNeedsHandleIdentifier for more info. + unsigned NeedsHandleIdentifier : 1; + + // True if the identifier was loaded (at least partially) from an AST file. + unsigned IsFromAST : 1; + + // True if the identifier has changed from the definition + // loaded from an AST file. + unsigned ChangedAfterLoad : 1; + + // True if the identifier's frontend information has changed from the + // definition loaded from an AST file. + unsigned FEChangedAfterLoad : 1; + + // True if revertTokenIDToIdentifier was called. + unsigned RevertedTokenID : 1; + + // True if there may be additional information about + // this identifier stored externally. + unsigned OutOfDate : 1; + + // True if this is the 'import' contextual keyword. + unsigned IsModulesImport : 1; + + // 29 bits left in a 64-bit word. + + // Managed by the language front-end. + void *FETokenInfo = nullptr; + + llvm::StringMapEntry<IdentifierInfo *> *Entry = nullptr; + + IdentifierInfo() + : TokenID(tok::identifier), ObjCOrBuiltinID(0), HasMacro(false), + HadMacro(false), IsExtension(false), IsFutureCompatKeyword(false), + IsPoisoned(false), IsCPPOperatorKeyword(false), + NeedsHandleIdentifier(false), IsFromAST(false), ChangedAfterLoad(false), + FEChangedAfterLoad(false), RevertedTokenID(false), OutOfDate(false), + IsModulesImport(false) {} + +public: + IdentifierInfo(const IdentifierInfo &) = delete; + IdentifierInfo &operator=(const IdentifierInfo &) = delete; + IdentifierInfo(IdentifierInfo &&) = delete; + IdentifierInfo &operator=(IdentifierInfo &&) = delete; + + /// Return true if this is the identifier for the specified string. + /// + /// This is intended to be used for string literals only: II->isStr("foo"). + template <std::size_t StrLen> + bool isStr(const char (&Str)[StrLen]) const { + return getLength() == StrLen-1 && + memcmp(getNameStart(), Str, StrLen-1) == 0; + } + + /// Return true if this is the identifier for the specified StringRef. + bool isStr(llvm::StringRef Str) const { + llvm::StringRef ThisStr(getNameStart(), getLength()); + return ThisStr == Str; + } + + /// Return the beginning of the actual null-terminated string for this + /// identifier. + const char *getNameStart() const { return Entry->getKeyData(); } + + /// Efficiently return the length of this identifier info. + unsigned getLength() const { return Entry->getKeyLength(); } + + /// Return the actual identifier string. + StringRef getName() const { + return StringRef(getNameStart(), getLength()); + } + + /// Return true if this identifier is \#defined to some other value. + /// \note The current definition may be in a module and not currently visible. + bool hasMacroDefinition() const { + return HasMacro; + } + void setHasMacroDefinition(bool Val) { + if (HasMacro == Val) return; + + HasMacro = Val; + if (Val) { + NeedsHandleIdentifier = true; + HadMacro = true; + } else { + RecomputeNeedsHandleIdentifier(); + } + } + /// Returns true if this identifier was \#defined to some value at any + /// moment. In this case there should be an entry for the identifier in the + /// macro history table in Preprocessor. + bool hadMacroDefinition() const { + return HadMacro; + } + + /// If this is a source-language token (e.g. 'for'), this API + /// can be used to cause the lexer to map identifiers to source-language + /// tokens. + tok::TokenKind getTokenID() const { return (tok::TokenKind)TokenID; } + + /// True if revertTokenIDToIdentifier() was called. + bool hasRevertedTokenIDToIdentifier() const { return RevertedTokenID; } + + /// Revert TokenID to tok::identifier; used for GNU libstdc++ 4.2 + /// compatibility. + /// + /// TokenID is normally read-only but there are 2 instances where we revert it + /// to tok::identifier for libstdc++ 4.2. Keep track of when this happens + /// using this method so we can inform serialization about it. + void revertTokenIDToIdentifier() { + assert(TokenID != tok::identifier && "Already at tok::identifier"); + TokenID = tok::identifier; + RevertedTokenID = true; + } + void revertIdentifierToTokenID(tok::TokenKind TK) { + assert(TokenID == tok::identifier && "Should be at tok::identifier"); + TokenID = TK; + RevertedTokenID = false; + } + + /// Return the preprocessor keyword ID for this identifier. + /// + /// For example, "define" will return tok::pp_define. + tok::PPKeywordKind getPPKeywordID() const; + + /// Return the Objective-C keyword ID for the this identifier. + /// + /// For example, 'class' will return tok::objc_class if ObjC is enabled. + tok::ObjCKeywordKind getObjCKeywordID() const { + if (ObjCOrBuiltinID < tok::NUM_OBJC_KEYWORDS) + return tok::ObjCKeywordKind(ObjCOrBuiltinID); + else + return tok::objc_not_keyword; + } + void setObjCKeywordID(tok::ObjCKeywordKind ID) { ObjCOrBuiltinID = ID; } + + /// True if setNotBuiltin() was called. + bool hasRevertedBuiltin() const { + return ObjCOrBuiltinID == tok::NUM_OBJC_KEYWORDS; + } + + /// Revert the identifier to a non-builtin identifier. We do this if + /// the name of a known builtin library function is used to declare that + /// function, but an unexpected type is specified. + void revertBuiltin() { + setBuiltinID(0); + } + + /// Return a value indicating whether this is a builtin function. + /// + /// 0 is not-built-in. 1+ are specific builtin functions. + unsigned getBuiltinID() const { + if (ObjCOrBuiltinID >= tok::NUM_OBJC_KEYWORDS) + return ObjCOrBuiltinID - tok::NUM_OBJC_KEYWORDS; + else + return 0; + } + void setBuiltinID(unsigned ID) { + ObjCOrBuiltinID = ID + tok::NUM_OBJC_KEYWORDS; + assert(ObjCOrBuiltinID - unsigned(tok::NUM_OBJC_KEYWORDS) == ID + && "ID too large for field!"); + } + + unsigned getObjCOrBuiltinID() const { return ObjCOrBuiltinID; } + void setObjCOrBuiltinID(unsigned ID) { ObjCOrBuiltinID = ID; } + + /// get/setExtension - Initialize information about whether or not this + /// language token is an extension. This controls extension warnings, and is + /// only valid if a custom token ID is set. + bool isExtensionToken() const { return IsExtension; } + void setIsExtensionToken(bool Val) { + IsExtension = Val; + if (Val) + NeedsHandleIdentifier = true; + else + RecomputeNeedsHandleIdentifier(); + } + + /// is/setIsFutureCompatKeyword - Initialize information about whether or not + /// this language token is a keyword in a newer or proposed Standard. This + /// controls compatibility warnings, and is only true when not parsing the + /// corresponding Standard. Once a compatibility problem has been diagnosed + /// with this keyword, the flag will be cleared. + bool isFutureCompatKeyword() const { return IsFutureCompatKeyword; } + void setIsFutureCompatKeyword(bool Val) { + IsFutureCompatKeyword = Val; + if (Val) + NeedsHandleIdentifier = true; + else + RecomputeNeedsHandleIdentifier(); + } + + /// setIsPoisoned - Mark this identifier as poisoned. After poisoning, the + /// Preprocessor will emit an error every time this token is used. + void setIsPoisoned(bool Value = true) { + IsPoisoned = Value; + if (Value) + NeedsHandleIdentifier = true; + else + RecomputeNeedsHandleIdentifier(); + } + + /// Return true if this token has been poisoned. + bool isPoisoned() const { return IsPoisoned; } + + /// isCPlusPlusOperatorKeyword/setIsCPlusPlusOperatorKeyword controls whether + /// this identifier is a C++ alternate representation of an operator. + void setIsCPlusPlusOperatorKeyword(bool Val = true) { + IsCPPOperatorKeyword = Val; + } + bool isCPlusPlusOperatorKeyword() const { return IsCPPOperatorKeyword; } + + /// Return true if this token is a keyword in the specified language. + bool isKeyword(const LangOptions &LangOpts) const; + + /// Return true if this token is a C++ keyword in the specified + /// language. + bool isCPlusPlusKeyword(const LangOptions &LangOpts) const; + + /// Get and set FETokenInfo. The language front-end is allowed to associate + /// arbitrary metadata with this token. + void *getFETokenInfo() const { return FETokenInfo; } + void setFETokenInfo(void *T) { FETokenInfo = T; } + + /// Return true if the Preprocessor::HandleIdentifier must be called + /// on a token of this identifier. + /// + /// If this returns false, we know that HandleIdentifier will not affect + /// the token. + bool isHandleIdentifierCase() const { return NeedsHandleIdentifier; } + + /// Return true if the identifier in its current state was loaded + /// from an AST file. + bool isFromAST() const { return IsFromAST; } + + void setIsFromAST() { IsFromAST = true; } + + /// Determine whether this identifier has changed since it was loaded + /// from an AST file. + bool hasChangedSinceDeserialization() const { + return ChangedAfterLoad; + } + + /// Note that this identifier has changed since it was loaded from + /// an AST file. + void setChangedSinceDeserialization() { + ChangedAfterLoad = true; + } + + /// Determine whether the frontend token information for this + /// identifier has changed since it was loaded from an AST file. + bool hasFETokenInfoChangedSinceDeserialization() const { + return FEChangedAfterLoad; + } + + /// Note that the frontend token information for this identifier has + /// changed since it was loaded from an AST file. + void setFETokenInfoChangedSinceDeserialization() { + FEChangedAfterLoad = true; + } + + /// Determine whether the information for this identifier is out of + /// date with respect to the external source. + bool isOutOfDate() const { return OutOfDate; } + + /// Set whether the information for this identifier is out of + /// date with respect to the external source. + void setOutOfDate(bool OOD) { + OutOfDate = OOD; + if (OOD) + NeedsHandleIdentifier = true; + else + RecomputeNeedsHandleIdentifier(); + } + + /// Determine whether this is the contextual keyword \c import. + bool isModulesImport() const { return IsModulesImport; } + + /// Set whether this identifier is the contextual keyword \c import. + void setModulesImport(bool I) { + IsModulesImport = I; + if (I) + NeedsHandleIdentifier = true; + else + RecomputeNeedsHandleIdentifier(); + } + + /// Return true if this identifier is an editor placeholder. + /// + /// Editor placeholders are produced by the code-completion engine and are + /// represented as characters between '<#' and '#>' in the source code. An + /// example of auto-completed call with a placeholder parameter is shown + /// below: + /// \code + /// function(<#int x#>); + /// \endcode + bool isEditorPlaceholder() const { + return getName().startswith("<#") && getName().endswith("#>"); + } + + /// Provide less than operator for lexicographical sorting. + bool operator<(const IdentifierInfo &RHS) const { + return getName() < RHS.getName(); + } + +private: + /// The Preprocessor::HandleIdentifier does several special (but rare) + /// things to identifiers of various sorts. For example, it changes the + /// \c for keyword token from tok::identifier to tok::for. + /// + /// This method is very tied to the definition of HandleIdentifier. Any + /// change to it should be reflected here. + void RecomputeNeedsHandleIdentifier() { + NeedsHandleIdentifier = isPoisoned() || hasMacroDefinition() || + isExtensionToken() || isFutureCompatKeyword() || + isOutOfDate() || isModulesImport(); + } +}; + +/// An RAII object for [un]poisoning an identifier within a scope. +/// +/// \p II is allowed to be null, in which case objects of this type have +/// no effect. +class PoisonIdentifierRAIIObject { + IdentifierInfo *const II; + const bool OldValue; + +public: + PoisonIdentifierRAIIObject(IdentifierInfo *II, bool NewValue) + : II(II), OldValue(II ? II->isPoisoned() : false) { + if(II) + II->setIsPoisoned(NewValue); + } + + ~PoisonIdentifierRAIIObject() { + if(II) + II->setIsPoisoned(OldValue); + } +}; + +/// An iterator that walks over all of the known identifiers +/// in the lookup table. +/// +/// Since this iterator uses an abstract interface via virtual +/// functions, it uses an object-oriented interface rather than the +/// more standard C++ STL iterator interface. In this OO-style +/// iteration, the single function \c Next() provides dereference, +/// advance, and end-of-sequence checking in a single +/// operation. Subclasses of this iterator type will provide the +/// actual functionality. +class IdentifierIterator { +protected: + IdentifierIterator() = default; + +public: + IdentifierIterator(const IdentifierIterator &) = delete; + IdentifierIterator &operator=(const IdentifierIterator &) = delete; + + virtual ~IdentifierIterator(); + + /// Retrieve the next string in the identifier table and + /// advances the iterator for the following string. + /// + /// \returns The next string in the identifier table. If there is + /// no such string, returns an empty \c StringRef. + virtual StringRef Next() = 0; +}; + +/// Provides lookups to, and iteration over, IdentiferInfo objects. +class IdentifierInfoLookup { +public: + virtual ~IdentifierInfoLookup(); + + /// Return the IdentifierInfo for the specified named identifier. + /// + /// Unlike the version in IdentifierTable, this returns a pointer instead + /// of a reference. If the pointer is null then the IdentifierInfo cannot + /// be found. + virtual IdentifierInfo* get(StringRef Name) = 0; + + /// Retrieve an iterator into the set of all identifiers + /// known to this identifier lookup source. + /// + /// This routine provides access to all of the identifiers known to + /// the identifier lookup, allowing access to the contents of the + /// identifiers without introducing the overhead of constructing + /// IdentifierInfo objects for each. + /// + /// \returns A new iterator into the set of known identifiers. The + /// caller is responsible for deleting this iterator. + virtual IdentifierIterator *getIdentifiers(); +}; + +/// Implements an efficient mapping from strings to IdentifierInfo nodes. +/// +/// This has no other purpose, but this is an extremely performance-critical +/// piece of the code, as each occurrence of every identifier goes through +/// here when lexed. +class IdentifierTable { + // Shark shows that using MallocAllocator is *much* slower than using this + // BumpPtrAllocator! + using HashTableTy = llvm::StringMap<IdentifierInfo *, llvm::BumpPtrAllocator>; + HashTableTy HashTable; + + IdentifierInfoLookup* ExternalLookup; + +public: + /// Create the identifier table. + explicit IdentifierTable(IdentifierInfoLookup *ExternalLookup = nullptr); + + /// Create the identifier table, populating it with info about the + /// language keywords for the language specified by \p LangOpts. + explicit IdentifierTable(const LangOptions &LangOpts, + IdentifierInfoLookup *ExternalLookup = nullptr); + + /// Set the external identifier lookup mechanism. + void setExternalIdentifierLookup(IdentifierInfoLookup *IILookup) { + ExternalLookup = IILookup; + } + + /// Retrieve the external identifier lookup object, if any. + IdentifierInfoLookup *getExternalIdentifierLookup() const { + return ExternalLookup; + } + + llvm::BumpPtrAllocator& getAllocator() { + return HashTable.getAllocator(); + } + + /// Return the identifier token info for the specified named + /// identifier. + IdentifierInfo &get(StringRef Name) { + auto &Entry = *HashTable.insert(std::make_pair(Name, nullptr)).first; + + IdentifierInfo *&II = Entry.second; + if (II) return *II; + + // No entry; if we have an external lookup, look there first. + if (ExternalLookup) { + II = ExternalLookup->get(Name); + if (II) + return *II; + } + + // Lookups failed, make a new IdentifierInfo. + void *Mem = getAllocator().Allocate<IdentifierInfo>(); + II = new (Mem) IdentifierInfo(); + + // Make sure getName() knows how to find the IdentifierInfo + // contents. + II->Entry = &Entry; + + return *II; + } + + IdentifierInfo &get(StringRef Name, tok::TokenKind TokenCode) { + IdentifierInfo &II = get(Name); + II.TokenID = TokenCode; + assert(II.TokenID == (unsigned) TokenCode && "TokenCode too large"); + return II; + } + + /// Gets an IdentifierInfo for the given name without consulting + /// external sources. + /// + /// This is a version of get() meant for external sources that want to + /// introduce or modify an identifier. If they called get(), they would + /// likely end up in a recursion. + IdentifierInfo &getOwn(StringRef Name) { + auto &Entry = *HashTable.insert(std::make_pair(Name, nullptr)).first; + + IdentifierInfo *&II = Entry.second; + if (II) + return *II; + + // Lookups failed, make a new IdentifierInfo. + void *Mem = getAllocator().Allocate<IdentifierInfo>(); + II = new (Mem) IdentifierInfo(); + + // Make sure getName() knows how to find the IdentifierInfo + // contents. + II->Entry = &Entry; + + // If this is the 'import' contextual keyword, mark it as such. + if (Name.equals("import")) + II->setModulesImport(true); + + return *II; + } + + using iterator = HashTableTy::const_iterator; + using const_iterator = HashTableTy::const_iterator; + + iterator begin() const { return HashTable.begin(); } + iterator end() const { return HashTable.end(); } + unsigned size() const { return HashTable.size(); } + + /// Print some statistics to stderr that indicate how well the + /// hashing is doing. + void PrintStats() const; + + /// Populate the identifier table with info about the language keywords + /// for the language specified by \p LangOpts. + void AddKeywords(const LangOptions &LangOpts); +}; + +/// A family of Objective-C methods. +/// +/// These families have no inherent meaning in the language, but are +/// nonetheless central enough in the existing implementations to +/// merit direct AST support. While, in theory, arbitrary methods can +/// be considered to form families, we focus here on the methods +/// involving allocation and retain-count management, as these are the +/// most "core" and the most likely to be useful to diverse clients +/// without extra information. +/// +/// Both selectors and actual method declarations may be classified +/// into families. Method families may impose additional restrictions +/// beyond their selector name; for example, a method called '_init' +/// that returns void is not considered to be in the 'init' family +/// (but would be if it returned 'id'). It is also possible to +/// explicitly change or remove a method's family. Therefore the +/// method's family should be considered the single source of truth. +enum ObjCMethodFamily { + /// No particular method family. + OMF_None, + + // Selectors in these families may have arbitrary arity, may be + // written with arbitrary leading underscores, and may have + // additional CamelCase "words" in their first selector chunk + // following the family name. + OMF_alloc, + OMF_copy, + OMF_init, + OMF_mutableCopy, + OMF_new, + + // These families are singletons consisting only of the nullary + // selector with the given name. + OMF_autorelease, + OMF_dealloc, + OMF_finalize, + OMF_release, + OMF_retain, + OMF_retainCount, + OMF_self, + OMF_initialize, + + // performSelector families + OMF_performSelector +}; + +/// Enough bits to store any enumerator in ObjCMethodFamily or +/// InvalidObjCMethodFamily. +enum { ObjCMethodFamilyBitWidth = 4 }; + +/// An invalid value of ObjCMethodFamily. +enum { InvalidObjCMethodFamily = (1 << ObjCMethodFamilyBitWidth) - 1 }; + +/// A family of Objective-C methods. +/// +/// These are family of methods whose result type is initially 'id', but +/// but are candidate for the result type to be changed to 'instancetype'. +enum ObjCInstanceTypeFamily { + OIT_None, + OIT_Array, + OIT_Dictionary, + OIT_Singleton, + OIT_Init, + OIT_ReturnsSelf +}; + +enum ObjCStringFormatFamily { + SFF_None, + SFF_NSString, + SFF_CFString +}; + +/// Smart pointer class that efficiently represents Objective-C method +/// names. +/// +/// This class will either point to an IdentifierInfo or a +/// MultiKeywordSelector (which is private). This enables us to optimize +/// selectors that take no arguments and selectors that take 1 argument, which +/// accounts for 78% of all selectors in Cocoa.h. +class Selector { + friend class Diagnostic; + friend class SelectorTable; // only the SelectorTable can create these + friend class DeclarationName; // and the AST's DeclarationName. + + enum IdentifierInfoFlag { + // Empty selector = 0. Note that these enumeration values must + // correspond to the enumeration values of DeclarationName::StoredNameKind + ZeroArg = 0x01, + OneArg = 0x02, + MultiArg = 0x07, + ArgFlags = 0x07 + }; + + /// A pointer to the MultiKeywordSelector or IdentifierInfo. We use the low + /// three bits of InfoPtr to store an IdentifierInfoFlag. Note that in any + /// case IdentifierInfo and MultiKeywordSelector are already aligned to + /// 8 bytes even on 32 bits archs because of DeclarationName. + uintptr_t InfoPtr = 0; + + Selector(IdentifierInfo *II, unsigned nArgs) { + InfoPtr = reinterpret_cast<uintptr_t>(II); + assert((InfoPtr & ArgFlags) == 0 &&"Insufficiently aligned IdentifierInfo"); + assert(nArgs < 2 && "nArgs not equal to 0/1"); + InfoPtr |= nArgs+1; + } + + Selector(MultiKeywordSelector *SI) { + InfoPtr = reinterpret_cast<uintptr_t>(SI); + assert((InfoPtr & ArgFlags) == 0 &&"Insufficiently aligned IdentifierInfo"); + InfoPtr |= MultiArg; + } + + IdentifierInfo *getAsIdentifierInfo() const { + if (getIdentifierInfoFlag() < MultiArg) + return reinterpret_cast<IdentifierInfo *>(InfoPtr & ~ArgFlags); + return nullptr; + } + + MultiKeywordSelector *getMultiKeywordSelector() const { + return reinterpret_cast<MultiKeywordSelector *>(InfoPtr & ~ArgFlags); + } + + unsigned getIdentifierInfoFlag() const { + return InfoPtr & ArgFlags; + } + + static ObjCMethodFamily getMethodFamilyImpl(Selector sel); + + static ObjCStringFormatFamily getStringFormatFamilyImpl(Selector sel); + +public: + /// The default ctor should only be used when creating data structures that + /// will contain selectors. + Selector() = default; + explicit Selector(uintptr_t V) : InfoPtr(V) {} + + /// operator==/!= - Indicate whether the specified selectors are identical. + bool operator==(Selector RHS) const { + return InfoPtr == RHS.InfoPtr; + } + bool operator!=(Selector RHS) const { + return InfoPtr != RHS.InfoPtr; + } + + void *getAsOpaquePtr() const { + return reinterpret_cast<void*>(InfoPtr); + } + + /// Determine whether this is the empty selector. + bool isNull() const { return InfoPtr == 0; } + + // Predicates to identify the selector type. + bool isKeywordSelector() const { + return getIdentifierInfoFlag() != ZeroArg; + } + + bool isUnarySelector() const { + return getIdentifierInfoFlag() == ZeroArg; + } + + unsigned getNumArgs() const; + + /// Retrieve the identifier at a given position in the selector. + /// + /// Note that the identifier pointer returned may be NULL. Clients that only + /// care about the text of the identifier string, and not the specific, + /// uniqued identifier pointer, should use \c getNameForSlot(), which returns + /// an empty string when the identifier pointer would be NULL. + /// + /// \param argIndex The index for which we want to retrieve the identifier. + /// This index shall be less than \c getNumArgs() unless this is a keyword + /// selector, in which case 0 is the only permissible value. + /// + /// \returns the uniqued identifier for this slot, or NULL if this slot has + /// no corresponding identifier. + IdentifierInfo *getIdentifierInfoForSlot(unsigned argIndex) const; + + /// Retrieve the name at a given position in the selector. + /// + /// \param argIndex The index for which we want to retrieve the name. + /// This index shall be less than \c getNumArgs() unless this is a keyword + /// selector, in which case 0 is the only permissible value. + /// + /// \returns the name for this slot, which may be the empty string if no + /// name was supplied. + StringRef getNameForSlot(unsigned argIndex) const; + + /// Derive the full selector name (e.g. "foo:bar:") and return + /// it as an std::string. + std::string getAsString() const; + + /// Prints the full selector name (e.g. "foo:bar:"). + void print(llvm::raw_ostream &OS) const; + + void dump() const; + + /// Derive the conventional family of this method. + ObjCMethodFamily getMethodFamily() const { + return getMethodFamilyImpl(*this); + } + + ObjCStringFormatFamily getStringFormatFamily() const { + return getStringFormatFamilyImpl(*this); + } + + static Selector getEmptyMarker() { + return Selector(uintptr_t(-1)); + } + + static Selector getTombstoneMarker() { + return Selector(uintptr_t(-2)); + } + + static ObjCInstanceTypeFamily getInstTypeMethodFamily(Selector sel); +}; + +/// This table allows us to fully hide how we implement +/// multi-keyword caching. +class SelectorTable { + // Actually a SelectorTableImpl + void *Impl; + +public: + SelectorTable(); + SelectorTable(const SelectorTable &) = delete; + SelectorTable &operator=(const SelectorTable &) = delete; + ~SelectorTable(); + + /// Can create any sort of selector. + /// + /// \p NumArgs indicates whether this is a no argument selector "foo", a + /// single argument selector "foo:" or multi-argument "foo:bar:". + Selector getSelector(unsigned NumArgs, IdentifierInfo **IIV); + + Selector getUnarySelector(IdentifierInfo *ID) { + return Selector(ID, 1); + } + + Selector getNullarySelector(IdentifierInfo *ID) { + return Selector(ID, 0); + } + + /// Return the total amount of memory allocated for managing selectors. + size_t getTotalMemory() const; + + /// Return the default setter name for the given identifier. + /// + /// This is "set" + \p Name where the initial character of \p Name + /// has been capitalized. + static SmallString<64> constructSetterName(StringRef Name); + + /// Return the default setter selector for the given identifier. + /// + /// This is "set" + \p Name where the initial character of \p Name + /// has been capitalized. + static Selector constructSetterSelector(IdentifierTable &Idents, + SelectorTable &SelTable, + const IdentifierInfo *Name); + + /// Return the property name for the given setter selector. + static std::string getPropertyNameFromSetterSelector(Selector Sel); +}; + +namespace detail { + +/// DeclarationNameExtra is used as a base of various uncommon special names. +/// This class is needed since DeclarationName has not enough space to store +/// the kind of every possible names. Therefore the kind of common names is +/// stored directly in DeclarationName, and the kind of uncommon names is +/// stored in DeclarationNameExtra. It is aligned to 8 bytes because +/// DeclarationName needs the lower 3 bits to store the kind of common names. +/// DeclarationNameExtra is tightly coupled to DeclarationName and any change +/// here is very likely to require changes in DeclarationName(Table). +class alignas(IdentifierInfoAlignment) DeclarationNameExtra { + friend class clang::DeclarationName; + friend class clang::DeclarationNameTable; + +protected: + /// The kind of "extra" information stored in the DeclarationName. See + /// @c ExtraKindOrNumArgs for an explanation of how these enumerator values + /// are used. Note that DeclarationName depends on the numerical values + /// of the enumerators in this enum. See DeclarationName::StoredNameKind + /// for more info. + enum ExtraKind { + CXXDeductionGuideName, + CXXLiteralOperatorName, + CXXUsingDirective, + ObjCMultiArgSelector + }; + + /// ExtraKindOrNumArgs has one of the following meaning: + /// * The kind of an uncommon C++ special name. This DeclarationNameExtra + /// is in this case in fact either a CXXDeductionGuideNameExtra or + /// a CXXLiteralOperatorIdName. + /// + /// * It may be also name common to C++ using-directives (CXXUsingDirective), + /// + /// * Otherwise it is ObjCMultiArgSelector+NumArgs, where NumArgs is + /// the number of arguments in the Objective-C selector, in which + /// case the DeclarationNameExtra is also a MultiKeywordSelector. + unsigned ExtraKindOrNumArgs; + + DeclarationNameExtra(ExtraKind Kind) : ExtraKindOrNumArgs(Kind) {} + DeclarationNameExtra(unsigned NumArgs) + : ExtraKindOrNumArgs(ObjCMultiArgSelector + NumArgs) {} + + /// Return the corresponding ExtraKind. + ExtraKind getKind() const { + return static_cast<ExtraKind>(ExtraKindOrNumArgs > + (unsigned)ObjCMultiArgSelector + ? (unsigned)ObjCMultiArgSelector + : ExtraKindOrNumArgs); + } + + /// Return the number of arguments in an ObjC selector. Only valid when this + /// is indeed an ObjCMultiArgSelector. + unsigned getNumArgs() const { + assert(ExtraKindOrNumArgs >= (unsigned)ObjCMultiArgSelector && + "getNumArgs called but this is not an ObjC selector!"); + return ExtraKindOrNumArgs - (unsigned)ObjCMultiArgSelector; + } +}; + +} // namespace detail + +} // namespace clang + +namespace llvm { + +/// Define DenseMapInfo so that Selectors can be used as keys in DenseMap and +/// DenseSets. +template <> +struct DenseMapInfo<clang::Selector> { + static clang::Selector getEmptyKey() { + return clang::Selector::getEmptyMarker(); + } + + static clang::Selector getTombstoneKey() { + return clang::Selector::getTombstoneMarker(); + } + + static unsigned getHashValue(clang::Selector S); + + static bool isEqual(clang::Selector LHS, clang::Selector RHS) { + return LHS == RHS; + } +}; + +template<> +struct PointerLikeTypeTraits<clang::Selector> { + static const void *getAsVoidPointer(clang::Selector P) { + return P.getAsOpaquePtr(); + } + + static clang::Selector getFromVoidPointer(const void *P) { + return clang::Selector(reinterpret_cast<uintptr_t>(P)); + } + + enum { NumLowBitsAvailable = 0 }; +}; + +// Provide PointerLikeTypeTraits for IdentifierInfo pointers, which +// are not guaranteed to be 8-byte aligned. +template<> +struct PointerLikeTypeTraits<clang::IdentifierInfo*> { + static void *getAsVoidPointer(clang::IdentifierInfo* P) { + return P; + } + + static clang::IdentifierInfo *getFromVoidPointer(void *P) { + return static_cast<clang::IdentifierInfo*>(P); + } + + enum { NumLowBitsAvailable = 1 }; +}; + +template<> +struct PointerLikeTypeTraits<const clang::IdentifierInfo*> { + static const void *getAsVoidPointer(const clang::IdentifierInfo* P) { + return P; + } + + static const clang::IdentifierInfo *getFromVoidPointer(const void *P) { + return static_cast<const clang::IdentifierInfo*>(P); + } + + enum { NumLowBitsAvailable = 1 }; +}; + +} // namespace llvm + +#endif // LLVM_CLANG_BASIC_IDENTIFIERTABLE_H diff --git a/clang-r353983/include/clang/Basic/LLVM.h b/clang-r353983/include/clang/Basic/LLVM.h new file mode 100644 index 00000000..e9bb96af --- /dev/null +++ b/clang-r353983/include/clang/Basic/LLVM.h @@ -0,0 +1,88 @@ +//===--- LLVM.h - Import various common LLVM datatypes ----------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Forward-declares and imports various common LLVM datatypes that +/// clang wants to use unqualified. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_LLVM_H +#define LLVM_CLANG_BASIC_LLVM_H + +// Do not proliferate #includes here, require clients to #include their +// dependencies. +// Casting.h has complex templates that cannot be easily forward declared. +#include "llvm/Support/Casting.h" +// None.h includes an enumerator that is desired & cannot be forward declared +// without a definition of NoneType. +#include "llvm/ADT/None.h" + +namespace llvm { + // ADT's. + class StringRef; + class Twine; + class VersionTuple; + template<typename T> class ArrayRef; + template<typename T> class MutableArrayRef; + template<typename T> class OwningArrayRef; + template<unsigned InternalLen> class SmallString; + template<typename T, unsigned N> class SmallVector; + template<typename T> class SmallVectorImpl; + template<typename T> class Optional; + template <class T> class Expected; + + template<typename T> + struct SaveAndRestore; + + // Reference counting. + template <typename T> class IntrusiveRefCntPtr; + template <typename T> struct IntrusiveRefCntPtrInfo; + template <class Derived> class RefCountedBase; + + class raw_ostream; + class raw_pwrite_stream; + // TODO: DenseMap, ... +} + + +namespace clang { + // Casting operators. + using llvm::isa; + using llvm::cast; + using llvm::dyn_cast; + using llvm::dyn_cast_or_null; + using llvm::cast_or_null; + + // ADT's. + using llvm::ArrayRef; + using llvm::MutableArrayRef; + using llvm::None; + using llvm::Optional; + using llvm::OwningArrayRef; + using llvm::SaveAndRestore; + using llvm::SmallString; + using llvm::SmallVector; + using llvm::SmallVectorImpl; + using llvm::StringRef; + using llvm::Twine; + using llvm::VersionTuple; + + // Error handling. + using llvm::Expected; + + // Reference counting. + using llvm::IntrusiveRefCntPtr; + using llvm::IntrusiveRefCntPtrInfo; + using llvm::RefCountedBase; + + using llvm::raw_ostream; + using llvm::raw_pwrite_stream; +} // end namespace clang. + +#endif diff --git a/clang-r353983/include/clang/Basic/Lambda.h b/clang-r353983/include/clang/Basic/Lambda.h new file mode 100644 index 00000000..853821a3 --- /dev/null +++ b/clang-r353983/include/clang/Basic/Lambda.h @@ -0,0 +1,43 @@ +//===--- Lambda.h - Types for C++ Lambdas -----------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines several types used to describe C++ lambda expressions +/// that are shared between the parser and AST. +/// +//===----------------------------------------------------------------------===// + + +#ifndef LLVM_CLANG_BASIC_LAMBDA_H +#define LLVM_CLANG_BASIC_LAMBDA_H + +namespace clang { + +/// The default, if any, capture method for a lambda expression. +enum LambdaCaptureDefault { + LCD_None, + LCD_ByCopy, + LCD_ByRef +}; + +/// The different capture forms in a lambda introducer +/// +/// C++11 allows capture of \c this, or of local variables by copy or +/// by reference. C++1y also allows "init-capture", where the initializer +/// is an expression. +enum LambdaCaptureKind { + LCK_This, ///< Capturing the \c *this object by reference + LCK_StarThis, /// < Capturing the \c *this object by copy + LCK_ByCopy, ///< Capturing by copy (a.k.a., by value) + LCK_ByRef, ///< Capturing by reference + LCK_VLAType ///< Capturing variable-length array type +}; + +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_LAMBDA_H diff --git a/clang-r353983/include/clang/Basic/LangOptions.def b/clang-r353983/include/clang/Basic/LangOptions.def new file mode 100644 index 00000000..d52f9c0b --- /dev/null +++ b/clang-r353983/include/clang/Basic/LangOptions.def @@ -0,0 +1,328 @@ +//===--- LangOptions.def - Language option database -------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the language options. Users of this file must +// define the LANGOPT macro to make use of this information. +// +// Optionally, the user may also define: +// +// BENIGN_LANGOPT: for options that don't affect the construction of the AST in +// any way (that is, the value can be different between an implicit module +// and the user of that module). +// +// COMPATIBLE_LANGOPT: for options that affect the construction of the AST in +// a way that doesn't prevent interoperability (that is, the value can be +// different between an explicit module and the user of that module). +// +// ENUM_LANGOPT: for options that have enumeration, rather than unsigned, type. +// +// VALUE_LANGOPT: for options that describe a value rather than a flag. +// +// BENIGN_ENUM_LANGOPT, COMPATIBLE_ENUM_LANGOPT, +// BENIGN_VALUE_LANGOPT, COMPATIBLE_VALUE_LANGOPT: combinations of the above. +// +// FIXME: Clients should be able to more easily select whether they want +// different levels of compatibility versus how to handle different kinds +// of option. +// +// The Description field should be a noun phrase, for instance "frobbing all +// widgets" or "C's implicit blintz feature". +//===----------------------------------------------------------------------===// + +#ifndef LANGOPT +# error Define the LANGOPT macro to handle language options +#endif + +#ifndef COMPATIBLE_LANGOPT +# define COMPATIBLE_LANGOPT(Name, Bits, Default, Description) \ + LANGOPT(Name, Bits, Default, Description) +#endif + +#ifndef BENIGN_LANGOPT +# define BENIGN_LANGOPT(Name, Bits, Default, Description) \ + COMPATIBLE_LANGOPT(Name, Bits, Default, Description) +#endif + +#ifndef ENUM_LANGOPT +# define ENUM_LANGOPT(Name, Type, Bits, Default, Description) \ + LANGOPT(Name, Bits, Default, Description) +#endif + +#ifndef COMPATIBLE_ENUM_LANGOPT +# define COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description) \ + ENUM_LANGOPT(Name, Type, Bits, Default, Description) +#endif + +#ifndef BENIGN_ENUM_LANGOPT +# define BENIGN_ENUM_LANGOPT(Name, Type, Bits, Default, Description) \ + COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description) +#endif + +#ifndef VALUE_LANGOPT +# define VALUE_LANGOPT(Name, Bits, Default, Description) \ + LANGOPT(Name, Bits, Default, Description) +#endif + +#ifndef COMPATIBLE_VALUE_LANGOPT +# define COMPATIBLE_VALUE_LANGOPT(Name, Bits, Default, Description) \ + VALUE_LANGOPT(Name, Bits, Default, Description) +#endif + +#ifndef BENIGN_VALUE_LANGOPT +# define BENIGN_VALUE_LANGOPT(Name, Bits, Default, Description) \ + COMPATIBLE_VALUE_LANGOPT(Name, Bits, Default, Description) +#endif + +// FIXME: A lot of the BENIGN_ options should be COMPATIBLE_ instead. +LANGOPT(C99 , 1, 0, "C99") +LANGOPT(C11 , 1, 0, "C11") +LANGOPT(C17 , 1, 0, "C17") +LANGOPT(MSVCCompat , 1, 0, "Microsoft Visual C++ full compatibility mode") +LANGOPT(MicrosoftExt , 1, 0, "Microsoft C++ extensions") +LANGOPT(AsmBlocks , 1, 0, "Microsoft inline asm blocks") +LANGOPT(Borland , 1, 0, "Borland extensions") +LANGOPT(CPlusPlus , 1, 0, "C++") +LANGOPT(CPlusPlus11 , 1, 0, "C++11") +LANGOPT(CPlusPlus14 , 1, 0, "C++14") +LANGOPT(CPlusPlus17 , 1, 0, "C++17") +LANGOPT(CPlusPlus2a , 1, 0, "C++2a") +LANGOPT(ObjC , 1, 0, "Objective-C") +BENIGN_LANGOPT(ObjCDefaultSynthProperties , 1, 0, + "Objective-C auto-synthesized properties") +BENIGN_LANGOPT(EncodeExtendedBlockSig , 1, 0, + "Encoding extended block type signature") +BENIGN_LANGOPT(ObjCInferRelatedResultType , 1, 1, + "Objective-C related result type inference") +LANGOPT(AppExt , 1, 0, "Objective-C App Extension") +LANGOPT(Trigraphs , 1, 0,"trigraphs") +LANGOPT(LineComment , 1, 0, "'//' comments") +LANGOPT(Bool , 1, 0, "bool, true, and false keywords") +LANGOPT(Half , 1, 0, "half keyword") +LANGOPT(WChar , 1, CPlusPlus, "wchar_t keyword") +LANGOPT(Char8 , 1, 0, "char8_t keyword") +LANGOPT(DeclSpecKeyword , 1, 0, "__declspec keyword") +BENIGN_LANGOPT(DollarIdents , 1, 1, "'$' in identifiers") +BENIGN_LANGOPT(AsmPreprocessor, 1, 0, "preprocessor in asm mode") +LANGOPT(GNUMode , 1, 1, "GNU extensions") +LANGOPT(GNUKeywords , 1, 1, "GNU keywords") +BENIGN_LANGOPT(ImplicitInt, 1, !C99 && !CPlusPlus, "C89 implicit 'int'") +LANGOPT(Digraphs , 1, 0, "digraphs") +BENIGN_LANGOPT(HexFloats , 1, C99, "C99 hexadecimal float constants") +LANGOPT(CXXOperatorNames , 1, 0, "C++ operator name keywords") +LANGOPT(AppleKext , 1, 0, "Apple kext support") +BENIGN_LANGOPT(PascalStrings, 1, 0, "Pascal string support") +LANGOPT(WritableStrings , 1, 0, "writable string support") +LANGOPT(ConstStrings , 1, 0, "const-qualified string support") +LANGOPT(LaxVectorConversions , 1, 1, "lax vector conversions") +LANGOPT(AltiVec , 1, 0, "AltiVec-style vector initializers") +LANGOPT(ZVector , 1, 0, "System z vector extensions") +LANGOPT(Exceptions , 1, 0, "exception handling") +LANGOPT(ObjCExceptions , 1, 0, "Objective-C exceptions") +LANGOPT(CXXExceptions , 1, 0, "C++ exceptions") +LANGOPT(DWARFExceptions , 1, 0, "dwarf exception handling") +LANGOPT(SjLjExceptions , 1, 0, "setjmp-longjump exception handling") +LANGOPT(SEHExceptions , 1, 0, "SEH .xdata exception handling") +LANGOPT(ExternCNoUnwind , 1, 0, "Assume extern C functions don't unwind") +LANGOPT(TraditionalCPP , 1, 0, "traditional CPP emulation") +LANGOPT(RTTI , 1, 1, "run-time type information") +LANGOPT(RTTIData , 1, 1, "emit run-time type information data") +LANGOPT(MSBitfields , 1, 0, "Microsoft-compatible structure layout") +LANGOPT(Freestanding, 1, 0, "freestanding implementation") +LANGOPT(NoBuiltin , 1, 0, "disable builtin functions") +LANGOPT(NoMathBuiltin , 1, 0, "disable math builtin functions") +LANGOPT(GNUAsm , 1, 1, "GNU-style inline assembly") +LANGOPT(CoroutinesTS , 1, 0, "C++ coroutines TS") +LANGOPT(DllExportInlines , 1, 1, "dllexported classes dllexport inline methods") +LANGOPT(RelaxedTemplateTemplateArgs, 1, 0, "C++17 relaxed matching of template template arguments") + +LANGOPT(DoubleSquareBracketAttributes, 1, 0, "'[[]]' attributes extension for all language standard modes") + +BENIGN_LANGOPT(ThreadsafeStatics , 1, 1, "thread-safe static initializers") +LANGOPT(POSIXThreads , 1, 0, "POSIX thread support") +LANGOPT(Blocks , 1, 0, "blocks extension to C") +BENIGN_LANGOPT(EmitAllDecls , 1, 0, "emitting all declarations") +LANGOPT(MathErrno , 1, 1, "errno in math functions") +BENIGN_LANGOPT(HeinousExtensions , 1, 0, "extensions that we really don't like and may be ripped out at any time") +LANGOPT(Modules , 1, 0, "modules extension to C") +COMPATIBLE_LANGOPT(ModulesTS , 1, 0, "C++ Modules TS") +BENIGN_ENUM_LANGOPT(CompilingModule, CompilingModuleKind, 2, CMK_None, + "compiling a module interface") +BENIGN_LANGOPT(CompilingPCH, 1, 0, "building a pch") +BENIGN_LANGOPT(BuildingPCHWithObjectFile, 1, 0, "building a pch which has a corresponding object file") +COMPATIBLE_LANGOPT(ModulesDeclUse , 1, 0, "require declaration of module uses") +BENIGN_LANGOPT(ModulesSearchAll , 1, 1, "searching even non-imported modules to find unresolved references") +COMPATIBLE_LANGOPT(ModulesStrictDeclUse, 1, 0, "requiring declaration of module uses and all headers to be in modules") +BENIGN_LANGOPT(ModulesErrorRecovery, 1, 1, "automatically importing modules as needed when performing error recovery") +BENIGN_LANGOPT(ImplicitModules, 1, 1, "building modules that are not specified via -fmodule-file") +COMPATIBLE_LANGOPT(ModulesLocalVisibility, 1, 0, "local submodule visibility") +COMPATIBLE_LANGOPT(Optimize , 1, 0, "__OPTIMIZE__ predefined macro") +COMPATIBLE_LANGOPT(OptimizeSize , 1, 0, "__OPTIMIZE_SIZE__ predefined macro") +COMPATIBLE_LANGOPT(Static , 1, 0, "__STATIC__ predefined macro (as opposed to __DYNAMIC__)") +VALUE_LANGOPT(PackStruct , 32, 0, + "default struct packing maximum alignment") +VALUE_LANGOPT(MaxTypeAlign , 32, 0, + "default maximum alignment for types") +VALUE_LANGOPT(AlignDouble , 1, 0, "Controls if doubles should be aligned to 8 bytes (x86 only)") +COMPATIBLE_VALUE_LANGOPT(PICLevel , 2, 0, "__PIC__ level") +COMPATIBLE_VALUE_LANGOPT(PIE , 1, 0, "is pie") +COMPATIBLE_LANGOPT(GNUInline , 1, 0, "GNU inline semantics") +COMPATIBLE_LANGOPT(NoInlineDefine , 1, 0, "__NO_INLINE__ predefined macro") +COMPATIBLE_LANGOPT(Deprecated , 1, 0, "__DEPRECATED predefined macro") +COMPATIBLE_LANGOPT(FastMath , 1, 0, "fast FP math optimizations, and __FAST_MATH__ predefined macro") +COMPATIBLE_LANGOPT(FiniteMathOnly , 1, 0, "__FINITE_MATH_ONLY__ predefined macro") +COMPATIBLE_LANGOPT(UnsafeFPMath , 1, 0, "Unsafe Floating Point Math") + +BENIGN_LANGOPT(ObjCGCBitmapPrint , 1, 0, "printing of GC's bitmap layout for __weak/__strong ivars") + +BENIGN_LANGOPT(AccessControl , 1, 1, "C++ access control") +LANGOPT(CharIsSigned , 1, 1, "signed char") +LANGOPT(WCharSize , 4, 0, "width of wchar_t") +LANGOPT(WCharIsSigned , 1, 0, "signed or unsigned wchar_t") +ENUM_LANGOPT(MSPointerToMemberRepresentationMethod, PragmaMSPointersToMembersKind, 2, PPTMK_BestCase, "member-pointer representation method") +ENUM_LANGOPT(DefaultCallingConv, DefaultCallingConvention, 3, DCC_None, "default calling convention") + +LANGOPT(ShortEnums , 1, 0, "short enum types") + +LANGOPT(OpenCL , 1, 0, "OpenCL") +LANGOPT(OpenCLVersion , 32, 0, "OpenCL C version") +LANGOPT(OpenCLCPlusPlus , 1, 0, "OpenCL C++") +LANGOPT(OpenCLCPlusPlusVersion , 32, 0, "OpenCL C++ version") +LANGOPT(NativeHalfType , 1, 0, "Native half type support") +LANGOPT(NativeHalfArgsAndReturns, 1, 0, "Native half args and returns") +LANGOPT(HalfArgsAndReturns, 1, 0, "half args and returns") +LANGOPT(CUDA , 1, 0, "CUDA") +LANGOPT(HIP , 1, 0, "HIP") +LANGOPT(OpenMP , 32, 0, "OpenMP support and version of OpenMP (31, 40 or 45)") +LANGOPT(OpenMPSimd , 1, 0, "Use SIMD only OpenMP support.") +LANGOPT(OpenMPUseTLS , 1, 0, "Use TLS for threadprivates or runtime calls") +LANGOPT(OpenMPIsDevice , 1, 0, "Generate code only for OpenMP target device") +LANGOPT(OpenMPCUDAMode , 1, 0, "Generate code for OpenMP pragmas in SIMT/SPMD mode") +LANGOPT(OpenMPCUDAForceFullRuntime , 1, 0, "Force to use full runtime in all constructs when offloading to CUDA devices") +LANGOPT(OpenMPCUDANumSMs , 32, 0, "Number of SMs for CUDA devices.") +LANGOPT(OpenMPCUDABlocksPerSM , 32, 0, "Number of blocks per SM for CUDA devices.") +LANGOPT(OpenMPOptimisticCollapse , 1, 0, "Use at most 32 bits to represent the collapsed loop nest counter.") +LANGOPT(RenderScript , 1, 0, "RenderScript") + +LANGOPT(CUDAIsDevice , 1, 0, "compiling for CUDA device") +LANGOPT(CUDAAllowVariadicFunctions, 1, 0, "allowing variadic functions in CUDA device code") +LANGOPT(CUDAHostDeviceConstexpr, 1, 1, "treating unattributed constexpr functions as __host__ __device__") +LANGOPT(CUDADeviceApproxTranscendentals, 1, 0, "using approximate transcendental functions") +LANGOPT(GPURelocatableDeviceCode, 1, 0, "generate relocatable device code") + +LANGOPT(SizedDeallocation , 1, 0, "sized deallocation") +LANGOPT(AlignedAllocation , 1, 0, "aligned allocation") +LANGOPT(AlignedAllocationUnavailable, 1, 0, "aligned allocation functions are unavailable") +LANGOPT(NewAlignOverride , 32, 0, "maximum alignment guaranteed by '::operator new(size_t)'") +LANGOPT(ConceptsTS , 1, 0, "enable C++ Extensions for Concepts") +BENIGN_LANGOPT(ModulesCodegen , 1, 0, "Modules code generation") +BENIGN_LANGOPT(ModulesDebugInfo , 1, 0, "Modules debug info") +BENIGN_LANGOPT(ElideConstructors , 1, 1, "C++ copy constructor elision") +BENIGN_LANGOPT(DumpRecordLayouts , 1, 0, "dumping the layout of IRgen'd records") +BENIGN_LANGOPT(DumpRecordLayoutsSimple , 1, 0, "dumping the layout of IRgen'd records in a simple form") +BENIGN_LANGOPT(DumpVTableLayouts , 1, 0, "dumping the layouts of emitted vtables") +LANGOPT(NoConstantCFStrings , 1, 0, "no constant CoreFoundation strings") +BENIGN_LANGOPT(InlineVisibilityHidden , 1, 0, "hidden visibility for inline C++ methods") +LANGOPT(GlobalAllocationFunctionVisibilityHidden , 1, 0, "hidden visibility for global operator new and delete declaration") +BENIGN_LANGOPT(ParseUnknownAnytype, 1, 0, "__unknown_anytype") +BENIGN_LANGOPT(DebuggerSupport , 1, 0, "debugger support") +BENIGN_LANGOPT(DebuggerCastResultToId, 1, 0, "for 'po' in the debugger, cast the result to id if it is of unknown type") +BENIGN_LANGOPT(DebuggerObjCLiteral , 1, 0, "debugger Objective-C literals and subscripting support") + +BENIGN_LANGOPT(SpellChecking , 1, 1, "spell-checking") +LANGOPT(SinglePrecisionConstants , 1, 0, "treating double-precision floating point constants as single precision constants") +LANGOPT(FastRelaxedMath , 1, 0, "OpenCL fast relaxed math") +/// FP_CONTRACT mode (on/off/fast). +ENUM_LANGOPT(DefaultFPContractMode, FPContractModeKind, 2, FPC_Off, "FP contraction type") +LANGOPT(NoBitFieldTypeAlign , 1, 0, "bit-field type alignment") +LANGOPT(HexagonQdsp6Compat , 1, 0, "hexagon-qdsp6 backward compatibility") +LANGOPT(ObjCAutoRefCount , 1, 0, "Objective-C automated reference counting") +LANGOPT(ObjCWeakRuntime , 1, 0, "__weak support in the ARC runtime") +LANGOPT(ObjCWeak , 1, 0, "Objective-C __weak in ARC and MRC files") +LANGOPT(ObjCSubscriptingLegacyRuntime , 1, 0, "Subscripting support in legacy ObjectiveC runtime") +LANGOPT(CFProtectionBranch , 1, 0, "Control-Flow Branch Protection enabled") +LANGOPT(FakeAddressSpaceMap , 1, 0, "OpenCL fake address space map") +ENUM_LANGOPT(AddressSpaceMapMangling , AddrSpaceMapMangling, 2, ASMM_Target, "OpenCL address space map mangling mode") +LANGOPT(IncludeDefaultHeader, 1, 0, "Include default header file for OpenCL") +BENIGN_LANGOPT(DelayedTemplateParsing , 1, 0, "delayed template parsing") +LANGOPT(BlocksRuntimeOptional , 1, 0, "optional blocks runtime") +LANGOPT( + CompleteMemberPointers, 1, 0, + "Require member pointer base types to be complete at the point where the " + "type's inheritance model would be determined under the Microsoft ABI") + +ENUM_LANGOPT(GC, GCMode, 2, NonGC, "Objective-C Garbage Collection mode") +ENUM_LANGOPT(ValueVisibilityMode, Visibility, 3, DefaultVisibility, + "default visibility for functions and variables [-fvisibility]") +ENUM_LANGOPT(TypeVisibilityMode, Visibility, 3, DefaultVisibility, + "default visibility for types [-ftype-visibility]") +LANGOPT(SetVisibilityForExternDecls, 1, 0, + "apply global symbol visibility to external declarations without an explicit visibility") +ENUM_LANGOPT(StackProtector, StackProtectorMode, 2, SSPOff, + "stack protector mode") +ENUM_LANGOPT(TrivialAutoVarInit, TrivialAutoVarInitKind, 2, TrivialAutoVarInitKind::Uninitialized, + "trivial automatic variable initialization") +ENUM_LANGOPT(SignedOverflowBehavior, SignedOverflowBehaviorTy, 2, SOB_Undefined, + "signed integer overflow handling") + +BENIGN_LANGOPT(ArrowDepth, 32, 256, + "maximum number of operator->s to follow") +BENIGN_LANGOPT(InstantiationDepth, 32, 1024, + "maximum template instantiation depth") +BENIGN_LANGOPT(ConstexprCallDepth, 32, 512, + "maximum constexpr call depth") +BENIGN_LANGOPT(ConstexprStepLimit, 32, 1048576, + "maximum constexpr evaluation steps") +BENIGN_LANGOPT(BracketDepth, 32, 256, + "maximum bracket nesting depth") +BENIGN_LANGOPT(NumLargeByValueCopy, 32, 0, + "if non-zero, warn about parameter or return Warn if parameter/return value is larger in bytes than this setting. 0 is no check.") +VALUE_LANGOPT(MSCompatibilityVersion, 32, 0, "Microsoft Visual C/C++ Version") +VALUE_LANGOPT(VtorDispMode, 2, 1, "How many vtordisps to insert") + +LANGOPT(ApplePragmaPack, 1, 0, "Apple gcc-compatible #pragma pack handling") + +LANGOPT(RetainCommentsFromSystemHeaders, 1, 0, "retain documentation comments from system headers in the AST") + +LANGOPT(SanitizeAddressFieldPadding, 2, 0, "controls how aggressive is ASan " + "field padding (0: none, 1:least " + "aggressive, 2: more aggressive)") + +LANGOPT(XRayInstrument, 1, 0, "controls whether to do XRay instrumentation") +LANGOPT(XRayAlwaysEmitCustomEvents, 1, 0, + "controls whether to always emit intrinsic calls to " + "__xray_customevent(...) builtin.") +LANGOPT(XRayAlwaysEmitTypedEvents, 1, 0, + "controls whether to always emit intrinsic calls to " + "__xray_typedevent(...) builtin.") + +LANGOPT(ForceEmitVTables, 1, 0, "whether to emit all vtables") + +BENIGN_LANGOPT(AllowEditorPlaceholders, 1, 0, + "allow editor placeholders in source") + +ENUM_LANGOPT(ClangABICompat, ClangABI, 4, ClangABI::Latest, + "version of Clang that we should attempt to be ABI-compatible " + "with") + +COMPATIBLE_VALUE_LANGOPT(FunctionAlignment, 5, 0, "Default alignment for functions") + +LANGOPT(FixedPoint, 1, 0, "fixed point types") +LANGOPT(PaddingOnUnsignedFixedPoint, 1, 0, + "unsigned fixed point types having one extra padding bit") + +LANGOPT(RegisterStaticDestructors, 1, 1, "Register C++ static destructors") + +#undef LANGOPT +#undef COMPATIBLE_LANGOPT +#undef BENIGN_LANGOPT +#undef ENUM_LANGOPT +#undef COMPATIBLE_ENUM_LANGOPT +#undef BENIGN_ENUM_LANGOPT +#undef VALUE_LANGOPT +#undef COMPATIBLE_VALUE_LANGOPT +#undef BENIGN_VALUE_LANGOPT diff --git a/clang-r353983/include/clang/Basic/LangOptions.h b/clang-r353983/include/clang/Basic/LangOptions.h new file mode 100644 index 00000000..c7e29931 --- /dev/null +++ b/clang-r353983/include/clang/Basic/LangOptions.h @@ -0,0 +1,375 @@ +//===- LangOptions.h - C Language Family Language Options -------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines the clang::LangOptions interface. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_LANGOPTIONS_H +#define LLVM_CLANG_BASIC_LANGOPTIONS_H + +#include "clang/Basic/CommentOptions.h" +#include "clang/Basic/LLVM.h" +#include "clang/Basic/ObjCRuntime.h" +#include "clang/Basic/Sanitizers.h" +#include "clang/Basic/Visibility.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/ADT/Triple.h" +#include <string> +#include <vector> + +namespace clang { + +/// Bitfields of LangOptions, split out from LangOptions in order to ensure that +/// this large collection of bitfields is a trivial class type. +class LangOptionsBase { +public: + // Define simple language options (with no accessors). +#define LANGOPT(Name, Bits, Default, Description) unsigned Name : Bits; +#define ENUM_LANGOPT(Name, Type, Bits, Default, Description) +#include "clang/Basic/LangOptions.def" + +protected: + // Define language options of enumeration type. These are private, and will + // have accessors (below). +#define LANGOPT(Name, Bits, Default, Description) +#define ENUM_LANGOPT(Name, Type, Bits, Default, Description) \ + unsigned Name : Bits; +#include "clang/Basic/LangOptions.def" +}; + +/// Keeps track of the various options that can be +/// enabled, which controls the dialect of C or C++ that is accepted. +class LangOptions : public LangOptionsBase { +public: + using Visibility = clang::Visibility; + + enum GCMode { NonGC, GCOnly, HybridGC }; + enum StackProtectorMode { SSPOff, SSPOn, SSPStrong, SSPReq }; + + // Automatic variables live on the stack, and when trivial they're usually + // uninitialized because it's undefined behavior to use them without + // initializing them. + enum class TrivialAutoVarInitKind { Uninitialized, Zero, Pattern }; + + enum SignedOverflowBehaviorTy { + // Default C standard behavior. + SOB_Undefined, + + // -fwrapv + SOB_Defined, + + // -ftrapv + SOB_Trapping + }; + + // FIXME: Unify with TUKind. + enum CompilingModuleKind { + /// Not compiling a module interface at all. + CMK_None, + + /// Compiling a module from a module map. + CMK_ModuleMap, + + /// Compiling a module from a list of header files. + CMK_HeaderModule, + + /// Compiling a C++ modules TS module interface unit. + CMK_ModuleInterface, + }; + + enum PragmaMSPointersToMembersKind { + PPTMK_BestCase, + PPTMK_FullGeneralitySingleInheritance, + PPTMK_FullGeneralityMultipleInheritance, + PPTMK_FullGeneralityVirtualInheritance + }; + + enum DefaultCallingConvention { + DCC_None, + DCC_CDecl, + DCC_FastCall, + DCC_StdCall, + DCC_VectorCall, + DCC_RegCall + }; + + enum AddrSpaceMapMangling { ASMM_Target, ASMM_On, ASMM_Off }; + + // Corresponds to _MSC_VER + enum MSVCMajorVersion { + MSVC2010 = 1600, + MSVC2012 = 1700, + MSVC2013 = 1800, + MSVC2015 = 1900, + MSVC2017 = 1910, + MSVC2017_5 = 1912 + }; + + /// Clang versions with different platform ABI conformance. + enum class ClangABI { + /// Attempt to be ABI-compatible with code generated by Clang 3.8.x + /// (SVN r257626). This causes <1 x long long> to be passed in an + /// integer register instead of an SSE register on x64_64. + Ver3_8, + + /// Attempt to be ABI-compatible with code generated by Clang 4.0.x + /// (SVN r291814). This causes move operations to be ignored when + /// determining whether a class type can be passed or returned directly. + Ver4, + + /// Attempt to be ABI-compatible with code generated by Clang 6.0.x + /// (SVN r321711). This causes determination of whether a type is + /// standard-layout to ignore collisions between empty base classes + /// and between base classes and member subobjects, which affects + /// whether we reuse base class tail padding in some ABIs. + Ver6, + + /// Attempt to be ABI-compatible with code generated by Clang 7.0.x + /// (SVN r338536). This causes alignof (C++) and _Alignof (C11) to be + /// compatible with __alignof (i.e., return the preferred alignment) + /// rather than returning the required alignment. + Ver7, + + /// Conform to the underlying platform's C and C++ ABIs as closely + /// as we can. + Latest + }; + + enum class CoreFoundationABI { + /// No interoperability ABI has been specified + Unspecified, + /// CoreFoundation does not have any language interoperability + Standalone, + /// Interoperability with the ObjectiveC runtime + ObjectiveC, + /// Interoperability with the latest known version of the Swift runtime + Swift, + /// Interoperability with the Swift 5.0 runtime + Swift5_0, + /// Interoperability with the Swift 4.2 runtime + Swift4_2, + /// Interoperability with the Swift 4.1 runtime + Swift4_1, + }; + + enum FPContractModeKind { + // Form fused FP ops only where result will not be affected. + FPC_Off, + + // Form fused FP ops according to FP_CONTRACT rules. + FPC_On, + + // Aggressively fuse FP ops (E.g. FMA). + FPC_Fast + }; + + // TODO: merge FEnvAccessModeKind and FPContractModeKind + enum FEnvAccessModeKind { + FEA_Off, + + FEA_On + }; + + +public: + /// Set of enabled sanitizers. + SanitizerSet Sanitize; + + /// Paths to blacklist files specifying which objects + /// (files, functions, variables) should not be instrumented. + std::vector<std::string> SanitizerBlacklistFiles; + + /// Paths to the XRay "always instrument" files specifying which + /// objects (files, functions, variables) should be imbued with the XRay + /// "always instrument" attribute. + /// WARNING: This is a deprecated field and will go away in the future. + std::vector<std::string> XRayAlwaysInstrumentFiles; + + /// Paths to the XRay "never instrument" files specifying which + /// objects (files, functions, variables) should be imbued with the XRay + /// "never instrument" attribute. + /// WARNING: This is a deprecated field and will go away in the future. + std::vector<std::string> XRayNeverInstrumentFiles; + + /// Paths to the XRay attribute list files, specifying which objects + /// (files, functions, variables) should be imbued with the appropriate XRay + /// attribute(s). + std::vector<std::string> XRayAttrListFiles; + + clang::ObjCRuntime ObjCRuntime; + + CoreFoundationABI CFRuntime = CoreFoundationABI::Unspecified; + + std::string ObjCConstantStringClass; + + /// The name of the handler function to be called when -ftrapv is + /// specified. + /// + /// If none is specified, abort (GCC-compatible behaviour). + std::string OverflowHandler; + + /// The module currently being compiled as specified by -fmodule-name. + std::string ModuleName; + + /// The name of the current module, of which the main source file + /// is a part. If CompilingModule is set, we are compiling the interface + /// of this module, otherwise we are compiling an implementation file of + /// it. This starts as ModuleName in case -fmodule-name is provided and + /// changes during compilation to reflect the current module. + std::string CurrentModule; + + /// The names of any features to enable in module 'requires' decls + /// in addition to the hard-coded list in Module.cpp and the target features. + /// + /// This list is sorted. + std::vector<std::string> ModuleFeatures; + + /// Options for parsing comments. + CommentOptions CommentOpts; + + /// A list of all -fno-builtin-* function names (e.g., memset). + std::vector<std::string> NoBuiltinFuncs; + + /// Triples of the OpenMP targets that the host code codegen should + /// take into account in order to generate accurate offloading descriptors. + std::vector<llvm::Triple> OMPTargetTriples; + + /// Name of the IR file that contains the result of the OpenMP target + /// host code generation. + std::string OMPHostIRFile; + + /// Indicates whether the front-end is explicitly told that the + /// input is a header file (i.e. -x c-header). + bool IsHeaderFile = false; + + LangOptions(); + + // Define accessors/mutators for language options of enumeration type. +#define LANGOPT(Name, Bits, Default, Description) +#define ENUM_LANGOPT(Name, Type, Bits, Default, Description) \ + Type get##Name() const { return static_cast<Type>(Name); } \ + void set##Name(Type Value) { Name = static_cast<unsigned>(Value); } +#include "clang/Basic/LangOptions.def" + + /// Are we compiling a module interface (.cppm or module map)? + bool isCompilingModule() const { + return getCompilingModule() != CMK_None; + } + + /// Do we need to track the owning module for a local declaration? + bool trackLocalOwningModule() const { + return isCompilingModule() || ModulesLocalVisibility || ModulesTS; + } + + bool isSignedOverflowDefined() const { + return getSignedOverflowBehavior() == SOB_Defined; + } + + bool isSubscriptPointerArithmetic() const { + return ObjCRuntime.isSubscriptPointerArithmetic() && + !ObjCSubscriptingLegacyRuntime; + } + + bool isCompatibleWithMSVC(MSVCMajorVersion MajorVersion) const { + return MSCompatibilityVersion >= MajorVersion * 100000U; + } + + /// Reset all of the options that are not considered when building a + /// module. + void resetNonModularOptions(); + + /// Is this a libc/libm function that is no longer recognized as a + /// builtin because a -fno-builtin-* option has been specified? + bool isNoBuiltinFunc(StringRef Name) const; + + /// True if any ObjC types may have non-trivial lifetime qualifiers. + bool allowsNonTrivialObjCLifetimeQualifiers() const { + return ObjCAutoRefCount || ObjCWeak; + } + + bool assumeFunctionsAreConvergent() const { + return (CUDA && CUDAIsDevice) || OpenCL; + } + + /// Return the OpenCL C or C++ version as a VersionTuple. + VersionTuple getOpenCLVersionTuple() const; +}; + +/// Floating point control options +class FPOptions { +public: + FPOptions() : fp_contract(LangOptions::FPC_Off), + fenv_access(LangOptions::FEA_Off) {} + + // Used for serializing. + explicit FPOptions(unsigned I) + : fp_contract(static_cast<LangOptions::FPContractModeKind>(I & 3)), + fenv_access(static_cast<LangOptions::FEnvAccessModeKind>((I >> 2) & 1)) + {} + + explicit FPOptions(const LangOptions &LangOpts) + : fp_contract(LangOpts.getDefaultFPContractMode()), + fenv_access(LangOptions::FEA_Off) {} + // FIXME: Use getDefaultFEnvAccessMode() when available. + + bool allowFPContractWithinStatement() const { + return fp_contract == LangOptions::FPC_On; + } + + bool allowFPContractAcrossStatement() const { + return fp_contract == LangOptions::FPC_Fast; + } + + void setAllowFPContractWithinStatement() { + fp_contract = LangOptions::FPC_On; + } + + void setAllowFPContractAcrossStatement() { + fp_contract = LangOptions::FPC_Fast; + } + + void setDisallowFPContract() { fp_contract = LangOptions::FPC_Off; } + + bool allowFEnvAccess() const { + return fenv_access == LangOptions::FEA_On; + } + + void setAllowFEnvAccess() { + fenv_access = LangOptions::FEA_On; + } + + void setDisallowFEnvAccess() { fenv_access = LangOptions::FEA_Off; } + + /// Used to serialize this. + unsigned getInt() const { return fp_contract | (fenv_access << 2); } + +private: + /// Adjust BinaryOperator::FPFeatures to match the total bit-field size + /// of these two. + unsigned fp_contract : 2; + unsigned fenv_access : 1; +}; + +/// Describes the kind of translation unit being processed. +enum TranslationUnitKind { + /// The translation unit is a complete translation unit. + TU_Complete, + + /// The translation unit is a prefix to a translation unit, and is + /// not complete. + TU_Prefix, + + /// The translation unit is a module. + TU_Module +}; + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_LANGOPTIONS_H diff --git a/clang-r353983/include/clang/Basic/Linkage.h b/clang-r353983/include/clang/Basic/Linkage.h new file mode 100644 index 00000000..696f85b1 --- /dev/null +++ b/clang-r353983/include/clang/Basic/Linkage.h @@ -0,0 +1,128 @@ +//===- Linkage.h - Linkage enumeration and utilities ------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines the Linkage enumeration and various utility functions. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_LINKAGE_H +#define LLVM_CLANG_BASIC_LINKAGE_H + +#include <utility> + +namespace clang { + +/// Describes the different kinds of linkage +/// (C++ [basic.link], C99 6.2.2) that an entity may have. +enum Linkage : unsigned char { + /// No linkage, which means that the entity is unique and + /// can only be referred to from within its scope. + NoLinkage = 0, + + /// Internal linkage, which indicates that the entity can + /// be referred to from within the translation unit (but not other + /// translation units). + InternalLinkage, + + /// External linkage within a unique namespace. + /// + /// From the language perspective, these entities have external + /// linkage. However, since they reside in an anonymous namespace, + /// their names are unique to this translation unit, which is + /// equivalent to having internal linkage from the code-generation + /// point of view. + UniqueExternalLinkage, + + /// No linkage according to the standard, but is visible from other + /// translation units because of types defined in a inline function. + VisibleNoLinkage, + + /// Internal linkage according to the Modules TS, but can be referred + /// to from other translation units indirectly through inline functions and + /// templates in the module interface. + ModuleInternalLinkage, + + /// Module linkage, which indicates that the entity can be referred + /// to from other translation units within the same module, and indirectly + /// from arbitrary other translation units through inline functions and + /// templates in the module interface. + ModuleLinkage, + + /// External linkage, which indicates that the entity can + /// be referred to from other translation units. + ExternalLinkage +}; + +/// Describes the different kinds of language linkage +/// (C++ [dcl.link]) that an entity may have. +enum LanguageLinkage { + CLanguageLinkage, + CXXLanguageLinkage, + NoLanguageLinkage +}; + +/// A more specific kind of linkage than enum Linkage. +/// +/// This is relevant to CodeGen and AST file reading. +enum GVALinkage { + GVA_Internal, + GVA_AvailableExternally, + GVA_DiscardableODR, + GVA_StrongExternal, + GVA_StrongODR +}; + +inline bool isDiscardableGVALinkage(GVALinkage L) { + return L <= GVA_DiscardableODR; +} + +inline bool isExternallyVisible(Linkage L) { + return L >= VisibleNoLinkage; +} + +inline Linkage getFormalLinkage(Linkage L) { + switch (L) { + case UniqueExternalLinkage: + return ExternalLinkage; + case VisibleNoLinkage: + return NoLinkage; + case ModuleInternalLinkage: + return InternalLinkage; + default: + return L; + } +} + +inline bool isExternalFormalLinkage(Linkage L) { + return getFormalLinkage(L) == ExternalLinkage; +} + +/// Compute the minimum linkage given two linkages. +/// +/// The linkage can be interpreted as a pair formed by the formal linkage and +/// a boolean for external visibility. This is just what getFormalLinkage and +/// isExternallyVisible return. We want the minimum of both components. The +/// Linkage enum is defined in an order that makes this simple, we just need +/// special cases for when VisibleNoLinkage would lose the visible bit and +/// become NoLinkage. +inline Linkage minLinkage(Linkage L1, Linkage L2) { + if (L2 == VisibleNoLinkage) + std::swap(L1, L2); + if (L1 == VisibleNoLinkage) { + if (L2 == InternalLinkage) + return NoLinkage; + if (L2 == UniqueExternalLinkage) + return NoLinkage; + } + return L1 < L2 ? L1 : L2; +} + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_LINKAGE_H diff --git a/clang-r353983/include/clang/Basic/MSP430Target.def b/clang-r353983/include/clang/Basic/MSP430Target.def new file mode 100644 index 00000000..a1e192c1 --- /dev/null +++ b/clang-r353983/include/clang/Basic/MSP430Target.def @@ -0,0 +1,246 @@ +//===--- MSP430Target.def - MSP430 Feature/Processor Database----*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the MSP430 devices and their features. +// +//===----------------------------------------------------------------------===// + +#ifndef MSP430_MCU_FEAT +#define MSP430_MCU_FEAT(NAME, HWMULT) MSP430_MCU(NAME) +#endif + +#ifndef MSP430_MCU +#define MSP430_MCU(NAME) +#endif + +MSP430_MCU("msp430c111") +MSP430_MCU("msp430c1111") +MSP430_MCU("msp430c112") +MSP430_MCU("msp430c1121") +MSP430_MCU("msp430c1331") +MSP430_MCU("msp430c1351") +MSP430_MCU("msp430e112") +MSP430_MCU("msp430f110") +MSP430_MCU("msp430f1101") +MSP430_MCU("msp430f1101a") +MSP430_MCU("msp430f1111") +MSP430_MCU("msp430f1111a") +MSP430_MCU("msp430f112") +MSP430_MCU("msp430f1121") +MSP430_MCU("msp430f1121a") +MSP430_MCU("msp430f1122") +MSP430_MCU("msp430f1132") +MSP430_MCU("msp430f122") +MSP430_MCU("msp430f1222") +MSP430_MCU("msp430f123") +MSP430_MCU("msp430f1232") +MSP430_MCU("msp430f133") +MSP430_MCU("msp430f135") +MSP430_MCU("msp430f155") +MSP430_MCU("msp430f156") +MSP430_MCU("msp430f157") +MSP430_MCU("msp430p112") +MSP430_MCU("msp430f2001") +MSP430_MCU("msp430f2011") +MSP430_MCU("msp430f2002") +MSP430_MCU("msp430f2012") +MSP430_MCU("msp430f2003") +MSP430_MCU("msp430f2013") +MSP430_MCU("msp430f2101") +MSP430_MCU("msp430f2111") +MSP430_MCU("msp430f2121") +MSP430_MCU("msp430f2131") +MSP430_MCU("msp430f2112") +MSP430_MCU("msp430f2122") +MSP430_MCU("msp430f2132") +MSP430_MCU("msp430f2232") +MSP430_MCU("msp430f2252") +MSP430_MCU("msp430f2272") +MSP430_MCU("msp430f2234") +MSP430_MCU("msp430f2254") +MSP430_MCU("msp430f2274") +MSP430_MCU("msp430g2211") +MSP430_MCU("msp430g2201") +MSP430_MCU("msp430g2111") +MSP430_MCU("msp430g2101") +MSP430_MCU("msp430g2001") +MSP430_MCU("msp430g2231") +MSP430_MCU("msp430g2221") +MSP430_MCU("msp430g2131") +MSP430_MCU("msp430g2121") +MSP430_MCU("msp430g2102") +MSP430_MCU("msp430g2202") +MSP430_MCU("msp430g2302") +MSP430_MCU("msp430g2402") +MSP430_MCU("msp430g2132") +MSP430_MCU("msp430g2232") +MSP430_MCU("msp430g2332") +MSP430_MCU("msp430g2432") +MSP430_MCU("msp430g2112") +MSP430_MCU("msp430g2212") +MSP430_MCU("msp430g2312") +MSP430_MCU("msp430g2412") +MSP430_MCU("msp430g2152") +MSP430_MCU("msp430g2252") +MSP430_MCU("msp430g2352") +MSP430_MCU("msp430g2452") +MSP430_MCU("msp430g2113") +MSP430_MCU("msp430g2213") +MSP430_MCU("msp430g2313") +MSP430_MCU("msp430g2413") +MSP430_MCU("msp430g2513") +MSP430_MCU("msp430g2153") +MSP430_MCU("msp430g2253") +MSP430_MCU("msp430g2353") +MSP430_MCU("msp430g2453") +MSP430_MCU("msp430g2553") +MSP430_MCU("msp430g2203") +MSP430_MCU("msp430g2303") +MSP430_MCU("msp430g2403") +MSP430_MCU("msp430g2233") +MSP430_MCU("msp430g2333") +MSP430_MCU("msp430g2433") +MSP430_MCU("msp430g2533") +MSP430_MCU("msp430tch5e") +MSP430_MCU("msp430g2444") +MSP430_MCU("msp430g2544") +MSP430_MCU("msp430g2744") +MSP430_MCU("msp430g2755") +MSP430_MCU("msp430g2855") +MSP430_MCU("msp430g2955") +MSP430_MCU("msp430g2230") +MSP430_MCU("msp430g2210") +MSP430_MCU("msp430c311s") +MSP430_MCU("msp430c312") +MSP430_MCU("msp430c313") +MSP430_MCU("msp430c314") +MSP430_MCU("msp430c315") +MSP430_MCU("msp430c323") +MSP430_MCU("msp430c325") +MSP430_MCU("msp430c412") +MSP430_MCU("msp430c413") +MSP430_MCU("msp430e313") +MSP430_MCU("msp430e315") +MSP430_MCU("msp430e325") +MSP430_MCU("msp430p313") +MSP430_MCU("msp430p315") +MSP430_MCU("msp430p315s") +MSP430_MCU("msp430p325") +MSP430_MCU("msp430f412") +MSP430_MCU("msp430f413") +MSP430_MCU("msp430f415") +MSP430_MCU("msp430f417") +MSP430_MCU("msp430f4132") +MSP430_MCU("msp430f4152") +MSP430_MCU("msp430f435") +MSP430_MCU("msp430f436") +MSP430_MCU("msp430f437") +MSP430_MCU("msp430f4351") +MSP430_MCU("msp430f4361") +MSP430_MCU("msp430f4371") +MSP430_MCU("msp430fe423") +MSP430_MCU("msp430fe425") +MSP430_MCU("msp430fe427") +MSP430_MCU("msp430fe423a") +MSP430_MCU("msp430fe425a") +MSP430_MCU("msp430fe427a") +MSP430_MCU("msp430fe4232") +MSP430_MCU("msp430fe4242") +MSP430_MCU("msp430fe4252") +MSP430_MCU("msp430fe4272") +MSP430_MCU("msp430f4250") +MSP430_MCU("msp430f4260") +MSP430_MCU("msp430f4270") +MSP430_MCU("msp430fg4250") +MSP430_MCU("msp430fg4260") +MSP430_MCU("msp430fg4270") +MSP430_MCU("msp430fw423") +MSP430_MCU("msp430fw425") +MSP430_MCU("msp430fw427") +MSP430_MCU("msp430fw428") +MSP430_MCU("msp430fw429") +MSP430_MCU("msp430fg437") +MSP430_MCU("msp430fg438") +MSP430_MCU("msp430fg439") +MSP430_MCU("msp430f438") +MSP430_MCU("msp430f439") +MSP430_MCU("msp430f477") +MSP430_MCU("msp430f478") +MSP430_MCU("msp430f479") +MSP430_MCU("msp430fg477") +MSP430_MCU("msp430fg478") +MSP430_MCU("msp430fg479") + +// With 16-bit hardware multiplier +MSP430_MCU_FEAT("msp430f147", "16bit") +MSP430_MCU_FEAT("msp430f148", "16bit") +MSP430_MCU_FEAT("msp430f149", "16bit") +MSP430_MCU_FEAT("msp430f1471", "16bit") +MSP430_MCU_FEAT("msp430f1481", "16bit") +MSP430_MCU_FEAT("msp430f1491", "16bit") +MSP430_MCU_FEAT("msp430f167", "16bit") +MSP430_MCU_FEAT("msp430f168", "16bit") +MSP430_MCU_FEAT("msp430f169", "16bit") +MSP430_MCU_FEAT("msp430f1610", "16bit") +MSP430_MCU_FEAT("msp430f1611", "16bit") +MSP430_MCU_FEAT("msp430f1612", "16bit") +MSP430_MCU_FEAT("msp430c336", "16bit") +MSP430_MCU_FEAT("msp430c337", "16bit") +MSP430_MCU_FEAT("msp430e337", "16bit") +MSP430_MCU_FEAT("msp430p337", "16bit") +MSP430_MCU_FEAT("msp430f423", "16bit") +MSP430_MCU_FEAT("msp430f425", "16bit") +MSP430_MCU_FEAT("msp430f427", "16bit") +MSP430_MCU_FEAT("msp430f423a", "16bit") +MSP430_MCU_FEAT("msp430f425a", "16bit") +MSP430_MCU_FEAT("msp430f427a", "16bit") +MSP430_MCU_FEAT("msp430f4481", "16bit") +MSP430_MCU_FEAT("msp430f4491", "16bit") +MSP430_MCU_FEAT("msp430f447", "16bit") +MSP430_MCU_FEAT("msp430f448", "16bit") +MSP430_MCU_FEAT("msp430f449", "16bit") +MSP430_MCU_FEAT("msp430f2330", "16bit") +MSP430_MCU_FEAT("msp430f2350", "16bit") +MSP430_MCU_FEAT("msp430f2370", "16bit") +MSP430_MCU_FEAT("msp430f233", "16bit") +MSP430_MCU_FEAT("msp430f235", "16bit") +MSP430_MCU_FEAT("msp430f247", "16bit") +MSP430_MCU_FEAT("msp430f248", "16bit") +MSP430_MCU_FEAT("msp430f249", "16bit") +MSP430_MCU_FEAT("msp430f2410", "16bit") +MSP430_MCU_FEAT("msp430f2471", "16bit") +MSP430_MCU_FEAT("msp430f2481", "16bit") +MSP430_MCU_FEAT("msp430f2491", "16bit") +MSP430_MCU_FEAT("msp430i2020", "16bit") +MSP430_MCU_FEAT("msp430i2021", "16bit") +MSP430_MCU_FEAT("msp430i2030", "16bit") +MSP430_MCU_FEAT("msp430i2031", "16bit") +MSP430_MCU_FEAT("msp430i2040", "16bit") +MSP430_MCU_FEAT("msp430i2041", "16bit") +MSP430_MCU_FEAT("msp430afe221", "16bit") +MSP430_MCU_FEAT("msp430afe231", "16bit") +MSP430_MCU_FEAT("msp430afe251", "16bit") +MSP430_MCU_FEAT("msp430afe222", "16bit") +MSP430_MCU_FEAT("msp430afe232", "16bit") +MSP430_MCU_FEAT("msp430afe252", "16bit") +MSP430_MCU_FEAT("msp430afe223", "16bit") +MSP430_MCU_FEAT("msp430afe233", "16bit") +MSP430_MCU_FEAT("msp430afe253", "16bit") + +// With 32 Bit Hardware Multiplier +MSP430_MCU_FEAT("msp430f4783", "32bit") +MSP430_MCU_FEAT("msp430f4793", "32bit") +MSP430_MCU_FEAT("msp430f4784", "32bit") +MSP430_MCU_FEAT("msp430f4794", "32bit") + +// Generic MSUs +MSP430_MCU("msp430") +MSP430_MCU("msp430i2xxgeneric") + +#undef MSP430_MCU +#undef MSP430_MCU_FEAT diff --git a/clang-r353983/include/clang/Basic/MacroBuilder.h b/clang-r353983/include/clang/Basic/MacroBuilder.h new file mode 100644 index 00000000..96e67cbb --- /dev/null +++ b/clang-r353983/include/clang/Basic/MacroBuilder.h @@ -0,0 +1,47 @@ +//===--- MacroBuilder.h - CPP Macro building utility ------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the clang::MacroBuilder utility class. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_MACROBUILDER_H +#define LLVM_CLANG_BASIC_MACROBUILDER_H + +#include "clang/Basic/LLVM.h" +#include "llvm/ADT/Twine.h" +#include "llvm/Support/raw_ostream.h" + +namespace clang { + +class MacroBuilder { + raw_ostream &Out; +public: + MacroBuilder(raw_ostream &Output) : Out(Output) {} + + /// Append a \#define line for macro of the form "\#define Name Value\n". + void defineMacro(const Twine &Name, const Twine &Value = "1") { + Out << "#define " << Name << ' ' << Value << '\n'; + } + + /// Append a \#undef line for Name. Name should be of the form XXX + /// and we emit "\#undef XXX". + void undefineMacro(const Twine &Name) { + Out << "#undef " << Name << '\n'; + } + + /// Directly append Str and a newline to the underlying buffer. + void append(const Twine &Str) { + Out << Str << '\n'; + } +}; + +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/MemoryBufferCache.h b/clang-r353983/include/clang/Basic/MemoryBufferCache.h new file mode 100644 index 00000000..9a2b62e0 --- /dev/null +++ b/clang-r353983/include/clang/Basic/MemoryBufferCache.h @@ -0,0 +1,79 @@ +//===- MemoryBufferCache.h - Cache for loaded memory buffers ----*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_MEMORYBUFFERCACHE_H +#define LLVM_CLANG_BASIC_MEMORYBUFFERCACHE_H + +#include "llvm/ADT/IntrusiveRefCntPtr.h" +#include "llvm/ADT/StringMap.h" +#include <memory> + +namespace llvm { +class MemoryBuffer; +} // end namespace llvm + +namespace clang { + +/// Manage memory buffers across multiple users. +/// +/// Ensures that multiple users have a consistent view of each buffer. This is +/// used by \a CompilerInstance when building PCMs to ensure that each \a +/// ModuleManager sees the same files. +/// +/// \a finalizeCurrentBuffers() should be called before creating a new user. +/// This locks in the current buffers, ensuring that no buffer that has already +/// been accessed can be purged, preventing use-after-frees. +class MemoryBufferCache : public llvm::RefCountedBase<MemoryBufferCache> { + struct BufferEntry { + std::unique_ptr<llvm::MemoryBuffer> Buffer; + + /// Track the timeline of when this was added to the cache. + unsigned Index; + }; + + /// Cache of buffers. + llvm::StringMap<BufferEntry> Buffers; + + /// Monotonically increasing index. + unsigned NextIndex = 0; + + /// Bumped to prevent "older" buffers from being removed. + unsigned FirstRemovableIndex = 0; + +public: + /// Store the Buffer under the Filename. + /// + /// \pre There is not already buffer is not already in the cache. + /// \return a reference to the buffer as a convenience. + llvm::MemoryBuffer &addBuffer(llvm::StringRef Filename, + std::unique_ptr<llvm::MemoryBuffer> Buffer); + + /// Try to remove a buffer from the cache. + /// + /// \return false on success, iff \c !isBufferFinal(). + bool tryToRemoveBuffer(llvm::StringRef Filename); + + /// Get a pointer to the buffer if it exists; else nullptr. + llvm::MemoryBuffer *lookupBuffer(llvm::StringRef Filename); + + /// Check whether the buffer is final. + /// + /// \return true iff \a finalizeCurrentBuffers() has been called since the + /// buffer was added. This prevents buffers from being removed. + bool isBufferFinal(llvm::StringRef Filename); + + /// Finalize the current buffers in the cache. + /// + /// Should be called when creating a new user to ensure previous uses aren't + /// invalidated. + void finalizeCurrentBuffers(); +}; + +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_MEMORYBUFFERCACHE_H diff --git a/clang-r353983/include/clang/Basic/Module.h b/clang-r353983/include/clang/Basic/Module.h new file mode 100644 index 00000000..0e891af5 --- /dev/null +++ b/clang-r353983/include/clang/Basic/Module.h @@ -0,0 +1,651 @@ +//===- Module.h - Describe a module -----------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines the clang::Module class, which describes a module in the +/// source code. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_MODULE_H +#define LLVM_CLANG_BASIC_MODULE_H + +#include "clang/Basic/FileManager.h" +#include "clang/Basic/SourceLocation.h" +#include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/DenseSet.h" +#include "llvm/ADT/Optional.h" +#include "llvm/ADT/PointerIntPair.h" +#include "llvm/ADT/PointerUnion.h" +#include "llvm/ADT/SetVector.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/StringMap.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/ADT/iterator_range.h" +#include <array> +#include <cassert> +#include <cstdint> +#include <ctime> +#include <string> +#include <utility> +#include <vector> + +namespace llvm { + +class raw_ostream; + +} // namespace llvm + +namespace clang { + +class LangOptions; +class TargetInfo; + +/// Describes the name of a module. +using ModuleId = SmallVector<std::pair<std::string, SourceLocation>, 2>; + +/// The signature of a module, which is a hash of the AST content. +struct ASTFileSignature : std::array<uint32_t, 5> { + ASTFileSignature(std::array<uint32_t, 5> S = {{0}}) + : std::array<uint32_t, 5>(std::move(S)) {} + + explicit operator bool() const { + return *this != std::array<uint32_t, 5>({{0}}); + } +}; + +/// Describes a module or submodule. +class Module { +public: + /// The name of this module. + std::string Name; + + /// The location of the module definition. + SourceLocation DefinitionLoc; + + enum ModuleKind { + /// This is a module that was defined by a module map and built out + /// of header files. + ModuleMapModule, + + /// This is a C++ Modules TS module interface unit. + ModuleInterfaceUnit, + + /// This is a fragment of the global module within some C++ Modules + /// TS module. + GlobalModuleFragment, + }; + + /// The kind of this module. + ModuleKind Kind = ModuleMapModule; + + /// The parent of this module. This will be NULL for the top-level + /// module. + Module *Parent; + + /// The build directory of this module. This is the directory in + /// which the module is notionally built, and relative to which its headers + /// are found. + const DirectoryEntry *Directory = nullptr; + + /// The presumed file name for the module map defining this module. + /// Only non-empty when building from preprocessed source. + std::string PresumedModuleMapFile; + + /// The umbrella header or directory. + llvm::PointerUnion<const DirectoryEntry *, const FileEntry *> Umbrella; + + /// The module signature. + ASTFileSignature Signature; + + /// The name of the umbrella entry, as written in the module map. + std::string UmbrellaAsWritten; + + /// The module through which entities defined in this module will + /// eventually be exposed, for use in "private" modules. + std::string ExportAsModule; + +private: + /// The submodules of this module, indexed by name. + std::vector<Module *> SubModules; + + /// A mapping from the submodule name to the index into the + /// \c SubModules vector at which that submodule resides. + llvm::StringMap<unsigned> SubModuleIndex; + + /// The AST file if this is a top-level module which has a + /// corresponding serialized AST file, or null otherwise. + const FileEntry *ASTFile = nullptr; + + /// The top-level headers associated with this module. + llvm::SmallSetVector<const FileEntry *, 2> TopHeaders; + + /// top-level header filenames that aren't resolved to FileEntries yet. + std::vector<std::string> TopHeaderNames; + + /// Cache of modules visible to lookup in this module. + mutable llvm::DenseSet<const Module*> VisibleModulesCache; + + /// The ID used when referencing this module within a VisibleModuleSet. + unsigned VisibilityID; + +public: + enum HeaderKind { + HK_Normal, + HK_Textual, + HK_Private, + HK_PrivateTextual, + HK_Excluded + }; + static const int NumHeaderKinds = HK_Excluded + 1; + + /// Information about a header directive as found in the module map + /// file. + struct Header { + std::string NameAsWritten; + const FileEntry *Entry; + + explicit operator bool() { return Entry; } + }; + + /// Information about a directory name as found in the module map + /// file. + struct DirectoryName { + std::string NameAsWritten; + const DirectoryEntry *Entry; + + explicit operator bool() { return Entry; } + }; + + /// The headers that are part of this module. + SmallVector<Header, 2> Headers[5]; + + /// Stored information about a header directive that was found in the + /// module map file but has not been resolved to a file. + struct UnresolvedHeaderDirective { + HeaderKind Kind = HK_Normal; + SourceLocation FileNameLoc; + std::string FileName; + bool IsUmbrella = false; + bool HasBuiltinHeader = false; + Optional<off_t> Size; + Optional<time_t> ModTime; + }; + + /// Headers that are mentioned in the module map file but that we have not + /// yet attempted to resolve to a file on the file system. + SmallVector<UnresolvedHeaderDirective, 1> UnresolvedHeaders; + + /// Headers that are mentioned in the module map file but could not be + /// found on the file system. + SmallVector<UnresolvedHeaderDirective, 1> MissingHeaders; + + /// An individual requirement: a feature name and a flag indicating + /// the required state of that feature. + using Requirement = std::pair<std::string, bool>; + + /// The set of language features required to use this module. + /// + /// If any of these requirements are not available, the \c IsAvailable bit + /// will be false to indicate that this (sub)module is not available. + SmallVector<Requirement, 2> Requirements; + + /// A module with the same name that shadows this module. + Module *ShadowingModule = nullptr; + + /// Whether this module is missing a feature from \c Requirements. + unsigned IsMissingRequirement : 1; + + /// Whether we tried and failed to load a module file for this module. + unsigned HasIncompatibleModuleFile : 1; + + /// Whether this module is available in the current translation unit. + /// + /// If the module is missing headers or does not meet all requirements then + /// this bit will be 0. + unsigned IsAvailable : 1; + + /// Whether this module was loaded from a module file. + unsigned IsFromModuleFile : 1; + + /// Whether this is a framework module. + unsigned IsFramework : 1; + + /// Whether this is an explicit submodule. + unsigned IsExplicit : 1; + + /// Whether this is a "system" module (which assumes that all + /// headers in it are system headers). + unsigned IsSystem : 1; + + /// Whether this is an 'extern "C"' module (which implicitly puts all + /// headers in it within an 'extern "C"' block, and allows the module to be + /// imported within such a block). + unsigned IsExternC : 1; + + /// Whether this is an inferred submodule (module * { ... }). + unsigned IsInferred : 1; + + /// Whether we should infer submodules for this module based on + /// the headers. + /// + /// Submodules can only be inferred for modules with an umbrella header. + unsigned InferSubmodules : 1; + + /// Whether, when inferring submodules, the inferred submodules + /// should be explicit. + unsigned InferExplicitSubmodules : 1; + + /// Whether, when inferring submodules, the inferr submodules should + /// export all modules they import (e.g., the equivalent of "export *"). + unsigned InferExportWildcard : 1; + + /// Whether the set of configuration macros is exhaustive. + /// + /// When the set of configuration macros is exhaustive, meaning + /// that no identifier not in this list should affect how the module is + /// built. + unsigned ConfigMacrosExhaustive : 1; + + /// Whether files in this module can only include non-modular headers + /// and headers from used modules. + unsigned NoUndeclaredIncludes : 1; + + /// Whether this module came from a "private" module map, found next + /// to a regular (public) module map. + unsigned ModuleMapIsPrivate : 1; + + /// Describes the visibility of the various names within a + /// particular module. + enum NameVisibilityKind { + /// All of the names in this module are hidden. + Hidden, + /// All of the names in this module are visible. + AllVisible + }; + + /// The visibility of names within this particular module. + NameVisibilityKind NameVisibility; + + /// The location of the inferred submodule. + SourceLocation InferredSubmoduleLoc; + + /// The set of modules imported by this module, and on which this + /// module depends. + llvm::SmallSetVector<Module *, 2> Imports; + + /// Describes an exported module. + /// + /// The pointer is the module being re-exported, while the bit will be true + /// to indicate that this is a wildcard export. + using ExportDecl = llvm::PointerIntPair<Module *, 1, bool>; + + /// The set of export declarations. + SmallVector<ExportDecl, 2> Exports; + + /// Describes an exported module that has not yet been resolved + /// (perhaps because the module it refers to has not yet been loaded). + struct UnresolvedExportDecl { + /// The location of the 'export' keyword in the module map file. + SourceLocation ExportLoc; + + /// The name of the module. + ModuleId Id; + + /// Whether this export declaration ends in a wildcard, indicating + /// that all of its submodules should be exported (rather than the named + /// module itself). + bool Wildcard; + }; + + /// The set of export declarations that have yet to be resolved. + SmallVector<UnresolvedExportDecl, 2> UnresolvedExports; + + /// The directly used modules. + SmallVector<Module *, 2> DirectUses; + + /// The set of use declarations that have yet to be resolved. + SmallVector<ModuleId, 2> UnresolvedDirectUses; + + /// A library or framework to link against when an entity from this + /// module is used. + struct LinkLibrary { + LinkLibrary() = default; + LinkLibrary(const std::string &Library, bool IsFramework) + : Library(Library), IsFramework(IsFramework) {} + + /// The library to link against. + /// + /// This will typically be a library or framework name, but can also + /// be an absolute path to the library or framework. + std::string Library; + + /// Whether this is a framework rather than a library. + bool IsFramework = false; + }; + + /// The set of libraries or frameworks to link against when + /// an entity from this module is used. + llvm::SmallVector<LinkLibrary, 2> LinkLibraries; + + /// Autolinking uses the framework name for linking purposes + /// when this is false and the export_as name otherwise. + bool UseExportAsModuleLinkName = false; + + /// The set of "configuration macros", which are macros that + /// (intentionally) change how this module is built. + std::vector<std::string> ConfigMacros; + + /// An unresolved conflict with another module. + struct UnresolvedConflict { + /// The (unresolved) module id. + ModuleId Id; + + /// The message provided to the user when there is a conflict. + std::string Message; + }; + + /// The list of conflicts for which the module-id has not yet been + /// resolved. + std::vector<UnresolvedConflict> UnresolvedConflicts; + + /// A conflict between two modules. + struct Conflict { + /// The module that this module conflicts with. + Module *Other; + + /// The message provided to the user when there is a conflict. + std::string Message; + }; + + /// The list of conflicts. + std::vector<Conflict> Conflicts; + + /// Construct a new module or submodule. + Module(StringRef Name, SourceLocation DefinitionLoc, Module *Parent, + bool IsFramework, bool IsExplicit, unsigned VisibilityID); + + ~Module(); + + /// Determine whether this module is available for use within the + /// current translation unit. + bool isAvailable() const { return IsAvailable; } + + /// Determine whether this module is available for use within the + /// current translation unit. + /// + /// \param LangOpts The language options used for the current + /// translation unit. + /// + /// \param Target The target options used for the current translation unit. + /// + /// \param Req If this module is unavailable because of a missing requirement, + /// this parameter will be set to one of the requirements that is not met for + /// use of this module. + /// + /// \param MissingHeader If this module is unavailable because of a missing + /// header, this parameter will be set to one of the missing headers. + /// + /// \param ShadowingModule If this module is unavailable because it is + /// shadowed, this parameter will be set to the shadowing module. + bool isAvailable(const LangOptions &LangOpts, + const TargetInfo &Target, + Requirement &Req, + UnresolvedHeaderDirective &MissingHeader, + Module *&ShadowingModule) const; + + /// Determine whether this module is a submodule. + bool isSubModule() const { return Parent != nullptr; } + + /// Determine whether this module is a submodule of the given other + /// module. + bool isSubModuleOf(const Module *Other) const; + + /// Determine whether this module is a part of a framework, + /// either because it is a framework module or because it is a submodule + /// of a framework module. + bool isPartOfFramework() const { + for (const Module *Mod = this; Mod; Mod = Mod->Parent) + if (Mod->IsFramework) + return true; + + return false; + } + + /// Determine whether this module is a subframework of another + /// framework. + bool isSubFramework() const { + return IsFramework && Parent && Parent->isPartOfFramework(); + } + + /// Set the parent of this module. This should only be used if the parent + /// could not be set during module creation. + void setParent(Module *M) { + assert(!Parent); + Parent = M; + Parent->SubModuleIndex[Name] = Parent->SubModules.size(); + Parent->SubModules.push_back(this); + } + + /// Retrieve the full name of this module, including the path from + /// its top-level module. + /// \param AllowStringLiterals If \c true, components that might not be + /// lexically valid as identifiers will be emitted as string literals. + std::string getFullModuleName(bool AllowStringLiterals = false) const; + + /// Whether the full name of this module is equal to joining + /// \p nameParts with "."s. + /// + /// This is more efficient than getFullModuleName(). + bool fullModuleNameIs(ArrayRef<StringRef> nameParts) const; + + /// Retrieve the top-level module for this (sub)module, which may + /// be this module. + Module *getTopLevelModule() { + return const_cast<Module *>( + const_cast<const Module *>(this)->getTopLevelModule()); + } + + /// Retrieve the top-level module for this (sub)module, which may + /// be this module. + const Module *getTopLevelModule() const; + + /// Retrieve the name of the top-level module. + StringRef getTopLevelModuleName() const { + return getTopLevelModule()->Name; + } + + /// The serialized AST file for this module, if one was created. + const FileEntry *getASTFile() const { + return getTopLevelModule()->ASTFile; + } + + /// Set the serialized AST file for the top-level module of this module. + void setASTFile(const FileEntry *File) { + assert((File == nullptr || getASTFile() == nullptr || + getASTFile() == File) && "file path changed"); + getTopLevelModule()->ASTFile = File; + } + + /// Retrieve the directory for which this module serves as the + /// umbrella. + DirectoryName getUmbrellaDir() const; + + /// Retrieve the header that serves as the umbrella header for this + /// module. + Header getUmbrellaHeader() const { + if (auto *E = Umbrella.dyn_cast<const FileEntry *>()) + return Header{UmbrellaAsWritten, E}; + return Header{}; + } + + /// Determine whether this module has an umbrella directory that is + /// not based on an umbrella header. + bool hasUmbrellaDir() const { + return Umbrella && Umbrella.is<const DirectoryEntry *>(); + } + + /// Add a top-level header associated with this module. + void addTopHeader(const FileEntry *File) { + assert(File); + TopHeaders.insert(File); + } + + /// Add a top-level header filename associated with this module. + void addTopHeaderFilename(StringRef Filename) { + TopHeaderNames.push_back(Filename); + } + + /// The top-level headers associated with this module. + ArrayRef<const FileEntry *> getTopHeaders(FileManager &FileMgr); + + /// Determine whether this module has declared its intention to + /// directly use another module. + bool directlyUses(const Module *Requested) const; + + /// Add the given feature requirement to the list of features + /// required by this module. + /// + /// \param Feature The feature that is required by this module (and + /// its submodules). + /// + /// \param RequiredState The required state of this feature: \c true + /// if it must be present, \c false if it must be absent. + /// + /// \param LangOpts The set of language options that will be used to + /// evaluate the availability of this feature. + /// + /// \param Target The target options that will be used to evaluate the + /// availability of this feature. + void addRequirement(StringRef Feature, bool RequiredState, + const LangOptions &LangOpts, + const TargetInfo &Target); + + /// Mark this module and all of its submodules as unavailable. + void markUnavailable(bool MissingRequirement = false); + + /// Find the submodule with the given name. + /// + /// \returns The submodule if found, or NULL otherwise. + Module *findSubmodule(StringRef Name) const; + + /// Determine whether the specified module would be visible to + /// a lookup at the end of this module. + /// + /// FIXME: This may return incorrect results for (submodules of) the + /// module currently being built, if it's queried before we see all + /// of its imports. + bool isModuleVisible(const Module *M) const { + if (VisibleModulesCache.empty()) + buildVisibleModulesCache(); + return VisibleModulesCache.count(M); + } + + unsigned getVisibilityID() const { return VisibilityID; } + + using submodule_iterator = std::vector<Module *>::iterator; + using submodule_const_iterator = std::vector<Module *>::const_iterator; + + submodule_iterator submodule_begin() { return SubModules.begin(); } + submodule_const_iterator submodule_begin() const {return SubModules.begin();} + submodule_iterator submodule_end() { return SubModules.end(); } + submodule_const_iterator submodule_end() const { return SubModules.end(); } + + llvm::iterator_range<submodule_iterator> submodules() { + return llvm::make_range(submodule_begin(), submodule_end()); + } + llvm::iterator_range<submodule_const_iterator> submodules() const { + return llvm::make_range(submodule_begin(), submodule_end()); + } + + /// Appends this module's list of exported modules to \p Exported. + /// + /// This provides a subset of immediately imported modules (the ones that are + /// directly exported), not the complete set of exported modules. + void getExportedModules(SmallVectorImpl<Module *> &Exported) const; + + static StringRef getModuleInputBufferName() { + return "<module-includes>"; + } + + /// Print the module map for this module to the given stream. + void print(raw_ostream &OS, unsigned Indent = 0) const; + + /// Dump the contents of this module to the given output stream. + void dump() const; + +private: + void buildVisibleModulesCache() const; +}; + +/// A set of visible modules. +class VisibleModuleSet { +public: + VisibleModuleSet() = default; + VisibleModuleSet(VisibleModuleSet &&O) + : ImportLocs(std::move(O.ImportLocs)), Generation(O.Generation ? 1 : 0) { + O.ImportLocs.clear(); + ++O.Generation; + } + + /// Move from another visible modules set. Guaranteed to leave the source + /// empty and bump the generation on both. + VisibleModuleSet &operator=(VisibleModuleSet &&O) { + ImportLocs = std::move(O.ImportLocs); + O.ImportLocs.clear(); + ++O.Generation; + ++Generation; + return *this; + } + + /// Get the current visibility generation. Incremented each time the + /// set of visible modules changes in any way. + unsigned getGeneration() const { return Generation; } + + /// Determine whether a module is visible. + bool isVisible(const Module *M) const { + return getImportLoc(M).isValid(); + } + + /// Get the location at which the import of a module was triggered. + SourceLocation getImportLoc(const Module *M) const { + return M->getVisibilityID() < ImportLocs.size() + ? ImportLocs[M->getVisibilityID()] + : SourceLocation(); + } + + /// A callback to call when a module is made visible (directly or + /// indirectly) by a call to \ref setVisible. + using VisibleCallback = llvm::function_ref<void(Module *M)>; + + /// A callback to call when a module conflict is found. \p Path + /// consists of a sequence of modules from the conflicting module to the one + /// made visible, where each was exported by the next. + using ConflictCallback = + llvm::function_ref<void(ArrayRef<Module *> Path, Module *Conflict, + StringRef Message)>; + + /// Make a specific module visible. + void setVisible(Module *M, SourceLocation Loc, + VisibleCallback Vis = [](Module *) {}, + ConflictCallback Cb = [](ArrayRef<Module *>, Module *, + StringRef) {}); + +private: + /// Import locations for each visible module. Indexed by the module's + /// VisibilityID. + std::vector<SourceLocation> ImportLocs; + + /// Visibility generation, bumped every time the visibility state changes. + unsigned Generation = 0; +}; + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_MODULE_H diff --git a/clang-r353983/include/clang/Basic/ObjCRuntime.h b/clang-r353983/include/clang/Basic/ObjCRuntime.h new file mode 100644 index 00000000..921df689 --- /dev/null +++ b/clang-r353983/include/clang/Basic/ObjCRuntime.h @@ -0,0 +1,438 @@ +//===- ObjCRuntime.h - Objective-C Runtime Configuration --------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines types useful for describing an Objective-C runtime. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_OBJCRUNTIME_H +#define LLVM_CLANG_BASIC_OBJCRUNTIME_H + +#include "clang/Basic/LLVM.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/ADT/Triple.h" +#include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/VersionTuple.h" +#include <string> + +namespace clang { + +/// The basic abstraction for the target Objective-C runtime. +class ObjCRuntime { +public: + /// The basic Objective-C runtimes that we know about. + enum Kind { + /// 'macosx' is the Apple-provided NeXT-derived runtime on Mac OS + /// X platforms that use the non-fragile ABI; the version is a + /// release of that OS. + MacOSX, + + /// 'macosx-fragile' is the Apple-provided NeXT-derived runtime on + /// Mac OS X platforms that use the fragile ABI; the version is a + /// release of that OS. + FragileMacOSX, + + /// 'ios' is the Apple-provided NeXT-derived runtime on iOS or the iOS + /// simulator; it is always non-fragile. The version is a release + /// version of iOS. + iOS, + + /// 'watchos' is a variant of iOS for Apple's watchOS. The version + /// is a release version of watchOS. + WatchOS, + + /// 'gcc' is the Objective-C runtime shipped with GCC, implementing a + /// fragile Objective-C ABI + GCC, + + /// 'gnustep' is the modern non-fragile GNUstep runtime. + GNUstep, + + /// 'objfw' is the Objective-C runtime included in ObjFW + ObjFW + }; + +private: + Kind TheKind = MacOSX; + VersionTuple Version; + +public: + /// A bogus initialization of the runtime. + ObjCRuntime() = default; + ObjCRuntime(Kind kind, const VersionTuple &version) + : TheKind(kind), Version(version) {} + + void set(Kind kind, VersionTuple version) { + TheKind = kind; + Version = version; + } + + Kind getKind() const { return TheKind; } + const VersionTuple &getVersion() const { return Version; } + + /// Does this runtime follow the set of implied behaviors for a + /// "non-fragile" ABI? + bool isNonFragile() const { + switch (getKind()) { + case FragileMacOSX: return false; + case GCC: return false; + case MacOSX: return true; + case GNUstep: return true; + case ObjFW: return true; + case iOS: return true; + case WatchOS: return true; + } + llvm_unreachable("bad kind"); + } + + /// The inverse of isNonFragile(): does this runtime follow the set of + /// implied behaviors for a "fragile" ABI? + bool isFragile() const { return !isNonFragile(); } + + /// The default dispatch mechanism to use for the specified architecture + bool isLegacyDispatchDefaultForArch(llvm::Triple::ArchType Arch) { + // The GNUstep runtime uses a newer dispatch method by default from + // version 1.6 onwards + if (getKind() == GNUstep && getVersion() >= VersionTuple(1, 6)) { + if (Arch == llvm::Triple::arm || + Arch == llvm::Triple::x86 || + Arch == llvm::Triple::x86_64) + return false; + } + else if ((getKind() == MacOSX) && isNonFragile() && + (getVersion() >= VersionTuple(10, 0)) && + (getVersion() < VersionTuple(10, 6))) + return Arch != llvm::Triple::x86_64; + // Except for deployment target of 10.5 or less, + // Mac runtimes use legacy dispatch everywhere now. + return true; + } + + /// Is this runtime basically of the GNU family of runtimes? + bool isGNUFamily() const { + switch (getKind()) { + case FragileMacOSX: + case MacOSX: + case iOS: + case WatchOS: + return false; + case GCC: + case GNUstep: + case ObjFW: + return true; + } + llvm_unreachable("bad kind"); + } + + /// Is this runtime basically of the NeXT family of runtimes? + bool isNeXTFamily() const { + // For now, this is just the inverse of isGNUFamily(), but that's + // not inherently true. + return !isGNUFamily(); + } + + /// Does this runtime allow ARC at all? + bool allowsARC() const { + switch (getKind()) { + case FragileMacOSX: + // No stub library for the fragile runtime. + return getVersion() >= VersionTuple(10, 7); + case MacOSX: return true; + case iOS: return true; + case WatchOS: return true; + case GCC: return false; + case GNUstep: return true; + case ObjFW: return true; + } + llvm_unreachable("bad kind"); + } + + /// Does this runtime natively provide the ARC entrypoints? + /// + /// ARC cannot be directly supported on a platform that does not provide + /// these entrypoints, although it may be supportable via a stub + /// library. + bool hasNativeARC() const { + switch (getKind()) { + case FragileMacOSX: return getVersion() >= VersionTuple(10, 7); + case MacOSX: return getVersion() >= VersionTuple(10, 7); + case iOS: return getVersion() >= VersionTuple(5); + case WatchOS: return true; + + case GCC: return false; + case GNUstep: return getVersion() >= VersionTuple(1, 6); + case ObjFW: return true; + } + llvm_unreachable("bad kind"); + } + + /// Does this runtime provide ARC entrypoints that are likely to be faster + /// than an ordinary message send of the appropriate selector? + /// + /// The ARC entrypoints are guaranteed to be equivalent to just sending the + /// corresponding message. If the entrypoint is implemented naively as just a + /// message send, using it is a trade-off: it sacrifices a few cycles of + /// overhead to save a small amount of code. However, it's possible for + /// runtimes to detect and special-case classes that use "standard" + /// retain/release behavior; if that's dynamically a large proportion of all + /// retained objects, using the entrypoint will also be faster than using a + /// message send. + /// + /// When this method returns true, Clang will turn non-super message sends of + /// certain selectors into calls to the correspond entrypoint: + /// retain => objc_retain + /// release => objc_release + /// autorelease => objc_autorelease + bool shouldUseARCFunctionsForRetainRelease() const { + switch (getKind()) { + case FragileMacOSX: + return false; + case MacOSX: + return getVersion() >= VersionTuple(10, 10); + case iOS: + return getVersion() >= VersionTuple(8); + case WatchOS: + return true; + case GCC: + return false; + case GNUstep: + return false; + case ObjFW: + return false; + } + llvm_unreachable("bad kind"); + } + + /// Does this runtime provide entrypoints that are likely to be faster + /// than an ordinary message send of the "alloc" selector? + /// + /// The "alloc" entrypoint is guaranteed to be equivalent to just sending the + /// corresponding message. If the entrypoint is implemented naively as just a + /// message send, using it is a trade-off: it sacrifices a few cycles of + /// overhead to save a small amount of code. However, it's possible for + /// runtimes to detect and special-case classes that use "standard" + /// alloc behavior; if that's dynamically a large proportion of all + /// objects, using the entrypoint will also be faster than using a message + /// send. + /// + /// When this method returns true, Clang will turn non-super message sends of + /// certain selectors into calls to the corresponding entrypoint: + /// alloc => objc_alloc + /// allocWithZone:nil => objc_allocWithZone + bool shouldUseRuntimeFunctionsForAlloc() const { + switch (getKind()) { + case FragileMacOSX: + return false; + case MacOSX: + return getVersion() >= VersionTuple(10, 10); + case iOS: + return getVersion() >= VersionTuple(8); + case WatchOS: + return true; + + case GCC: + return false; + case GNUstep: + return false; + case ObjFW: + return false; + } + llvm_unreachable("bad kind"); + } + + /// Does this runtime supports optimized setter entrypoints? + bool hasOptimizedSetter() const { + switch (getKind()) { + case MacOSX: + return getVersion() >= VersionTuple(10, 8); + case iOS: + return (getVersion() >= VersionTuple(6)); + case WatchOS: + return true; + case GNUstep: + return getVersion() >= VersionTuple(1, 7); + default: + return false; + } + } + + /// Does this runtime allow the use of __weak? + bool allowsWeak() const { + return hasNativeWeak(); + } + + /// Does this runtime natively provide ARC-compliant 'weak' + /// entrypoints? + bool hasNativeWeak() const { + // Right now, this is always equivalent to whether the runtime + // natively supports ARC decision. + return hasNativeARC(); + } + + /// Does this runtime directly support the subscripting methods? + /// + /// This is really a property of the library, not the runtime. + bool hasSubscripting() const { + switch (getKind()) { + case FragileMacOSX: return false; + case MacOSX: return getVersion() >= VersionTuple(10, 11); + case iOS: return getVersion() >= VersionTuple(9); + case WatchOS: return true; + + // This is really a lie, because some implementations and versions + // of the runtime do not support ARC. Probably -fgnu-runtime + // should imply a "maximal" runtime or something? + case GCC: return true; + case GNUstep: return true; + case ObjFW: return true; + } + llvm_unreachable("bad kind"); + } + + /// Does this runtime allow sizeof or alignof on object types? + bool allowsSizeofAlignof() const { + return isFragile(); + } + + /// Does this runtime allow pointer arithmetic on objects? + /// + /// This covers +, -, ++, --, and (if isSubscriptPointerArithmetic() + /// yields true) []. + bool allowsPointerArithmetic() const { + switch (getKind()) { + case FragileMacOSX: + case GCC: + return true; + case MacOSX: + case iOS: + case WatchOS: + case GNUstep: + case ObjFW: + return false; + } + llvm_unreachable("bad kind"); + } + + /// Is subscripting pointer arithmetic? + bool isSubscriptPointerArithmetic() const { + return allowsPointerArithmetic(); + } + + /// Does this runtime provide an objc_terminate function? + /// + /// This is used in handlers for exceptions during the unwind process; + /// without it, abort() must be used in pure ObjC files. + bool hasTerminate() const { + switch (getKind()) { + case FragileMacOSX: return getVersion() >= VersionTuple(10, 8); + case MacOSX: return getVersion() >= VersionTuple(10, 8); + case iOS: return getVersion() >= VersionTuple(5); + case WatchOS: return true; + case GCC: return false; + case GNUstep: return false; + case ObjFW: return false; + } + llvm_unreachable("bad kind"); + } + + /// Does this runtime support weakly importing classes? + bool hasWeakClassImport() const { + switch (getKind()) { + case MacOSX: return true; + case iOS: return true; + case WatchOS: return true; + case FragileMacOSX: return false; + case GCC: return true; + case GNUstep: return true; + case ObjFW: return true; + } + llvm_unreachable("bad kind"); + } + + /// Does this runtime use zero-cost exceptions? + bool hasUnwindExceptions() const { + switch (getKind()) { + case MacOSX: return true; + case iOS: return true; + case WatchOS: return true; + case FragileMacOSX: return false; + case GCC: return true; + case GNUstep: return true; + case ObjFW: return true; + } + llvm_unreachable("bad kind"); + } + + bool hasAtomicCopyHelper() const { + switch (getKind()) { + case FragileMacOSX: + case MacOSX: + case iOS: + case WatchOS: + return true; + case GNUstep: + return getVersion() >= VersionTuple(1, 7); + default: return false; + } + } + + /// Is objc_unsafeClaimAutoreleasedReturnValue available? + bool hasARCUnsafeClaimAutoreleasedReturnValue() const { + switch (getKind()) { + case MacOSX: + case FragileMacOSX: + return getVersion() >= VersionTuple(10, 11); + case iOS: + return getVersion() >= VersionTuple(9); + case WatchOS: + return getVersion() >= VersionTuple(2); + case GNUstep: + return false; + default: + return false; + } + } + + /// Are the empty collection symbols available? + bool hasEmptyCollections() const { + switch (getKind()) { + default: + return false; + case MacOSX: + return getVersion() >= VersionTuple(10, 11); + case iOS: + return getVersion() >= VersionTuple(9); + case WatchOS: + return getVersion() >= VersionTuple(2); + } + } + + /// Try to parse an Objective-C runtime specification from the given + /// string. + /// + /// \return true on error. + bool tryParse(StringRef input); + + std::string getAsString() const; + + friend bool operator==(const ObjCRuntime &left, const ObjCRuntime &right) { + return left.getKind() == right.getKind() && + left.getVersion() == right.getVersion(); + } + + friend bool operator!=(const ObjCRuntime &left, const ObjCRuntime &right) { + return !(left == right); + } +}; + +raw_ostream &operator<<(raw_ostream &out, const ObjCRuntime &value); + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_OBJCRUNTIME_H diff --git a/clang-r353983/include/clang/Basic/OpenCLExtensionTypes.def b/clang-r353983/include/clang/Basic/OpenCLExtensionTypes.def new file mode 100644 index 00000000..84ffbe93 --- /dev/null +++ b/clang-r353983/include/clang/Basic/OpenCLExtensionTypes.def @@ -0,0 +1,40 @@ +//===-- OpenCLExtensionTypes.def - Metadata about BuiltinTypes ------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// This file extends builtin types database with OpenCL extension types. +// Custom code should define this macro: +// EXT_OPAQUE_TYPE(Name, Id, Ext) + +#ifdef EXT_OPAQUE_TYPE + +#ifndef INTEL_SUBGROUP_AVC_TYPE +#define INTEL_SUBGROUP_AVC_TYPE(Name, Id) \ + EXT_OPAQUE_TYPE(intel_sub_group_avc_##Name, OCLIntelSubgroupAVC##Id, \ + cl_intel_device_side_avc_motion_estimation) +#endif + +#endif + +#ifdef INTEL_SUBGROUP_AVC_TYPE +INTEL_SUBGROUP_AVC_TYPE(mce_payload_t, McePayload) +INTEL_SUBGROUP_AVC_TYPE(ime_payload_t, ImePayload) +INTEL_SUBGROUP_AVC_TYPE(ref_payload_t, RefPayload) +INTEL_SUBGROUP_AVC_TYPE(sic_payload_t, SicPayload) +INTEL_SUBGROUP_AVC_TYPE(mce_result_t, MceResult) +INTEL_SUBGROUP_AVC_TYPE(ime_result_t, ImeResult) +INTEL_SUBGROUP_AVC_TYPE(ref_result_t, RefResult) +INTEL_SUBGROUP_AVC_TYPE(sic_result_t, SicResult) +INTEL_SUBGROUP_AVC_TYPE(ime_result_single_reference_streamout_t, ImeResultSingleRefStreamout) +INTEL_SUBGROUP_AVC_TYPE(ime_result_dual_reference_streamout_t, ImeResultDualRefStreamout) +INTEL_SUBGROUP_AVC_TYPE(ime_single_reference_streamin_t, ImeSingleRefStreamin) +INTEL_SUBGROUP_AVC_TYPE(ime_dual_reference_streamin_t, ImeDualRefStreamin) + +#undef INTEL_SUBGROUP_AVC_TYPE +#endif // INTEL_SUBGROUP_AVC_TYPE + +#undef EXT_OPAQUE_TYPE + diff --git a/clang-r353983/include/clang/Basic/OpenCLExtensions.def b/clang-r353983/include/clang/Basic/OpenCLExtensions.def new file mode 100644 index 00000000..40ac88f6 --- /dev/null +++ b/clang-r353983/include/clang/Basic/OpenCLExtensions.def @@ -0,0 +1,93 @@ +//===--- OpenCLExtensions.def - OpenCL extension list -----------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the list of supported OpenCL extensions. +// +//===----------------------------------------------------------------------===// + +// Macro OPENCLEXT or OPENCLEXT_INTERNAL can be defined to enumerate the +// OpenCL extensions listed in this file. +// +// If the extensions are to be enumerated without the supported OpenCL version, +// define OPENCLEXT(ext) where ext is the name of the extension. +// +// If the extensions are to be enumerated with supported OpenCL version, +// define OPENCLEXT_INTERNAL(ext, avail, core) where +// ext - name of the extension or optional core feature. +// avail - minimum OpenCL version supporting it. +// core - minimum OpenCL version when the extension becomes optional core +// feature or core feature. ~0U indicates not a core feature or an +// optional core feature. + +#ifndef OPENCLEXT_INTERNAL +#ifndef OPENCLEXT +#pragma error "macro OPENCLEXT or OPENCLEXT_INTERNAL is required" +#else +#define OPENCLEXT_INTERNAL(ext, ...) OPENCLEXT(ext) +#endif // OPENCLEXT +#endif // OPENCLEXT_INTERNAL + +// OpenCL 1.0. +OPENCLEXT_INTERNAL(cl_khr_3d_image_writes, 100, 200) +// fprounding mode is special since it is not mentioned beyond 1.0 +OPENCLEXT_INTERNAL(cl_khr_select_fprounding_mode, 100, 110) +OPENCLEXT_INTERNAL(cl_khr_byte_addressable_store, 100, 110) +OPENCLEXT_INTERNAL(cl_khr_fp16, 100, ~0U) +OPENCLEXT_INTERNAL(cl_khr_fp64, 100, 120) +OPENCLEXT_INTERNAL(cl_khr_global_int32_base_atomics, 100, 110) +OPENCLEXT_INTERNAL(cl_khr_global_int32_extended_atomics, 100, 110) +OPENCLEXT_INTERNAL(cl_khr_local_int32_base_atomics, 100, 110) +OPENCLEXT_INTERNAL(cl_khr_local_int32_extended_atomics, 100, 110) +OPENCLEXT_INTERNAL(cl_khr_int64_base_atomics, 100, ~0U) +OPENCLEXT_INTERNAL(cl_khr_int64_extended_atomics, 100, ~0U) +OPENCLEXT_INTERNAL(cl_khr_gl_sharing, 100, ~0U) +OPENCLEXT_INTERNAL(cl_khr_icd, 100, ~0U) + +// OpenCL 1.1. +OPENCLEXT_INTERNAL(cl_khr_gl_event, 110, ~0U) +OPENCLEXT_INTERNAL(cl_khr_d3d10_sharing, 110, ~0U) + +// EMBEDDED_PROFILE +OPENCLEXT_INTERNAL(cles_khr_int64, 110, ~0U) + +// OpenCL 1.2. +OPENCLEXT_INTERNAL(cl_khr_context_abort, 120, ~0U) +OPENCLEXT_INTERNAL(cl_khr_d3d11_sharing, 120, ~0U) +OPENCLEXT_INTERNAL(cl_khr_depth_images, 120, ~0U) +OPENCLEXT_INTERNAL(cl_khr_dx9_media_sharing, 120, ~0U) +OPENCLEXT_INTERNAL(cl_khr_image2d_from_buffer, 120, ~0U) +OPENCLEXT_INTERNAL(cl_khr_initialize_memory, 120, ~0U) +OPENCLEXT_INTERNAL(cl_khr_gl_depth_images, 120, ~0U) +OPENCLEXT_INTERNAL(cl_khr_gl_msaa_sharing, 120, ~0U) +OPENCLEXT_INTERNAL(cl_khr_spir, 120, ~0U) + +// OpenCL 2.0. +OPENCLEXT_INTERNAL(cl_khr_egl_event, 200, ~0U) +OPENCLEXT_INTERNAL(cl_khr_egl_image, 200, ~0U) +OPENCLEXT_INTERNAL(cl_khr_mipmap_image, 200, ~0U) +OPENCLEXT_INTERNAL(cl_khr_srgb_image_writes, 200, ~0U) +OPENCLEXT_INTERNAL(cl_khr_subgroups, 200, ~0U) +OPENCLEXT_INTERNAL(cl_khr_terminate_context, 200, ~0U) + +// Clang Extensions. +OPENCLEXT_INTERNAL(cl_clang_storage_class_specifiers, 100, ~0U) + +// AMD OpenCL extensions +OPENCLEXT_INTERNAL(cl_amd_media_ops, 100, ~0U) +OPENCLEXT_INTERNAL(cl_amd_media_ops2, 100, ~0U) + +// Intel OpenCL extensions +OPENCLEXT_INTERNAL(cl_intel_subgroups, 120, ~0U) +OPENCLEXT_INTERNAL(cl_intel_subgroups_short, 120, ~0U) +OPENCLEXT_INTERNAL(cl_intel_device_side_avc_motion_estimation, 120, ~0U) + +#undef OPENCLEXT_INTERNAL + +#ifdef OPENCLEXT +#undef OPENCLEXT +#endif diff --git a/clang-r353983/include/clang/Basic/OpenCLImageTypes.def b/clang-r353983/include/clang/Basic/OpenCLImageTypes.def new file mode 100644 index 00000000..cfb018a6 --- /dev/null +++ b/clang-r353983/include/clang/Basic/OpenCLImageTypes.def @@ -0,0 +1,87 @@ +//===-- OpenCLImageTypes.def - Metadata about BuiltinTypes ------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// This file extends builtin types database with OpenCL image singleton types. +// Custom code should define one of those three macros: +// GENERIC_IMAGE_TYPE(Type, Id) - a generic image with its Id without an +// access type +// IMAGE_TYPE(Type, Id, SingletonId, AccessType, CGSuffix) - an image type +// with given ID, singleton ID access type and a codegen suffix +// GENERIC_IMAGE_TYPE_EXT(Type, Id, Ext) - a generic image with its Id and +// required extension without an access type + +#ifdef GENERIC_IMAGE_TYPE + +#define IMAGE_READ_TYPE(Type, Id, Ext) GENERIC_IMAGE_TYPE(Type, Id) +#define IMAGE_WRITE_TYPE(Type, Id, Ext) +#define IMAGE_READ_WRITE_TYPE(Type, Id, Ext) + +#elif defined(GENERIC_IMAGE_TYPE_EXT) +#define IMAGE_READ_TYPE(Type, Id, Ext) GENERIC_IMAGE_TYPE_EXT(Type, Id##ROTy, Ext) +#define IMAGE_WRITE_TYPE(Type, Id, Ext) GENERIC_IMAGE_TYPE_EXT(Type, Id##WOTy, Ext) +#define IMAGE_READ_WRITE_TYPE(Type, Id, Ext) GENERIC_IMAGE_TYPE_EXT(Type, Id##RWTy, Ext) + +#else +#ifndef IMAGE_READ_TYPE +#define IMAGE_READ_TYPE(Type, Id, Ext) \ + IMAGE_TYPE(Type, Id##RO, Id##ROTy, read_only, ro) +#endif +#ifndef IMAGE_WRITE_TYPE +#define IMAGE_WRITE_TYPE(Type, Id, Ext) \ + IMAGE_TYPE(Type, Id##WO, Id##WOTy, write_only, wo) +#endif +#ifndef IMAGE_READ_WRITE_TYPE +#define IMAGE_READ_WRITE_TYPE(Type, Id, Ext) \ + IMAGE_TYPE(Type, Id##RW, Id##RWTy, read_write, rw) +#endif + +#endif + +IMAGE_READ_TYPE(image1d, OCLImage1d, "") +IMAGE_READ_TYPE(image1d_array, OCLImage1dArray, "") +IMAGE_READ_TYPE(image1d_buffer, OCLImage1dBuffer, "") +IMAGE_READ_TYPE(image2d, OCLImage2d, "") +IMAGE_READ_TYPE(image2d_array, OCLImage2dArray, "") +IMAGE_READ_TYPE(image2d_depth, OCLImage2dDepth, "") +IMAGE_READ_TYPE(image2d_array_depth, OCLImage2dArrayDepth, "") +IMAGE_READ_TYPE(image2d_msaa, OCLImage2dMSAA, "cl_khr_gl_msaa_sharing") +IMAGE_READ_TYPE(image2d_array_msaa, OCLImage2dArrayMSAA, "cl_khr_gl_msaa_sharing") +IMAGE_READ_TYPE(image2d_msaa_depth, OCLImage2dMSAADepth, "cl_khr_gl_msaa_sharing") +IMAGE_READ_TYPE(image2d_array_msaa_depth, OCLImage2dArrayMSAADepth, "cl_khr_gl_msaa_sharing") +IMAGE_READ_TYPE(image3d, OCLImage3d, "") + +IMAGE_WRITE_TYPE(image1d, OCLImage1d, "") +IMAGE_WRITE_TYPE(image1d_array, OCLImage1dArray, "") +IMAGE_WRITE_TYPE(image1d_buffer, OCLImage1dBuffer, "") +IMAGE_WRITE_TYPE(image2d, OCLImage2d, "") +IMAGE_WRITE_TYPE(image2d_array, OCLImage2dArray, "") +IMAGE_WRITE_TYPE(image2d_depth, OCLImage2dDepth, "") +IMAGE_WRITE_TYPE(image2d_array_depth, OCLImage2dArrayDepth, "") +IMAGE_WRITE_TYPE(image2d_msaa, OCLImage2dMSAA, "cl_khr_gl_msaa_sharing") +IMAGE_WRITE_TYPE(image2d_array_msaa, OCLImage2dArrayMSAA, "cl_khr_gl_msaa_sharing") +IMAGE_WRITE_TYPE(image2d_msaa_depth, OCLImage2dMSAADepth, "cl_khr_gl_msaa_sharing") +IMAGE_WRITE_TYPE(image2d_array_msaa_depth, OCLImage2dArrayMSAADepth, "cl_khr_gl_msaa_sharing") +IMAGE_WRITE_TYPE(image3d, OCLImage3d, "cl_khr_3d_image_writes") + +IMAGE_READ_WRITE_TYPE(image1d, OCLImage1d, "") +IMAGE_READ_WRITE_TYPE(image1d_array, OCLImage1dArray, "") +IMAGE_READ_WRITE_TYPE(image1d_buffer, OCLImage1dBuffer, "") +IMAGE_READ_WRITE_TYPE(image2d, OCLImage2d, "") +IMAGE_READ_WRITE_TYPE(image2d_array, OCLImage2dArray, "") +IMAGE_READ_WRITE_TYPE(image2d_depth, OCLImage2dDepth, "") +IMAGE_READ_WRITE_TYPE(image2d_array_depth, OCLImage2dArrayDepth, "") +IMAGE_READ_WRITE_TYPE(image2d_msaa, OCLImage2dMSAA, "cl_khr_gl_msaa_sharing") +IMAGE_READ_WRITE_TYPE(image2d_array_msaa, OCLImage2dArrayMSAA, "cl_khr_gl_msaa_sharing") +IMAGE_READ_WRITE_TYPE(image2d_msaa_depth, OCLImage2dMSAADepth, "cl_khr_gl_msaa_sharing") +IMAGE_READ_WRITE_TYPE(image2d_array_msaa_depth, OCLImage2dArrayMSAADepth, "cl_khr_gl_msaa_sharing") +IMAGE_READ_WRITE_TYPE(image3d, OCLImage3d, "") + +#undef IMAGE_TYPE +#undef GENERIC_IMAGE_TYPE +#undef IMAGE_READ_TYPE +#undef IMAGE_WRITE_TYPE +#undef IMAGE_READ_WRITE_TYPE diff --git a/clang-r353983/include/clang/Basic/OpenCLOptions.h b/clang-r353983/include/clang/Basic/OpenCLOptions.h new file mode 100644 index 00000000..47310da1 --- /dev/null +++ b/clang-r353983/include/clang/Basic/OpenCLOptions.h @@ -0,0 +1,142 @@ +//===--- OpenCLOptions.h ----------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the clang::OpenCLOptions class. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_OPENCLOPTIONS_H +#define LLVM_CLANG_BASIC_OPENCLOPTIONS_H + +#include "clang/Basic/LangOptions.h" +#include "llvm/ADT/StringMap.h" + +namespace clang { + +/// OpenCL supported extensions and optional core features +class OpenCLOptions { + struct Info { + bool Supported; // Is this option supported + bool Enabled; // Is this option enabled + unsigned Avail; // Option starts to be available in this OpenCL version + unsigned Core; // Option becomes (optional) core feature in this OpenCL + // version + Info(bool S = false, bool E = false, unsigned A = 100, unsigned C = ~0U) + :Supported(S), Enabled(E), Avail(A), Core(C){} + }; + llvm::StringMap<Info> OptMap; +public: + bool isKnown(llvm::StringRef Ext) const { + return OptMap.find(Ext) != OptMap.end(); + } + + bool isEnabled(llvm::StringRef Ext) const { + return OptMap.find(Ext)->second.Enabled; + } + + // Is supported as either an extension or an (optional) core feature for + // OpenCL version \p CLVer. + bool isSupported(llvm::StringRef Ext, LangOptions LO) const { + // In C++ mode all extensions should work at least as in v2.0. + auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion; + auto I = OptMap.find(Ext)->getValue(); + return I.Supported && I.Avail <= CLVer; + } + + // Is supported (optional) OpenCL core features for OpenCL version \p CLVer. + // For supported extension, return false. + bool isSupportedCore(llvm::StringRef Ext, LangOptions LO) const { + // In C++ mode all extensions should work at least as in v2.0. + auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion; + auto I = OptMap.find(Ext)->getValue(); + return I.Supported && I.Avail <= CLVer && I.Core != ~0U && CLVer >= I.Core; + } + + // Is supported OpenCL extension for OpenCL version \p CLVer. + // For supported (optional) core feature, return false. + bool isSupportedExtension(llvm::StringRef Ext, LangOptions LO) const { + // In C++ mode all extensions should work at least as in v2.0. + auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion; + auto I = OptMap.find(Ext)->getValue(); + return I.Supported && I.Avail <= CLVer && (I.Core == ~0U || CLVer < I.Core); + } + + void enable(llvm::StringRef Ext, bool V = true) { + OptMap[Ext].Enabled = V; + } + + /// Enable or disable support for OpenCL extensions + /// \param Ext name of the extension optionally prefixed with + /// '+' or '-' + /// \param V used when \p Ext is not prefixed by '+' or '-' + void support(llvm::StringRef Ext, bool V = true) { + assert(!Ext.empty() && "Extension is empty."); + + switch (Ext[0]) { + case '+': + V = true; + Ext = Ext.drop_front(); + break; + case '-': + V = false; + Ext = Ext.drop_front(); + break; + } + + if (Ext.equals("all")) { + supportAll(V); + return; + } + OptMap[Ext].Supported = V; + } + + OpenCLOptions(){ +#define OPENCLEXT_INTERNAL(Ext, AvailVer, CoreVer) \ + OptMap[#Ext].Avail = AvailVer; \ + OptMap[#Ext].Core = CoreVer; +#include "clang/Basic/OpenCLExtensions.def" + } + + void addSupport(const OpenCLOptions &Opts) { + for (auto &I:Opts.OptMap) + if (I.second.Supported) + OptMap[I.getKey()].Supported = true; + } + + void copy(const OpenCLOptions &Opts) { + OptMap = Opts.OptMap; + } + + // Turn on or off support of all options. + void supportAll(bool On = true) { + for (llvm::StringMap<Info>::iterator I = OptMap.begin(), + E = OptMap.end(); I != E; ++I) + I->second.Supported = On; + } + + void disableAll() { + for (llvm::StringMap<Info>::iterator I = OptMap.begin(), + E = OptMap.end(); I != E; ++I) + I->second.Enabled = false; + } + + void enableSupportedCore(LangOptions LO) { + for (llvm::StringMap<Info>::iterator I = OptMap.begin(), E = OptMap.end(); + I != E; ++I) + if (isSupportedCore(I->getKey(), LO)) + I->second.Enabled = true; + } + + friend class ASTWriter; + friend class ASTReader; +}; + +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/OpenMPKinds.def b/clang-r353983/include/clang/Basic/OpenMPKinds.def new file mode 100644 index 00000000..ecb2c8d1 --- /dev/null +++ b/clang-r353983/include/clang/Basic/OpenMPKinds.def @@ -0,0 +1,954 @@ +//===--- OpenMPKinds.def - OpenMP directives and clauses list ---*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// \file +/// This file defines the list of supported OpenMP directives and +/// clauses. +/// +//===----------------------------------------------------------------------===// + +#ifndef OPENMP_DIRECTIVE +# define OPENMP_DIRECTIVE(Name) +#endif +#ifndef OPENMP_DIRECTIVE_EXT +#define OPENMP_DIRECTIVE_EXT(Name, Str) +#endif +#ifndef OPENMP_CLAUSE +# define OPENMP_CLAUSE(Name, Class) +#endif +#ifndef OPENMP_PARALLEL_CLAUSE +# define OPENMP_PARALLEL_CLAUSE(Name) +#endif +#ifndef OPENMP_SIMD_CLAUSE +# define OPENMP_SIMD_CLAUSE(Name) +#endif +#ifndef OPENMP_FOR_CLAUSE +# define OPENMP_FOR_CLAUSE(Name) +#endif +#ifndef OPENMP_FOR_SIMD_CLAUSE +# define OPENMP_FOR_SIMD_CLAUSE(Name) +#endif +#ifndef OPENMP_SECTIONS_CLAUSE +# define OPENMP_SECTIONS_CLAUSE(Name) +#endif +#ifndef OPENMP_SINGLE_CLAUSE +# define OPENMP_SINGLE_CLAUSE(Name) +#endif +#ifndef OPENMP_PARALLEL_FOR_CLAUSE +# define OPENMP_PARALLEL_FOR_CLAUSE(Name) +#endif +#ifndef OPENMP_PARALLEL_FOR_SIMD_CLAUSE +# define OPENMP_PARALLEL_FOR_SIMD_CLAUSE(Name) +#endif +#ifndef OPENMP_PARALLEL_SECTIONS_CLAUSE +# define OPENMP_PARALLEL_SECTIONS_CLAUSE(Name) +#endif +#ifndef OPENMP_TASK_CLAUSE +# define OPENMP_TASK_CLAUSE(Name) +#endif +#ifndef OPENMP_ATOMIC_CLAUSE +# define OPENMP_ATOMIC_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_CLAUSE +# define OPENMP_TARGET_CLAUSE(Name) +#endif +#ifndef OPENMP_REQUIRES_CLAUSE +# define OPENMP_REQUIRES_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_DATA_CLAUSE +# define OPENMP_TARGET_DATA_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_ENTER_DATA_CLAUSE +#define OPENMP_TARGET_ENTER_DATA_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_EXIT_DATA_CLAUSE +#define OPENMP_TARGET_EXIT_DATA_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_PARALLEL_CLAUSE +# define OPENMP_TARGET_PARALLEL_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_PARALLEL_FOR_CLAUSE +# define OPENMP_TARGET_PARALLEL_FOR_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_UPDATE_CLAUSE +# define OPENMP_TARGET_UPDATE_CLAUSE(Name) +#endif +#ifndef OPENMP_TEAMS_CLAUSE +# define OPENMP_TEAMS_CLAUSE(Name) +#endif +#ifndef OPENMP_CANCEL_CLAUSE +# define OPENMP_CANCEL_CLAUSE(Name) +#endif +#ifndef OPENMP_ORDERED_CLAUSE +# define OPENMP_ORDERED_CLAUSE(Name) +#endif +#ifndef OPENMP_TASKLOOP_CLAUSE +# define OPENMP_TASKLOOP_CLAUSE(Name) +#endif +#ifndef OPENMP_TASKLOOP_SIMD_CLAUSE +# define OPENMP_TASKLOOP_SIMD_CLAUSE(Name) +#endif +#ifndef OPENMP_CRITICAL_CLAUSE +# define OPENMP_CRITICAL_CLAUSE(Name) +#endif +#ifndef OPENMP_DISTRIBUTE_CLAUSE +#define OPENMP_DISTRIBUTE_CLAUSE(Name) +#endif +#ifndef OPENMP_DEFAULT_KIND +# define OPENMP_DEFAULT_KIND(Name) +#endif +#ifndef OPENMP_PROC_BIND_KIND +# define OPENMP_PROC_BIND_KIND(Name) +#endif +#ifndef OPENMP_SCHEDULE_KIND +#define OPENMP_SCHEDULE_KIND(Name) +#endif +#ifndef OPENMP_SCHEDULE_MODIFIER +#define OPENMP_SCHEDULE_MODIFIER(Name) +#endif +#ifndef OPENMP_DEPEND_KIND +#define OPENMP_DEPEND_KIND(Name) +#endif +#ifndef OPENMP_LINEAR_KIND +#define OPENMP_LINEAR_KIND(Name) +#endif +#ifndef OPENMP_MAP_KIND +#define OPENMP_MAP_KIND(Name) +#endif +#ifndef OPENMP_MAP_MODIFIER_KIND +#define OPENMP_MAP_MODIFIER_KIND(Name) +#endif +#ifndef OPENMP_DIST_SCHEDULE_KIND +#define OPENMP_DIST_SCHEDULE_KIND(Name) +#endif +#ifndef OPENMP_DEFAULTMAP_KIND +#define OPENMP_DEFAULTMAP_KIND(Name) +#endif +#ifndef OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND +#define OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(Name) +#endif +#ifndef OPENMP_DEFAULTMAP_MODIFIER +#define OPENMP_DEFAULTMAP_MODIFIER(Name) +#endif +#ifndef OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE +#define OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(Name) +#endif +#ifndef OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE +#define OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(Name) +#endif +#ifndef OPENMP_DISTRIBUTE_SIMD_CLAUSE +#define OPENMP_DISTRIBUTE_SIMD_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE +#define OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_SIMD_CLAUSE +#define OPENMP_TARGET_SIMD_CLAUSE(Name) +#endif +#ifndef OPENMP_TEAMS_DISTRIBUTE_CLAUSE +#define OPENMP_TEAMS_DISTRIBUTE_CLAUSE(Name) +#endif +#ifndef OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE +#define OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(Name) +#endif +#ifndef OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE +#define OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(Name) +#endif +#ifndef OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE +#define OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_TEAMS_CLAUSE +#define OPENMP_TARGET_TEAMS_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE +#define OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE +#define OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE +#define OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(Name) +#endif +#ifndef OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE +#define OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(Name) +#endif +#ifndef OPENMP_TASKGROUP_CLAUSE +#define OPENMP_TASKGROUP_CLAUSE(Name) +#endif +#ifndef OPENMP_DECLARE_MAPPER_CLAUSE +#define OPENMP_DECLARE_MAPPER_CLAUSE(Name) +#endif + +// OpenMP directives. +OPENMP_DIRECTIVE(threadprivate) +OPENMP_DIRECTIVE(parallel) +OPENMP_DIRECTIVE(task) +OPENMP_DIRECTIVE(simd) +OPENMP_DIRECTIVE(for) +OPENMP_DIRECTIVE(sections) +OPENMP_DIRECTIVE(section) +OPENMP_DIRECTIVE(single) +OPENMP_DIRECTIVE(master) +OPENMP_DIRECTIVE(critical) +OPENMP_DIRECTIVE(taskyield) +OPENMP_DIRECTIVE(barrier) +OPENMP_DIRECTIVE(taskwait) +OPENMP_DIRECTIVE(taskgroup) +OPENMP_DIRECTIVE(flush) +OPENMP_DIRECTIVE(ordered) +OPENMP_DIRECTIVE(atomic) +OPENMP_DIRECTIVE(target) +OPENMP_DIRECTIVE(teams) +OPENMP_DIRECTIVE(cancel) +OPENMP_DIRECTIVE(requires) +OPENMP_DIRECTIVE_EXT(target_data, "target data") +OPENMP_DIRECTIVE_EXT(target_enter_data, "target enter data") +OPENMP_DIRECTIVE_EXT(target_exit_data, "target exit data") +OPENMP_DIRECTIVE_EXT(target_parallel, "target parallel") +OPENMP_DIRECTIVE_EXT(target_parallel_for, "target parallel for") +OPENMP_DIRECTIVE_EXT(target_update, "target update") +OPENMP_DIRECTIVE_EXT(parallel_for, "parallel for") +OPENMP_DIRECTIVE_EXT(parallel_for_simd, "parallel for simd") +OPENMP_DIRECTIVE_EXT(parallel_sections, "parallel sections") +OPENMP_DIRECTIVE_EXT(for_simd, "for simd") +OPENMP_DIRECTIVE_EXT(cancellation_point, "cancellation point") +OPENMP_DIRECTIVE_EXT(declare_reduction, "declare reduction") +OPENMP_DIRECTIVE_EXT(declare_mapper, "declare mapper") +OPENMP_DIRECTIVE_EXT(declare_simd, "declare simd") +OPENMP_DIRECTIVE(taskloop) +OPENMP_DIRECTIVE_EXT(taskloop_simd, "taskloop simd") +OPENMP_DIRECTIVE(distribute) +OPENMP_DIRECTIVE_EXT(declare_target, "declare target") +OPENMP_DIRECTIVE_EXT(end_declare_target, "end declare target") +OPENMP_DIRECTIVE_EXT(distribute_parallel_for, "distribute parallel for") +OPENMP_DIRECTIVE_EXT(distribute_parallel_for_simd, "distribute parallel for simd") +OPENMP_DIRECTIVE_EXT(distribute_simd, "distribute simd") +OPENMP_DIRECTIVE_EXT(target_parallel_for_simd, "target parallel for simd") +OPENMP_DIRECTIVE_EXT(target_simd, "target simd") +OPENMP_DIRECTIVE_EXT(teams_distribute, "teams distribute") +OPENMP_DIRECTIVE_EXT(teams_distribute_simd, "teams distribute simd") +OPENMP_DIRECTIVE_EXT(teams_distribute_parallel_for_simd, "teams distribute parallel for simd") +OPENMP_DIRECTIVE_EXT(teams_distribute_parallel_for, "teams distribute parallel for") +OPENMP_DIRECTIVE_EXT(target_teams, "target teams") +OPENMP_DIRECTIVE_EXT(target_teams_distribute, "target teams distribute") +OPENMP_DIRECTIVE_EXT(target_teams_distribute_parallel_for, "target teams distribute parallel for") +OPENMP_DIRECTIVE_EXT(target_teams_distribute_parallel_for_simd, "target teams distribute parallel for simd") +OPENMP_DIRECTIVE_EXT(target_teams_distribute_simd, "target teams distribute simd") + +// OpenMP clauses. +OPENMP_CLAUSE(if, OMPIfClause) +OPENMP_CLAUSE(final, OMPFinalClause) +OPENMP_CLAUSE(num_threads, OMPNumThreadsClause) +OPENMP_CLAUSE(safelen, OMPSafelenClause) +OPENMP_CLAUSE(simdlen, OMPSimdlenClause) +OPENMP_CLAUSE(collapse, OMPCollapseClause) +OPENMP_CLAUSE(default, OMPDefaultClause) +OPENMP_CLAUSE(private, OMPPrivateClause) +OPENMP_CLAUSE(firstprivate, OMPFirstprivateClause) +OPENMP_CLAUSE(lastprivate, OMPLastprivateClause) +OPENMP_CLAUSE(shared, OMPSharedClause) +OPENMP_CLAUSE(reduction, OMPReductionClause) +OPENMP_CLAUSE(linear, OMPLinearClause) +OPENMP_CLAUSE(aligned, OMPAlignedClause) +OPENMP_CLAUSE(copyin, OMPCopyinClause) +OPENMP_CLAUSE(copyprivate, OMPCopyprivateClause) +OPENMP_CLAUSE(proc_bind, OMPProcBindClause) +OPENMP_CLAUSE(schedule, OMPScheduleClause) +OPENMP_CLAUSE(ordered, OMPOrderedClause) +OPENMP_CLAUSE(nowait, OMPNowaitClause) +OPENMP_CLAUSE(untied, OMPUntiedClause) +OPENMP_CLAUSE(mergeable, OMPMergeableClause) +OPENMP_CLAUSE(read, OMPReadClause) +OPENMP_CLAUSE(write, OMPWriteClause) +OPENMP_CLAUSE(update, OMPUpdateClause) +OPENMP_CLAUSE(capture, OMPCaptureClause) +OPENMP_CLAUSE(seq_cst, OMPSeqCstClause) +OPENMP_CLAUSE(depend, OMPDependClause) +OPENMP_CLAUSE(device, OMPDeviceClause) +OPENMP_CLAUSE(threads, OMPThreadsClause) +OPENMP_CLAUSE(simd, OMPSIMDClause) +OPENMP_CLAUSE(map, OMPMapClause) +OPENMP_CLAUSE(num_teams, OMPNumTeamsClause) +OPENMP_CLAUSE(thread_limit, OMPThreadLimitClause) +OPENMP_CLAUSE(priority, OMPPriorityClause) +OPENMP_CLAUSE(grainsize, OMPGrainsizeClause) +OPENMP_CLAUSE(nogroup, OMPNogroupClause) +OPENMP_CLAUSE(num_tasks, OMPNumTasksClause) +OPENMP_CLAUSE(hint, OMPHintClause) +OPENMP_CLAUSE(dist_schedule, OMPDistScheduleClause) +OPENMP_CLAUSE(defaultmap, OMPDefaultmapClause) +OPENMP_CLAUSE(to, OMPToClause) +OPENMP_CLAUSE(from, OMPFromClause) +OPENMP_CLAUSE(use_device_ptr, OMPUseDevicePtrClause) +OPENMP_CLAUSE(is_device_ptr, OMPIsDevicePtrClause) +OPENMP_CLAUSE(task_reduction, OMPTaskReductionClause) +OPENMP_CLAUSE(in_reduction, OMPInReductionClause) +OPENMP_CLAUSE(unified_address, OMPUnifiedAddressClause) +OPENMP_CLAUSE(unified_shared_memory, OMPUnifiedSharedMemoryClause) +OPENMP_CLAUSE(reverse_offload, OMPReverseOffloadClause) +OPENMP_CLAUSE(dynamic_allocators, OMPDynamicAllocatorsClause) +OPENMP_CLAUSE(atomic_default_mem_order, OMPAtomicDefaultMemOrderClause) + +// Clauses allowed for OpenMP directive 'parallel'. +OPENMP_PARALLEL_CLAUSE(if) +OPENMP_PARALLEL_CLAUSE(num_threads) +OPENMP_PARALLEL_CLAUSE(default) +OPENMP_PARALLEL_CLAUSE(proc_bind) +OPENMP_PARALLEL_CLAUSE(private) +OPENMP_PARALLEL_CLAUSE(firstprivate) +OPENMP_PARALLEL_CLAUSE(shared) +OPENMP_PARALLEL_CLAUSE(reduction) +OPENMP_PARALLEL_CLAUSE(copyin) + +// Clauses allowed for directive 'omp simd'. +OPENMP_SIMD_CLAUSE(private) +OPENMP_SIMD_CLAUSE(lastprivate) +OPENMP_SIMD_CLAUSE(linear) +OPENMP_SIMD_CLAUSE(aligned) +OPENMP_SIMD_CLAUSE(safelen) +OPENMP_SIMD_CLAUSE(simdlen) +OPENMP_SIMD_CLAUSE(collapse) +OPENMP_SIMD_CLAUSE(reduction) + +// Clauses allowed for directive 'omp for'. +OPENMP_FOR_CLAUSE(private) +OPENMP_FOR_CLAUSE(lastprivate) +OPENMP_FOR_CLAUSE(firstprivate) +OPENMP_FOR_CLAUSE(reduction) +OPENMP_FOR_CLAUSE(collapse) +OPENMP_FOR_CLAUSE(schedule) +OPENMP_FOR_CLAUSE(ordered) +OPENMP_FOR_CLAUSE(nowait) +OPENMP_FOR_CLAUSE(linear) + +// Clauses allowed for directive 'omp for simd'. +OPENMP_FOR_SIMD_CLAUSE(private) +OPENMP_FOR_SIMD_CLAUSE(firstprivate) +OPENMP_FOR_SIMD_CLAUSE(lastprivate) +OPENMP_FOR_SIMD_CLAUSE(reduction) +OPENMP_FOR_SIMD_CLAUSE(schedule) +OPENMP_FOR_SIMD_CLAUSE(collapse) +OPENMP_FOR_SIMD_CLAUSE(nowait) +OPENMP_FOR_SIMD_CLAUSE(safelen) +OPENMP_FOR_SIMD_CLAUSE(simdlen) +OPENMP_FOR_SIMD_CLAUSE(linear) +OPENMP_FOR_SIMD_CLAUSE(aligned) +OPENMP_FOR_SIMD_CLAUSE(ordered) + +// Clauses allowed for OpenMP directive 'omp sections'. +OPENMP_SECTIONS_CLAUSE(private) +OPENMP_SECTIONS_CLAUSE(lastprivate) +OPENMP_SECTIONS_CLAUSE(firstprivate) +OPENMP_SECTIONS_CLAUSE(reduction) +OPENMP_SECTIONS_CLAUSE(nowait) + +// Clauses allowed for directive 'omp single'. +OPENMP_SINGLE_CLAUSE(private) +OPENMP_SINGLE_CLAUSE(firstprivate) +OPENMP_SINGLE_CLAUSE(copyprivate) +OPENMP_SINGLE_CLAUSE(nowait) + +// Clauses allowed for OpenMP directive 'cancel'. +OPENMP_CANCEL_CLAUSE(if) + +// Static attributes for 'default' clause. +OPENMP_DEFAULT_KIND(none) +OPENMP_DEFAULT_KIND(shared) + +// Static attributes for 'proc_bind' clause. +OPENMP_PROC_BIND_KIND(master) +OPENMP_PROC_BIND_KIND(close) +OPENMP_PROC_BIND_KIND(spread) + +// Static attributes for 'schedule' clause. +OPENMP_SCHEDULE_KIND(static) +OPENMP_SCHEDULE_KIND(dynamic) +OPENMP_SCHEDULE_KIND(guided) +OPENMP_SCHEDULE_KIND(auto) +OPENMP_SCHEDULE_KIND(runtime) + +// Modifiers for 'schedule' clause. +OPENMP_SCHEDULE_MODIFIER(monotonic) +OPENMP_SCHEDULE_MODIFIER(nonmonotonic) +OPENMP_SCHEDULE_MODIFIER(simd) + +// Static attributes for 'defaultmap' clause. +OPENMP_DEFAULTMAP_KIND(scalar) + +// Modifiers for 'defaultmap' clause. +OPENMP_DEFAULTMAP_MODIFIER(tofrom) + +// Static attributes for 'depend' clause. +OPENMP_DEPEND_KIND(in) +OPENMP_DEPEND_KIND(out) +OPENMP_DEPEND_KIND(inout) +OPENMP_DEPEND_KIND(mutexinoutset) +OPENMP_DEPEND_KIND(source) +OPENMP_DEPEND_KIND(sink) + +// Modifiers for 'linear' clause. +OPENMP_LINEAR_KIND(val) +OPENMP_LINEAR_KIND(ref) +OPENMP_LINEAR_KIND(uval) + +// Clauses allowed for OpenMP directive 'parallel for'. +OPENMP_PARALLEL_FOR_CLAUSE(if) +OPENMP_PARALLEL_FOR_CLAUSE(num_threads) +OPENMP_PARALLEL_FOR_CLAUSE(default) +OPENMP_PARALLEL_FOR_CLAUSE(proc_bind) +OPENMP_PARALLEL_FOR_CLAUSE(private) +OPENMP_PARALLEL_FOR_CLAUSE(firstprivate) +OPENMP_PARALLEL_FOR_CLAUSE(shared) +OPENMP_PARALLEL_FOR_CLAUSE(reduction) +OPENMP_PARALLEL_FOR_CLAUSE(copyin) +OPENMP_PARALLEL_FOR_CLAUSE(lastprivate) +OPENMP_PARALLEL_FOR_CLAUSE(collapse) +OPENMP_PARALLEL_FOR_CLAUSE(schedule) +OPENMP_PARALLEL_FOR_CLAUSE(ordered) +OPENMP_PARALLEL_FOR_CLAUSE(linear) + +// Clauses allowed for OpenMP directive 'parallel for simd'. +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(if) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(num_threads) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(default) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(proc_bind) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(private) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(firstprivate) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(shared) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(reduction) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(copyin) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(lastprivate) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(collapse) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(schedule) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(safelen) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(simdlen) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(linear) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(aligned) +OPENMP_PARALLEL_FOR_SIMD_CLAUSE(ordered) + +// Clauses allowed for OpenMP directive 'parallel sections'. +OPENMP_PARALLEL_SECTIONS_CLAUSE(if) +OPENMP_PARALLEL_SECTIONS_CLAUSE(num_threads) +OPENMP_PARALLEL_SECTIONS_CLAUSE(default) +OPENMP_PARALLEL_SECTIONS_CLAUSE(proc_bind) +OPENMP_PARALLEL_SECTIONS_CLAUSE(private) +OPENMP_PARALLEL_SECTIONS_CLAUSE(firstprivate) +OPENMP_PARALLEL_SECTIONS_CLAUSE(shared) +OPENMP_PARALLEL_SECTIONS_CLAUSE(reduction) +OPENMP_PARALLEL_SECTIONS_CLAUSE(copyin) +OPENMP_PARALLEL_SECTIONS_CLAUSE(lastprivate) + +// Clauses allowed for OpenMP directive 'task'. +OPENMP_TASK_CLAUSE(if) +OPENMP_TASK_CLAUSE(final) +OPENMP_TASK_CLAUSE(default) +OPENMP_TASK_CLAUSE(private) +OPENMP_TASK_CLAUSE(firstprivate) +OPENMP_TASK_CLAUSE(shared) +OPENMP_TASK_CLAUSE(untied) +OPENMP_TASK_CLAUSE(mergeable) +OPENMP_TASK_CLAUSE(depend) +OPENMP_TASK_CLAUSE(priority) +OPENMP_TASK_CLAUSE(in_reduction) + +// Clauses allowed for OpenMP directive 'atomic'. +OPENMP_ATOMIC_CLAUSE(read) +OPENMP_ATOMIC_CLAUSE(write) +OPENMP_ATOMIC_CLAUSE(update) +OPENMP_ATOMIC_CLAUSE(capture) +OPENMP_ATOMIC_CLAUSE(seq_cst) + +// Clauses allowed for OpenMP directive 'target'. +OPENMP_TARGET_CLAUSE(if) +OPENMP_TARGET_CLAUSE(device) +OPENMP_TARGET_CLAUSE(map) +OPENMP_TARGET_CLAUSE(private) +OPENMP_TARGET_CLAUSE(nowait) +OPENMP_TARGET_CLAUSE(depend) +OPENMP_TARGET_CLAUSE(defaultmap) +OPENMP_TARGET_CLAUSE(firstprivate) +OPENMP_TARGET_CLAUSE(is_device_ptr) +OPENMP_TARGET_CLAUSE(reduction) + +// Clauses allowed for OpenMP directive 'requires'. +OPENMP_REQUIRES_CLAUSE(unified_address) +OPENMP_REQUIRES_CLAUSE(unified_shared_memory) +OPENMP_REQUIRES_CLAUSE(reverse_offload) +OPENMP_REQUIRES_CLAUSE(dynamic_allocators) +OPENMP_REQUIRES_CLAUSE(atomic_default_mem_order) + +// Modifiers for 'atomic_default_mem_order' clause. +OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(seq_cst) +OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(acq_rel) +OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(relaxed) + +// Clauses allowed for OpenMP directive 'target data'. +OPENMP_TARGET_DATA_CLAUSE(if) +OPENMP_TARGET_DATA_CLAUSE(device) +OPENMP_TARGET_DATA_CLAUSE(map) +OPENMP_TARGET_DATA_CLAUSE(use_device_ptr) + +// Clauses allowed for OpenMP directive 'target enter data'. +OPENMP_TARGET_ENTER_DATA_CLAUSE(if) +OPENMP_TARGET_ENTER_DATA_CLAUSE(device) +OPENMP_TARGET_ENTER_DATA_CLAUSE(map) +OPENMP_TARGET_ENTER_DATA_CLAUSE(nowait) +OPENMP_TARGET_ENTER_DATA_CLAUSE(depend) + +// Clauses allowed for OpenMP directive 'target exit data'. +OPENMP_TARGET_EXIT_DATA_CLAUSE(if) +OPENMP_TARGET_EXIT_DATA_CLAUSE(device) +OPENMP_TARGET_EXIT_DATA_CLAUSE(map) +OPENMP_TARGET_EXIT_DATA_CLAUSE(nowait) +OPENMP_TARGET_EXIT_DATA_CLAUSE(depend) + +// Clauses allowed for OpenMP directive 'target parallel'. +OPENMP_TARGET_PARALLEL_CLAUSE(if) +OPENMP_TARGET_PARALLEL_CLAUSE(device) +OPENMP_TARGET_PARALLEL_CLAUSE(map) +OPENMP_TARGET_PARALLEL_CLAUSE(private) +OPENMP_TARGET_PARALLEL_CLAUSE(firstprivate) +OPENMP_TARGET_PARALLEL_CLAUSE(nowait) +OPENMP_TARGET_PARALLEL_CLAUSE(depend) +OPENMP_TARGET_PARALLEL_CLAUSE(defaultmap) +OPENMP_TARGET_PARALLEL_CLAUSE(num_threads) +OPENMP_TARGET_PARALLEL_CLAUSE(default) +OPENMP_TARGET_PARALLEL_CLAUSE(proc_bind) +OPENMP_TARGET_PARALLEL_CLAUSE(shared) +OPENMP_TARGET_PARALLEL_CLAUSE(reduction) +OPENMP_TARGET_PARALLEL_CLAUSE(is_device_ptr) + +// Clauses allowed for OpenMP directive 'target parallel for'. +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(if) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(device) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(map) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(private) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(firstprivate) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(lastprivate) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(nowait) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(depend) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(defaultmap) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(num_threads) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(default) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(proc_bind) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(shared) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(reduction) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(collapse) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(schedule) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(ordered) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(linear) +OPENMP_TARGET_PARALLEL_FOR_CLAUSE(is_device_ptr) + +// Clauses allowed for OpenMP directive 'target update'. +OPENMP_TARGET_UPDATE_CLAUSE(if) +OPENMP_TARGET_UPDATE_CLAUSE(device) +OPENMP_TARGET_UPDATE_CLAUSE(to) +OPENMP_TARGET_UPDATE_CLAUSE(from) +OPENMP_TARGET_UPDATE_CLAUSE(nowait) +OPENMP_TARGET_UPDATE_CLAUSE(depend) + +// Clauses allowed for OpenMP directive 'teams'. +OPENMP_TEAMS_CLAUSE(default) +OPENMP_TEAMS_CLAUSE(private) +OPENMP_TEAMS_CLAUSE(firstprivate) +OPENMP_TEAMS_CLAUSE(shared) +OPENMP_TEAMS_CLAUSE(reduction) +OPENMP_TEAMS_CLAUSE(num_teams) +OPENMP_TEAMS_CLAUSE(thread_limit) + +// Clauses allowed for OpenMP directive 'ordered'. +OPENMP_ORDERED_CLAUSE(threads) +OPENMP_ORDERED_CLAUSE(simd) +OPENMP_ORDERED_CLAUSE(depend) + +// Map types for 'map' clause. +OPENMP_MAP_KIND(alloc) +OPENMP_MAP_KIND(to) +OPENMP_MAP_KIND(from) +OPENMP_MAP_KIND(tofrom) +OPENMP_MAP_KIND(delete) +OPENMP_MAP_KIND(release) + +// Map-type-modifiers for 'map' clause. +OPENMP_MAP_MODIFIER_KIND(always) +OPENMP_MAP_MODIFIER_KIND(close) + +// Clauses allowed for OpenMP directive 'taskloop'. +OPENMP_TASKLOOP_CLAUSE(if) +OPENMP_TASKLOOP_CLAUSE(shared) +OPENMP_TASKLOOP_CLAUSE(private) +OPENMP_TASKLOOP_CLAUSE(firstprivate) +OPENMP_TASKLOOP_CLAUSE(lastprivate) +OPENMP_TASKLOOP_CLAUSE(default) +OPENMP_TASKLOOP_CLAUSE(collapse) +OPENMP_TASKLOOP_CLAUSE(final) +OPENMP_TASKLOOP_CLAUSE(untied) +OPENMP_TASKLOOP_CLAUSE(mergeable) +OPENMP_TASKLOOP_CLAUSE(priority) +OPENMP_TASKLOOP_CLAUSE(grainsize) +OPENMP_TASKLOOP_CLAUSE(nogroup) +OPENMP_TASKLOOP_CLAUSE(num_tasks) +OPENMP_TASKLOOP_CLAUSE(reduction) +OPENMP_TASKLOOP_CLAUSE(in_reduction) + +// Clauses allowed for OpenMP directive 'taskloop simd'. +OPENMP_TASKLOOP_SIMD_CLAUSE(if) +OPENMP_TASKLOOP_SIMD_CLAUSE(shared) +OPENMP_TASKLOOP_SIMD_CLAUSE(private) +OPENMP_TASKLOOP_SIMD_CLAUSE(firstprivate) +OPENMP_TASKLOOP_SIMD_CLAUSE(lastprivate) +OPENMP_TASKLOOP_SIMD_CLAUSE(default) +OPENMP_TASKLOOP_SIMD_CLAUSE(collapse) +OPENMP_TASKLOOP_SIMD_CLAUSE(final) +OPENMP_TASKLOOP_SIMD_CLAUSE(untied) +OPENMP_TASKLOOP_SIMD_CLAUSE(mergeable) +OPENMP_TASKLOOP_SIMD_CLAUSE(priority) +OPENMP_TASKLOOP_SIMD_CLAUSE(linear) +OPENMP_TASKLOOP_SIMD_CLAUSE(aligned) +OPENMP_TASKLOOP_SIMD_CLAUSE(safelen) +OPENMP_TASKLOOP_SIMD_CLAUSE(simdlen) +OPENMP_TASKLOOP_SIMD_CLAUSE(grainsize) +OPENMP_TASKLOOP_SIMD_CLAUSE(nogroup) +OPENMP_TASKLOOP_SIMD_CLAUSE(num_tasks) +OPENMP_TASKLOOP_SIMD_CLAUSE(reduction) +OPENMP_TASKLOOP_SIMD_CLAUSE(in_reduction) + +// Clauses allowed for OpenMP directive 'critical'. +OPENMP_CRITICAL_CLAUSE(hint) + +// Clauses allowed for OpenMP directive 'distribute' +OPENMP_DISTRIBUTE_CLAUSE(private) +OPENMP_DISTRIBUTE_CLAUSE(firstprivate) +OPENMP_DISTRIBUTE_CLAUSE(lastprivate) +OPENMP_DISTRIBUTE_CLAUSE(collapse) +OPENMP_DISTRIBUTE_CLAUSE(dist_schedule) + +// Static attributes for 'dist_schedule' clause. +OPENMP_DIST_SCHEDULE_KIND(static) + +// Clauses allowed for OpenMP directive 'distribute parallel for' +OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(firstprivate) +OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(lastprivate) +OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(collapse) +OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(dist_schedule) +OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(if) +OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(num_threads) +OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(default) +OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(proc_bind) +OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(private) +OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(shared) +OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(reduction) +OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(copyin) +OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(schedule) + +// Clauses allowed for OpenMP directive 'distribute parallel for simd' +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(firstprivate) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(lastprivate) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(collapse) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(dist_schedule) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(if) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(num_threads) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(default) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(proc_bind) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(private) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(shared) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(reduction) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(copyin) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(schedule) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(linear) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(aligned) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(safelen) +OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(simdlen) + +// Clauses allowed for OpenMP directive 'distribute simd' +OPENMP_DISTRIBUTE_SIMD_CLAUSE(private) +OPENMP_DISTRIBUTE_SIMD_CLAUSE(firstprivate) +OPENMP_DISTRIBUTE_SIMD_CLAUSE(lastprivate) +OPENMP_DISTRIBUTE_SIMD_CLAUSE(collapse) +OPENMP_DISTRIBUTE_SIMD_CLAUSE(dist_schedule) +OPENMP_DISTRIBUTE_SIMD_CLAUSE(linear) +OPENMP_DISTRIBUTE_SIMD_CLAUSE(aligned) +OPENMP_DISTRIBUTE_SIMD_CLAUSE(safelen) +OPENMP_DISTRIBUTE_SIMD_CLAUSE(simdlen) +OPENMP_DISTRIBUTE_SIMD_CLAUSE(reduction) + +// Clauses allowed for OpenMP directive 'target parallel for simd'. +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(if) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(device) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(map) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(private) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(firstprivate) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(lastprivate) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(nowait) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(depend) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(defaultmap) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(num_threads) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(default) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(proc_bind) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(shared) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(reduction) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(collapse) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(schedule) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(ordered) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(linear) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(safelen) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(simdlen) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(aligned) +OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(is_device_ptr) + +// Clauses allowed for OpenMP directive 'target simd'. +OPENMP_TARGET_SIMD_CLAUSE(if) +OPENMP_TARGET_SIMD_CLAUSE(device) +OPENMP_TARGET_SIMD_CLAUSE(map) +OPENMP_TARGET_SIMD_CLAUSE(private) +OPENMP_TARGET_SIMD_CLAUSE(nowait) +OPENMP_TARGET_SIMD_CLAUSE(depend) +OPENMP_TARGET_SIMD_CLAUSE(defaultmap) +OPENMP_TARGET_SIMD_CLAUSE(firstprivate) +OPENMP_TARGET_SIMD_CLAUSE(is_device_ptr) +OPENMP_TARGET_SIMD_CLAUSE(lastprivate) +OPENMP_TARGET_SIMD_CLAUSE(linear) +OPENMP_TARGET_SIMD_CLAUSE(aligned) +OPENMP_TARGET_SIMD_CLAUSE(safelen) +OPENMP_TARGET_SIMD_CLAUSE(simdlen) +OPENMP_TARGET_SIMD_CLAUSE(collapse) +OPENMP_TARGET_SIMD_CLAUSE(reduction) + +// Clauses allowed for OpenMP directive 'teams distribute'. +OPENMP_TEAMS_DISTRIBUTE_CLAUSE(default) +OPENMP_TEAMS_DISTRIBUTE_CLAUSE(private) +OPENMP_TEAMS_DISTRIBUTE_CLAUSE(firstprivate) +OPENMP_TEAMS_DISTRIBUTE_CLAUSE(shared) +OPENMP_TEAMS_DISTRIBUTE_CLAUSE(reduction) +OPENMP_TEAMS_DISTRIBUTE_CLAUSE(num_teams) +OPENMP_TEAMS_DISTRIBUTE_CLAUSE(thread_limit) +OPENMP_TEAMS_DISTRIBUTE_CLAUSE(lastprivate) +OPENMP_TEAMS_DISTRIBUTE_CLAUSE(collapse) +OPENMP_TEAMS_DISTRIBUTE_CLAUSE(dist_schedule) + +// Clauses allowed for OpenMP directive 'teams distribute simd' +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(default) +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(private) +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(firstprivate) +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(shared) +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(reduction) +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(num_teams) +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(thread_limit) +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(lastprivate) +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(collapse) +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(dist_schedule) +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(linear) +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(aligned) +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(safelen) +OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(simdlen) + +// Clauses allowed for OpenMP directive 'teams distribute parallel for simd' +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(firstprivate) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(lastprivate) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(collapse) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(dist_schedule) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(if) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(num_threads) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(default) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(proc_bind) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(private) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(shared) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(reduction) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(schedule) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(linear) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(aligned) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(safelen) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(simdlen) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(num_teams) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(thread_limit) + +// Clauses allowed for OpenMP directive 'teams distribute parallel for' +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(firstprivate) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(lastprivate) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(collapse) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(dist_schedule) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(if) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(num_threads) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(default) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(proc_bind) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(private) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(shared) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(reduction) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(schedule) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(num_teams) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(thread_limit) +OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(copyin) + +// Clauses allowed for OpenMP directive 'target teams'. +OPENMP_TARGET_TEAMS_CLAUSE(if) +OPENMP_TARGET_TEAMS_CLAUSE(device) +OPENMP_TARGET_TEAMS_CLAUSE(map) +OPENMP_TARGET_TEAMS_CLAUSE(private) +OPENMP_TARGET_TEAMS_CLAUSE(nowait) +OPENMP_TARGET_TEAMS_CLAUSE(depend) +OPENMP_TARGET_TEAMS_CLAUSE(defaultmap) +OPENMP_TARGET_TEAMS_CLAUSE(firstprivate) +OPENMP_TARGET_TEAMS_CLAUSE(is_device_ptr) +OPENMP_TARGET_TEAMS_CLAUSE(default) +OPENMP_TARGET_TEAMS_CLAUSE(shared) +OPENMP_TARGET_TEAMS_CLAUSE(reduction) +OPENMP_TARGET_TEAMS_CLAUSE(num_teams) +OPENMP_TARGET_TEAMS_CLAUSE(thread_limit) + +// Clauses allowed for OpenMP directive 'target teams distribute'. +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(if) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(device) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(map) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(private) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(nowait) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(depend) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(defaultmap) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(firstprivate) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(is_device_ptr) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(default) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(shared) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(reduction) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(num_teams) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(thread_limit) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(lastprivate) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(collapse) +OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(dist_schedule) + +// Clauses allowed for OpenMP directive 'target teams distribute parallel for'. +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(if) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(device) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(map) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(private) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(nowait) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(depend) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(defaultmap) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(firstprivate) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(is_device_ptr) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(default) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(shared) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(reduction) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(num_teams) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(thread_limit) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(lastprivate) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(collapse) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(dist_schedule) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(num_threads) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(proc_bind) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(schedule) + +// Clauses allowed for OpenMP directive +// 'target teams distribute parallel for simd'. +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(if) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(device) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(map) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(private) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(nowait) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(depend) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(defaultmap) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(firstprivate) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(is_device_ptr) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(default) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(shared) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(reduction) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(num_teams) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(thread_limit) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(lastprivate) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(collapse) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(dist_schedule) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(num_threads) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(proc_bind) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(schedule) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(linear) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(aligned) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(safelen) +OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(simdlen) + +// Clauses allowed for OpenMP directive 'target teams distribute simd'. +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(if) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(device) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(map) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(private) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(nowait) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(depend) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(defaultmap) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(firstprivate) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(lastprivate) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(is_device_ptr) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(shared) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(reduction) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(num_teams) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(thread_limit) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(collapse) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(dist_schedule) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(linear) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(aligned) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(safelen) +OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(simdlen) + +// Clauses allowed for OpenMP directive 'taskgroup'. +OPENMP_TASKGROUP_CLAUSE(task_reduction) + +// Clauses allowed for OpenMP directive 'declare mapper'. +OPENMP_DECLARE_MAPPER_CLAUSE(map) + +#undef OPENMP_DECLARE_MAPPER_CLAUSE +#undef OPENMP_TASKGROUP_CLAUSE +#undef OPENMP_TASKLOOP_SIMD_CLAUSE +#undef OPENMP_TASKLOOP_CLAUSE +#undef OPENMP_LINEAR_KIND +#undef OPENMP_DEPEND_KIND +#undef OPENMP_SCHEDULE_MODIFIER +#undef OPENMP_SCHEDULE_KIND +#undef OPENMP_PROC_BIND_KIND +#undef OPENMP_DEFAULT_KIND +#undef OPENMP_DIRECTIVE +#undef OPENMP_DIRECTIVE_EXT +#undef OPENMP_CLAUSE +#undef OPENMP_CRITICAL_CLAUSE +#undef OPENMP_ORDERED_CLAUSE +#undef OPENMP_CANCEL_CLAUSE +#undef OPENMP_SINGLE_CLAUSE +#undef OPENMP_SECTIONS_CLAUSE +#undef OPENMP_PARALLEL_CLAUSE +#undef OPENMP_PARALLEL_FOR_CLAUSE +#undef OPENMP_PARALLEL_FOR_SIMD_CLAUSE +#undef OPENMP_PARALLEL_SECTIONS_CLAUSE +#undef OPENMP_TASK_CLAUSE +#undef OPENMP_ATOMIC_CLAUSE +#undef OPENMP_TARGET_CLAUSE +#undef OPENMP_REQUIRES_CLAUSE +#undef OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND +#undef OPENMP_TARGET_DATA_CLAUSE +#undef OPENMP_TARGET_ENTER_DATA_CLAUSE +#undef OPENMP_TARGET_EXIT_DATA_CLAUSE +#undef OPENMP_TARGET_PARALLEL_CLAUSE +#undef OPENMP_TARGET_PARALLEL_FOR_CLAUSE +#undef OPENMP_TEAMS_CLAUSE +#undef OPENMP_SIMD_CLAUSE +#undef OPENMP_FOR_CLAUSE +#undef OPENMP_FOR_SIMD_CLAUSE +#undef OPENMP_MAP_KIND +#undef OPENMP_MAP_MODIFIER_KIND +#undef OPENMP_DISTRIBUTE_CLAUSE +#undef OPENMP_DIST_SCHEDULE_KIND +#undef OPENMP_DEFAULTMAP_KIND +#undef OPENMP_DEFAULTMAP_MODIFIER +#undef OPENMP_TARGET_UPDATE_CLAUSE +#undef OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE +#undef OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE +#undef OPENMP_DISTRIBUTE_SIMD_CLAUSE +#undef OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE +#undef OPENMP_TARGET_SIMD_CLAUSE +#undef OPENMP_TEAMS_DISTRIBUTE_CLAUSE +#undef OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE +#undef OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE +#undef OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE +#undef OPENMP_TARGET_TEAMS_CLAUSE +#undef OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE +#undef OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE +#undef OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE +#undef OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE diff --git a/clang-r353983/include/clang/Basic/OpenMPKinds.h b/clang-r353983/include/clang/Basic/OpenMPKinds.h new file mode 100644 index 00000000..17e66a53 --- /dev/null +++ b/clang-r353983/include/clang/Basic/OpenMPKinds.h @@ -0,0 +1,262 @@ +//===--- OpenMPKinds.h - OpenMP enums ---------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines some OpenMP-specific enums and functions. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_OPENMPKINDS_H +#define LLVM_CLANG_BASIC_OPENMPKINDS_H + +#include "llvm/ADT/StringRef.h" + +namespace clang { + +/// OpenMP directives. +enum OpenMPDirectiveKind { +#define OPENMP_DIRECTIVE(Name) \ + OMPD_##Name, +#define OPENMP_DIRECTIVE_EXT(Name, Str) \ + OMPD_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPD_unknown +}; + +/// OpenMP clauses. +enum OpenMPClauseKind { +#define OPENMP_CLAUSE(Name, Class) \ + OMPC_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPC_flush, + OMPC_threadprivate, + OMPC_uniform, + OMPC_unknown +}; + +/// OpenMP attributes for 'default' clause. +enum OpenMPDefaultClauseKind { +#define OPENMP_DEFAULT_KIND(Name) \ + OMPC_DEFAULT_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPC_DEFAULT_unknown +}; + +/// OpenMP attributes for 'proc_bind' clause. +enum OpenMPProcBindClauseKind { +#define OPENMP_PROC_BIND_KIND(Name) \ + OMPC_PROC_BIND_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPC_PROC_BIND_unknown +}; + +/// OpenMP attributes for 'schedule' clause. +enum OpenMPScheduleClauseKind { +#define OPENMP_SCHEDULE_KIND(Name) \ + OMPC_SCHEDULE_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPC_SCHEDULE_unknown +}; + +/// OpenMP modifiers for 'schedule' clause. +enum OpenMPScheduleClauseModifier { + OMPC_SCHEDULE_MODIFIER_unknown = OMPC_SCHEDULE_unknown, +#define OPENMP_SCHEDULE_MODIFIER(Name) \ + OMPC_SCHEDULE_MODIFIER_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPC_SCHEDULE_MODIFIER_last +}; + +/// OpenMP attributes for 'depend' clause. +enum OpenMPDependClauseKind { +#define OPENMP_DEPEND_KIND(Name) \ + OMPC_DEPEND_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPC_DEPEND_unknown +}; + +/// OpenMP attributes for 'linear' clause. +enum OpenMPLinearClauseKind { +#define OPENMP_LINEAR_KIND(Name) \ + OMPC_LINEAR_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPC_LINEAR_unknown +}; + +/// OpenMP mapping kind for 'map' clause. +enum OpenMPMapClauseKind { +#define OPENMP_MAP_KIND(Name) \ + OMPC_MAP_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPC_MAP_unknown +}; + +/// OpenMP modifier kind for 'map' clause. +enum OpenMPMapModifierKind { + OMPC_MAP_MODIFIER_unknown = OMPC_MAP_unknown, +#define OPENMP_MAP_MODIFIER_KIND(Name) \ + OMPC_MAP_MODIFIER_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPC_MAP_MODIFIER_last +}; + +/// OpenMP attributes for 'dist_schedule' clause. +enum OpenMPDistScheduleClauseKind { +#define OPENMP_DIST_SCHEDULE_KIND(Name) OMPC_DIST_SCHEDULE_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPC_DIST_SCHEDULE_unknown +}; + +/// OpenMP attributes for 'defaultmap' clause. +enum OpenMPDefaultmapClauseKind { +#define OPENMP_DEFAULTMAP_KIND(Name) \ + OMPC_DEFAULTMAP_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPC_DEFAULTMAP_unknown +}; + +/// OpenMP modifiers for 'defaultmap' clause. +enum OpenMPDefaultmapClauseModifier { + OMPC_DEFAULTMAP_MODIFIER_unknown = OMPC_DEFAULTMAP_unknown, +#define OPENMP_DEFAULTMAP_MODIFIER(Name) \ + OMPC_DEFAULTMAP_MODIFIER_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPC_DEFAULTMAP_MODIFIER_last +}; + +/// OpenMP attributes for 'atomic_default_mem_order' clause. +enum OpenMPAtomicDefaultMemOrderClauseKind { +#define OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(Name) \ + OMPC_ATOMIC_DEFAULT_MEM_ORDER_##Name, +#include "clang/Basic/OpenMPKinds.def" + OMPC_ATOMIC_DEFAULT_MEM_ORDER_unknown +}; + +/// Scheduling data for loop-based OpenMP directives. +struct OpenMPScheduleTy final { + OpenMPScheduleClauseKind Schedule = OMPC_SCHEDULE_unknown; + OpenMPScheduleClauseModifier M1 = OMPC_SCHEDULE_MODIFIER_unknown; + OpenMPScheduleClauseModifier M2 = OMPC_SCHEDULE_MODIFIER_unknown; +}; + +OpenMPDirectiveKind getOpenMPDirectiveKind(llvm::StringRef Str); +const char *getOpenMPDirectiveName(OpenMPDirectiveKind Kind); + +OpenMPClauseKind getOpenMPClauseKind(llvm::StringRef Str); +const char *getOpenMPClauseName(OpenMPClauseKind Kind); + +unsigned getOpenMPSimpleClauseType(OpenMPClauseKind Kind, llvm::StringRef Str); +const char *getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, unsigned Type); + +bool isAllowedClauseForDirective(OpenMPDirectiveKind DKind, + OpenMPClauseKind CKind); + +/// Checks if the specified directive is a directive with an associated +/// loop construct. +/// \param DKind Specified directive. +/// \return true - the directive is a loop-associated directive like 'omp simd' +/// or 'omp for' directive, otherwise - false. +bool isOpenMPLoopDirective(OpenMPDirectiveKind DKind); + +/// Checks if the specified directive is a worksharing directive. +/// \param DKind Specified directive. +/// \return true - the directive is a worksharing directive like 'omp for', +/// otherwise - false. +bool isOpenMPWorksharingDirective(OpenMPDirectiveKind DKind); + +/// Checks if the specified directive is a taskloop directive. +/// \param DKind Specified directive. +/// \return true - the directive is a worksharing directive like 'omp taskloop', +/// otherwise - false. +bool isOpenMPTaskLoopDirective(OpenMPDirectiveKind DKind); + +/// Checks if the specified directive is a parallel-kind directive. +/// \param DKind Specified directive. +/// \return true - the directive is a parallel-like directive like 'omp +/// parallel', otherwise - false. +bool isOpenMPParallelDirective(OpenMPDirectiveKind DKind); + +/// Checks if the specified directive is a target code offload directive. +/// \param DKind Specified directive. +/// \return true - the directive is a target code offload directive like +/// 'omp target', 'omp target parallel', 'omp target xxx' +/// otherwise - false. +bool isOpenMPTargetExecutionDirective(OpenMPDirectiveKind DKind); + +/// Checks if the specified directive is a target data offload directive. +/// \param DKind Specified directive. +/// \return true - the directive is a target data offload directive like +/// 'omp target data', 'omp target update', 'omp target enter data', +/// 'omp target exit data' +/// otherwise - false. +bool isOpenMPTargetDataManagementDirective(OpenMPDirectiveKind DKind); + +/// Checks if the specified composite/combined directive constitutes a teams +/// directive in the outermost nest. For example +/// 'omp teams distribute' or 'omp teams distribute parallel for'. +/// \param DKind Specified directive. +/// \return true - the directive has teams on the outermost nest, otherwise - +/// false. +bool isOpenMPNestingTeamsDirective(OpenMPDirectiveKind DKind); + +/// Checks if the specified directive is a teams-kind directive. For example, +/// 'omp teams distribute' or 'omp target teams'. +/// \param DKind Specified directive. +/// \return true - the directive is a teams-like directive, otherwise - false. +bool isOpenMPTeamsDirective(OpenMPDirectiveKind DKind); + +/// Checks if the specified directive is a simd directive. +/// \param DKind Specified directive. +/// \return true - the directive is a simd directive like 'omp simd', +/// otherwise - false. +bool isOpenMPSimdDirective(OpenMPDirectiveKind DKind); + +/// Checks if the specified directive is a distribute directive. +/// \param DKind Specified directive. +/// \return true - the directive is a distribute-directive like 'omp +/// distribute', +/// otherwise - false. +bool isOpenMPDistributeDirective(OpenMPDirectiveKind DKind); + +/// Checks if the specified composite/combined directive constitutes a +/// distribute directive in the outermost nest. For example, +/// 'omp distribute parallel for' or 'omp distribute'. +/// \param DKind Specified directive. +/// \return true - the directive has distribute on the outermost nest. +/// otherwise - false. +bool isOpenMPNestingDistributeDirective(OpenMPDirectiveKind DKind); + +/// Checks if the specified clause is one of private clauses like +/// 'private', 'firstprivate', 'reduction' etc.. +/// \param Kind Clause kind. +/// \return true - the clause is a private clause, otherwise - false. +bool isOpenMPPrivate(OpenMPClauseKind Kind); + +/// Checks if the specified clause is one of threadprivate clauses like +/// 'threadprivate', 'copyin' or 'copyprivate'. +/// \param Kind Clause kind. +/// \return true - the clause is a threadprivate clause, otherwise - false. +bool isOpenMPThreadPrivate(OpenMPClauseKind Kind); + +/// Checks if the specified directive kind is one of tasking directives - task, +/// taskloop or taksloop simd. +bool isOpenMPTaskingDirective(OpenMPDirectiveKind Kind); + +/// Checks if the specified directive kind is one of the composite or combined +/// directives that need loop bound sharing across loops outlined in nested +/// functions +bool isOpenMPLoopBoundSharingDirective(OpenMPDirectiveKind Kind); + +/// Return the captured regions of an OpenMP directive. +void getOpenMPCaptureRegions( + llvm::SmallVectorImpl<OpenMPDirectiveKind> &CaptureRegions, + OpenMPDirectiveKind DKind); +} + +#endif + diff --git a/clang-r353983/include/clang/Basic/OperatorKinds.def b/clang-r353983/include/clang/Basic/OperatorKinds.def new file mode 100644 index 00000000..d464db29 --- /dev/null +++ b/clang-r353983/include/clang/Basic/OperatorKinds.def @@ -0,0 +1,107 @@ +//===--- OperatorKinds.def - C++ Overloaded Operator Database ---*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the OverloadedOperator database, which includes +// all of the overloadable C++ operators. +// +//===----------------------------------------------------------------------===// +// +/// @file OperatorKinds.def +/// +/// In this file, each of the overloadable C++ operators is enumerated +/// with either the OVERLOADED_OPERATOR or OVERLOADED_OPERATOR_MULTI +/// macro, each of which can be specified by the code including this +/// file. OVERLOADED_OPERATOR is used for single-token operators +/// (e.g., "+"), and has six arguments: +/// +/// Name: The name of the token. OO_Name will be the name of the +/// corresponding enumerator in OverloadedOperatorKind in +/// OperatorKinds.h. +/// +/// Spelling: A string that provides a canonical spelling for the +/// operator, e.g., "operator+". +/// +/// Token: The name of the token that specifies the operator, e.g., +/// "plus" for operator+ or "greatergreaterequal" for +/// "operator>>=". With a "kw_" prefix, the token name can be used as +/// an enumerator into the TokenKind enumeration. +/// +/// Unary: True if the operator can be declared as a unary operator. +/// +/// Binary: True if the operator can be declared as a binary +/// operator. Note that some operators (e.g., "operator+" and +/// "operator*") can be both unary and binary. +/// +/// MemberOnly: True if this operator can only be declared as a +/// non-static member function. False if the operator can be both a +/// non-member function and a non-static member function. +/// +/// OVERLOADED_OPERATOR_MULTI is used to enumerate the multi-token +/// overloaded operator names, e.g., "operator delete []". The macro +/// has all of the parameters of OVERLOADED_OPERATOR except Token, +/// which is omitted. + +#ifndef OVERLOADED_OPERATOR +# define OVERLOADED_OPERATOR(Name,Spelling,Token,Unary,Binary,MemberOnly) +#endif + +#ifndef OVERLOADED_OPERATOR_MULTI +# define OVERLOADED_OPERATOR_MULTI(Name,Spelling,Unary,Binary,MemberOnly) \ + OVERLOADED_OPERATOR(Name,Spelling,unknown,Unary,Binary,MemberOnly) +#endif + +OVERLOADED_OPERATOR_MULTI(New , "new" , true , true , false) +OVERLOADED_OPERATOR_MULTI(Delete , "delete" , true , true , false) +OVERLOADED_OPERATOR_MULTI(Array_New , "new[]" , true , true , false) +OVERLOADED_OPERATOR_MULTI(Array_Delete , "delete[]" , true , true , false) +OVERLOADED_OPERATOR(Plus , "+" , plus , true , true , false) +OVERLOADED_OPERATOR(Minus , "-" , minus , true , true , false) +OVERLOADED_OPERATOR(Star , "*" , star , true , true , false) +OVERLOADED_OPERATOR(Slash , "/" , slash , false, true , false) +OVERLOADED_OPERATOR(Percent , "%" , percent , false, true , false) +OVERLOADED_OPERATOR(Caret , "^" , caret , false, true , false) +OVERLOADED_OPERATOR(Amp , "&" , amp , true , true , false) +OVERLOADED_OPERATOR(Pipe , "|" , pipe , false, true , false) +OVERLOADED_OPERATOR(Tilde , "~" , tilde , true , false, false) +OVERLOADED_OPERATOR(Exclaim , "!" , exclaim , true , false, false) +OVERLOADED_OPERATOR(Equal , "=" , equal , false, true , true) +OVERLOADED_OPERATOR(Less , "<" , less , false, true , false) +OVERLOADED_OPERATOR(Greater , ">" , greater , false, true , false) +OVERLOADED_OPERATOR(PlusEqual , "+=" , plusequal , false, true , false) +OVERLOADED_OPERATOR(MinusEqual , "-=" , minusequal , false, true , false) +OVERLOADED_OPERATOR(StarEqual , "*=" , starequal , false, true , false) +OVERLOADED_OPERATOR(SlashEqual , "/=" , slashequal , false, true , false) +OVERLOADED_OPERATOR(PercentEqual , "%=" , percentequal , false, true , false) +OVERLOADED_OPERATOR(CaretEqual , "^=" , caretequal , false, true , false) +OVERLOADED_OPERATOR(AmpEqual , "&=" , ampequal , false, true , false) +OVERLOADED_OPERATOR(PipeEqual , "|=" , pipeequal , false, true , false) +OVERLOADED_OPERATOR(LessLess , "<<" , lessless , false, true , false) +OVERLOADED_OPERATOR(GreaterGreater , ">>" , greatergreater , false, true , false) +OVERLOADED_OPERATOR(LessLessEqual , "<<=" , lesslessequal , false, true , false) +OVERLOADED_OPERATOR(GreaterGreaterEqual , ">>=" , greatergreaterequal, false, true , false) +OVERLOADED_OPERATOR(EqualEqual , "==" , equalequal , false, true , false) +OVERLOADED_OPERATOR(ExclaimEqual , "!=" , exclaimequal , false, true , false) +OVERLOADED_OPERATOR(LessEqual , "<=" , lessequal , false, true , false) +OVERLOADED_OPERATOR(GreaterEqual , ">=" , greaterequal , false, true , false) +OVERLOADED_OPERATOR(Spaceship , "<=>" , spaceship , false, true , false) +OVERLOADED_OPERATOR(AmpAmp , "&&" , ampamp , false, true , false) +OVERLOADED_OPERATOR(PipePipe , "||" , pipepipe , false, true , false) +OVERLOADED_OPERATOR(PlusPlus , "++" , plusplus , true , true , false) +OVERLOADED_OPERATOR(MinusMinus , "--" , minusminus , true , true , false) +OVERLOADED_OPERATOR(Comma , "," , comma , false, true , false) +OVERLOADED_OPERATOR(ArrowStar , "->*" , arrowstar , false, true , false) +OVERLOADED_OPERATOR(Arrow , "->" , arrow , true , false, true) +OVERLOADED_OPERATOR_MULTI(Call , "()" , true , true , true) +OVERLOADED_OPERATOR_MULTI(Subscript , "[]" , false, true , true) +// ?: can *not* be overloaded, but we need the overload +// resolution machinery for it. +OVERLOADED_OPERATOR_MULTI(Conditional , "?" , false, true , false) +OVERLOADED_OPERATOR(Coawait , "co_await", kw_co_await , true , false, false) + +#undef OVERLOADED_OPERATOR_MULTI +#undef OVERLOADED_OPERATOR diff --git a/clang-r353983/include/clang/Basic/OperatorKinds.h b/clang-r353983/include/clang/Basic/OperatorKinds.h new file mode 100644 index 00000000..9757acaa --- /dev/null +++ b/clang-r353983/include/clang/Basic/OperatorKinds.h @@ -0,0 +1,35 @@ +//===--- OperatorKinds.h - C++ Overloaded Operators -------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines an enumeration for C++ overloaded operators. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_OPERATORKINDS_H +#define LLVM_CLANG_BASIC_OPERATORKINDS_H + +namespace clang { + +/// Enumeration specifying the different kinds of C++ overloaded +/// operators. +enum OverloadedOperatorKind : int { + OO_None, ///< Not an overloaded operator +#define OVERLOADED_OPERATOR(Name,Spelling,Token,Unary,Binary,MemberOnly) \ + OO_##Name, +#include "clang/Basic/OperatorKinds.def" + NUM_OVERLOADED_OPERATORS +}; + +/// Retrieve the spelling of the given overloaded operator, without +/// the preceding "operator" keyword. +const char *getOperatorSpelling(OverloadedOperatorKind Operator); + +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/OperatorPrecedence.h b/clang-r353983/include/clang/Basic/OperatorPrecedence.h new file mode 100644 index 00000000..61ac7ad6 --- /dev/null +++ b/clang-r353983/include/clang/Basic/OperatorPrecedence.h @@ -0,0 +1,52 @@ +//===--- OperatorPrecedence.h - Operator precedence levels ------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines and computes precedence levels for binary/ternary operators. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_OPERATORPRECEDENCE_H +#define LLVM_CLANG_BASIC_OPERATORPRECEDENCE_H + +#include "clang/Basic/TokenKinds.h" + +namespace clang { + +/// PrecedenceLevels - These are precedences for the binary/ternary +/// operators in the C99 grammar. These have been named to relate +/// with the C99 grammar productions. Low precedences numbers bind +/// more weakly than high numbers. +namespace prec { + enum Level { + Unknown = 0, // Not binary operator. + Comma = 1, // , + Assignment = 2, // =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= + Conditional = 3, // ? + LogicalOr = 4, // || + LogicalAnd = 5, // && + InclusiveOr = 6, // | + ExclusiveOr = 7, // ^ + And = 8, // & + Equality = 9, // ==, != + Relational = 10, // >=, <=, >, < + Spaceship = 11, // <=> + Shift = 12, // <<, >> + Additive = 13, // -, + + Multiplicative = 14, // *, /, % + PointerToMember = 15 // .*, ->* + }; +} + +/// Return the precedence of the specified binary operator token. +prec::Level getBinOpPrecedence(tok::TokenKind Kind, bool GreaterThanIsOperator, + bool CPlusPlus11); + +} // end namespace clang + +#endif // LLVM_CLANG_OPERATOR_PRECEDENCE_H diff --git a/clang-r353983/include/clang/Basic/PartialDiagnostic.h b/clang-r353983/include/clang/Basic/PartialDiagnostic.h new file mode 100644 index 00000000..799951b8 --- /dev/null +++ b/clang-r353983/include/clang/Basic/PartialDiagnostic.h @@ -0,0 +1,422 @@ +//===- PartialDiagnostic.h - Diagnostic "closures" --------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Implements a partial diagnostic that can be emitted anwyhere +/// in a DiagnosticBuilder stream. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_PARTIALDIAGNOSTIC_H +#define LLVM_CLANG_BASIC_PARTIALDIAGNOSTIC_H + +#include "clang/Basic/Diagnostic.h" +#include "clang/Basic/LLVM.h" +#include "clang/Basic/SourceLocation.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringRef.h" +#include <cassert> +#include <cstdint> +#include <string> +#include <type_traits> +#include <utility> + +namespace clang { + +class DeclContext; +class IdentifierInfo; + +class PartialDiagnostic { +public: + enum { + // The MaxArguments and MaxFixItHints member enum values from + // DiagnosticsEngine are private but DiagnosticsEngine declares + // PartialDiagnostic a friend. These enum values are redeclared + // here so that the nested Storage class below can access them. + MaxArguments = DiagnosticsEngine::MaxArguments + }; + + struct Storage { + enum { + /// The maximum number of arguments we can hold. We + /// currently only support up to 10 arguments (%0-%9). + /// + /// A single diagnostic with more than that almost certainly has to + /// be simplified anyway. + MaxArguments = PartialDiagnostic::MaxArguments + }; + + /// The number of entries in Arguments. + unsigned char NumDiagArgs = 0; + + /// Specifies for each argument whether it is in DiagArgumentsStr + /// or in DiagArguments. + unsigned char DiagArgumentsKind[MaxArguments]; + + /// The values for the various substitution positions. + /// + /// This is used when the argument is not an std::string. The specific value + /// is mangled into an intptr_t and the interpretation depends on exactly + /// what sort of argument kind it is. + intptr_t DiagArgumentsVal[MaxArguments]; + + /// The values for the various substitution positions that have + /// string arguments. + std::string DiagArgumentsStr[MaxArguments]; + + /// The list of ranges added to this diagnostic. + SmallVector<CharSourceRange, 8> DiagRanges; + + /// If valid, provides a hint with some code to insert, remove, or + /// modify at a particular position. + SmallVector<FixItHint, 6> FixItHints; + + Storage() = default; + }; + + /// An allocator for Storage objects, which uses a small cache to + /// objects, used to reduce malloc()/free() traffic for partial diagnostics. + class StorageAllocator { + static const unsigned NumCached = 16; + Storage Cached[NumCached]; + Storage *FreeList[NumCached]; + unsigned NumFreeListEntries; + + public: + StorageAllocator(); + ~StorageAllocator(); + + /// Allocate new storage. + Storage *Allocate() { + if (NumFreeListEntries == 0) + return new Storage; + + Storage *Result = FreeList[--NumFreeListEntries]; + Result->NumDiagArgs = 0; + Result->DiagRanges.clear(); + Result->FixItHints.clear(); + return Result; + } + + /// Free the given storage object. + void Deallocate(Storage *S) { + if (S >= Cached && S <= Cached + NumCached) { + FreeList[NumFreeListEntries++] = S; + return; + } + + delete S; + } + }; + +private: + // NOTE: Sema assumes that PartialDiagnostic is location-invariant + // in the sense that its bits can be safely memcpy'ed and destructed + // in the new location. + + /// The diagnostic ID. + mutable unsigned DiagID = 0; + + /// Storage for args and ranges. + mutable Storage *DiagStorage = nullptr; + + /// Allocator used to allocate storage for this diagnostic. + StorageAllocator *Allocator = nullptr; + + /// Retrieve storage for this particular diagnostic. + Storage *getStorage() const { + if (DiagStorage) + return DiagStorage; + + if (Allocator) + DiagStorage = Allocator->Allocate(); + else { + assert(Allocator != reinterpret_cast<StorageAllocator *>(~uintptr_t(0))); + DiagStorage = new Storage; + } + return DiagStorage; + } + + void freeStorage() { + if (!DiagStorage) + return; + + // The hot path for PartialDiagnostic is when we just used it to wrap an ID + // (typically so we have the flexibility of passing a more complex + // diagnostic into the callee, but that does not commonly occur). + // + // Split this out into a slow function for silly compilers (*cough*) which + // can't do decent partial inlining. + freeStorageSlow(); + } + + void freeStorageSlow() { + if (Allocator) + Allocator->Deallocate(DiagStorage); + else if (Allocator != reinterpret_cast<StorageAllocator *>(~uintptr_t(0))) + delete DiagStorage; + DiagStorage = nullptr; + } + + void AddSourceRange(const CharSourceRange &R) const { + if (!DiagStorage) + DiagStorage = getStorage(); + + DiagStorage->DiagRanges.push_back(R); + } + + void AddFixItHint(const FixItHint &Hint) const { + if (Hint.isNull()) + return; + + if (!DiagStorage) + DiagStorage = getStorage(); + + DiagStorage->FixItHints.push_back(Hint); + } + +public: + struct NullDiagnostic {}; + + /// Create a null partial diagnostic, which cannot carry a payload, + /// and only exists to be swapped with a real partial diagnostic. + PartialDiagnostic(NullDiagnostic) {} + + PartialDiagnostic(unsigned DiagID, StorageAllocator &Allocator) + : DiagID(DiagID), Allocator(&Allocator) {} + + PartialDiagnostic(const PartialDiagnostic &Other) + : DiagID(Other.DiagID), Allocator(Other.Allocator) { + if (Other.DiagStorage) { + DiagStorage = getStorage(); + *DiagStorage = *Other.DiagStorage; + } + } + + PartialDiagnostic(PartialDiagnostic &&Other) + : DiagID(Other.DiagID), DiagStorage(Other.DiagStorage), + Allocator(Other.Allocator) { + Other.DiagStorage = nullptr; + } + + PartialDiagnostic(const PartialDiagnostic &Other, Storage *DiagStorage) + : DiagID(Other.DiagID), DiagStorage(DiagStorage), + Allocator(reinterpret_cast<StorageAllocator *>(~uintptr_t(0))) { + if (Other.DiagStorage) + *this->DiagStorage = *Other.DiagStorage; + } + + PartialDiagnostic(const Diagnostic &Other, StorageAllocator &Allocator) + : DiagID(Other.getID()), Allocator(&Allocator) { + // Copy arguments. + for (unsigned I = 0, N = Other.getNumArgs(); I != N; ++I) { + if (Other.getArgKind(I) == DiagnosticsEngine::ak_std_string) + AddString(Other.getArgStdStr(I)); + else + AddTaggedVal(Other.getRawArg(I), Other.getArgKind(I)); + } + + // Copy source ranges. + for (unsigned I = 0, N = Other.getNumRanges(); I != N; ++I) + AddSourceRange(Other.getRange(I)); + + // Copy fix-its. + for (unsigned I = 0, N = Other.getNumFixItHints(); I != N; ++I) + AddFixItHint(Other.getFixItHint(I)); + } + + PartialDiagnostic &operator=(const PartialDiagnostic &Other) { + DiagID = Other.DiagID; + if (Other.DiagStorage) { + if (!DiagStorage) + DiagStorage = getStorage(); + + *DiagStorage = *Other.DiagStorage; + } else { + freeStorage(); + } + + return *this; + } + + PartialDiagnostic &operator=(PartialDiagnostic &&Other) { + freeStorage(); + + DiagID = Other.DiagID; + DiagStorage = Other.DiagStorage; + Allocator = Other.Allocator; + + Other.DiagStorage = nullptr; + return *this; + } + + ~PartialDiagnostic() { + freeStorage(); + } + + void swap(PartialDiagnostic &PD) { + std::swap(DiagID, PD.DiagID); + std::swap(DiagStorage, PD.DiagStorage); + std::swap(Allocator, PD.Allocator); + } + + unsigned getDiagID() const { return DiagID; } + + void AddTaggedVal(intptr_t V, DiagnosticsEngine::ArgumentKind Kind) const { + if (!DiagStorage) + DiagStorage = getStorage(); + + assert(DiagStorage->NumDiagArgs < Storage::MaxArguments && + "Too many arguments to diagnostic!"); + DiagStorage->DiagArgumentsKind[DiagStorage->NumDiagArgs] = Kind; + DiagStorage->DiagArgumentsVal[DiagStorage->NumDiagArgs++] = V; + } + + void AddString(StringRef V) const { + if (!DiagStorage) + DiagStorage = getStorage(); + + assert(DiagStorage->NumDiagArgs < Storage::MaxArguments && + "Too many arguments to diagnostic!"); + DiagStorage->DiagArgumentsKind[DiagStorage->NumDiagArgs] + = DiagnosticsEngine::ak_std_string; + DiagStorage->DiagArgumentsStr[DiagStorage->NumDiagArgs++] = V; + } + + void Emit(const DiagnosticBuilder &DB) const { + if (!DiagStorage) + return; + + // Add all arguments. + for (unsigned i = 0, e = DiagStorage->NumDiagArgs; i != e; ++i) { + if ((DiagnosticsEngine::ArgumentKind)DiagStorage->DiagArgumentsKind[i] + == DiagnosticsEngine::ak_std_string) + DB.AddString(DiagStorage->DiagArgumentsStr[i]); + else + DB.AddTaggedVal(DiagStorage->DiagArgumentsVal[i], + (DiagnosticsEngine::ArgumentKind)DiagStorage->DiagArgumentsKind[i]); + } + + // Add all ranges. + for (const CharSourceRange &Range : DiagStorage->DiagRanges) + DB.AddSourceRange(Range); + + // Add all fix-its. + for (const FixItHint &Fix : DiagStorage->FixItHints) + DB.AddFixItHint(Fix); + } + + void EmitToString(DiagnosticsEngine &Diags, + SmallVectorImpl<char> &Buf) const { + // FIXME: It should be possible to render a diagnostic to a string without + // messing with the state of the diagnostics engine. + DiagnosticBuilder DB(Diags.Report(getDiagID())); + Emit(DB); + DB.FlushCounts(); + Diagnostic(&Diags).FormatDiagnostic(Buf); + DB.Clear(); + Diags.Clear(); + } + + /// Clear out this partial diagnostic, giving it a new diagnostic ID + /// and removing all of its arguments, ranges, and fix-it hints. + void Reset(unsigned DiagID = 0) { + this->DiagID = DiagID; + freeStorage(); + } + + bool hasStorage() const { return DiagStorage != nullptr; } + + /// Retrieve the string argument at the given index. + StringRef getStringArg(unsigned I) { + assert(DiagStorage && "No diagnostic storage?"); + assert(I < DiagStorage->NumDiagArgs && "Not enough diagnostic args"); + assert(DiagStorage->DiagArgumentsKind[I] + == DiagnosticsEngine::ak_std_string && "Not a string arg"); + return DiagStorage->DiagArgumentsStr[I]; + } + + friend const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, + unsigned I) { + PD.AddTaggedVal(I, DiagnosticsEngine::ak_uint); + return PD; + } + + friend const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, + int I) { + PD.AddTaggedVal(I, DiagnosticsEngine::ak_sint); + return PD; + } + + friend inline const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, + const char *S) { + PD.AddTaggedVal(reinterpret_cast<intptr_t>(S), + DiagnosticsEngine::ak_c_string); + return PD; + } + + friend inline const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, + StringRef S) { + + PD.AddString(S); + return PD; + } + + friend inline const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, + const IdentifierInfo *II) { + PD.AddTaggedVal(reinterpret_cast<intptr_t>(II), + DiagnosticsEngine::ak_identifierinfo); + return PD; + } + + // Adds a DeclContext to the diagnostic. The enable_if template magic is here + // so that we only match those arguments that are (statically) DeclContexts; + // other arguments that derive from DeclContext (e.g., RecordDecls) will not + // match. + template<typename T> + friend inline + typename std::enable_if<std::is_same<T, DeclContext>::value, + const PartialDiagnostic &>::type + operator<<(const PartialDiagnostic &PD, T *DC) { + PD.AddTaggedVal(reinterpret_cast<intptr_t>(DC), + DiagnosticsEngine::ak_declcontext); + return PD; + } + + friend inline const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, + SourceRange R) { + PD.AddSourceRange(CharSourceRange::getTokenRange(R)); + return PD; + } + + friend inline const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, + const CharSourceRange &R) { + PD.AddSourceRange(R); + return PD; + } + + friend const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, + const FixItHint &Hint) { + PD.AddFixItHint(Hint); + return PD; + } +}; + +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, + const PartialDiagnostic &PD) { + PD.Emit(DB); + return DB; +} + +/// A partial diagnostic along with the source location where this +/// diagnostic occurs. +using PartialDiagnosticAt = std::pair<SourceLocation, PartialDiagnostic>; + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_PARTIALDIAGNOSTIC_H diff --git a/clang-r353983/include/clang/Basic/PlistSupport.h b/clang-r353983/include/clang/Basic/PlistSupport.h new file mode 100644 index 00000000..f81b469b --- /dev/null +++ b/clang-r353983/include/clang/Basic/PlistSupport.h @@ -0,0 +1,137 @@ +//===- PlistSupport.h - Plist Output Utilities ------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_PLISTSUPPORT_H +#define LLVM_CLANG_BASIC_PLISTSUPPORT_H + +#include "clang/Basic/LLVM.h" +#include "clang/Basic/SourceLocation.h" +#include "clang/Basic/SourceManager.h" +#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/raw_ostream.h" +#include <cassert> +#include <cstdint> + +namespace clang { +namespace markup { + +using FIDMap = llvm::DenseMap<FileID, unsigned>; + +inline unsigned AddFID(FIDMap &FIDs, SmallVectorImpl<FileID> &V, + FileID FID) { + FIDMap::iterator I = FIDs.find(FID); + if (I != FIDs.end()) + return I->second; + unsigned NewValue = V.size(); + FIDs[FID] = NewValue; + V.push_back(FID); + return NewValue; +} + +inline unsigned AddFID(FIDMap &FIDs, SmallVectorImpl<FileID> &V, + const SourceManager &SM, SourceLocation L) { + FileID FID = SM.getFileID(SM.getExpansionLoc(L)); + return AddFID(FIDs, V, FID); +} + +inline unsigned GetFID(const FIDMap &FIDs, FileID FID) { + FIDMap::const_iterator I = FIDs.find(FID); + assert(I != FIDs.end()); + return I->second; +} + +inline unsigned GetFID(const FIDMap &FIDs, const SourceManager &SM, + SourceLocation L) { + FileID FID = SM.getFileID(SM.getExpansionLoc(L)); + return GetFID(FIDs, FID); +} + +inline raw_ostream &Indent(raw_ostream &o, const unsigned indent) { + for (unsigned i = 0; i < indent; ++i) + o << ' '; + return o; +} + +inline raw_ostream &EmitPlistHeader(raw_ostream &o) { + static const char *PlistHeader = + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" " + "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n" + "<plist version=\"1.0\">\n"; + return o << PlistHeader; +} + +inline raw_ostream &EmitInteger(raw_ostream &o, int64_t value) { + o << "<integer>"; + o << value; + o << "</integer>"; + return o; +} + +inline raw_ostream &EmitString(raw_ostream &o, StringRef s) { + o << "<string>"; + for (StringRef::const_iterator I = s.begin(), E = s.end(); I != E; ++I) { + char c = *I; + switch (c) { + default: + o << c; + break; + case '&': + o << "&"; + break; + case '<': + o << "<"; + break; + case '>': + o << ">"; + break; + case '\'': + o << "'"; + break; + case '\"': + o << """; + break; + } + } + o << "</string>"; + return o; +} + +inline void EmitLocation(raw_ostream &o, const SourceManager &SM, + SourceLocation L, const FIDMap &FM, unsigned indent) { + if (L.isInvalid()) return; + + FullSourceLoc Loc(SM.getExpansionLoc(L), const_cast<SourceManager &>(SM)); + + Indent(o, indent) << "<dict>\n"; + Indent(o, indent) << " <key>line</key>"; + EmitInteger(o, Loc.getExpansionLineNumber()) << '\n'; + Indent(o, indent) << " <key>col</key>"; + EmitInteger(o, Loc.getExpansionColumnNumber()) << '\n'; + Indent(o, indent) << " <key>file</key>"; + EmitInteger(o, GetFID(FM, SM, Loc)) << '\n'; + Indent(o, indent) << "</dict>\n"; +} + +inline void EmitRange(raw_ostream &o, const SourceManager &SM, + CharSourceRange R, const FIDMap &FM, unsigned indent) { + if (R.isInvalid()) return; + + assert(R.isCharRange() && "cannot handle a token range"); + Indent(o, indent) << "<array>\n"; + EmitLocation(o, SM, R.getBegin(), FM, indent + 1); + EmitLocation(o, SM, R.getEnd(), FM, indent + 1); + Indent(o, indent) << "</array>\n"; +} + +} // namespace markup +} // namespace clang + +#endif // LLVM_CLANG_BASIC_PLISTSUPPORT_H diff --git a/clang-r353983/include/clang/Basic/PragmaKinds.h b/clang-r353983/include/clang/Basic/PragmaKinds.h new file mode 100644 index 00000000..103b97db --- /dev/null +++ b/clang-r353983/include/clang/Basic/PragmaKinds.h @@ -0,0 +1,30 @@ +//===--- PragmaKinds.h - #pragma comment() kinds ---------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_PRAGMA_KINDS_H +#define LLVM_CLANG_BASIC_PRAGMA_KINDS_H + +namespace clang { + +enum PragmaMSCommentKind { + PCK_Unknown, + PCK_Linker, // #pragma comment(linker, ...) + PCK_Lib, // #pragma comment(lib, ...) + PCK_Compiler, // #pragma comment(compiler, ...) + PCK_ExeStr, // #pragma comment(exestr, ...) + PCK_User // #pragma comment(user, ...) +}; + +enum PragmaMSStructKind { + PMSST_OFF, // #pragms ms_struct off + PMSST_ON // #pragms ms_struct on +}; + +} + +#endif diff --git a/clang-r353983/include/clang/Basic/PrettyStackTrace.h b/clang-r353983/include/clang/Basic/PrettyStackTrace.h new file mode 100644 index 00000000..545a63b7 --- /dev/null +++ b/clang-r353983/include/clang/Basic/PrettyStackTrace.h @@ -0,0 +1,37 @@ +//===- clang/Basic/PrettyStackTrace.h - Pretty Crash Handling --*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the PrettyStackTraceEntry class, which is used to make +/// crashes give more contextual information about what the program was doing +/// when it crashed. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_PRETTYSTACKTRACE_H +#define LLVM_CLANG_BASIC_PRETTYSTACKTRACE_H + +#include "clang/Basic/SourceLocation.h" +#include "llvm/Support/PrettyStackTrace.h" + +namespace clang { + + /// If a crash happens while one of these objects are live, the message + /// is printed out along with the specified source location. + class PrettyStackTraceLoc : public llvm::PrettyStackTraceEntry { + SourceManager &SM; + SourceLocation Loc; + const char *Message; + public: + PrettyStackTraceLoc(SourceManager &sm, SourceLocation L, const char *Msg) + : SM(sm), Loc(L), Message(Msg) {} + void print(raw_ostream &OS) const override; + }; +} + +#endif diff --git a/clang-r353983/include/clang/Basic/SanitizerBlacklist.h b/clang-r353983/include/clang/Basic/SanitizerBlacklist.h new file mode 100644 index 00000000..29af28b8 --- /dev/null +++ b/clang-r353983/include/clang/Basic/SanitizerBlacklist.h @@ -0,0 +1,46 @@ +//===--- SanitizerBlacklist.h - Blacklist for sanitizers --------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// User-provided blacklist used to disable/alter instrumentation done in +// sanitizers. +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_CLANG_BASIC_SANITIZERBLACKLIST_H +#define LLVM_CLANG_BASIC_SANITIZERBLACKLIST_H + +#include "clang/Basic/LLVM.h" +#include "clang/Basic/SanitizerSpecialCaseList.h" +#include "clang/Basic/Sanitizers.h" +#include "clang/Basic/SourceLocation.h" +#include "clang/Basic/SourceManager.h" +#include "llvm/ADT/StringRef.h" +#include <memory> + +namespace clang { + +class SanitizerBlacklist { + std::unique_ptr<SanitizerSpecialCaseList> SSCL; + SourceManager &SM; + +public: + SanitizerBlacklist(const std::vector<std::string> &BlacklistPaths, + SourceManager &SM); + bool isBlacklistedGlobal(SanitizerMask Mask, StringRef GlobalName, + StringRef Category = StringRef()) const; + bool isBlacklistedType(SanitizerMask Mask, StringRef MangledTypeName, + StringRef Category = StringRef()) const; + bool isBlacklistedFunction(SanitizerMask Mask, StringRef FunctionName) const; + bool isBlacklistedFile(SanitizerMask Mask, StringRef FileName, + StringRef Category = StringRef()) const; + bool isBlacklistedLocation(SanitizerMask Mask, SourceLocation Loc, + StringRef Category = StringRef()) const; +}; + +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/SanitizerSpecialCaseList.h b/clang-r353983/include/clang/Basic/SanitizerSpecialCaseList.h new file mode 100644 index 00000000..fb0db32c --- /dev/null +++ b/clang-r353983/include/clang/Basic/SanitizerSpecialCaseList.h @@ -0,0 +1,53 @@ +//===--- SanitizerSpecialCaseList.h - SCL for sanitizers --------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// An extension of SpecialCaseList to allowing querying sections by +// SanitizerMask. +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_CLANG_BASIC_SANITIZERSPECIALCASELIST_H +#define LLVM_CLANG_BASIC_SANITIZERSPECIALCASELIST_H + +#include "clang/Basic/LLVM.h" +#include "clang/Basic/Sanitizers.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/SpecialCaseList.h" +#include <memory> + +namespace clang { + +class SanitizerSpecialCaseList : public llvm::SpecialCaseList { +public: + static std::unique_ptr<SanitizerSpecialCaseList> + create(const std::vector<std::string> &Paths, std::string &Error); + + static std::unique_ptr<SanitizerSpecialCaseList> + createOrDie(const std::vector<std::string> &Paths); + + // Query blacklisted entries if any bit in Mask matches the entry's section. + bool inSection(SanitizerMask Mask, StringRef Prefix, StringRef Query, + StringRef Category = StringRef()) const; + +protected: + // Initialize SanitizerSections. + void createSanitizerSections(); + + struct SanitizerSection { + SanitizerSection(SanitizerMask SM, SectionEntries &E) + : Mask(SM), Entries(E){}; + + SanitizerMask Mask; + SectionEntries &Entries; + }; + + std::vector<SanitizerSection> SanitizerSections; +}; + +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/Sanitizers.def b/clang-r353983/include/clang/Basic/Sanitizers.def new file mode 100644 index 00000000..34bd6fc5 --- /dev/null +++ b/clang-r353983/include/clang/Basic/Sanitizers.def @@ -0,0 +1,183 @@ +//===--- Sanitizers.def - Runtime sanitizer options -------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the options for specifying which runtime sanitizers to +// enable. Users of this file must define the SANITIZER macro to make use of +// this information. Users of this file can also define the SANITIZER_GROUP +// macro to get information on options which refer to sets of sanitizers. +// +//===----------------------------------------------------------------------===// + +#ifndef SANITIZER +#error "Define SANITIZER prior to including this file!" +#endif + +// SANITIZER(NAME, ID) + +// The first value is the name of the sanitizer as a string. The sanitizer can +// be enabled by specifying -fsanitize=NAME. + +// The second value is an identifier which can be used to refer to the +// sanitizer. + + +// SANITIZER_GROUP(NAME, ID, ALIAS) + +// The first two values have the same semantics as the corresponding SANITIZER +// values. The third value is an expression ORing together the IDs of individual +// sanitizers in this group. + +#ifndef SANITIZER_GROUP +#define SANITIZER_GROUP(NAME, ID, ALIAS) +#endif + + +// AddressSanitizer +SANITIZER("address", Address) + +// Kernel AddressSanitizer (KASan) +SANITIZER("kernel-address", KernelAddress) + +// Hardware-assisted AddressSanitizer +SANITIZER("hwaddress", HWAddress) + +// Kernel Hardware-assisted AddressSanitizer (KHWASan) +SANITIZER("kernel-hwaddress", KernelHWAddress) + +// MemorySanitizer +SANITIZER("memory", Memory) + +// Kernel MemorySanitizer (KMSAN) +SANITIZER("kernel-memory", KernelMemory) + +// libFuzzer +SANITIZER("fuzzer", Fuzzer) + +// libFuzzer-required instrumentation, no linking. +SANITIZER("fuzzer-no-link", FuzzerNoLink) + +// ThreadSanitizer +SANITIZER("thread", Thread) + +// LeakSanitizer +SANITIZER("leak", Leak) + +// UndefinedBehaviorSanitizer +SANITIZER("alignment", Alignment) +SANITIZER("array-bounds", ArrayBounds) +SANITIZER("bool", Bool) +SANITIZER("builtin", Builtin) +SANITIZER("enum", Enum) +SANITIZER("float-cast-overflow", FloatCastOverflow) +SANITIZER("float-divide-by-zero", FloatDivideByZero) +SANITIZER("function", Function) +SANITIZER("integer-divide-by-zero", IntegerDivideByZero) +SANITIZER("nonnull-attribute", NonnullAttribute) +SANITIZER("null", Null) +SANITIZER("nullability-arg", NullabilityArg) +SANITIZER("nullability-assign", NullabilityAssign) +SANITIZER("nullability-return", NullabilityReturn) +SANITIZER_GROUP("nullability", Nullability, + NullabilityArg | NullabilityAssign | NullabilityReturn) +SANITIZER("object-size", ObjectSize) +SANITIZER("pointer-overflow", PointerOverflow) +SANITIZER("return", Return) +SANITIZER("returns-nonnull-attribute", ReturnsNonnullAttribute) +SANITIZER("shift-base", ShiftBase) +SANITIZER("shift-exponent", ShiftExponent) +SANITIZER_GROUP("shift", Shift, ShiftBase | ShiftExponent) +SANITIZER("signed-integer-overflow", SignedIntegerOverflow) +SANITIZER("unreachable", Unreachable) +SANITIZER("vla-bound", VLABound) +SANITIZER("vptr", Vptr) + +// IntegerSanitizer +SANITIZER("unsigned-integer-overflow", UnsignedIntegerOverflow) + +// DataFlowSanitizer +SANITIZER("dataflow", DataFlow) + +// Control Flow Integrity +SANITIZER("cfi-cast-strict", CFICastStrict) +SANITIZER("cfi-derived-cast", CFIDerivedCast) +SANITIZER("cfi-icall", CFIICall) +SANITIZER("cfi-mfcall", CFIMFCall) +SANITIZER("cfi-unrelated-cast", CFIUnrelatedCast) +SANITIZER("cfi-nvcall", CFINVCall) +SANITIZER("cfi-vcall", CFIVCall) +SANITIZER_GROUP("cfi", CFI, + CFIDerivedCast | CFIICall | CFIMFCall | CFIUnrelatedCast | + CFINVCall | CFIVCall) + +// Safe Stack +SANITIZER("safe-stack", SafeStack) + +// Shadow Call Stack +SANITIZER("shadow-call-stack", ShadowCallStack) + +// -fsanitize=undefined includes all the sanitizers which have low overhead, no +// ABI or address space layout implications, and only catch undefined behavior. +SANITIZER_GROUP("undefined", Undefined, + Alignment | Bool | Builtin | ArrayBounds | Enum | + FloatCastOverflow | FloatDivideByZero | + IntegerDivideByZero | NonnullAttribute | Null | ObjectSize | + PointerOverflow | Return | ReturnsNonnullAttribute | Shift | + SignedIntegerOverflow | Unreachable | VLABound | Function | + Vptr) + +// -fsanitize=undefined-trap is an alias for -fsanitize=undefined. +SANITIZER_GROUP("undefined-trap", UndefinedTrap, Undefined) + +// ImplicitConversionSanitizer +SANITIZER("implicit-unsigned-integer-truncation", + ImplicitUnsignedIntegerTruncation) +SANITIZER("implicit-signed-integer-truncation", ImplicitSignedIntegerTruncation) +SANITIZER_GROUP("implicit-integer-truncation", ImplicitIntegerTruncation, + ImplicitUnsignedIntegerTruncation | + ImplicitSignedIntegerTruncation) + +SANITIZER("implicit-integer-sign-change", ImplicitIntegerSignChange) + +SANITIZER_GROUP("implicit-integer-arithmetic-value-change", + ImplicitIntegerArithmeticValueChange, + ImplicitIntegerSignChange | ImplicitSignedIntegerTruncation) + +// FIXME: +//SANITIZER_GROUP("implicit-integer-conversion", ImplicitIntegerConversion, +// ImplicitIntegerArithmeticValueChange | +// ImplicitUnsignedIntegerTruncation) +//SANITIZER_GROUP("implicit-conversion", ImplicitConversion, +// ImplicitIntegerConversion) + +SANITIZER_GROUP("implicit-conversion", ImplicitConversion, + ImplicitIntegerArithmeticValueChange | + ImplicitUnsignedIntegerTruncation) + +SANITIZER_GROUP("integer", Integer, + ImplicitConversion | IntegerDivideByZero | Shift | + SignedIntegerOverflow | UnsignedIntegerOverflow) + +SANITIZER("local-bounds", LocalBounds) +SANITIZER_GROUP("bounds", Bounds, ArrayBounds | LocalBounds) + +// EfficiencySanitizer +SANITIZER("efficiency-cache-frag", EfficiencyCacheFrag) +SANITIZER("efficiency-working-set", EfficiencyWorkingSet) +// Meta-group only used internally. +SANITIZER_GROUP("efficiency-all", Efficiency, + EfficiencyCacheFrag | EfficiencyWorkingSet) + +// Scudo hardened allocator +SANITIZER("scudo", Scudo) + +// Magic group, containing all sanitizers. For example, "-fno-sanitize=all" +// can be used to disable all the sanitizers. +SANITIZER_GROUP("all", All, ~0ULL) + +#undef SANITIZER +#undef SANITIZER_GROUP diff --git a/clang-r353983/include/clang/Basic/Sanitizers.h b/clang-r353983/include/clang/Basic/Sanitizers.h new file mode 100644 index 00000000..f2cfadbe --- /dev/null +++ b/clang-r353983/include/clang/Basic/Sanitizers.h @@ -0,0 +1,92 @@ +//===- Sanitizers.h - C Language Family Language Options --------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines the clang::SanitizerKind enum. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_SANITIZERS_H +#define LLVM_CLANG_BASIC_SANITIZERS_H + +#include "clang/Basic/LLVM.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/MathExtras.h" +#include <cassert> +#include <cstdint> + +namespace clang { + +using SanitizerMask = uint64_t; + +namespace SanitizerKind { + +// Assign ordinals to possible values of -fsanitize= flag, which we will use as +// bit positions. +enum SanitizerOrdinal : uint64_t { +#define SANITIZER(NAME, ID) SO_##ID, +#define SANITIZER_GROUP(NAME, ID, ALIAS) SO_##ID##Group, +#include "clang/Basic/Sanitizers.def" + SO_Count +}; + +// Define the set of sanitizer kinds, as well as the set of sanitizers each +// sanitizer group expands into. +#define SANITIZER(NAME, ID) \ + const SanitizerMask ID = 1ULL << SO_##ID; +#define SANITIZER_GROUP(NAME, ID, ALIAS) \ + const SanitizerMask ID = ALIAS; \ + const SanitizerMask ID##Group = 1ULL << SO_##ID##Group; +#include "clang/Basic/Sanitizers.def" + +} // namespace SanitizerKind + +struct SanitizerSet { + /// Check if a certain (single) sanitizer is enabled. + bool has(SanitizerMask K) const { + assert(llvm::isPowerOf2_64(K)); + return Mask & K; + } + + /// Check if one or more sanitizers are enabled. + bool hasOneOf(SanitizerMask K) const { return Mask & K; } + + /// Enable or disable a certain (single) sanitizer. + void set(SanitizerMask K, bool Value) { + assert(llvm::isPowerOf2_64(K)); + Mask = Value ? (Mask | K) : (Mask & ~K); + } + + /// Disable the sanitizers specified in \p K. + void clear(SanitizerMask K = SanitizerKind::All) { Mask &= ~K; } + + /// Returns true if no sanitizers are enabled. + bool empty() const { return Mask == 0; } + + /// Bitmask of enabled sanitizers. + SanitizerMask Mask = 0; +}; + +/// Parse a single value from a -fsanitize= or -fno-sanitize= value list. +/// Returns a non-zero SanitizerMask, or \c 0 if \p Value is not known. +SanitizerMask parseSanitizerValue(StringRef Value, bool AllowGroups); + +/// For each sanitizer group bit set in \p Kinds, set the bits for sanitizers +/// this group enables. +SanitizerMask expandSanitizerGroups(SanitizerMask Kinds); + +/// Return the sanitizers which do not affect preprocessing. +inline SanitizerMask getPPTransparentSanitizers() { + return SanitizerKind::CFI | SanitizerKind::Integer | + SanitizerKind::ImplicitConversion | SanitizerKind::Nullability | + SanitizerKind::Undefined; +} + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_SANITIZERS_H diff --git a/clang-r353983/include/clang/Basic/SourceLocation.h b/clang-r353983/include/clang/Basic/SourceLocation.h new file mode 100644 index 00000000..ceebdf48 --- /dev/null +++ b/clang-r353983/include/clang/Basic/SourceLocation.h @@ -0,0 +1,475 @@ +//===- SourceLocation.h - Compact identifier for Source Files ---*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines the clang::SourceLocation class and associated facilities. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_SOURCELOCATION_H +#define LLVM_CLANG_BASIC_SOURCELOCATION_H + +#include "clang/Basic/LLVM.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/PointerLikeTypeTraits.h" +#include <cassert> +#include <cstdint> +#include <string> +#include <utility> + +namespace llvm { + +template <typename T> struct DenseMapInfo; + +} // namespace llvm + +namespace clang { + +class SourceManager; + +/// An opaque identifier used by SourceManager which refers to a +/// source file (MemoryBuffer) along with its \#include path and \#line data. +/// +class FileID { + /// A mostly-opaque identifier, where 0 is "invalid", >0 is + /// this module, and <-1 is something loaded from another module. + int ID = 0; + +public: + bool isValid() const { return ID != 0; } + bool isInvalid() const { return ID == 0; } + + bool operator==(const FileID &RHS) const { return ID == RHS.ID; } + bool operator<(const FileID &RHS) const { return ID < RHS.ID; } + bool operator<=(const FileID &RHS) const { return ID <= RHS.ID; } + bool operator!=(const FileID &RHS) const { return !(*this == RHS); } + bool operator>(const FileID &RHS) const { return RHS < *this; } + bool operator>=(const FileID &RHS) const { return RHS <= *this; } + + static FileID getSentinel() { return get(-1); } + unsigned getHashValue() const { return static_cast<unsigned>(ID); } + +private: + friend class ASTWriter; + friend class ASTReader; + friend class SourceManager; + + static FileID get(int V) { + FileID F; + F.ID = V; + return F; + } + + int getOpaqueValue() const { return ID; } +}; + +/// Encodes a location in the source. The SourceManager can decode this +/// to get at the full include stack, line and column information. +/// +/// Technically, a source location is simply an offset into the manager's view +/// of the input source, which is all input buffers (including macro +/// expansions) concatenated in an effectively arbitrary order. The manager +/// actually maintains two blocks of input buffers. One, starting at offset +/// 0 and growing upwards, contains all buffers from this module. The other, +/// starting at the highest possible offset and growing downwards, contains +/// buffers of loaded modules. +/// +/// In addition, one bit of SourceLocation is used for quick access to the +/// information whether the location is in a file or a macro expansion. +/// +/// It is important that this type remains small. It is currently 32 bits wide. +class SourceLocation { + friend class ASTReader; + friend class ASTWriter; + friend class SourceManager; + + unsigned ID = 0; + + enum : unsigned { + MacroIDBit = 1U << 31 + }; + +public: + bool isFileID() const { return (ID & MacroIDBit) == 0; } + bool isMacroID() const { return (ID & MacroIDBit) != 0; } + + /// Return true if this is a valid SourceLocation object. + /// + /// Invalid SourceLocations are often used when events have no corresponding + /// location in the source (e.g. a diagnostic is required for a command line + /// option). + bool isValid() const { return ID != 0; } + bool isInvalid() const { return ID == 0; } + +private: + /// Return the offset into the manager's global input view. + unsigned getOffset() const { + return ID & ~MacroIDBit; + } + + static SourceLocation getFileLoc(unsigned ID) { + assert((ID & MacroIDBit) == 0 && "Ran out of source locations!"); + SourceLocation L; + L.ID = ID; + return L; + } + + static SourceLocation getMacroLoc(unsigned ID) { + assert((ID & MacroIDBit) == 0 && "Ran out of source locations!"); + SourceLocation L; + L.ID = MacroIDBit | ID; + return L; + } + +public: + /// Return a source location with the specified offset from this + /// SourceLocation. + SourceLocation getLocWithOffset(int Offset) const { + assert(((getOffset()+Offset) & MacroIDBit) == 0 && "offset overflow"); + SourceLocation L; + L.ID = ID+Offset; + return L; + } + + /// When a SourceLocation itself cannot be used, this returns + /// an (opaque) 32-bit integer encoding for it. + /// + /// This should only be passed to SourceLocation::getFromRawEncoding, it + /// should not be inspected directly. + unsigned getRawEncoding() const { return ID; } + + /// Turn a raw encoding of a SourceLocation object into + /// a real SourceLocation. + /// + /// \see getRawEncoding. + static SourceLocation getFromRawEncoding(unsigned Encoding) { + SourceLocation X; + X.ID = Encoding; + return X; + } + + /// When a SourceLocation itself cannot be used, this returns + /// an (opaque) pointer encoding for it. + /// + /// This should only be passed to SourceLocation::getFromPtrEncoding, it + /// should not be inspected directly. + void* getPtrEncoding() const { + // Double cast to avoid a warning "cast to pointer from integer of different + // size". + return (void*)(uintptr_t)getRawEncoding(); + } + + /// Turn a pointer encoding of a SourceLocation object back + /// into a real SourceLocation. + static SourceLocation getFromPtrEncoding(const void *Encoding) { + return getFromRawEncoding((unsigned)(uintptr_t)Encoding); + } + + static bool isPairOfFileLocations(SourceLocation Start, SourceLocation End) { + return Start.isValid() && Start.isFileID() && End.isValid() && + End.isFileID(); + } + + void print(raw_ostream &OS, const SourceManager &SM) const; + std::string printToString(const SourceManager &SM) const; + void dump(const SourceManager &SM) const; +}; + +inline bool operator==(const SourceLocation &LHS, const SourceLocation &RHS) { + return LHS.getRawEncoding() == RHS.getRawEncoding(); +} + +inline bool operator!=(const SourceLocation &LHS, const SourceLocation &RHS) { + return !(LHS == RHS); +} + +inline bool operator<(const SourceLocation &LHS, const SourceLocation &RHS) { + return LHS.getRawEncoding() < RHS.getRawEncoding(); +} + +/// A trivial tuple used to represent a source range. +class SourceRange { + SourceLocation B; + SourceLocation E; + +public: + SourceRange() = default; + SourceRange(SourceLocation loc) : B(loc), E(loc) {} + SourceRange(SourceLocation begin, SourceLocation end) : B(begin), E(end) {} + + SourceLocation getBegin() const { return B; } + SourceLocation getEnd() const { return E; } + + void setBegin(SourceLocation b) { B = b; } + void setEnd(SourceLocation e) { E = e; } + + bool isValid() const { return B.isValid() && E.isValid(); } + bool isInvalid() const { return !isValid(); } + + bool operator==(const SourceRange &X) const { + return B == X.B && E == X.E; + } + + bool operator!=(const SourceRange &X) const { + return B != X.B || E != X.E; + } + + void print(raw_ostream &OS, const SourceManager &SM) const; + std::string printToString(const SourceManager &SM) const; + void dump(const SourceManager &SM) const; +}; + +/// Represents a character-granular source range. +/// +/// The underlying SourceRange can either specify the starting/ending character +/// of the range, or it can specify the start of the range and the start of the +/// last token of the range (a "token range"). In the token range case, the +/// size of the last token must be measured to determine the actual end of the +/// range. +class CharSourceRange { + SourceRange Range; + bool IsTokenRange = false; + +public: + CharSourceRange() = default; + CharSourceRange(SourceRange R, bool ITR) : Range(R), IsTokenRange(ITR) {} + + static CharSourceRange getTokenRange(SourceRange R) { + return CharSourceRange(R, true); + } + + static CharSourceRange getCharRange(SourceRange R) { + return CharSourceRange(R, false); + } + + static CharSourceRange getTokenRange(SourceLocation B, SourceLocation E) { + return getTokenRange(SourceRange(B, E)); + } + + static CharSourceRange getCharRange(SourceLocation B, SourceLocation E) { + return getCharRange(SourceRange(B, E)); + } + + /// Return true if the end of this range specifies the start of + /// the last token. Return false if the end of this range specifies the last + /// character in the range. + bool isTokenRange() const { return IsTokenRange; } + bool isCharRange() const { return !IsTokenRange; } + + SourceLocation getBegin() const { return Range.getBegin(); } + SourceLocation getEnd() const { return Range.getEnd(); } + SourceRange getAsRange() const { return Range; } + + void setBegin(SourceLocation b) { Range.setBegin(b); } + void setEnd(SourceLocation e) { Range.setEnd(e); } + void setTokenRange(bool TR) { IsTokenRange = TR; } + + bool isValid() const { return Range.isValid(); } + bool isInvalid() const { return !isValid(); } +}; + +/// Represents an unpacked "presumed" location which can be presented +/// to the user. +/// +/// A 'presumed' location can be modified by \#line and GNU line marker +/// directives and is always the expansion point of a normal location. +/// +/// You can get a PresumedLoc from a SourceLocation with SourceManager. +class PresumedLoc { + const char *Filename = nullptr; + unsigned Line, Col; + SourceLocation IncludeLoc; + +public: + PresumedLoc() = default; + PresumedLoc(const char *FN, unsigned Ln, unsigned Co, SourceLocation IL) + : Filename(FN), Line(Ln), Col(Co), IncludeLoc(IL) {} + + /// Return true if this object is invalid or uninitialized. + /// + /// This occurs when created with invalid source locations or when walking + /// off the top of a \#include stack. + bool isInvalid() const { return Filename == nullptr; } + bool isValid() const { return Filename != nullptr; } + + /// Return the presumed filename of this location. + /// + /// This can be affected by \#line etc. + const char *getFilename() const { + assert(isValid()); + return Filename; + } + + /// Return the presumed line number of this location. + /// + /// This can be affected by \#line etc. + unsigned getLine() const { + assert(isValid()); + return Line; + } + + /// Return the presumed column number of this location. + /// + /// This cannot be affected by \#line, but is packaged here for convenience. + unsigned getColumn() const { + assert(isValid()); + return Col; + } + + /// Return the presumed include location of this location. + /// + /// This can be affected by GNU linemarker directives. + SourceLocation getIncludeLoc() const { + assert(isValid()); + return IncludeLoc; + } +}; + +class FileEntry; + +/// A SourceLocation and its associated SourceManager. +/// +/// This is useful for argument passing to functions that expect both objects. +class FullSourceLoc : public SourceLocation { + const SourceManager *SrcMgr = nullptr; + +public: + /// Creates a FullSourceLoc where isValid() returns \c false. + FullSourceLoc() = default; + + explicit FullSourceLoc(SourceLocation Loc, const SourceManager &SM) + : SourceLocation(Loc), SrcMgr(&SM) {} + + bool hasManager() const { + bool hasSrcMgr = SrcMgr != nullptr; + assert(hasSrcMgr == isValid() && "FullSourceLoc has location but no manager"); + return hasSrcMgr; + } + + /// \pre This FullSourceLoc has an associated SourceManager. + const SourceManager &getManager() const { + assert(SrcMgr && "SourceManager is NULL."); + return *SrcMgr; + } + + FileID getFileID() const; + + FullSourceLoc getExpansionLoc() const; + FullSourceLoc getSpellingLoc() const; + FullSourceLoc getFileLoc() const; + PresumedLoc getPresumedLoc(bool UseLineDirectives = true) const; + bool isMacroArgExpansion(FullSourceLoc *StartLoc = nullptr) const; + FullSourceLoc getImmediateMacroCallerLoc() const; + std::pair<FullSourceLoc, StringRef> getModuleImportLoc() const; + unsigned getFileOffset() const; + + unsigned getExpansionLineNumber(bool *Invalid = nullptr) const; + unsigned getExpansionColumnNumber(bool *Invalid = nullptr) const; + + unsigned getSpellingLineNumber(bool *Invalid = nullptr) const; + unsigned getSpellingColumnNumber(bool *Invalid = nullptr) const; + + const char *getCharacterData(bool *Invalid = nullptr) const; + + unsigned getLineNumber(bool *Invalid = nullptr) const; + unsigned getColumnNumber(bool *Invalid = nullptr) const; + + const FileEntry *getFileEntry() const; + + /// Return a StringRef to the source buffer data for the + /// specified FileID. + StringRef getBufferData(bool *Invalid = nullptr) const; + + /// Decompose the specified location into a raw FileID + Offset pair. + /// + /// The first element is the FileID, the second is the offset from the + /// start of the buffer of the location. + std::pair<FileID, unsigned> getDecomposedLoc() const; + + bool isInSystemHeader() const; + + /// Determines the order of 2 source locations in the translation unit. + /// + /// \returns true if this source location comes before 'Loc', false otherwise. + bool isBeforeInTranslationUnitThan(SourceLocation Loc) const; + + /// Determines the order of 2 source locations in the translation unit. + /// + /// \returns true if this source location comes before 'Loc', false otherwise. + bool isBeforeInTranslationUnitThan(FullSourceLoc Loc) const { + assert(Loc.isValid()); + assert(SrcMgr == Loc.SrcMgr && "Loc comes from another SourceManager!"); + return isBeforeInTranslationUnitThan((SourceLocation)Loc); + } + + /// Comparison function class, useful for sorting FullSourceLocs. + struct BeforeThanCompare { + bool operator()(const FullSourceLoc& lhs, const FullSourceLoc& rhs) const { + return lhs.isBeforeInTranslationUnitThan(rhs); + } + }; + + /// Prints information about this FullSourceLoc to stderr. + /// + /// This is useful for debugging. + void dump() const; + + friend bool + operator==(const FullSourceLoc &LHS, const FullSourceLoc &RHS) { + return LHS.getRawEncoding() == RHS.getRawEncoding() && + LHS.SrcMgr == RHS.SrcMgr; + } + + friend bool + operator!=(const FullSourceLoc &LHS, const FullSourceLoc &RHS) { + return !(LHS == RHS); + } +}; + +} // namespace clang + +namespace llvm { + + /// Define DenseMapInfo so that FileID's can be used as keys in DenseMap and + /// DenseSets. + template <> + struct DenseMapInfo<clang::FileID> { + static clang::FileID getEmptyKey() { + return {}; + } + + static clang::FileID getTombstoneKey() { + return clang::FileID::getSentinel(); + } + + static unsigned getHashValue(clang::FileID S) { + return S.getHashValue(); + } + + static bool isEqual(clang::FileID LHS, clang::FileID RHS) { + return LHS == RHS; + } + }; + + // Teach SmallPtrSet how to handle SourceLocation. + template<> + struct PointerLikeTypeTraits<clang::SourceLocation> { + enum { NumLowBitsAvailable = 0 }; + + static void *getAsVoidPointer(clang::SourceLocation L) { + return L.getPtrEncoding(); + } + + static clang::SourceLocation getFromVoidPointer(void *P) { + return clang::SourceLocation::getFromRawEncoding((unsigned)(uintptr_t)P); + } + }; + +} // namespace llvm + +#endif // LLVM_CLANG_BASIC_SOURCELOCATION_H diff --git a/clang-r353983/include/clang/Basic/SourceManager.h b/clang-r353983/include/clang/Basic/SourceManager.h new file mode 100644 index 00000000..2bdf1d5e --- /dev/null +++ b/clang-r353983/include/clang/Basic/SourceManager.h @@ -0,0 +1,1868 @@ +//===- SourceManager.h - Track and cache source files -----------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines the SourceManager interface. +/// +/// There are three different types of locations in a %file: a spelling +/// location, an expansion location, and a presumed location. +/// +/// Given an example of: +/// \code +/// #define min(x, y) x < y ? x : y +/// \endcode +/// +/// and then later on a use of min: +/// \code +/// #line 17 +/// return min(a, b); +/// \endcode +/// +/// The expansion location is the line in the source code where the macro +/// was expanded (the return statement), the spelling location is the +/// location in the source where the macro was originally defined, +/// and the presumed location is where the line directive states that +/// the line is 17, or any other line. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_SOURCEMANAGER_H +#define LLVM_CLANG_BASIC_SOURCEMANAGER_H + +#include "clang/Basic/Diagnostic.h" +#include "clang/Basic/FileManager.h" +#include "clang/Basic/SourceLocation.h" +#include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/BitVector.h" +#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/DenseSet.h" +#include "llvm/ADT/IntrusiveRefCntPtr.h" +#include "llvm/ADT/PointerIntPair.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/Allocator.h" +#include "llvm/Support/Compiler.h" +#include "llvm/Support/MemoryBuffer.h" +#include <cassert> +#include <cstddef> +#include <map> +#include <memory> +#include <string> +#include <utility> +#include <vector> + +namespace clang { + +class ASTReader; +class ASTWriter; +class LineTableInfo; +class SourceManager; + +/// Public enums and private classes that are part of the +/// SourceManager implementation. +namespace SrcMgr { + + /// Indicates whether a file or directory holds normal user code, + /// system code, or system code which is implicitly 'extern "C"' in C++ mode. + /// + /// Entire directories can be tagged with this (this is maintained by + /// DirectoryLookup and friends) as can specific FileInfos when a \#pragma + /// system_header is seen or in various other cases. + /// + enum CharacteristicKind { + C_User, C_System, C_ExternCSystem, C_User_ModuleMap, C_System_ModuleMap + }; + + /// Determine whether a file / directory characteristic is for system code. + inline bool isSystem(CharacteristicKind CK) { + return CK != C_User && CK != C_User_ModuleMap; + } + + /// Determine whether a file characteristic is for a module map. + inline bool isModuleMap(CharacteristicKind CK) { + return CK == C_User_ModuleMap || CK == C_System_ModuleMap; + } + + /// One instance of this struct is kept for every file loaded or used. + /// + /// This object owns the MemoryBuffer object. + class alignas(8) ContentCache { + enum CCFlags { + /// Whether the buffer is invalid. + InvalidFlag = 0x01, + + /// Whether the buffer should not be freed on destruction. + DoNotFreeFlag = 0x02 + }; + + /// The actual buffer containing the characters from the input + /// file. + /// + /// This is owned by the ContentCache object. The bits indicate + /// whether the buffer is invalid. + mutable llvm::PointerIntPair<llvm::MemoryBuffer *, 2> Buffer; + + public: + /// Reference to the file entry representing this ContentCache. + /// + /// This reference does not own the FileEntry object. + /// + /// It is possible for this to be NULL if the ContentCache encapsulates + /// an imaginary text buffer. + const FileEntry *OrigEntry; + + /// References the file which the contents were actually loaded from. + /// + /// Can be different from 'Entry' if we overridden the contents of one file + /// with the contents of another file. + const FileEntry *ContentsEntry; + + /// A bump pointer allocated array of offsets for each source line. + /// + /// This is lazily computed. This is owned by the SourceManager + /// BumpPointerAllocator object. + unsigned *SourceLineCache = nullptr; + + /// The number of lines in this ContentCache. + /// + /// This is only valid if SourceLineCache is non-null. + unsigned NumLines = 0; + + /// Indicates whether the buffer itself was provided to override + /// the actual file contents. + /// + /// When true, the original entry may be a virtual file that does not + /// exist. + unsigned BufferOverridden : 1; + + /// True if this content cache was initially created for a source + /// file considered as a system one. + unsigned IsSystemFile : 1; + + /// True if this file may be transient, that is, if it might not + /// exist at some later point in time when this content entry is used, + /// after serialization and deserialization. + unsigned IsTransient : 1; + + ContentCache(const FileEntry *Ent = nullptr) : ContentCache(Ent, Ent) {} + + ContentCache(const FileEntry *Ent, const FileEntry *contentEnt) + : Buffer(nullptr, false), OrigEntry(Ent), ContentsEntry(contentEnt), + BufferOverridden(false), IsSystemFile(false), IsTransient(false) {} + + /// The copy ctor does not allow copies where source object has either + /// a non-NULL Buffer or SourceLineCache. Ownership of allocated memory + /// is not transferred, so this is a logical error. + ContentCache(const ContentCache &RHS) + : Buffer(nullptr, false), BufferOverridden(false), IsSystemFile(false), + IsTransient(false) { + OrigEntry = RHS.OrigEntry; + ContentsEntry = RHS.ContentsEntry; + + assert(RHS.Buffer.getPointer() == nullptr && + RHS.SourceLineCache == nullptr && + "Passed ContentCache object cannot own a buffer."); + + NumLines = RHS.NumLines; + } + + ContentCache &operator=(const ContentCache& RHS) = delete; + + ~ContentCache(); + + /// Returns the memory buffer for the associated content. + /// + /// \param Diag Object through which diagnostics will be emitted if the + /// buffer cannot be retrieved. + /// + /// \param Loc If specified, is the location that invalid file diagnostics + /// will be emitted at. + /// + /// \param Invalid If non-NULL, will be set \c true if an error occurred. + llvm::MemoryBuffer *getBuffer(DiagnosticsEngine &Diag, + const SourceManager &SM, + SourceLocation Loc = SourceLocation(), + bool *Invalid = nullptr) const; + + /// Returns the size of the content encapsulated by this + /// ContentCache. + /// + /// This can be the size of the source file or the size of an + /// arbitrary scratch buffer. If the ContentCache encapsulates a source + /// file this size is retrieved from the file's FileEntry. + unsigned getSize() const; + + /// Returns the number of bytes actually mapped for this + /// ContentCache. + /// + /// This can be 0 if the MemBuffer was not actually expanded. + unsigned getSizeBytesMapped() const; + + /// Returns the kind of memory used to back the memory buffer for + /// this content cache. This is used for performance analysis. + llvm::MemoryBuffer::BufferKind getMemoryBufferKind() const; + + /// Get the underlying buffer, returning NULL if the buffer is not + /// yet available. + llvm::MemoryBuffer *getRawBuffer() const { return Buffer.getPointer(); } + + /// Replace the existing buffer (which will be deleted) + /// with the given buffer. + void replaceBuffer(llvm::MemoryBuffer *B, bool DoNotFree = false); + + /// Determine whether the buffer itself is invalid. + bool isBufferInvalid() const { + return Buffer.getInt() & InvalidFlag; + } + + /// Determine whether the buffer should be freed. + bool shouldFreeBuffer() const { + return (Buffer.getInt() & DoNotFreeFlag) == 0; + } + }; + + // Assert that the \c ContentCache objects will always be 8-byte aligned so + // that we can pack 3 bits of integer into pointers to such objects. + static_assert(alignof(ContentCache) >= 8, + "ContentCache must be 8-byte aligned."); + + /// Information about a FileID, basically just the logical file + /// that it represents and include stack information. + /// + /// Each FileInfo has include stack information, indicating where it came + /// from. This information encodes the \#include chain that a token was + /// expanded from. The main include file has an invalid IncludeLoc. + /// + /// FileInfos contain a "ContentCache *", with the contents of the file. + /// + class FileInfo { + friend class clang::SourceManager; + friend class clang::ASTWriter; + friend class clang::ASTReader; + + /// The location of the \#include that brought in this file. + /// + /// This is an invalid SLOC for the main file (top of the \#include chain). + unsigned IncludeLoc; // Really a SourceLocation + + /// Number of FileIDs (files and macros) that were created during + /// preprocessing of this \#include, including this SLocEntry. + /// + /// Zero means the preprocessor didn't provide such info for this SLocEntry. + unsigned NumCreatedFIDs : 31; + + /// Whether this FileInfo has any \#line directives. + unsigned HasLineDirectives : 1; + + /// The content cache and the characteristic of the file. + llvm::PointerIntPair<const ContentCache*, 3, CharacteristicKind> + ContentAndKind; + + public: + /// Return a FileInfo object. + static FileInfo get(SourceLocation IL, const ContentCache *Con, + CharacteristicKind FileCharacter) { + FileInfo X; + X.IncludeLoc = IL.getRawEncoding(); + X.NumCreatedFIDs = 0; + X.HasLineDirectives = false; + X.ContentAndKind.setPointer(Con); + X.ContentAndKind.setInt(FileCharacter); + return X; + } + + SourceLocation getIncludeLoc() const { + return SourceLocation::getFromRawEncoding(IncludeLoc); + } + + const ContentCache *getContentCache() const { + return ContentAndKind.getPointer(); + } + + /// Return whether this is a system header or not. + CharacteristicKind getFileCharacteristic() const { + return ContentAndKind.getInt(); + } + + /// Return true if this FileID has \#line directives in it. + bool hasLineDirectives() const { return HasLineDirectives; } + + /// Set the flag that indicates that this FileID has + /// line table entries associated with it. + void setHasLineDirectives() { + HasLineDirectives = true; + } + }; + + /// Each ExpansionInfo encodes the expansion location - where + /// the token was ultimately expanded, and the SpellingLoc - where the actual + /// character data for the token came from. + class ExpansionInfo { + // Really these are all SourceLocations. + + /// Where the spelling for the token can be found. + unsigned SpellingLoc; + + /// In a macro expansion, ExpansionLocStart and ExpansionLocEnd + /// indicate the start and end of the expansion. In object-like macros, + /// they will be the same. In a function-like macro expansion, the start + /// will be the identifier and the end will be the ')'. Finally, in + /// macro-argument instantiations, the end will be 'SourceLocation()', an + /// invalid location. + unsigned ExpansionLocStart, ExpansionLocEnd; + + /// Whether the expansion range is a token range. + bool ExpansionIsTokenRange; + + public: + SourceLocation getSpellingLoc() const { + SourceLocation SpellLoc = SourceLocation::getFromRawEncoding(SpellingLoc); + return SpellLoc.isInvalid() ? getExpansionLocStart() : SpellLoc; + } + + SourceLocation getExpansionLocStart() const { + return SourceLocation::getFromRawEncoding(ExpansionLocStart); + } + + SourceLocation getExpansionLocEnd() const { + SourceLocation EndLoc = + SourceLocation::getFromRawEncoding(ExpansionLocEnd); + return EndLoc.isInvalid() ? getExpansionLocStart() : EndLoc; + } + + bool isExpansionTokenRange() const { + return ExpansionIsTokenRange; + } + + CharSourceRange getExpansionLocRange() const { + return CharSourceRange( + SourceRange(getExpansionLocStart(), getExpansionLocEnd()), + isExpansionTokenRange()); + } + + bool isMacroArgExpansion() const { + // Note that this needs to return false for default constructed objects. + return getExpansionLocStart().isValid() && + SourceLocation::getFromRawEncoding(ExpansionLocEnd).isInvalid(); + } + + bool isMacroBodyExpansion() const { + return getExpansionLocStart().isValid() && + SourceLocation::getFromRawEncoding(ExpansionLocEnd).isValid(); + } + + bool isFunctionMacroExpansion() const { + return getExpansionLocStart().isValid() && + getExpansionLocStart() != getExpansionLocEnd(); + } + + /// Return a ExpansionInfo for an expansion. + /// + /// Start and End specify the expansion range (where the macro is + /// expanded), and SpellingLoc specifies the spelling location (where + /// the characters from the token come from). All three can refer to + /// normal File SLocs or expansion locations. + static ExpansionInfo create(SourceLocation SpellingLoc, + SourceLocation Start, SourceLocation End, + bool ExpansionIsTokenRange = true) { + ExpansionInfo X; + X.SpellingLoc = SpellingLoc.getRawEncoding(); + X.ExpansionLocStart = Start.getRawEncoding(); + X.ExpansionLocEnd = End.getRawEncoding(); + X.ExpansionIsTokenRange = ExpansionIsTokenRange; + return X; + } + + /// Return a special ExpansionInfo for the expansion of + /// a macro argument into a function-like macro's body. + /// + /// ExpansionLoc specifies the expansion location (where the macro is + /// expanded). This doesn't need to be a range because a macro is always + /// expanded at a macro parameter reference, and macro parameters are + /// always exactly one token. SpellingLoc specifies the spelling location + /// (where the characters from the token come from). ExpansionLoc and + /// SpellingLoc can both refer to normal File SLocs or expansion locations. + /// + /// Given the code: + /// \code + /// #define F(x) f(x) + /// F(42); + /// \endcode + /// + /// When expanding '\c F(42)', the '\c x' would call this with an + /// SpellingLoc pointing at '\c 42' and an ExpansionLoc pointing at its + /// location in the definition of '\c F'. + static ExpansionInfo createForMacroArg(SourceLocation SpellingLoc, + SourceLocation ExpansionLoc) { + // We store an intentionally invalid source location for the end of the + // expansion range to mark that this is a macro argument location rather + // than a normal one. + return create(SpellingLoc, ExpansionLoc, SourceLocation()); + } + + /// Return a special ExpansionInfo representing a token that ends + /// prematurely. This is used to model a '>>' token that has been split + /// into '>' tokens and similar cases. Unlike for the other forms of + /// expansion, the expansion range in this case is a character range, not + /// a token range. + static ExpansionInfo createForTokenSplit(SourceLocation SpellingLoc, + SourceLocation Start, + SourceLocation End) { + return create(SpellingLoc, Start, End, false); + } + }; + + /// This is a discriminated union of FileInfo and ExpansionInfo. + /// + /// SourceManager keeps an array of these objects, and they are uniquely + /// identified by the FileID datatype. + class SLocEntry { + unsigned Offset : 31; + unsigned IsExpansion : 1; + union { + FileInfo File; + ExpansionInfo Expansion; + }; + + public: + SLocEntry() : Offset(), IsExpansion(), File() {} + + unsigned getOffset() const { return Offset; } + + bool isExpansion() const { return IsExpansion; } + bool isFile() const { return !isExpansion(); } + + const FileInfo &getFile() const { + assert(isFile() && "Not a file SLocEntry!"); + return File; + } + + const ExpansionInfo &getExpansion() const { + assert(isExpansion() && "Not a macro expansion SLocEntry!"); + return Expansion; + } + + static SLocEntry get(unsigned Offset, const FileInfo &FI) { + assert(!(Offset & (1u << 31)) && "Offset is too large"); + SLocEntry E; + E.Offset = Offset; + E.IsExpansion = false; + E.File = FI; + return E; + } + + static SLocEntry get(unsigned Offset, const ExpansionInfo &Expansion) { + assert(!(Offset & (1u << 31)) && "Offset is too large"); + SLocEntry E; + E.Offset = Offset; + E.IsExpansion = true; + E.Expansion = Expansion; + return E; + } + }; + +} // namespace SrcMgr + +/// External source of source location entries. +class ExternalSLocEntrySource { +public: + virtual ~ExternalSLocEntrySource(); + + /// Read the source location entry with index ID, which will always be + /// less than -1. + /// + /// \returns true if an error occurred that prevented the source-location + /// entry from being loaded. + virtual bool ReadSLocEntry(int ID) = 0; + + /// Retrieve the module import location and name for the given ID, if + /// in fact it was loaded from a module (rather than, say, a precompiled + /// header). + virtual std::pair<SourceLocation, StringRef> getModuleImportLoc(int ID) = 0; +}; + +/// Holds the cache used by isBeforeInTranslationUnit. +/// +/// The cache structure is complex enough to be worth breaking out of +/// SourceManager. +class InBeforeInTUCacheEntry { + /// The FileID's of the cached query. + /// + /// If these match up with a subsequent query, the result can be reused. + FileID LQueryFID, RQueryFID; + + /// True if LQueryFID was created before RQueryFID. + /// + /// This is used to compare macro expansion locations. + bool IsLQFIDBeforeRQFID; + + /// The file found in common between the two \#include traces, i.e., + /// the nearest common ancestor of the \#include tree. + FileID CommonFID; + + /// The offset of the previous query in CommonFID. + /// + /// Usually, this represents the location of the \#include for QueryFID, but + /// if LQueryFID is a parent of RQueryFID (or vice versa) then these can be a + /// random token in the parent. + unsigned LCommonOffset, RCommonOffset; + +public: + /// Return true if the currently cached values match up with + /// the specified LHS/RHS query. + /// + /// If not, we can't use the cache. + bool isCacheValid(FileID LHS, FileID RHS) const { + return LQueryFID == LHS && RQueryFID == RHS; + } + + /// If the cache is valid, compute the result given the + /// specified offsets in the LHS/RHS FileID's. + bool getCachedResult(unsigned LOffset, unsigned ROffset) const { + // If one of the query files is the common file, use the offset. Otherwise, + // use the #include loc in the common file. + if (LQueryFID != CommonFID) LOffset = LCommonOffset; + if (RQueryFID != CommonFID) ROffset = RCommonOffset; + + // It is common for multiple macro expansions to be "included" from the same + // location (expansion location), in which case use the order of the FileIDs + // to determine which came first. This will also take care the case where + // one of the locations points at the inclusion/expansion point of the other + // in which case its FileID will come before the other. + if (LOffset == ROffset) + return IsLQFIDBeforeRQFID; + + return LOffset < ROffset; + } + + /// Set up a new query. + void setQueryFIDs(FileID LHS, FileID RHS, bool isLFIDBeforeRFID) { + assert(LHS != RHS); + LQueryFID = LHS; + RQueryFID = RHS; + IsLQFIDBeforeRQFID = isLFIDBeforeRFID; + } + + void clear() { + LQueryFID = RQueryFID = FileID(); + IsLQFIDBeforeRQFID = false; + } + + void setCommonLoc(FileID commonFID, unsigned lCommonOffset, + unsigned rCommonOffset) { + CommonFID = commonFID; + LCommonOffset = lCommonOffset; + RCommonOffset = rCommonOffset; + } +}; + +/// The stack used when building modules on demand, which is used +/// to provide a link between the source managers of the different compiler +/// instances. +using ModuleBuildStack = ArrayRef<std::pair<std::string, FullSourceLoc>>; + +/// This class handles loading and caching of source files into memory. +/// +/// This object owns the MemoryBuffer objects for all of the loaded +/// files and assigns unique FileID's for each unique \#include chain. +/// +/// The SourceManager can be queried for information about SourceLocation +/// objects, turning them into either spelling or expansion locations. Spelling +/// locations represent where the bytes corresponding to a token came from and +/// expansion locations represent where the location is in the user's view. In +/// the case of a macro expansion, for example, the spelling location indicates +/// where the expanded token came from and the expansion location specifies +/// where it was expanded. +class SourceManager : public RefCountedBase<SourceManager> { + /// DiagnosticsEngine object. + DiagnosticsEngine &Diag; + + FileManager &FileMgr; + + mutable llvm::BumpPtrAllocator ContentCacheAlloc; + + /// Memoized information about all of the files tracked by this + /// SourceManager. + /// + /// This map allows us to merge ContentCache entries based + /// on their FileEntry*. All ContentCache objects will thus have unique, + /// non-null, FileEntry pointers. + llvm::DenseMap<const FileEntry*, SrcMgr::ContentCache*> FileInfos; + + /// True if the ContentCache for files that are overridden by other + /// files, should report the original file name. Defaults to true. + bool OverridenFilesKeepOriginalName = true; + + /// True if non-system source files should be treated as volatile + /// (likely to change while trying to use them). Defaults to false. + bool UserFilesAreVolatile; + + /// True if all files read during this compilation should be treated + /// as transient (may not be present in later compilations using a module + /// file created from this compilation). Defaults to false. + bool FilesAreTransient = false; + + struct OverriddenFilesInfoTy { + /// Files that have been overridden with the contents from another + /// file. + llvm::DenseMap<const FileEntry *, const FileEntry *> OverriddenFiles; + + /// Files that were overridden with a memory buffer. + llvm::DenseSet<const FileEntry *> OverriddenFilesWithBuffer; + }; + + /// Lazily create the object keeping overridden files info, since + /// it is uncommonly used. + std::unique_ptr<OverriddenFilesInfoTy> OverriddenFilesInfo; + + OverriddenFilesInfoTy &getOverriddenFilesInfo() { + if (!OverriddenFilesInfo) + OverriddenFilesInfo.reset(new OverriddenFilesInfoTy); + return *OverriddenFilesInfo; + } + + /// Information about various memory buffers that we have read in. + /// + /// All FileEntry* within the stored ContentCache objects are NULL, + /// as they do not refer to a file. + std::vector<SrcMgr::ContentCache*> MemBufferInfos; + + /// The table of SLocEntries that are local to this module. + /// + /// Positive FileIDs are indexes into this table. Entry 0 indicates an invalid + /// expansion. + SmallVector<SrcMgr::SLocEntry, 0> LocalSLocEntryTable; + + /// The table of SLocEntries that are loaded from other modules. + /// + /// Negative FileIDs are indexes into this table. To get from ID to an index, + /// use (-ID - 2). + mutable SmallVector<SrcMgr::SLocEntry, 0> LoadedSLocEntryTable; + + /// The starting offset of the next local SLocEntry. + /// + /// This is LocalSLocEntryTable.back().Offset + the size of that entry. + unsigned NextLocalOffset; + + /// The starting offset of the latest batch of loaded SLocEntries. + /// + /// This is LoadedSLocEntryTable.back().Offset, except that that entry might + /// not have been loaded, so that value would be unknown. + unsigned CurrentLoadedOffset; + + /// The highest possible offset is 2^31-1, so CurrentLoadedOffset + /// starts at 2^31. + static const unsigned MaxLoadedOffset = 1U << 31U; + + /// A bitmap that indicates whether the entries of LoadedSLocEntryTable + /// have already been loaded from the external source. + /// + /// Same indexing as LoadedSLocEntryTable. + llvm::BitVector SLocEntryLoaded; + + /// An external source for source location entries. + ExternalSLocEntrySource *ExternalSLocEntries = nullptr; + + /// A one-entry cache to speed up getFileID. + /// + /// LastFileIDLookup records the last FileID looked up or created, because it + /// is very common to look up many tokens from the same file. + mutable FileID LastFileIDLookup; + + /// Holds information for \#line directives. + /// + /// This is referenced by indices from SLocEntryTable. + LineTableInfo *LineTable = nullptr; + + /// These ivars serve as a cache used in the getLineNumber + /// method which is used to speedup getLineNumber calls to nearby locations. + mutable FileID LastLineNoFileIDQuery; + mutable SrcMgr::ContentCache *LastLineNoContentCache; + mutable unsigned LastLineNoFilePos; + mutable unsigned LastLineNoResult; + + /// The file ID for the main source file of the translation unit. + FileID MainFileID; + + /// The file ID for the precompiled preamble there is one. + FileID PreambleFileID; + + // Statistics for -print-stats. + mutable unsigned NumLinearScans = 0; + mutable unsigned NumBinaryProbes = 0; + + /// Associates a FileID with its "included/expanded in" decomposed + /// location. + /// + /// Used to cache results from and speed-up \c getDecomposedIncludedLoc + /// function. + mutable llvm::DenseMap<FileID, std::pair<FileID, unsigned>> IncludedLocMap; + + /// The key value into the IsBeforeInTUCache table. + using IsBeforeInTUCacheKey = std::pair<FileID, FileID>; + + /// The IsBeforeInTranslationUnitCache is a mapping from FileID pairs + /// to cache results. + using InBeforeInTUCache = + llvm::DenseMap<IsBeforeInTUCacheKey, InBeforeInTUCacheEntry>; + + /// Cache results for the isBeforeInTranslationUnit method. + mutable InBeforeInTUCache IBTUCache; + mutable InBeforeInTUCacheEntry IBTUCacheOverflow; + + /// Return the cache entry for comparing the given file IDs + /// for isBeforeInTranslationUnit. + InBeforeInTUCacheEntry &getInBeforeInTUCache(FileID LFID, FileID RFID) const; + + // Cache for the "fake" buffer used for error-recovery purposes. + mutable std::unique_ptr<llvm::MemoryBuffer> FakeBufferForRecovery; + + mutable std::unique_ptr<SrcMgr::ContentCache> FakeContentCacheForRecovery; + + /// Lazily computed map of macro argument chunks to their expanded + /// source location. + using MacroArgsMap = std::map<unsigned, SourceLocation>; + + mutable llvm::DenseMap<FileID, std::unique_ptr<MacroArgsMap>> + MacroArgsCacheMap; + + /// The stack of modules being built, which is used to detect + /// cycles in the module dependency graph as modules are being built, as + /// well as to describe why we're rebuilding a particular module. + /// + /// There is no way to set this value from the command line. If we ever need + /// to do so (e.g., if on-demand module construction moves out-of-process), + /// we can add a cc1-level option to do so. + SmallVector<std::pair<std::string, FullSourceLoc>, 2> StoredModuleBuildStack; + +public: + SourceManager(DiagnosticsEngine &Diag, FileManager &FileMgr, + bool UserFilesAreVolatile = false); + explicit SourceManager(const SourceManager &) = delete; + SourceManager &operator=(const SourceManager &) = delete; + ~SourceManager(); + + void clearIDTables(); + + /// Initialize this source manager suitably to replay the compilation + /// described by \p Old. Requires that \p Old outlive \p *this. + void initializeForReplay(const SourceManager &Old); + + DiagnosticsEngine &getDiagnostics() const { return Diag; } + + FileManager &getFileManager() const { return FileMgr; } + + /// Set true if the SourceManager should report the original file name + /// for contents of files that were overridden by other files. Defaults to + /// true. + void setOverridenFilesKeepOriginalName(bool value) { + OverridenFilesKeepOriginalName = value; + } + + /// True if non-system source files should be treated as volatile + /// (likely to change while trying to use them). + bool userFilesAreVolatile() const { return UserFilesAreVolatile; } + + /// Retrieve the module build stack. + ModuleBuildStack getModuleBuildStack() const { + return StoredModuleBuildStack; + } + + /// Set the module build stack. + void setModuleBuildStack(ModuleBuildStack stack) { + StoredModuleBuildStack.clear(); + StoredModuleBuildStack.append(stack.begin(), stack.end()); + } + + /// Push an entry to the module build stack. + void pushModuleBuildStack(StringRef moduleName, FullSourceLoc importLoc) { + StoredModuleBuildStack.push_back(std::make_pair(moduleName.str(),importLoc)); + } + + //===--------------------------------------------------------------------===// + // MainFileID creation and querying methods. + //===--------------------------------------------------------------------===// + + /// Returns the FileID of the main source file. + FileID getMainFileID() const { return MainFileID; } + + /// Set the file ID for the main source file. + void setMainFileID(FileID FID) { + MainFileID = FID; + } + + /// Set the file ID for the precompiled preamble. + void setPreambleFileID(FileID Preamble) { + assert(PreambleFileID.isInvalid() && "PreambleFileID already set!"); + PreambleFileID = Preamble; + } + + /// Get the file ID for the precompiled preamble if there is one. + FileID getPreambleFileID() const { return PreambleFileID; } + + //===--------------------------------------------------------------------===// + // Methods to create new FileID's and macro expansions. + //===--------------------------------------------------------------------===// + + /// Create a new FileID that represents the specified file + /// being \#included from the specified IncludePosition. + /// + /// This translates NULL into standard input. + FileID createFileID(const FileEntry *SourceFile, SourceLocation IncludePos, + SrcMgr::CharacteristicKind FileCharacter, + int LoadedID = 0, unsigned LoadedOffset = 0) { + const SrcMgr::ContentCache *IR = + getOrCreateContentCache(SourceFile, isSystem(FileCharacter)); + assert(IR && "getOrCreateContentCache() cannot return NULL"); + return createFileID(IR, IncludePos, FileCharacter, LoadedID, LoadedOffset); + } + + /// Create a new FileID that represents the specified memory buffer. + /// + /// This does no caching of the buffer and takes ownership of the + /// MemoryBuffer, so only pass a MemoryBuffer to this once. + FileID createFileID(std::unique_ptr<llvm::MemoryBuffer> Buffer, + SrcMgr::CharacteristicKind FileCharacter = SrcMgr::C_User, + int LoadedID = 0, unsigned LoadedOffset = 0, + SourceLocation IncludeLoc = SourceLocation()) { + return createFileID( + createMemBufferContentCache(Buffer.release(), /*DoNotFree*/ false), + IncludeLoc, FileCharacter, LoadedID, LoadedOffset); + } + + enum UnownedTag { Unowned }; + + /// Create a new FileID that represents the specified memory buffer. + /// + /// This does no caching of the buffer and takes ownership of the + /// MemoryBuffer, so only pass a MemoryBuffer to this once. + FileID createFileID(UnownedTag, llvm::MemoryBuffer *Buffer, + SrcMgr::CharacteristicKind FileCharacter = SrcMgr::C_User, + int LoadedID = 0, unsigned LoadedOffset = 0, + SourceLocation IncludeLoc = SourceLocation()) { + return createFileID(createMemBufferContentCache(Buffer, /*DoNotFree*/true), + IncludeLoc, FileCharacter, LoadedID, LoadedOffset); + } + + /// Get the FileID for \p SourceFile if it exists. Otherwise, create a + /// new FileID for the \p SourceFile. + FileID getOrCreateFileID(const FileEntry *SourceFile, + SrcMgr::CharacteristicKind FileCharacter) { + FileID ID = translateFile(SourceFile); + return ID.isValid() ? ID : createFileID(SourceFile, SourceLocation(), + FileCharacter); + } + + /// Return a new SourceLocation that encodes the + /// fact that a token from SpellingLoc should actually be referenced from + /// ExpansionLoc, and that it represents the expansion of a macro argument + /// into the function-like macro body. + SourceLocation createMacroArgExpansionLoc(SourceLocation Loc, + SourceLocation ExpansionLoc, + unsigned TokLength); + + /// Return a new SourceLocation that encodes the fact + /// that a token from SpellingLoc should actually be referenced from + /// ExpansionLoc. + SourceLocation createExpansionLoc(SourceLocation Loc, + SourceLocation ExpansionLocStart, + SourceLocation ExpansionLocEnd, + unsigned TokLength, + bool ExpansionIsTokenRange = true, + int LoadedID = 0, + unsigned LoadedOffset = 0); + + /// Return a new SourceLocation that encodes that the token starting + /// at \p TokenStart ends prematurely at \p TokenEnd. + SourceLocation createTokenSplitLoc(SourceLocation SpellingLoc, + SourceLocation TokenStart, + SourceLocation TokenEnd); + + /// Retrieve the memory buffer associated with the given file. + /// + /// \param Invalid If non-NULL, will be set \c true if an error + /// occurs while retrieving the memory buffer. + llvm::MemoryBuffer *getMemoryBufferForFile(const FileEntry *File, + bool *Invalid = nullptr); + + /// Override the contents of the given source file by providing an + /// already-allocated buffer. + /// + /// \param SourceFile the source file whose contents will be overridden. + /// + /// \param Buffer the memory buffer whose contents will be used as the + /// data in the given source file. + /// + /// \param DoNotFree If true, then the buffer will not be freed when the + /// source manager is destroyed. + void overrideFileContents(const FileEntry *SourceFile, + llvm::MemoryBuffer *Buffer, bool DoNotFree); + void overrideFileContents(const FileEntry *SourceFile, + std::unique_ptr<llvm::MemoryBuffer> Buffer) { + overrideFileContents(SourceFile, Buffer.release(), /*DoNotFree*/ false); + } + + /// Override the given source file with another one. + /// + /// \param SourceFile the source file which will be overridden. + /// + /// \param NewFile the file whose contents will be used as the + /// data instead of the contents of the given source file. + void overrideFileContents(const FileEntry *SourceFile, + const FileEntry *NewFile); + + /// Returns true if the file contents have been overridden. + bool isFileOverridden(const FileEntry *File) const { + if (OverriddenFilesInfo) { + if (OverriddenFilesInfo->OverriddenFilesWithBuffer.count(File)) + return true; + if (OverriddenFilesInfo->OverriddenFiles.find(File) != + OverriddenFilesInfo->OverriddenFiles.end()) + return true; + } + return false; + } + + /// Disable overridding the contents of a file, previously enabled + /// with #overrideFileContents. + /// + /// This should be called before parsing has begun. + void disableFileContentsOverride(const FileEntry *File); + + /// Specify that a file is transient. + void setFileIsTransient(const FileEntry *SourceFile); + + /// Specify that all files that are read during this compilation are + /// transient. + void setAllFilesAreTransient(bool Transient) { + FilesAreTransient = Transient; + } + + //===--------------------------------------------------------------------===// + // FileID manipulation methods. + //===--------------------------------------------------------------------===// + + /// Return the buffer for the specified FileID. + /// + /// If there is an error opening this buffer the first time, this + /// manufactures a temporary buffer and returns a non-empty error string. + llvm::MemoryBuffer *getBuffer(FileID FID, SourceLocation Loc, + bool *Invalid = nullptr) const { + bool MyInvalid = false; + const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &MyInvalid); + if (MyInvalid || !Entry.isFile()) { + if (Invalid) + *Invalid = true; + + return getFakeBufferForRecovery(); + } + + return Entry.getFile().getContentCache()->getBuffer(Diag, *this, Loc, + Invalid); + } + + llvm::MemoryBuffer *getBuffer(FileID FID, bool *Invalid = nullptr) const { + bool MyInvalid = false; + const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &MyInvalid); + if (MyInvalid || !Entry.isFile()) { + if (Invalid) + *Invalid = true; + + return getFakeBufferForRecovery(); + } + + return Entry.getFile().getContentCache()->getBuffer(Diag, *this, + SourceLocation(), + Invalid); + } + + /// Returns the FileEntry record for the provided FileID. + const FileEntry *getFileEntryForID(FileID FID) const { + bool MyInvalid = false; + const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &MyInvalid); + if (MyInvalid || !Entry.isFile()) + return nullptr; + + const SrcMgr::ContentCache *Content = Entry.getFile().getContentCache(); + if (!Content) + return nullptr; + return Content->OrigEntry; + } + + /// Returns the FileEntry record for the provided SLocEntry. + const FileEntry *getFileEntryForSLocEntry(const SrcMgr::SLocEntry &sloc) const + { + const SrcMgr::ContentCache *Content = sloc.getFile().getContentCache(); + if (!Content) + return nullptr; + return Content->OrigEntry; + } + + /// Return a StringRef to the source buffer data for the + /// specified FileID. + /// + /// \param FID The file ID whose contents will be returned. + /// \param Invalid If non-NULL, will be set true if an error occurred. + StringRef getBufferData(FileID FID, bool *Invalid = nullptr) const; + + /// Get the number of FileIDs (files and macros) that were created + /// during preprocessing of \p FID, including it. + unsigned getNumCreatedFIDsForFileID(FileID FID) const { + bool Invalid = false; + const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &Invalid); + if (Invalid || !Entry.isFile()) + return 0; + + return Entry.getFile().NumCreatedFIDs; + } + + /// Set the number of FileIDs (files and macros) that were created + /// during preprocessing of \p FID, including it. + void setNumCreatedFIDsForFileID(FileID FID, unsigned NumFIDs, + bool Force = false) const { + bool Invalid = false; + const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &Invalid); + if (Invalid || !Entry.isFile()) + return; + + assert((Force || Entry.getFile().NumCreatedFIDs == 0) && "Already set!"); + const_cast<SrcMgr::FileInfo &>(Entry.getFile()).NumCreatedFIDs = NumFIDs; + } + + //===--------------------------------------------------------------------===// + // SourceLocation manipulation methods. + //===--------------------------------------------------------------------===// + + /// Return the FileID for a SourceLocation. + /// + /// This is a very hot method that is used for all SourceManager queries + /// that start with a SourceLocation object. It is responsible for finding + /// the entry in SLocEntryTable which contains the specified location. + /// + FileID getFileID(SourceLocation SpellingLoc) const { + unsigned SLocOffset = SpellingLoc.getOffset(); + + // If our one-entry cache covers this offset, just return it. + if (isOffsetInFileID(LastFileIDLookup, SLocOffset)) + return LastFileIDLookup; + + return getFileIDSlow(SLocOffset); + } + + /// Return the filename of the file containing a SourceLocation. + StringRef getFilename(SourceLocation SpellingLoc) const { + if (const FileEntry *F = getFileEntryForID(getFileID(SpellingLoc))) + return F->getName(); + return StringRef(); + } + + /// Return the source location corresponding to the first byte of + /// the specified file. + SourceLocation getLocForStartOfFile(FileID FID) const { + bool Invalid = false; + const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &Invalid); + if (Invalid || !Entry.isFile()) + return SourceLocation(); + + unsigned FileOffset = Entry.getOffset(); + return SourceLocation::getFileLoc(FileOffset); + } + + /// Return the source location corresponding to the last byte of the + /// specified file. + SourceLocation getLocForEndOfFile(FileID FID) const { + bool Invalid = false; + const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &Invalid); + if (Invalid || !Entry.isFile()) + return SourceLocation(); + + unsigned FileOffset = Entry.getOffset(); + return SourceLocation::getFileLoc(FileOffset + getFileIDSize(FID)); + } + + /// Returns the include location if \p FID is a \#include'd file + /// otherwise it returns an invalid location. + SourceLocation getIncludeLoc(FileID FID) const { + bool Invalid = false; + const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &Invalid); + if (Invalid || !Entry.isFile()) + return SourceLocation(); + + return Entry.getFile().getIncludeLoc(); + } + + // Returns the import location if the given source location is + // located within a module, or an invalid location if the source location + // is within the current translation unit. + std::pair<SourceLocation, StringRef> + getModuleImportLoc(SourceLocation Loc) const { + FileID FID = getFileID(Loc); + + // Positive file IDs are in the current translation unit, and -1 is a + // placeholder. + if (FID.ID >= -1) + return std::make_pair(SourceLocation(), ""); + + return ExternalSLocEntries->getModuleImportLoc(FID.ID); + } + + /// Given a SourceLocation object \p Loc, return the expansion + /// location referenced by the ID. + SourceLocation getExpansionLoc(SourceLocation Loc) const { + // Handle the non-mapped case inline, defer to out of line code to handle + // expansions. + if (Loc.isFileID()) return Loc; + return getExpansionLocSlowCase(Loc); + } + + /// Given \p Loc, if it is a macro location return the expansion + /// location or the spelling location, depending on if it comes from a + /// macro argument or not. + SourceLocation getFileLoc(SourceLocation Loc) const { + if (Loc.isFileID()) return Loc; + return getFileLocSlowCase(Loc); + } + + /// Return the start/end of the expansion information for an + /// expansion location. + /// + /// \pre \p Loc is required to be an expansion location. + CharSourceRange getImmediateExpansionRange(SourceLocation Loc) const; + + /// Given a SourceLocation object, return the range of + /// tokens covered by the expansion in the ultimate file. + CharSourceRange getExpansionRange(SourceLocation Loc) const; + + /// Given a SourceRange object, return the range of + /// tokens or characters covered by the expansion in the ultimate file. + CharSourceRange getExpansionRange(SourceRange Range) const { + SourceLocation Begin = getExpansionRange(Range.getBegin()).getBegin(); + CharSourceRange End = getExpansionRange(Range.getEnd()); + return CharSourceRange(SourceRange(Begin, End.getEnd()), + End.isTokenRange()); + } + + /// Given a CharSourceRange object, return the range of + /// tokens or characters covered by the expansion in the ultimate file. + CharSourceRange getExpansionRange(CharSourceRange Range) const { + CharSourceRange Expansion = getExpansionRange(Range.getAsRange()); + if (Expansion.getEnd() == Range.getEnd()) + Expansion.setTokenRange(Range.isTokenRange()); + return Expansion; + } + + /// Given a SourceLocation object, return the spelling + /// location referenced by the ID. + /// + /// This is the place where the characters that make up the lexed token + /// can be found. + SourceLocation getSpellingLoc(SourceLocation Loc) const { + // Handle the non-mapped case inline, defer to out of line code to handle + // expansions. + if (Loc.isFileID()) return Loc; + return getSpellingLocSlowCase(Loc); + } + + /// Given a SourceLocation object, return the spelling location + /// referenced by the ID. + /// + /// This is the first level down towards the place where the characters + /// that make up the lexed token can be found. This should not generally + /// be used by clients. + SourceLocation getImmediateSpellingLoc(SourceLocation Loc) const; + + /// Form a SourceLocation from a FileID and Offset pair. + SourceLocation getComposedLoc(FileID FID, unsigned Offset) const { + bool Invalid = false; + const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &Invalid); + if (Invalid) + return SourceLocation(); + + unsigned GlobalOffset = Entry.getOffset() + Offset; + return Entry.isFile() ? SourceLocation::getFileLoc(GlobalOffset) + : SourceLocation::getMacroLoc(GlobalOffset); + } + + /// Decompose the specified location into a raw FileID + Offset pair. + /// + /// The first element is the FileID, the second is the offset from the + /// start of the buffer of the location. + std::pair<FileID, unsigned> getDecomposedLoc(SourceLocation Loc) const { + FileID FID = getFileID(Loc); + bool Invalid = false; + const SrcMgr::SLocEntry &E = getSLocEntry(FID, &Invalid); + if (Invalid) + return std::make_pair(FileID(), 0); + return std::make_pair(FID, Loc.getOffset()-E.getOffset()); + } + + /// Decompose the specified location into a raw FileID + Offset pair. + /// + /// If the location is an expansion record, walk through it until we find + /// the final location expanded. + std::pair<FileID, unsigned> + getDecomposedExpansionLoc(SourceLocation Loc) const { + FileID FID = getFileID(Loc); + bool Invalid = false; + const SrcMgr::SLocEntry *E = &getSLocEntry(FID, &Invalid); + if (Invalid) + return std::make_pair(FileID(), 0); + + unsigned Offset = Loc.getOffset()-E->getOffset(); + if (Loc.isFileID()) + return std::make_pair(FID, Offset); + + return getDecomposedExpansionLocSlowCase(E); + } + + /// Decompose the specified location into a raw FileID + Offset pair. + /// + /// If the location is an expansion record, walk through it until we find + /// its spelling record. + std::pair<FileID, unsigned> + getDecomposedSpellingLoc(SourceLocation Loc) const { + FileID FID = getFileID(Loc); + bool Invalid = false; + const SrcMgr::SLocEntry *E = &getSLocEntry(FID, &Invalid); + if (Invalid) + return std::make_pair(FileID(), 0); + + unsigned Offset = Loc.getOffset()-E->getOffset(); + if (Loc.isFileID()) + return std::make_pair(FID, Offset); + return getDecomposedSpellingLocSlowCase(E, Offset); + } + + /// Returns the "included/expanded in" decomposed location of the given + /// FileID. + std::pair<FileID, unsigned> getDecomposedIncludedLoc(FileID FID) const; + + /// Returns the offset from the start of the file that the + /// specified SourceLocation represents. + /// + /// This is not very meaningful for a macro ID. + unsigned getFileOffset(SourceLocation SpellingLoc) const { + return getDecomposedLoc(SpellingLoc).second; + } + + /// Tests whether the given source location represents a macro + /// argument's expansion into the function-like macro definition. + /// + /// \param StartLoc If non-null and function returns true, it is set to the + /// start location of the macro argument expansion. + /// + /// Such source locations only appear inside of the expansion + /// locations representing where a particular function-like macro was + /// expanded. + bool isMacroArgExpansion(SourceLocation Loc, + SourceLocation *StartLoc = nullptr) const; + + /// Tests whether the given source location represents the expansion of + /// a macro body. + /// + /// This is equivalent to testing whether the location is part of a macro + /// expansion but not the expansion of an argument to a function-like macro. + bool isMacroBodyExpansion(SourceLocation Loc) const; + + /// Returns true if the given MacroID location points at the beginning + /// of the immediate macro expansion. + /// + /// \param MacroBegin If non-null and function returns true, it is set to the + /// begin location of the immediate macro expansion. + bool isAtStartOfImmediateMacroExpansion(SourceLocation Loc, + SourceLocation *MacroBegin = nullptr) const; + + /// Returns true if the given MacroID location points at the character + /// end of the immediate macro expansion. + /// + /// \param MacroEnd If non-null and function returns true, it is set to the + /// character end location of the immediate macro expansion. + bool + isAtEndOfImmediateMacroExpansion(SourceLocation Loc, + SourceLocation *MacroEnd = nullptr) const; + + /// Returns true if \p Loc is inside the [\p Start, +\p Length) + /// chunk of the source location address space. + /// + /// If it's true and \p RelativeOffset is non-null, it will be set to the + /// relative offset of \p Loc inside the chunk. + bool isInSLocAddrSpace(SourceLocation Loc, + SourceLocation Start, unsigned Length, + unsigned *RelativeOffset = nullptr) const { + assert(((Start.getOffset() < NextLocalOffset && + Start.getOffset()+Length <= NextLocalOffset) || + (Start.getOffset() >= CurrentLoadedOffset && + Start.getOffset()+Length < MaxLoadedOffset)) && + "Chunk is not valid SLoc address space"); + unsigned LocOffs = Loc.getOffset(); + unsigned BeginOffs = Start.getOffset(); + unsigned EndOffs = BeginOffs + Length; + if (LocOffs >= BeginOffs && LocOffs < EndOffs) { + if (RelativeOffset) + *RelativeOffset = LocOffs - BeginOffs; + return true; + } + + return false; + } + + /// Return true if both \p LHS and \p RHS are in the local source + /// location address space or the loaded one. + /// + /// If it's true and \p RelativeOffset is non-null, it will be set to the + /// offset of \p RHS relative to \p LHS. + bool isInSameSLocAddrSpace(SourceLocation LHS, SourceLocation RHS, + int *RelativeOffset) const { + unsigned LHSOffs = LHS.getOffset(), RHSOffs = RHS.getOffset(); + bool LHSLoaded = LHSOffs >= CurrentLoadedOffset; + bool RHSLoaded = RHSOffs >= CurrentLoadedOffset; + + if (LHSLoaded == RHSLoaded) { + if (RelativeOffset) + *RelativeOffset = RHSOffs - LHSOffs; + return true; + } + + return false; + } + + //===--------------------------------------------------------------------===// + // Queries about the code at a SourceLocation. + //===--------------------------------------------------------------------===// + + /// Return a pointer to the start of the specified location + /// in the appropriate spelling MemoryBuffer. + /// + /// \param Invalid If non-NULL, will be set \c true if an error occurs. + const char *getCharacterData(SourceLocation SL, + bool *Invalid = nullptr) const; + + /// Return the column # for the specified file position. + /// + /// This is significantly cheaper to compute than the line number. This + /// returns zero if the column number isn't known. This may only be called + /// on a file sloc, so you must choose a spelling or expansion location + /// before calling this method. + unsigned getColumnNumber(FileID FID, unsigned FilePos, + bool *Invalid = nullptr) const; + unsigned getSpellingColumnNumber(SourceLocation Loc, + bool *Invalid = nullptr) const; + unsigned getExpansionColumnNumber(SourceLocation Loc, + bool *Invalid = nullptr) const; + unsigned getPresumedColumnNumber(SourceLocation Loc, + bool *Invalid = nullptr) const; + + /// Given a SourceLocation, return the spelling line number + /// for the position indicated. + /// + /// This requires building and caching a table of line offsets for the + /// MemoryBuffer, so this is not cheap: use only when about to emit a + /// diagnostic. + unsigned getLineNumber(FileID FID, unsigned FilePos, bool *Invalid = nullptr) const; + unsigned getSpellingLineNumber(SourceLocation Loc, bool *Invalid = nullptr) const; + unsigned getExpansionLineNumber(SourceLocation Loc, bool *Invalid = nullptr) const; + unsigned getPresumedLineNumber(SourceLocation Loc, bool *Invalid = nullptr) const; + + /// Return the filename or buffer identifier of the buffer the + /// location is in. + /// + /// Note that this name does not respect \#line directives. Use + /// getPresumedLoc for normal clients. + StringRef getBufferName(SourceLocation Loc, bool *Invalid = nullptr) const; + + /// Return the file characteristic of the specified source + /// location, indicating whether this is a normal file, a system + /// header, or an "implicit extern C" system header. + /// + /// This state can be modified with flags on GNU linemarker directives like: + /// \code + /// # 4 "foo.h" 3 + /// \endcode + /// which changes all source locations in the current file after that to be + /// considered to be from a system header. + SrcMgr::CharacteristicKind getFileCharacteristic(SourceLocation Loc) const; + + /// Returns the "presumed" location of a SourceLocation specifies. + /// + /// A "presumed location" can be modified by \#line or GNU line marker + /// directives. This provides a view on the data that a user should see + /// in diagnostics, for example. + /// + /// Note that a presumed location is always given as the expansion point of + /// an expansion location, not at the spelling location. + /// + /// \returns The presumed location of the specified SourceLocation. If the + /// presumed location cannot be calculated (e.g., because \p Loc is invalid + /// or the file containing \p Loc has changed on disk), returns an invalid + /// presumed location. + PresumedLoc getPresumedLoc(SourceLocation Loc, + bool UseLineDirectives = true) const; + + /// Returns whether the PresumedLoc for a given SourceLocation is + /// in the main file. + /// + /// This computes the "presumed" location for a SourceLocation, then checks + /// whether it came from a file other than the main file. This is different + /// from isWrittenInMainFile() because it takes line marker directives into + /// account. + bool isInMainFile(SourceLocation Loc) const; + + /// Returns true if the spelling locations for both SourceLocations + /// are part of the same file buffer. + /// + /// This check ignores line marker directives. + bool isWrittenInSameFile(SourceLocation Loc1, SourceLocation Loc2) const { + return getFileID(Loc1) == getFileID(Loc2); + } + + /// Returns true if the spelling location for the given location + /// is in the main file buffer. + /// + /// This check ignores line marker directives. + bool isWrittenInMainFile(SourceLocation Loc) const { + return getFileID(Loc) == getMainFileID(); + } + + /// Returns whether \p Loc is located in a <built-in> file. + bool isWrittenInBuiltinFile(SourceLocation Loc) const { + StringRef Filename(getPresumedLoc(Loc).getFilename()); + return Filename.equals("<built-in>"); + } + + /// Returns whether \p Loc is located in a <command line> file. + bool isWrittenInCommandLineFile(SourceLocation Loc) const { + StringRef Filename(getPresumedLoc(Loc).getFilename()); + return Filename.equals("<command line>"); + } + + /// Returns whether \p Loc is located in a <scratch space> file. + bool isWrittenInScratchSpace(SourceLocation Loc) const { + StringRef Filename(getPresumedLoc(Loc).getFilename()); + return Filename.equals("<scratch space>"); + } + + /// Returns if a SourceLocation is in a system header. + bool isInSystemHeader(SourceLocation Loc) const { + return isSystem(getFileCharacteristic(Loc)); + } + + /// Returns if a SourceLocation is in an "extern C" system header. + bool isInExternCSystemHeader(SourceLocation Loc) const { + return getFileCharacteristic(Loc) == SrcMgr::C_ExternCSystem; + } + + /// Returns whether \p Loc is expanded from a macro in a system header. + bool isInSystemMacro(SourceLocation loc) const { + if (!loc.isMacroID()) + return false; + + // This happens when the macro is the result of a paste, in that case + // its spelling is the scratch memory, so we take the parent context. + if (isWrittenInScratchSpace(getSpellingLoc(loc))) + return isInSystemHeader(getSpellingLoc(getImmediateMacroCallerLoc(loc))); + + return isInSystemHeader(getSpellingLoc(loc)); + } + + /// The size of the SLocEntry that \p FID represents. + unsigned getFileIDSize(FileID FID) const; + + /// Given a specific FileID, returns true if \p Loc is inside that + /// FileID chunk and sets relative offset (offset of \p Loc from beginning + /// of FileID) to \p relativeOffset. + bool isInFileID(SourceLocation Loc, FileID FID, + unsigned *RelativeOffset = nullptr) const { + unsigned Offs = Loc.getOffset(); + if (isOffsetInFileID(FID, Offs)) { + if (RelativeOffset) + *RelativeOffset = Offs - getSLocEntry(FID).getOffset(); + return true; + } + + return false; + } + + //===--------------------------------------------------------------------===// + // Line Table Manipulation Routines + //===--------------------------------------------------------------------===// + + /// Return the uniqued ID for the specified filename. + unsigned getLineTableFilenameID(StringRef Str); + + /// Add a line note to the line table for the FileID and offset + /// specified by Loc. + /// + /// If FilenameID is -1, it is considered to be unspecified. + void AddLineNote(SourceLocation Loc, unsigned LineNo, int FilenameID, + bool IsFileEntry, bool IsFileExit, + SrcMgr::CharacteristicKind FileKind); + + /// Determine if the source manager has a line table. + bool hasLineTable() const { return LineTable != nullptr; } + + /// Retrieve the stored line table. + LineTableInfo &getLineTable(); + + //===--------------------------------------------------------------------===// + // Queries for performance analysis. + //===--------------------------------------------------------------------===// + + /// Return the total amount of physical memory allocated by the + /// ContentCache allocator. + size_t getContentCacheSize() const { + return ContentCacheAlloc.getTotalMemory(); + } + + struct MemoryBufferSizes { + const size_t malloc_bytes; + const size_t mmap_bytes; + + MemoryBufferSizes(size_t malloc_bytes, size_t mmap_bytes) + : malloc_bytes(malloc_bytes), mmap_bytes(mmap_bytes) {} + }; + + /// Return the amount of memory used by memory buffers, breaking down + /// by heap-backed versus mmap'ed memory. + MemoryBufferSizes getMemoryBufferSizes() const; + + /// Return the amount of memory used for various side tables and + /// data structures in the SourceManager. + size_t getDataStructureSizes() const; + + //===--------------------------------------------------------------------===// + // Other miscellaneous methods. + //===--------------------------------------------------------------------===// + + /// Get the source location for the given file:line:col triplet. + /// + /// If the source file is included multiple times, the source location will + /// be based upon the first inclusion. + SourceLocation translateFileLineCol(const FileEntry *SourceFile, + unsigned Line, unsigned Col) const; + + /// Get the FileID for the given file. + /// + /// If the source file is included multiple times, the FileID will be the + /// first inclusion. + FileID translateFile(const FileEntry *SourceFile) const; + + /// Get the source location in \p FID for the given line:col. + /// Returns null location if \p FID is not a file SLocEntry. + SourceLocation translateLineCol(FileID FID, + unsigned Line, unsigned Col) const; + + /// If \p Loc points inside a function macro argument, the returned + /// location will be the macro location in which the argument was expanded. + /// If a macro argument is used multiple times, the expanded location will + /// be at the first expansion of the argument. + /// e.g. + /// MY_MACRO(foo); + /// ^ + /// Passing a file location pointing at 'foo', will yield a macro location + /// where 'foo' was expanded into. + SourceLocation getMacroArgExpandedLocation(SourceLocation Loc) const; + + /// Determines the order of 2 source locations in the translation unit. + /// + /// \returns true if LHS source location comes before RHS, false otherwise. + bool isBeforeInTranslationUnit(SourceLocation LHS, SourceLocation RHS) const; + + /// Determines whether the two decomposed source location is in the + /// same translation unit. As a byproduct, it also calculates the order + /// of the source locations in case they are in the same TU. + /// + /// \returns Pair of bools the first component is true if the two locations + /// are in the same TU. The second bool is true if the first is true + /// and \p LOffs is before \p ROffs. + std::pair<bool, bool> + isInTheSameTranslationUnit(std::pair<FileID, unsigned> &LOffs, + std::pair<FileID, unsigned> &ROffs) const; + + /// Determines the order of 2 source locations in the "source location + /// address space". + bool isBeforeInSLocAddrSpace(SourceLocation LHS, SourceLocation RHS) const { + return isBeforeInSLocAddrSpace(LHS, RHS.getOffset()); + } + + /// Determines the order of a source location and a source location + /// offset in the "source location address space". + /// + /// Note that we always consider source locations loaded from + bool isBeforeInSLocAddrSpace(SourceLocation LHS, unsigned RHS) const { + unsigned LHSOffset = LHS.getOffset(); + bool LHSLoaded = LHSOffset >= CurrentLoadedOffset; + bool RHSLoaded = RHS >= CurrentLoadedOffset; + if (LHSLoaded == RHSLoaded) + return LHSOffset < RHS; + + return LHSLoaded; + } + + /// Return true if the Point is within Start and End. + bool isPointWithin(SourceLocation Location, SourceLocation Start, + SourceLocation End) const { + return Location == Start || Location == End || + (isBeforeInTranslationUnit(Start, Location) && + isBeforeInTranslationUnit(Location, End)); + } + + // Iterators over FileInfos. + using fileinfo_iterator = + llvm::DenseMap<const FileEntry*, SrcMgr::ContentCache*>::const_iterator; + + fileinfo_iterator fileinfo_begin() const { return FileInfos.begin(); } + fileinfo_iterator fileinfo_end() const { return FileInfos.end(); } + bool hasFileInfo(const FileEntry *File) const { + return FileInfos.find(File) != FileInfos.end(); + } + + /// Print statistics to stderr. + void PrintStats() const; + + void dump() const; + + /// Get the number of local SLocEntries we have. + unsigned local_sloc_entry_size() const { return LocalSLocEntryTable.size(); } + + /// Get a local SLocEntry. This is exposed for indexing. + const SrcMgr::SLocEntry &getLocalSLocEntry(unsigned Index, + bool *Invalid = nullptr) const { + assert(Index < LocalSLocEntryTable.size() && "Invalid index"); + return LocalSLocEntryTable[Index]; + } + + /// Get the number of loaded SLocEntries we have. + unsigned loaded_sloc_entry_size() const { return LoadedSLocEntryTable.size();} + + /// Get a loaded SLocEntry. This is exposed for indexing. + const SrcMgr::SLocEntry &getLoadedSLocEntry(unsigned Index, + bool *Invalid = nullptr) const { + assert(Index < LoadedSLocEntryTable.size() && "Invalid index"); + if (SLocEntryLoaded[Index]) + return LoadedSLocEntryTable[Index]; + return loadSLocEntry(Index, Invalid); + } + + const SrcMgr::SLocEntry &getSLocEntry(FileID FID, + bool *Invalid = nullptr) const { + if (FID.ID == 0 || FID.ID == -1) { + if (Invalid) *Invalid = true; + return LocalSLocEntryTable[0]; + } + return getSLocEntryByID(FID.ID, Invalid); + } + + unsigned getNextLocalOffset() const { return NextLocalOffset; } + + void setExternalSLocEntrySource(ExternalSLocEntrySource *Source) { + assert(LoadedSLocEntryTable.empty() && + "Invalidating existing loaded entries"); + ExternalSLocEntries = Source; + } + + /// Allocate a number of loaded SLocEntries, which will be actually + /// loaded on demand from the external source. + /// + /// NumSLocEntries will be allocated, which occupy a total of TotalSize space + /// in the global source view. The lowest ID and the base offset of the + /// entries will be returned. + std::pair<int, unsigned> + AllocateLoadedSLocEntries(unsigned NumSLocEntries, unsigned TotalSize); + + /// Returns true if \p Loc came from a PCH/Module. + bool isLoadedSourceLocation(SourceLocation Loc) const { + return Loc.getOffset() >= CurrentLoadedOffset; + } + + /// Returns true if \p Loc did not come from a PCH/Module. + bool isLocalSourceLocation(SourceLocation Loc) const { + return Loc.getOffset() < NextLocalOffset; + } + + /// Returns true if \p FID came from a PCH/Module. + bool isLoadedFileID(FileID FID) const { + assert(FID.ID != -1 && "Using FileID sentinel value"); + return FID.ID < 0; + } + + /// Returns true if \p FID did not come from a PCH/Module. + bool isLocalFileID(FileID FID) const { + return !isLoadedFileID(FID); + } + + /// Gets the location of the immediate macro caller, one level up the stack + /// toward the initial macro typed into the source. + SourceLocation getImmediateMacroCallerLoc(SourceLocation Loc) const { + if (!Loc.isMacroID()) return Loc; + + // When we have the location of (part of) an expanded parameter, its + // spelling location points to the argument as expanded in the macro call, + // and therefore is used to locate the macro caller. + if (isMacroArgExpansion(Loc)) + return getImmediateSpellingLoc(Loc); + + // Otherwise, the caller of the macro is located where this macro is + // expanded (while the spelling is part of the macro definition). + return getImmediateExpansionRange(Loc).getBegin(); + } + + /// \return Location of the top-level macro caller. + SourceLocation getTopMacroCallerLoc(SourceLocation Loc) const; + +private: + friend class ASTReader; + friend class ASTWriter; + + llvm::MemoryBuffer *getFakeBufferForRecovery() const; + const SrcMgr::ContentCache *getFakeContentCacheForRecovery() const; + + const SrcMgr::SLocEntry &loadSLocEntry(unsigned Index, bool *Invalid) const; + + /// Get the entry with the given unwrapped FileID. + const SrcMgr::SLocEntry &getSLocEntryByID(int ID, + bool *Invalid = nullptr) const { + assert(ID != -1 && "Using FileID sentinel value"); + if (ID < 0) + return getLoadedSLocEntryByID(ID, Invalid); + return getLocalSLocEntry(static_cast<unsigned>(ID), Invalid); + } + + const SrcMgr::SLocEntry & + getLoadedSLocEntryByID(int ID, bool *Invalid = nullptr) const { + return getLoadedSLocEntry(static_cast<unsigned>(-ID - 2), Invalid); + } + + /// Implements the common elements of storing an expansion info struct into + /// the SLocEntry table and producing a source location that refers to it. + SourceLocation createExpansionLocImpl(const SrcMgr::ExpansionInfo &Expansion, + unsigned TokLength, + int LoadedID = 0, + unsigned LoadedOffset = 0); + + /// Return true if the specified FileID contains the + /// specified SourceLocation offset. This is a very hot method. + inline bool isOffsetInFileID(FileID FID, unsigned SLocOffset) const { + const SrcMgr::SLocEntry &Entry = getSLocEntry(FID); + // If the entry is after the offset, it can't contain it. + if (SLocOffset < Entry.getOffset()) return false; + + // If this is the very last entry then it does. + if (FID.ID == -2) + return true; + + // If it is the last local entry, then it does if the location is local. + if (FID.ID+1 == static_cast<int>(LocalSLocEntryTable.size())) + return SLocOffset < NextLocalOffset; + + // Otherwise, the entry after it has to not include it. This works for both + // local and loaded entries. + return SLocOffset < getSLocEntryByID(FID.ID+1).getOffset(); + } + + /// Returns the previous in-order FileID or an invalid FileID if there + /// is no previous one. + FileID getPreviousFileID(FileID FID) const; + + /// Returns the next in-order FileID or an invalid FileID if there is + /// no next one. + FileID getNextFileID(FileID FID) const; + + /// Create a new fileID for the specified ContentCache and + /// include position. + /// + /// This works regardless of whether the ContentCache corresponds to a + /// file or some other input source. + FileID createFileID(const SrcMgr::ContentCache* File, + SourceLocation IncludePos, + SrcMgr::CharacteristicKind DirCharacter, + int LoadedID, unsigned LoadedOffset); + + const SrcMgr::ContentCache * + getOrCreateContentCache(const FileEntry *SourceFile, + bool isSystemFile = false); + + /// Create a new ContentCache for the specified memory buffer. + const SrcMgr::ContentCache * + createMemBufferContentCache(llvm::MemoryBuffer *Buf, bool DoNotFree); + + FileID getFileIDSlow(unsigned SLocOffset) const; + FileID getFileIDLocal(unsigned SLocOffset) const; + FileID getFileIDLoaded(unsigned SLocOffset) const; + + SourceLocation getExpansionLocSlowCase(SourceLocation Loc) const; + SourceLocation getSpellingLocSlowCase(SourceLocation Loc) const; + SourceLocation getFileLocSlowCase(SourceLocation Loc) const; + + std::pair<FileID, unsigned> + getDecomposedExpansionLocSlowCase(const SrcMgr::SLocEntry *E) const; + std::pair<FileID, unsigned> + getDecomposedSpellingLocSlowCase(const SrcMgr::SLocEntry *E, + unsigned Offset) const; + void computeMacroArgsCache(MacroArgsMap &MacroArgsCache, FileID FID) const; + void associateFileChunkWithMacroArgExp(MacroArgsMap &MacroArgsCache, + FileID FID, + SourceLocation SpellLoc, + SourceLocation ExpansionLoc, + unsigned ExpansionLength) const; +}; + +/// Comparison function object. +template<typename T> +class BeforeThanCompare; + +/// Compare two source locations. +template<> +class BeforeThanCompare<SourceLocation> { + SourceManager &SM; + +public: + explicit BeforeThanCompare(SourceManager &SM) : SM(SM) {} + + bool operator()(SourceLocation LHS, SourceLocation RHS) const { + return SM.isBeforeInTranslationUnit(LHS, RHS); + } +}; + +/// Compare two non-overlapping source ranges. +template<> +class BeforeThanCompare<SourceRange> { + SourceManager &SM; + +public: + explicit BeforeThanCompare(SourceManager &SM) : SM(SM) {} + + bool operator()(SourceRange LHS, SourceRange RHS) const { + return SM.isBeforeInTranslationUnit(LHS.getBegin(), RHS.getBegin()); + } +}; + +/// SourceManager and necessary depdencies (e.g. VFS, FileManager) for a single +/// in-memorty file. +class SourceManagerForFile { +public: + /// Creates SourceManager and necessary depdencies (e.g. VFS, FileManager). + /// The main file in the SourceManager will be \p FileName with \p Content. + SourceManagerForFile(StringRef FileName, StringRef Content); + + SourceManager &get() { + assert(SourceMgr); + return *SourceMgr; + } + +private: + // The order of these fields are important - they should be in the same order + // as they are created in `createSourceManagerForFile` so that they can be + // deleted in the reverse order as they are created. + std::unique_ptr<FileManager> FileMgr; + std::unique_ptr<DiagnosticsEngine> Diagnostics; + std::unique_ptr<SourceManager> SourceMgr; +}; + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_SOURCEMANAGER_H diff --git a/clang-r353983/include/clang/Basic/SourceManagerInternals.h b/clang-r353983/include/clang/Basic/SourceManagerInternals.h new file mode 100644 index 00000000..e67b93ae --- /dev/null +++ b/clang-r353983/include/clang/Basic/SourceManagerInternals.h @@ -0,0 +1,133 @@ +//===- SourceManagerInternals.h - SourceManager Internals -------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines implementation details of the clang::SourceManager class. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_SOURCEMANAGERINTERNALS_H +#define LLVM_CLANG_BASIC_SOURCEMANAGERINTERNALS_H + +#include "clang/Basic/SourceLocation.h" +#include "clang/Basic/SourceManager.h" +#include "llvm/ADT/StringMap.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/Allocator.h" +#include <cassert> +#include <map> +#include <vector> + +namespace clang { + +//===----------------------------------------------------------------------===// +// Line Table Implementation +//===----------------------------------------------------------------------===// + +struct LineEntry { + /// The offset in this file that the line entry occurs at. + unsigned FileOffset; + + /// The presumed line number of this line entry: \#line 4. + unsigned LineNo; + + /// The ID of the filename identified by this line entry: + /// \#line 4 "foo.c". This is -1 if not specified. + int FilenameID; + + /// Set the 0 if no flags, 1 if a system header, + SrcMgr::CharacteristicKind FileKind; + + /// The offset of the virtual include stack location, + /// which is manipulated by GNU linemarker directives. + /// + /// If this is 0 then there is no virtual \#includer. + unsigned IncludeOffset; + + static LineEntry get(unsigned Offs, unsigned Line, int Filename, + SrcMgr::CharacteristicKind FileKind, + unsigned IncludeOffset) { + LineEntry E; + E.FileOffset = Offs; + E.LineNo = Line; + E.FilenameID = Filename; + E.FileKind = FileKind; + E.IncludeOffset = IncludeOffset; + return E; + } +}; + +// needed for FindNearestLineEntry (upper_bound of LineEntry) +inline bool operator<(const LineEntry &lhs, const LineEntry &rhs) { + // FIXME: should check the other field? + return lhs.FileOffset < rhs.FileOffset; +} + +inline bool operator<(const LineEntry &E, unsigned Offset) { + return E.FileOffset < Offset; +} + +inline bool operator<(unsigned Offset, const LineEntry &E) { + return Offset < E.FileOffset; +} + +/// Used to hold and unique data used to represent \#line information. +class LineTableInfo { + /// Map used to assign unique IDs to filenames in \#line directives. + /// + /// This allows us to unique the filenames that + /// frequently reoccur and reference them with indices. FilenameIDs holds + /// the mapping from string -> ID, and FilenamesByID holds the mapping of ID + /// to string. + llvm::StringMap<unsigned, llvm::BumpPtrAllocator> FilenameIDs; + std::vector<llvm::StringMapEntry<unsigned>*> FilenamesByID; + + /// Map from FileIDs to a list of line entries (sorted by the offset + /// at which they occur in the file). + std::map<FileID, std::vector<LineEntry>> LineEntries; + +public: + void clear() { + FilenameIDs.clear(); + FilenamesByID.clear(); + LineEntries.clear(); + } + + unsigned getLineTableFilenameID(StringRef Str); + + StringRef getFilename(unsigned ID) const { + assert(ID < FilenamesByID.size() && "Invalid FilenameID"); + return FilenamesByID[ID]->getKey(); + } + + unsigned getNumFilenames() const { return FilenamesByID.size(); } + + void AddLineNote(FileID FID, unsigned Offset, + unsigned LineNo, int FilenameID, + unsigned EntryExit, SrcMgr::CharacteristicKind FileKind); + + + /// Find the line entry nearest to FID that is before it. + /// + /// If there is no line entry before \p Offset in \p FID, returns null. + const LineEntry *FindNearestLineEntry(FileID FID, unsigned Offset); + + // Low-level access + using iterator = std::map<FileID, std::vector<LineEntry>>::iterator; + + iterator begin() { return LineEntries.begin(); } + iterator end() { return LineEntries.end(); } + + /// Add a new line entry that has already been encoded into + /// the internal representation of the line table. + void AddEntry(FileID FID, const std::vector<LineEntry> &Entries); +}; + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_SOURCEMANAGERINTERNALS_H diff --git a/clang-r353983/include/clang/Basic/Specifiers.h b/clang-r353983/include/clang/Basic/Specifiers.h new file mode 100644 index 00000000..7256acaf --- /dev/null +++ b/clang-r353983/include/clang/Basic/Specifiers.h @@ -0,0 +1,330 @@ +//===--- Specifiers.h - Declaration and Type Specifiers ---------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines various enumerations that describe declaration and +/// type specifiers. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_SPECIFIERS_H +#define LLVM_CLANG_BASIC_SPECIFIERS_H + +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/DataTypes.h" +#include "llvm/Support/ErrorHandling.h" + +namespace clang { + /// Specifies the width of a type, e.g., short, long, or long long. + enum TypeSpecifierWidth { + TSW_unspecified, + TSW_short, + TSW_long, + TSW_longlong + }; + + /// Specifies the signedness of a type, e.g., signed or unsigned. + enum TypeSpecifierSign { + TSS_unspecified, + TSS_signed, + TSS_unsigned + }; + + enum TypeSpecifiersPipe { + TSP_unspecified, + TSP_pipe + }; + + /// Specifies the kind of type. + enum TypeSpecifierType { + TST_unspecified, + TST_void, + TST_char, + TST_wchar, // C++ wchar_t + TST_char8, // C++20 char8_t (proposed) + TST_char16, // C++11 char16_t + TST_char32, // C++11 char32_t + TST_int, + TST_int128, + TST_half, // OpenCL half, ARM NEON __fp16 + TST_Float16, // C11 extension ISO/IEC TS 18661-3 + TST_Accum, // ISO/IEC JTC1 SC22 WG14 N1169 Extension + TST_Fract, + TST_float, + TST_double, + TST_float128, + TST_bool, // _Bool + TST_decimal32, // _Decimal32 + TST_decimal64, // _Decimal64 + TST_decimal128, // _Decimal128 + TST_enum, + TST_union, + TST_struct, + TST_class, // C++ class type + TST_interface, // C++ (Microsoft-specific) __interface type + TST_typename, // Typedef, C++ class-name or enum name, etc. + TST_typeofType, + TST_typeofExpr, + TST_decltype, // C++11 decltype + TST_underlyingType, // __underlying_type for C++11 + TST_auto, // C++11 auto + TST_decltype_auto, // C++1y decltype(auto) + TST_auto_type, // __auto_type extension + TST_unknown_anytype, // __unknown_anytype extension + TST_atomic, // C11 _Atomic +#define GENERIC_IMAGE_TYPE(ImgType, Id) TST_##ImgType##_t, // OpenCL image types +#include "clang/Basic/OpenCLImageTypes.def" + TST_error // erroneous type + }; + + /// Structure that packs information about the type specifiers that + /// were written in a particular type specifier sequence. + struct WrittenBuiltinSpecs { + static_assert(TST_error < 1 << 6, "Type bitfield not wide enough for TST"); + /*DeclSpec::TST*/ unsigned Type : 6; + /*DeclSpec::TSS*/ unsigned Sign : 2; + /*DeclSpec::TSW*/ unsigned Width : 2; + unsigned ModeAttr : 1; + }; + + /// A C++ access specifier (public, private, protected), plus the + /// special value "none" which means different things in different contexts. + enum AccessSpecifier { + AS_public, + AS_protected, + AS_private, + AS_none + }; + + /// The categorization of expression values, currently following the + /// C++11 scheme. + enum ExprValueKind { + /// An r-value expression (a pr-value in the C++11 taxonomy) + /// produces a temporary value. + VK_RValue, + + /// An l-value expression is a reference to an object with + /// independent storage. + VK_LValue, + + /// An x-value expression is a reference to an object with + /// independent storage but which can be "moved", i.e. + /// efficiently cannibalized for its resources. + VK_XValue + }; + + /// A further classification of the kind of object referenced by an + /// l-value or x-value. + enum ExprObjectKind { + /// An ordinary object is located at an address in memory. + OK_Ordinary, + + /// A bitfield object is a bitfield on a C or C++ record. + OK_BitField, + + /// A vector component is an element or range of elements on a vector. + OK_VectorComponent, + + /// An Objective-C property is a logical field of an Objective-C + /// object which is read and written via Objective-C method calls. + OK_ObjCProperty, + + /// An Objective-C array/dictionary subscripting which reads an + /// object or writes at the subscripted array/dictionary element via + /// Objective-C method calls. + OK_ObjCSubscript + }; + + /// Describes the kind of template specialization that a + /// particular template specialization declaration represents. + enum TemplateSpecializationKind { + /// This template specialization was formed from a template-id but + /// has not yet been declared, defined, or instantiated. + TSK_Undeclared = 0, + /// This template specialization was implicitly instantiated from a + /// template. (C++ [temp.inst]). + TSK_ImplicitInstantiation, + /// This template specialization was declared or defined by an + /// explicit specialization (C++ [temp.expl.spec]) or partial + /// specialization (C++ [temp.class.spec]). + TSK_ExplicitSpecialization, + /// This template specialization was instantiated from a template + /// due to an explicit instantiation declaration request + /// (C++11 [temp.explicit]). + TSK_ExplicitInstantiationDeclaration, + /// This template specialization was instantiated from a template + /// due to an explicit instantiation definition request + /// (C++ [temp.explicit]). + TSK_ExplicitInstantiationDefinition + }; + + /// Determine whether this template specialization kind refers + /// to an instantiation of an entity (as opposed to a non-template or + /// an explicit specialization). + inline bool isTemplateInstantiation(TemplateSpecializationKind Kind) { + return Kind != TSK_Undeclared && Kind != TSK_ExplicitSpecialization; + } + + /// True if this template specialization kind is an explicit + /// specialization, explicit instantiation declaration, or explicit + /// instantiation definition. + inline bool isTemplateExplicitInstantiationOrSpecialization( + TemplateSpecializationKind Kind) { + switch (Kind) { + case TSK_ExplicitSpecialization: + case TSK_ExplicitInstantiationDeclaration: + case TSK_ExplicitInstantiationDefinition: + return true; + + case TSK_Undeclared: + case TSK_ImplicitInstantiation: + return false; + } + llvm_unreachable("bad template specialization kind"); + } + + /// Thread storage-class-specifier. + enum ThreadStorageClassSpecifier { + TSCS_unspecified, + /// GNU __thread. + TSCS___thread, + /// C++11 thread_local. Implies 'static' at block scope, but not at + /// class scope. + TSCS_thread_local, + /// C11 _Thread_local. Must be combined with either 'static' or 'extern' + /// if used at block scope. + TSCS__Thread_local + }; + + /// Storage classes. + enum StorageClass { + // These are legal on both functions and variables. + SC_None, + SC_Extern, + SC_Static, + SC_PrivateExtern, + + // These are only legal on variables. + SC_Auto, + SC_Register + }; + + /// Checks whether the given storage class is legal for functions. + inline bool isLegalForFunction(StorageClass SC) { + return SC <= SC_PrivateExtern; + } + + /// Checks whether the given storage class is legal for variables. + inline bool isLegalForVariable(StorageClass SC) { + return true; + } + + /// In-class initialization styles for non-static data members. + enum InClassInitStyle { + ICIS_NoInit, ///< No in-class initializer. + ICIS_CopyInit, ///< Copy initialization. + ICIS_ListInit ///< Direct list-initialization. + }; + + /// CallingConv - Specifies the calling convention that a function uses. + enum CallingConv { + CC_C, // __attribute__((cdecl)) + CC_X86StdCall, // __attribute__((stdcall)) + CC_X86FastCall, // __attribute__((fastcall)) + CC_X86ThisCall, // __attribute__((thiscall)) + CC_X86VectorCall, // __attribute__((vectorcall)) + CC_X86Pascal, // __attribute__((pascal)) + CC_Win64, // __attribute__((ms_abi)) + CC_X86_64SysV, // __attribute__((sysv_abi)) + CC_X86RegCall, // __attribute__((regcall)) + CC_AAPCS, // __attribute__((pcs("aapcs"))) + CC_AAPCS_VFP, // __attribute__((pcs("aapcs-vfp"))) + CC_IntelOclBicc, // __attribute__((intel_ocl_bicc)) + CC_SpirFunction, // default for OpenCL functions on SPIR target + CC_OpenCLKernel, // inferred for OpenCL kernels + CC_Swift, // __attribute__((swiftcall)) + CC_PreserveMost, // __attribute__((preserve_most)) + CC_PreserveAll, // __attribute__((preserve_all)) + CC_AArch64VectorCall, // __attribute__((aarch64_vector_pcs)) + }; + + /// Checks whether the given calling convention supports variadic + /// calls. Unprototyped calls also use the variadic call rules. + inline bool supportsVariadicCall(CallingConv CC) { + switch (CC) { + case CC_X86StdCall: + case CC_X86FastCall: + case CC_X86ThisCall: + case CC_X86RegCall: + case CC_X86Pascal: + case CC_X86VectorCall: + case CC_SpirFunction: + case CC_OpenCLKernel: + case CC_Swift: + return false; + default: + return true; + } + } + + /// The storage duration for an object (per C++ [basic.stc]). + enum StorageDuration { + SD_FullExpression, ///< Full-expression storage duration (for temporaries). + SD_Automatic, ///< Automatic storage duration (most local variables). + SD_Thread, ///< Thread storage duration. + SD_Static, ///< Static storage duration. + SD_Dynamic ///< Dynamic storage duration. + }; + + /// Describes the nullability of a particular type. + enum class NullabilityKind : uint8_t { + /// Values of this type can never be null. + NonNull = 0, + /// Values of this type can be null. + Nullable, + /// Whether values of this type can be null is (explicitly) + /// unspecified. This captures a (fairly rare) case where we + /// can't conclude anything about the nullability of the type even + /// though it has been considered. + Unspecified + }; + + /// Return true if \p L has a weaker nullability annotation than \p R. The + /// ordering is: Unspecified < Nullable < NonNull. + inline bool hasWeakerNullability(NullabilityKind L, NullabilityKind R) { + return uint8_t(L) > uint8_t(R); + } + + /// Retrieve the spelling of the given nullability kind. + llvm::StringRef getNullabilitySpelling(NullabilityKind kind, + bool isContextSensitive = false); + + /// Kinds of parameter ABI. + enum class ParameterABI { + /// This parameter uses ordinary ABI rules for its type. + Ordinary, + + /// This parameter (which must have pointer type) is a Swift + /// indirect result parameter. + SwiftIndirectResult, + + /// This parameter (which must have pointer-to-pointer type) uses + /// the special Swift error-result ABI treatment. There can be at + /// most one parameter on a given function that uses this treatment. + SwiftErrorResult, + + /// This parameter (which must have pointer type) uses the special + /// Swift context-pointer ABI treatment. There can be at + /// most one parameter on a given function that uses this treatment. + SwiftContext + }; + + llvm::StringRef getParameterABISpelling(ParameterABI kind); +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_SPECIFIERS_H diff --git a/clang-r353983/include/clang/Basic/Stack.h b/clang-r353983/include/clang/Basic/Stack.h new file mode 100644 index 00000000..e0b04099 --- /dev/null +++ b/clang-r353983/include/clang/Basic/Stack.h @@ -0,0 +1,26 @@ +//===--- Stack.h - Utilities for dealing with stack space -------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines utilities for dealing with stack allocation and stack space. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_STACK_H +#define LLVM_CLANG_BASIC_STACK_H + +#include <cstddef> + +namespace clang { + /// The amount of stack space that Clang would like to be provided with. + /// If less than this much is available, we may be unable to reach our + /// template instantiation depth limit and other similar limits. + constexpr size_t DesiredStackSize = 8 << 20; +} // end namespace clang + +#endif // LLVM_CLANG_BASIC_STACK_H diff --git a/clang-r353983/include/clang/Basic/SyncScope.h b/clang-r353983/include/clang/Basic/SyncScope.h new file mode 100644 index 00000000..3ebf40f7 --- /dev/null +++ b/clang-r353983/include/clang/Basic/SyncScope.h @@ -0,0 +1,153 @@ +//===--- SyncScope.h - Atomic synchronization scopes ------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Provides definitions for the atomic synchronization scopes. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_SYNCSCOPE_H +#define LLVM_CLANG_BASIC_SYNCSCOPE_H + +#include "clang/Basic/LangOptions.h" +#include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/StringRef.h" +#include <memory> + +namespace clang { + +/// Defines synch scope values used internally by clang. +/// +/// The enum values start from 0 and are contiguous. They are mainly used for +/// enumerating all supported synch scope values and mapping them to LLVM +/// synch scopes. Their numerical values may be different from the corresponding +/// synch scope enums used in source languages. +/// +/// In atomic builtin and expressions, language-specific synch scope enums are +/// used. Currently only OpenCL memory scope enums are supported and assumed +/// to be used by all languages. However, in the future, other languages may +/// define their own set of synch scope enums. The language-specific synch scope +/// values are represented by class AtomicScopeModel and its derived classes. +/// +/// To add a new enum value: +/// Add the enum value to enum class SyncScope. +/// Update enum value Last if necessary. +/// Update getAsString. +/// +enum class SyncScope { + OpenCLWorkGroup, + OpenCLDevice, + OpenCLAllSVMDevices, + OpenCLSubGroup, + Last = OpenCLSubGroup +}; + +inline llvm::StringRef getAsString(SyncScope S) { + switch (S) { + case SyncScope::OpenCLWorkGroup: + return "opencl_workgroup"; + case SyncScope::OpenCLDevice: + return "opencl_device"; + case SyncScope::OpenCLAllSVMDevices: + return "opencl_allsvmdevices"; + case SyncScope::OpenCLSubGroup: + return "opencl_subgroup"; + } + llvm_unreachable("Invalid synch scope"); +} + +/// Defines the kind of atomic scope models. +enum class AtomicScopeModelKind { None, OpenCL }; + +/// Defines the interface for synch scope model. +class AtomicScopeModel { +public: + virtual ~AtomicScopeModel() {} + /// Maps language specific synch scope values to internal + /// SyncScope enum. + virtual SyncScope map(unsigned S) const = 0; + + /// Check if the compile-time constant synch scope value + /// is valid. + virtual bool isValid(unsigned S) const = 0; + + /// Get all possible synch scope values that might be + /// encountered at runtime for the current language. + virtual ArrayRef<unsigned> getRuntimeValues() const = 0; + + /// If atomic builtin function is called with invalid + /// synch scope value at runtime, it will fall back to a valid + /// synch scope value returned by this function. + virtual unsigned getFallBackValue() const = 0; + + /// Create an atomic scope model by AtomicScopeModelKind. + /// \return an empty std::unique_ptr for AtomicScopeModelKind::None. + static std::unique_ptr<AtomicScopeModel> create(AtomicScopeModelKind K); +}; + +/// Defines the synch scope model for OpenCL. +class AtomicScopeOpenCLModel : public AtomicScopeModel { +public: + /// The enum values match the pre-defined macros + /// __OPENCL_MEMORY_SCOPE_*, which are used to define memory_scope_* + /// enums in opencl-c.h. + enum ID { + WorkGroup = 1, + Device = 2, + AllSVMDevices = 3, + SubGroup = 4, + Last = SubGroup + }; + + AtomicScopeOpenCLModel() {} + + SyncScope map(unsigned S) const override { + switch (static_cast<ID>(S)) { + case WorkGroup: + return SyncScope::OpenCLWorkGroup; + case Device: + return SyncScope::OpenCLDevice; + case AllSVMDevices: + return SyncScope::OpenCLAllSVMDevices; + case SubGroup: + return SyncScope::OpenCLSubGroup; + } + llvm_unreachable("Invalid language synch scope value"); + } + + bool isValid(unsigned S) const override { + return S >= static_cast<unsigned>(WorkGroup) && + S <= static_cast<unsigned>(Last); + } + + ArrayRef<unsigned> getRuntimeValues() const override { + static_assert(Last == SubGroup, "Does not include all synch scopes"); + static const unsigned Scopes[] = { + static_cast<unsigned>(WorkGroup), static_cast<unsigned>(Device), + static_cast<unsigned>(AllSVMDevices), static_cast<unsigned>(SubGroup)}; + return llvm::makeArrayRef(Scopes); + } + + unsigned getFallBackValue() const override { + return static_cast<unsigned>(AllSVMDevices); + } +}; + +inline std::unique_ptr<AtomicScopeModel> +AtomicScopeModel::create(AtomicScopeModelKind K) { + switch (K) { + case AtomicScopeModelKind::None: + return std::unique_ptr<AtomicScopeModel>{}; + case AtomicScopeModelKind::OpenCL: + return llvm::make_unique<AtomicScopeOpenCLModel>(); + } + llvm_unreachable("Invalid atomic scope model kind"); +} +} + +#endif diff --git a/clang-r353983/include/clang/Basic/TargetBuiltins.h b/clang-r353983/include/clang/Basic/TargetBuiltins.h new file mode 100644 index 00000000..50262fa3 --- /dev/null +++ b/clang-r353983/include/clang/Basic/TargetBuiltins.h @@ -0,0 +1,204 @@ +//===--- TargetBuiltins.h - Target specific builtin IDs ---------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Enumerates target-specific builtins in their own namespaces within +/// namespace ::clang. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_TARGETBUILTINS_H +#define LLVM_CLANG_BASIC_TARGETBUILTINS_H + +#include <stdint.h> +#include "clang/Basic/Builtins.h" +#undef PPC + +namespace clang { + + namespace NEON { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/BuiltinsNEON.def" + FirstTSBuiltin + }; + } + + /// ARM builtins + namespace ARM { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1, + LastNEONBuiltin = NEON::FirstTSBuiltin - 1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/BuiltinsARM.def" + LastTSBuiltin + }; + } + + /// AArch64 builtins + namespace AArch64 { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1, + LastNEONBuiltin = NEON::FirstTSBuiltin - 1, + #define BUILTIN(ID, TYPE, ATTRS) BI##ID, + #include "clang/Basic/BuiltinsAArch64.def" + LastTSBuiltin + }; + } + + /// PPC builtins + namespace PPC { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/BuiltinsPPC.def" + LastTSBuiltin + }; + } + + /// NVPTX builtins + namespace NVPTX { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/BuiltinsNVPTX.def" + LastTSBuiltin + }; + } + + /// AMDGPU builtins + namespace AMDGPU { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1, + #define BUILTIN(ID, TYPE, ATTRS) BI##ID, + #include "clang/Basic/BuiltinsAMDGPU.def" + LastTSBuiltin + }; + } + + /// X86 builtins + namespace X86 { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/BuiltinsX86.def" + FirstX86_64Builtin, + LastX86CommonBuiltin = FirstX86_64Builtin - 1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/BuiltinsX86_64.def" + LastTSBuiltin + }; + } + + /// Flags to identify the types for overloaded Neon builtins. + /// + /// These must be kept in sync with the flags in utils/TableGen/NeonEmitter.h. + class NeonTypeFlags { + enum { + EltTypeMask = 0xf, + UnsignedFlag = 0x10, + QuadFlag = 0x20 + }; + uint32_t Flags; + + public: + enum EltType { + Int8, + Int16, + Int32, + Int64, + Poly8, + Poly16, + Poly64, + Poly128, + Float16, + Float32, + Float64 + }; + + NeonTypeFlags(unsigned F) : Flags(F) {} + NeonTypeFlags(EltType ET, bool IsUnsigned, bool IsQuad) : Flags(ET) { + if (IsUnsigned) + Flags |= UnsignedFlag; + if (IsQuad) + Flags |= QuadFlag; + } + + EltType getEltType() const { return (EltType)(Flags & EltTypeMask); } + bool isPoly() const { + EltType ET = getEltType(); + return ET == Poly8 || ET == Poly16; + } + bool isUnsigned() const { return (Flags & UnsignedFlag) != 0; } + bool isQuad() const { return (Flags & QuadFlag) != 0; } + }; + + /// Hexagon builtins + namespace Hexagon { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/BuiltinsHexagon.def" + LastTSBuiltin + }; + } + + /// MIPS builtins + namespace Mips { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/BuiltinsMips.def" + LastTSBuiltin + }; + } + + /// XCore builtins + namespace XCore { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/BuiltinsXCore.def" + LastTSBuiltin + }; + } + + /// Le64 builtins + namespace Le64 { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1, + #define BUILTIN(ID, TYPE, ATTRS) BI##ID, + #include "clang/Basic/BuiltinsLe64.def" + LastTSBuiltin + }; + } + + /// SystemZ builtins + namespace SystemZ { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/BuiltinsSystemZ.def" + LastTSBuiltin + }; + } + + /// WebAssembly builtins + namespace WebAssembly { + enum { + LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1, +#define BUILTIN(ID, TYPE, ATTRS) BI##ID, +#include "clang/Basic/BuiltinsWebAssembly.def" + LastTSBuiltin + }; + } + +} // end namespace clang. + +#endif diff --git a/clang-r353983/include/clang/Basic/TargetCXXABI.h b/clang-r353983/include/clang/Basic/TargetCXXABI.h new file mode 100644 index 00000000..b1be4027 --- /dev/null +++ b/clang-r353983/include/clang/Basic/TargetCXXABI.h @@ -0,0 +1,345 @@ +//===--- TargetCXXABI.h - C++ ABI Target Configuration ----------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the TargetCXXABI class, which abstracts details of the +/// C++ ABI that we're targeting. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_TARGETCXXABI_H +#define LLVM_CLANG_BASIC_TARGETCXXABI_H + +#include "llvm/Support/ErrorHandling.h" + +namespace clang { + +/// The basic abstraction for the target C++ ABI. +class TargetCXXABI { +public: + /// The basic C++ ABI kind. + enum Kind { + /// The generic Itanium ABI is the standard ABI of most open-source + /// and Unix-like platforms. It is the primary ABI targeted by + /// many compilers, including Clang and GCC. + /// + /// It is documented here: + /// http://www.codesourcery.com/public/cxx-abi/ + GenericItanium, + + /// The generic ARM ABI is a modified version of the Itanium ABI + /// proposed by ARM for use on ARM-based platforms. + /// + /// These changes include: + /// - the representation of member function pointers is adjusted + /// to not conflict with the 'thumb' bit of ARM function pointers; + /// - constructors and destructors return 'this'; + /// - guard variables are smaller; + /// - inline functions are never key functions; + /// - array cookies have a slightly different layout; + /// - additional convenience functions are specified; + /// - and more! + /// + /// It is documented here: + /// http://infocenter.arm.com + /// /help/topic/com.arm.doc.ihi0041c/IHI0041C_cppabi.pdf + GenericARM, + + /// The iOS ABI is a partial implementation of the ARM ABI. + /// Several of the features of the ARM ABI were not fully implemented + /// in the compilers that iOS was launched with. + /// + /// Essentially, the iOS ABI includes the ARM changes to: + /// - member function pointers, + /// - guard variables, + /// - array cookies, and + /// - constructor/destructor signatures. + iOS, + + /// The iOS 64-bit ABI is follows ARM's published 64-bit ABI more + /// closely, but we don't guarantee to follow it perfectly. + /// + /// It is documented here: + /// http://infocenter.arm.com + /// /help/topic/com.arm.doc.ihi0059a/IHI0059A_cppabi64.pdf + iOS64, + + /// WatchOS is a modernisation of the iOS ABI, which roughly means it's + /// the iOS64 ABI ported to 32-bits. The primary difference from iOS64 is + /// that RTTI objects must still be unique at the moment. + WatchOS, + + /// The generic AArch64 ABI is also a modified version of the Itanium ABI, + /// but it has fewer divergences than the 32-bit ARM ABI. + /// + /// The relevant changes from the generic ABI in this case are: + /// - representation of member function pointers adjusted as in ARM. + /// - guard variables are smaller. + GenericAArch64, + + /// The generic Mips ABI is a modified version of the Itanium ABI. + /// + /// At the moment, only change from the generic ABI in this case is: + /// - representation of member function pointers adjusted as in ARM. + GenericMIPS, + + /// The WebAssembly ABI is a modified version of the Itanium ABI. + /// + /// The changes from the Itanium ABI are: + /// - representation of member function pointers is adjusted, as in ARM; + /// - member functions are not specially aligned; + /// - constructors and destructors return 'this', as in ARM; + /// - guard variables are 32-bit on wasm32, as in ARM; + /// - unused bits of guard variables are reserved, as in ARM; + /// - inline functions are never key functions, as in ARM; + /// - C++11 POD rules are used for tail padding, as in iOS64. + /// + /// TODO: At present the WebAssembly ABI is not considered stable, so none + /// of these details is necessarily final yet. + WebAssembly, + + /// The Microsoft ABI is the ABI used by Microsoft Visual Studio (and + /// compatible compilers). + /// + /// FIXME: should this be split into Win32 and Win64 variants? + /// + /// Only scattered and incomplete official documentation exists. + Microsoft + }; + +private: + // Right now, this class is passed around as a cheap value type. + // If you add more members, especially non-POD members, please + // audit the users to pass it by reference instead. + Kind TheKind; + +public: + /// A bogus initialization of the platform ABI. + TargetCXXABI() : TheKind(GenericItanium) {} + + TargetCXXABI(Kind kind) : TheKind(kind) {} + + void set(Kind kind) { + TheKind = kind; + } + + Kind getKind() const { return TheKind; } + + /// Does this ABI generally fall into the Itanium family of ABIs? + bool isItaniumFamily() const { + switch (getKind()) { + case GenericAArch64: + case GenericItanium: + case GenericARM: + case iOS: + case iOS64: + case WatchOS: + case GenericMIPS: + case WebAssembly: + return true; + + case Microsoft: + return false; + } + llvm_unreachable("bad ABI kind"); + } + + /// Is this ABI an MSVC-compatible ABI? + bool isMicrosoft() const { + switch (getKind()) { + case GenericAArch64: + case GenericItanium: + case GenericARM: + case iOS: + case iOS64: + case WatchOS: + case GenericMIPS: + case WebAssembly: + return false; + + case Microsoft: + return true; + } + llvm_unreachable("bad ABI kind"); + } + + /// Are member functions differently aligned? + /// + /// Many Itanium-style C++ ABIs require member functions to be aligned, so + /// that a pointer to such a function is guaranteed to have a zero in the + /// least significant bit, so that pointers to member functions can use that + /// bit to distinguish between virtual and non-virtual functions. However, + /// some Itanium-style C++ ABIs differentiate between virtual and non-virtual + /// functions via other means, and consequently don't require that member + /// functions be aligned. + bool areMemberFunctionsAligned() const { + switch (getKind()) { + case WebAssembly: + // WebAssembly doesn't require any special alignment for member functions. + return false; + case GenericARM: + case GenericAArch64: + case GenericMIPS: + // TODO: ARM-style pointers to member functions put the discriminator in + // the this adjustment, so they don't require functions to have any + // special alignment and could therefore also return false. + case GenericItanium: + case iOS: + case iOS64: + case WatchOS: + case Microsoft: + return true; + } + llvm_unreachable("bad ABI kind"); + } + + /// Are arguments to a call destroyed left to right in the callee? + /// This is a fundamental language change, since it implies that objects + /// passed by value do *not* live to the end of the full expression. + /// Temporaries passed to a function taking a const reference live to the end + /// of the full expression as usual. Both the caller and the callee must + /// have access to the destructor, while only the caller needs the + /// destructor if this is false. + bool areArgsDestroyedLeftToRightInCallee() const { + return isMicrosoft(); + } + + /// Does this ABI have different entrypoints for complete-object + /// and base-subobject constructors? + bool hasConstructorVariants() const { + return isItaniumFamily(); + } + + /// Does this ABI allow virtual bases to be primary base classes? + bool hasPrimaryVBases() const { + return isItaniumFamily(); + } + + /// Does this ABI use key functions? If so, class data such as the + /// vtable is emitted with strong linkage by the TU containing the key + /// function. + bool hasKeyFunctions() const { + return isItaniumFamily(); + } + + /// Can an out-of-line inline function serve as a key function? + /// + /// This flag is only useful in ABIs where type data (for example, + /// vtables and type_info objects) are emitted only after processing + /// the definition of a special "key" virtual function. (This is safe + /// because the ODR requires that every virtual function be defined + /// somewhere in a program.) This usually permits such data to be + /// emitted in only a single object file, as opposed to redundantly + /// in every object file that requires it. + /// + /// One simple and common definition of "key function" is the first + /// virtual function in the class definition which is not defined there. + /// This rule works very well when that function has a non-inline + /// definition in some non-header file. Unfortunately, when that + /// function is defined inline, this rule requires the type data + /// to be emitted weakly, as if there were no key function. + /// + /// The ARM ABI observes that the ODR provides an additional guarantee: + /// a virtual function is always ODR-used, so if it is defined inline, + /// that definition must appear in every translation unit that defines + /// the class. Therefore, there is no reason to allow such functions + /// to serve as key functions. + /// + /// Because this changes the rules for emitting type data, + /// it can cause type data to be emitted with both weak and strong + /// linkage, which is not allowed on all platforms. Therefore, + /// exploiting this observation requires an ABI break and cannot be + /// done on a generic Itanium platform. + bool canKeyFunctionBeInline() const { + switch (getKind()) { + case GenericARM: + case iOS64: + case WebAssembly: + case WatchOS: + return false; + + case GenericAArch64: + case GenericItanium: + case iOS: // old iOS compilers did not follow this rule + case Microsoft: + case GenericMIPS: + return true; + } + llvm_unreachable("bad ABI kind"); + } + + /// When is record layout allowed to allocate objects in the tail + /// padding of a base class? + /// + /// This decision cannot be changed without breaking platform ABI + /// compatibility, and yet it is tied to language guarantees which + /// the committee has so far seen fit to strengthen no less than + /// three separate times: + /// - originally, there were no restrictions at all; + /// - C++98 declared that objects could not be allocated in the + /// tail padding of a POD type; + /// - C++03 extended the definition of POD to include classes + /// containing member pointers; and + /// - C++11 greatly broadened the definition of POD to include + /// all trivial standard-layout classes. + /// Each of these changes technically took several existing + /// platforms and made them permanently non-conformant. + enum TailPaddingUseRules { + /// The tail-padding of a base class is always theoretically + /// available, even if it's POD. This is not strictly conforming + /// in any language mode. + AlwaysUseTailPadding, + + /// Only allocate objects in the tail padding of a base class if + /// the base class is not POD according to the rules of C++ TR1. + /// This is non-strictly conforming in C++11 mode. + UseTailPaddingUnlessPOD03, + + /// Only allocate objects in the tail padding of a base class if + /// the base class is not POD according to the rules of C++11. + UseTailPaddingUnlessPOD11 + }; + TailPaddingUseRules getTailPaddingUseRules() const { + switch (getKind()) { + // To preserve binary compatibility, the generic Itanium ABI has + // permanently locked the definition of POD to the rules of C++ TR1, + // and that trickles down to derived ABIs. + case GenericItanium: + case GenericAArch64: + case GenericARM: + case iOS: + case GenericMIPS: + return UseTailPaddingUnlessPOD03; + + // iOS on ARM64 and WebAssembly use the C++11 POD rules. They do not honor + // the Itanium exception about classes with over-large bitfields. + case iOS64: + case WebAssembly: + case WatchOS: + return UseTailPaddingUnlessPOD11; + + // MSVC always allocates fields in the tail-padding of a base class + // subobject, even if they're POD. + case Microsoft: + return AlwaysUseTailPadding; + } + llvm_unreachable("bad ABI kind"); + } + + friend bool operator==(const TargetCXXABI &left, const TargetCXXABI &right) { + return left.getKind() == right.getKind(); + } + + friend bool operator!=(const TargetCXXABI &left, const TargetCXXABI &right) { + return !(left == right); + } +}; + +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/TargetInfo.h b/clang-r353983/include/clang/Basic/TargetInfo.h new file mode 100644 index 00000000..7a3dc3f6 --- /dev/null +++ b/clang-r353983/include/clang/Basic/TargetInfo.h @@ -0,0 +1,1376 @@ +//===--- TargetInfo.h - Expose information about the target -----*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the clang::TargetInfo interface. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_TARGETINFO_H +#define LLVM_CLANG_BASIC_TARGETINFO_H + +#include "clang/Basic/AddressSpaces.h" +#include "clang/Basic/LLVM.h" +#include "clang/Basic/Specifiers.h" +#include "clang/Basic/TargetCXXABI.h" +#include "clang/Basic/TargetOptions.h" +#include "llvm/ADT/APInt.h" +#include "llvm/ADT/IntrusiveRefCntPtr.h" +#include "llvm/ADT/Optional.h" +#include "llvm/ADT/SmallSet.h" +#include "llvm/ADT/StringMap.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/ADT/Triple.h" +#include "llvm/IR/DataLayout.h" +#include "llvm/Support/DataTypes.h" +#include "llvm/Support/VersionTuple.h" +#include <cassert> +#include <string> +#include <vector> + +namespace llvm { +struct fltSemantics; +} + +namespace clang { +class DiagnosticsEngine; +class LangOptions; +class CodeGenOptions; +class MacroBuilder; +class QualType; +class SourceLocation; +class SourceManager; + +namespace Builtin { struct Info; } + +/// Fields controlling how types are laid out in memory; these may need to +/// be copied for targets like AMDGPU that base their ABIs on an auxiliary +/// CPU target. +struct TransferrableTargetInfo { + unsigned char PointerWidth, PointerAlign; + unsigned char BoolWidth, BoolAlign; + unsigned char IntWidth, IntAlign; + unsigned char HalfWidth, HalfAlign; + unsigned char FloatWidth, FloatAlign; + unsigned char DoubleWidth, DoubleAlign; + unsigned char LongDoubleWidth, LongDoubleAlign, Float128Align; + unsigned char LargeArrayMinWidth, LargeArrayAlign; + unsigned char LongWidth, LongAlign; + unsigned char LongLongWidth, LongLongAlign; + + // Fixed point bit widths + unsigned char ShortAccumWidth, ShortAccumAlign; + unsigned char AccumWidth, AccumAlign; + unsigned char LongAccumWidth, LongAccumAlign; + unsigned char ShortFractWidth, ShortFractAlign; + unsigned char FractWidth, FractAlign; + unsigned char LongFractWidth, LongFractAlign; + + // If true, unsigned fixed point types have the same number of fractional bits + // as their signed counterparts, forcing the unsigned types to have one extra + // bit of padding. Otherwise, unsigned fixed point types have + // one more fractional bit than its corresponding signed type. This is false + // by default. + bool PaddingOnUnsignedFixedPoint; + + // Fixed point integral and fractional bit sizes + // Saturated types share the same integral/fractional bits as their + // corresponding unsaturated types. + // For simplicity, the fractional bits in a _Fract type will be one less the + // width of that _Fract type. This leaves all signed _Fract types having no + // padding and unsigned _Fract types will only have 1 bit of padding after the + // sign if PaddingOnUnsignedFixedPoint is set. + unsigned char ShortAccumScale; + unsigned char AccumScale; + unsigned char LongAccumScale; + + unsigned char SuitableAlign; + unsigned char DefaultAlignForAttributeAligned; + unsigned char MinGlobalAlign; + + unsigned short NewAlign; + unsigned short MaxVectorAlign; + unsigned short MaxTLSAlign; + + const llvm::fltSemantics *HalfFormat, *FloatFormat, *DoubleFormat, + *LongDoubleFormat, *Float128Format; + + ///===---- Target Data Type Query Methods -------------------------------===// + enum IntType { + NoInt = 0, + SignedChar, + UnsignedChar, + SignedShort, + UnsignedShort, + SignedInt, + UnsignedInt, + SignedLong, + UnsignedLong, + SignedLongLong, + UnsignedLongLong + }; + + enum RealType { + NoFloat = 255, + Float = 0, + Double, + LongDouble, + Float128 + }; +protected: + IntType SizeType, IntMaxType, PtrDiffType, IntPtrType, WCharType, + WIntType, Char16Type, Char32Type, Int64Type, SigAtomicType, + ProcessIDType; + + /// Whether Objective-C's built-in boolean type should be signed char. + /// + /// Otherwise, when this flag is not set, the normal built-in boolean type is + /// used. + unsigned UseSignedCharForObjCBool : 1; + + /// Control whether the alignment of bit-field types is respected when laying + /// out structures. If true, then the alignment of the bit-field type will be + /// used to (a) impact the alignment of the containing structure, and (b) + /// ensure that the individual bit-field will not straddle an alignment + /// boundary. + unsigned UseBitFieldTypeAlignment : 1; + + /// Whether zero length bitfields (e.g., int : 0;) force alignment of + /// the next bitfield. + /// + /// If the alignment of the zero length bitfield is greater than the member + /// that follows it, `bar', `bar' will be aligned as the type of the + /// zero-length bitfield. + unsigned UseZeroLengthBitfieldAlignment : 1; + + /// Whether explicit bit field alignment attributes are honored. + unsigned UseExplicitBitFieldAlignment : 1; + + /// If non-zero, specifies a fixed alignment value for bitfields that follow + /// zero length bitfield, regardless of the zero length bitfield type. + unsigned ZeroLengthBitfieldBoundary; +}; + +/// Exposes information about the current target. +/// +class TargetInfo : public virtual TransferrableTargetInfo, + public RefCountedBase<TargetInfo> { + std::shared_ptr<TargetOptions> TargetOpts; + llvm::Triple Triple; +protected: + // Target values set by the ctor of the actual target implementation. Default + // values are specified by the TargetInfo constructor. + bool BigEndian; + bool TLSSupported; + bool VLASupported; + bool NoAsmVariants; // True if {|} are normal characters. + bool HasLegalHalfType; // True if the backend supports operations on the half + // LLVM IR type. + bool HasFloat128; + bool HasFloat16; + + unsigned char MaxAtomicPromoteWidth, MaxAtomicInlineWidth; + unsigned short SimdDefaultAlign; + std::unique_ptr<llvm::DataLayout> DataLayout; + const char *MCountName; + unsigned char RegParmMax, SSERegParmMax; + TargetCXXABI TheCXXABI; + const LangASMap *AddrSpaceMap; + + mutable StringRef PlatformName; + mutable VersionTuple PlatformMinVersion; + + unsigned HasAlignMac68kSupport : 1; + unsigned RealTypeUsesObjCFPRet : 3; + unsigned ComplexLongDoubleUsesFP2Ret : 1; + + unsigned HasBuiltinMSVaList : 1; + + unsigned IsRenderScriptTarget : 1; + + // TargetInfo Constructor. Default initializes all fields. + TargetInfo(const llvm::Triple &T); + + void resetDataLayout(StringRef DL) { + DataLayout.reset(new llvm::DataLayout(DL)); + } + +public: + /// Construct a target for the given options. + /// + /// \param Opts - The options to use to initialize the target. The target may + /// modify the options to canonicalize the target feature information to match + /// what the backend expects. + static TargetInfo * + CreateTargetInfo(DiagnosticsEngine &Diags, + const std::shared_ptr<TargetOptions> &Opts); + + virtual ~TargetInfo(); + + /// Retrieve the target options. + TargetOptions &getTargetOpts() const { + assert(TargetOpts && "Missing target options"); + return *TargetOpts; + } + + /// The different kinds of __builtin_va_list types defined by + /// the target implementation. + enum BuiltinVaListKind { + /// typedef char* __builtin_va_list; + CharPtrBuiltinVaList = 0, + + /// typedef void* __builtin_va_list; + VoidPtrBuiltinVaList, + + /// __builtin_va_list as defined by the AArch64 ABI + /// http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055a/IHI0055A_aapcs64.pdf + AArch64ABIBuiltinVaList, + + /// __builtin_va_list as defined by the PNaCl ABI: + /// http://www.chromium.org/nativeclient/pnacl/bitcode-abi#TOC-Machine-Types + PNaClABIBuiltinVaList, + + /// __builtin_va_list as defined by the Power ABI: + /// https://www.power.org + /// /resources/downloads/Power-Arch-32-bit-ABI-supp-1.0-Embedded.pdf + PowerABIBuiltinVaList, + + /// __builtin_va_list as defined by the x86-64 ABI: + /// http://refspecs.linuxbase.org/elf/x86_64-abi-0.21.pdf + X86_64ABIBuiltinVaList, + + /// __builtin_va_list as defined by ARM AAPCS ABI + /// http://infocenter.arm.com + // /help/topic/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf + AAPCSABIBuiltinVaList, + + // typedef struct __va_list_tag + // { + // long __gpr; + // long __fpr; + // void *__overflow_arg_area; + // void *__reg_save_area; + // } va_list[1]; + SystemZBuiltinVaList + }; + +protected: + /// Specify if mangling based on address space map should be used or + /// not for language specific address spaces + bool UseAddrSpaceMapMangling; + +public: + IntType getSizeType() const { return SizeType; } + IntType getSignedSizeType() const { + switch (SizeType) { + case UnsignedShort: + return SignedShort; + case UnsignedInt: + return SignedInt; + case UnsignedLong: + return SignedLong; + case UnsignedLongLong: + return SignedLongLong; + default: + llvm_unreachable("Invalid SizeType"); + } + } + IntType getIntMaxType() const { return IntMaxType; } + IntType getUIntMaxType() const { + return getCorrespondingUnsignedType(IntMaxType); + } + IntType getPtrDiffType(unsigned AddrSpace) const { + return AddrSpace == 0 ? PtrDiffType : getPtrDiffTypeV(AddrSpace); + } + IntType getUnsignedPtrDiffType(unsigned AddrSpace) const { + return getCorrespondingUnsignedType(getPtrDiffType(AddrSpace)); + } + IntType getIntPtrType() const { return IntPtrType; } + IntType getUIntPtrType() const { + return getCorrespondingUnsignedType(IntPtrType); + } + IntType getWCharType() const { return WCharType; } + IntType getWIntType() const { return WIntType; } + IntType getChar16Type() const { return Char16Type; } + IntType getChar32Type() const { return Char32Type; } + IntType getInt64Type() const { return Int64Type; } + IntType getUInt64Type() const { + return getCorrespondingUnsignedType(Int64Type); + } + IntType getSigAtomicType() const { return SigAtomicType; } + IntType getProcessIDType() const { return ProcessIDType; } + + static IntType getCorrespondingUnsignedType(IntType T) { + switch (T) { + case SignedChar: + return UnsignedChar; + case SignedShort: + return UnsignedShort; + case SignedInt: + return UnsignedInt; + case SignedLong: + return UnsignedLong; + case SignedLongLong: + return UnsignedLongLong; + default: + llvm_unreachable("Unexpected signed integer type"); + } + } + + /// In the event this target uses the same number of fractional bits for its + /// unsigned types as it does with its signed counterparts, there will be + /// exactly one bit of padding. + /// Return true if unsigned fixed point types have padding for this target. + bool doUnsignedFixedPointTypesHavePadding() const { + return PaddingOnUnsignedFixedPoint; + } + + /// Return the width (in bits) of the specified integer type enum. + /// + /// For example, SignedInt -> getIntWidth(). + unsigned getTypeWidth(IntType T) const; + + /// Return integer type with specified width. + virtual IntType getIntTypeByWidth(unsigned BitWidth, bool IsSigned) const; + + /// Return the smallest integer type with at least the specified width. + virtual IntType getLeastIntTypeByWidth(unsigned BitWidth, + bool IsSigned) const; + + /// Return floating point type with specified width. + RealType getRealTypeByWidth(unsigned BitWidth) const; + + /// Return the alignment (in bits) of the specified integer type enum. + /// + /// For example, SignedInt -> getIntAlign(). + unsigned getTypeAlign(IntType T) const; + + /// Returns true if the type is signed; false otherwise. + static bool isTypeSigned(IntType T); + + /// Return the width of pointers on this target, for the + /// specified address space. + uint64_t getPointerWidth(unsigned AddrSpace) const { + return AddrSpace == 0 ? PointerWidth : getPointerWidthV(AddrSpace); + } + uint64_t getPointerAlign(unsigned AddrSpace) const { + return AddrSpace == 0 ? PointerAlign : getPointerAlignV(AddrSpace); + } + + /// Return the maximum width of pointers on this target. + virtual uint64_t getMaxPointerWidth() const { + return PointerWidth; + } + + /// Get integer value for null pointer. + /// \param AddrSpace address space of pointee in source language. + virtual uint64_t getNullPointerValue(LangAS AddrSpace) const { return 0; } + + /// Return the size of '_Bool' and C++ 'bool' for this target, in bits. + unsigned getBoolWidth() const { return BoolWidth; } + + /// Return the alignment of '_Bool' and C++ 'bool' for this target. + unsigned getBoolAlign() const { return BoolAlign; } + + unsigned getCharWidth() const { return 8; } // FIXME + unsigned getCharAlign() const { return 8; } // FIXME + + /// Return the size of 'signed short' and 'unsigned short' for this + /// target, in bits. + unsigned getShortWidth() const { return 16; } // FIXME + + /// Return the alignment of 'signed short' and 'unsigned short' for + /// this target. + unsigned getShortAlign() const { return 16; } // FIXME + + /// getIntWidth/Align - Return the size of 'signed int' and 'unsigned int' for + /// this target, in bits. + unsigned getIntWidth() const { return IntWidth; } + unsigned getIntAlign() const { return IntAlign; } + + /// getLongWidth/Align - Return the size of 'signed long' and 'unsigned long' + /// for this target, in bits. + unsigned getLongWidth() const { return LongWidth; } + unsigned getLongAlign() const { return LongAlign; } + + /// getLongLongWidth/Align - Return the size of 'signed long long' and + /// 'unsigned long long' for this target, in bits. + unsigned getLongLongWidth() const { return LongLongWidth; } + unsigned getLongLongAlign() const { return LongLongAlign; } + + /// getShortAccumWidth/Align - Return the size of 'signed short _Accum' and + /// 'unsigned short _Accum' for this target, in bits. + unsigned getShortAccumWidth() const { return ShortAccumWidth; } + unsigned getShortAccumAlign() const { return ShortAccumAlign; } + + /// getAccumWidth/Align - Return the size of 'signed _Accum' and + /// 'unsigned _Accum' for this target, in bits. + unsigned getAccumWidth() const { return AccumWidth; } + unsigned getAccumAlign() const { return AccumAlign; } + + /// getLongAccumWidth/Align - Return the size of 'signed long _Accum' and + /// 'unsigned long _Accum' for this target, in bits. + unsigned getLongAccumWidth() const { return LongAccumWidth; } + unsigned getLongAccumAlign() const { return LongAccumAlign; } + + /// getShortFractWidth/Align - Return the size of 'signed short _Fract' and + /// 'unsigned short _Fract' for this target, in bits. + unsigned getShortFractWidth() const { return ShortFractWidth; } + unsigned getShortFractAlign() const { return ShortFractAlign; } + + /// getFractWidth/Align - Return the size of 'signed _Fract' and + /// 'unsigned _Fract' for this target, in bits. + unsigned getFractWidth() const { return FractWidth; } + unsigned getFractAlign() const { return FractAlign; } + + /// getLongFractWidth/Align - Return the size of 'signed long _Fract' and + /// 'unsigned long _Fract' for this target, in bits. + unsigned getLongFractWidth() const { return LongFractWidth; } + unsigned getLongFractAlign() const { return LongFractAlign; } + + /// getShortAccumScale/IBits - Return the number of fractional/integral bits + /// in a 'signed short _Accum' type. + unsigned getShortAccumScale() const { return ShortAccumScale; } + unsigned getShortAccumIBits() const { + return ShortAccumWidth - ShortAccumScale - 1; + } + + /// getAccumScale/IBits - Return the number of fractional/integral bits + /// in a 'signed _Accum' type. + unsigned getAccumScale() const { return AccumScale; } + unsigned getAccumIBits() const { return AccumWidth - AccumScale - 1; } + + /// getLongAccumScale/IBits - Return the number of fractional/integral bits + /// in a 'signed long _Accum' type. + unsigned getLongAccumScale() const { return LongAccumScale; } + unsigned getLongAccumIBits() const { + return LongAccumWidth - LongAccumScale - 1; + } + + /// getUnsignedShortAccumScale/IBits - Return the number of + /// fractional/integral bits in a 'unsigned short _Accum' type. + unsigned getUnsignedShortAccumScale() const { + return PaddingOnUnsignedFixedPoint ? ShortAccumScale : ShortAccumScale + 1; + } + unsigned getUnsignedShortAccumIBits() const { + return PaddingOnUnsignedFixedPoint + ? getShortAccumIBits() + : ShortAccumWidth - getUnsignedShortAccumScale(); + } + + /// getUnsignedAccumScale/IBits - Return the number of fractional/integral + /// bits in a 'unsigned _Accum' type. + unsigned getUnsignedAccumScale() const { + return PaddingOnUnsignedFixedPoint ? AccumScale : AccumScale + 1; + } + unsigned getUnsignedAccumIBits() const { + return PaddingOnUnsignedFixedPoint ? getAccumIBits() + : AccumWidth - getUnsignedAccumScale(); + } + + /// getUnsignedLongAccumScale/IBits - Return the number of fractional/integral + /// bits in a 'unsigned long _Accum' type. + unsigned getUnsignedLongAccumScale() const { + return PaddingOnUnsignedFixedPoint ? LongAccumScale : LongAccumScale + 1; + } + unsigned getUnsignedLongAccumIBits() const { + return PaddingOnUnsignedFixedPoint + ? getLongAccumIBits() + : LongAccumWidth - getUnsignedLongAccumScale(); + } + + /// getShortFractScale - Return the number of fractional bits + /// in a 'signed short _Fract' type. + unsigned getShortFractScale() const { return ShortFractWidth - 1; } + + /// getFractScale - Return the number of fractional bits + /// in a 'signed _Fract' type. + unsigned getFractScale() const { return FractWidth - 1; } + + /// getLongFractScale - Return the number of fractional bits + /// in a 'signed long _Fract' type. + unsigned getLongFractScale() const { return LongFractWidth - 1; } + + /// getUnsignedShortFractScale - Return the number of fractional bits + /// in a 'unsigned short _Fract' type. + unsigned getUnsignedShortFractScale() const { + return PaddingOnUnsignedFixedPoint ? getShortFractScale() + : getShortFractScale() + 1; + } + + /// getUnsignedFractScale - Return the number of fractional bits + /// in a 'unsigned _Fract' type. + unsigned getUnsignedFractScale() const { + return PaddingOnUnsignedFixedPoint ? getFractScale() : getFractScale() + 1; + } + + /// getUnsignedLongFractScale - Return the number of fractional bits + /// in a 'unsigned long _Fract' type. + unsigned getUnsignedLongFractScale() const { + return PaddingOnUnsignedFixedPoint ? getLongFractScale() + : getLongFractScale() + 1; + } + + /// Determine whether the __int128 type is supported on this target. + virtual bool hasInt128Type() const { + return (getPointerWidth(0) >= 64) || getTargetOpts().ForceEnableInt128; + } // FIXME + + /// Determine whether _Float16 is supported on this target. + virtual bool hasLegalHalfType() const { return HasLegalHalfType; } + + /// Determine whether the __float128 type is supported on this target. + virtual bool hasFloat128Type() const { return HasFloat128; } + + /// Determine whether the _Float16 type is supported on this target. + virtual bool hasFloat16Type() const { return HasFloat16; } + + /// Return the alignment that is suitable for storing any + /// object with a fundamental alignment requirement. + unsigned getSuitableAlign() const { return SuitableAlign; } + + /// Return the default alignment for __attribute__((aligned)) on + /// this target, to be used if no alignment value is specified. + unsigned getDefaultAlignForAttributeAligned() const { + return DefaultAlignForAttributeAligned; + } + + /// getMinGlobalAlign - Return the minimum alignment of a global variable, + /// unless its alignment is explicitly reduced via attributes. + unsigned getMinGlobalAlign() const { return MinGlobalAlign; } + + /// Return the largest alignment for which a suitably-sized allocation with + /// '::operator new(size_t)' is guaranteed to produce a correctly-aligned + /// pointer. + unsigned getNewAlign() const { + return NewAlign ? NewAlign : std::max(LongDoubleAlign, LongLongAlign); + } + + /// getWCharWidth/Align - Return the size of 'wchar_t' for this target, in + /// bits. + unsigned getWCharWidth() const { return getTypeWidth(WCharType); } + unsigned getWCharAlign() const { return getTypeAlign(WCharType); } + + /// getChar16Width/Align - Return the size of 'char16_t' for this target, in + /// bits. + unsigned getChar16Width() const { return getTypeWidth(Char16Type); } + unsigned getChar16Align() const { return getTypeAlign(Char16Type); } + + /// getChar32Width/Align - Return the size of 'char32_t' for this target, in + /// bits. + unsigned getChar32Width() const { return getTypeWidth(Char32Type); } + unsigned getChar32Align() const { return getTypeAlign(Char32Type); } + + /// getHalfWidth/Align/Format - Return the size/align/format of 'half'. + unsigned getHalfWidth() const { return HalfWidth; } + unsigned getHalfAlign() const { return HalfAlign; } + const llvm::fltSemantics &getHalfFormat() const { return *HalfFormat; } + + /// getFloatWidth/Align/Format - Return the size/align/format of 'float'. + unsigned getFloatWidth() const { return FloatWidth; } + unsigned getFloatAlign() const { return FloatAlign; } + const llvm::fltSemantics &getFloatFormat() const { return *FloatFormat; } + + /// getDoubleWidth/Align/Format - Return the size/align/format of 'double'. + unsigned getDoubleWidth() const { return DoubleWidth; } + unsigned getDoubleAlign() const { return DoubleAlign; } + const llvm::fltSemantics &getDoubleFormat() const { return *DoubleFormat; } + + /// getLongDoubleWidth/Align/Format - Return the size/align/format of 'long + /// double'. + unsigned getLongDoubleWidth() const { return LongDoubleWidth; } + unsigned getLongDoubleAlign() const { return LongDoubleAlign; } + const llvm::fltSemantics &getLongDoubleFormat() const { + return *LongDoubleFormat; + } + + /// getFloat128Width/Align/Format - Return the size/align/format of + /// '__float128'. + unsigned getFloat128Width() const { return 128; } + unsigned getFloat128Align() const { return Float128Align; } + const llvm::fltSemantics &getFloat128Format() const { + return *Float128Format; + } + + /// Return true if the 'long double' type should be mangled like + /// __float128. + virtual bool useFloat128ManglingForLongDouble() const { return false; } + + /// Return the value for the C99 FLT_EVAL_METHOD macro. + virtual unsigned getFloatEvalMethod() const { return 0; } + + // getLargeArrayMinWidth/Align - Return the minimum array size that is + // 'large' and its alignment. + unsigned getLargeArrayMinWidth() const { return LargeArrayMinWidth; } + unsigned getLargeArrayAlign() const { return LargeArrayAlign; } + + /// Return the maximum width lock-free atomic operation which will + /// ever be supported for the given target + unsigned getMaxAtomicPromoteWidth() const { return MaxAtomicPromoteWidth; } + /// Return the maximum width lock-free atomic operation which can be + /// inlined given the supported features of the given target. + unsigned getMaxAtomicInlineWidth() const { return MaxAtomicInlineWidth; } + /// Set the maximum inline or promote width lock-free atomic operation + /// for the given target. + virtual void setMaxAtomicWidth() {} + /// Returns true if the given target supports lock-free atomic + /// operations at the specified width and alignment. + virtual bool hasBuiltinAtomic(uint64_t AtomicSizeInBits, + uint64_t AlignmentInBits) const { + return AtomicSizeInBits <= AlignmentInBits && + AtomicSizeInBits <= getMaxAtomicInlineWidth() && + (AtomicSizeInBits <= getCharWidth() || + llvm::isPowerOf2_64(AtomicSizeInBits / getCharWidth())); + } + + /// Return the maximum vector alignment supported for the given target. + unsigned getMaxVectorAlign() const { return MaxVectorAlign; } + /// Return default simd alignment for the given target. Generally, this + /// value is type-specific, but this alignment can be used for most of the + /// types for the given target. + unsigned getSimdDefaultAlign() const { return SimdDefaultAlign; } + + /// Return the size of intmax_t and uintmax_t for this target, in bits. + unsigned getIntMaxTWidth() const { + return getTypeWidth(IntMaxType); + } + + // Return the size of unwind_word for this target. + virtual unsigned getUnwindWordWidth() const { return getPointerWidth(0); } + + /// Return the "preferred" register width on this target. + virtual unsigned getRegisterWidth() const { + // Currently we assume the register width on the target matches the pointer + // width, we can introduce a new variable for this if/when some target wants + // it. + return PointerWidth; + } + + /// Returns the name of the mcount instrumentation function. + const char *getMCountName() const { + return MCountName; + } + + /// Check if the Objective-C built-in boolean type should be signed + /// char. + /// + /// Otherwise, if this returns false, the normal built-in boolean type + /// should also be used for Objective-C. + bool useSignedCharForObjCBool() const { + return UseSignedCharForObjCBool; + } + void noSignedCharForObjCBool() { + UseSignedCharForObjCBool = false; + } + + /// Check whether the alignment of bit-field types is respected + /// when laying out structures. + bool useBitFieldTypeAlignment() const { + return UseBitFieldTypeAlignment; + } + + /// Check whether zero length bitfields should force alignment of + /// the next member. + bool useZeroLengthBitfieldAlignment() const { + return UseZeroLengthBitfieldAlignment; + } + + /// Get the fixed alignment value in bits for a member that follows + /// a zero length bitfield. + unsigned getZeroLengthBitfieldBoundary() const { + return ZeroLengthBitfieldBoundary; + } + + /// Check whether explicit bitfield alignment attributes should be + // honored, as in "__attribute__((aligned(2))) int b : 1;". + bool useExplicitBitFieldAlignment() const { + return UseExplicitBitFieldAlignment; + } + + /// Check whether this target support '\#pragma options align=mac68k'. + bool hasAlignMac68kSupport() const { + return HasAlignMac68kSupport; + } + + /// Return the user string for the specified integer type enum. + /// + /// For example, SignedShort -> "short". + static const char *getTypeName(IntType T); + + /// Return the constant suffix for the specified integer type enum. + /// + /// For example, SignedLong -> "L". + const char *getTypeConstantSuffix(IntType T) const; + + /// Return the printf format modifier for the specified + /// integer type enum. + /// + /// For example, SignedLong -> "l". + static const char *getTypeFormatModifier(IntType T); + + /// Check whether the given real type should use the "fpret" flavor of + /// Objective-C message passing on this target. + bool useObjCFPRetForRealType(RealType T) const { + return RealTypeUsesObjCFPRet & (1 << T); + } + + /// Check whether _Complex long double should use the "fp2ret" flavor + /// of Objective-C message passing on this target. + bool useObjCFP2RetForComplexLongDouble() const { + return ComplexLongDoubleUsesFP2Ret; + } + + /// Check whether llvm intrinsics such as llvm.convert.to.fp16 should be used + /// to convert to and from __fp16. + /// FIXME: This function should be removed once all targets stop using the + /// conversion intrinsics. + virtual bool useFP16ConversionIntrinsics() const { + return true; + } + + /// Specify if mangling based on address space map should be used or + /// not for language specific address spaces + bool useAddressSpaceMapMangling() const { + return UseAddrSpaceMapMangling; + } + + ///===---- Other target property query methods --------------------------===// + + /// Appends the target-specific \#define values for this + /// target set to the specified buffer. + virtual void getTargetDefines(const LangOptions &Opts, + MacroBuilder &Builder) const = 0; + + + /// Return information about target-specific builtins for + /// the current primary target, and info about which builtins are non-portable + /// across the current set of primary and secondary targets. + virtual ArrayRef<Builtin::Info> getTargetBuiltins() const = 0; + + /// The __builtin_clz* and __builtin_ctz* built-in + /// functions are specified to have undefined results for zero inputs, but + /// on targets that support these operations in a way that provides + /// well-defined results for zero without loss of performance, it is a good + /// idea to avoid optimizing based on that undef behavior. + virtual bool isCLZForZeroUndef() const { return true; } + + /// Returns the kind of __builtin_va_list type that should be used + /// with this target. + virtual BuiltinVaListKind getBuiltinVaListKind() const = 0; + + /// Returns whether or not type \c __builtin_ms_va_list type is + /// available on this target. + bool hasBuiltinMSVaList() const { return HasBuiltinMSVaList; } + + /// Returns true for RenderScript. + bool isRenderScriptTarget() const { return IsRenderScriptTarget; } + + /// Returns whether the passed in string is a valid clobber in an + /// inline asm statement. + /// + /// This is used by Sema. + bool isValidClobber(StringRef Name) const; + + /// Returns whether the passed in string is a valid register name + /// according to GCC. + /// + /// This is used by Sema for inline asm statements. + virtual bool isValidGCCRegisterName(StringRef Name) const; + + /// Returns the "normalized" GCC register name. + /// + /// ReturnCannonical true will return the register name without any additions + /// such as "{}" or "%" in it's canonical form, for example: + /// ReturnCanonical = true and Name = "rax", will return "ax". + StringRef getNormalizedGCCRegisterName(StringRef Name, + bool ReturnCanonical = false) const; + + /// Extracts a register from the passed constraint (if it is a + /// single-register constraint) and the asm label expression related to a + /// variable in the input or output list of an inline asm statement. + /// + /// This function is used by Sema in order to diagnose conflicts between + /// the clobber list and the input/output lists. + virtual StringRef getConstraintRegister(StringRef Constraint, + StringRef Expression) const { + return ""; + } + + struct ConstraintInfo { + enum { + CI_None = 0x00, + CI_AllowsMemory = 0x01, + CI_AllowsRegister = 0x02, + CI_ReadWrite = 0x04, // "+r" output constraint (read and write). + CI_HasMatchingInput = 0x08, // This output operand has a matching input. + CI_ImmediateConstant = 0x10, // This operand must be an immediate constant + CI_EarlyClobber = 0x20, // "&" output constraint (early clobber). + }; + unsigned Flags; + int TiedOperand; + struct { + int Min; + int Max; + } ImmRange; + llvm::SmallSet<int, 4> ImmSet; + + std::string ConstraintStr; // constraint: "=rm" + std::string Name; // Operand name: [foo] with no []'s. + public: + ConstraintInfo(StringRef ConstraintStr, StringRef Name) + : Flags(0), TiedOperand(-1), ConstraintStr(ConstraintStr.str()), + Name(Name.str()) { + ImmRange.Min = ImmRange.Max = 0; + } + + const std::string &getConstraintStr() const { return ConstraintStr; } + const std::string &getName() const { return Name; } + bool isReadWrite() const { return (Flags & CI_ReadWrite) != 0; } + bool earlyClobber() { return (Flags & CI_EarlyClobber) != 0; } + bool allowsRegister() const { return (Flags & CI_AllowsRegister) != 0; } + bool allowsMemory() const { return (Flags & CI_AllowsMemory) != 0; } + + /// Return true if this output operand has a matching + /// (tied) input operand. + bool hasMatchingInput() const { return (Flags & CI_HasMatchingInput) != 0; } + + /// Return true if this input operand is a matching + /// constraint that ties it to an output operand. + /// + /// If this returns true then getTiedOperand will indicate which output + /// operand this is tied to. + bool hasTiedOperand() const { return TiedOperand != -1; } + unsigned getTiedOperand() const { + assert(hasTiedOperand() && "Has no tied operand!"); + return (unsigned)TiedOperand; + } + + bool requiresImmediateConstant() const { + return (Flags & CI_ImmediateConstant) != 0; + } + bool isValidAsmImmediate(const llvm::APInt &Value) const { + return (Value.sge(ImmRange.Min) && Value.sle(ImmRange.Max)) || + ImmSet.count(Value.getZExtValue()) != 0; + } + + void setIsReadWrite() { Flags |= CI_ReadWrite; } + void setEarlyClobber() { Flags |= CI_EarlyClobber; } + void setAllowsMemory() { Flags |= CI_AllowsMemory; } + void setAllowsRegister() { Flags |= CI_AllowsRegister; } + void setHasMatchingInput() { Flags |= CI_HasMatchingInput; } + void setRequiresImmediate(int Min, int Max) { + Flags |= CI_ImmediateConstant; + ImmRange.Min = Min; + ImmRange.Max = Max; + } + void setRequiresImmediate(llvm::ArrayRef<int> Exacts) { + Flags |= CI_ImmediateConstant; + for (int Exact : Exacts) + ImmSet.insert(Exact); + } + void setRequiresImmediate(int Exact) { + Flags |= CI_ImmediateConstant; + ImmSet.insert(Exact); + } + void setRequiresImmediate() { + Flags |= CI_ImmediateConstant; + ImmRange.Min = INT_MIN; + ImmRange.Max = INT_MAX; + } + + /// Indicate that this is an input operand that is tied to + /// the specified output operand. + /// + /// Copy over the various constraint information from the output. + void setTiedOperand(unsigned N, ConstraintInfo &Output) { + Output.setHasMatchingInput(); + Flags = Output.Flags; + TiedOperand = N; + // Don't copy Name or constraint string. + } + }; + + /// Validate register name used for global register variables. + /// + /// This function returns true if the register passed in RegName can be used + /// for global register variables on this target. In addition, it returns + /// true in HasSizeMismatch if the size of the register doesn't match the + /// variable size passed in RegSize. + virtual bool validateGlobalRegisterVariable(StringRef RegName, + unsigned RegSize, + bool &HasSizeMismatch) const { + HasSizeMismatch = false; + return true; + } + + // validateOutputConstraint, validateInputConstraint - Checks that + // a constraint is valid and provides information about it. + // FIXME: These should return a real error instead of just true/false. + bool validateOutputConstraint(ConstraintInfo &Info) const; + bool validateInputConstraint(MutableArrayRef<ConstraintInfo> OutputConstraints, + ConstraintInfo &info) const; + + virtual bool validateOutputSize(StringRef /*Constraint*/, + unsigned /*Size*/) const { + return true; + } + + virtual bool validateInputSize(StringRef /*Constraint*/, + unsigned /*Size*/) const { + return true; + } + virtual bool + validateConstraintModifier(StringRef /*Constraint*/, + char /*Modifier*/, + unsigned /*Size*/, + std::string &/*SuggestedModifier*/) const { + return true; + } + virtual bool + validateAsmConstraint(const char *&Name, + TargetInfo::ConstraintInfo &info) const = 0; + + bool resolveSymbolicName(const char *&Name, + ArrayRef<ConstraintInfo> OutputConstraints, + unsigned &Index) const; + + // Constraint parm will be left pointing at the last character of + // the constraint. In practice, it won't be changed unless the + // constraint is longer than one character. + virtual std::string convertConstraint(const char *&Constraint) const { + // 'p' defaults to 'r', but can be overridden by targets. + if (*Constraint == 'p') + return std::string("r"); + return std::string(1, *Constraint); + } + + /// Returns a string of target-specific clobbers, in LLVM format. + virtual const char *getClobbers() const = 0; + + /// Returns true if NaN encoding is IEEE 754-2008. + /// Only MIPS allows a different encoding. + virtual bool isNan2008() const { + return true; + } + + /// Returns the target triple of the primary target. + const llvm::Triple &getTriple() const { + return Triple; + } + + const llvm::DataLayout &getDataLayout() const { + assert(DataLayout && "Uninitialized DataLayout!"); + return *DataLayout; + } + + struct GCCRegAlias { + const char * const Aliases[5]; + const char * const Register; + }; + + struct AddlRegName { + const char * const Names[5]; + const unsigned RegNum; + }; + + /// Does this target support "protected" visibility? + /// + /// Any target which dynamic libraries will naturally support + /// something like "default" (meaning that the symbol is visible + /// outside this shared object) and "hidden" (meaning that it isn't) + /// visibilities, but "protected" is really an ELF-specific concept + /// with weird semantics designed around the convenience of dynamic + /// linker implementations. Which is not to suggest that there's + /// consistent target-independent semantics for "default" visibility + /// either; the entire thing is pretty badly mangled. + virtual bool hasProtectedVisibility() const { return true; } + + /// An optional hook that targets can implement to perform semantic + /// checking on attribute((section("foo"))) specifiers. + /// + /// In this case, "foo" is passed in to be checked. If the section + /// specifier is invalid, the backend should return a non-empty string + /// that indicates the problem. + /// + /// This hook is a simple quality of implementation feature to catch errors + /// and give good diagnostics in cases when the assembler or code generator + /// would otherwise reject the section specifier. + /// + virtual std::string isValidSectionSpecifier(StringRef SR) const { + return ""; + } + + /// Set forced language options. + /// + /// Apply changes to the target information with respect to certain + /// language options which change the target configuration and adjust + /// the language based on the target options where applicable. + virtual void adjust(LangOptions &Opts); + + /// Adjust target options based on codegen options. + virtual void adjustTargetOptions(const CodeGenOptions &CGOpts, + TargetOptions &TargetOpts) const {} + + /// Initialize the map with the default set of target features for the + /// CPU this should include all legal feature strings on the target. + /// + /// \return False on error (invalid features). + virtual bool initFeatureMap(llvm::StringMap<bool> &Features, + DiagnosticsEngine &Diags, StringRef CPU, + const std::vector<std::string> &FeatureVec) const; + + /// Get the ABI currently in use. + virtual StringRef getABI() const { return StringRef(); } + + /// Get the C++ ABI currently in use. + TargetCXXABI getCXXABI() const { + return TheCXXABI; + } + + /// Target the specified CPU. + /// + /// \return False on error (invalid CPU name). + virtual bool setCPU(const std::string &Name) { + return false; + } + + /// Fill a SmallVectorImpl with the valid values to setCPU. + virtual void fillValidCPUList(SmallVectorImpl<StringRef> &Values) const {} + + /// brief Determine whether this TargetInfo supports the given CPU name. + virtual bool isValidCPUName(StringRef Name) const { + return true; + } + + /// Use the specified ABI. + /// + /// \return False on error (invalid ABI name). + virtual bool setABI(const std::string &Name) { + return false; + } + + /// Use the specified unit for FP math. + /// + /// \return False on error (invalid unit name). + virtual bool setFPMath(StringRef Name) { + return false; + } + + /// Enable or disable a specific target feature; + /// the feature name must be valid. + virtual void setFeatureEnabled(llvm::StringMap<bool> &Features, + StringRef Name, + bool Enabled) const { + Features[Name] = Enabled; + } + + /// Determine whether this TargetInfo supports the given feature. + virtual bool isValidFeatureName(StringRef Feature) const { + return true; + } + + /// Perform initialization based on the user configured + /// set of features (e.g., +sse4). + /// + /// The list is guaranteed to have at most one entry per feature. + /// + /// The target may modify the features list, to change which options are + /// passed onwards to the backend. + /// FIXME: This part should be fixed so that we can change handleTargetFeatures + /// to merely a TargetInfo initialization routine. + /// + /// \return False on error. + virtual bool handleTargetFeatures(std::vector<std::string> &Features, + DiagnosticsEngine &Diags) { + return true; + } + + /// Determine whether the given target has the given feature. + virtual bool hasFeature(StringRef Feature) const { + return false; + } + + /// Identify whether this target supports multiversioning of functions, + /// which requires support for cpu_supports and cpu_is functionality. + bool supportsMultiVersioning() const { + return getTriple().getArch() == llvm::Triple::x86 || + getTriple().getArch() == llvm::Triple::x86_64; + } + + /// Identify whether this target supports IFuncs. + bool supportsIFunc() const { return getTriple().isOSBinFormatELF(); } + + // Validate the contents of the __builtin_cpu_supports(const char*) + // argument. + virtual bool validateCpuSupports(StringRef Name) const { return false; } + + // Return the target-specific priority for features/cpus/vendors so + // that they can be properly sorted for checking. + virtual unsigned multiVersionSortPriority(StringRef Name) const { + return 0; + } + + // Validate the contents of the __builtin_cpu_is(const char*) + // argument. + virtual bool validateCpuIs(StringRef Name) const { return false; } + + // Validate a cpu_dispatch/cpu_specific CPU option, which is a different list + // from cpu_is, since it checks via features rather than CPUs directly. + virtual bool validateCPUSpecificCPUDispatch(StringRef Name) const { + return false; + } + + // Get the character to be added for mangling purposes for cpu_specific. + virtual char CPUSpecificManglingCharacter(StringRef Name) const { + llvm_unreachable( + "cpu_specific Multiversioning not implemented on this target"); + } + + // Get a list of the features that make up the CPU option for + // cpu_specific/cpu_dispatch so that it can be passed to llvm as optimization + // options. + virtual void getCPUSpecificCPUDispatchFeatures( + StringRef Name, llvm::SmallVectorImpl<StringRef> &Features) const { + llvm_unreachable( + "cpu_specific Multiversioning not implemented on this target"); + } + + // Returns maximal number of args passed in registers. + unsigned getRegParmMax() const { + assert(RegParmMax < 7 && "RegParmMax value is larger than AST can handle"); + return RegParmMax; + } + + /// Whether the target supports thread-local storage. + bool isTLSSupported() const { + return TLSSupported; + } + + /// Return the maximum alignment (in bits) of a TLS variable + /// + /// Gets the maximum alignment (in bits) of a TLS variable on this target. + /// Returns zero if there is no such constraint. + unsigned short getMaxTLSAlign() const { + return MaxTLSAlign; + } + + /// Whether target supports variable-length arrays. + bool isVLASupported() const { return VLASupported; } + + /// Whether the target supports SEH __try. + bool isSEHTrySupported() const { + return getTriple().isOSWindows() && + (getTriple().getArch() == llvm::Triple::x86 || + getTriple().getArch() == llvm::Triple::x86_64 || + getTriple().getArch() == llvm::Triple::aarch64); + } + + /// Return true if {|} are normal characters in the asm string. + /// + /// If this returns false (the default), then {abc|xyz} is syntax + /// that says that when compiling for asm variant #0, "abc" should be + /// generated, but when compiling for asm variant #1, "xyz" should be + /// generated. + bool hasNoAsmVariants() const { + return NoAsmVariants; + } + + /// Return the register number that __builtin_eh_return_regno would + /// return with the specified argument. + /// This corresponds with TargetLowering's getExceptionPointerRegister + /// and getExceptionSelectorRegister in the backend. + virtual int getEHDataRegisterNumber(unsigned RegNo) const { + return -1; + } + + /// Return the section to use for C++ static initialization functions. + virtual const char *getStaticInitSectionSpecifier() const { + return nullptr; + } + + const LangASMap &getAddressSpaceMap() const { return *AddrSpaceMap; } + + /// Map from the address space field in builtin description strings to the + /// language address space. + virtual LangAS getOpenCLBuiltinAddressSpace(unsigned AS) const { + return getLangASFromTargetAS(AS); + } + + /// Map from the address space field in builtin description strings to the + /// language address space. + virtual LangAS getCUDABuiltinAddressSpace(unsigned AS) const { + return getLangASFromTargetAS(AS); + } + + /// Return an AST address space which can be used opportunistically + /// for constant global memory. It must be possible to convert pointers into + /// this address space to LangAS::Default. If no such address space exists, + /// this may return None, and such optimizations will be disabled. + virtual llvm::Optional<LangAS> getConstantAddressSpace() const { + return LangAS::Default; + } + + /// Retrieve the name of the platform as it is used in the + /// availability attribute. + StringRef getPlatformName() const { return PlatformName; } + + /// Retrieve the minimum desired version of the platform, to + /// which the program should be compiled. + VersionTuple getPlatformMinVersion() const { return PlatformMinVersion; } + + bool isBigEndian() const { return BigEndian; } + bool isLittleEndian() const { return !BigEndian; } + + enum CallingConvMethodType { + CCMT_Unknown, + CCMT_Member, + CCMT_NonMember + }; + + /// Gets the default calling convention for the given target and + /// declaration context. + virtual CallingConv getDefaultCallingConv(CallingConvMethodType MT) const { + // Not all targets will specify an explicit calling convention that we can + // express. This will always do the right thing, even though it's not + // an explicit calling convention. + return CC_C; + } + + enum CallingConvCheckResult { + CCCR_OK, + CCCR_Warning, + CCCR_Ignore, + }; + + /// Determines whether a given calling convention is valid for the + /// target. A calling convention can either be accepted, produce a warning + /// and be substituted with the default calling convention, or (someday) + /// produce an error (such as using thiscall on a non-instance function). + virtual CallingConvCheckResult checkCallingConvention(CallingConv CC) const { + switch (CC) { + default: + return CCCR_Warning; + case CC_C: + return CCCR_OK; + } + } + + enum CallingConvKind { + CCK_Default, + CCK_ClangABI4OrPS4, + CCK_MicrosoftWin64 + }; + + virtual CallingConvKind getCallingConvKind(bool ClangABICompat4) const; + + /// Controls if __builtin_longjmp / __builtin_setjmp can be lowered to + /// llvm.eh.sjlj.longjmp / llvm.eh.sjlj.setjmp. + virtual bool hasSjLjLowering() const { + return false; + } + + /// Check if the target supports CFProtection branch. + virtual bool + checkCFProtectionBranchSupported(DiagnosticsEngine &Diags) const; + + /// Check if the target supports CFProtection branch. + virtual bool + checkCFProtectionReturnSupported(DiagnosticsEngine &Diags) const; + + /// Whether target allows to overalign ABI-specified preferred alignment + virtual bool allowsLargerPreferedTypeAlignment() const { return true; } + + /// Set supported OpenCL extensions and optional core features. + virtual void setSupportedOpenCLOpts() {} + + /// Set supported OpenCL extensions as written on command line + virtual void setOpenCLExtensionOpts() { + for (const auto &Ext : getTargetOpts().OpenCLExtensionsAsWritten) { + getTargetOpts().SupportedOpenCLOptions.support(Ext); + } + } + + /// Get supported OpenCL extensions and optional core features. + OpenCLOptions &getSupportedOpenCLOpts() { + return getTargetOpts().SupportedOpenCLOptions; + } + + /// Get const supported OpenCL extensions and optional core features. + const OpenCLOptions &getSupportedOpenCLOpts() const { + return getTargetOpts().SupportedOpenCLOptions; + } + + enum OpenCLTypeKind { + OCLTK_Default, + OCLTK_ClkEvent, + OCLTK_Event, + OCLTK_Image, + OCLTK_Pipe, + OCLTK_Queue, + OCLTK_ReserveID, + OCLTK_Sampler, + }; + + /// Get address space for OpenCL type. + virtual LangAS getOpenCLTypeAddrSpace(OpenCLTypeKind TK) const; + + /// \returns Target specific vtbl ptr address space. + virtual unsigned getVtblPtrAddressSpace() const { + return 0; + } + + /// \returns If a target requires an address within a target specific address + /// space \p AddressSpace to be converted in order to be used, then return the + /// corresponding target specific DWARF address space. + /// + /// \returns Otherwise return None and no conversion will be emitted in the + /// DWARF. + virtual Optional<unsigned> getDWARFAddressSpace(unsigned AddressSpace) const { + return None; + } + + /// \returns The version of the SDK which was used during the compilation if + /// one was specified, or an empty version otherwise. + const llvm::VersionTuple &getSDKVersion() const { + return getTargetOpts().SDKVersion; + } + + /// Check the target is valid after it is fully initialized. + virtual bool validateTarget(DiagnosticsEngine &Diags) const { + return true; + } + + virtual void setAuxTarget(const TargetInfo *Aux) {} + +protected: + /// Copy type and layout related info. + void copyAuxTarget(const TargetInfo *Aux); + virtual uint64_t getPointerWidthV(unsigned AddrSpace) const { + return PointerWidth; + } + virtual uint64_t getPointerAlignV(unsigned AddrSpace) const { + return PointerAlign; + } + virtual enum IntType getPtrDiffTypeV(unsigned AddrSpace) const { + return PtrDiffType; + } + virtual ArrayRef<const char *> getGCCRegNames() const = 0; + virtual ArrayRef<GCCRegAlias> getGCCRegAliases() const = 0; + virtual ArrayRef<AddlRegName> getGCCAddlRegNames() const { + return None; + } + + private: + // Assert the values for the fractional and integral bits for each fixed point + // type follow the restrictions given in clause 6.2.6.3 of N1169. + void CheckFixedPointBits() const; +}; + +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/TargetOptions.h b/clang-r353983/include/clang/Basic/TargetOptions.h new file mode 100644 index 00000000..bbe86aeb --- /dev/null +++ b/clang-r353983/include/clang/Basic/TargetOptions.h @@ -0,0 +1,88 @@ +//===--- TargetOptions.h ----------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the clang::TargetOptions class. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_TARGETOPTIONS_H +#define LLVM_CLANG_BASIC_TARGETOPTIONS_H + +#include "clang/Basic/OpenCLOptions.h" +#include "llvm/Support/VersionTuple.h" +#include "llvm/Target/TargetOptions.h" +#include <string> +#include <vector> + +namespace clang { + +/// Options for controlling the target. +class TargetOptions { +public: + /// The name of the target triple to compile for. + std::string Triple; + + /// When compiling for the device side, contains the triple used to compile + /// for the host. + std::string HostTriple; + + /// If given, the name of the target CPU to generate code for. + std::string CPU; + + /// If given, the unit to use for floating point math. + std::string FPMath; + + /// If given, the name of the target ABI to use. + std::string ABI; + + /// The EABI version to use + llvm::EABI EABIVersion; + + /// If given, the version string of the linker in use. + std::string LinkerVersion; + + /// The list of target specific features to enable or disable, as written on the command line. + std::vector<std::string> FeaturesAsWritten; + + /// The list of target specific features to enable or disable -- this should + /// be a list of strings starting with by '+' or '-'. + std::vector<std::string> Features; + + /// Supported OpenCL extensions and optional core features. + OpenCLOptions SupportedOpenCLOptions; + + /// The list of OpenCL extensions to enable or disable, as written on + /// the command line. + std::vector<std::string> OpenCLExtensionsAsWritten; + + /// If given, enables support for __int128_t and __uint128_t types. + bool ForceEnableInt128 = false; + + /// \brief If enabled, use 32-bit pointers for accessing const/local/shared + /// address space. + bool NVPTXUseShortPointers = false; + + // The code model to be used as specified by the user. Corresponds to + // CodeModel::Model enum defined in include/llvm/Support/CodeGen.h, plus + // "default" for the case when the user has not explicitly specified a + // code model. + std::string CodeModel; + + /// The version of the SDK which was used during the compilation. + /// The option is used for two different purposes: + /// * on darwin the version is propagated to LLVM where it's used + /// to support SDK Version metadata (See D55673). + /// * CUDA compilation uses it to control parts of CUDA compilation + /// in clang that depend on specific version of the CUDA SDK. + llvm::VersionTuple SDKVersion; +}; + +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/TemplateKinds.h b/clang-r353983/include/clang/Basic/TemplateKinds.h new file mode 100644 index 00000000..cfed09f2 --- /dev/null +++ b/clang-r353983/include/clang/Basic/TemplateKinds.h @@ -0,0 +1,51 @@ +//===--- TemplateKinds.h - Enum values for C++ Template Kinds ---*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the clang::TemplateNameKind enum. +/// +//===----------------------------------------------------------------------===// +#ifndef LLVM_CLANG_BASIC_TEMPLATEKINDS_H +#define LLVM_CLANG_BASIC_TEMPLATEKINDS_H + +namespace clang { + +/// Specifies the kind of template name that an identifier refers to. +/// Be careful when changing this: this enumeration is used in diagnostics. +enum TemplateNameKind { + /// The name does not refer to a template. + TNK_Non_template = 0, + /// The name refers to a function template or a set of overloaded + /// functions that includes at least one function template. + TNK_Function_template, + /// The name refers to a template whose specialization produces a + /// type. The template itself could be a class template, template + /// template parameter, or template alias. + TNK_Type_template, + /// The name refers to a variable template whose specialization produces a + /// variable. + TNK_Var_template, + /// The name refers to a dependent template name: + /// \code + /// template<typename MetaFun, typename T1, typename T2> struct apply2 { + /// typedef typename MetaFun::template apply<T1, T2>::type type; + /// }; + /// \endcode + /// + /// Here, "apply" is a dependent template name within the typename + /// specifier in the typedef. "apply" is a nested template, and + /// whether the template name is assumed to refer to a type template or a + /// function template depends on the context in which the template + /// name occurs. + TNK_Dependent_template_name +}; + +} +#endif + + diff --git a/clang-r353983/include/clang/Basic/TokenKinds.def b/clang-r353983/include/clang/Basic/TokenKinds.def new file mode 100644 index 00000000..2a41d109 --- /dev/null +++ b/clang-r353983/include/clang/Basic/TokenKinds.def @@ -0,0 +1,840 @@ +//===--- TokenKinds.def - C Family Token Kind Database ----------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the TokenKind database. This includes normal tokens like +// tok::ampamp (corresponding to the && token) as well as keywords for various +// languages. Users of this file must optionally #define the TOK, KEYWORD, +// CXX11_KEYWORD, CONCEPTS_KEYWORD, ALIAS, or PPKEYWORD macros to make use of +// this file. +// +//===----------------------------------------------------------------------===// + +#ifndef TOK +#define TOK(X) +#endif +#ifndef PUNCTUATOR +#define PUNCTUATOR(X,Y) TOK(X) +#endif +#ifndef KEYWORD +#define KEYWORD(X,Y) TOK(kw_ ## X) +#endif +#ifndef CXX11_KEYWORD +#define CXX11_KEYWORD(X,Y) KEYWORD(X,KEYCXX11|(Y)) +#endif +#ifndef CXX2A_KEYWORD +#define CXX2A_KEYWORD(X,Y) KEYWORD(X,KEYCXX2A|(Y)) +#endif +#ifndef CONCEPTS_KEYWORD +#define CONCEPTS_KEYWORD(X) CXX2A_KEYWORD(X,KEYCONCEPTS) +#endif +#ifndef MODULES_KEYWORD +#define MODULES_KEYWORD(X) KEYWORD(X,KEYMODULES) +#endif +#ifndef TYPE_TRAIT +#define TYPE_TRAIT(N,I,K) KEYWORD(I,K) +#endif +#ifndef TYPE_TRAIT_1 +#define TYPE_TRAIT_1(I,E,K) TYPE_TRAIT(1,I,K) +#endif +#ifndef TYPE_TRAIT_2 +#define TYPE_TRAIT_2(I,E,K) TYPE_TRAIT(2,I,K) +#endif +#ifndef TYPE_TRAIT_N +#define TYPE_TRAIT_N(I,E,K) TYPE_TRAIT(0,I,K) +#endif +#ifndef ALIAS +#define ALIAS(X,Y,Z) +#endif +#ifndef PPKEYWORD +#define PPKEYWORD(X) +#endif +#ifndef CXX_KEYWORD_OPERATOR +#define CXX_KEYWORD_OPERATOR(X,Y) +#endif +#ifndef OBJC_AT_KEYWORD +#define OBJC_AT_KEYWORD(X) +#endif +#ifndef TESTING_KEYWORD +#define TESTING_KEYWORD(X, L) KEYWORD(X, L) +#endif +#ifndef ANNOTATION +#define ANNOTATION(X) TOK(annot_ ## X) +#endif + +//===----------------------------------------------------------------------===// +// Preprocessor keywords. +//===----------------------------------------------------------------------===// + +// These have meaning after a '#' at the start of a line. These define enums in +// the tok::pp_* namespace. Note that IdentifierInfo::getPPKeywordID must be +// manually updated if something is added here. +PPKEYWORD(not_keyword) + +// C99 6.10.1 - Conditional Inclusion. +PPKEYWORD(if) +PPKEYWORD(ifdef) +PPKEYWORD(ifndef) +PPKEYWORD(elif) +PPKEYWORD(else) +PPKEYWORD(endif) +PPKEYWORD(defined) + +// C99 6.10.2 - Source File Inclusion. +PPKEYWORD(include) +PPKEYWORD(__include_macros) + +// C99 6.10.3 - Macro Replacement. +PPKEYWORD(define) +PPKEYWORD(undef) + +// C99 6.10.4 - Line Control. +PPKEYWORD(line) + +// C99 6.10.5 - Error Directive. +PPKEYWORD(error) + +// C99 6.10.6 - Pragma Directive. +PPKEYWORD(pragma) + +// GNU Extensions. +PPKEYWORD(import) +PPKEYWORD(include_next) +PPKEYWORD(warning) +PPKEYWORD(ident) +PPKEYWORD(sccs) +PPKEYWORD(assert) +PPKEYWORD(unassert) + +// Clang extensions +PPKEYWORD(__public_macro) +PPKEYWORD(__private_macro) + +//===----------------------------------------------------------------------===// +// Language keywords. +//===----------------------------------------------------------------------===// + +// These define members of the tok::* namespace. + +TOK(unknown) // Not a token. +TOK(eof) // End of file. +TOK(eod) // End of preprocessing directive (end of line inside a + // directive). +TOK(code_completion) // Code completion marker + +// C99 6.4.9: Comments. +TOK(comment) // Comment (only in -E -C[C] mode) + +// C99 6.4.2: Identifiers. +TOK(identifier) // abcde123 +TOK(raw_identifier) // Used only in raw lexing mode. + +// C99 6.4.4.1: Integer Constants +// C99 6.4.4.2: Floating Constants +TOK(numeric_constant) // 0x123 + +// C99 6.4.4: Character Constants +TOK(char_constant) // 'a' +TOK(wide_char_constant) // L'b' + +// C++17 Character Constants +TOK(utf8_char_constant) // u8'a' + +// C++11 Character Constants +TOK(utf16_char_constant) // u'a' +TOK(utf32_char_constant) // U'a' + +// C99 6.4.5: String Literals. +TOK(string_literal) // "foo" +TOK(wide_string_literal) // L"foo" +TOK(angle_string_literal)// <foo> + +// C++11 String Literals. +TOK(utf8_string_literal) // u8"foo" +TOK(utf16_string_literal)// u"foo" +TOK(utf32_string_literal)// U"foo" + +// C99 6.4.6: Punctuators. +PUNCTUATOR(l_square, "[") +PUNCTUATOR(r_square, "]") +PUNCTUATOR(l_paren, "(") +PUNCTUATOR(r_paren, ")") +PUNCTUATOR(l_brace, "{") +PUNCTUATOR(r_brace, "}") +PUNCTUATOR(period, ".") +PUNCTUATOR(ellipsis, "...") +PUNCTUATOR(amp, "&") +PUNCTUATOR(ampamp, "&&") +PUNCTUATOR(ampequal, "&=") +PUNCTUATOR(star, "*") +PUNCTUATOR(starequal, "*=") +PUNCTUATOR(plus, "+") +PUNCTUATOR(plusplus, "++") +PUNCTUATOR(plusequal, "+=") +PUNCTUATOR(minus, "-") +PUNCTUATOR(arrow, "->") +PUNCTUATOR(minusminus, "--") +PUNCTUATOR(minusequal, "-=") +PUNCTUATOR(tilde, "~") +PUNCTUATOR(exclaim, "!") +PUNCTUATOR(exclaimequal, "!=") +PUNCTUATOR(slash, "/") +PUNCTUATOR(slashequal, "/=") +PUNCTUATOR(percent, "%") +PUNCTUATOR(percentequal, "%=") +PUNCTUATOR(less, "<") +PUNCTUATOR(lessless, "<<") +PUNCTUATOR(lessequal, "<=") +PUNCTUATOR(lesslessequal, "<<=") +PUNCTUATOR(spaceship, "<=>") +PUNCTUATOR(greater, ">") +PUNCTUATOR(greatergreater, ">>") +PUNCTUATOR(greaterequal, ">=") +PUNCTUATOR(greatergreaterequal, ">>=") +PUNCTUATOR(caret, "^") +PUNCTUATOR(caretequal, "^=") +PUNCTUATOR(pipe, "|") +PUNCTUATOR(pipepipe, "||") +PUNCTUATOR(pipeequal, "|=") +PUNCTUATOR(question, "?") +PUNCTUATOR(colon, ":") +PUNCTUATOR(semi, ";") +PUNCTUATOR(equal, "=") +PUNCTUATOR(equalequal, "==") +PUNCTUATOR(comma, ",") +PUNCTUATOR(hash, "#") +PUNCTUATOR(hashhash, "##") +PUNCTUATOR(hashat, "#@") + +// C++ Support +PUNCTUATOR(periodstar, ".*") +PUNCTUATOR(arrowstar, "->*") +PUNCTUATOR(coloncolon, "::") + +// Objective C support. +PUNCTUATOR(at, "@") + +// CUDA support. +PUNCTUATOR(lesslessless, "<<<") +PUNCTUATOR(greatergreatergreater, ">>>") + +// CL support +PUNCTUATOR(caretcaret, "^^") + +// C99 6.4.1: Keywords. These turn into kw_* tokens. +// Flags allowed: +// KEYALL - This is a keyword in all variants of C and C++, or it +// is a keyword in the implementation namespace that should +// always be treated as a keyword +// KEYC99 - This is a keyword introduced to C in C99 +// KEYC11 - This is a keyword introduced to C in C11 +// KEYCXX - This is a C++ keyword, or a C++-specific keyword in the +// implementation namespace +// KEYNOCXX - This is a keyword in every non-C++ dialect. +// KEYCXX11 - This is a C++ keyword introduced to C++ in C++11 +// KEYCXX2A - This is a C++ keyword introduced to C++ in C++2a +// KEYCONCEPTS - This is a keyword if the C++ extensions for concepts +// are enabled. +// KEYMODULES - This is a keyword if the C++ extensions for modules +// are enabled. +// KEYGNU - This is a keyword if GNU extensions are enabled +// KEYMS - This is a keyword if Microsoft extensions are enabled +// KEYNOMS18 - This is a keyword that must never be enabled under +// MSVC <= v18. +// KEYOPENCLC - This is a keyword in OpenCL C +// KEYOPENCLCXX - This is a keyword in OpenCL C++ +// KEYNOOPENCL - This is a keyword that is not supported in OpenCL C +// nor in OpenCL C++. +// KEYALTIVEC - This is a keyword in AltiVec +// KEYZVECTOR - This is a keyword for the System z vector extensions, +// which are heavily based on AltiVec +// KEYBORLAND - This is a keyword if Borland extensions are enabled +// KEYCOROUTINES - This is a keyword if support for the C++ coroutines +// TS is enabled +// BOOLSUPPORT - This is a keyword if 'bool' is a built-in type +// HALFSUPPORT - This is a keyword if 'half' is a built-in type +// WCHARSUPPORT - This is a keyword if 'wchar_t' is a built-in type +// CHAR8SUPPORT - This is a keyword if 'char8_t' is a built-in type +// +KEYWORD(auto , KEYALL) +KEYWORD(break , KEYALL) +KEYWORD(case , KEYALL) +KEYWORD(char , KEYALL) +KEYWORD(const , KEYALL) +KEYWORD(continue , KEYALL) +KEYWORD(default , KEYALL) +KEYWORD(do , KEYALL) +KEYWORD(double , KEYALL) +KEYWORD(else , KEYALL) +KEYWORD(enum , KEYALL) +KEYWORD(extern , KEYALL) +KEYWORD(float , KEYALL) +KEYWORD(for , KEYALL) +KEYWORD(goto , KEYALL) +KEYWORD(if , KEYALL) +KEYWORD(inline , KEYC99|KEYCXX|KEYGNU) +KEYWORD(int , KEYALL) +KEYWORD(long , KEYALL) +KEYWORD(register , KEYALL) +KEYWORD(restrict , KEYC99) +KEYWORD(return , KEYALL) +KEYWORD(short , KEYALL) +KEYWORD(signed , KEYALL) +KEYWORD(sizeof , KEYALL) +KEYWORD(static , KEYALL) +KEYWORD(struct , KEYALL) +KEYWORD(switch , KEYALL) +KEYWORD(typedef , KEYALL) +KEYWORD(union , KEYALL) +KEYWORD(unsigned , KEYALL) +KEYWORD(void , KEYALL) +KEYWORD(volatile , KEYALL) +KEYWORD(while , KEYALL) +KEYWORD(_Alignas , KEYALL) +KEYWORD(_Alignof , KEYALL) +KEYWORD(_Atomic , KEYALL|KEYNOOPENCL) +KEYWORD(_Bool , KEYNOCXX) +KEYWORD(_Complex , KEYALL) +KEYWORD(_Generic , KEYALL) +KEYWORD(_Imaginary , KEYALL) +KEYWORD(_Noreturn , KEYALL) +KEYWORD(_Static_assert , KEYALL) +KEYWORD(_Thread_local , KEYALL) +KEYWORD(__func__ , KEYALL) +KEYWORD(__objc_yes , KEYALL) +KEYWORD(__objc_no , KEYALL) + + +// C++ 2.11p1: Keywords. +KEYWORD(asm , KEYCXX|KEYGNU) +KEYWORD(bool , BOOLSUPPORT) +KEYWORD(catch , KEYCXX) +KEYWORD(class , KEYCXX) +KEYWORD(const_cast , KEYCXX) +KEYWORD(delete , KEYCXX) +KEYWORD(dynamic_cast , KEYCXX) +KEYWORD(explicit , KEYCXX) +KEYWORD(export , KEYCXX) +KEYWORD(false , BOOLSUPPORT) +KEYWORD(friend , KEYCXX) +KEYWORD(mutable , KEYCXX) +KEYWORD(namespace , KEYCXX) +KEYWORD(new , KEYCXX) +KEYWORD(operator , KEYCXX) +KEYWORD(private , KEYCXX) +KEYWORD(protected , KEYCXX) +KEYWORD(public , KEYCXX) +KEYWORD(reinterpret_cast , KEYCXX) +KEYWORD(static_cast , KEYCXX) +KEYWORD(template , KEYCXX) +KEYWORD(this , KEYCXX) +KEYWORD(throw , KEYCXX) +KEYWORD(true , BOOLSUPPORT) +KEYWORD(try , KEYCXX) +KEYWORD(typename , KEYCXX) +KEYWORD(typeid , KEYCXX) +KEYWORD(using , KEYCXX) +KEYWORD(virtual , KEYCXX) +KEYWORD(wchar_t , WCHARSUPPORT) + +// C++ 2.5p2: Alternative Representations. +CXX_KEYWORD_OPERATOR(and , ampamp) +CXX_KEYWORD_OPERATOR(and_eq , ampequal) +CXX_KEYWORD_OPERATOR(bitand , amp) +CXX_KEYWORD_OPERATOR(bitor , pipe) +CXX_KEYWORD_OPERATOR(compl , tilde) +CXX_KEYWORD_OPERATOR(not , exclaim) +CXX_KEYWORD_OPERATOR(not_eq , exclaimequal) +CXX_KEYWORD_OPERATOR(or , pipepipe) +CXX_KEYWORD_OPERATOR(or_eq , pipeequal) +CXX_KEYWORD_OPERATOR(xor , caret) +CXX_KEYWORD_OPERATOR(xor_eq , caretequal) + +// C++11 keywords +CXX11_KEYWORD(alignas , 0) +CXX11_KEYWORD(alignof , 0) +CXX11_KEYWORD(char16_t , KEYNOMS18) +CXX11_KEYWORD(char32_t , KEYNOMS18) +CXX11_KEYWORD(constexpr , 0) +CXX11_KEYWORD(decltype , 0) +CXX11_KEYWORD(noexcept , 0) +CXX11_KEYWORD(nullptr , 0) +CXX11_KEYWORD(static_assert , 0) +CXX11_KEYWORD(thread_local , 0) + +// C++2a / concepts TS keywords +CONCEPTS_KEYWORD(concept) +CONCEPTS_KEYWORD(requires) + +// C++ coroutines TS keywords +KEYWORD(co_await , KEYCOROUTINES) +KEYWORD(co_return , KEYCOROUTINES) +KEYWORD(co_yield , KEYCOROUTINES) + +// C++ modules TS keywords +MODULES_KEYWORD(module) +MODULES_KEYWORD(import) + +// C++ char8_t proposal +KEYWORD(char8_t , CHAR8SUPPORT) + +// C11 Extension +KEYWORD(_Float16 , KEYALL) + +// ISO/IEC JTC1 SC22 WG14 N1169 Extension +KEYWORD(_Accum , KEYNOCXX) +KEYWORD(_Fract , KEYNOCXX) +KEYWORD(_Sat , KEYNOCXX) + +// GNU Extensions (in impl-reserved namespace) +KEYWORD(_Decimal32 , KEYALL) +KEYWORD(_Decimal64 , KEYALL) +KEYWORD(_Decimal128 , KEYALL) +KEYWORD(__null , KEYCXX) +KEYWORD(__alignof , KEYALL) +KEYWORD(__attribute , KEYALL) +KEYWORD(__builtin_choose_expr , KEYALL) +KEYWORD(__builtin_offsetof , KEYALL) +// __builtin_types_compatible_p is a GNU C extension that we handle like a C++ +// type trait. +TYPE_TRAIT_2(__builtin_types_compatible_p, TypeCompatible, KEYNOCXX) +KEYWORD(__builtin_va_arg , KEYALL) +KEYWORD(__extension__ , KEYALL) +KEYWORD(__float128 , KEYALL) +KEYWORD(__imag , KEYALL) +KEYWORD(__int128 , KEYALL) +KEYWORD(__label__ , KEYALL) +KEYWORD(__real , KEYALL) +KEYWORD(__thread , KEYALL) +KEYWORD(__FUNCTION__ , KEYALL) +KEYWORD(__PRETTY_FUNCTION__ , KEYALL) +KEYWORD(__auto_type , KEYALL) + +// GNU Extensions (outside impl-reserved namespace) +KEYWORD(typeof , KEYGNU) + +// MS Extensions +KEYWORD(__FUNCDNAME__ , KEYMS) +KEYWORD(__FUNCSIG__ , KEYMS) +KEYWORD(L__FUNCTION__ , KEYMS) +KEYWORD(L__FUNCSIG__ , KEYMS) +TYPE_TRAIT_1(__is_interface_class, IsInterfaceClass, KEYMS) +TYPE_TRAIT_1(__is_sealed, IsSealed, KEYMS) + +// MSVC12.0 / VS2013 Type Traits +TYPE_TRAIT_1(__is_destructible, IsDestructible, KEYMS) +TYPE_TRAIT_1(__is_trivially_destructible, IsTriviallyDestructible, KEYCXX) +TYPE_TRAIT_1(__is_nothrow_destructible, IsNothrowDestructible, KEYMS) +TYPE_TRAIT_2(__is_nothrow_assignable, IsNothrowAssignable, KEYCXX) +TYPE_TRAIT_N(__is_constructible, IsConstructible, KEYCXX) +TYPE_TRAIT_N(__is_nothrow_constructible, IsNothrowConstructible, KEYCXX) + +// MSVC14.0 / VS2015 Type Traits +TYPE_TRAIT_2(__is_assignable, IsAssignable, KEYCXX) + +// GNU and MS Type Traits +TYPE_TRAIT_1(__has_nothrow_assign, HasNothrowAssign, KEYCXX) +TYPE_TRAIT_1(__has_nothrow_move_assign, HasNothrowMoveAssign, KEYCXX) +TYPE_TRAIT_1(__has_nothrow_copy, HasNothrowCopy, KEYCXX) +TYPE_TRAIT_1(__has_nothrow_constructor, HasNothrowConstructor, KEYCXX) +TYPE_TRAIT_1(__has_trivial_assign, HasTrivialAssign, KEYCXX) +TYPE_TRAIT_1(__has_trivial_move_assign, HasTrivialMoveAssign, KEYCXX) +TYPE_TRAIT_1(__has_trivial_copy, HasTrivialCopy, KEYCXX) +TYPE_TRAIT_1(__has_trivial_constructor, HasTrivialDefaultConstructor, KEYCXX) +TYPE_TRAIT_1(__has_trivial_move_constructor, HasTrivialMoveConstructor, KEYCXX) +TYPE_TRAIT_1(__has_trivial_destructor, HasTrivialDestructor, KEYCXX) +TYPE_TRAIT_1(__has_virtual_destructor, HasVirtualDestructor, KEYCXX) +TYPE_TRAIT_1(__is_abstract, IsAbstract, KEYCXX) +TYPE_TRAIT_1(__is_aggregate, IsAggregate, KEYCXX) +TYPE_TRAIT_2(__is_base_of, IsBaseOf, KEYCXX) +TYPE_TRAIT_1(__is_class, IsClass, KEYCXX) +TYPE_TRAIT_2(__is_convertible_to, IsConvertibleTo, KEYCXX) +TYPE_TRAIT_1(__is_empty, IsEmpty, KEYCXX) +TYPE_TRAIT_1(__is_enum, IsEnum, KEYCXX) +TYPE_TRAIT_1(__is_final, IsFinal, KEYCXX) +TYPE_TRAIT_1(__is_literal, IsLiteral, KEYCXX) +// Name for GCC 4.6 compatibility - people have already written libraries using +// this name unfortunately. +ALIAS("__is_literal_type", __is_literal, KEYCXX) +TYPE_TRAIT_1(__is_pod, IsPOD, KEYCXX) +TYPE_TRAIT_1(__is_polymorphic, IsPolymorphic, KEYCXX) +TYPE_TRAIT_1(__is_trivial, IsTrivial, KEYCXX) +TYPE_TRAIT_1(__is_union, IsUnion, KEYCXX) +TYPE_TRAIT_1(__has_unique_object_representations, + HasUniqueObjectRepresentations, KEYCXX) + +// Clang-only C++ Type Traits +TYPE_TRAIT_N(__is_trivially_constructible, IsTriviallyConstructible, KEYCXX) +TYPE_TRAIT_1(__is_trivially_copyable, IsTriviallyCopyable, KEYCXX) +TYPE_TRAIT_2(__is_trivially_assignable, IsTriviallyAssignable, KEYCXX) +TYPE_TRAIT_2(__reference_binds_to_temporary, ReferenceBindsToTemporary, KEYCXX) +KEYWORD(__underlying_type , KEYCXX) + +// Embarcadero Expression Traits +KEYWORD(__is_lvalue_expr , KEYCXX) +KEYWORD(__is_rvalue_expr , KEYCXX) + +// Embarcadero Unary Type Traits +TYPE_TRAIT_1(__is_arithmetic, IsArithmetic, KEYCXX) +TYPE_TRAIT_1(__is_floating_point, IsFloatingPoint, KEYCXX) +TYPE_TRAIT_1(__is_integral, IsIntegral, KEYCXX) +TYPE_TRAIT_1(__is_complete_type, IsCompleteType, KEYCXX) +TYPE_TRAIT_1(__is_void, IsVoid, KEYCXX) +TYPE_TRAIT_1(__is_array, IsArray, KEYCXX) +TYPE_TRAIT_1(__is_function, IsFunction, KEYCXX) +TYPE_TRAIT_1(__is_reference, IsReference, KEYCXX) +TYPE_TRAIT_1(__is_lvalue_reference, IsLvalueReference, KEYCXX) +TYPE_TRAIT_1(__is_rvalue_reference, IsRvalueReference, KEYCXX) +TYPE_TRAIT_1(__is_fundamental, IsFundamental, KEYCXX) +TYPE_TRAIT_1(__is_object, IsObject, KEYCXX) +TYPE_TRAIT_1(__is_scalar, IsScalar, KEYCXX) +TYPE_TRAIT_1(__is_compound, IsCompound, KEYCXX) +TYPE_TRAIT_1(__is_pointer, IsPointer, KEYCXX) +TYPE_TRAIT_1(__is_member_object_pointer, IsMemberObjectPointer, KEYCXX) +TYPE_TRAIT_1(__is_member_function_pointer, IsMemberFunctionPointer, KEYCXX) +TYPE_TRAIT_1(__is_member_pointer, IsMemberPointer, KEYCXX) +TYPE_TRAIT_1(__is_const, IsConst, KEYCXX) +TYPE_TRAIT_1(__is_volatile, IsVolatile, KEYCXX) +TYPE_TRAIT_1(__is_standard_layout, IsStandardLayout, KEYCXX) +TYPE_TRAIT_1(__is_signed, IsSigned, KEYCXX) +TYPE_TRAIT_1(__is_unsigned, IsUnsigned, KEYCXX) + +// Embarcadero Binary Type Traits +TYPE_TRAIT_2(__is_same, IsSame, KEYCXX) +TYPE_TRAIT_2(__is_convertible, IsConvertible, KEYCXX) +KEYWORD(__array_rank , KEYCXX) +KEYWORD(__array_extent , KEYCXX) + +// Apple Extension. +KEYWORD(__private_extern__ , KEYALL) +KEYWORD(__module_private__ , KEYALL) + +// Extension that will be enabled for Microsoft, Borland and PS4, but can be +// disabled via '-fno-declspec'. +KEYWORD(__declspec , 0) + +// Microsoft Extension. +KEYWORD(__cdecl , KEYALL) +KEYWORD(__stdcall , KEYALL) +KEYWORD(__fastcall , KEYALL) +KEYWORD(__thiscall , KEYALL) +KEYWORD(__regcall , KEYALL) +KEYWORD(__vectorcall , KEYALL) +KEYWORD(__forceinline , KEYMS) +KEYWORD(__unaligned , KEYMS) +KEYWORD(__super , KEYMS) + +// OpenCL address space qualifiers +KEYWORD(__global , KEYOPENCLC | KEYOPENCLCXX) +KEYWORD(__local , KEYOPENCLC | KEYOPENCLCXX) +KEYWORD(__constant , KEYOPENCLC | KEYOPENCLCXX) +KEYWORD(__private , KEYOPENCLC | KEYOPENCLCXX) +KEYWORD(__generic , KEYOPENCLC | KEYOPENCLCXX) +ALIAS("global", __global , KEYOPENCLC) +ALIAS("local", __local , KEYOPENCLC) +ALIAS("constant", __constant , KEYOPENCLC) +ALIAS("private", __private , KEYOPENCLC) +ALIAS("generic", __generic , KEYOPENCLC) +// OpenCL function qualifiers +KEYWORD(__kernel , KEYOPENCLC | KEYOPENCLCXX) +ALIAS("kernel", __kernel , KEYOPENCLC | KEYOPENCLCXX) +// OpenCL access qualifiers +KEYWORD(__read_only , KEYOPENCLC | KEYOPENCLCXX) +KEYWORD(__write_only , KEYOPENCLC | KEYOPENCLCXX) +KEYWORD(__read_write , KEYOPENCLC | KEYOPENCLCXX) +ALIAS("read_only", __read_only , KEYOPENCLC | KEYOPENCLCXX) +ALIAS("write_only", __write_only , KEYOPENCLC | KEYOPENCLCXX) +ALIAS("read_write", __read_write , KEYOPENCLC | KEYOPENCLCXX) +// OpenCL builtins +KEYWORD(__builtin_astype , KEYOPENCLC) +KEYWORD(vec_step , KEYOPENCLC | KEYALTIVEC | KEYZVECTOR) +#define GENERIC_IMAGE_TYPE(ImgType, Id) KEYWORD(ImgType##_t, KEYOPENCLC) +#include "clang/Basic/OpenCLImageTypes.def" + +// OpenMP Type Traits +KEYWORD(__builtin_omp_required_simd_align, KEYALL) + +KEYWORD(pipe , KEYOPENCLC) + +// Borland Extensions. +KEYWORD(__pascal , KEYALL) + +// Altivec Extension. +KEYWORD(__vector , KEYALTIVEC|KEYZVECTOR) +KEYWORD(__pixel , KEYALTIVEC) +KEYWORD(__bool , KEYALTIVEC|KEYZVECTOR) + +// ARM NEON extensions. +ALIAS("__fp16", half , KEYALL) + +// OpenCL Extension. +KEYWORD(half , HALFSUPPORT) + +// Objective-C ARC keywords. +KEYWORD(__bridge , KEYOBJC) +KEYWORD(__bridge_transfer , KEYOBJC) +KEYWORD(__bridge_retained , KEYOBJC) +KEYWORD(__bridge_retain , KEYOBJC) + +// Objective-C keywords. +KEYWORD(__covariant , KEYOBJC) +KEYWORD(__contravariant , KEYOBJC) +KEYWORD(__kindof , KEYOBJC) + +// Alternate spelling for various tokens. There are GCC extensions in all +// languages, but should not be disabled in strict conformance mode. +ALIAS("__alignof__" , __alignof , KEYALL) +ALIAS("__asm" , asm , KEYALL) +ALIAS("__asm__" , asm , KEYALL) +ALIAS("__attribute__", __attribute, KEYALL) +ALIAS("__complex" , _Complex , KEYALL) +ALIAS("__complex__" , _Complex , KEYALL) +ALIAS("__const" , const , KEYALL) +ALIAS("__const__" , const , KEYALL) +ALIAS("__decltype" , decltype , KEYCXX) +ALIAS("__imag__" , __imag , KEYALL) +ALIAS("__inline" , inline , KEYALL) +ALIAS("__inline__" , inline , KEYALL) +ALIAS("__nullptr" , nullptr , KEYCXX) +ALIAS("__real__" , __real , KEYALL) +ALIAS("__restrict" , restrict , KEYALL) +ALIAS("__restrict__" , restrict , KEYALL) +ALIAS("__signed" , signed , KEYALL) +ALIAS("__signed__" , signed , KEYALL) +ALIAS("__typeof" , typeof , KEYALL) +ALIAS("__typeof__" , typeof , KEYALL) +ALIAS("__volatile" , volatile , KEYALL) +ALIAS("__volatile__" , volatile , KEYALL) + +// Type nullability. +KEYWORD(_Nonnull , KEYALL) +KEYWORD(_Nullable , KEYALL) +KEYWORD(_Null_unspecified , KEYALL) + +// Microsoft extensions which should be disabled in strict conformance mode +KEYWORD(__ptr64 , KEYMS) +KEYWORD(__ptr32 , KEYMS) +KEYWORD(__sptr , KEYMS) +KEYWORD(__uptr , KEYMS) +KEYWORD(__w64 , KEYMS) +KEYWORD(__uuidof , KEYMS | KEYBORLAND) +KEYWORD(__try , KEYMS | KEYBORLAND) +KEYWORD(__finally , KEYMS | KEYBORLAND) +KEYWORD(__leave , KEYMS | KEYBORLAND) +KEYWORD(__int64 , KEYMS) +KEYWORD(__if_exists , KEYMS) +KEYWORD(__if_not_exists , KEYMS) +KEYWORD(__single_inheritance , KEYMS) +KEYWORD(__multiple_inheritance , KEYMS) +KEYWORD(__virtual_inheritance , KEYMS) +KEYWORD(__interface , KEYMS) +ALIAS("__int8" , char , KEYMS) +ALIAS("_int8" , char , KEYMS) +ALIAS("__int16" , short , KEYMS) +ALIAS("_int16" , short , KEYMS) +ALIAS("__int32" , int , KEYMS) +ALIAS("_int32" , int , KEYMS) +ALIAS("_int64" , __int64 , KEYMS) +ALIAS("__wchar_t" , wchar_t , KEYMS) +ALIAS("_asm" , asm , KEYMS) +ALIAS("_alignof" , __alignof , KEYMS) +ALIAS("__builtin_alignof", __alignof , KEYMS) +ALIAS("_cdecl" , __cdecl , KEYMS | KEYBORLAND) +ALIAS("_fastcall" , __fastcall , KEYMS | KEYBORLAND) +ALIAS("_stdcall" , __stdcall , KEYMS | KEYBORLAND) +ALIAS("_thiscall" , __thiscall , KEYMS) +ALIAS("_vectorcall" , __vectorcall, KEYMS) +ALIAS("_uuidof" , __uuidof , KEYMS | KEYBORLAND) +ALIAS("_inline" , inline , KEYMS) +ALIAS("_declspec" , __declspec , KEYMS) + +// Borland Extensions which should be disabled in strict conformance mode. +ALIAS("_pascal" , __pascal , KEYBORLAND) + +// Clang Extensions. +KEYWORD(__builtin_convertvector , KEYALL) +ALIAS("__char16_t" , char16_t , KEYCXX) +ALIAS("__char32_t" , char32_t , KEYCXX) + +KEYWORD(__builtin_available , KEYALL) + +// Clang-specific keywords enabled only in testing. +TESTING_KEYWORD(__unknown_anytype , KEYALL) + + +//===----------------------------------------------------------------------===// +// Objective-C @-preceded keywords. +//===----------------------------------------------------------------------===// + +// These have meaning after an '@' in Objective-C mode. These define enums in +// the tok::objc_* namespace. + +OBJC_AT_KEYWORD(not_keyword) +OBJC_AT_KEYWORD(class) +OBJC_AT_KEYWORD(compatibility_alias) +OBJC_AT_KEYWORD(defs) +OBJC_AT_KEYWORD(encode) +OBJC_AT_KEYWORD(end) +OBJC_AT_KEYWORD(implementation) +OBJC_AT_KEYWORD(interface) +OBJC_AT_KEYWORD(private) +OBJC_AT_KEYWORD(protected) +OBJC_AT_KEYWORD(protocol) +OBJC_AT_KEYWORD(public) +OBJC_AT_KEYWORD(selector) +OBJC_AT_KEYWORD(throw) +OBJC_AT_KEYWORD(try) +OBJC_AT_KEYWORD(catch) +OBJC_AT_KEYWORD(finally) +OBJC_AT_KEYWORD(synchronized) +OBJC_AT_KEYWORD(autoreleasepool) + +OBJC_AT_KEYWORD(property) +OBJC_AT_KEYWORD(package) +OBJC_AT_KEYWORD(required) +OBJC_AT_KEYWORD(optional) +OBJC_AT_KEYWORD(synthesize) +OBJC_AT_KEYWORD(dynamic) +OBJC_AT_KEYWORD(import) +OBJC_AT_KEYWORD(available) + +// TODO: What to do about context-sensitive keywords like: +// bycopy/byref/in/inout/oneway/out? + +ANNOTATION(cxxscope) // annotation for a C++ scope spec, e.g. "::foo::bar::" +ANNOTATION(typename) // annotation for a C typedef name, a C++ (possibly + // qualified) typename, e.g. "foo::MyClass", or + // template-id that names a type ("std::vector<int>") +ANNOTATION(template_id) // annotation for a C++ template-id that names a + // function template specialization (not a type), + // e.g., "std::swap<int>" +ANNOTATION(primary_expr) // annotation for a primary expression +ANNOTATION(decltype) // annotation for a decltype expression, + // e.g., "decltype(foo.bar())" + +// Annotation for #pragma unused(...) +// For each argument inside the parentheses the pragma handler will produce +// one 'pragma_unused' annotation token followed by the argument token. +ANNOTATION(pragma_unused) + +// Annotation for #pragma GCC visibility... +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_vis) + +// Annotation for #pragma pack... +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_pack) + +// Annotation for #pragma clang __debug parser_crash... +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_parser_crash) + +// Annotation for #pragma clang __debug captured... +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_captured) + +// Annotation for #pragma clang __debug dump... +// The lexer produces these so that the parser and semantic analysis can +// look up and dump the operand. +ANNOTATION(pragma_dump) + +// Annotation for #pragma ms_struct... +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_msstruct) + +// Annotation for #pragma align... +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_align) + +// Annotation for #pragma weak id +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_weak) + +// Annotation for #pragma weak id = id +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_weakalias) + +// Annotation for #pragma redefine_extname... +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_redefine_extname) + +// Annotation for #pragma STDC FP_CONTRACT... +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_fp_contract) + +// Annotation for #pragma STDC FENV_ACCESS +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_fenv_access) + +// Annotation for #pragma pointers_to_members... +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_ms_pointers_to_members) + +// Annotation for #pragma vtordisp... +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_ms_vtordisp) + +// Annotation for all microsoft #pragmas... +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_ms_pragma) + +// Annotation for #pragma OPENCL EXTENSION... +// The lexer produces these so that they only take effect when the parser +// handles them. +ANNOTATION(pragma_opencl_extension) + +// Annotations for OpenMP pragma directives - #pragma omp ... +// The lexer produces these so that they only take effect when the parser +// handles #pragma omp ... directives. +ANNOTATION(pragma_openmp) +ANNOTATION(pragma_openmp_end) + +// Annotations for loop pragma directives #pragma clang loop ... +// The lexer produces these so that they only take effect when the parser +// handles #pragma loop ... directives. +ANNOTATION(pragma_loop_hint) + +ANNOTATION(pragma_fp) + +// Annotation for the attribute pragma directives - #pragma clang attribute ... +ANNOTATION(pragma_attribute) + +// Annotations for module import translated from #include etc. +ANNOTATION(module_include) +ANNOTATION(module_begin) +ANNOTATION(module_end) + +#undef ANNOTATION +#undef TESTING_KEYWORD +#undef OBJC_AT_KEYWORD +#undef CXX_KEYWORD_OPERATOR +#undef PPKEYWORD +#undef ALIAS +#undef TYPE_TRAIT_N +#undef TYPE_TRAIT_2 +#undef TYPE_TRAIT_1 +#undef TYPE_TRAIT +#undef CONCEPTS_KEYWORD +#undef CXX2A_KEYWORD +#undef CXX11_KEYWORD +#undef KEYWORD +#undef PUNCTUATOR +#undef TOK diff --git a/clang-r353983/include/clang/Basic/TokenKinds.h b/clang-r353983/include/clang/Basic/TokenKinds.h new file mode 100644 index 00000000..264a8e23 --- /dev/null +++ b/clang-r353983/include/clang/Basic/TokenKinds.h @@ -0,0 +1,104 @@ +//===--- TokenKinds.h - Enum values for C Token Kinds -----------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the clang::TokenKind enum and support functions. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_TOKENKINDS_H +#define LLVM_CLANG_BASIC_TOKENKINDS_H + +#include "llvm/Support/Compiler.h" + +namespace clang { + +namespace tok { + +/// Provides a simple uniform namespace for tokens from all C languages. +enum TokenKind : unsigned short { +#define TOK(X) X, +#include "clang/Basic/TokenKinds.def" + NUM_TOKENS +}; + +/// Provides a namespace for preprocessor keywords which start with a +/// '#' at the beginning of the line. +enum PPKeywordKind { +#define PPKEYWORD(X) pp_##X, +#include "clang/Basic/TokenKinds.def" + NUM_PP_KEYWORDS +}; + +/// Provides a namespace for Objective-C keywords which start with +/// an '@'. +enum ObjCKeywordKind { +#define OBJC_AT_KEYWORD(X) objc_##X, +#include "clang/Basic/TokenKinds.def" + NUM_OBJC_KEYWORDS +}; + +/// Defines the possible values of an on-off-switch (C99 6.10.6p2). +enum OnOffSwitch { + OOS_ON, OOS_OFF, OOS_DEFAULT +}; + +/// Determines the name of a token as used within the front end. +/// +/// The name of a token will be an internal name (such as "l_square") +/// and should not be used as part of diagnostic messages. +const char *getTokenName(TokenKind Kind) LLVM_READNONE; + +/// Determines the spelling of simple punctuation tokens like +/// '!' or '%', and returns NULL for literal and annotation tokens. +/// +/// This routine only retrieves the "simple" spelling of the token, +/// and will not produce any alternative spellings (e.g., a +/// digraph). For the actual spelling of a given Token, use +/// Preprocessor::getSpelling(). +const char *getPunctuatorSpelling(TokenKind Kind) LLVM_READNONE; + +/// Determines the spelling of simple keyword and contextual keyword +/// tokens like 'int' and 'dynamic_cast'. Returns NULL for other token kinds. +const char *getKeywordSpelling(TokenKind Kind) LLVM_READNONE; + +/// Return true if this is a raw identifier or an identifier kind. +inline bool isAnyIdentifier(TokenKind K) { + return (K == tok::identifier) || (K == tok::raw_identifier); +} + +/// Return true if this is a C or C++ string-literal (or +/// C++11 user-defined-string-literal) token. +inline bool isStringLiteral(TokenKind K) { + return K == tok::string_literal || K == tok::wide_string_literal || + K == tok::utf8_string_literal || K == tok::utf16_string_literal || + K == tok::utf32_string_literal; +} + +/// Return true if this is a "literal" kind, like a numeric +/// constant, string, etc. +inline bool isLiteral(TokenKind K) { + return K == tok::numeric_constant || K == tok::char_constant || + K == tok::wide_char_constant || K == tok::utf8_char_constant || + K == tok::utf16_char_constant || K == tok::utf32_char_constant || + isStringLiteral(K) || K == tok::angle_string_literal; +} + +/// Return true if this is any of tok::annot_* kinds. +inline bool isAnnotation(TokenKind K) { +#define ANNOTATION(NAME) \ + if (K == tok::annot_##NAME) \ + return true; +#include "clang/Basic/TokenKinds.def" + return false; +} + +} // end namespace tok +} // end namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/TypeTraits.h b/clang-r353983/include/clang/Basic/TypeTraits.h new file mode 100644 index 00000000..7c1b571f --- /dev/null +++ b/clang-r353983/include/clang/Basic/TypeTraits.h @@ -0,0 +1,110 @@ +//===--- TypeTraits.h - C++ Type Traits Support Enumerations ----*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines enumerations for the type traits support. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_TYPETRAITS_H +#define LLVM_CLANG_BASIC_TYPETRAITS_H + +namespace clang { + + /// Names for traits that operate specifically on types. + enum TypeTrait { + UTT_HasNothrowAssign, + UTT_HasNothrowMoveAssign, + UTT_HasNothrowCopy, + UTT_HasNothrowConstructor, + UTT_HasTrivialAssign, + UTT_HasTrivialMoveAssign, + UTT_HasTrivialCopy, + UTT_HasTrivialDefaultConstructor, + UTT_HasTrivialMoveConstructor, + UTT_HasTrivialDestructor, + UTT_HasVirtualDestructor, + UTT_IsAbstract, + UTT_IsAggregate, + UTT_IsArithmetic, + UTT_IsArray, + UTT_IsClass, + UTT_IsCompleteType, + UTT_IsCompound, + UTT_IsConst, + UTT_IsDestructible, + UTT_IsEmpty, + UTT_IsEnum, + UTT_IsFinal, + UTT_IsFloatingPoint, + UTT_IsFunction, + UTT_IsFundamental, + UTT_IsIntegral, + UTT_IsInterfaceClass, + UTT_IsLiteral, + UTT_IsLvalueReference, + UTT_IsMemberFunctionPointer, + UTT_IsMemberObjectPointer, + UTT_IsMemberPointer, + UTT_IsNothrowDestructible, + UTT_IsObject, + UTT_IsPOD, + UTT_IsPointer, + UTT_IsPolymorphic, + UTT_IsReference, + UTT_IsRvalueReference, + UTT_IsScalar, + UTT_IsSealed, + UTT_IsSigned, + UTT_IsStandardLayout, + UTT_IsTrivial, + UTT_IsTriviallyCopyable, + UTT_IsTriviallyDestructible, + UTT_IsUnion, + UTT_IsUnsigned, + UTT_IsVoid, + UTT_IsVolatile, + UTT_HasUniqueObjectRepresentations, + UTT_Last = UTT_HasUniqueObjectRepresentations, + BTT_IsBaseOf, + BTT_IsConvertible, + BTT_IsConvertibleTo, + BTT_IsSame, + BTT_TypeCompatible, + BTT_IsAssignable, + BTT_IsNothrowAssignable, + BTT_IsTriviallyAssignable, + BTT_ReferenceBindsToTemporary, + BTT_Last = BTT_ReferenceBindsToTemporary, + TT_IsConstructible, + TT_IsNothrowConstructible, + TT_IsTriviallyConstructible + }; + + /// Names for the array type traits. + enum ArrayTypeTrait { + ATT_ArrayRank, + ATT_ArrayExtent + }; + + /// Names for the "expression or type" traits. + enum UnaryExprOrTypeTrait { + UETT_SizeOf, + /// Used for C's _Alignof and C++'s alignof. + /// _Alignof and alignof return the required ABI alignment. + UETT_AlignOf, + UETT_VecStep, + UETT_OpenMPRequiredSimdAlign, + /// Used for GCC's __alignof. + /// __alignof returns the preferred alignment of a type, the alignment + /// clang will attempt to give an object of the type if allowed by ABI. + UETT_PreferredAlignOf, + }; +} + +#endif diff --git a/clang-r353983/include/clang/Basic/Version.h b/clang-r353983/include/clang/Basic/Version.h new file mode 100644 index 00000000..2881d8db --- /dev/null +++ b/clang-r353983/include/clang/Basic/Version.h @@ -0,0 +1,61 @@ +//===- Version.h - Clang Version Number -------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines version macros and version-related utility functions +/// for Clang. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_VERSION_H +#define LLVM_CLANG_BASIC_VERSION_H + +#include "clang/Basic/Version.inc" +#include "llvm/ADT/StringRef.h" + +namespace clang { + /// Retrieves the repository path (e.g., Subversion path) that + /// identifies the particular Clang branch, tag, or trunk from which this + /// Clang was built. + std::string getClangRepositoryPath(); + + /// Retrieves the repository path from which LLVM was built. + /// + /// This supports LLVM residing in a separate repository from clang. + std::string getLLVMRepositoryPath(); + + /// Retrieves the repository revision number (or identifier) from which + /// this Clang was built. + std::string getClangRevision(); + + /// Retrieves the repository revision number (or identifier) from which + /// LLVM was built. + /// + /// If Clang and LLVM are in the same repository, this returns the same + /// string as getClangRevision. + std::string getLLVMRevision(); + + /// Retrieves the full repository version that is an amalgamation of + /// the information in getClangRepositoryPath() and getClangRevision(). + std::string getClangFullRepositoryVersion(); + + /// Retrieves a string representing the complete clang version, + /// which includes the clang version number, the repository version, + /// and the vendor tag. + std::string getClangFullVersion(); + + /// Like getClangFullVersion(), but with a custom tool name. + std::string getClangToolFullVersion(llvm::StringRef ToolName); + + /// Retrieves a string representing the complete clang version suitable + /// for use in the CPP __VERSION__ macro, which includes the clang version + /// number, the repository version, and the vendor tag. + std::string getClangFullCPPVersion(); +} + +#endif // LLVM_CLANG_BASIC_VERSION_H diff --git a/clang-r353983/include/clang/Basic/Version.inc b/clang-r353983/include/clang/Basic/Version.inc new file mode 100644 index 00000000..370ff209 --- /dev/null +++ b/clang-r353983/include/clang/Basic/Version.inc @@ -0,0 +1,5 @@ +#define CLANG_VERSION 9.0.1 +#define CLANG_VERSION_STRING "9.0.1" +#define CLANG_VERSION_MAJOR 9 +#define CLANG_VERSION_MINOR 0 +#define CLANG_VERSION_PATCHLEVEL 1 diff --git a/clang-r353983/include/clang/Basic/Visibility.h b/clang-r353983/include/clang/Basic/Visibility.h new file mode 100644 index 00000000..57d9754a --- /dev/null +++ b/clang-r353983/include/clang/Basic/Visibility.h @@ -0,0 +1,145 @@ +//===--- Visibility.h - Visibility enumeration and utilities ----*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Defines the clang::Visibility enumeration and various utility +/// functions. +/// +//===----------------------------------------------------------------------===// +#ifndef LLVM_CLANG_BASIC_VISIBILITY_H +#define LLVM_CLANG_BASIC_VISIBILITY_H + +#include "clang/Basic/Linkage.h" +#include <cassert> +#include <cstdint> + +namespace clang { + +/// Describes the different kinds of visibility that a declaration +/// may have. +/// +/// Visibility determines how a declaration interacts with the dynamic +/// linker. It may also affect whether the symbol can be found by runtime +/// symbol lookup APIs. +/// +/// Visibility is not described in any language standard and +/// (nonetheless) sometimes has odd behavior. Not all platforms +/// support all visibility kinds. +enum Visibility { + /// Objects with "hidden" visibility are not seen by the dynamic + /// linker. + HiddenVisibility, + + /// Objects with "protected" visibility are seen by the dynamic + /// linker but always dynamically resolve to an object within this + /// shared object. + ProtectedVisibility, + + /// Objects with "default" visibility are seen by the dynamic linker + /// and act like normal objects. + DefaultVisibility +}; + +inline Visibility minVisibility(Visibility L, Visibility R) { + return L < R ? L : R; +} + +class LinkageInfo { + uint8_t linkage_ : 3; + uint8_t visibility_ : 2; + uint8_t explicit_ : 1; + + void setVisibility(Visibility V, bool E) { visibility_ = V; explicit_ = E; } +public: + LinkageInfo() : linkage_(ExternalLinkage), visibility_(DefaultVisibility), + explicit_(false) {} + LinkageInfo(Linkage L, Visibility V, bool E) + : linkage_(L), visibility_(V), explicit_(E) { + assert(getLinkage() == L && getVisibility() == V && + isVisibilityExplicit() == E && "Enum truncated!"); + } + + static LinkageInfo external() { + return LinkageInfo(); + } + static LinkageInfo internal() { + return LinkageInfo(InternalLinkage, DefaultVisibility, false); + } + static LinkageInfo uniqueExternal() { + return LinkageInfo(UniqueExternalLinkage, DefaultVisibility, false); + } + static LinkageInfo none() { + return LinkageInfo(NoLinkage, DefaultVisibility, false); + } + static LinkageInfo visible_none() { + return LinkageInfo(VisibleNoLinkage, DefaultVisibility, false); + } + + Linkage getLinkage() const { return (Linkage)linkage_; } + Visibility getVisibility() const { return (Visibility)visibility_; } + bool isVisibilityExplicit() const { return explicit_; } + + void setLinkage(Linkage L) { linkage_ = L; } + + void mergeLinkage(Linkage L) { + setLinkage(minLinkage(getLinkage(), L)); + } + void mergeLinkage(LinkageInfo other) { + mergeLinkage(other.getLinkage()); + } + + void mergeExternalVisibility(Linkage L) { + Linkage ThisL = getLinkage(); + if (!isExternallyVisible(L)) { + if (ThisL == VisibleNoLinkage) + ThisL = NoLinkage; + else if (ThisL == ExternalLinkage) + ThisL = UniqueExternalLinkage; + } + setLinkage(ThisL); + } + void mergeExternalVisibility(LinkageInfo Other) { + mergeExternalVisibility(Other.getLinkage()); + } + + /// Merge in the visibility 'newVis'. + void mergeVisibility(Visibility newVis, bool newExplicit) { + Visibility oldVis = getVisibility(); + + // Never increase visibility. + if (oldVis < newVis) + return; + + // If the new visibility is the same as the old and the new + // visibility isn't explicit, we have nothing to add. + if (oldVis == newVis && !newExplicit) + return; + + // Otherwise, we're either decreasing visibility or making our + // existing visibility explicit. + setVisibility(newVis, newExplicit); + } + void mergeVisibility(LinkageInfo other) { + mergeVisibility(other.getVisibility(), other.isVisibilityExplicit()); + } + + /// Merge both linkage and visibility. + void merge(LinkageInfo other) { + mergeLinkage(other); + mergeVisibility(other); + } + + /// Merge linkage and conditionally merge visibility. + void mergeMaybeWithVisibility(LinkageInfo other, bool withVis) { + mergeLinkage(other); + if (withVis) mergeVisibility(other); + } +}; +} + +#endif // LLVM_CLANG_BASIC_VISIBILITY_H diff --git a/clang-r353983/include/clang/Basic/X86Target.def b/clang-r353983/include/clang/Basic/X86Target.def new file mode 100644 index 00000000..c6719ff2 --- /dev/null +++ b/clang-r353983/include/clang/Basic/X86Target.def @@ -0,0 +1,339 @@ +//===--- X86Target.def - X86 Feature/Processor Database ---------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the X86-specific Features and Processors, as used by +// the X86 Targets. +// +//===----------------------------------------------------------------------===// + +#ifndef PROC_WITH_FEAT +#define PROC_WITH_FEAT(ENUM, STRING, IS64BIT, KEYFEATURE) \ + PROC(ENUM, STRING, IS64BIT) +#endif + +#ifndef PROC +#define PROC(ENUM, STRING, IS64BIT) +#endif + +#ifndef PROC_ALIAS +#define PROC_ALIAS(ENUM, ALIAS) +#endif + +#ifndef FEATURE +#define FEATURE(ENUM) +#endif + +#ifndef CPU_SPECIFIC +#define CPU_SPECIFIC(NAME, MANGLING, FEATURES) +#endif + +#ifndef CPU_SPECIFIC_ALIAS +#define CPU_SPECIFIC_ALIAS(NEW_NAME, NAME) +#endif + +#define PROC_64_BIT true +#define PROC_32_BIT false + +/// \name i386 +/// i386-generation processors. +//@{ +PROC(i386, "i386", PROC_32_BIT) +//@} + +/// \name i486 +/// i486-generation processors. +//@{ +PROC(i486, "i486", PROC_32_BIT) +PROC(WinChipC6, "winchip-c6", PROC_32_BIT) +PROC(WinChip2, "winchip2", PROC_32_BIT) +PROC(C3, "c3", PROC_32_BIT) +//@} + +/// \name i586 +/// i586-generation processors, P5 microarchitecture based. +//@{ +PROC(i586, "i586", PROC_32_BIT) +PROC(Pentium, "pentium", PROC_32_BIT) +PROC(PentiumMMX, "pentium-mmx", PROC_32_BIT) +//@} + +/// \name i686 +/// i686-generation processors, P6 / Pentium M microarchitecture based. +//@{ +PROC(PentiumPro, "pentiumpro", PROC_32_BIT) +PROC_ALIAS(PentiumPro, "i686") +PROC(Pentium2, "pentium2", PROC_32_BIT) +PROC(Pentium3, "pentium3", PROC_32_BIT) +PROC_ALIAS(Pentium3, "pentium3m") +PROC(PentiumM, "pentium-m", PROC_32_BIT) +PROC(C3_2, "c3-2", PROC_32_BIT) + +/// This enumerator is a bit odd, as GCC no longer accepts -march=yonah. +/// Clang however has some logic to support this. +// FIXME: Warn, deprecate, and potentially remove this. +PROC(Yonah, "yonah", PROC_32_BIT) +//@} + +/// \name Netburst +/// Netburst microarchitecture based processors. +//@{ +PROC(Pentium4, "pentium4", PROC_32_BIT) +PROC_ALIAS(Pentium4, "pentium4m") + +PROC(Prescott, "prescott", PROC_32_BIT) +PROC(Nocona, "nocona", PROC_64_BIT) +//@} + +/// \name Core +/// Core microarchitecture based processors. +//@{ +PROC_WITH_FEAT(Core2, "core2", PROC_64_BIT, FEATURE_SSSE3) + +/// This enumerator, like Yonah, is a bit odd. It is another +/// codename which GCC no longer accepts as an option to -march, but Clang +/// has some logic for recognizing it. +// FIXME: Warn, deprecate, and potentially remove this. +PROC(Penryn, "penryn", PROC_64_BIT) +//@} + +/// \name Atom +/// Atom processors +//@{ +PROC_WITH_FEAT(Bonnell, "bonnell", PROC_64_BIT, FEATURE_SSSE3) +PROC_ALIAS(Bonnell, "atom") + +PROC_WITH_FEAT(Silvermont, "silvermont", PROC_64_BIT, FEATURE_SSE4_2) +PROC_ALIAS(Silvermont, "slm") + +PROC(Goldmont, "goldmont", PROC_64_BIT) +PROC(GoldmontPlus, "goldmont-plus", PROC_64_BIT) + +PROC(Tremont, "tremont", PROC_64_BIT) +//@} + +/// \name Nehalem +/// Nehalem microarchitecture based processors. +PROC_WITH_FEAT(Nehalem, "nehalem", PROC_64_BIT, FEATURE_SSE4_2) +PROC_ALIAS(Nehalem, "corei7") + +/// \name Westmere +/// Westmere microarchitecture based processors. +PROC_WITH_FEAT(Westmere, "westmere", PROC_64_BIT, FEATURE_PCLMUL) + +/// \name Sandy Bridge +/// Sandy Bridge microarchitecture based processors. +PROC_WITH_FEAT(SandyBridge, "sandybridge", PROC_64_BIT, FEATURE_AVX) +PROC_ALIAS(SandyBridge, "corei7-avx") + +/// \name Ivy Bridge +/// Ivy Bridge microarchitecture based processors. +PROC_WITH_FEAT(IvyBridge, "ivybridge", PROC_64_BIT, FEATURE_AVX) +PROC_ALIAS(IvyBridge, "core-avx-i") + +/// \name Haswell +/// Haswell microarchitecture based processors. +PROC_WITH_FEAT(Haswell, "haswell", PROC_64_BIT, FEATURE_AVX2) +PROC_ALIAS(Haswell, "core-avx2") + +/// \name Broadwell +/// Broadwell microarchitecture based processors. +PROC_WITH_FEAT(Broadwell, "broadwell", PROC_64_BIT, FEATURE_AVX2) + +/// \name Skylake Client +/// Skylake client microarchitecture based processors. +PROC_WITH_FEAT(SkylakeClient, "skylake", PROC_64_BIT, FEATURE_AVX2) + +/// \name Skylake Server +/// Skylake server microarchitecture based processors. +PROC_WITH_FEAT(SkylakeServer, "skylake-avx512", PROC_64_BIT, FEATURE_AVX512F) +PROC_ALIAS(SkylakeServer, "skx") + +/// \name Cascadelake Server +/// Cascadelake Server microarchitecture based processors. +PROC_WITH_FEAT(Cascadelake, "cascadelake", PROC_64_BIT, FEATURE_AVX512VNNI) + +/// \name Cannonlake Client +/// Cannonlake client microarchitecture based processors. +PROC_WITH_FEAT(Cannonlake, "cannonlake", PROC_64_BIT, FEATURE_AVX512VBMI) + +/// \name Icelake Client +/// Icelake client microarchitecture based processors. +PROC(IcelakeClient, "icelake-client", PROC_64_BIT) + +/// \name Icelake Server +/// Icelake server microarchitecture based processors. +PROC(IcelakeServer, "icelake-server", PROC_64_BIT) + +/// \name Knights Landing +/// Knights Landing processor. +PROC_WITH_FEAT(KNL, "knl", PROC_64_BIT, FEATURE_AVX512F) + +/// \name Knights Mill +/// Knights Mill processor. +PROC_WITH_FEAT(KNM, "knm", PROC_64_BIT, FEATURE_AVX5124FMAPS) + +/// \name Lakemont +/// Lakemont microarchitecture based processors. +PROC(Lakemont, "lakemont", PROC_32_BIT) + +/// \name K6 +/// K6 architecture processors. +//@{ +PROC(K6, "k6", PROC_32_BIT) +PROC(K6_2, "k6-2", PROC_32_BIT) +PROC(K6_3, "k6-3", PROC_32_BIT) +//@} + +/// \name K7 +/// K7 architecture processors. +//@{ +PROC(Athlon, "athlon", PROC_32_BIT) +PROC_ALIAS(Athlon, "athlon-tbird") + +PROC(AthlonXP, "athlon-xp", PROC_32_BIT) +PROC_ALIAS(AthlonXP, "athlon-mp") +PROC_ALIAS(AthlonXP, "athlon-4") +//@} + +/// \name K8 +/// K8 architecture processors. +//@{ +PROC(K8, "k8", PROC_64_BIT) +PROC_ALIAS(K8, "athlon64") +PROC_ALIAS(K8, "athlon-fx") +PROC_ALIAS(K8, "opteron") + +PROC(K8SSE3, "k8-sse3", PROC_64_BIT) +PROC_ALIAS(K8SSE3, "athlon64-sse3") +PROC_ALIAS(K8SSE3, "opteron-sse3") + +PROC_WITH_FEAT(AMDFAM10, "amdfam10", PROC_64_BIT, FEATURE_SSE4_A) +PROC_ALIAS(AMDFAM10, "barcelona") +//@} + +/// \name Bobcat +/// Bobcat architecture processors. +//@{ +PROC_WITH_FEAT(BTVER1, "btver1", PROC_64_BIT, FEATURE_SSE4_A) +PROC_WITH_FEAT(BTVER2, "btver2", PROC_64_BIT, FEATURE_BMI) +//@} + +/// \name Bulldozer +/// Bulldozer architecture processors. +//@{ +PROC_WITH_FEAT(BDVER1, "bdver1", PROC_64_BIT, FEATURE_XOP) +PROC_WITH_FEAT(BDVER2, "bdver2", PROC_64_BIT, FEATURE_FMA) +PROC_WITH_FEAT(BDVER3, "bdver3", PROC_64_BIT, FEATURE_FMA) +PROC_WITH_FEAT(BDVER4, "bdver4", PROC_64_BIT, FEATURE_AVX2) +//@} + +/// \name zen +/// Zen architecture processors. +//@{ +PROC_WITH_FEAT(ZNVER1, "znver1", PROC_64_BIT, FEATURE_AVX2) +//@} + +/// This specification is deprecated and will be removed in the future. +/// Users should prefer K8. +// FIXME: Warn on this when the CPU is set to it. +//@{ +PROC(x86_64, "x86-64", PROC_64_BIT) +//@} + +/// \name Geode +/// Geode processors. +//@{ +PROC(Geode, "geode", PROC_32_BIT) +//@} + +// List of CPU Supports features in order. These need to remain in the order +// required by attribute 'target' checking. Note that not all are supported/ +// prioritized by GCC, so synchronization with GCC's implementation may require +// changing some existing values. +FEATURE(FEATURE_CMOV) +FEATURE(FEATURE_MMX) +FEATURE(FEATURE_SSE) +FEATURE(FEATURE_SSE2) +FEATURE(FEATURE_SSE3) +FEATURE(FEATURE_SSSE3) +FEATURE(FEATURE_SSE4_A) +FEATURE(FEATURE_SSE4_1) +FEATURE(FEATURE_SSE4_2) +FEATURE(FEATURE_POPCNT) +FEATURE(FEATURE_AES) +FEATURE(FEATURE_PCLMUL) +FEATURE(FEATURE_AVX) +FEATURE(FEATURE_BMI) +FEATURE(FEATURE_FMA4) +FEATURE(FEATURE_XOP) +FEATURE(FEATURE_FMA) +FEATURE(FEATURE_BMI2) +FEATURE(FEATURE_AVX2) +FEATURE(FEATURE_AVX512F) +FEATURE(FEATURE_AVX512VL) +FEATURE(FEATURE_AVX512BW) +FEATURE(FEATURE_AVX512DQ) +FEATURE(FEATURE_AVX512CD) +FEATURE(FEATURE_AVX512ER) +FEATURE(FEATURE_AVX512PF) +FEATURE(FEATURE_AVX512VBMI) +FEATURE(FEATURE_AVX512IFMA) +FEATURE(FEATURE_AVX5124VNNIW) +FEATURE(FEATURE_AVX5124FMAPS) +FEATURE(FEATURE_AVX512VPOPCNTDQ) +FEATURE(FEATURE_AVX512VBMI2) +FEATURE(FEATURE_GFNI) +FEATURE(FEATURE_VPCLMULQDQ) +FEATURE(FEATURE_AVX512VNNI) +FEATURE(FEATURE_AVX512BITALG) + + +// FIXME: When commented out features are supported in LLVM, enable them here. +CPU_SPECIFIC("generic", 'A', "") +CPU_SPECIFIC("pentium", 'B', "") +CPU_SPECIFIC("pentium_pro", 'C', "+cmov") +CPU_SPECIFIC("pentium_mmx", 'D', "+mmx") +CPU_SPECIFIC("pentium_ii", 'E', "+cmov,+mmx") +CPU_SPECIFIC("pentium_iii", 'H', "+cmov,+mmx,+sse") +CPU_SPECIFIC_ALIAS("pentium_iii_no_xmm_regs", "pentium_iii") +CPU_SPECIFIC("pentium_4", 'J', "+cmov,+mmx,+sse,+sse2") +CPU_SPECIFIC("pentium_m", 'K', "+cmov,+mmx,+sse,+sse2") +CPU_SPECIFIC("pentium_4_sse3", 'L', "+cmov,+mmx,+sse,+sse2,+sse3") +CPU_SPECIFIC("core_2_duo_ssse3", 'M', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3") +CPU_SPECIFIC("core_2_duo_sse4_1", 'N', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1") +CPU_SPECIFIC("atom", 'O', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+movbe") +CPU_SPECIFIC("atom_sse4_2", 'c', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt") +CPU_SPECIFIC("core_i7_sse4_2", 'P', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt") +CPU_SPECIFIC("core_aes_pclmulqdq", 'Q', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt") +CPU_SPECIFIC("atom_sse4_2_movbe", 'd', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt") +CPU_SPECIFIC("goldmont", 'i', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt") +CPU_SPECIFIC("sandybridge", 'R', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt,+avx") +CPU_SPECIFIC_ALIAS("core_2nd_gen_avx", "sandybridge") +CPU_SPECIFIC("ivybridge", 'S', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt,+f16c,+avx") +CPU_SPECIFIC_ALIAS("core_3rd_gen_avx", "ivybridge") +CPU_SPECIFIC("haswell", 'V', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2") +CPU_SPECIFIC_ALIAS("core_4th_gen_avx", "haswell") +CPU_SPECIFIC("core_4th_gen_avx_tsx", 'W', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2") +CPU_SPECIFIC("broadwell", 'X', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+adx") +CPU_SPECIFIC_ALIAS("core_5th_gen_avx", "broadwell") +CPU_SPECIFIC("core_5th_gen_avx_tsx", 'Y', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+adx") +CPU_SPECIFIC("knl", 'Z', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+avx512f,+adx,+avx512er,+avx512pf,+avx512cd") +CPU_SPECIFIC_ALIAS("mic_avx512", "knl") +CPU_SPECIFIC("skylake", 'b', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+adx,+mpx") +CPU_SPECIFIC( "skylake_avx512", 'a', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+avx512dq,+avx512f,+adx,+avx512cd,+avx512bw,+avx512vl,+clwb") +CPU_SPECIFIC("cannonlake", 'e', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+avx512dq,+avx512f,+adx,+avx512ifma,+avx512cd,+avx512bw,+avx512vl,+avx512vbmi") +CPU_SPECIFIC("knm", 'j', "+cmov,+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+movbe,+popcnt,+f16c,+avx,+fma,+bmi,+lzcnt,+avx2,+avx512f,+adx,+avx512er,+avx512pf,+avx512cd,+avx5124fmaps,+avx5124vnniw,+avx512vpopcntdq") + +#undef CPU_SPECIFIC_ALIAS +#undef CPU_SPECIFIC +#undef PROC_64_BIT +#undef PROC_32_BIT +#undef FEATURE +#undef PROC +#undef PROC_ALIAS +#undef PROC_WITH_FEAT diff --git a/clang-r353983/include/clang/Basic/XRayInstr.h b/clang-r353983/include/clang/Basic/XRayInstr.h new file mode 100644 index 00000000..48e88848 --- /dev/null +++ b/clang-r353983/include/clang/Basic/XRayInstr.h @@ -0,0 +1,71 @@ +//===--- XRayInstr.h --------------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +/// \file +/// Defines the clang::XRayInstrKind enum. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_BASIC_XRAYINSTR_H +#define LLVM_CLANG_BASIC_XRAYINSTR_H + +#include "clang/Basic/LLVM.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/MathExtras.h" +#include <cassert> +#include <cstdint> + +namespace clang { + +using XRayInstrMask = uint32_t; + +namespace XRayInstrKind { + +// TODO: Auto-generate these as we add more instrumentation kinds. +enum XRayInstrOrdinal : XRayInstrMask { + XRIO_Function, + XRIO_Custom, + XRIO_Typed, + XRIO_Count +}; + +constexpr XRayInstrMask None = 0; +constexpr XRayInstrMask Function = 1U << XRIO_Function; +constexpr XRayInstrMask Custom = 1U << XRIO_Custom; +constexpr XRayInstrMask Typed = 1U << XRIO_Typed; +constexpr XRayInstrMask All = Function | Custom | Typed; + +} // namespace XRayInstrKind + +struct XRayInstrSet { + bool has(XRayInstrMask K) const { + assert(llvm::isPowerOf2_32(K)); + return Mask & K; + } + + bool hasOneOf(XRayInstrMask K) const { return Mask & K; } + + void set(XRayInstrMask K, bool Value) { + assert(llvm::isPowerOf2_32(K)); + Mask = Value ? (Mask | K) : (Mask & ~K); + } + + void clear(XRayInstrMask K = XRayInstrKind::All) { Mask &= ~K; } + + bool empty() const { return Mask == 0; } + + bool full() const { return Mask == XRayInstrKind::All; } + + XRayInstrMask Mask = 0; +}; + +XRayInstrMask parseXRayInstrValue(StringRef Value); + +} // namespace clang + +#endif // LLVM_CLANG_BASIC_XRAYINSTR_H diff --git a/clang-r353983/include/clang/Basic/XRayLists.h b/clang-r353983/include/clang/Basic/XRayLists.h new file mode 100644 index 00000000..cf464f9e --- /dev/null +++ b/clang-r353983/include/clang/Basic/XRayLists.h @@ -0,0 +1,55 @@ +//===--- XRayLists.h - XRay automatic attribution ---------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// User-provided filters for always/never XRay instrumenting certain functions. +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_CLANG_BASIC_XRAYLISTS_H +#define LLVM_CLANG_BASIC_XRAYLISTS_H + +#include "clang/Basic/LLVM.h" +#include "clang/Basic/SourceLocation.h" +#include "clang/Basic/SourceManager.h" +#include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/SpecialCaseList.h" +#include <memory> + +namespace clang { + +class XRayFunctionFilter { + std::unique_ptr<llvm::SpecialCaseList> AlwaysInstrument; + std::unique_ptr<llvm::SpecialCaseList> NeverInstrument; + std::unique_ptr<llvm::SpecialCaseList> AttrList; + SourceManager &SM; + +public: + XRayFunctionFilter(ArrayRef<std::string> AlwaysInstrumentPaths, + ArrayRef<std::string> NeverInstrumentPaths, + ArrayRef<std::string> AttrListPaths, SourceManager &SM); + + enum class ImbueAttribute { + NONE, + ALWAYS, + NEVER, + ALWAYS_ARG1, + }; + + ImbueAttribute shouldImbueFunction(StringRef FunctionName) const; + + ImbueAttribute + shouldImbueFunctionsInFile(StringRef Filename, + StringRef Category = StringRef()) const; + + ImbueAttribute shouldImbueLocation(SourceLocation Loc, + StringRef Category = StringRef()) const; +}; + +} // namespace clang + +#endif diff --git a/clang-r353983/include/clang/Basic/arm_fp16.inc b/clang-r353983/include/clang/Basic/arm_fp16.inc new file mode 100644 index 00000000..a05142f2 --- /dev/null +++ b/clang-r353983/include/clang/Basic/arm_fp16.inc @@ -0,0 +1,110 @@ +#ifdef GET_NEON_BUILTINS +BUILTIN(__builtin_neon_vabdh_f16, "hhh", "n") +BUILTIN(__builtin_neon_vabsh_f16, "hh", "n") +BUILTIN(__builtin_neon_vaddh_f16, "hhh", "n") +BUILTIN(__builtin_neon_vcageh_f16, "Ushh", "n") +BUILTIN(__builtin_neon_vcagth_f16, "Ushh", "n") +BUILTIN(__builtin_neon_vcaleh_f16, "Ushh", "n") +BUILTIN(__builtin_neon_vcalth_f16, "Ushh", "n") +BUILTIN(__builtin_neon_vceqh_f16, "Ushh", "n") +BUILTIN(__builtin_neon_vceqzh_f16, "Ush", "n") +BUILTIN(__builtin_neon_vcgeh_f16, "Ushh", "n") +BUILTIN(__builtin_neon_vcgezh_f16, "Ush", "n") +BUILTIN(__builtin_neon_vcgth_f16, "Ushh", "n") +BUILTIN(__builtin_neon_vcgtzh_f16, "Ush", "n") +BUILTIN(__builtin_neon_vcleh_f16, "Ushh", "n") +BUILTIN(__builtin_neon_vclezh_f16, "Ush", "n") +BUILTIN(__builtin_neon_vclth_f16, "Ushh", "n") +BUILTIN(__builtin_neon_vcltzh_f16, "Ush", "n") +BUILTIN(__builtin_neon_vcvtah_s16_f16, "sh", "n") +BUILTIN(__builtin_neon_vcvtah_s32_f16, "ih", "n") +BUILTIN(__builtin_neon_vcvtah_s64_f16, "Wih", "n") +BUILTIN(__builtin_neon_vcvtah_u16_f16, "Ush", "n") +BUILTIN(__builtin_neon_vcvtah_u32_f16, "Uih", "n") +BUILTIN(__builtin_neon_vcvtah_u64_f16, "UWih", "n") +BUILTIN(__builtin_neon_vcvth_f16_s16, "hs", "n") +BUILTIN(__builtin_neon_vcvth_f16_s32, "hi", "n") +BUILTIN(__builtin_neon_vcvth_f16_s64, "hWi", "n") +BUILTIN(__builtin_neon_vcvth_f16_u16, "hUs", "n") +BUILTIN(__builtin_neon_vcvth_f16_u32, "hUi", "n") +BUILTIN(__builtin_neon_vcvth_f16_u64, "hUWi", "n") +BUILTIN(__builtin_neon_vcvth_n_f16_s16, "hsIi", "n") +BUILTIN(__builtin_neon_vcvth_n_f16_s32, "hiIi", "n") +BUILTIN(__builtin_neon_vcvth_n_f16_s64, "hWiIi", "n") +BUILTIN(__builtin_neon_vcvth_n_f16_u16, "hUsIi", "n") +BUILTIN(__builtin_neon_vcvth_n_f16_u32, "hUiIi", "n") +BUILTIN(__builtin_neon_vcvth_n_f16_u64, "hUWiIi", "n") +BUILTIN(__builtin_neon_vcvth_n_s16_f16, "shIi", "n") +BUILTIN(__builtin_neon_vcvth_n_s32_f16, "ihIi", "n") +BUILTIN(__builtin_neon_vcvth_n_s64_f16, "WihIi", "n") +BUILTIN(__builtin_neon_vcvth_n_u16_f16, "UshIi", "n") +BUILTIN(__builtin_neon_vcvth_n_u32_f16, "UihIi", "n") +BUILTIN(__builtin_neon_vcvth_n_u64_f16, "UWihIi", "n") +BUILTIN(__builtin_neon_vcvth_s16_f16, "sh", "n") +BUILTIN(__builtin_neon_vcvth_s32_f16, "ih", "n") +BUILTIN(__builtin_neon_vcvth_s64_f16, "Wih", "n") +BUILTIN(__builtin_neon_vcvth_u16_f16, "Ush", "n") +BUILTIN(__builtin_neon_vcvth_u32_f16, "Uih", "n") +BUILTIN(__builtin_neon_vcvth_u64_f16, "UWih", "n") +BUILTIN(__builtin_neon_vcvtmh_s16_f16, "sh", "n") +BUILTIN(__builtin_neon_vcvtmh_s32_f16, "ih", "n") +BUILTIN(__builtin_neon_vcvtmh_s64_f16, "Wih", "n") +BUILTIN(__builtin_neon_vcvtmh_u16_f16, "Ush", "n") +BUILTIN(__builtin_neon_vcvtmh_u32_f16, "Uih", "n") +BUILTIN(__builtin_neon_vcvtmh_u64_f16, "UWih", "n") +BUILTIN(__builtin_neon_vcvtnh_s16_f16, "sh", "n") +BUILTIN(__builtin_neon_vcvtnh_s32_f16, "ih", "n") +BUILTIN(__builtin_neon_vcvtnh_s64_f16, "Wih", "n") +BUILTIN(__builtin_neon_vcvtnh_u16_f16, "Ush", "n") +BUILTIN(__builtin_neon_vcvtnh_u32_f16, "Uih", "n") +BUILTIN(__builtin_neon_vcvtnh_u64_f16, "UWih", "n") +BUILTIN(__builtin_neon_vcvtph_s16_f16, "sh", "n") +BUILTIN(__builtin_neon_vcvtph_s32_f16, "ih", "n") +BUILTIN(__builtin_neon_vcvtph_s64_f16, "Wih", "n") +BUILTIN(__builtin_neon_vcvtph_u16_f16, "Ush", "n") +BUILTIN(__builtin_neon_vcvtph_u32_f16, "Uih", "n") +BUILTIN(__builtin_neon_vcvtph_u64_f16, "UWih", "n") +BUILTIN(__builtin_neon_vdivh_f16, "hhh", "n") +BUILTIN(__builtin_neon_vfmah_f16, "hhhh", "n") +BUILTIN(__builtin_neon_vfmsh_f16, "hhhh", "n") +BUILTIN(__builtin_neon_vmaxh_f16, "hhh", "n") +BUILTIN(__builtin_neon_vmaxnmh_f16, "hhh", "n") +BUILTIN(__builtin_neon_vminh_f16, "hhh", "n") +BUILTIN(__builtin_neon_vminnmh_f16, "hhh", "n") +BUILTIN(__builtin_neon_vmulh_f16, "hhh", "n") +BUILTIN(__builtin_neon_vmulxh_f16, "hhh", "n") +BUILTIN(__builtin_neon_vnegh_f16, "hh", "n") +BUILTIN(__builtin_neon_vrecpeh_f16, "hh", "n") +BUILTIN(__builtin_neon_vrecpsh_f16, "hhh", "n") +BUILTIN(__builtin_neon_vrecpxh_f16, "hh", "n") +BUILTIN(__builtin_neon_vrndah_f16, "hh", "n") +BUILTIN(__builtin_neon_vrndh_f16, "hh", "n") +BUILTIN(__builtin_neon_vrndih_f16, "hh", "n") +BUILTIN(__builtin_neon_vrndmh_f16, "hh", "n") +BUILTIN(__builtin_neon_vrndnh_f16, "hh", "n") +BUILTIN(__builtin_neon_vrndph_f16, "hh", "n") +BUILTIN(__builtin_neon_vrndxh_f16, "hh", "n") +BUILTIN(__builtin_neon_vrsqrteh_f16, "hh", "n") +BUILTIN(__builtin_neon_vrsqrtsh_f16, "hhh", "n") +BUILTIN(__builtin_neon_vsqrth_f16, "hh", "n") +BUILTIN(__builtin_neon_vsubh_f16, "hhh", "n") +#endif + +#ifdef GET_NEON_OVERLOAD_CHECK +#endif + +#ifdef GET_NEON_IMMEDIATE_CHECK +case NEON::BI__builtin_neon_vcvth_n_s32_f16: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvth_n_s64_f16: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvth_n_s16_f16: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvth_n_u32_f16: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvth_n_u64_f16: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvth_n_u16_f16: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvth_n_f16_u32: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvth_n_f16_u64: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvth_n_f16_u16: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvth_n_f16_s32: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvth_n_f16_s64: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvth_n_f16_s16: i = 1; l = 1; u = 15; break; +#endif + diff --git a/clang-r353983/include/clang/Basic/arm_neon.inc b/clang-r353983/include/clang/Basic/arm_neon.inc new file mode 100644 index 00000000..d62c1c65 --- /dev/null +++ b/clang-r353983/include/clang/Basic/arm_neon.inc @@ -0,0 +1,1248 @@ +#ifdef GET_NEON_BUILTINS +BUILTIN(__builtin_neon_vabd_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vabdd_f64, "ddd", "n") +BUILTIN(__builtin_neon_vabdq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vabds_f32, "fff", "n") +BUILTIN(__builtin_neon_vabs_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vabsd_s64, "WiWi", "n") +BUILTIN(__builtin_neon_vabsq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vaddd_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vaddd_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vaddhn_v, "V8ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vaddlv_s16, "iV4s", "n") +BUILTIN(__builtin_neon_vaddlv_s32, "WiV2i", "n") +BUILTIN(__builtin_neon_vaddlv_s8, "sV8Sc", "n") +BUILTIN(__builtin_neon_vaddlv_u16, "UiV4Us", "n") +BUILTIN(__builtin_neon_vaddlv_u32, "UWiV2Ui", "n") +BUILTIN(__builtin_neon_vaddlv_u8, "UsV8Sc", "n") +BUILTIN(__builtin_neon_vaddlvq_s16, "iV8s", "n") +BUILTIN(__builtin_neon_vaddlvq_s32, "WiV4i", "n") +BUILTIN(__builtin_neon_vaddlvq_s8, "sV16Sc", "n") +BUILTIN(__builtin_neon_vaddlvq_u16, "UiV8Us", "n") +BUILTIN(__builtin_neon_vaddlvq_u32, "UWiV4Ui", "n") +BUILTIN(__builtin_neon_vaddlvq_u8, "UsV16Sc", "n") +BUILTIN(__builtin_neon_vaddv_f32, "fV2f", "n") +BUILTIN(__builtin_neon_vaddv_s16, "sV4s", "n") +BUILTIN(__builtin_neon_vaddv_s32, "iV2i", "n") +BUILTIN(__builtin_neon_vaddv_s8, "ScV8Sc", "n") +BUILTIN(__builtin_neon_vaddv_u16, "UsV4Us", "n") +BUILTIN(__builtin_neon_vaddv_u32, "UiV2Ui", "n") +BUILTIN(__builtin_neon_vaddv_u8, "ScV8Sc", "n") +BUILTIN(__builtin_neon_vaddvq_f32, "fV4f", "n") +BUILTIN(__builtin_neon_vaddvq_f64, "dV2d", "n") +BUILTIN(__builtin_neon_vaddvq_s16, "sV8s", "n") +BUILTIN(__builtin_neon_vaddvq_s32, "iV4i", "n") +BUILTIN(__builtin_neon_vaddvq_s64, "WiV2Wi", "n") +BUILTIN(__builtin_neon_vaddvq_s8, "ScV16Sc", "n") +BUILTIN(__builtin_neon_vaddvq_u16, "UsV8Us", "n") +BUILTIN(__builtin_neon_vaddvq_u32, "UiV4Ui", "n") +BUILTIN(__builtin_neon_vaddvq_u64, "UWiV2UWi", "n") +BUILTIN(__builtin_neon_vaddvq_u8, "ScV16Sc", "n") +BUILTIN(__builtin_neon_vaesdq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vaeseq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vaesimcq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vaesmcq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vbsl_v, "V8ScV8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vbslq_v, "V16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcage_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcaged_f64, "UWidd", "n") +BUILTIN(__builtin_neon_vcageq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcages_f32, "Uiff", "n") +BUILTIN(__builtin_neon_vcagt_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcagtd_f64, "UWidd", "n") +BUILTIN(__builtin_neon_vcagtq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcagts_f32, "Uiff", "n") +BUILTIN(__builtin_neon_vcale_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcaled_f64, "UWidd", "n") +BUILTIN(__builtin_neon_vcaleq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcales_f32, "Uiff", "n") +BUILTIN(__builtin_neon_vcalt_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcaltd_f64, "UWidd", "n") +BUILTIN(__builtin_neon_vcaltq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcalts_f32, "Uiff", "n") +BUILTIN(__builtin_neon_vceqd_f64, "UWidd", "n") +BUILTIN(__builtin_neon_vceqd_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vceqd_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vceqs_f32, "Uiff", "n") +BUILTIN(__builtin_neon_vceqz_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vceqzd_f64, "UWid", "n") +BUILTIN(__builtin_neon_vceqzd_s64, "WiWi", "n") +BUILTIN(__builtin_neon_vceqzd_u64, "UWiUWi", "n") +BUILTIN(__builtin_neon_vceqzq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vceqzs_f32, "Uif", "n") +BUILTIN(__builtin_neon_vcged_f64, "UWidd", "n") +BUILTIN(__builtin_neon_vcged_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vcged_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vcges_f32, "Uiff", "n") +BUILTIN(__builtin_neon_vcgez_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcgezd_f64, "UWid", "n") +BUILTIN(__builtin_neon_vcgezd_s64, "WiWi", "n") +BUILTIN(__builtin_neon_vcgezq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcgezs_f32, "Uif", "n") +BUILTIN(__builtin_neon_vcgtd_f64, "UWidd", "n") +BUILTIN(__builtin_neon_vcgtd_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vcgtd_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vcgts_f32, "Uiff", "n") +BUILTIN(__builtin_neon_vcgtz_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcgtzd_f64, "UWid", "n") +BUILTIN(__builtin_neon_vcgtzd_s64, "WiWi", "n") +BUILTIN(__builtin_neon_vcgtzq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcgtzs_f32, "Uif", "n") +BUILTIN(__builtin_neon_vcled_f64, "UWidd", "n") +BUILTIN(__builtin_neon_vcled_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vcled_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vcles_f32, "Uiff", "n") +BUILTIN(__builtin_neon_vclez_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vclezd_f64, "UWid", "n") +BUILTIN(__builtin_neon_vclezd_s64, "WiWi", "n") +BUILTIN(__builtin_neon_vclezq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vclezs_f32, "Uif", "n") +BUILTIN(__builtin_neon_vcls_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vclsq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcltd_f64, "UWidd", "n") +BUILTIN(__builtin_neon_vcltd_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vcltd_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vclts_f32, "Uiff", "n") +BUILTIN(__builtin_neon_vcltz_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcltzd_f64, "UWid", "n") +BUILTIN(__builtin_neon_vcltzd_s64, "WiWi", "n") +BUILTIN(__builtin_neon_vcltzq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcltzs_f32, "Uif", "n") +BUILTIN(__builtin_neon_vclz_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vclzq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcnt_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcntq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvt_f16_f32, "V8ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvt_f16_v, "V4hV8Sci", "n") +BUILTIN(__builtin_neon_vcvt_f32_f16, "V16ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvt_f32_f64, "V8ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvt_f32_v, "V2fV8Sci", "n") +BUILTIN(__builtin_neon_vcvt_f64_f32, "V16ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvt_f64_v, "V1dV8Sci", "n") +BUILTIN(__builtin_neon_vcvt_n_f16_v, "V4hV8ScIii", "n") +BUILTIN(__builtin_neon_vcvt_n_f32_v, "V2fV8ScIii", "n") +BUILTIN(__builtin_neon_vcvt_n_f64_v, "V1dV8ScIii", "n") +BUILTIN(__builtin_neon_vcvt_n_s16_v, "V8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vcvt_n_s32_v, "V8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vcvt_n_s64_v, "V8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vcvt_n_u16_v, "V8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vcvt_n_u32_v, "V8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vcvt_n_u64_v, "V8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vcvt_s16_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvt_s32_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvt_s64_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvt_u16_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvt_u32_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvt_u64_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvta_s16_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvta_s32_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvta_s64_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvta_u16_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvta_u32_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvta_u64_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtad_s64_f64, "Wid", "n") +BUILTIN(__builtin_neon_vcvtad_u64_f64, "UWid", "n") +BUILTIN(__builtin_neon_vcvtaq_s16_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtaq_s32_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtaq_s64_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtaq_u16_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtaq_u32_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtaq_u64_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtas_s32_f32, "if", "n") +BUILTIN(__builtin_neon_vcvtas_u32_f32, "Uif", "n") +BUILTIN(__builtin_neon_vcvtd_f64_s64, "dWi", "n") +BUILTIN(__builtin_neon_vcvtd_f64_u64, "dUWi", "n") +BUILTIN(__builtin_neon_vcvtd_n_f64_s64, "dWiIi", "n") +BUILTIN(__builtin_neon_vcvtd_n_f64_u64, "dUWiIi", "n") +BUILTIN(__builtin_neon_vcvtd_n_s64_f64, "WidIi", "n") +BUILTIN(__builtin_neon_vcvtd_n_u64_f64, "UWidIi", "n") +BUILTIN(__builtin_neon_vcvtd_s64_f64, "Wid", "n") +BUILTIN(__builtin_neon_vcvtd_u64_f64, "UWid", "n") +BUILTIN(__builtin_neon_vcvtm_s16_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtm_s32_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtm_s64_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtm_u16_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtm_u32_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtm_u64_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtmd_s64_f64, "Wid", "n") +BUILTIN(__builtin_neon_vcvtmd_u64_f64, "UWid", "n") +BUILTIN(__builtin_neon_vcvtmq_s16_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtmq_s32_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtmq_s64_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtmq_u16_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtmq_u32_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtmq_u64_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtms_s32_f32, "if", "n") +BUILTIN(__builtin_neon_vcvtms_u32_f32, "Uif", "n") +BUILTIN(__builtin_neon_vcvtn_s16_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtn_s32_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtn_s64_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtn_u16_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtn_u32_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtn_u64_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtnd_s64_f64, "Wid", "n") +BUILTIN(__builtin_neon_vcvtnd_u64_f64, "UWid", "n") +BUILTIN(__builtin_neon_vcvtnq_s16_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtnq_s32_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtnq_s64_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtnq_u16_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtnq_u32_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtnq_u64_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtns_s32_f32, "if", "n") +BUILTIN(__builtin_neon_vcvtns_u32_f32, "Uif", "n") +BUILTIN(__builtin_neon_vcvtp_s16_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtp_s32_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtp_s64_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtp_u16_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtp_u32_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtp_u64_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vcvtpd_s64_f64, "Wid", "n") +BUILTIN(__builtin_neon_vcvtpd_u64_f64, "UWid", "n") +BUILTIN(__builtin_neon_vcvtpq_s16_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtpq_s32_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtpq_s64_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtpq_u16_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtpq_u32_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtpq_u64_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtps_s32_f32, "if", "n") +BUILTIN(__builtin_neon_vcvtps_u32_f32, "Uif", "n") +BUILTIN(__builtin_neon_vcvtq_f16_v, "V8hV16Sci", "n") +BUILTIN(__builtin_neon_vcvtq_f32_v, "V4fV16Sci", "n") +BUILTIN(__builtin_neon_vcvtq_f64_v, "V2dV16Sci", "n") +BUILTIN(__builtin_neon_vcvtq_n_f16_v, "V8hV16ScIii", "n") +BUILTIN(__builtin_neon_vcvtq_n_f32_v, "V4fV16ScIii", "n") +BUILTIN(__builtin_neon_vcvtq_n_f64_v, "V2dV16ScIii", "n") +BUILTIN(__builtin_neon_vcvtq_n_s16_v, "V16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vcvtq_n_s32_v, "V16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vcvtq_n_s64_v, "V16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vcvtq_n_u16_v, "V16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vcvtq_n_u32_v, "V16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vcvtq_n_u64_v, "V16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vcvtq_s16_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtq_s32_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtq_s64_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtq_u16_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtq_u32_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvtq_u64_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vcvts_f32_s32, "fi", "n") +BUILTIN(__builtin_neon_vcvts_f32_u32, "fUi", "n") +BUILTIN(__builtin_neon_vcvts_n_f32_s32, "fiIi", "n") +BUILTIN(__builtin_neon_vcvts_n_f32_u32, "fUiIi", "n") +BUILTIN(__builtin_neon_vcvts_n_s32_f32, "ifIi", "n") +BUILTIN(__builtin_neon_vcvts_n_u32_f32, "UifIi", "n") +BUILTIN(__builtin_neon_vcvts_s32_f32, "if", "n") +BUILTIN(__builtin_neon_vcvts_u32_f32, "Uif", "n") +BUILTIN(__builtin_neon_vcvtx_f32_v, "V2fV16Sci", "n") +BUILTIN(__builtin_neon_vcvtxd_f32_f64, "fd", "n") +BUILTIN(__builtin_neon_vdot_v, "V8ScV8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vdotq_v, "V16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vdupb_lane_i8, "ScV8ScIi", "n") +BUILTIN(__builtin_neon_vdupb_laneq_i8, "ScV16ScIi", "n") +BUILTIN(__builtin_neon_vdupd_lane_f64, "dV1dIi", "n") +BUILTIN(__builtin_neon_vdupd_lane_i64, "UWiV1WiIi", "n") +BUILTIN(__builtin_neon_vdupd_laneq_f64, "dV2dIi", "n") +BUILTIN(__builtin_neon_vdupd_laneq_i64, "UWiV2WiIi", "n") +BUILTIN(__builtin_neon_vduph_lane_f16, "hV4hIi", "n") +BUILTIN(__builtin_neon_vduph_lane_i16, "UsV4sIi", "n") +BUILTIN(__builtin_neon_vduph_laneq_f16, "hV8hIi", "n") +BUILTIN(__builtin_neon_vduph_laneq_i16, "UsV8sIi", "n") +BUILTIN(__builtin_neon_vdups_lane_f32, "fV2fIi", "n") +BUILTIN(__builtin_neon_vdups_lane_i32, "UiV2iIi", "n") +BUILTIN(__builtin_neon_vdups_laneq_f32, "fV4fIi", "n") +BUILTIN(__builtin_neon_vdups_laneq_i32, "UiV4iIi", "n") +BUILTIN(__builtin_neon_vext_v, "V8ScV8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vextq_v, "V16ScV16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vfma_lane_v, "V8ScV8ScV8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vfma_laneq_v, "V8ScV8ScV8ScV16ScIii", "n") +BUILTIN(__builtin_neon_vfma_v, "V8ScV8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vfmad_lane_f64, "dddV1dIi", "n") +BUILTIN(__builtin_neon_vfmad_laneq_f64, "dddV2dIi", "n") +BUILTIN(__builtin_neon_vfmah_lane_f16, "hhhV4hIi", "n") +BUILTIN(__builtin_neon_vfmah_laneq_f16, "hhhV8hIi", "n") +BUILTIN(__builtin_neon_vfmaq_lane_v, "V16ScV16ScV16ScV8ScIii", "n") +BUILTIN(__builtin_neon_vfmaq_laneq_v, "V16ScV16ScV16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vfmaq_v, "V16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vfmas_lane_f32, "fffV2fIi", "n") +BUILTIN(__builtin_neon_vfmas_laneq_f32, "fffV4fIi", "n") +BUILTIN(__builtin_neon_vfmlal_high_v, "V2fV2fV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vfmlal_low_v, "V2fV2fV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vfmlalq_high_v, "V4fV4fV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vfmlalq_low_v, "V4fV4fV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vfmlsl_high_v, "V2fV2fV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vfmlsl_low_v, "V2fV2fV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vfmlslq_high_v, "V4fV4fV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vfmlslq_low_v, "V4fV4fV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vget_lane_f32, "fV2fIi", "n") +BUILTIN(__builtin_neon_vget_lane_f64, "dV1dIi", "n") +BUILTIN(__builtin_neon_vget_lane_i16, "UsV4sIi", "n") +BUILTIN(__builtin_neon_vget_lane_i32, "UiV2iIi", "n") +BUILTIN(__builtin_neon_vget_lane_i64, "UWiV1WiIi", "n") +BUILTIN(__builtin_neon_vget_lane_i8, "ScV8ScIi", "n") +BUILTIN(__builtin_neon_vgetq_lane_f32, "fV4fIi", "n") +BUILTIN(__builtin_neon_vgetq_lane_f64, "dV2dIi", "n") +BUILTIN(__builtin_neon_vgetq_lane_i16, "UsV8sIi", "n") +BUILTIN(__builtin_neon_vgetq_lane_i32, "UiV4iIi", "n") +BUILTIN(__builtin_neon_vgetq_lane_i64, "UWiV2WiIi", "n") +BUILTIN(__builtin_neon_vgetq_lane_i8, "ScV16ScIi", "n") +BUILTIN(__builtin_neon_vhadd_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vhaddq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vhsub_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vhsubq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vld1_dup_v, "V8ScvC*i", "n") +BUILTIN(__builtin_neon_vld1_lane_v, "V8ScvC*V8ScIii", "n") +BUILTIN(__builtin_neon_vld1_v, "V8ScvC*i", "n") +BUILTIN(__builtin_neon_vld1_x2_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld1_x3_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld1_x4_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld1q_dup_v, "V16ScvC*i", "n") +BUILTIN(__builtin_neon_vld1q_lane_v, "V16ScvC*V16ScIii", "n") +BUILTIN(__builtin_neon_vld1q_v, "V16ScvC*i", "n") +BUILTIN(__builtin_neon_vld1q_x2_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld1q_x3_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld1q_x4_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld2_dup_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld2_lane_v, "vv*vC*V8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vld2_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld2q_dup_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld2q_lane_v, "vv*vC*V16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vld2q_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld3_dup_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld3_lane_v, "vv*vC*V8ScV8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vld3_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld3q_dup_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld3q_lane_v, "vv*vC*V16ScV16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vld3q_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld4_dup_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld4_lane_v, "vv*vC*V8ScV8ScV8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vld4_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld4q_dup_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vld4q_lane_v, "vv*vC*V16ScV16ScV16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vld4q_v, "vv*vC*i", "n") +BUILTIN(__builtin_neon_vldrq_p128, "ULLLivC*", "n") +BUILTIN(__builtin_neon_vmax_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vmaxnm_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vmaxnmq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vmaxnmv_f16, "hV8Sc", "n") +BUILTIN(__builtin_neon_vmaxnmv_f32, "fV2f", "n") +BUILTIN(__builtin_neon_vmaxnmvq_f16, "hV16Sc", "n") +BUILTIN(__builtin_neon_vmaxnmvq_f32, "fV4f", "n") +BUILTIN(__builtin_neon_vmaxnmvq_f64, "dV2d", "n") +BUILTIN(__builtin_neon_vmaxq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vmaxv_f16, "hV8Sc", "n") +BUILTIN(__builtin_neon_vmaxv_f32, "fV2f", "n") +BUILTIN(__builtin_neon_vmaxv_s16, "sV4s", "n") +BUILTIN(__builtin_neon_vmaxv_s32, "iV2i", "n") +BUILTIN(__builtin_neon_vmaxv_s8, "ScV8Sc", "n") +BUILTIN(__builtin_neon_vmaxv_u16, "UsV4Us", "n") +BUILTIN(__builtin_neon_vmaxv_u32, "UiV2Ui", "n") +BUILTIN(__builtin_neon_vmaxv_u8, "ScV8Sc", "n") +BUILTIN(__builtin_neon_vmaxvq_f16, "hV16Sc", "n") +BUILTIN(__builtin_neon_vmaxvq_f32, "fV4f", "n") +BUILTIN(__builtin_neon_vmaxvq_f64, "dV2d", "n") +BUILTIN(__builtin_neon_vmaxvq_s16, "sV8s", "n") +BUILTIN(__builtin_neon_vmaxvq_s32, "iV4i", "n") +BUILTIN(__builtin_neon_vmaxvq_s8, "ScV16Sc", "n") +BUILTIN(__builtin_neon_vmaxvq_u16, "UsV8Us", "n") +BUILTIN(__builtin_neon_vmaxvq_u32, "UiV4Ui", "n") +BUILTIN(__builtin_neon_vmaxvq_u8, "ScV16Sc", "n") +BUILTIN(__builtin_neon_vmin_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vminnm_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vminnmq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vminnmv_f16, "hV8Sc", "n") +BUILTIN(__builtin_neon_vminnmv_f32, "fV2f", "n") +BUILTIN(__builtin_neon_vminnmvq_f16, "hV16Sc", "n") +BUILTIN(__builtin_neon_vminnmvq_f32, "fV4f", "n") +BUILTIN(__builtin_neon_vminnmvq_f64, "dV2d", "n") +BUILTIN(__builtin_neon_vminq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vminv_f16, "hV8Sc", "n") +BUILTIN(__builtin_neon_vminv_f32, "fV2f", "n") +BUILTIN(__builtin_neon_vminv_s16, "sV4s", "n") +BUILTIN(__builtin_neon_vminv_s32, "iV2i", "n") +BUILTIN(__builtin_neon_vminv_s8, "ScV8Sc", "n") +BUILTIN(__builtin_neon_vminv_u16, "UsV4Us", "n") +BUILTIN(__builtin_neon_vminv_u32, "UiV2Ui", "n") +BUILTIN(__builtin_neon_vminv_u8, "ScV8Sc", "n") +BUILTIN(__builtin_neon_vminvq_f16, "hV16Sc", "n") +BUILTIN(__builtin_neon_vminvq_f32, "fV4f", "n") +BUILTIN(__builtin_neon_vminvq_f64, "dV2d", "n") +BUILTIN(__builtin_neon_vminvq_s16, "sV8s", "n") +BUILTIN(__builtin_neon_vminvq_s32, "iV4i", "n") +BUILTIN(__builtin_neon_vminvq_s8, "ScV16Sc", "n") +BUILTIN(__builtin_neon_vminvq_u16, "UsV8Us", "n") +BUILTIN(__builtin_neon_vminvq_u32, "UiV4Ui", "n") +BUILTIN(__builtin_neon_vminvq_u8, "ScV16Sc", "n") +BUILTIN(__builtin_neon_vmovl_v, "V16ScV8Sci", "n") +BUILTIN(__builtin_neon_vmovn_v, "V8ScV16Sci", "n") +BUILTIN(__builtin_neon_vmul_lane_v, "V8ScV8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vmul_laneq_v, "V8ScV8ScV16ScIii", "n") +BUILTIN(__builtin_neon_vmul_n_f64, "V1dV1dd", "n") +BUILTIN(__builtin_neon_vmul_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vmull_p64, "ULLLiUWiUWi", "n") +BUILTIN(__builtin_neon_vmull_v, "V16ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vmulq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vmulx_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vmulxd_f64, "ddd", "n") +BUILTIN(__builtin_neon_vmulxh_lane_f16, "hhV4hIi", "n") +BUILTIN(__builtin_neon_vmulxh_laneq_f16, "hhV8hIi", "n") +BUILTIN(__builtin_neon_vmulxq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vmulxs_f32, "fff", "n") +BUILTIN(__builtin_neon_vnegd_s64, "WiWi", "n") +BUILTIN(__builtin_neon_vpadal_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vpadalq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vpadd_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vpaddd_f64, "dV2d", "n") +BUILTIN(__builtin_neon_vpaddd_s64, "WiV2Wi", "n") +BUILTIN(__builtin_neon_vpaddd_u64, "UWiV2UWi", "n") +BUILTIN(__builtin_neon_vpaddl_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vpaddlq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vpaddq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vpadds_f32, "fV2f", "n") +BUILTIN(__builtin_neon_vpmax_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vpmaxnm_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vpmaxnmq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vpmaxnmqd_f64, "dV2d", "n") +BUILTIN(__builtin_neon_vpmaxnms_f32, "fV2f", "n") +BUILTIN(__builtin_neon_vpmaxq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vpmaxqd_f64, "dV2d", "n") +BUILTIN(__builtin_neon_vpmaxs_f32, "fV2f", "n") +BUILTIN(__builtin_neon_vpmin_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vpminnm_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vpminnmq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vpminnmqd_f64, "dV2d", "n") +BUILTIN(__builtin_neon_vpminnms_f32, "fV2f", "n") +BUILTIN(__builtin_neon_vpminq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vpminqd_f64, "dV2d", "n") +BUILTIN(__builtin_neon_vpmins_f32, "fV2f", "n") +BUILTIN(__builtin_neon_vqabs_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vqabsb_s8, "ScSc", "n") +BUILTIN(__builtin_neon_vqabsd_s64, "WiWi", "n") +BUILTIN(__builtin_neon_vqabsh_s16, "ss", "n") +BUILTIN(__builtin_neon_vqabsq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqabss_s32, "ii", "n") +BUILTIN(__builtin_neon_vqadd_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vqaddb_s8, "ScScSc", "n") +BUILTIN(__builtin_neon_vqaddb_u8, "ScScSc", "n") +BUILTIN(__builtin_neon_vqaddd_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vqaddd_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vqaddh_s16, "sss", "n") +BUILTIN(__builtin_neon_vqaddh_u16, "UsUsUs", "n") +BUILTIN(__builtin_neon_vqaddq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqadds_s32, "iii", "n") +BUILTIN(__builtin_neon_vqadds_u32, "UiUiUi", "n") +BUILTIN(__builtin_neon_vqdmlal_v, "V16ScV16ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vqdmlalh_lane_s16, "iisV4sIi", "n") +BUILTIN(__builtin_neon_vqdmlalh_laneq_s16, "iisV8sIi", "n") +BUILTIN(__builtin_neon_vqdmlalh_s16, "iiss", "n") +BUILTIN(__builtin_neon_vqdmlals_lane_s32, "WiWiiV2iIi", "n") +BUILTIN(__builtin_neon_vqdmlals_laneq_s32, "WiWiiV4iIi", "n") +BUILTIN(__builtin_neon_vqdmlals_s32, "WiWiii", "n") +BUILTIN(__builtin_neon_vqdmlsl_v, "V16ScV16ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vqdmlslh_lane_s16, "iisV4sIi", "n") +BUILTIN(__builtin_neon_vqdmlslh_laneq_s16, "iisV8sIi", "n") +BUILTIN(__builtin_neon_vqdmlslh_s16, "iiss", "n") +BUILTIN(__builtin_neon_vqdmlsls_lane_s32, "WiWiiV2iIi", "n") +BUILTIN(__builtin_neon_vqdmlsls_laneq_s32, "WiWiiV4iIi", "n") +BUILTIN(__builtin_neon_vqdmlsls_s32, "WiWiii", "n") +BUILTIN(__builtin_neon_vqdmulh_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vqdmulhh_s16, "sss", "n") +BUILTIN(__builtin_neon_vqdmulhq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqdmulhs_s32, "iii", "n") +BUILTIN(__builtin_neon_vqdmull_v, "V16ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vqdmullh_s16, "iss", "n") +BUILTIN(__builtin_neon_vqdmulls_s32, "Wiii", "n") +BUILTIN(__builtin_neon_vqmovn_v, "V8ScV16Sci", "n") +BUILTIN(__builtin_neon_vqmovnd_s64, "iWi", "n") +BUILTIN(__builtin_neon_vqmovnd_u64, "UiUWi", "n") +BUILTIN(__builtin_neon_vqmovnh_s16, "Scs", "n") +BUILTIN(__builtin_neon_vqmovnh_u16, "ScUs", "n") +BUILTIN(__builtin_neon_vqmovns_s32, "si", "n") +BUILTIN(__builtin_neon_vqmovns_u32, "UsUi", "n") +BUILTIN(__builtin_neon_vqmovun_v, "V8ScV16Sci", "n") +BUILTIN(__builtin_neon_vqmovund_s64, "iWi", "n") +BUILTIN(__builtin_neon_vqmovunh_s16, "Scs", "n") +BUILTIN(__builtin_neon_vqmovuns_s32, "si", "n") +BUILTIN(__builtin_neon_vqneg_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vqnegb_s8, "ScSc", "n") +BUILTIN(__builtin_neon_vqnegd_s64, "WiWi", "n") +BUILTIN(__builtin_neon_vqnegh_s16, "ss", "n") +BUILTIN(__builtin_neon_vqnegq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqnegs_s32, "ii", "n") +BUILTIN(__builtin_neon_vqrdmulh_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vqrdmulhh_s16, "sss", "n") +BUILTIN(__builtin_neon_vqrdmulhq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqrdmulhs_s32, "iii", "n") +BUILTIN(__builtin_neon_vqrshl_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vqrshlb_s8, "ScScSc", "n") +BUILTIN(__builtin_neon_vqrshlb_u8, "ScScSc", "n") +BUILTIN(__builtin_neon_vqrshld_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vqrshld_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vqrshlh_s16, "sss", "n") +BUILTIN(__builtin_neon_vqrshlh_u16, "UsUsUs", "n") +BUILTIN(__builtin_neon_vqrshlq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqrshls_s32, "iii", "n") +BUILTIN(__builtin_neon_vqrshls_u32, "UiUiUi", "n") +BUILTIN(__builtin_neon_vqrshrn_n_v, "V8ScV16ScIii", "n") +BUILTIN(__builtin_neon_vqrshrnd_n_s64, "iWiIi", "n") +BUILTIN(__builtin_neon_vqrshrnd_n_u64, "UiUWiIi", "n") +BUILTIN(__builtin_neon_vqrshrnh_n_s16, "ScsIi", "n") +BUILTIN(__builtin_neon_vqrshrnh_n_u16, "ScUsIi", "n") +BUILTIN(__builtin_neon_vqrshrns_n_s32, "siIi", "n") +BUILTIN(__builtin_neon_vqrshrns_n_u32, "UsUiIi", "n") +BUILTIN(__builtin_neon_vqrshrun_n_v, "V8ScV16ScIii", "n") +BUILTIN(__builtin_neon_vqrshrund_n_s64, "iWiIi", "n") +BUILTIN(__builtin_neon_vqrshrunh_n_s16, "ScsIi", "n") +BUILTIN(__builtin_neon_vqrshruns_n_s32, "siIi", "n") +BUILTIN(__builtin_neon_vqshl_n_v, "V8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vqshl_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vqshlb_n_s8, "ScScIi", "n") +BUILTIN(__builtin_neon_vqshlb_n_u8, "ScScIi", "n") +BUILTIN(__builtin_neon_vqshlb_s8, "ScScSc", "n") +BUILTIN(__builtin_neon_vqshlb_u8, "ScScSc", "n") +BUILTIN(__builtin_neon_vqshld_n_s64, "WiWiIi", "n") +BUILTIN(__builtin_neon_vqshld_n_u64, "UWiUWiIi", "n") +BUILTIN(__builtin_neon_vqshld_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vqshld_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vqshlh_n_s16, "ssIi", "n") +BUILTIN(__builtin_neon_vqshlh_n_u16, "UsUsIi", "n") +BUILTIN(__builtin_neon_vqshlh_s16, "sss", "n") +BUILTIN(__builtin_neon_vqshlh_u16, "UsUsUs", "n") +BUILTIN(__builtin_neon_vqshlq_n_v, "V16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vqshlq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqshls_n_s32, "iiIi", "n") +BUILTIN(__builtin_neon_vqshls_n_u32, "UiUiIi", "n") +BUILTIN(__builtin_neon_vqshls_s32, "iii", "n") +BUILTIN(__builtin_neon_vqshls_u32, "UiUiUi", "n") +BUILTIN(__builtin_neon_vqshlu_n_v, "V8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vqshlub_n_s8, "ScScIi", "n") +BUILTIN(__builtin_neon_vqshlud_n_s64, "WiWiIi", "n") +BUILTIN(__builtin_neon_vqshluh_n_s16, "ssIi", "n") +BUILTIN(__builtin_neon_vqshluq_n_v, "V16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vqshlus_n_s32, "iiIi", "n") +BUILTIN(__builtin_neon_vqshrn_n_v, "V8ScV16ScIii", "n") +BUILTIN(__builtin_neon_vqshrnd_n_s64, "iWiIi", "n") +BUILTIN(__builtin_neon_vqshrnd_n_u64, "UiUWiIi", "n") +BUILTIN(__builtin_neon_vqshrnh_n_s16, "ScsIi", "n") +BUILTIN(__builtin_neon_vqshrnh_n_u16, "ScUsIi", "n") +BUILTIN(__builtin_neon_vqshrns_n_s32, "siIi", "n") +BUILTIN(__builtin_neon_vqshrns_n_u32, "UsUiIi", "n") +BUILTIN(__builtin_neon_vqshrun_n_v, "V8ScV16ScIii", "n") +BUILTIN(__builtin_neon_vqshrund_n_s64, "iWiIi", "n") +BUILTIN(__builtin_neon_vqshrunh_n_s16, "ScsIi", "n") +BUILTIN(__builtin_neon_vqshruns_n_s32, "siIi", "n") +BUILTIN(__builtin_neon_vqsub_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vqsubb_s8, "ScScSc", "n") +BUILTIN(__builtin_neon_vqsubb_u8, "ScScSc", "n") +BUILTIN(__builtin_neon_vqsubd_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vqsubd_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vqsubh_s16, "sss", "n") +BUILTIN(__builtin_neon_vqsubh_u16, "UsUsUs", "n") +BUILTIN(__builtin_neon_vqsubq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqsubs_s32, "iii", "n") +BUILTIN(__builtin_neon_vqsubs_u32, "UiUiUi", "n") +BUILTIN(__builtin_neon_vqtbl1_v, "V8ScV16ScV8Sci", "n") +BUILTIN(__builtin_neon_vqtbl1q_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqtbl2_v, "V8ScV16ScV16ScV8Sci", "n") +BUILTIN(__builtin_neon_vqtbl2q_v, "V16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqtbl3_v, "V8ScV16ScV16ScV16ScV8Sci", "n") +BUILTIN(__builtin_neon_vqtbl3q_v, "V16ScV16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqtbl4_v, "V8ScV16ScV16ScV16ScV16ScV8Sci", "n") +BUILTIN(__builtin_neon_vqtbl4q_v, "V16ScV16ScV16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqtbx1_v, "V8ScV8ScV16ScV8Sci", "n") +BUILTIN(__builtin_neon_vqtbx1q_v, "V16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqtbx2_v, "V8ScV8ScV16ScV16ScV8Sci", "n") +BUILTIN(__builtin_neon_vqtbx2q_v, "V16ScV16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqtbx3_v, "V8ScV8ScV16ScV16ScV16ScV8Sci", "n") +BUILTIN(__builtin_neon_vqtbx3q_v, "V16ScV16ScV16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vqtbx4_v, "V8ScV8ScV16ScV16ScV16ScV16ScV8Sci", "n") +BUILTIN(__builtin_neon_vqtbx4q_v, "V16ScV16ScV16ScV16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vraddhn_v, "V8ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrbit_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrbitq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrecpe_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrecped_f64, "dd", "n") +BUILTIN(__builtin_neon_vrecpeq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrecpes_f32, "ff", "n") +BUILTIN(__builtin_neon_vrecps_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrecpsd_f64, "ddd", "n") +BUILTIN(__builtin_neon_vrecpsq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrecpss_f32, "fff", "n") +BUILTIN(__builtin_neon_vrecpxd_f64, "dd", "n") +BUILTIN(__builtin_neon_vrecpxs_f32, "ff", "n") +BUILTIN(__builtin_neon_vrhadd_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrhaddq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrnd_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrnda_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrndaq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrndi_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrndiq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrndm_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrndmq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrndn_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrndnq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrndns_f32, "ff", "n") +BUILTIN(__builtin_neon_vrndp_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrndpq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrndq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrndx_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrndxq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrshl_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrshld_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vrshld_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vrshlq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrshr_n_v, "V8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vrshrd_n_s64, "WiWiIi", "n") +BUILTIN(__builtin_neon_vrshrd_n_u64, "UWiUWiIi", "n") +BUILTIN(__builtin_neon_vrshrn_n_v, "V8ScV16ScIii", "n") +BUILTIN(__builtin_neon_vrshrq_n_v, "V16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vrsqrte_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrsqrted_f64, "dd", "n") +BUILTIN(__builtin_neon_vrsqrteq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrsqrtes_f32, "ff", "n") +BUILTIN(__builtin_neon_vrsqrts_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vrsqrtsd_f64, "ddd", "n") +BUILTIN(__builtin_neon_vrsqrtsq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vrsqrtss_f32, "fff", "n") +BUILTIN(__builtin_neon_vrsra_n_v, "V8ScV8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vrsrad_n_s64, "WiWiWiIi", "n") +BUILTIN(__builtin_neon_vrsrad_n_u64, "UWiUWiUWiIi", "n") +BUILTIN(__builtin_neon_vrsraq_n_v, "V16ScV16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vrsubhn_v, "V8ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vset_lane_f32, "V2ffV2fIi", "n") +BUILTIN(__builtin_neon_vset_lane_f64, "V1ddV1dIi", "n") +BUILTIN(__builtin_neon_vset_lane_i16, "V4ssV4sIi", "n") +BUILTIN(__builtin_neon_vset_lane_i32, "V2iiV2iIi", "n") +BUILTIN(__builtin_neon_vset_lane_i64, "V1WiWiV1WiIi", "n") +BUILTIN(__builtin_neon_vset_lane_i8, "V8ScScV8ScIi", "n") +BUILTIN(__builtin_neon_vsetq_lane_f32, "V4ffV4fIi", "n") +BUILTIN(__builtin_neon_vsetq_lane_f64, "V2ddV2dIi", "n") +BUILTIN(__builtin_neon_vsetq_lane_i16, "V8ssV8sIi", "n") +BUILTIN(__builtin_neon_vsetq_lane_i32, "V4iiV4iIi", "n") +BUILTIN(__builtin_neon_vsetq_lane_i64, "V2WiWiV2WiIi", "n") +BUILTIN(__builtin_neon_vsetq_lane_i8, "V16ScScV16ScIi", "n") +BUILTIN(__builtin_neon_vsha1cq_u32, "V4iV4UiUiV4Ui", "n") +BUILTIN(__builtin_neon_vsha1h_u32, "UiUi", "n") +BUILTIN(__builtin_neon_vsha1mq_u32, "V4iV4UiUiV4Ui", "n") +BUILTIN(__builtin_neon_vsha1pq_u32, "V4iV4UiUiV4Ui", "n") +BUILTIN(__builtin_neon_vsha1su0q_v, "V16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vsha1su1q_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vsha256h2q_v, "V16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vsha256hq_v, "V16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vsha256su0q_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vsha256su1q_v, "V16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vshl_n_v, "V8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vshl_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vshld_n_s64, "WiWiIi", "n") +BUILTIN(__builtin_neon_vshld_n_u64, "UWiUWiIi", "n") +BUILTIN(__builtin_neon_vshld_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vshld_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vshll_n_v, "V16ScV8ScIii", "n") +BUILTIN(__builtin_neon_vshlq_n_v, "V16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vshlq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vshr_n_v, "V8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vshrd_n_s64, "WiWiIi", "n") +BUILTIN(__builtin_neon_vshrd_n_u64, "UWiUWiIi", "n") +BUILTIN(__builtin_neon_vshrn_n_v, "V8ScV16ScIii", "n") +BUILTIN(__builtin_neon_vshrq_n_v, "V16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vsli_n_v, "V8ScV8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vslid_n_s64, "WiWiWiIi", "n") +BUILTIN(__builtin_neon_vslid_n_u64, "UWiUWiUWiIi", "n") +BUILTIN(__builtin_neon_vsliq_n_v, "V16ScV16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vsqadd_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vsqaddb_u8, "ScScSc", "n") +BUILTIN(__builtin_neon_vsqaddd_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vsqaddh_u16, "UsUsUs", "n") +BUILTIN(__builtin_neon_vsqaddq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vsqadds_u32, "UiUiUi", "n") +BUILTIN(__builtin_neon_vsqrt_v, "V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vsqrtq_v, "V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vsra_n_v, "V8ScV8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vsrad_n_s64, "WiWiWiIi", "n") +BUILTIN(__builtin_neon_vsrad_n_u64, "UWiUWiUWiIi", "n") +BUILTIN(__builtin_neon_vsraq_n_v, "V16ScV16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vsri_n_v, "V8ScV8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vsrid_n_s64, "WiWiWiIi", "n") +BUILTIN(__builtin_neon_vsrid_n_u64, "UWiUWiUWiIi", "n") +BUILTIN(__builtin_neon_vsriq_n_v, "V16ScV16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vst1_lane_v, "vv*V8ScIii", "n") +BUILTIN(__builtin_neon_vst1_v, "vv*V8Sci", "n") +BUILTIN(__builtin_neon_vst1_x2_v, "vv*V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vst1_x3_v, "vv*V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vst1_x4_v, "vv*V8ScV8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vst1q_lane_v, "vv*V16ScIii", "n") +BUILTIN(__builtin_neon_vst1q_v, "vv*V16Sci", "n") +BUILTIN(__builtin_neon_vst1q_x2_v, "vv*V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vst1q_x3_v, "vv*V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vst1q_x4_v, "vv*V16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vst2_lane_v, "vv*V8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vst2_v, "vv*V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vst2q_lane_v, "vv*V16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vst2q_v, "vv*V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vst3_lane_v, "vv*V8ScV8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vst3_v, "vv*V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vst3q_lane_v, "vv*V16ScV16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vst3q_v, "vv*V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vst4_lane_v, "vv*V8ScV8ScV8ScV8ScIii", "n") +BUILTIN(__builtin_neon_vst4_v, "vv*V8ScV8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vst4q_lane_v, "vv*V16ScV16ScV16ScV16ScIii", "n") +BUILTIN(__builtin_neon_vst4q_v, "vv*V16ScV16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vstrq_p128, "vv*ULLLi", "n") +BUILTIN(__builtin_neon_vsubd_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vsubd_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vsubhn_v, "V8ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vtbl1_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vtbl2_v, "V8ScV8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vtbl3_v, "V8ScV8ScV8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vtbl4_v, "V8ScV8ScV8ScV8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vtbx1_v, "V8ScV8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vtbx2_v, "V8ScV8ScV8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vtbx3_v, "V8ScV8ScV8ScV8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vtbx4_v, "V8ScV8ScV8ScV8ScV8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vtrn_v, "vv*V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vtrnq_v, "vv*V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vtst_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vtstd_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vtstd_u64, "UWiUWiUWi", "n") +BUILTIN(__builtin_neon_vtstq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vuqadd_v, "V8ScV8ScV8Sci", "n") +BUILTIN(__builtin_neon_vuqaddb_s8, "ScScSc", "n") +BUILTIN(__builtin_neon_vuqaddd_s64, "WiWiWi", "n") +BUILTIN(__builtin_neon_vuqaddh_s16, "sss", "n") +BUILTIN(__builtin_neon_vuqaddq_v, "V16ScV16ScV16Sci", "n") +BUILTIN(__builtin_neon_vuqadds_s32, "iii", "n") +BUILTIN(__builtin_neon_vuzp_v, "vv*V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vuzpq_v, "vv*V16ScV16Sci", "n") +BUILTIN(__builtin_neon_vzip_v, "vv*V8ScV8Sci", "n") +BUILTIN(__builtin_neon_vzipq_v, "vv*V16ScV16Sci", "n") +#endif + +#ifdef GET_NEON_OVERLOAD_CHECK +case NEON::BI__builtin_neon_vabd_v: mask = 0x70707ULL; break; +case NEON::BI__builtin_neon_vabdq_v: mask = 0x7070700000000ULL; break; +case NEON::BI__builtin_neon_vabs_v: mask = 0x70fULL; break; +case NEON::BI__builtin_neon_vabsq_v: mask = 0x70f00000000ULL; break; +case NEON::BI__builtin_neon_vaddhn_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vaesdq_v: mask = 0x1000000000000ULL; break; +case NEON::BI__builtin_neon_vaeseq_v: mask = 0x1000000000000ULL; break; +case NEON::BI__builtin_neon_vaesimcq_v: mask = 0x1000000000000ULL; break; +case NEON::BI__builtin_neon_vaesmcq_v: mask = 0x1000000000000ULL; break; +case NEON::BI__builtin_neon_vbsl_v: mask = 0xf077fULL; break; +case NEON::BI__builtin_neon_vbslq_v: mask = 0xf077f00000000ULL; break; +case NEON::BI__builtin_neon_vcage_v: mask = 0xe0000ULL; break; +case NEON::BI__builtin_neon_vcageq_v: mask = 0xe000000000000ULL; break; +case NEON::BI__builtin_neon_vcagt_v: mask = 0xe0000ULL; break; +case NEON::BI__builtin_neon_vcagtq_v: mask = 0xe000000000000ULL; break; +case NEON::BI__builtin_neon_vcale_v: mask = 0xe0000ULL; break; +case NEON::BI__builtin_neon_vcaleq_v: mask = 0xe000000000000ULL; break; +case NEON::BI__builtin_neon_vcalt_v: mask = 0xe0000ULL; break; +case NEON::BI__builtin_neon_vcaltq_v: mask = 0xe000000000000ULL; break; +case NEON::BI__builtin_neon_vceqz_v: mask = 0xf0000ULL; break; +case NEON::BI__builtin_neon_vceqzq_v: mask = 0xf000000000000ULL; break; +case NEON::BI__builtin_neon_vcgez_v: mask = 0xf0000ULL; break; +case NEON::BI__builtin_neon_vcgezq_v: mask = 0xf000000000000ULL; break; +case NEON::BI__builtin_neon_vcgtz_v: mask = 0xf0000ULL; break; +case NEON::BI__builtin_neon_vcgtzq_v: mask = 0xf000000000000ULL; break; +case NEON::BI__builtin_neon_vclez_v: mask = 0xf0000ULL; break; +case NEON::BI__builtin_neon_vclezq_v: mask = 0xf000000000000ULL; break; +case NEON::BI__builtin_neon_vcls_v: mask = 0x7ULL; break; +case NEON::BI__builtin_neon_vclsq_v: mask = 0x700000000ULL; break; +case NEON::BI__builtin_neon_vcltz_v: mask = 0xf0000ULL; break; +case NEON::BI__builtin_neon_vcltzq_v: mask = 0xf000000000000ULL; break; +case NEON::BI__builtin_neon_vclz_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vclzq_v: mask = 0x7000700000000ULL; break; +case NEON::BI__builtin_neon_vcnt_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vcntq_v: mask = 0x1001100000000ULL; break; +case NEON::BI__builtin_neon_vcvt_f16_f32: mask = 0x100ULL; break; +case NEON::BI__builtin_neon_vcvt_f16_v: mask = 0x20002ULL; break; +case NEON::BI__builtin_neon_vcvt_f32_f16: mask = 0x20000000000ULL; break; +case NEON::BI__builtin_neon_vcvt_f32_f64: mask = 0x200ULL; break; +case NEON::BI__builtin_neon_vcvt_f32_v: mask = 0x40004ULL; break; +case NEON::BI__builtin_neon_vcvt_f64_f32: mask = 0x40000000000ULL; break; +case NEON::BI__builtin_neon_vcvt_f64_v: mask = 0x80008ULL; break; +case NEON::BI__builtin_neon_vcvt_n_f16_v: mask = 0x20002ULL; break; +case NEON::BI__builtin_neon_vcvt_n_f32_v: mask = 0x40004ULL; break; +case NEON::BI__builtin_neon_vcvt_n_f64_v: mask = 0x80008ULL; break; +case NEON::BI__builtin_neon_vcvt_n_s16_v: mask = 0x2ULL; break; +case NEON::BI__builtin_neon_vcvt_n_s32_v: mask = 0x4ULL; break; +case NEON::BI__builtin_neon_vcvt_n_s64_v: mask = 0x8ULL; break; +case NEON::BI__builtin_neon_vcvt_n_u16_v: mask = 0x20000ULL; break; +case NEON::BI__builtin_neon_vcvt_n_u32_v: mask = 0x40000ULL; break; +case NEON::BI__builtin_neon_vcvt_n_u64_v: mask = 0x80000ULL; break; +case NEON::BI__builtin_neon_vcvt_s16_v: mask = 0x2ULL; break; +case NEON::BI__builtin_neon_vcvt_s32_v: mask = 0x4ULL; break; +case NEON::BI__builtin_neon_vcvt_s64_v: mask = 0x8ULL; break; +case NEON::BI__builtin_neon_vcvt_u16_v: mask = 0x20000ULL; break; +case NEON::BI__builtin_neon_vcvt_u32_v: mask = 0x40000ULL; break; +case NEON::BI__builtin_neon_vcvt_u64_v: mask = 0x80000ULL; break; +case NEON::BI__builtin_neon_vcvta_s16_v: mask = 0x2ULL; break; +case NEON::BI__builtin_neon_vcvta_s32_v: mask = 0x4ULL; break; +case NEON::BI__builtin_neon_vcvta_s64_v: mask = 0x8ULL; break; +case NEON::BI__builtin_neon_vcvta_u16_v: mask = 0x20000ULL; break; +case NEON::BI__builtin_neon_vcvta_u32_v: mask = 0x40000ULL; break; +case NEON::BI__builtin_neon_vcvta_u64_v: mask = 0x80000ULL; break; +case NEON::BI__builtin_neon_vcvtaq_s16_v: mask = 0x200000000ULL; break; +case NEON::BI__builtin_neon_vcvtaq_s32_v: mask = 0x400000000ULL; break; +case NEON::BI__builtin_neon_vcvtaq_s64_v: mask = 0x800000000ULL; break; +case NEON::BI__builtin_neon_vcvtaq_u16_v: mask = 0x2000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtaq_u32_v: mask = 0x4000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtaq_u64_v: mask = 0x8000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtm_s16_v: mask = 0x2ULL; break; +case NEON::BI__builtin_neon_vcvtm_s32_v: mask = 0x4ULL; break; +case NEON::BI__builtin_neon_vcvtm_s64_v: mask = 0x8ULL; break; +case NEON::BI__builtin_neon_vcvtm_u16_v: mask = 0x20000ULL; break; +case NEON::BI__builtin_neon_vcvtm_u32_v: mask = 0x40000ULL; break; +case NEON::BI__builtin_neon_vcvtm_u64_v: mask = 0x80000ULL; break; +case NEON::BI__builtin_neon_vcvtmq_s16_v: mask = 0x200000000ULL; break; +case NEON::BI__builtin_neon_vcvtmq_s32_v: mask = 0x400000000ULL; break; +case NEON::BI__builtin_neon_vcvtmq_s64_v: mask = 0x800000000ULL; break; +case NEON::BI__builtin_neon_vcvtmq_u16_v: mask = 0x2000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtmq_u32_v: mask = 0x4000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtmq_u64_v: mask = 0x8000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtn_s16_v: mask = 0x2ULL; break; +case NEON::BI__builtin_neon_vcvtn_s32_v: mask = 0x4ULL; break; +case NEON::BI__builtin_neon_vcvtn_s64_v: mask = 0x8ULL; break; +case NEON::BI__builtin_neon_vcvtn_u16_v: mask = 0x20000ULL; break; +case NEON::BI__builtin_neon_vcvtn_u32_v: mask = 0x40000ULL; break; +case NEON::BI__builtin_neon_vcvtn_u64_v: mask = 0x80000ULL; break; +case NEON::BI__builtin_neon_vcvtnq_s16_v: mask = 0x200000000ULL; break; +case NEON::BI__builtin_neon_vcvtnq_s32_v: mask = 0x400000000ULL; break; +case NEON::BI__builtin_neon_vcvtnq_s64_v: mask = 0x800000000ULL; break; +case NEON::BI__builtin_neon_vcvtnq_u16_v: mask = 0x2000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtnq_u32_v: mask = 0x4000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtnq_u64_v: mask = 0x8000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtp_s16_v: mask = 0x2ULL; break; +case NEON::BI__builtin_neon_vcvtp_s32_v: mask = 0x4ULL; break; +case NEON::BI__builtin_neon_vcvtp_s64_v: mask = 0x8ULL; break; +case NEON::BI__builtin_neon_vcvtp_u16_v: mask = 0x20000ULL; break; +case NEON::BI__builtin_neon_vcvtp_u32_v: mask = 0x40000ULL; break; +case NEON::BI__builtin_neon_vcvtp_u64_v: mask = 0x80000ULL; break; +case NEON::BI__builtin_neon_vcvtpq_s16_v: mask = 0x200000000ULL; break; +case NEON::BI__builtin_neon_vcvtpq_s32_v: mask = 0x400000000ULL; break; +case NEON::BI__builtin_neon_vcvtpq_s64_v: mask = 0x800000000ULL; break; +case NEON::BI__builtin_neon_vcvtpq_u16_v: mask = 0x2000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtpq_u32_v: mask = 0x4000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtpq_u64_v: mask = 0x8000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_f16_v: mask = 0x2000200000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_f32_v: mask = 0x4000400000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_f64_v: mask = 0x8000800000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_n_f16_v: mask = 0x2000200000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_n_f32_v: mask = 0x4000400000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_n_f64_v: mask = 0x8000800000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_n_s16_v: mask = 0x200000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_n_s32_v: mask = 0x400000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_n_s64_v: mask = 0x800000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_n_u16_v: mask = 0x2000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_n_u32_v: mask = 0x4000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_n_u64_v: mask = 0x8000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_s16_v: mask = 0x200000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_s32_v: mask = 0x400000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_s64_v: mask = 0x800000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_u16_v: mask = 0x2000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_u32_v: mask = 0x4000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtq_u64_v: mask = 0x8000000000000ULL; break; +case NEON::BI__builtin_neon_vcvtx_f32_v: mask = 0x40000000000ULL; break; +case NEON::BI__builtin_neon_vdot_v: mask = 0x40004ULL; break; +case NEON::BI__builtin_neon_vdotq_v: mask = 0x4000400000000ULL; break; +case NEON::BI__builtin_neon_vext_v: mask = 0xf077fULL; break; +case NEON::BI__builtin_neon_vextq_v: mask = 0xf077f00000000ULL; break; +case NEON::BI__builtin_neon_vfma_lane_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vfma_laneq_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vfma_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vfmaq_lane_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vfmaq_laneq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vfmaq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vfmlal_high_v: mask = 0x200ULL; break; +case NEON::BI__builtin_neon_vfmlal_low_v: mask = 0x200ULL; break; +case NEON::BI__builtin_neon_vfmlalq_high_v: mask = 0x20000000000ULL; break; +case NEON::BI__builtin_neon_vfmlalq_low_v: mask = 0x20000000000ULL; break; +case NEON::BI__builtin_neon_vfmlsl_high_v: mask = 0x200ULL; break; +case NEON::BI__builtin_neon_vfmlsl_low_v: mask = 0x200ULL; break; +case NEON::BI__builtin_neon_vfmlslq_high_v: mask = 0x20000000000ULL; break; +case NEON::BI__builtin_neon_vfmlslq_low_v: mask = 0x20000000000ULL; break; +case NEON::BI__builtin_neon_vhadd_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vhaddq_v: mask = 0x7000700000000ULL; break; +case NEON::BI__builtin_neon_vhsub_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vhsubq_v: mask = 0x7000700000000ULL; break; +case NEON::BI__builtin_neon_vld1_dup_v: mask = 0xf077fULL; break; +case NEON::BI__builtin_neon_vld1_lane_v: mask = 0xf077fULL; break; +case NEON::BI__builtin_neon_vld1_v: mask = 0xf077fULL; PtrArgNum = 0; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld1_x2_v: mask = 0xf077fULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld1_x3_v: mask = 0xf077fULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld1_x4_v: mask = 0xf077fULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld1q_dup_v: mask = 0xf077f00000000ULL; break; +case NEON::BI__builtin_neon_vld1q_lane_v: mask = 0xf077f00000000ULL; break; +case NEON::BI__builtin_neon_vld1q_v: mask = 0xf077f00000000ULL; PtrArgNum = 0; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld1q_x2_v: mask = 0xf077f00000000ULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld1q_x3_v: mask = 0xf077f00000000ULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld1q_x4_v: mask = 0xf077f00000000ULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld2_dup_v: mask = 0xf077fULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld2_lane_v: mask = 0xf077fULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld2_v: mask = 0xf077fULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld2q_dup_v: mask = 0xf077f00000000ULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld2q_lane_v: mask = 0xf077f00000000ULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld2q_v: mask = 0xf077f00000000ULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld3_dup_v: mask = 0xf077fULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld3_lane_v: mask = 0xf077fULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld3_v: mask = 0xf077fULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld3q_dup_v: mask = 0xf077f00000000ULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld3q_lane_v: mask = 0xf077f00000000ULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld3q_v: mask = 0xf077f00000000ULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld4_dup_v: mask = 0xf077fULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld4_lane_v: mask = 0xf077fULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld4_v: mask = 0xf077fULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld4q_dup_v: mask = 0xf077f00000000ULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld4q_lane_v: mask = 0xf077f00000000ULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vld4q_v: mask = 0xf077f00000000ULL; PtrArgNum = 1; HasConstPtr = true; break; +case NEON::BI__builtin_neon_vmax_v: mask = 0x70707ULL; break; +case NEON::BI__builtin_neon_vmaxnm_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vmaxnmq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vmaxq_v: mask = 0x7070700000000ULL; break; +case NEON::BI__builtin_neon_vmin_v: mask = 0x70707ULL; break; +case NEON::BI__builtin_neon_vminnm_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vminnmq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vminq_v: mask = 0x7070700000000ULL; break; +case NEON::BI__builtin_neon_vmovl_v: mask = 0xe000e00000000ULL; break; +case NEON::BI__builtin_neon_vmovn_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vmul_lane_v: mask = 0x400ULL; break; +case NEON::BI__builtin_neon_vmul_laneq_v: mask = 0x400ULL; break; +case NEON::BI__builtin_neon_vmul_v: mask = 0x10ULL; break; +case NEON::BI__builtin_neon_vmull_v: mask = 0xe002e00000000ULL; break; +case NEON::BI__builtin_neon_vmulq_v: mask = 0x1000000000ULL; break; +case NEON::BI__builtin_neon_vmulx_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vmulxq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vpadal_v: mask = 0xe000eULL; break; +case NEON::BI__builtin_neon_vpadalq_v: mask = 0xe000e00000000ULL; break; +case NEON::BI__builtin_neon_vpadd_v: mask = 0x70307ULL; break; +case NEON::BI__builtin_neon_vpaddl_v: mask = 0xe000eULL; break; +case NEON::BI__builtin_neon_vpaddlq_v: mask = 0xe000e00000000ULL; break; +case NEON::BI__builtin_neon_vpaddq_v: mask = 0xf070f00000000ULL; break; +case NEON::BI__builtin_neon_vpmax_v: mask = 0x70307ULL; break; +case NEON::BI__builtin_neon_vpmaxnm_v: mask = 0x300ULL; break; +case NEON::BI__builtin_neon_vpmaxnmq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vpmaxq_v: mask = 0x7070700000000ULL; break; +case NEON::BI__builtin_neon_vpmin_v: mask = 0x70307ULL; break; +case NEON::BI__builtin_neon_vpminnm_v: mask = 0x300ULL; break; +case NEON::BI__builtin_neon_vpminnmq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vpminq_v: mask = 0x7070700000000ULL; break; +case NEON::BI__builtin_neon_vqabs_v: mask = 0xfULL; break; +case NEON::BI__builtin_neon_vqabsq_v: mask = 0xf00000000ULL; break; +case NEON::BI__builtin_neon_vqadd_v: mask = 0xf000fULL; break; +case NEON::BI__builtin_neon_vqaddq_v: mask = 0xf000f00000000ULL; break; +case NEON::BI__builtin_neon_vqdmlal_v: mask = 0xc00000000ULL; break; +case NEON::BI__builtin_neon_vqdmlsl_v: mask = 0xc00000000ULL; break; +case NEON::BI__builtin_neon_vqdmulh_v: mask = 0x6ULL; break; +case NEON::BI__builtin_neon_vqdmulhq_v: mask = 0x600000000ULL; break; +case NEON::BI__builtin_neon_vqdmull_v: mask = 0xc00000000ULL; break; +case NEON::BI__builtin_neon_vqmovn_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vqmovun_v: mask = 0x70000ULL; break; +case NEON::BI__builtin_neon_vqneg_v: mask = 0xfULL; break; +case NEON::BI__builtin_neon_vqnegq_v: mask = 0xf00000000ULL; break; +case NEON::BI__builtin_neon_vqrdmulh_v: mask = 0x6ULL; break; +case NEON::BI__builtin_neon_vqrdmulhq_v: mask = 0x600000000ULL; break; +case NEON::BI__builtin_neon_vqrshl_v: mask = 0xf000fULL; break; +case NEON::BI__builtin_neon_vqrshlq_v: mask = 0xf000f00000000ULL; break; +case NEON::BI__builtin_neon_vqrshrn_n_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vqrshrun_n_v: mask = 0x70000ULL; break; +case NEON::BI__builtin_neon_vqshl_n_v: mask = 0xf000fULL; break; +case NEON::BI__builtin_neon_vqshl_v: mask = 0xf000fULL; break; +case NEON::BI__builtin_neon_vqshlq_n_v: mask = 0xf000f00000000ULL; break; +case NEON::BI__builtin_neon_vqshlq_v: mask = 0xf000f00000000ULL; break; +case NEON::BI__builtin_neon_vqshlu_n_v: mask = 0xf0000ULL; break; +case NEON::BI__builtin_neon_vqshluq_n_v: mask = 0xf000000000000ULL; break; +case NEON::BI__builtin_neon_vqshrn_n_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vqshrun_n_v: mask = 0x70000ULL; break; +case NEON::BI__builtin_neon_vqsub_v: mask = 0xf000fULL; break; +case NEON::BI__builtin_neon_vqsubq_v: mask = 0xf000f00000000ULL; break; +case NEON::BI__builtin_neon_vqtbl1_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vqtbl1q_v: mask = 0x1001100000000ULL; break; +case NEON::BI__builtin_neon_vqtbl2_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vqtbl2q_v: mask = 0x1001100000000ULL; break; +case NEON::BI__builtin_neon_vqtbl3_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vqtbl3q_v: mask = 0x1001100000000ULL; break; +case NEON::BI__builtin_neon_vqtbl4_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vqtbl4q_v: mask = 0x1001100000000ULL; break; +case NEON::BI__builtin_neon_vqtbx1_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vqtbx1q_v: mask = 0x1001100000000ULL; break; +case NEON::BI__builtin_neon_vqtbx2_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vqtbx2q_v: mask = 0x1001100000000ULL; break; +case NEON::BI__builtin_neon_vqtbx3_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vqtbx3q_v: mask = 0x1001100000000ULL; break; +case NEON::BI__builtin_neon_vqtbx4_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vqtbx4q_v: mask = 0x1001100000000ULL; break; +case NEON::BI__builtin_neon_vraddhn_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vrbit_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vrbitq_v: mask = 0x1001100000000ULL; break; +case NEON::BI__builtin_neon_vrecpe_v: mask = 0x40700ULL; break; +case NEON::BI__builtin_neon_vrecpeq_v: mask = 0x4070000000000ULL; break; +case NEON::BI__builtin_neon_vrecps_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vrecpsq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vrhadd_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vrhaddq_v: mask = 0x7000700000000ULL; break; +case NEON::BI__builtin_neon_vrnd_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vrnda_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vrndaq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vrndi_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vrndiq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vrndm_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vrndmq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vrndn_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vrndnq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vrndp_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vrndpq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vrndq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vrndx_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vrndxq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vrshl_v: mask = 0xf000fULL; break; +case NEON::BI__builtin_neon_vrshlq_v: mask = 0xf000f00000000ULL; break; +case NEON::BI__builtin_neon_vrshr_n_v: mask = 0xf000fULL; break; +case NEON::BI__builtin_neon_vrshrn_n_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vrshrq_n_v: mask = 0xf000f00000000ULL; break; +case NEON::BI__builtin_neon_vrsqrte_v: mask = 0x40700ULL; break; +case NEON::BI__builtin_neon_vrsqrteq_v: mask = 0x4070000000000ULL; break; +case NEON::BI__builtin_neon_vrsqrts_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vrsqrtsq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vrsra_n_v: mask = 0xf000fULL; break; +case NEON::BI__builtin_neon_vrsraq_n_v: mask = 0xf000f00000000ULL; break; +case NEON::BI__builtin_neon_vrsubhn_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vsha1su0q_v: mask = 0x4000000000000ULL; break; +case NEON::BI__builtin_neon_vsha1su1q_v: mask = 0x4000000000000ULL; break; +case NEON::BI__builtin_neon_vsha256h2q_v: mask = 0x4000000000000ULL; break; +case NEON::BI__builtin_neon_vsha256hq_v: mask = 0x4000000000000ULL; break; +case NEON::BI__builtin_neon_vsha256su0q_v: mask = 0x4000000000000ULL; break; +case NEON::BI__builtin_neon_vsha256su1q_v: mask = 0x4000000000000ULL; break; +case NEON::BI__builtin_neon_vshl_n_v: mask = 0xf000fULL; break; +case NEON::BI__builtin_neon_vshl_v: mask = 0xf000fULL; break; +case NEON::BI__builtin_neon_vshll_n_v: mask = 0xe000e00000000ULL; break; +case NEON::BI__builtin_neon_vshlq_n_v: mask = 0xf000f00000000ULL; break; +case NEON::BI__builtin_neon_vshlq_v: mask = 0xf000f00000000ULL; break; +case NEON::BI__builtin_neon_vshr_n_v: mask = 0xf000fULL; break; +case NEON::BI__builtin_neon_vshrn_n_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vshrq_n_v: mask = 0xf000f00000000ULL; break; +case NEON::BI__builtin_neon_vsli_n_v: mask = 0xf007fULL; break; +case NEON::BI__builtin_neon_vsliq_n_v: mask = 0xf007f00000000ULL; break; +case NEON::BI__builtin_neon_vsqadd_v: mask = 0xf0000ULL; break; +case NEON::BI__builtin_neon_vsqaddq_v: mask = 0xf000000000000ULL; break; +case NEON::BI__builtin_neon_vsqrt_v: mask = 0x700ULL; break; +case NEON::BI__builtin_neon_vsqrtq_v: mask = 0x70000000000ULL; break; +case NEON::BI__builtin_neon_vsra_n_v: mask = 0xf000fULL; break; +case NEON::BI__builtin_neon_vsraq_n_v: mask = 0xf000f00000000ULL; break; +case NEON::BI__builtin_neon_vsri_n_v: mask = 0xf007fULL; break; +case NEON::BI__builtin_neon_vsriq_n_v: mask = 0xf007f00000000ULL; break; +case NEON::BI__builtin_neon_vst1_lane_v: mask = 0xf077fULL; break; +case NEON::BI__builtin_neon_vst1_v: mask = 0xf077fULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst1_x2_v: mask = 0xf077fULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst1_x3_v: mask = 0xf077fULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst1_x4_v: mask = 0xf077fULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst1q_lane_v: mask = 0xf077f00000000ULL; break; +case NEON::BI__builtin_neon_vst1q_v: mask = 0xf077f00000000ULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst1q_x2_v: mask = 0xf077f00000000ULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst1q_x3_v: mask = 0xf077f00000000ULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst1q_x4_v: mask = 0xf077f00000000ULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst2_lane_v: mask = 0xf077fULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst2_v: mask = 0xf077fULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst2q_lane_v: mask = 0xf077f00000000ULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst2q_v: mask = 0xf077f00000000ULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst3_lane_v: mask = 0xf077fULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst3_v: mask = 0xf077fULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst3q_lane_v: mask = 0xf077f00000000ULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst3q_v: mask = 0xf077f00000000ULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst4_lane_v: mask = 0xf077fULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst4_v: mask = 0xf077fULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst4q_lane_v: mask = 0xf077f00000000ULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vst4q_v: mask = 0xf077f00000000ULL; PtrArgNum = 0; break; +case NEON::BI__builtin_neon_vsubhn_v: mask = 0x70007ULL; break; +case NEON::BI__builtin_neon_vtbl1_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vtbl2_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vtbl3_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vtbl4_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vtbx1_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vtbx2_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vtbx3_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vtbx4_v: mask = 0x10011ULL; break; +case NEON::BI__builtin_neon_vtrn_v: mask = 0x70337ULL; break; +case NEON::BI__builtin_neon_vtrnq_v: mask = 0x7033700000000ULL; break; +case NEON::BI__builtin_neon_vtst_v: mask = 0xf0000ULL; break; +case NEON::BI__builtin_neon_vtstq_v: mask = 0xf000000000000ULL; break; +case NEON::BI__builtin_neon_vuqadd_v: mask = 0xfULL; break; +case NEON::BI__builtin_neon_vuqaddq_v: mask = 0xf00000000ULL; break; +case NEON::BI__builtin_neon_vuzp_v: mask = 0x70337ULL; break; +case NEON::BI__builtin_neon_vuzpq_v: mask = 0x7033700000000ULL; break; +case NEON::BI__builtin_neon_vzip_v: mask = 0x70337ULL; break; +case NEON::BI__builtin_neon_vzipq_v: mask = 0x7033700000000ULL; break; +#endif + +#ifdef GET_NEON_IMMEDIATE_CHECK +case NEON::BI__builtin_neon_vcvtq_n_f64_v: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vcvt_n_f64_v: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vcvtq_n_s64_v: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vcvt_n_s64_v: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vcvtq_n_u64_v: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vcvt_n_u64_v: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vget_lane_i64: i = 1; u = 0; break; +case NEON::BI__builtin_neon_vgetq_lane_i64: i = 1; u = 1; break; +case NEON::BI__builtin_neon_vgetq_lane_f64: i = 1; u = 1; break; +case NEON::BI__builtin_neon_vget_lane_f64: i = 1; u = 0; break; +case NEON::BI__builtin_neon_vld1_lane_v: i = 2; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vld1q_lane_v: i = 2; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vld2_lane_v: i = 4; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vld2q_lane_v: i = 4; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vld3_lane_v: i = 5; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vld3q_lane_v: i = 5; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vld4_lane_v: i = 6; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vld4q_lane_v: i = 6; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vcvts_n_s32_f32: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vcvtd_n_s64_f64: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vcvts_n_u32_f32: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vcvtd_n_u64_f64: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vfmad_lane_f64: i = 3; u = 0; break; +case NEON::BI__builtin_neon_vfmas_lane_f32: i = 3; u = 1; break; +case NEON::BI__builtin_neon_vfmah_lane_f16: i = 3; u = 3; break; +case NEON::BI__builtin_neon_vfmad_laneq_f64: i = 3; u = 1; break; +case NEON::BI__builtin_neon_vfmas_laneq_f32: i = 3; u = 3; break; +case NEON::BI__builtin_neon_vfmah_laneq_f16: i = 3; u = 7; break; +case NEON::BI__builtin_neon_vmulxh_lane_f16: i = 2; u = 3; break; +case NEON::BI__builtin_neon_vmulxh_laneq_f16: i = 2; u = 7; break; +case NEON::BI__builtin_neon_vcvts_n_f32_u32: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vcvts_n_f32_s32: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vcvtd_n_f64_u64: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vcvtd_n_f64_s64: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vshld_n_u64: i = 1; u = 63; break; +case NEON::BI__builtin_neon_vshld_n_s64: i = 1; u = 63; break; +case NEON::BI__builtin_neon_vslid_n_u64: i = 2; u = 63; break; +case NEON::BI__builtin_neon_vslid_n_s64: i = 2; u = 63; break; +case NEON::BI__builtin_neon_vqdmlals_lane_s32: i = 3; u = 1; break; +case NEON::BI__builtin_neon_vqdmlalh_lane_s16: i = 3; u = 3; break; +case NEON::BI__builtin_neon_vqdmlals_laneq_s32: i = 3; u = 3; break; +case NEON::BI__builtin_neon_vqdmlalh_laneq_s16: i = 3; u = 7; break; +case NEON::BI__builtin_neon_vqdmlsls_lane_s32: i = 3; u = 1; break; +case NEON::BI__builtin_neon_vqdmlslh_lane_s16: i = 3; u = 3; break; +case NEON::BI__builtin_neon_vqdmlsls_laneq_s32: i = 3; u = 3; break; +case NEON::BI__builtin_neon_vqdmlslh_laneq_s16: i = 3; u = 7; break; +case NEON::BI__builtin_neon_vqrshrns_n_u32: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vqrshrnd_n_u64: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vqrshrnh_n_u16: i = 1; l = 1; u = 7; break; +case NEON::BI__builtin_neon_vqrshrns_n_s32: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vqrshrnd_n_s64: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vqrshrnh_n_s16: i = 1; l = 1; u = 7; break; +case NEON::BI__builtin_neon_vqrshruns_n_s32: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vqrshrund_n_s64: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vqrshrunh_n_s16: i = 1; l = 1; u = 7; break; +case NEON::BI__builtin_neon_vqshlub_n_s8: i = 1; u = 7; break; +case NEON::BI__builtin_neon_vqshlus_n_s32: i = 1; u = 31; break; +case NEON::BI__builtin_neon_vqshlud_n_s64: i = 1; u = 63; break; +case NEON::BI__builtin_neon_vqshluh_n_s16: i = 1; u = 15; break; +case NEON::BI__builtin_neon_vqshlb_n_u8: i = 1; u = 7; break; +case NEON::BI__builtin_neon_vqshls_n_u32: i = 1; u = 31; break; +case NEON::BI__builtin_neon_vqshld_n_u64: i = 1; u = 63; break; +case NEON::BI__builtin_neon_vqshlh_n_u16: i = 1; u = 15; break; +case NEON::BI__builtin_neon_vqshlb_n_s8: i = 1; u = 7; break; +case NEON::BI__builtin_neon_vqshls_n_s32: i = 1; u = 31; break; +case NEON::BI__builtin_neon_vqshld_n_s64: i = 1; u = 63; break; +case NEON::BI__builtin_neon_vqshlh_n_s16: i = 1; u = 15; break; +case NEON::BI__builtin_neon_vqshrns_n_u32: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vqshrnd_n_u64: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vqshrnh_n_u16: i = 1; l = 1; u = 7; break; +case NEON::BI__builtin_neon_vqshrns_n_s32: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vqshrnd_n_s64: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vqshrnh_n_s16: i = 1; l = 1; u = 7; break; +case NEON::BI__builtin_neon_vqshruns_n_s32: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vqshrund_n_s64: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vqshrunh_n_s16: i = 1; l = 1; u = 7; break; +case NEON::BI__builtin_neon_vsrid_n_u64: i = 2; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vsrid_n_s64: i = 2; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vrshrd_n_u64: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vrshrd_n_s64: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vrsrad_n_u64: i = 2; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vrsrad_n_s64: i = 2; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vshrd_n_u64: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vshrd_n_s64: i = 1; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vsrad_n_u64: i = 2; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vsrad_n_s64: i = 2; l = 1; u = 63; break; +case NEON::BI__builtin_neon_vdupb_lane_i8: i = 1; u = 7; break; +case NEON::BI__builtin_neon_vduph_lane_i16: i = 1; u = 3; break; +case NEON::BI__builtin_neon_vdups_lane_i32: i = 1; u = 1; break; +case NEON::BI__builtin_neon_vdupd_lane_i64: i = 1; u = 0; break; +case NEON::BI__builtin_neon_vdupd_lane_f64: i = 1; u = 0; break; +case NEON::BI__builtin_neon_vdups_lane_f32: i = 1; u = 1; break; +case NEON::BI__builtin_neon_vduph_lane_f16: i = 1; u = 3; break; +case NEON::BI__builtin_neon_vdupb_laneq_i8: i = 1; u = 15; break; +case NEON::BI__builtin_neon_vduph_laneq_i16: i = 1; u = 7; break; +case NEON::BI__builtin_neon_vdups_laneq_i32: i = 1; u = 3; break; +case NEON::BI__builtin_neon_vdupd_laneq_i64: i = 1; u = 1; break; +case NEON::BI__builtin_neon_vdupd_laneq_f64: i = 1; u = 1; break; +case NEON::BI__builtin_neon_vdups_laneq_f32: i = 1; u = 3; break; +case NEON::BI__builtin_neon_vduph_laneq_f16: i = 1; u = 7; break; +case NEON::BI__builtin_neon_vmul_lane_v: i = 2; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vmul_laneq_v: i = 2; u = RFT(TV, false, true); break; +case NEON::BI__builtin_neon_vset_lane_i64: i = 2; u = 0; break; +case NEON::BI__builtin_neon_vsetq_lane_i64: i = 2; u = 1; break; +case NEON::BI__builtin_neon_vsetq_lane_f64: i = 2; u = 1; break; +case NEON::BI__builtin_neon_vset_lane_f64: i = 2; u = 0; break; +case NEON::BI__builtin_neon_vsli_n_v: i = 2; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vsliq_n_v: i = 2; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vsri_n_v: i = 2; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vsriq_n_v: i = 2; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vst1_lane_v: i = 2; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vst1q_lane_v: i = 2; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vst2_lane_v: i = 3; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vst2q_lane_v: i = 3; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vst3_lane_v: i = 4; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vst3q_lane_v: i = 4; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vst4_lane_v: i = 5; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vst4q_lane_v: i = 5; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vcvtq_n_f16_v: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvt_n_f16_v: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvtq_n_f32_v: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vcvt_n_f32_v: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vcvtq_n_s16_v: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvt_n_s16_v: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvtq_n_s32_v: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vcvt_n_s32_v: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vcvtq_n_u16_v: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvt_n_u16_v: i = 1; l = 1; u = 15; break; +case NEON::BI__builtin_neon_vcvtq_n_u32_v: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vcvt_n_u32_v: i = 1; l = 1; u = 31; break; +case NEON::BI__builtin_neon_vext_v: i = 2; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vextq_v: i = 2; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vfmaq_lane_v: i = 3; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vfma_lane_v: i = 3; u = RFT(TV, false, false); break; +case NEON::BI__builtin_neon_vfmaq_laneq_v: i = 3; u = RFT(TV, false, true); break; +case NEON::BI__builtin_neon_vfma_laneq_v: i = 3; u = RFT(TV, false, true); break; +case NEON::BI__builtin_neon_vget_lane_i8: i = 1; u = 7; break; +case NEON::BI__builtin_neon_vget_lane_i16: i = 1; u = 3; break; +case NEON::BI__builtin_neon_vgetq_lane_i8: i = 1; u = 15; break; +case NEON::BI__builtin_neon_vgetq_lane_i16: i = 1; u = 7; break; +case NEON::BI__builtin_neon_vgetq_lane_i32: i = 1; u = 3; break; +case NEON::BI__builtin_neon_vgetq_lane_f32: i = 1; u = 3; break; +case NEON::BI__builtin_neon_vget_lane_i32: i = 1; u = 1; break; +case NEON::BI__builtin_neon_vget_lane_f32: i = 1; u = 1; break; +case NEON::BI__builtin_neon_vqrshrn_n_v: i = 1; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vqrshrun_n_v: i = 1; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vqshluq_n_v: i = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vqshlu_n_v: i = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vqshlq_n_v: i = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vqshl_n_v: i = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vqshrn_n_v: i = 1; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vqshrun_n_v: i = 1; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vrshrn_n_v: i = 1; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vrshrq_n_v: i = 1; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vrshr_n_v: i = 1; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vrsraq_n_v: i = 2; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vrsra_n_v: i = 2; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vset_lane_i8: i = 2; u = 7; break; +case NEON::BI__builtin_neon_vset_lane_i16: i = 2; u = 3; break; +case NEON::BI__builtin_neon_vsetq_lane_i8: i = 2; u = 15; break; +case NEON::BI__builtin_neon_vsetq_lane_i16: i = 2; u = 7; break; +case NEON::BI__builtin_neon_vsetq_lane_i32: i = 2; u = 3; break; +case NEON::BI__builtin_neon_vsetq_lane_f32: i = 2; u = 3; break; +case NEON::BI__builtin_neon_vset_lane_i32: i = 2; u = 1; break; +case NEON::BI__builtin_neon_vset_lane_f32: i = 2; u = 1; break; +case NEON::BI__builtin_neon_vshll_n_v: i = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vshlq_n_v: i = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vshl_n_v: i = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vshrn_n_v: i = 1; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vshrq_n_v: i = 1; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vshr_n_v: i = 1; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vsraq_n_v: i = 2; l = 1; u = RFT(TV, true); break; +case NEON::BI__builtin_neon_vsra_n_v: i = 2; l = 1; u = RFT(TV, true); break; +#endif + |
