diff options
Diffstat (limited to 'include/clang/Basic')
| -rw-r--r-- | include/clang/Basic/Attr.td | 7 | ||||
| -rw-r--r-- | include/clang/Basic/BuiltinsAMDGPU.def | 1 | ||||
| -rw-r--r-- | include/clang/Basic/BuiltinsPPC.def | 3 | ||||
| -rw-r--r-- | include/clang/Basic/BuiltinsX86.def | 3 | ||||
| -rw-r--r-- | include/clang/Basic/DiagnosticOptions.def | 2 | ||||
| -rw-r--r-- | include/clang/Basic/DiagnosticOptions.h | 8 | ||||
| -rw-r--r-- | include/clang/Basic/DiagnosticSemaKinds.td | 46 | ||||
| -rw-r--r-- | include/clang/Basic/SourceManager.h | 3 | ||||
| -rw-r--r-- | include/clang/Basic/SourceManagerInternals.h | 2 | ||||
| -rw-r--r-- | include/clang/Basic/TemplateKinds.h | 14 | ||||
| -rw-r--r-- | include/clang/Basic/XRayLists.h | 1 | 
11 files changed, 64 insertions, 26 deletions
diff --git a/include/clang/Basic/Attr.td b/include/clang/Basic/Attr.td index a885ede8df12..9da2cc376d54 100644 --- a/include/clang/Basic/Attr.td +++ b/include/clang/Basic/Attr.td @@ -149,6 +149,9 @@ class ExprArgument<string name, bit opt = 0> : Argument<name, opt>;  class FunctionArgument<string name, bit opt = 0, bit fake = 0> : Argument<name,                                                                            opt,                                                                            fake>; +class NamedArgument<string name, bit opt = 0, bit fake = 0> : Argument<name, +                                                                          opt, +                                                                          fake>;  class TypeArgument<string name, bit opt = 0> : Argument<name, opt>;  class UnsignedArgument<string name, bit opt = 0> : Argument<name, opt>;  class VariadicUnsignedArgument<string name> : Argument<name, 1>; @@ -1819,14 +1822,14 @@ def Unavailable : InheritableAttr {  def DiagnoseIf : InheritableAttr {    let Spellings = [GNU<"diagnose_if">]; -  let Subjects = SubjectList<[Function]>; +  let Subjects = SubjectList<[Function, ObjCMethod, ObjCProperty]>;    let Args = [ExprArgument<"Cond">, StringArgument<"Message">,                EnumArgument<"DiagnosticType",                             "DiagnosticType",                             ["error", "warning"],                             ["DT_Error", "DT_Warning"]>,                BoolArgument<"ArgDependent", 0, /*fake*/ 1>, -              FunctionArgument<"Parent", 0, /*fake*/ 1>]; +              NamedArgument<"Parent", 0, /*fake*/ 1>];    let DuplicatesAllowedWhileMerging = 1;    let LateParsed = 1;    let AdditionalMembers = [{ diff --git a/include/clang/Basic/BuiltinsAMDGPU.def b/include/clang/Basic/BuiltinsAMDGPU.def index a8ab657c379e..6542acafe48a 100644 --- a/include/clang/Basic/BuiltinsAMDGPU.def +++ b/include/clang/Basic/BuiltinsAMDGPU.def @@ -36,6 +36,7 @@ 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") diff --git a/include/clang/Basic/BuiltinsPPC.def b/include/clang/Basic/BuiltinsPPC.def index f7cddc03131b..119490314b26 100644 --- a/include/clang/Basic/BuiltinsPPC.def +++ b/include/clang/Basic/BuiltinsPPC.def @@ -420,6 +420,9 @@ 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") +  // HTM builtins  BUILTIN(__builtin_tbegin, "UiUIi", "")  BUILTIN(__builtin_tend, "UiUIi", "") diff --git a/include/clang/Basic/BuiltinsX86.def b/include/clang/Basic/BuiltinsX86.def index 68b868ce8e6e..a98c8f0a53db 100644 --- a/include/clang/Basic/BuiltinsX86.def +++ b/include/clang/Basic/BuiltinsX86.def @@ -1107,6 +1107,9 @@ TARGET_BUILTIN(__builtin_ia32_vpconflictsi_512_mask, "V16iV16iV16iUs", "", "avx5  TARGET_BUILTIN(__builtin_ia32_vplzcntd_512_mask, "V16iV16iV16iUs", "", "avx512cd")  TARGET_BUILTIN(__builtin_ia32_vplzcntq_512_mask, "V8LLiV8LLiV8LLiUc", "", "avx512cd") +TARGET_BUILTIN(__builtin_ia32_vpopcntd_512, "V16iV16i", "", "avx512vpopcntdq") +TARGET_BUILTIN(__builtin_ia32_vpopcntq_512, "V8LLiV8LLi", "", "avx512vpopcntdq") +  TARGET_BUILTIN(__builtin_ia32_vpermi2varhi128_mask, "V8sV8sV8sV8sUc", "", "avx512vl,avx512bw")  TARGET_BUILTIN(__builtin_ia32_vpermi2varhi256_mask, "V16sV16sV16sV16sUs", "", "avx512vl,avx512bw")  TARGET_BUILTIN(__builtin_ia32_vpermt2varhi128_mask, "V8sV8sV8sV8sUc", "", "avx512vl,avx512bw") diff --git a/include/clang/Basic/DiagnosticOptions.def b/include/clang/Basic/DiagnosticOptions.def index 0ab6724ed9ef..2467b24fd909 100644 --- a/include/clang/Basic/DiagnosticOptions.def +++ b/include/clang/Basic/DiagnosticOptions.def @@ -87,6 +87,8 @@ VALUE_DIAGOPT(TemplateBacktraceLimit, 32, DefaultTemplateBacktraceLimit)  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. diff --git a/include/clang/Basic/DiagnosticOptions.h b/include/clang/Basic/DiagnosticOptions.h index c9b0c5def992..c195003de5c4 100644 --- a/include/clang/Basic/DiagnosticOptions.h +++ b/include/clang/Basic/DiagnosticOptions.h @@ -63,11 +63,15 @@ public:    enum TextDiagnosticFormat { Clang, MSVC, Vi };    // Default values. -  enum { DefaultTabStop = 8, MaxTabStop = 100, +  enum { +    DefaultTabStop = 8, +    MaxTabStop = 100,      DefaultMacroBacktraceLimit = 6,      DefaultTemplateBacktraceLimit = 10,      DefaultConstexprBacktraceLimit = 10, -    DefaultSpellCheckingLimit = 50 }; +    DefaultSpellCheckingLimit = 50, +    DefaultSnippetLineLimit = 1, +  };    // Define simple diagnostic options (with no accessors).  #define DIAGOPT(Name, Bits, Default) unsigned Name : Bits; diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index 463d057d8fd0..4934bcfa3890 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -537,10 +537,10 @@ def err_maybe_falloff_nonvoid_block : Error<  def err_falloff_nonvoid_block : Error<    "control reaches end of non-void block">;  def warn_maybe_falloff_nonvoid_coroutine : Warning< -  "control may reach end of non-void coroutine">, +  "control may reach end of coroutine; which is undefined behavior because the promise type %0 does not declare 'return_void()'">,    InGroup<ReturnType>;  def warn_falloff_nonvoid_coroutine : Warning< -  "control reaches end of non-void coroutine">, +  "control reaches end of coroutine; which is undefined behavior because the promise type %0 does not declare 'return_void()'">,    InGroup<ReturnType>;  def warn_suggest_noreturn_function : Warning<    "%select{function|method}0 %1 could be declared with attribute 'noreturn'">, @@ -1554,11 +1554,9 @@ def note_ivar_decl : Note<"instance variable is declared here">;  def note_bitfield_decl : Note<"bit-field is declared here">;  def note_implicit_param_decl : Note<"%0 is an implicit parameter">;  def note_member_synthesized_at : Note< -  "implicit %select{default constructor|copy constructor|move constructor|copy " -  "assignment operator|move assignment operator|destructor}0 for %1 first " -  "required here">; -def note_inhctor_synthesized_at : Note< -  "inherited constructor for %0 first required here">; +  "in implicit %select{default constructor|copy constructor|move constructor|" +  "copy assignment operator|move assignment operator|destructor}0 for %1 " +  "first required here">;  def err_missing_default_ctor : Error<    "%select{constructor for %1 must explicitly initialize the|"    "implicit default constructor for %1 must explicitly initialize the|" @@ -2769,6 +2767,7 @@ def warn_attribute_wrong_decl_type : Warning<    "|types and namespaces"    "|Objective-C interfaces"    "|methods and properties" +  "|functions, methods, and properties"    "|struct or union"    "|struct, union or class"    "|types" @@ -2883,6 +2882,10 @@ def warn_partial_message : Warning<"%0 is partial: %1">,  def warn_partial_fwdclass_message : Warning<      "%0 may be partial because the receiver type is unknown">,      InGroup<UnguardedAvailability>, DefaultIgnore; +def warn_at_available_unchecked_use : Warning< +  "%select{@available|__builtin_available}0 does not guard availability here; " +  "use if (%select{@available|__builtin_available}0) instead">, +  InGroup<DiagGroup<"unsupported-availability-guard">>;  // Thread Safety Attributes  def warn_invalid_capability_name : Warning< @@ -6298,6 +6301,8 @@ def warn_ambiguous_suitable_delete_function_found : Warning<    InGroup<DiagGroup<"ambiguous-delete">>;  def note_member_declared_here : Note<    "member %0 declared here">; +def note_member_first_declared_here : Note< +  "member %0 first declared here">;  def err_decrement_bool : Error<"cannot decrement expression of type bool">;  def warn_increment_bool : Warning<    "incrementing expression of type bool is deprecated and " @@ -8009,10 +8014,13 @@ def err_block_on_nonlocal : Error<  def err_block_on_vm : Error<    "__block attribute not allowed on declaration with a variably modified type">; -def err_shufflevector_non_vector : Error< -  "first two arguments to __builtin_shufflevector must be vectors">; -def err_shufflevector_incompatible_vector : Error< -  "first two arguments to __builtin_shufflevector must have the same type">; +def err_vec_builtin_non_vector : Error< + "first two arguments to %0 must be vectors">; +def err_vec_builtin_incompatible_vector : Error< +  "first two arguments to %0 must have the same type">; +def err_vsx_builtin_nonconstant_argument : Error< +  "argument %0 to %1 must be a 2-bit unsigned literal (i.e. 0, 1, 2 or 3)">; +  def err_shufflevector_nonconstant_argument : Error<    "index for __builtin_shufflevector must be a constant integer">;  def err_shufflevector_argument_too_large : Error< @@ -8899,8 +8907,6 @@ def note_equivalent_internal_linkage_decl : Note<  def note_redefinition_modules_same_file : Note<  	"'%0' included multiple times, additional include site in header from module '%1'">; -def note_redefinition_modules_same_file_modulemap : Note< -	"consider adding '%0' as part of '%1' definition">;  def note_redefinition_include_same_file : Note<  	"'%0' included multiple times, additional include site here">;  } @@ -8944,8 +8950,10 @@ def err_coroutine_promise_type_incomplete : Error<  def err_coroutine_type_missing_specialization : Error<    "this function cannot be a coroutine: missing definition of "    "specialization %q0">; -def err_coroutine_promise_return_ill_formed : Error< -  "%0 declares both 'return_value' and 'return_void'">; +def err_coroutine_promise_incompatible_return_functions : Error< +  "the coroutine promise type %0 declares both 'return_value' and 'return_void'">; +def err_coroutine_promise_requires_return_function : Error< +  "the coroutine promise type %0 must declare either 'return_value' or 'return_void'">;  def note_coroutine_promise_implicit_await_transform_required_here : Note<    "call to 'await_transform' implicitly required by 'co_await' here">;  def note_coroutine_promise_suspend_implicitly_required : Note< @@ -8958,11 +8966,19 @@ def warn_coroutine_promise_unhandled_exception_required_with_exceptions : Warnin    InGroup<CoroutineMissingUnhandledException>;  def err_coroutine_promise_get_return_object_on_allocation_failure : Error<    "%0: 'get_return_object_on_allocation_failure()' must be a static member function">; +def err_seh_in_a_coroutine_with_cxx_exceptions : Error< +  "cannot use SEH '__try' in a coroutine when C++ exceptions are enabled">;  def err_coroutine_promise_new_requires_nothrow : Error<    "%0 is required to have a non-throwing noexcept specification when the promise "     "type declares 'get_return_object_on_allocation_failure()'">;  def note_coroutine_promise_call_implicitly_required : Note<    "call to %0 implicitly required by coroutine function here">; +def err_await_suspend_invalid_return_type : Error< +  "the return type of 'await_suspend' is required to be 'void' or 'bool' (have %0)" +>; +def note_await_ready_no_bool_conversion : Note< +  "the return type of 'await_ready' is required to be contextually convertible to 'bool'" +>;  }  let CategoryName = "Documentation Issue" in { diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h index 6960ea690b91..eda802934006 100644 --- a/include/clang/Basic/SourceManager.h +++ b/include/clang/Basic/SourceManager.h @@ -1399,10 +1399,9 @@ public:    /// specified by Loc.    ///    /// If FilenameID is -1, it is considered to be unspecified. -  void AddLineNote(SourceLocation Loc, unsigned LineNo, int FilenameID);    void AddLineNote(SourceLocation Loc, unsigned LineNo, int FilenameID,                     bool IsFileEntry, bool IsFileExit, -                   bool IsSystemHeader, bool IsExternCHeader); +                   SrcMgr::CharacteristicKind FileKind);    /// \brief Determine if the source manager has a line table.    bool hasLineTable() const { return LineTable != nullptr; } diff --git a/include/clang/Basic/SourceManagerInternals.h b/include/clang/Basic/SourceManagerInternals.h index e65c97b0031d..9403dea8889c 100644 --- a/include/clang/Basic/SourceManagerInternals.h +++ b/include/clang/Basic/SourceManagerInternals.h @@ -102,8 +102,6 @@ public:    unsigned getNumFilenames() const { return FilenamesByID.size(); }    void AddLineNote(FileID FID, unsigned Offset, -                   unsigned LineNo, int FilenameID); -  void AddLineNote(FileID FID, unsigned Offset,                     unsigned LineNo, int FilenameID,                     unsigned EntryExit, SrcMgr::CharacteristicKind FileKind); diff --git a/include/clang/Basic/TemplateKinds.h b/include/clang/Basic/TemplateKinds.h index aed287b46228..ac99ad185f33 100644 --- a/include/clang/Basic/TemplateKinds.h +++ b/include/clang/Basic/TemplateKinds.h @@ -26,13 +26,21 @@ enum TemplateNameKind {    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 C++0x template alias. +  /// 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. Whether the -  /// template name is assumed to refer to a type template or a +  /// 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 diff --git a/include/clang/Basic/XRayLists.h b/include/clang/Basic/XRayLists.h index fe538289c3a6..8cfea70e280a 100644 --- a/include/clang/Basic/XRayLists.h +++ b/include/clang/Basic/XRayLists.h @@ -37,6 +37,7 @@ public:      NONE,      ALWAYS,      NEVER, +    ALWAYS_ARG1,    };    ImbueAttribute shouldImbueFunction(StringRef FunctionName) const;  | 
