Module:ClangDiags/DiagsLongData2: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
No edit summary
Line 1: Line 1:
local a="regex2";
local a="";
local b="regex1";
local b="commit";
local c="title";
local c="prefix";
local d="prefix";
local d="type";
local e="category";
local e="message";
local f="type";
local f="regex1";
local g="regex3";
local g="regex2";
local h="message";
local h="regex3";
local i="commit";
local i="category";
local j="(?:warning|error|fatal error)\\: ";
local j="title";
local k="warning: ";
local k="source";
local l="Warning";
local l="error: ";
local m="maingroup";
local m="Error";
local n="groups";
local n="(?:error|fatal error)\\: ";
local o="Semantic Issue";
local o="Semantic Issue";
local p="";
local p="clang/lib/Sema/SemaDecl.cpp";
local q="note\\: ";
local q="clang/lib/Sema/SemaExpr.cpp";
local r="Note";
local r="clang/lib/Sema/SemaDeclCXX.cpp";
local s="note: ";
local s="Parse Issue";
local t="defaultactive";
local t="Lexical or Preprocessor Issue";
local u="c++98-compat-pedantic";
local u="clang/lib/Lex/ModuleMap.cpp";
local v="CL4";
local v="clang/lib/Sema/SemaDeclAttr.cpp";
local w="c++98-compat";
local w="Update tablegen diagnostic files to be in sync with the def files.";
local x="all";
local x="5a8987ca5113";
local y="Parse Issue";
local y="clang/lib/Sema/SemaChecking.cpp";
local z="ignored-attributes";
local z="b1c4d5507fad";
local A="most";
local A="The basic representation of diagnostics information in tablegen format, plus (uncommented and incomp...";
local B="c++11-compat-pedantic";
local B="clang/lib/Sema/SemaExprCXX.cpp";
local C="Lexical or Preprocessor Issue";
local C="clang/lib/Parse/ParseDecl.cpp";
local D="c++14-compat-pedantic";
local D="Modules Issue";
local E="ignored-pragmas";
local E="clang/lib/Sema/SemaStmt.cpp";
local F="c++11-compat";
local F="clang/lib/Sema/SemaType.cpp";
local G="c++17-compat-pedantic";
local G="clang/lib/Sema/DeclSpec.cpp";
local H="attributes";
local H="Fatal";
local I=" \\[(?:\\-Werror,)?\\-Wignored\\-attributes[^\\]]*\\]";
local I="fatal error: ";
local J="c++0x-compat";
local J="fatal error\\: ";
local K="pragmas";
local K="clang/lib/Sema/SemaTemplate.cpp";
local L="The basic representation of diagnostics information in tablegen format, plus (uncommented and incomp...";
local L="clang/lib/Sema/SemaInit.cpp";
local M="b1c4d5507fad";
local M="95f50964fbf5";
local N="95f50964fbf5";
local N="Implement P2361 Unevaluated string literals";
local O="Implement P2361 Unevaluated string literals";
local O="clang/lib/Sema/SemaExprObjC.cpp";
local P="(?: \\[(?:\\-Werror)?[^\\]]*\\])?";
local P="clang/lib/AST/ODRDiagsEmitter.cpp";
local Q=" \\[(?:\\-Werror,)?\\-Wc\\+\\+98\\-compat[^\\]]*\\]";
local Q="clang/lib/Parse/Parser.cpp";
local R="format";
local R="clang/lib/Parse/ParseDeclCXX.cpp";
local S="c++14-compat";
local S="Lambda Issue";
local T="OpenMP Issue";
local T="931fcd3ba011";
local U="pre-c++20-compat";
local U="[WebAssembly] Improve clang diagnostics for wasm attributes";
local V="conversion";
local V="clang/lib/Parse/ParseExprCXX.cpp";
local W="non-gcc";
local W="clang/lib/Lex/LiteralSupport.cpp";
local X="deprecated";
local X="clang/lib/Sema/SemaModule.cpp";
local Y=" \\[(?:\\-Werror,)?\\-Wignored\\-pragmas[^\\]]*\\]";
local Y="Introduce -Wreserved-identifier";
local Z="documentation";
local Z="b83b23275b74";
local ab="c++1z-compat";
local ab="A has different definitions in different modules; first difference is ... found ...";
local bb="c++17-compat";
local bb="clang/lib/Serialization/ASTReader.cpp";
local cb="Value Conversion Issue";
local cb="clang/lib/Sema/SemaCXXScopeSpec.cpp";
local db="5a8987ca5113";
local db="clang/lib/Frontend/CompilerInstance.cpp";
local eb="Update tablegen diagnostic files to be in sync with the def files.";
local eb="clang/lib/Sema/SemaCoroutine.cpp";
local fb="Deprecations";
local fb="clang/lib/Sema/SemaExprMember.cpp";
local gb="openmp-clauses";
local gb="f881267db9a9";
local hb="c++20-compat-pedantic";
local hb="clang/lib/Sema/SemaDeclObjC.cpp";
local ib="c++2a-compat-pedantic";
local ib="Mass-rename the handful of error_* diagnostics to err_*.";
local jb="odr";
local jb="AST Deserialization Issue";
local kb="7c11da0cfd33";
local kb="718292f260bf";
local lb="thread-safety-analysis";
local lb="clang/lib/Sema/JumpDiagnostics.cpp";
local mb="[clang] New __attribute__((__clang_arm_mve_alias)).";
local mb="Introduce basic support for parsing module map files.";
local nb="[clang] Implement objc_non_runtime_protocol to remove protocol metadata";
local nb="5e77d76c953d";
local ob="14f6bfcb52e7";
local ob="Basic support for Microsoft property declarations and";
local pb="option-ignored";
local pb="clang/lib/Sema/SemaPseudoObject.cpp";
local qb="unknown-pragmas";
local qb="clang/lib/Frontend/FrontendAction.cpp";
local rb="pre-c++17-compat";
local rb="clang/lib/Lex/PPDirectives.cpp";
local sb="Format String Issue";
local sb="Inline Assembly Issue";
local tb="openmp";
local tb="Coroutines Issue";
local ub="c++20-compat";
local ub="Implement Attribute Target MultiVersioning";
local vb="[WebAssembly] Improve clang diagnostics for wasm attributes";
local vb="[SYCL] Add sycl_kernel attribute for accelerated code outlining";
local wb="931fcd3ba011";
local wb="ec273d3e3a8c";
local xb="pre-c++20-compat-pedantic";
local xb="281d20b601c8";
local yb="thread-safety";
local yb="c094e7dc4b3f";
local zb="c++98-c++11-c++14-c++17-compat-pedantic";
local zb="Add a warning for not packing non-POD members in packed structs";
local Ab="Documentation Issue";
local Ab="clang/lib/Sema/SemaOverload.cpp";
local Bb="error: ";
local Bb="clang/lib/Frontend/CompilerInvocation.cpp";
local Cb="pre-c++23-compat";
local Cb="f60dc3caa673";
local Db="c++98-c++11-c++14-c++17-compat";
local Db="clang/lib/Parse/ParseStmtAsm.cpp";
local Eb=" \\[(?:\\-Werror,)?\\-Wpre\\-c\\+\\+20\\-compat[^\\]]*\\]";
local Eb="[C++20][Modules] Adjust handling of exports of namespaces and using-decls.";
local Fb=" \\[(?:\\-Werror,)?\\-Wformat[^\\]]*\\]";
local Fb="clang/lib/Parse/ParseExpr.cpp";
local Gb="swift-name-attribute";
local Gb="clang/lib/Sema/SemaObjCProperty.cpp";
local Hb="Reland [clang] Check unsupported types in expressions";
local Hb="clang/lib/Sema/SemaExceptionSpec.cpp";
local Ib="3dbcea8b957a";
local Ib="734410916a6d";
local Jb="invalid-command-line-argument";
local Jb="Improve diagnostics for ill-formed literal operator declarations.";
local Kb="unused-command-line-argument";
local Kb="clang/lib/Sema/AnalysisBasedWarnings.cpp";
local Lb="pre-c2x-compat";
local Lb="Parse inferred submodules in module maps, track their contents in";
local Mb="61d065e21ff3";
local Mb="c28aee6a51a9";
local Nb="Let clang atomic builtins fetch add/sub support floating point types";
local Ob="c++2a-compat";
local Pb="1228d42ddab8";
local Qb="[OpenMP][Part 2] Use reusable OpenMP context/traits handling";
local Rb="Unused Entity Issue";
local Sb="unused";
local Tb="pre-c++14-compat";
local Ub="extra";
local Vb="pre-c++17-compat-pedantic";
local Wb="availability";
local Xb=" \\[(?:\\-Werror,)?\\-Wdocumentation[^\\]]*\\]";
local Yb="Downgradable Error";
local Zb="c++98-c++11-c++14-compat-pedantic";
local ac="(?:error|warning|fatal error)\\: ";
local bc=" \\[(?:\\-Werror,)?\\-Wopenmp\\-clauses[^\\]]*\\]";
local cc="unused-value";
local dc="remark: ";
local ec="Remark";
local fc=" \\[(?:\\-Werror,)?\\-Wodr[^\\]]*\\]";
local gc=" \\[(?:\\-Werror,)?\\-Wthread\\-safety\\-analysis[^\\]]*\\]";
local hc="remark\\: ";
local ic=" \\[(?:\\-Werror,)?\\-Wpre\\-c\\+\\+17\\-compat[^\\]]*\\]";
local jc=" \\[(?:\\-Werror,)?\\-Wunknown\\-pragmas[^\\]]*\\]";
local kc="[ASTImporter] Make ODR error handling configurable";
local lc="60768cd89672";
local mc="uninitialized";
local nc="c++98-c++11-c++14-compat";
local oc="consumed";
local pc="return-type";
local qc="Nullability Issue";
local rc="tautological-compare";
local sc="source-uses-openmp";
local tc="5d164bc5e005";
local uc="Implement -Wc++98-compat warnings for the parser.";
local vc="gcc-compat";
local wc=" \\[(?:\\-Werror,)?\\-Woption\\-ignored[^\\]]*\\]";
local xc="dangling";
local yc="pre-c++23-compat-pedantic";
local zc="parentheses";
local Ac="unicode";
local Bc="Lambda Issue";
local Cc="overriding-method-mismatch";
local Dc="AMDGPU: Teach toolchain to link rocm device libs";
local Ec="4593e4131aff";
local Fc=" \\[(?:\\-Werror,)?\\-Wpre\\-c\\+\\+23\\-compat[^\\]]*\\]";
local Gc="0bf8a492fd75";
local Hc="-Wc++98-compat and -Wc++98-compat-pedantic warnings for Sema, part 1.";
local Ic="0687578728ea";
local Jc=" \\[(?:\\-Werror,)?\\-Wswift\\-name\\-attribute[^\\]]*\\]";
local Kc="AST Deserialization Issue";
local Lc="b83b23275b74";
local Mc="Introduce -Wreserved-identifier";
local Nc="[C++20][Modules][HU 2/5] Support searching Header Units in user or system search paths.";
local Oc="objc-designated-initializers";
local Pc="c++98-c++11-compat-pedantic";
local Qc="pre-c++14-compat-pedantic";
local Rc="(.*?)";
local Sc="objc-method-access";
local Tc="Backend Issue";
local Uc="%0";
local Vc="deprecated-declarations";
local Wc=" \\[(?:\\-Werror,)?\\-Wpre\\-c2x\\-compat[^\\]]*\\]";
local Xc="pre-c2x-compat-pedantic";
local Yc="thread-safety-attributes";
local Zc="[C++20][Modules][3/8] Initial handling for module partitions.";
local ad="c++98-c++11-compat";
local bd=" \\[(?:\\-Werror,)?\\-Wpre\\-c\\+\\+14\\-compat[^\\]]*\\]";
local cd="Modules Issue";
local dd="69350e569dc4";
local ed=" \\[(?:\\-Werror,)?\\-Winvalid\\-command\\-line\\-argument[^\\]]*\\]";
local fd="avr-rtlib-linking-quirks";
local gd="array-bounds";
local hd="cuda-compat";
local id=" \\[(?:\\-Werror,)?\\-Wunused\\-command\\-line\\-argument[^\\]]*\\]";
local jd=" \\[(?:\\-Werror,)?\\-Wavailability[^\\]]*\\]";
local kd="empty-body";
local ld="nullability";
local md="fortify-source";
local nd="deprecated-volatile";
local od="[C++20][Modules] Adjust handling of exports of namespaces and using-decls.";
local pd="f60dc3caa673";
local qd=" \\[(?:\\-Werror,)?\\-Wc\\+\\+20\\-compat[^\\]]*\\]";
local rd="[OPENMP]Fix PR49366: crash on VLAs in task untied regions.";
local sd="(?:error|fatal error)\\: ";
local td=" \\[(?:\\-Werror,)?\\-Wc\\+\\+98\\-compat\\-pedantic[^\\]]*\\]";
local ud="Add most of the boilerplate support for scanf format string checking.  This includes";
local vd="0208793e4101";
local wd="f9c3310d32c6";
local xd="ignored-qualifiers";
local yd="Add a warning for not packing non-POD members in packed structs";
local zd="called-once-parameter";
local Ad="pedantic";
local Bd="ec273d3e3a8c";
local Cd="92f241f18812";
local Dd="function-multiversion";
local Ed="Properly compute triviality for explicitly-defaulted or deleted special members.";
local Fd=" \\[(?:\\-Werror,)?\\-Wc\\+\\+11\\-compat[^\\]]*\\]";
local Gd="Error";
local Hd="absolute-value";
local Id="but in ... found ...";
local Jd="branch-protection";
local Kd="trigraphs";
local Ld="dangling-field";
local Md="Improve static checks for sprintf and __builtin___sprintf_chk";
local Nd=" \\[(?:\\-Werror,)?\\-Wsource\\-uses\\-openmp[^\\]]*\\]";


return {
return {
["note_function_template_spec_matched"]={
["err_friend_is_member"]={
[c]="function template A matches specialization B",
[j]="friends cannot be members of the declaring class",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="function template %q0 matches specialization %1",
[e]="friends cannot be members of the declaring class",
[b]=q,
[f]=n,
[a]="function template (.*?) matches specialization (.*?)",
[g]="friends cannot be members of the declaring class",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"3a923c2d3799",1253834087,"WIP implementation of explicit function template specialization. This"}
[b]={"07e91c04ba33",1249524943,"First pass at friend semantics."},
[k]={{r,15055,"NamedDecl *Sema::ActOnFriendFunctionDecl(Scope *S, Declarator &D, MultiTemplateParamsArg TemplateParams) {\n  if ((SS.isInvalid() || !SS.isSet()) && (FunctionContainingLocalClass = cast<CXXRecordDecl>(CurContext)->isLocalClass())) {\n  } else if (SS.isInvalid() || !SS.isSet()) {\n  } else if (!SS.getScopeRep()->isDependent()) {\n    // C++ [class.friend]p1: A friend of a class is a function or\n    //  class that is not a member of the class . . .\n    if (DC->Equals(CurContext))\n      Diag(DS.getFriendSpecLoc(), getLangOpts().CPlusPlus11 ? diag::warn_cxx98_compat_friend_is_member : diag::err_friend_is_member);"}}
},
},
["note_function_to_function_call"]={
["err_friend_not_first_in_declaration"]={
[c]="suffix with parentheses to turn this into a function call",
[j]="\'friend\' must appear first in a non-function declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="suffix with parentheses to turn this into a function call",
[e]="\'friend\' must appear first in a non-function declaration",
[b]=q,
[f]=n,
[a]="suffix with parentheses to turn this into a function call",
[g]="\'friend\' must appear first in a non\\-function declaration",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"3bb8b56a5d90",1393382166,"PR16074, implement warnings to catch pointer to boolean true and pointer to"}
[b]={"a31a89a38e8a",1348104660,"Per C++11 [class.friend]p3, the \'friend\' keyword must appear first in a"},
[k]={{r,14683,"/// Perform semantic analysis of the given friend type declaration.\n///\n/// \\returns A friend declaration that.\nFriendDecl *Sema::CheckFriendTypeDecl(SourceLocation LocStart, SourceLocation FriendLoc, TypeSourceInfo *TSInfo) {\n  // C++03 [class.friend]p2:\n  //  An elaborated-type-specifier shall be used in a friend declaration\n  //  for a class.*\n  //\n  //  * The class-key of the elaborated-type-specifier is required.\n  if (!CodeSynthesisContexts.empty()) {\n  } else {\n    // C++11 [class.friend]p3:\n    //  A friend declaration that does not declare a function shall have one\n    //  of the following forms:\n    //    friend elaborated-type-specifier ;\n    //    friend simple-type-specifier ;\n    //    friend typename-specifier ;\n    if (getLangOpts().CPlusPlus11 && LocStart != FriendLoc)\n      Diag(FriendLoc, diag::err_friend_not_first_in_declaration) << T;"}}
},
},
["note_function_warning_silence"]={
["err_func_def_incomplete_result"]={
[c]="prefix with the address-of operator to silence this warning",
[j]="incomplete result type A in function definition",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="prefix with the address-of operator to silence this warning",
[e]="incomplete result type %0 in function definition",
[b]=q,
[f]=n,
[a]="prefix with the address\\-of operator to silence this warning",
[g]="incomplete result type (.*?) in function definition",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"3bb8b56a5d90",1393382166,"PR16074, implement warnings to catch pointer to boolean true and pointer to"}
[b]={x,1237025389,w},
[k]={{p,13395,"Decl *Sema::ActOnStartOfFunctionDef(Scope *FnBodyScope, Decl *D, SkipBodyInfo *SkipBody, FnBodyKind BodyKind) {\n  if (!ResultType->isDependentType() && !ResultType->isVoidType() && !FD->isInvalidDecl() && BodyKind != FnBodyKind::Delete && (RequireCompleteType(FD->getLocation(), ResultType, diag::err_func_def_incomplete_result) || RequireNonAbstractType(FD->getLocation(), FD->getReturnType(), diag::err_abstract_type_in_decl, AbstractReturnType)))"},{hb,317,"/// ActOnStartOfObjCMethodDef - This routine sets up parameters; invisible\n/// and user declared, in the method definition\'s AST.\nvoid Sema::ActOnStartOfObjCMethodDef(Scope *FnBodyScope, Decl *D) {\n  if (!ResultType->isDependentType() && !ResultType->isVoidType() && !MDecl->isInvalidDecl() && RequireCompleteType(MDecl->getLocation(), ResultType, diag::err_func_def_incomplete_result))"}}
},
},
["note_getter_unavailable"]={
["err_func_def_no_params"]={
[c]="or because setter is declared here, but no getter method A is found",
[j]="function definition does not declare parameters",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="or because setter is declared here, but no getter method %0 is found",
[e]="function definition does not declare parameters",
[b]=q,
[f]=n,
[a]="or because setter is declared here, but no getter method (.*?) is found",
[g]="function definition does not declare parameters",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"c5d61df0a96e",1266604230,"Issue extended diagnostic when property dot-syntax is used and "}
[b]={z,1236199783,A},
[k]={{R,2551,"/// ParseCXXClassMemberDeclaration - Parse a C++ class member declaration.\n///\n///      member-declaration:\n///        decl-specifier-seq[opt] member-declarator-list[opt] \';\'\n///        function-definition \';\'[opt]\n///        ::[opt] nested-name-specifier template[opt] unqualified-id \';\'[TODO]\n///        using-declaration                                            [TODO]\n/// [C++0x] static_assert-declaration\n///        template-declaration\n/// [GNU]  \'__extension__\' member-declaration\n///\n///      member-declarator-list:\n///        member-declarator\n///        member-declarator-list \',\' member-declarator\n///\n///      member-declarator:\n///        declarator virt-specifier-seq[opt] pure-specifier[opt]\n/// [C++2a] declarator requires-clause\n///        declarator constant-initializer[opt]\n/// [C++11] declarator brace-or-equal-initializer[opt]\n///        identifier[opt] \':\' constant-expression\n///\n///      virt-specifier-seq:\n///        virt-specifier\n///        virt-specifier-seq virt-specifier\n///\n///      virt-specifier:\n///        override\n///        final\n/// [MS]    sealed\n///\n///      pure-specifier:\n///        \'= 0\'\n///\n///      constant-initializer:\n///        \'=\' constant-expression\n///\nParser::DeclGroupPtrTy Parser::ParseCXXClassMemberDeclaration(AccessSpecifier AS, ParsedAttributes &AccessAttrs, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject *TemplateDiags) {\n  // Check for a member function definition.\n  if (BitfieldSize.isUnset()) {\n    if (DefinitionKind != FunctionDefinitionKind::Declaration) {\n      if (!DeclaratorInfo.isFunctionDeclarator()) {\n        Diag(DeclaratorInfo.getIdentifierLoc(), diag::err_func_def_no_params);"}}
},
},
["note_global_module_introducer_missing"]={
["err_func_returning_array_function"]={
[c]="add \'module;\' to the start of the file to introduce a global module fragment",
[j]="function cannot return ... type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="add \'module;\' to the start of the file to introduce a global module fragment",
[e]="function cannot return %select{array|function}0 type %1",
[b]=q,
[f]=n,
[a]="add \'module;\' to the start of the file to introduce a global module fragment",
[g]="function cannot return (?:array|function) type (.*?)",
[g]=p,
[h]=a,
[e]=cd,
[i]=o,
[i]={"d652bdd05f1c",1555229219,"[c++20] Parsing support for module-declarations, import-declarations,"}
[b]={x,1237025389,w},
[k]={{q,18412,"/// Rebuilds a call expression which yielded __unknown_anytype.\nExprResult RebuildUnknownAnyExpr::VisitCallExpr(CallExpr *E) {\n  // Verify that this is a legal result type of a function.\n  if (DestType->isArrayType() || DestType->isFunctionType()) {\n    unsigned diagID = diag::err_func_returning_array_function;"},{q,18489,"ExprResult RebuildUnknownAnyExpr::VisitObjCMessageExpr(ObjCMessageExpr *E) {\n  // Verify that this is a legal result type of a call.\n  if (DestType->isArrayType() || DestType->isFunctionType()) {\n    S.Diag(E->getExprLoc(), diag::err_func_returning_array_function) << DestType->isFunctionType() << DestType;"},{F,2551,"bool Sema::CheckFunctionReturnType(QualType T, SourceLocation Loc) {\n  if (T->isArrayType() || T->isFunctionType()) {\n    Diag(Loc, diag::err_func_returning_array_function) << T->isFunctionType() << T;"},{F,4647,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n  for (unsigned i = 0, e = D.getNumTypeObjects(); i != e; ++i) {\n    case DeclaratorChunk::Function: {\n      // C99 6.7.5.3p1: The return type may not be a function or array type.\n      // For conversion functions, we\'ll diagnose this particular error later.\n      if (!D.isInvalidType() && (T->isArrayType() || T->isFunctionType()) && (D.getName().getKind() != UnqualifiedIdKind::IK_ConversionFunctionId)) {\n        unsigned diagID = diag::err_func_returning_array_function;"}}
},
},
["note_goto_ms_asm_label"]={
["err_func_returning_qualified_void"]={
[c]="inline assembly label A declared here",
[j]="function cannot return qualified void type A [-Wqualified-void-return-type]",
[d]=s,
[c]="warning: ",
[f]=r,
[d]="Warning",
[h]="inline assembly label %0 declared here",
["groups"]={"qualified-void-return-type"},
[b]=q,
["maingroup"]="qualified-void-return-type",
[a]="inline assembly label (.*?) declared here",
[e]="function cannot return qualified void type %0",
[g]=p,
[f]="(?:warning|error|fatal error)\\: ",
[e]=o,
[g]="function cannot return qualified void type (.*?)",
[i]={"31097581aad8",1411352514,"ms-inline-asm: Scope inline asm labels to functions"}
[h]=" \\[(?:\\-Werror,)?\\-Wqualified\\-void\\-return\\-type[^\\]]*\\]",
[i]=o,
[b]={"c116802ef387",1421340353,"PR 20146"},
[k]={{F,4722,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n  for (unsigned i = 0, e = D.getNumTypeObjects(); i != e; ++i) {\n    case DeclaratorChunk::Function: {\n      // cv-qualifiers on return types are pointless except when the type is a\n      // class type in C++.\n      if ((T.getCVRQualifiers() || T->isAtomicType()) && !(S.getLangOpts().CPlusPlus && (T->isDependentType() || T->isRecordType()))) {\n        if (T->isVoidType() && !S.getLangOpts().CPlusPlus && D.getFunctionDefinitionKind() == FunctionDefinitionKind::Definition) {\n          S.Diag(DeclType.Loc, diag::err_func_returning_qualified_void) << T;"}}
},
},
["note_guarded_by_declared_here"]={
["err_function_attribute_mismatch"]={
[c]="guarded_by declared here",
[j]="function declared with A attribute was previously declared without the B attribute",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="guarded_by declared here",
[e]="function declared with %0 attribute was previously declared without the %0 attribute",
[b]=q,
[f]=n,
[a]="guarded_by declared here",
[g]="function declared with (.*?) attribute was previously declared without the (.*?) attribute",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"eb0ea5f40a48",1408052415,"Thread safety analysis: add -Wthread-safety-verbose flag, which adds additional notes that are helpf..."}
[b]={"318a6eae06dd",1493294460,"[X86] Support of no_caller_saved_registers attribute"},
[k]={{p,3454,"/// MergeFunctionDecl - We just parsed a function \'New\' from\n/// declarator D which has the same name and scope as a previous\n/// declaration \'Old\'.  Figure out how to resolve this situation,\n/// merging decls or emitting diagnostics as appropriate.\n///\n/// In C++, New and Old must be declarations that are not\n/// overloaded. Use IsOverload to determine whether New and Old are\n/// overloaded, and to select the Old declaration that New should be\n/// merged with.\n///\n/// Returns true if there was an error, false otherwise.\nbool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD, Scope *S, bool MergeTypeWithOld, bool NewDeclIsDefn) {\n  // Merge ns_returns_retained attribute.\n  if (OldTypeInfo.getProducesResult() != NewTypeInfo.getProducesResult()) {\n    if (NewTypeInfo.getProducesResult()) {\n      Diag(New->getLocation(), diag::err_function_attribute_mismatch) << \"\'ns_returns_retained\'\";"},{p,3466,"/// MergeFunctionDecl - We just parsed a function \'New\' from\n/// declarator D which has the same name and scope as a previous\n/// declaration \'Old\'.  Figure out how to resolve this situation,\n/// merging decls or emitting diagnostics as appropriate.\n///\n/// In C++, New and Old must be declarations that are not\n/// overloaded. Use IsOverload to determine whether New and Old are\n/// overloaded, and to select the Old declaration that New should be\n/// merged with.\n///\n/// Returns true if there was an error, false otherwise.\nbool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD, Scope *S, bool MergeTypeWithOld, bool NewDeclIsDefn) {\n  if (OldTypeInfo.getNoCallerSavedRegs() != NewTypeInfo.getNoCallerSavedRegs()) {\n    if (NewTypeInfo.getNoCallerSavedRegs()) {\n      Diag(New->getLocation(), diag::err_function_attribute_mismatch) << Attr;"}}
},
},
["note_header_guard"]={
["err_function_decl_cmse_ns_call"]={
[c]="A is defined here; did you mean B?",
[j]="functions may not be declared with \'cmse_nonsecure_call\' attribute",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is defined here; did you mean %1?",
[e]="functions may not be declared with \'cmse_nonsecure_call\' attribute",
[b]=q,
[f]=n,
[a]="(.*?) is defined here; did you mean (.*?)\\?",
[g]="functions may not be declared with \'cmse_nonsecure_call\' attribute",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={"33a4b3db0de5",1371072057,"Introducing -Wheader-guard, a warning that checks header guards actually work"}
[b]={T,1576908663,U},
[k]={{p,8490,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n  if (R.getCanonicalType()->castAs<FunctionType>()->getCmseNSCallAttr())\n    Diag(D.getIdentifierLoc(), diag::err_function_decl_cmse_ns_call);"}}
},
},
["note_hidden_overloaded_virtual_declared_here"]={
["err_function_declared_typedef"]={
[c]="hidden overloaded virtual function A declared here...",
[j]="function definition declared \'typedef\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="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",
[e]="function definition declared \'typedef\'",
[b]=q,
[f]=n,
[a]="hidden overloaded virtual function (.*?) declared here(?:|\\: different classes(?: \\((.*?) vs (.*?)\\)|)|\\: different number of parameters \\((.*?) vs (.*?)\\)|\\: type mismatch at (.*?) parameter(?: \\((.*?) vs (.*?)\\)|)|\\: different return type(?: \\((.*?) vs (.*?)\\)|)|\\: different qualifiers \\((.*?) vs (.*?)\\)|\\: different exception specifications)",
[g]="function definition declared \'typedef\'",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"7272d9cf36cd",1296756075,"Implement -Woverloaded-virtual."}
[b]={z,1236199783,A},
[k]={{C,1980,"/// ParseDeclGroup - Having concluded that this is either a function\n/// definition or a group of object declarations, actually parse the\n/// result.\nParser::DeclGroupPtrTy Parser::ParseDeclGroup(ParsingDeclSpec &DS, DeclaratorContext Context, ParsedAttributes &Attrs, SourceLocation *DeclEnd, ForRangeInit *FRI) {\n  if (D.isFunctionDeclarator()) {\n    // Look at the next token to make sure that this isn\'t a function\n    // declaration.  We have to check this because __attribute__ might be the\n    // start of a function definition in GCC-extended K&R C.\n    if (!isDeclarationAfterDeclarator()) {\n      // Function definitions are only allowed at file scope and in C++ classes.\n      // The C++ inline method definition case is handled elsewhere, so we only\n      // need to handle the file scope definition case.\n      if (Context == DeclaratorContext::File) {\n        if (isStartOfFunctionDefinition(D)) {\n          if (DS.getStorageClassSpec() == DeclSpec::SCS_typedef) {\n            Diag(Tok, diag::err_function_declared_typedef);"},{R,2562,"/// ParseCXXClassMemberDeclaration - Parse a C++ class member declaration.\n///\n///      member-declaration:\n///        decl-specifier-seq[opt] member-declarator-list[opt] \';\'\n///        function-definition \';\'[opt]\n///        ::[opt] nested-name-specifier template[opt] unqualified-id \';\'[TODO]\n///        using-declaration                                            [TODO]\n/// [C++0x] static_assert-declaration\n///        template-declaration\n/// [GNU]  \'__extension__\' member-declaration\n///\n///      member-declarator-list:\n///        member-declarator\n///        member-declarator-list \',\' member-declarator\n///\n///      member-declarator:\n///        declarator virt-specifier-seq[opt] pure-specifier[opt]\n/// [C++2a] declarator requires-clause\n///        declarator constant-initializer[opt]\n/// [C++11] declarator brace-or-equal-initializer[opt]\n///        identifier[opt] \':\' constant-expression\n///\n///      virt-specifier-seq:\n///        virt-specifier\n///        virt-specifier-seq virt-specifier\n///\n///      virt-specifier:\n///        override\n///        final\n/// [MS]    sealed\n///\n///      pure-specifier:\n///        \'= 0\'\n///\n///      constant-initializer:\n///        \'=\' constant-expression\n///\nParser::DeclGroupPtrTy Parser::ParseCXXClassMemberDeclaration(AccessSpecifier AS, ParsedAttributes &AccessAttrs, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject *TemplateDiags) {\n  // Check for a member function definition.\n  if (BitfieldSize.isUnset()) {\n    if (DefinitionKind != FunctionDefinitionKind::Declaration) {\n      if (DS.getStorageClassSpec() == DeclSpec::SCS_typedef) {\n        Diag(DeclaratorInfo.getIdentifierLoc(), diag::err_function_declared_typedef);"},{"clang/lib/Parse/ParseTemplate.cpp",284,"/// Parse a single declaration that declares a template,\n/// template specialization, or explicit instantiation of a template.\n///\n/// \\param DeclEnd will receive the source location of the last token\n/// within this declaration.\n///\n/// \\param AS the access specifier associated with this\n/// declaration. Will be AS_none for namespace-scope declarations.\n///\n/// \\returns the new declaration.\nDecl *Parser::ParseSingleDeclarationAfterTemplate(DeclaratorContext Context, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject &DiagsFromTParams, SourceLocation &DeclEnd, ParsedAttributes &AccessAttrs, AccessSpecifier AS) {\n  if (DeclaratorInfo.isFunctionDeclarator() && isStartOfFunctionDefinition(DeclaratorInfo)) {\n    if (DS.getStorageClassSpec() == DeclSpec::SCS_typedef) {\n      Diag(DS.getStorageClassSpecLoc(), diag::err_function_declared_typedef) << FixItHint::CreateRemoval(DS.getStorageClassSpecLoc());"}}
},
},
["note_hidden_tag"]={
["err_function_definition_not_allowed"]={
[c]="type declaration hidden",
[j]="function definition is not allowed here",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="type declaration hidden",
[e]="function definition is not allowed here",
[b]=q,
[f]=n,
[a]="type declaration hidden",
[g]="function definition is not allowed here",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"6538c930503a",1255153699,"Qualified lookup through using declarations.  Diagnose a new type of ambiguity."}
[b]={"012efe22bcf4",1366128092,"Fix PR4296: Add parser detection/error recovery for nested functions, from Serve Pavlov!"},
[k]={{C,2006,"/// ParseDeclGroup - Having concluded that this is either a function\n/// definition or a group of object declarations, actually parse the\n/// result.\nParser::DeclGroupPtrTy Parser::ParseDeclGroup(ParsingDeclSpec &DS, DeclaratorContext Context, ParsedAttributes &Attrs, SourceLocation *DeclEnd, ForRangeInit *FRI) {\n if (D.isFunctionDeclarator()) {\n    // Look at the next token to make sure that this isn\'t a function\n    // declaration.  We have to check this because __attribute__ might be the\n    // start of a function definition in GCC-extended K&R C.\n    if (!isDeclarationAfterDeclarator()) {\n      // Function definitions are only allowed at file scope and in C++ classes.\n      // The C++ inline method definition case is handled elsewhere, so we only\n      // need to handle the file scope definition case.\n      if (Context == DeclaratorContext::File) {\n      } else {\n        if (Tok.is(tok::l_brace)) {\n          Diag(Tok, diag::err_function_definition_not_allowed);"},{"clang/lib/Parse/ParseTemplate.cpp",275,"/// Parse a single declaration that declares a template,\n/// template specialization, or explicit instantiation of a template.\n///\n/// \\param DeclEnd will receive the source location of the last token\n/// within this declaration.\n///\n/// \\param AS the access specifier associated with this\n/// declaration. Will be AS_none for namespace-scope declarations.\n///\n/// \\returns the new declaration.\nDecl *Parser::ParseSingleDeclarationAfterTemplate(DeclaratorContext Context, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject &DiagsFromTParams, SourceLocation &DeclEnd, ParsedAttributes &AccessAttrs, AccessSpecifier AS) {\n  if (DeclaratorInfo.isFunctionDeclarator() && isStartOfFunctionDefinition(DeclaratorInfo)) {\n    // Function definitions are only allowed at file scope and in C++ classes.\n    // The C++ inline method definition case is handled elsewhere, so we only\n    // need to handle the file scope definition case.\n    if (Context != DeclaratorContext::File) {\n      Diag(Tok, diag::err_function_definition_not_allowed);"}}
},
},
["note_hiding_object"]={
["err_function_is_not_record"]={
[c]="declaration hides type",
[j]="unexpected A in function call; perhaps remove the B?",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="declaration hides type",
[e]="unexpected %0 in function call; perhaps remove the %0?",
[b]=q,
[f]=n,
[a]="declaration hides type",
[g]="unexpected (.*?) in function call; perhaps remove the (.*?)\\?",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"6538c930503a",1255153699,"Qualified lookup through using declarationsDiagnose a new type of ambiguity."}
[b]={"638264ea2a3d",1373665382,"Provide a better diagnostic and a fixit for a \'.\' or \'->\' before the left paren"},
[k]={{Fb,1968,"/// Once the leading part of a postfix-expression is parsed, this\n/// method parses any suffixes that apply.\n///\n/// \\verbatim\n///      postfix-expression: [C99 6.5.2]\n///        primary-expression\n///        postfix-expression \'[\' expression \']\'\n///        postfix-expression \'[\' braced-init-list \']\'\n///        postfix-expression \'[\' expression-list [opt] \']\' [C++23 12.4.5]\n///        postfix-expression \'(\' argument-expression-list[opt] \')\'\n///        postfix-expression \'.\' identifier\n///        postfix-expression \'->\' identifier\n///        postfix-expression \'++\'\n///        postfix-expression \'--\'\n///        \'(\' type-name \')\' \'{\' initializer-list \'}\'\n///        \'(\' type-name \')\' \'{\' initializer-list \',\' \'}\'\n///\n///      argument-expression-list: [C99 6.5.2]\n///        argument-expression ...[opt]\n///        argument-expression-list \',\' assignment-expression ...[opt]\n/// \\endverbatim\nExprResult Parser::ParsePostfixExpressionSuffix(ExprResult LHS) {\n  while (true) {\n    case tok::period: {\n      if (getLangOpts().CPlusPlus && !LHS.isInvalid()) {\n        if (BaseType && Tok.is(tok::l_paren) && (BaseType->isFunctionType() || BaseType->isSpecificPlaceholderType(BuiltinType::BoundMember))) {\n          Diag(OpLoc, diag::err_function_is_not_record) << OpKind << Base->getSourceRange() << FixItHint::CreateRemoval(OpLoc);"}}
},
},
["note_ice_conversion_here"]={
["err_function_marked_override_not_overriding"]={
[c]="conversion to ... type A declared here",
[j]="A marked \'override\' but does not override any member functions",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="conversion to %select{integral|enumeration}0 type %1 declared here",
[e]="%0 marked \'override\' but does not override any member functions",
[b]=q,
[f]=n,
[a]="conversion to (?:integral|enumeration) type (.*?) declared here",
[g]="(.*?) marked \'override\' but does not override any member functions",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"f4c51d9d7613",1328349193,"In C++11 mode, when an integral constant expression is desired and we have a"}
[b]={"fd8355373333",1295503034,"Diagnose virtual member functions marked override but not overriding any virtual member functions."},
[k]={{r,2793,"/// CheckOverrideControl - Check C++11 override control semantics.\nvoid Sema::CheckOverrideControl(NamedDecl *D) {\n  if (MD->hasAttr<OverrideAttr>() && !HasOverriddenMethods)\n    Diag(MD->getLocation(), diag::err_function_marked_override_not_overriding) << MD->getDeclName();"}}
},
},
["note_illegal_field_declared_here"]={
["err_function_needs_feature"]={
[c]="field of illegal ... A declared here",
[j]="always_inline function A requires target feature \'B\', but would be inlined into function C that is compiled without support for \'D\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="field of illegal %select{type|pointer type}0 %1 declared here",
[e]="always_inline function %1 requires target feature \'%2\', but would be inlined into function %0 that is compiled without support for \'%2\'",
[b]=q,
[f]=n,
[a]="field of illegal (?:type|pointer type) (.*?) declared here",
[g]="always_inline function (.*?) requires target feature \'(.*?)\', but would be inlined into function (.*?) that is compiled without support for \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"efb38192b0b2",1374542616,"Error on more illegal kernel argument types for OpenCL"}
[b]={"2b2d56f059e7",1447289052,"Provide a frontend based error for always_inline functions that require"},
[k]={{"clang/lib/CodeGen/CodeGenFunction.cpp",2344,"// Emits an error if we don\'t have a valid set of target features for the\n// called function.\nvoid CodeGenFunction::checkTargetFeatures(SourceLocation Loc, const FunctionDecl *TargetDecl) {\n  if (BuiltinID) {\n  } else if (!TargetDecl->isMultiVersion() && TargetDecl->hasAttr<TargetAttr>()) {\n    if (!llvm::all_of(ReqFeatures, [&](StringRef Feature) {\n      CGM.getDiags().Report(Loc, diag::err_function_needs_feature) << FD->getDeclName() << TargetDecl->getDeclName() << MissingFeature;"},{"clang/lib/CodeGen/CodeGenFunction.cpp",2351,"// Emits an error if we don\'t have a valid set of target features for the\n// called function.\nvoid CodeGenFunction::checkTargetFeatures(SourceLocation Loc, const FunctionDecl *TargetDecl) {\n  if (BuiltinID) {\n  } else if (!TargetDecl->isMultiVersion() && TargetDecl->hasAttr<TargetAttr>()) {\n  } else if (!FD->isMultiVersion() && FD->hasAttr<TargetAttr>()) {\n    for (const auto &F : CalleeFeatureMap) {\n      if (F.getValue() && (!CallerFeatureMap.lookup(F.getKey()) || !CallerFeatureMap.find(F.getKey())->getValue()))\n        CGM.getDiags().Report(Loc, diag::err_function_needs_feature) << FD->getDeclName() << TargetDecl->getDeclName() << F.getKey();"}}
},
},
["note_immediate_function_reason"]={
["err_function_parameter_pack_without_parameter_packs"]={
[c]="A is an immediate ... because ... ...",
[j]="type A of function parameter pack does not contain any unexpanded parameter packs",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is an immediate %select{function|constructor}5 because %select{its body|the%select{| default}7 initializer of %8}6 %select{evaluates the address of %select{an immediate|a consteval}2 function %1|contains a call to %select{an immediate|a consteval}2 %select{function|constructor}4 %1 and that call is not a constant expression}3",
[e]="type %0 of function parameter pack does not contain any unexpanded parameter packs",
[b]=q,
[f]=n,
[a]="(.*?) is an immediate (?:function|constructor) because (?:its body|the(?:| default) initializer of (.*?)) (?:evaluates the address of (?:an immediate|a consteval) function (.*?)|contains a call to (?:an immediate|a consteval) (?:function|constructor) (.*?) and that call is not a constant expression)",
[g]="type (.*?) of function parameter pack does not contain any unexpanded parameter packs",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={N,1625925174,O}
[b]={"27b4c16fefde",1293144282,"Implement parsing of function parameter packs and non-type template"},
[k]={{"clang/lib/Sema/SemaTemplateInstantiate.cpp",2127,"ParmVarDecl *Sema::SubstParmVarDecl(ParmVarDecl *OldParm, const MultiLevelTemplateArgumentList &TemplateArgs, int indexAdjustment, std::optional<unsigned> NumExpansions, bool ExpectParameterPack, bool EvaluateConstraint) {\n  if (PackExpansionTypeLoc ExpansionTL = OldTL.getAs<PackExpansionTypeLoc>()) {\n    if (NewDI->getType()->containsUnexpandedParameterPack()) {\n    } else if (ExpectParameterPack) {\n      Diag(OldParm->getLocation(), diag::err_function_parameter_pack_without_parameter_packs) << NewDI->getType();"},{F,5205,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n  // If there was an ellipsis in the declarator, the declaration declares a\n  // parameter pack whose type may be a pack expansion type.\n  if (D.hasEllipsis()) {\n    case DeclaratorContext::RequiresExpr:\n      // C++0x [dcl.fct]p13:\n      //  [...] When it is part of a parameter-declaration-clause, the\n      //  parameter pack is a function parameter pack (14.5.3). The type T\n      //  of the declarator-id of the function parameter pack shall contain\n      //  a template parameter pack; each template parameter pack in T is\n      //  expanded by the function parameter pack.\n      //\n      // We represent function parameter packs as function parameters whose\n      // type is a pack expansion.\n      if (!T->containsUnexpandedParameterPack() && (!LangOpts.CPlusPlus20 || !T->getContainedAutoType())) {\n        S.Diag(D.getEllipsisLoc(), diag::err_function_parameter_pack_without_parameter_packs) << T << D.getSourceRange();"}}
},
},
["note_implementation_declared"]={
["err_function_scope_depth_exceeded"]={
[c]="class implementation is declared here",
[j]="function scope depth exceeded maximum of A",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="class implementation is declared here",
[e]="function scope depth exceeded maximum of %0",
[b]=q,
[f]=J,
[a]="class implementation is declared here",
[g]="function scope depth exceeded maximum of (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"e16cdb407a3f",1270241585,"diagnose declaring class extension after its implementation"}
[b]={"739b410f1ff5",1570627358,"Add a warning, flags and pragmas to limit the number of pre-processor tokens in a translation unit"},
[k]={{C,6591,"/// ParseParameterDeclarationClause - Parse a (possibly empty) parameter-list\n/// after the opening parenthesis. This function will not parse a K&R-style\n/// identifier list.\n///\n/// DeclContext is the context of the declarator being parsed.  If FirstArgAttrs\n/// is non-null, then the caller parsed those attributes immediately after the\n/// open paren - they will be applied to the DeclSpec of the first parameter.\n///\n/// After returning, ParamInfo will hold the parsed parameters. EllipsisLoc will\n/// be the location of the ellipsis, if any was parsed.\n///\n///      parameter-type-list: [C99 6.7.5]\n///        parameter-list\n///        parameter-list \',\' \'...\'\n/// [C++]  parameter-list \'...\'\n///\n///      parameter-list: [C99 6.7.5]\n///        parameter-declaration\n///        parameter-list \',\' parameter-declaration\n///\n///      parameter-declaration: [C99 6.7.5]\n///        declaration-specifiers declarator\n/// [C++]  declaration-specifiers declarator \'=\' assignment-expression\n/// [C++11]                                      initializer-clause\n/// [GNU]  declaration-specifiers declarator attributes\n///        declaration-specifiers abstract-declarator[opt]\n/// [C++]  declaration-specifiers abstract-declarator[opt]\n///          \'=\' assignment-expression\n/// [GNU]  declaration-specifiers abstract-declarator[opt] attributes\n/// [C++11] attribute-specifier-seq parameter-declaration\n///\nvoid Parser::ParseParameterDeclarationClause(DeclaratorContext DeclaratorCtx, ParsedAttributes &FirstArgAttrs, SmallVectorImpl<DeclaratorChunk::ParamInfo> &ParamInfo, SourceLocation &EllipsisLoc, bool IsACXXFunctionDeclaration) {\n  // Avoid exceeding the maximum function scope depth.\n  // See https://bugs.llvm.org/show_bug.cgi?id=19607\n  // Note Sema::ActOnParamDeclarator calls ParmVarDecl::setScopeInfo with\n  // getFunctionPrototypeDepth() - 1.\n  if (getCurScope()->getFunctionPrototypeDepth() - 1 > ParmVarDecl::getMaxFunctionScopeDepth()) {\n    Diag(Tok.getLocation(), diag::err_function_scope_depth_exceeded) << ParmVarDecl::getMaxFunctionScopeDepth();"}}
},
},
["note_implemented_by_class"]={
["err_function_start_invalid_type"]={
[c]="when implemented by class A",
[j]="argument must be a function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="when implemented by class %0",
[e]="argument must be a function",
[b]=q,
[f]=n,
[a]="when implemented by class (.*?)",
[g]="argument must be a function",
[g]=p,
[h]=a,
[e]="ARC Weak References",
[i]=o,
[i]={"6a41337132b6",1366830785,"Objective-C arc: Improve disgnostics when \'weak\'"}
[b]={"f9c3310d32c6",1616787805,"[OPENMP]Fix PR49366: crash on VLAs in task untied regions."},
[k]={{y,239,"/// Check that the argument to __builtin_function_start is a function.\nstatic bool SemaBuiltinFunctionStart(Sema &S, CallExpr *TheCall) {\n  if (!FD) {\n    S.Diag(TheCall->getBeginLoc(), diag::err_function_start_invalid_type) << TheCall->getSourceRange();"}}
},
},
["note_implicit_delete_this_in_destructor_here"]={
["err_function_template_partial_spec"]={
[c]="while checking implicit \'delete this\' for virtual destructor",
[j]="function template partial specialization is not allowed",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="while checking implicit \'delete this\' for virtual destructor",
[e]="function template partial specialization is not allowed",
[b]=q,
[f]=n,
[a]="while checking implicit \'delete this\' for virtual destructor",
[g]="function template partial specialization is not allowed",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"5b34958b46dc",1507859736,"Support for destroying operator delete, per C++2a proposal P0722."}
[b]={"a5f6f9c7a1bb",1295895279,"Disallow function template partial specializations, from Hans"},
[k]={{p,9069,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n  if (!getLangOpts().CPlusPlus) {\n  } else {\n    // If the declarator is a template-id, translate the parser\'s template\n    // argument list into our AST format.\n    if (D.getName().getKind() == UnqualifiedIdKind::IK_TemplateId) {\n      if (NewFD->isInvalidDecl()) {\n      } else if (FunctionTemplate) {\n        Diag(D.getIdentifierLoc(), diag::err_function_template_partial_spec) << SourceRange(TemplateId->LAngleLoc, TemplateId->RAngleLoc);"}}
},
},
["note_implicit_member_target_infer_collision"]={
["err_function_template_spec_ambiguous"]={
[c]="implicit ... inferred target collision: call to both ... and ... members",
[j]="function template specialization A ambiguously refers to more than one function template; explicitly specify... template arguments to identify a particular function template",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="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",
[e]="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",
[b]=q,
[f]=n,
[a]="implicit (?:default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor) inferred target collision\\: call to both (?:__device__|__global__|__host__|__host__ __device__) and (?:__device__|__global__|__host__|__host__ __device__) members",
[g]="function template specialization (.*?) ambiguously refers to more than one function template; explicitly specify(?:| additional) template arguments to identify a particular function template",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"9a220fca4a6f",1412023109,"CUDA: Fix incorrect target inference for implicit members."}
[b]={"3a923c2d3799",1253834087,"WIP implementation of explicit function template specialization. This"},
[k]={{K,7812,"/// Perform semantic analysis for the given function template\n/// specialization.\n///\n/// This routine performs all of the semantic analysis required for an\n/// explicit function template specialization. On successful completion,\n/// the function declaration \\p FD will become a function template\n/// specialization.\n///\n/// \\param FD the function declaration, which will be updated to become a\n/// function template specialization.\n///\n/// \\param ExplicitTemplateArgs the explicitly-provided template arguments,\n/// if any. Note that this may be valid info even when 0 arguments are\n/// explicitly provided as in, e.g., \\c void sort<>(char*, char*);\n/// as it anyway contains info on the angle brackets locations.\n///\n/// \\param Previous the set of declarations that may be specialized by\n/// this function specialization.\n///\n/// \\param QualifiedFriend whether this is a lookup for a qualified friend\n/// declaration with no explicit template argument list that might be\n/// befriending a function template specialization.\nbool Sema::CheckFunctionTemplateSpecialization(FunctionDecl *FD, TemplateArgumentListInfo *ExplicitTemplateArgs, LookupResult &Previous, bool QualifiedFriend) {\n  UnresolvedSetIterator Result = getMostSpecialized(Candidates.begin(), Candidates.end(), FailedCandidates, FD->getLocation(), PDiag(diag::err_function_template_spec_no_match) << FD->getDeclName(), PDiag(diag::err_function_template_spec_ambiguous) << FD->getDeclName() << (ExplicitTemplateArgs != nullptr), PDiag(diag::note_function_template_spec_matched));"}}
},
},
["note_implicit_param_decl"]={
["err_function_template_spec_no_match"]={
[c]="A is an implicit parameter",
[j]="no function template matches function template specialization A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is an implicit parameter",
[e]="no function template matches function template specialization %0",
[b]=q,
[f]=n,
[a]="(.*?) is an implicit parameter",
[g]="no function template matches function template specialization (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"c6ebda167f52",1361482844,"Teach serialized diagnostics about notes without locations."}
[b]={"3a923c2d3799",1253834087,"WIP implementation of explicit function template specialization. This"},
[k]={{K,7812,"/// Perform semantic analysis for the given function template\n/// specialization.\n///\n/// This routine performs all of the semantic analysis required for an\n/// explicit function template specialization. On successful completion,\n/// the function declaration \\p FD will become a function template\n/// specialization.\n///\n/// \\param FD the function declaration, which will be updated to become a\n/// function template specialization.\n///\n/// \\param ExplicitTemplateArgs the explicitly-provided template arguments,\n/// if any. Note that this may be valid info even when 0 arguments are\n/// explicitly provided as in, e.g., \\c void sort<>(char*, char*);\n/// as it anyway contains info on the angle brackets locations.\n///\n/// \\param Previous the set of declarations that may be specialized by\n/// this function specialization.\n///\n/// \\param QualifiedFriend whether this is a lookup for a qualified friend\n/// declaration with no explicit template argument list that might be\n/// befriending a function template specialization.\nbool Sema::CheckFunctionTemplateSpecialization(FunctionDecl *FD, TemplateArgumentListInfo *ExplicitTemplateArgs, LookupResult &Previous, bool QualifiedFriend) {\n  UnresolvedSetIterator Result = getMostSpecialized(Candidates.begin(), Candidates.end(), FailedCandidates, FD->getLocation(), PDiag(diag::err_function_template_spec_no_match) << FD->getDeclName(), PDiag(diag::err_function_template_spec_ambiguous) << FD->getDeclName() << (ExplicitTemplateArgs != nullptr), PDiag(diag::note_function_template_spec_matched));"}}
},
},
["note_implicit_top_level_module_import_here"]={
["err_gc_weak_property_strong_type"]={
[c]="submodule of top-level module \'A\' implicitly imported here",
[j]="weak attribute declared on a __strong type property in GC mode",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="submodule of top-level module \'%0\' implicitly imported here",
[e]="weak attribute declared on a __strong type property in GC mode",
[b]=q,
[f]=n,
[a]="submodule of top\\-level module \'(.*?)\' implicitly imported here",
[g]="weak attribute declared on a __strong type property in GC mode",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={"8b7c0398b6a3",1439829570,"[modules] PR20507: Avoid silent textual inclusion."}
[b]={"eebdb67420c1",1315412661,"objc-gc: More sema work for properties declared \'weak\'"},
[k]={{Gb,1022,"/// ActOnPropertyImplDecl - This routine performs semantic checks and\n/// builds the AST node for a property implementation declaration; declared\n/// as \\@synthesize or \\@dynamic.\n///\nDecl *Sema::ActOnPropertyImplDecl(Scope *S, SourceLocation AtLoc, SourceLocation PropertyLoc, bool Synthesize, IdentifierInfo *PropertyId, IdentifierInfo *PropertyIvar, SourceLocation PropertyIvarLoc, ObjCPropertyQueryKind QueryKind) {\n  // Check that we have a valid, previously declared ivar for @synthesize\n  if (Synthesize) {\n    if (kind & ObjCPropertyAttribute::kind_weak) {\n      // Add GC __weak to the ivar type if the property is weak.\n      if (getLangOpts().getGC() != LangOptions::NonGC) {\n        if (PropertyIvarType.isObjCGCStrong()) {\n          Diag(PropertyDiagLoc, diag::err_gc_weak_property_strong_type);"}}
},
},
["note_implicitly_deleted"]={
["err_generic_sel_multi_match"]={
[c]="explicitly defaulted function was implicitly deleted here",
[j]="controlling expression type A compatible with B generic association types",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="explicitly defaulted function was implicitly deleted here",
[e]="controlling expression type %0 compatible with %1 generic association types",
[b]=q,
[f]=n,
[a]="explicitly defaulted function was implicitly deleted here",
[g]="controlling expression type (.*?) compatible with (.*?) generic association types",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"6f1e2c6d19a7",1333400365,"Finish PR10217: Ensure we say that a special member was implicitly, not"}
[b]={"91147596414d",1302827748,"C1X: implement generic selections"},
[k]={{q,1591,"ExprResult Sema::CreateGenericSelectionExpr(SourceLocation KeyLoc, SourceLocation DefaultLoc, SourceLocation RParenLoc, bool PredicateIsExpr, void *ControllingExprOrType, ArrayRef<TypeSourceInfo *> Types, ArrayRef<Expr *> Exprs) {\n  // C11 6.5.1.1p2 \"The controlling expression of a generic selection shall have\n  // type compatible with at most one of the types named in its generic\n  // association list.\"\n  if (CompatIndices.size() > 1) {\n    Diag(SR.getBegin(), diag::err_generic_sel_multi_match) << SR << P.second << (unsigned)CompatIndices.size();"}}
},
},
["note_imported_by_pch_module_not_found"]={
["err_generic_sel_no_match"]={
[c]="consider adding \'A\' to the header search path",
[j]="controlling expression type A not compatible with any generic association type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="consider adding \'%0\' to the header search path",
[e]="controlling expression type %0 not compatible with any generic association type",
[b]=q,
[f]=n,
[a]="consider adding \'(.*?)\' to the header search path",
[g]="controlling expression type (.*?) not compatible with any generic association type",
[g]=p,
[h]=a,
[e]=Kc,
[i]=o,
[i]={"a66a325bbc51",1510889051,"[PCH+Modules] Improve diagnosticts to help out users pass an extra header search path"}
[b]={"91147596414d",1302827748,"C1X: implement generic selections"},
[k]={{q,1604,"ExprResult Sema::CreateGenericSelectionExpr(SourceLocation KeyLoc, SourceLocation DefaultLoc, SourceLocation RParenLoc, bool PredicateIsExpr, void *ControllingExprOrType, ArrayRef<TypeSourceInfo *> Types, ArrayRef<Expr *> Exprs) {\n  // C11 6.5.1.1p2 \"If a generic selection has no default generic association,\n  // its controlling expression shall have type compatible with exactly one of\n  // the types named in its generic association list.\"\n  if (DefaultIndex == -1U && CompatIndices.size() == 0) {\n    Diag(SR.getBegin(), diag::err_generic_sel_no_match) << SR << P.second;"}}
},
},
["note_in_binding_decl_init"]={
["err_getter_not_found"]={
[c]="in implicit initialization of binding declaration A",
[j]="no getter method for read from property",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in implicit initialization of binding declaration %0",
[e]="no getter method for read from property",
[b]=q,
[f]=n,
[a]="in implicit initialization of binding declaration (.*?)",
[g]="no getter method for read from property",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"7873de0cf65f",1470954346,"P0217R3: Perform semantic checks and initialization for the bindings in a"}
[b]={"0f0b302ffe8e",1293047195,"Complain on missing property getter method only"},
[k]={{pb,688,"/// @property-specific behavior for doing lvalue-to-rvalue conversion.\nExprResult ObjCPropertyOpBuilder::buildRValueOperation(Expr *op) {\n  // Explicit properties always have getters, but implicit ones don\'t.\n  // Check that before proceeding.\n  if (RefExpr->isImplicitProperty() && !RefExpr->getImplicitPropertyGetter()) {\n    S.Diag(RefExpr->getLocation(), diag::err_getter_not_found) << RefExpr->getSourceRange();"}}
},
},
["note_in_class_initializer_float_type_cxx11"]={
["err_global_asm_qualifier_ignored"]={
[c]="add \'constexpr\'",
[j]="meaningless \'A\' on asm outside function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="add \'constexpr\'",
[e]="meaningless \'%0\' on asm outside function",
[b]=q,
[f]=n,
[a]="add \'constexpr\'",
[g]="meaningless \'(.*?)\' on asm outside function",
[g]=p,
[h]=a,
[e]=o,
[i]=sb,
[i]={"8505c29593fb",1359498368,"Move -Wstatic-float-init fixit into a note & don\'t recover as if constexpr"}
[b]={"f08df464ae89",1582039343,"[OPENMP50]Add initial support for OpenMP 5.0 iterator."},
[k]={{Q,1509,"/// ParseSimpleAsm\n///\n/// [GNU] simple-asm-expr:\n///        \'asm\' \'(\' asm-string-literal \')\'\n///\nExprResult Parser::ParseSimpleAsm(bool ForAsmLabel, SourceLocation *EndLoc) {\n  if (isGNUAsmQualifier(Tok)) {\n    Diag(Tok, diag::err_global_asm_qualifier_ignored) << GNUAsmQualifiers::getQualifierName(getGNUAsmQualifier(Tok)) << FixItHint::CreateRemoval(RemovalRange);"}}
},
},
["note_in_declaration_of_implicit_equality_comparison"]={
["err_global_call_not_config"]={
[c]="while declaring the corresponding implicit \'operator==\' for this defaulted \'operator<=>\'",
[j]="call to global function A not configured",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="while declaring the corresponding implicit \'operator==\' for this defaulted \'operator<=>\'",
[e]="call to global function %0 not configured",
[b]=q,
[f]=n,
[a]="while declaring the corresponding implicit \'operator\\=\\=\' for this defaulted \'operator\\<\\=\\>\'",
[g]="call to global function (.*?) not configured",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"fe17b30a7957",1575504770,"[attributes][analyzer] Add annotations for handles."}
[b]={"34a20b081e43",1317599355,"CUDA: diagnose unconfigured calls to global functions"},
[k]={{q,6459,"/// BuildResolvedCallExpr - Build a call to a resolved expression,\n/// i.e. an expression not of \\p OverloadTy.  The expression should\n/// unary-convert to an expression of function-pointer or\n/// block-pointer type.\n///\n/// \\param NDecl the declaration being called, if available\nExprResult Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, SourceLocation LParenLoc, ArrayRef<Expr *> Args, SourceLocation RParenLoc, Expr *Config, bool IsExecConfig, ADLCallKind UsesADL) {\n  if (getLangOpts().CUDA) {\n    if (Config) {\n    } else {\n      // CUDA: Calls to global functions must be configured\n      if (FDecl && FDecl->hasAttr<CUDAGlobalAttr>())\n        return ExprError(Diag(LParenLoc, diag::err_global_call_not_config) << FDecl << Fn->getSourceRange());"}}
},
},
["note_in_declaration_of_implicit_special_member"]={
["err_global_module_introducer_not_at_start"]={
[c]="while declaring the implicit ... for A",
[j]="\'module;\' introducing a global module fragment can appear only at the start of the translation unit",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="while declaring the implicit %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}1 for %0",
[e]="\'module;\' introducing a global module fragment can appear only at the start of the translation unit",
[b]=q,
[f]=n,
[a]="while declaring the implicit (?:default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor) for (.*?)",
[g]="\'module;\' introducing a global module fragment can appear only at the start of the translation unit",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"1338122b255e",1487886223,"Add context note to diagnostics that occur while declaring an implicit special member function."}
[b]={"d652bdd05f1c",1555229219,"[c++20] Parsing support for module-declarations, import-declarations,"},
[k]={{Q,2178,"/// Parse a declaration beginning with the \'module\' keyword or C++20\n/// context-sensitive keyword (optionally preceded by \'export\').\n///\n///  module-declaration:  [C++20]\n///    \'export\'[opt] \'module\' module-name attribute-specifier-seq[opt] \';\'\n///\n///  global-module-fragment:  [C++2a]\n///    \'module\' \';\' top-level-declaration-seq[opt]\n///  module-declaration:      [C++2a]\n///    \'export\'[opt] \'module\' module-name module-partition[opt]\n///            attribute-specifier-seq[opt] \';\'\n///  private-module-fragment: [C++2a]\n///    \'module\' \':\' \'private\' \';\' top-level-declaration-seq[opt]\nParser::DeclGroupPtrTy Parser::ParseModuleDecl(Sema::ModuleImportState &ImportState) {\n  // Parse a global-module-fragment, if present.\n  if (getLangOpts().CPlusPlusModules && Tok.is(tok::semi)) {\n    if (ImportState != Sema::ModuleImportState::FirstDecl) {\n      Diag(StartLoc, diag::err_global_module_introducer_not_at_start) << SourceRange(StartLoc, SemiLoc);"}}
},
},
["note_in_for_range"]={
["err_gnu_inline_asm_disabled"]={
[c]="when looking up \'...\' function for range expression of type A",
[j]="GNU-style inline assembly is disabled",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="when looking up \'%select{begin|end}0\' function for range expression of type %1",
[e]="GNU-style inline assembly is disabled",
[b]=q,
[f]=n,
[a]="when looking up \'(?:begin|end)\' function for range expression of type (.*?)",
[g]="GNU\\-style inline assembly is disabled",
[g]=p,
[h]=a,
[e]=o,
[i]=sb,
[i]={"0f38443616f5",1345510321,"Better diagnostics for range-based for loops with bad range types."}
[b]={"cb0d13fc2337",1421449528,"Adding option -fno-inline-asm to disallow inline asm"},
[k]={{Q,835,"/// ParseExternalDeclaration:\n///\n/// The `Attrs` that are passed in are C++11 attributes and appertain to the\n/// declaration.\n///\n///      external-declaration: [C99 6.9], declaration: [C++ dcl.dcl]\n///        function-definition\n///        declaration\n/// [GNU]  asm-definition\n/// [GNU]  __extension__ external-declaration\n/// [OBJC]  objc-class-definition\n/// [OBJC]  objc-class-declaration\n/// [OBJC]  objc-alias-declaration\n/// [OBJC]  objc-protocol-definition\n/// [OBJC]  objc-method-definition\n/// [OBJC]  @end\n/// [C++]  linkage-specification\n/// [GNU] asm-definition:\n///        simple-asm-expr \';\'\n/// [C++11] empty-declaration\n/// [C++11] attribute-declaration\n///\n/// [C++11] empty-declaration:\n///          \';\'\n///\n/// [C++0x/GNU] \'extern\' \'template\' declaration\n///\n/// [C++20] module-import-declaration\n///\nParser::DeclGroupPtrTy Parser::ParseExternalDeclaration(ParsedAttributes &Attrs, ParsedAttributes &DeclSpecAttrs, ParsingDeclSpec *DS) {\n  case tok::kw_asm: {\n    // Check if GNU-style InlineAsm is disabled.\n    // Empty asm string is allowed because it will not introduce\n    // any assembly code.\n    if (!(getLangOpts().GNUAsm || Result.isInvalid())) {\n      if (!SL->getString().trim().empty())\n        Diag(StartLoc, diag::err_gnu_inline_asm_disabled);"},{Db,675,"/// ParseAsmStatement - Parse a GNU extended asm statement.\n///      asm-statement:\n///        gnu-asm-statement\n///        ms-asm-statement\n///\n/// [GNU] gnu-asm-statement:\n///        \'asm\' asm-qualifier-list[opt] \'(\' asm-argument \')\' \';\'\n///\n/// [GNU] asm-argument:\n///        asm-string-literal\n///        asm-string-literal \':\' asm-operands[opt]\n///        asm-string-literal \':\' asm-operands[opt] \':\' asm-operands[opt]\n///        asm-string-literal \':\' asm-operands[opt] \':\' asm-operands[opt]\n///                \':\' asm-clobbers\n///\n/// [GNU] asm-clobbers:\n///        asm-string-literal\n///        asm-clobbers \',\' asm-string-literal\n///\nStmtResult Parser::ParseAsmStatement(bool &msAsm) {\n  // Check if GNU-style InlineAsm is disabled.\n  // Error on anything other than empty string.\n  if (!(getLangOpts().GNUAsm || AsmString.isInvalid())) {\n    if (!SL->getString().trim().empty())\n      Diag(Loc, diag::err_gnu_inline_asm_disabled);"}}
},
},
["note_in_omitted_aggregate_initializer"]={
["err_goto_into_protected_scope"]={
[c]="in implicit initialization of ...",
[j]="cannot jump from this goto statement to its label",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="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",
[e]="cannot jump from this goto statement to its label",
[b]=q,
[f]=n,
[a]="in implicit initialization of (?:array element (.*?) with omitted initializer|field (.*?) with omitted initializer|trailing array elements in runtime\\-sized array new)",
[g]="cannot jump from this goto statement to its label",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"6c3bbf42712e",1401780534,"PR11410: Extend diagnostic to cover all cases of aggregate initialization, not"}
[b]={"960cc525ec72",1240047387,"rewrite the goto scope checking code to be more efficient, simpler,"},
[k]={{lb,599,"/// VerifyJumps - Verify each element of the Jumps array to see if they are\n/// valid, emitting diagnostics if not.\nvoid JumpScopeChecker::VerifyJumps() {\n  while (!Jumps.empty()) {\n    // With a goto,\n    if (GotoStmt *GS = dyn_cast<GotoStmt>(Jump)) {\n      // The label may not have a statement if it\'s coming from inline MS ASM.\n      if (GS->getLabel()->getStmt()) {\n        CheckJump(GS, GS->getLabel()->getStmt(), GS->getGotoLoc(), diag::err_goto_into_protected_scope, diag::ext_goto_into_protected_scope, diag::warn_cxx98_compat_goto_into_protected_scope);"},{lb,624,"/// VerifyJumps - Verify each element of the Jumps array to see if they are\n/// valid, emitting diagnostics if not.\nvoid JumpScopeChecker::VerifyJumps() {\n  while (!Jumps.empty()) {\n    // We only get indirect gotos here when they have a constant target.\n    if (IndirectGotoStmt *IGS = dyn_cast<IndirectGotoStmt>(Jump)) {\n      CheckJump(IGS, Target->getStmt(), IGS->getGotoLoc(), diag::err_goto_into_protected_scope, diag::ext_goto_into_protected_scope, diag::warn_cxx98_compat_goto_into_protected_scope);"},{lb,774,"static bool IsMicrosoftJumpWarning(unsigned JumpDiag, unsigned InDiagNote) { return (JumpDiag == diag::err_goto_into_protected_scope && (InDiagNote == diag::note_protected_by_variable_init || InDiagNote == diag::note_protected_by_variable_nontriv_destructor)); }"},{lb,859,"/// CheckJump - Validate that the specified jump statement is valid: that it is\n/// jumping within or out of its current scope, not into a deeper one.\nvoid JumpScopeChecker::CheckJump(Stmt *From, Stmt *To, SourceLocation DiagLoc, unsigned JumpDiagError, unsigned JumpDiagWarning, unsigned JumpDiagCXX98Compat) {\n  // Warn on gotos out of __finally blocks.\n  if (isa<GotoStmt>(From) || isa<IndirectGotoStmt>(From)) {\n    // If FromScope > ToScope, FromScope is more nested and the jump goes to a\n    // less nested scope.  Check if it crosses a __finally along the way.\n    for (unsigned I = FromScope; I > ToScope; I = Scopes[I].ParentScope) {\n      if (Scopes[I].InDiag == diag::note_omp_protected_structured_block) {\n        S.Diag(From->getBeginLoc(), diag::err_goto_into_protected_scope);"}}
},
},
["note_in_reference_temporary_list_initializer"]={
["err_goto_ms_asm_label"]={
[c]="in initialization of temporary of type A created to list-initialize this reference",
[j]="cannot jump from this goto statement to label A inside an inline assembly block",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in initialization of temporary of type %0 created to list-initialize this reference",
[e]="cannot jump from this goto statement to label %0 inside an inline assembly block",
[b]=q,
[f]=n,
[a]="in initialization of temporary of type (.*?) created to list\\-initialize this reference",
[g]="cannot jump from this goto statement to label (.*?) inside an inline assembly block",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"8d082d187e57",1409868819,"PR20844: If we fail to list-initialize a reference, map to the referenced type"}
[b]={"31097581aad8",1411352514,"ms-inline-asm: Scope inline asm labels to functions"},
[k]={{lb,909,"void JumpScopeChecker::CheckGotoStmt(GotoStmt *GS) {\n  if (GS->getLabel()->isMSAsmLabel()) {\n    S.Diag(GS->getGotoLoc(), diag::err_goto_ms_asm_label) << GS->getLabel()->getIdentifier();"}}
},
},
["note_include_header_or_declare"]={
["err_half_const_requires_fp16"]={
[c]="include the header <A> or explicitly provide a declaration for \'B\'",
[j]="half precision constant requires cl_khr_fp16",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="include the header <%0> or explicitly provide a declaration for \'%1\'",
[e]="half precision constant requires cl_khr_fp16",
[b]=q,
[f]=n,
[a]="include the header \\<(.*?)\\> or explicitly provide a declaration for \'(.*?)\'",
[g]="half precision constant requires cl_khr_fp16",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"5d96e0a3a795",1405112031,"Consolidate header inclusion diagnostics"}
[b]={"5c1a2c5d3e8f",1455708877,"[OpenCL] Added half type literal with suffix h."},
[k]={{q,3512,"ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {\n  if (Literal.isFixedPointLiteral()) {\n  } else if (Literal.isFloatingLiteral()) {\n    if (Literal.isHalf) {\n      if (getOpenCLOptions().isAvailableOption(\"cl_khr_fp16\", getLangOpts()))\n      else {\n        Diag(Tok.getLocation(), diag::err_half_const_requires_fp16);"}}
},
},
["note_incompatible_analyzer_plugin_api"]={
["err_header_import_not_header_unit"]={
[c]="current API version is \'A\', but plugin was compiled with version \'B\'",
[j]="header file A (aka \'B\') cannot be imported because it is not known to be a header unit",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="current API version is \'%0\', but plugin was compiled with version \'%1\'",
[e]="header file %0 (aka \'%1\') cannot be imported because it is not known to be a header unit",
[b]=q,
[f]=n,
[a]="current API version is \'(.*?)\', but plugin was compiled with version \'(.*?)\'",
[g]="header file (.*?) \\(aka \'(.*?)\'\\) cannot be imported because it is not known to be a header unit",
[g]=p,
[h]=a,
[e]=p,
[i]=t,
[i]={"075d73bcced3",1313556963,"[analyzer] Add a warning for an incompatible plugin version."}
[b]={"8af8b8611c5d",1555017503,"[C++20] Implement context-sensitive header-name lexing and pp-import parsing in the preprocessor."},
[k]={{rb,2172,"/// Handle either a #include-like directive or an import declaration that names\n/// a header file.\n///\n/// \\param HashLoc The location of the \'#\' token for an include, or\n///        SourceLocation() for an import declaration.\n/// \\param IncludeTok The include / include_next / import token.\n/// \\param FilenameTok The header-name token.\n/// \\param EndLoc The location at which any imported macros become visible.\n/// \\param LookupFrom For #include_next, the starting directory for the\n///        directory lookup.\n/// \\param LookupFromFile For #include_next, the starting file for the directory\n///        lookup.\nPreprocessor::ImportAction Preprocessor::HandleHeaderIncludeOrImport(SourceLocation HashLoc, Token &IncludeTok, Token &FilenameTok, SourceLocation EndLoc, ConstSearchDirIterator LookupFrom, const FileEntry *LookupFromFile) {\n  // If this is a C++20 pp-import declaration, diagnose if we didn\'t find any\n  // module corresponding to the named header.\n  if (IsImportDecl && !SuggestedModule) {\n    Diag(FilenameTok, diag::err_header_import_not_header_unit) << OriginalFilename << File->getName();"}}
},
},
["note_incomplete_class_and_qualified_id"]={
["err_header_import_semi_in_macro"]={
[c]="conformance of forward class A to protocol B can not be confirmed",
[j]="semicolon terminating header import declaration cannot be produced by a macro",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="conformance of forward class %0 to protocol %1 can not be confirmed",
[e]="semicolon terminating header import declaration cannot be produced by a macro",
[b]=q,
[f]=n,
[a]="conformance of forward class (.*?) to protocol (.*?) can not be confirmed",
[g]="semicolon terminating header import declaration cannot be produced by a macro",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"01d96986d843",1480719628,"More diagnostic name fixups: w_ -> warn_, warning_ -> warn_, not_ -> note_."}
[b]={"8af8b8611c5d",1555017503,"[C++20] Implement context-sensitive header-name lexing and pp-import parsing in the preprocessor."},
[k]={{"clang/lib/Lex/Preprocessor.cpp",1118,"/// Lex a token following the \'import\' contextual keyword.\n///\n///    pp-import: [C++20]\n///          import header-name pp-import-suffix[opt] ;\n///          import header-name-tokens pp-import-suffix[opt] ;\n/// [ObjC]    @ import module-name ;\n/// [Clang]  import module-name ;\n///\n///    header-name-tokens:\n///          string-literal\n///          < [any sequence of preprocessing-tokens other than >] >\n///\n///    module-name:\n///          module-name-qualifier[opt] identifier\n///\n///    module-name-qualifier\n///          module-name-qualifier[opt] identifier .\n///\n/// We respond to a pp-import by importing macros from the named module.\nbool Preprocessor::LexAfterModuleImport(Token &Result) {\n  if (ImportingHeader) {\n    if (SemiLoc.isMacroID())\n      Diag(SemiLoc, diag::err_header_import_semi_in_macro);"}}
},
},
["note_indirect_goto_target"]={
["err_hex_constant_requires"]={
[c]="possible target of ... goto statement",
[j]="hexadecimal floating ... requires ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="possible target of %select{indirect|asm}0 goto statement",
[e]="hexadecimal floating %select{constant|literal}0 requires %select{an exponent|a significand}1",
[b]=q,
[f]=n,
[a]="possible target of (?:indirect|asm) goto statement",
[g]="hexadecimal floating (?:constant|literal) requires (?:an exponent|a significand)",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"cf819ab38311",1273625893,"When checking scopes for indirect goto, be more permissive (but still safe)"}
[b]={"560a3579b29a",1457130726,"Update diagnostics now that hexadecimal literals look likely to be part of C++17."},
[k]={{W,1154,"/// ParseNumberStartingWithZero - This method is called when the first character\n/// of the number is found to be a zero.  This means it is either an octal\n/// number (like \'04\') or a hex number (\'0x123a\') a binary number (\'0b1010\') or\n/// a floating point number (01239.123e4).  Eat the prefix, determining the\n/// radix etc.\nvoid NumericLiteralParser::ParseNumberStartingWithZero(SourceLocation TokLoc) {\n  // Handle a hex number like 0x1234.\n  if ((c1 == \'x\' || c1 == \'X\') && (isHexDigit(s[1]) || s[1] == \'.\')) {\n    if (!HasSignificandDigits) {\n      Diags.Report(Lexer::AdvanceToTokenCharacter(TokLoc, s - ThisTokBegin, SM, LangOpts), diag::err_hex_constant_requires) << LangOpts.CPlusPlus << 1;"},{W,1184,"/// ParseNumberStartingWithZero - This method is called when the first character\n/// of the number is found to be a zero.  This means it is either an octal\n/// number (like \'04\') or a hex number (\'0x123a\') a binary number (\'0b1010\') or\n/// a floating point number (01239.123e4).  Eat the prefix, determining the\n/// radix etc.\nvoid NumericLiteralParser::ParseNumberStartingWithZero(SourceLocation TokLoc) {\n  // Handle a hex number like 0x1234.\n  if ((c1 == \'x\' || c1 == \'X\') && (isHexDigit(s[1]) || s[1] == \'.\')) {\n    // A binary exponent can appear with or with a \'.\'. If dotted, the\n    // binary exponent is required.\n    if (*s == \'p\' || *s == \'P\') {\n    } else if (saw_period) {\n      Diags.Report(Lexer::AdvanceToTokenCharacter(TokLoc, s - ThisTokBegin, SM, LangOpts), diag::err_hex_constant_requires) << LangOpts.CPlusPlus << 0;"}}
},
},
["note_indirection_through_null"]={
["err_hex_escape_no_digits"]={
[c]="consider using __builtin_trap() or qualifying pointer with \'volatile\'",
[j]="\\A used with no following hex digits",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="consider using __builtin_trap() or qualifying pointer with \'volatile\'",
[e]="\\%0 used with no following hex digits",
[b]=q,
[f]=n,
[a]="consider using __builtin_trap\\(\\) or qualifying pointer with \'volatile\'",
[g]="\\\\(.*?) used with no following hex digits",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"395610654363",1278483263,"implement PR7569, warning about assignment to null, which "}
[b]={z,1236199783,A},
[k]={{"clang/lib/Lex/Lexer.cpp",3082,"std::optional<uint32_t> Lexer::tryReadNumericUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n  if (Delimited && Kind == \'U\') {\n    if (Diagnose)\n      Diag(SlashLoc, diag::err_hex_escape_no_digits) << StringRef(KindLoc, 1);"},{W,181,"/// ProcessCharEscape - Parse a standard C escape sequence, which can occur in\n/// either a character or a string literal.\nstatic unsigned ProcessCharEscape(const char *ThisTokBegin, const char *&ThisTokBuf, const char *ThisTokEnd, bool &HadError, FullSourceLoc Loc, unsigned CharWidth, DiagnosticsEngine *Diags, const LangOptions &Features, StringLiteralEvalMethod EvalMethod) {\n  case \'x\': { // Hex escape.\n    if (ThisTokBuf != ThisTokEnd && *ThisTokBuf == \'{\') {\n    } else if (ThisTokBuf == ThisTokEnd || !isHexDigit(*ThisTokBuf)) {\n      if (Diags)\n        Diag(Diags, Features, Loc, ThisTokBegin, EscapeBegin, ThisTokBuf, diag::err_hex_escape_no_digits) << \"x\";"},{W,414,"static bool ProcessNumericUCNEscape(const char *ThisTokBegin, const char *&ThisTokBuf, const char *ThisTokEnd, uint32_t &UcnVal, unsigned short &UcnLen, bool &Delimited, FullSourceLoc Loc, DiagnosticsEngine *Diags, const LangOptions &Features, bool in_char_string_literal = false) {\n  if (UcnBegin[1] == \'u\' && in_char_string_literal && ThisTokBuf != ThisTokEnd && *ThisTokBuf == \'{\') {\n  } else if (ThisTokBuf == ThisTokEnd || !isHexDigit(*ThisTokBuf)) {\n    if (Diags)\n      Diag(Diags, Features, Loc, ThisTokBegin, UcnBegin, ThisTokBuf, diag::err_hex_escape_no_digits) << StringRef(&ThisTokBuf[-1], 1);"}}
},
},
["note_inequality_comparison_to_or_assign"]={
["err_hidden_visibility_dllexport"]={
[c]="use \'|=\' to turn this inequality comparison into an or-assignment",
[j]="hidden visibility cannot be applied to \'dllexport\' declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use \'|=\' to turn this inequality comparison into an or-assignment",
[e]="hidden visibility cannot be applied to \'dllexport\' declaration",
[b]=q,
[f]=n,
[a]="use \'\\|\\=\' to turn this inequality comparison into an or\\-assignment",
[g]="hidden visibility cannot be applied to \'dllexport\' declaration",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"ae51ecc57b34",1313570284,"Introduce a new warning, -Wtop-level-comparison. This warning is"}
[b]={"6f9c4851ab7c",1663023396,"[MinGW] Reject explicit hidden visibility applied to dllexport and hidden/protected applied to dllim..."},
[k]={{"clang/lib/CodeGen/CodeGenModule.cpp",1195,"void CodeGenModule::setGlobalVisibility(llvm::GlobalValue *GV, const NamedDecl *D) const {\n  if (GV->hasDLLExportStorageClass() || GV->hasDLLImportStorageClass()) {\n    if (GV->hasDLLExportStorageClass()) {\n      if (LV.getVisibility() == HiddenVisibility)\n        getDiags().Report(D->getLocation(), diag::err_hidden_visibility_dllexport);"}}
},
},
["note_init_list_at_beginning_of_macro_argument"]={
["err_hip_invalid_args_builtin_mangled_name"]={
[c]="cannot use initializer list at the beginning of a macro argument",
[j]="invalid argument: symbol must be a device-side function or global variable",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="cannot use initializer list at the beginning of a macro argument",
[e]="invalid argument: symbol must be a device-side function or global variable",
[b]=q,
[f]=n,
[a]="cannot use initializer list at the beginning of a macro argument",
[g]="invalid argument\\: symbol must be a device\\-side function or global variable",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={"79b45389c3cd",1374602509,"Add new diagnostic messages when too many arguments are presented to a"}
[b]={"61d065e21ff3",1590001902,"Let clang atomic builtins fetch add/sub support floating point types"},
[k]={{y,2484,"#include \"clang/Basic/Builtins.def\"\n  case Builtin::BI__builtin_get_device_side_mangled_name: {\n    if (!Check(TheCall)) {\n      Diag(TheCall->getBeginLoc(), diag::err_hip_invalid_args_builtin_mangled_name);"}}
},
},
["note_init_list_narrowing_silence"]={
["err_hlsl_attr_invalid_ast_node"]={
[c]="insert an explicit cast to silence this issue",
[j]="attribute A only applies to B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="insert an explicit cast to silence this issue",
[e]="attribute %0 only applies to %1",
[b]=q,
[f]=n,
[a]="insert an explicit cast to silence this issue",
[g]="attribute (.*?) only applies to (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"b0869036c114",1400289198,"Tweak diagnostic wording for init list narrowing"}
[b]={M,1625925174,N},
[k]={{v,6320,"static void handleHLSLSV_DispatchThreadIDAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  // FIXME: support semantic on field.\n  // See https://github.com/llvm/llvm-project/issues/57889.\n  if (isa<FieldDecl>(D)) {\n    S.Diag(AL.getLoc(), diag::err_hlsl_attr_invalid_ast_node) << AL << \"parameter\";"}}
},
},
["note_init_with_default_member_initializer"]={
["err_hlsl_attr_invalid_type"]={
[c]="initializing field A with default member initializer",
[j]="attribute A only applies to a field or parameter of type \'B\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="initializing field %0 with default member initializer",
[e]="attribute %0 only applies to a field or parameter of type \'%1\'",
[b]=q,
[f]=n,
[a]="initializing field (.*?) with default member initializer",
[g]="attribute (.*?) only applies to a field or parameter of type \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"47ccfd7a89e2",1667306232,"[Clang] Implement P2741R3 - user-generated static_assert messages"}
[b]={M,1625925174,N},
[k]={{v,6326,"static void handleHLSLSV_DispatchThreadIDAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (!isLegalTypeForHLSLSV_DispatchThreadID(VD->getType())) {\n    S.Diag(AL.getLoc(), diag::err_hlsl_attr_invalid_type) << AL << \"uint/uint2/uint3\";"}}
},
},
["note_initializer_out_of_order"]={
["err_hlsl_attr_unsupported_in_stage"]={
[c]="... A will be initialized after ... B",
[j]="attribute A is unsupported in ... shaders, requires B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{field|base class}0 %1 will be initialized after %select{field|base}2 %3",
[e]="attribute %0 is unsupported in %select{Pixel|Vertex|Geometry|Hull|Domain|Compute|Library|RayGeneration|Intersection|AnyHit|ClosestHit|Miss|Callable|Mesh|Amplification|Invalid}1 shaders, requires %2",
[b]=q,
[f]=n,
[a]="(?:field|base class) (.*?) will be initialized after (?:field|base) (.*?)",
[g]="attribute (.*?) is unsupported in (?:Pixel|Vertex|Geometry|Hull|Domain|Compute|Library|RayGeneration|Intersection|AnyHit|ClosestHit|Miss|Callable|Mesh|Amplification|Invalid) shaders, requires (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={Mb,1590001902,Nb}
[b]={Cb,1620118562,Eb},
[k]={{v,6223,"static void handleHLSLNumThreadsAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (!llvm::is_contained({Triple::Compute, Triple::Mesh, Triple::Amplification, Triple::Library}, Env)) {\n    S.Diag(AL.getLoc(), diag::err_hlsl_attr_unsupported_in_stage) << AL << Pipeline << \"Compute, Amplification, Mesh or Library\";"},{v,6288,"static void handleHLSLSVGroupIndexAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (Env != Triple::Compute && Env != Triple::Library) {\n    S.Diag(AL.getLoc(), diag::err_hlsl_attr_unsupported_in_stage) << AL << (uint32_t)Pipeline << \"Compute\";"},{v,6310,"static void handleHLSLSV_DispatchThreadIDAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  // FIXME: it is OK for a compute shader entry and pixel shader entry live in\n  // same HLSL file.Issue https://github.com/llvm/llvm-project/issues/57880.\n  if (Target.getEnvironment() != Triple::Compute && Target.getEnvironment() != Triple::Library) {\n    S.Diag(AL.getLoc(), diag::err_hlsl_attr_unsupported_in_stage) << AL << Pipeline << \"Compute\";"}}
},
},
["note_insert_break_fixit"]={
["err_hlsl_attribute_param_mismatch"]={
[c]="insert \'break;\' to avoid fall-through",
[j]="A attribute parameters do not match the previous declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="insert \'break;\' to avoid fall-through",
[e]="%0 attribute parameters do not match the previous declaration",
[b]=q,
[f]=n,
[a]="insert \'break;\' to avoid fall\\-through",
[g]="(.*?) attribute parameters do not match the previous declaration",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"84837d5b5aa0",1336069659,"Add -Wimplicit-fallthrough warning flag, which warns on fallthrough between"}
[b]={Cb,1620118562,Eb},
[k]={{v,6273,"HLSLNumThreadsAttr *Sema::mergeHLSLNumThreadsAttr(Decl *D, const AttributeCommonInfo &AL, int X, int Y, int Z) {\n  if (HLSLNumThreadsAttr *NT = D->getAttr<HLSLNumThreadsAttr>()) {\n    if (NT->getX() != X || NT->getY() != Y || NT->getZ() != Z) {\n      Diag(NT->getLocation(), diag::err_hlsl_attribute_param_mismatch) << AL;"},{v,6359,"HLSLShaderAttr *Sema::mergeHLSLShaderAttr(Decl *D, const AttributeCommonInfo &AL, HLSLShaderAttr::ShaderType ShaderType) {\n  if (HLSLShaderAttr *NT = D->getAttr<HLSLShaderAttr>()) {\n    if (NT->getType() != ShaderType) {\n      Diag(NT->getLocation(), diag::err_hlsl_attribute_param_mismatch) << AL;"}}
},
},
["note_insert_fallthrough_fixit"]={
["err_hlsl_entry_shader_attr_mismatch"]={
[c]="insert \'A;\' to silence this warning",
[j]="A attribute on entry function does not match the pipeline stage",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="insert \'%0;\' to silence this warning",
[e]="%0 attribute on entry function does not match the pipeline stage",
[b]=q,
[f]=n,
[a]="insert \'(.*?);\' to silence this warning",
[g]="(.*?) attribute on entry function does not match the pipeline stage",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"84837d5b5aa0",1336069659,"Add -Wimplicit-fallthrough warning flag, which warns on fallthrough between"}
[b]={M,1625925174,N},
[k]={{p,8997,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n  if (getLangOpts().HLSL) {\n    // Skip operator overload which not identifier.\n    // Also make sure NewFD is in translation-unit scope.\n    if (!NewFD->isInvalidDecl() && Name.isIdentifier() && NewFD->getName() == TargetInfo.getTargetOpts().HLSLEntry && S->getDepth() == 0) {\n      if (!NewFD->isInvalidDecl()) {\n        // To share code with HLSLShaderAttr, add HLSLShaderAttr to entry\n        // function.\n        if (HLSLShaderAttr *NT = NewFD->getAttr<HLSLShaderAttr>()) {\n          if (NT->getType() != ShaderType)\n            Diag(NT->getLocation(), diag::err_hlsl_entry_shader_attr_mismatch) << NT;"}}
},
},
["note_inst_declaration_hint"]={
["err_hlsl_expected_space"]={
[c]="add an explicit instantiation declaration to suppress this warning if A is explicitly instantiated in another translation unit",
[j]="invalid space specifier \'A\' used; expected \'space\' followed by an integer, like space1",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="add an explicit instantiation declaration to suppress this warning if %q0 is explicitly instantiated in another translation unit",
[e]="invalid space specifier \'%0\' used; expected \'space\' followed by an integer, like space1",
[b]=q,
[f]=n,
[a]="add an explicit instantiation declaration to suppress this warning if (.*?) is explicitly instantiated in another translation unit",
[g]="invalid space specifier \'(.*?)\' used; expected \'space\' followed by an integer, like space1",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"7dcc97e7ac0a",1461046792,"Warn if function or variable cannot be implicitly instantiated"}
[b]={M,1625925174,N},
[k]={{v,6417,"static void handleHLSLResourceBindingAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (!Space.startswith(\"space\")) {\n    S.Diag(SpaceArgLoc, diag::err_hlsl_expected_space) << Space;"},{v,6423,"static void handleHLSLResourceBindingAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (SpaceNum.getAsInteger(10, Num)) {\n    S.Diag(SpaceArgLoc, diag::err_hlsl_expected_space) << Space;"}}
},
},
["note_instantiation_contexts_suppressed"]={
["err_hlsl_init_priority_unsupported"]={
[c]="(skipping A contextB in backtrace; use -ftemplate-backtrace-limit=0 to see all)",
[j]="initializer priorities are not supported in HLSL",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="(skipping %0 context%s0 in backtrace; use -ftemplate-backtrace-limit=0 to see all)",
[e]="initializer priorities are not supported in HLSL",
[b]=q,
[f]=n,
[a]="\\(skipping (.*?) context(.*?) in backtrace; use \\-ftemplate\\-backtrace\\-limit\\=0 to see all\\)",
[g]="initializer priorities are not supported in HLSL",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"ffed1cb33910",1271747904,"Introduce a limit on the depth of the template instantiation backtrace"}
[b]={M,1625925174,N},
[k]={{v,2105,"static void handleConstructorAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (S.getLangOpts().HLSL && AL.getNumArgs()) {\n    S.Diag(AL.getLoc(), diag::err_hlsl_init_priority_unsupported);"},{v,3365,"/// Handle __attribute__((init_priority(priority))) attributes based on\n/// http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html\nstatic void handleInitPriorityAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (S.getLangOpts().HLSL) {\n    S.Diag(AL.getLoc(), diag::err_hlsl_init_priority_unsupported);"}}
},
},
["note_instantiation_required_here"]={
["err_hlsl_missing_numthreads"]={
[c]="... instantiation first required here",
[j]="missing numthreads attribute for A shader entry",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{implicit|explicit}0 instantiation first required here",
[e]="missing numthreads attribute for %0 shader entry",
[b]=q,
[f]=n,
[a]="(?:implicit|explicit) instantiation first required here",
[g]="missing numthreads attribute for (.*?) shader entry",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"06db9f50a2d6",1255378708,"Diagnose the declaration of explicit specializations after an implicit"}
[b]={M,1625925174,N},
[k]={{p,10729,"void Sema::CheckHLSLEntryPoint(FunctionDecl *FD) {\n  case llvm::Triple::EnvironmentType::Compute:\n    if (!FD->hasAttr<HLSLNumThreadsAttr>()) {\n      Diag(FD->getLocation(), diag::err_hlsl_missing_numthreads) << Triple.getEnvironmentName();"}}
},
},
["note_invalid_consteval_initializer"]={
["err_hlsl_missing_semantic_annotation"]={
[c]="in the default initializer of A",
[j]="semantic annotations must be present for all parameters of an entry function or patch constant function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in the default initializer of %0",
[e]="semantic annotations must be present for all parameters of an entry function or patch constant function",
[b]=q,
[f]=n,
[a]="in the default initializer of (.*?)",
[g]="semantic annotations must be present for all parameters of an entry function or patch constant function",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={N,1625925174,O}
[b]={M,1625925174,N},
[k]={{p,10739,"void Sema::CheckHLSLEntryPoint(FunctionDecl *FD) {\n  for (const auto *Param : FD->parameters()) {\n    if (!Param->hasAttr<HLSLAnnotationAttr>()) {\n      Diag(FD->getLocation(), diag::err_hlsl_missing_semantic_annotation);"}}
},
},
["note_invalid_consteval_initializer_here"]={
["err_hlsl_numthreads_argument_oor"]={
[c]="initialized here A",
[j]="argument \'...\' to numthreads attribute cannot exceed A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="initialized here %0",
[e]="argument \'%select{X|Y|Z}0\' to numthreads attribute cannot exceed %1",
[b]=q,
[f]=n,
[a]="initialized here (.*?)",
[g]="argument \'(?:X|Y|Z)\' to numthreads attribute cannot exceed (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={N,1625925174,O}
[b]={Cb,1620118562,Eb},
[k]={{v,6242,"static void handleHLSLNumThreadsAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (X > 1024) {\n    S.Diag(AL.getArgAsExpr(0)->getExprLoc(), diag::err_hlsl_numthreads_argument_oor) << 0 << 1024;"},{v,6249,"static void handleHLSLNumThreadsAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (Y > 1024) {\n    S.Diag(AL.getArgAsExpr(1)->getExprLoc(), diag::err_hlsl_numthreads_argument_oor) << 1 << 1024;"},{v,6256,"static void handleHLSLNumThreadsAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (Z > ZMax) {\n    S.Diag(AL.getArgAsExpr(2)->getExprLoc(), diag::err_hlsl_numthreads_argument_oor) << 2 << ZMax;"}}
},
},
["note_invalid_subexpr_in_const_expr"]={
["err_hlsl_numthreads_invalid"]={
[c]="subexpression not valid in a constant expression",
[j]="total number of threads cannot exceed A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="subexpression not valid in a constant expression",
[e]="total number of threads cannot exceed %0",
[b]=q,
[f]=n,
[a]="subexpression not valid in a constant expression",
[g]="total number of threads cannot exceed (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=a,
[i]={"f57d8cb13121",1323471481,"C++11 constant expressions: Don\'t use CheckICE in C++11; instead, determine"}
[b]={Cb,1620118562,Eb},
[k]={{v,6261,"static void handleHLSLNumThreadsAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (X * Y * Z > ThreadMax) {\n    S.Diag(AL.getLoc(), diag::err_hlsl_numthreads_invalid) << ThreadMax;"}}
},
},
["note_invalid_ucn_name_candidate"]={
["err_hlsl_operator_unsupported"]={
[c]="did you mean A (\'B\' U+C)?",
[j]="the \'...\' operator is unsupported in HLSL",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="did you mean %0 (\'%2\' U+%1)?",
[e]="the \'%select{&|*|->}0\' operator is unsupported in HLSL",
[b]=q,
[f]=n,
[a]="did you mean (.*?) \\(\'(.*?)\' U\\+(.*?)\\)\\?",
[g]="the \'(?:&|\\*|\\-\\>)\' operator is unsupported in HLSL",
[g]=p,
[h]=a,
[e]=C,
[i]=a,
[i]={N,1625925174,O}
[b]={"cb08f4aa4467",1620530452,"Support warn_unused_result on typedefs"},
[k]={{q,14020,"ExprResult Sema::CreateBuiltinUnaryOp(SourceLocation OpLoc, UnaryOperatorKind Opc, Expr *InputExpr, bool IsAfterAmp) {\n  if (getLangOpts().HLSL && OpLoc.isValid()) {\n    if (Opc == UO_AddrOf)\n      return ExprError(Diag(OpLoc, diag::err_hlsl_operator_unsupported) << 0);"},{q,14022,"ExprResult Sema::CreateBuiltinUnaryOp(SourceLocation OpLoc, UnaryOperatorKind Opc, Expr *InputExpr, bool IsAfterAmp) {\n  if (getLangOpts().HLSL && OpLoc.isValid()) {\n    if (Opc == UO_Deref)\n      return ExprError(Diag(OpLoc, diag::err_hlsl_operator_unsupported) << 1);"},{fb,1420,"/// The main callback when the parser finds something like\n///  expression . [nested-name-specifier] identifier\n///  expression -> [nested-name-specifier] identifier\n/// where \'identifier\' encompasses a fairly broad spectrum of\n/// possibilities, including destructor and operator references.\n///\n/// \\param OpKind either tok::arrow or tok::period\n/// \\param ObjCImpDecl the current Objective-C \\@implementation\n///  decl; this is an ugly hack around the fact that Objective-C\n///  \\@implementations aren\'t properly put in the context chain\nExprResult Sema::ActOnMemberAccessExpr(Scope *S, Expr *Base, SourceLocation OpLoc, tok::TokenKind OpKind, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, UnqualifiedId &Id, Decl *ObjCImpDecl) {\n  if (getLangOpts().HLSL && IsArrow)\n    return ExprError(Diag(OpLoc, diag::err_hlsl_operator_unsupported) << 2);"}}
},
},
["note_invalid_ucn_name_loose_matching"]={
["err_hlsl_pointers_unsupported"]={
[c]="characters names in Unicode escape sequences are sensitive to case and whitespaces",
[j]="... are unsupported in HLSL",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="characters names in Unicode escape sequences are sensitive to case and whitespaces",
[e]="%select{pointers|references}0 are unsupported in HLSL",
[b]=q,
[f]=n,
[a]="characters names in Unicode escape sequences are sensitive to case and whitespaces",
[g]="(?:pointers|references) are unsupported in HLSL",
[g]=p,
[h]=a,
[e]=C,
[i]=a,
[i]={N,1625925174,O}
[b]={"cb08f4aa4467",1620530452,"Support warn_unused_result on typedefs"},
[k]={{F,1926,"/// Build a pointer type.\n///\n/// \\param T The type to which we\'ll be building a pointer.\n///\n/// \\param Loc The location of the entity whose type involves this\n/// pointer type or, if there is no such entity, the location of the\n/// type that will have pointer type.\n///\n/// \\param Entity The name of the entity that involves the pointer\n/// type, if known.\n///\n/// \\returns A suitable pointer type, if there are no\n/// errors. Otherwise, returns a NULL type.\nQualType Sema::BuildPointerType(QualType T, SourceLocation Loc, DeclarationName Entity) {\n  if (getLangOpts().HLSL && Loc.isValid()) {\n    Diag(Loc, diag::err_hlsl_pointers_unsupported) << 0;"},{F,2008,"/// Build a reference type.\n///\n/// \\param T The type to which we\'ll be building a reference.\n///\n/// \\param Loc The location of the entity whose type involves this\n/// reference type or, if there is no such entity, the location of the\n/// type that will have reference type.\n///\n/// \\param Entity The name of the entity that involves the reference\n/// type, if known.\n///\n/// \\returns A suitable reference type, if there are no\n/// errors. Otherwise, returns a NULL type.\nQualType Sema::BuildReferenceType(QualType T, bool SpelledAsLValue, SourceLocation Loc, DeclarationName Entity) {\n  if (getLangOpts().HLSL && Loc.isValid()) {\n    Diag(Loc, diag::err_hlsl_pointers_unsupported) << 1;"},{F,2715,"/// Build a member pointer type \\c T Class::*.\n///\n/// \\param T the type to which the member pointer refers.\n/// \\param Class the class type into which the member pointer points.\n/// \\param Loc the location where this type begins\n/// \\param Entity the name of the entity that will have this member pointer type\n///\n/// \\returns a member pointer type, if successful, or a NULL type if there was\n/// an error.\nQualType Sema::BuildMemberPointerType(QualType T, QualType Class, SourceLocation Loc, DeclarationName Entity) {\n  if (getLangOpts().HLSL && Loc.isValid()) {\n    Diag(Loc, diag::err_hlsl_pointers_unsupported) << 0;"}}
},
},
["note_it_delegates_to"]={
["err_hlsl_separate_attr_arg_and_number"]={
[c]="it delegates to",
[j]="wrong argument format for hlsl attribute, use A instead",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="it delegates to",
[e]="wrong argument format for hlsl attribute, use %0 instead",
[b]=q,
[f]=n,
[a]="it delegates to",
[g]="wrong argument format for hlsl attribute, use (.*?) instead",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"6118d6642b8f",1304488644,"Implement a better version of delegating constructor cycle detection."}
[b]={"e3fd0b20731f",1658170225,"[HLSL] Add resource binding attribute for HLSL."},
[k]={{"clang/lib/Parse/ParseHLSL.cpp",101,"static void fixSeparateAttrArgAndNumber(StringRef ArgStr, SourceLocation ArgLoc, Token Tok, ArgsVector &ArgExprs, Parser &P, ASTContext &Ctx, Preprocessor &PP) {\n  P.Diag(ArgLoc, diag::err_hlsl_separate_attr_arg_and_number) << FixedArg << FixItHint::CreateReplacement(SourceRange(ArgLoc, EndNumLoc), FixedArg);"}}
},
},
["note_ivar_decl"]={
["err_hlsl_unsupported_register_number"]={
[c]="instance variable is declared here",
[j]="register number should be an integer",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="instance variable is declared here",
[e]="register number should be an integer",
[b]=q,
[f]=n,
[a]="instance variable is declared here",
[g]="register number should be an integer",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"5921b83f5413",1269370942,"Improve diagnostic for @property/ivar type mismatch by including the types of the"}
[b]={M,1625925174,N},
[k]={{v,6411,"static void handleHLSLResourceBindingAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  // Validate.\n  if (!Slot.empty()) {\n    if (SlotNum.getAsInteger(10, Num)) {\n      S.Diag(ArgLoc, diag::err_hlsl_unsupported_register_number);"}}
},
},
["note_lambda_capture_initializer"]={
["err_hlsl_unsupported_register_type"]={
[c]="...captured......",
[j]="invalid resource class specifier \'A\' used; expected \'b\', \'s\', \'t\', or \'u\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{implicitly |}2captured%select{| by reference}3%select{%select{ due to use|}2 here| via initialization of lambda capture %0}1",
[e]="invalid resource class specifier \'%0\' used; expected \'b\', \'s\', \'t\', or \'u\'",
[b]=q,
[f]=n,
[a]="(?:implicitly |)captured(?:| by reference)(?:(?: due to use|) here| via initialization of lambda capture (.*?))",
[g]="invalid resource class specifier \'(.*?)\' used; expected \'b\', \'s\', \'t\', or \'u\'",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={Mb,1590001902,Nb}
[b]={M,1625925174,N},
[k]={{v,6404,"static void handleHLSLResourceBindingAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  // Validate.\n  if (!Slot.empty()) {\n    default:\n      S.Diag(ArgLoc, diag::err_hlsl_unsupported_register_type) << Slot.substr(0, 1);"}}
},
},
["note_lambda_decl"]={
["err_iboutletcollection_builtintype"]={
[c]="lambda expression begins here",
[j]="type argument of iboutletcollection attribute cannot be a builtin type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="lambda expression begins here",
[e]="type argument of iboutletcollection attribute cannot be a builtin type",
[b]=q,
[f]=n,
[a]="lambda expression begins here",
[g]="type argument of iboutletcollection attribute cannot be a builtin type",
[g]=p,
[h]=a,
[e]=Bc,
[i]=o,
[i]={"24af85047046",1328309257,"Implement implicit capture for lambda expressions."}
[b]={"9d7d3d84ac95",1282087156,"Diagnose if type of iboutletcollection attribute is a builtin type."},
[k]={{v,1375,"static void handleIBOutletCollection(Sema &S, Decl *D, const ParsedAttr &AL) {\n  // Diagnose use of non-object type in iboutletcollection attribute.\n  // FIXME. Gnu attribute extension ignores use of builtin types in\n  // attributes. So, __attribute__((iboutletcollection(char))) will be\n  // treated as __attribute__((iboutletcollection())).\n  if (!QT->isObjCIdType() && !QT->isObjCObjectType()) {\n    S.Diag(AL.getLoc(), QT->isBuiltinType() ? diag::err_iboutletcollection_builtintype : diag::err_iboutletcollection_type) << QT;"}}
},
},
["note_lambda_default_capture_fixit"]={
["err_iboutletcollection_type"]={
[c]="default capture by ...",
[j]="invalid type A as argument of iboutletcollection attribute",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="default capture by %select{value|reference}0",
[e]="invalid type %0 as argument of iboutletcollection attribute",
[b]=q,
[f]=n,
[a]="default capture by (?:value|reference)",
[g]="invalid type (.*?) as argument of iboutletcollection attribute",
[g]=p,
[h]=a,
[e]=Bc,
[i]=o,
[i]={Mb,1590001902,Nb}
[b]={"b5d59b66c27e",1282076592,"Patch to add type parameter support for attribute iboutletcollection."},
[k]={{v,1360,"static void handleIBOutletCollection(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (AL.hasParsedType())\n  else {\n    if (!PT) {\n      S.Diag(AL.getLoc(), diag::err_iboutletcollection_type) << \"NSObject\";"},{v,1375,"static void handleIBOutletCollection(Sema &S, Decl *D, const ParsedAttr &AL) {\n  // Diagnose use of non-object type in iboutletcollection attribute.\n  // FIXME. Gnu attribute extension ignores use of builtin types in\n  // attributes. So, __attribute__((iboutletcollection(char))) will be\n  // treated as __attribute__((iboutletcollection())).\n  if (!QT->isObjCIdType() && !QT->isObjCObjectType()) {\n    S.Diag(AL.getLoc(), QT->isBuiltinType() ? diag::err_iboutletcollection_builtintype : diag::err_iboutletcollection_type) << QT;"}}
},
},
["note_lambda_substitution_here"]={
["err_ice_ambiguous_conversion"]={
[c]="while substituting into a lambda expression here",
[j]="ambiguous conversion from type A to an integral or unscoped enumeration type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="while substituting into a lambda expression here",
[e]="ambiguous conversion from type %0 to an integral or unscoped enumeration type",
[b]=q,
[f]=n,
[a]="while substituting into a lambda expression here",
[g]="ambiguous conversion from type (.*?) to an integral or unscoped enumeration type",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={N,1625925174,O}
[b]={"f4c51d9d7613",1328349193,"In C++11 mode, when an integral constant expression is desired and we have a"},
[k]={{q,15500,"ExprResult Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, VerifyICEDiagnoser &Diagnoser, AllowFoldKind CanFold) {\n  if (getLangOpts().CPlusPlus11) {\n    class CXX11ConvertDiagnoser : public ICEConvertDiagnoser {\n      SemaDiagnosticBuilder diagnoseAmbiguous(Sema &S, SourceLocation Loc, QualType T) override { return S.Diag(Loc, diag::err_ice_ambiguous_conversion) << T; }"}}
},
},
["note_lambda_this_capture_fixit"]={
["err_ice_explicit_conversion"]={
[c]="explicitly capture \'this\'",
[j]="integral constant expression requires explicit conversion from A to B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="explicitly capture \'this\'",
[e]="integral constant expression requires explicit conversion from %0 to %1",
[b]=q,
[f]=n,
[a]="explicitly capture \'this\'",
[g]="integral constant expression requires explicit conversion from (.*?) to (.*?)",
[g]=p,
[h]=a,
[e]=Bc,
[i]=o,
[i]={Mb,1590001902,Nb}
[b]={"f4c51d9d7613",1328349193,"In C++11 mode, when an integral constant expression is desired and we have a"},
[k]={{q,15496,"ExprResult Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, VerifyICEDiagnoser &Diagnoser, AllowFoldKind CanFold) {\n  if (getLangOpts().CPlusPlus11) {\n    class CXX11ConvertDiagnoser : public ICEConvertDiagnoser {\n      SemaDiagnosticBuilder diagnoseExplicitConv(Sema &S, SourceLocation Loc, QualType T, QualType ConvTy) override { return S.Diag(Loc, diag::err_ice_explicit_conversion) << T << ConvTy; }"}}
},
},
["note_lambda_to_block_conv"]={
["err_ice_incomplete_type"]={
[c]="implicit capture of lambda object due to conversion to block pointer here",
[j]="integral constant expression has incomplete class type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="implicit capture of lambda object due to conversion to block pointer here",
[e]="integral constant expression has incomplete class type %0",
[b]=q,
[f]=n,
[a]="implicit capture of lambda object due to conversion to block pointer here",
[g]="integral constant expression has incomplete class type (.*?)",
[g]=p,
[h]=a,
[e]=Bc,
[i]=o,
[i]={"d3b672c38545",1329354376,"Implicitly define a lambda\'s conversion functions (to function"}
[b]={"f4c51d9d7613",1328349193,"In C++11 mode, when an integral constant expression is desired and we have a"},
[k]={{q,15494,"ExprResult Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, VerifyICEDiagnoser &Diagnoser, AllowFoldKind CanFold) {\n  if (getLangOpts().CPlusPlus11) {\n    class CXX11ConvertDiagnoser : public ICEConvertDiagnoser {\n      SemaDiagnosticBuilder diagnoseIncomplete(Sema &S, SourceLocation Loc, QualType T) override { return S.Diag(Loc, diag::err_ice_incomplete_type) << T; }"}}
},
},
["note_lambda_variable_capture_fixit"]={
["err_ice_not_integral"]={
[c]="capture A by ...",
[j]="... constant expression must have ... type, not A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="capture %0 by %select{value|reference}1",
[e]="%select{integer|integral}1 constant expression must have %select{integer|integral or unscoped enumeration}1 type, not %0",
[b]=q,
[f]=n,
[a]="capture (.*?) by (?:value|reference)",
[g]="(?:integer|integral) constant expression must have (?:integer|integral or unscoped enumeration) type, not (.*?)",
[g]=p,
[h]=a,
[e]=Bc,
[i]=o,
[i]={Mb,1590001902,Nb}
[b]={"f4c51d9d7613",1328349193,"In C++11 mode, when an integral constant expression is desired and we have a"},
[k]={{q,15452,"ExprResult Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, AllowFoldKind CanFold) {\n  class SimpleICEDiagnoser : public VerifyICEDiagnoser {\n    SemaDiagnosticBuilder diagnoseNotICEType(Sema &S, SourceLocation Loc, QualType T) override { return S.Diag(Loc, diag::err_ice_not_integral) << T << S.LangOpts.CPlusPlus; }"}}
},
},
["note_lifetime_extending_member_declared_here"]={
["err_ice_too_large"]={
[c]="... declared here",
[j]="integer constant expression evaluates to value A that cannot be represented in a B-bit ... integer type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{%select{reference|\'std::initializer_list\'}0 member|member with %select{reference|\'std::initializer_list\'}0 subobject}1 declared here",
[e]="integer constant expression evaluates to value %0 that cannot be represented in a %1-bit %select{signed|unsigned}2 integer type",
[b]=q,
[f]=n,
[a]="(?:(?:reference|\'std\\:\\:initializer_list\') member|member with (?:reference|\'std\\:\\:initializer_list\') subobject) declared here",
[g]="integer constant expression evaluates to value (.*?) that cannot be represented in a (.*?)\\-bit (?:signed|unsigned) integer type",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"0a9969b36b16",1531786301,"Restructure checking for, and warning on, lifetime extension."}
[b]={"31f42318d833",1406213483,"Improving the \"integer constant too large\" diagnostics based on post-commit feedback from Richard Sm..."},
[k]={{v,210,"/// If Expr is a valid integer constant, get the value of the integer\n/// expression and return success or failure. May output an error.\n///\n/// Negative argument is implicitly converted to unsigned, unless\n/// \\p StrictlyUnsigned is true.\ntemplate <typename AttrInfo> static bool checkUInt32Argument(Sema &S, const AttrInfo &AI, const Expr *Expr, uint32_t &Val, unsigned Idx = UINT_MAX, bool StrictlyUnsigned = false) {\n  if (!I->isIntN(32)) {\n    S.Diag(Expr->getExprLoc(), diag::err_ice_too_large) << toString(*I, 10, false) << 32 << /* Unsigned */ 1;"},{v,234,"/// Wrapper around checkUInt32Argument, with an extra check to be sure\n/// that the result will fit into a regular (signed) int. All args have the same\n/// purpose as they do in checkUInt32Argument.\ntemplate <typename AttrInfo> static bool checkPositiveIntArgument(Sema &S, const AttrInfo &AI, const Expr *Expr, int &Val, unsigned Idx = UINT_MAX) {\n  if (UVal > (uint32_t)std::numeric_limits<int>::max()) {\n    S.Diag(Expr->getExprLoc(), diag::err_ice_too_large) << toString(I, 10, false) << 32 << /* Unsigned */ 0;"},{v,4961,"// Checks whether an argument of launch_bounds attribute is\n// acceptable, performs implicit conversion to Rvalue, and returns\n// non-nullptr Expr result on success. Otherwise, it returns nullptr\n// and may output an error.\nstatic Expr *makeLaunchBoundsArgExpr(Sema &S, Expr *E, const CUDALaunchBoundsAttr &AL, const unsigned Idx) {\n  // Make sure we can fit it in 32 bits.\n  if (!I->isIntN(32)) {\n    S.Diag(E->getExprLoc(), diag::err_ice_too_large) << toString(*I, 10, false) << 32 << /* Unsigned */ 1;"}}
},
},
["note_local_decl_close_match"]={
["err_id_after_template_in_nested_name_spec"]={
[c]="local declaration nearly matches",
[j]="expected template name after \'template\' keyword in nested name specifier",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="local declaration nearly matches",
[e]="expected template name after \'template\' keyword in nested name specifier",
[b]=q,
[f]=n,
[a]="local declaration nearly matches",
[g]="expected template name after \'template\' keyword in nested name specifier",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"114394f8246f",1376022901,"Implement [class.friend]p11\'s special name lookup rules for friend declarations"}
[b]={z,1236199783,A},
[k]={{V,288,"/// Parse global scope or nested-name-specifier if present.\n///\n/// Parses a C++ global scope specifier (\'::\') or nested-name-specifier (which\n/// may be preceded by \'::\'). Note that this routine will not parse ::new or\n/// ::delete; it will just leave them in the token stream.\n///\n///      \'::\'[opt] nested-name-specifier\n///      \'::\'\n///\n///      nested-name-specifier:\n///        type-name \'::\'\n///        namespace-name \'::\'\n///        nested-name-specifier identifier \'::\'\n///        nested-name-specifier \'template\'[opt] simple-template-id \'::\'\n///\n///\n/// \\param SS the scope specifier that will be set to the parsed\n/// nested-name-specifier (or empty)\n///\n/// \\param ObjectType if this nested-name-specifier is being parsed following\n/// the \".\" or \"->\" of a member access expression, this parameter provides the\n/// type of the object whose members are being accessed.\n///\n/// \\param ObjectHadErrors if this unqualified-id occurs within a member access\n/// expression, indicates whether the original subexpressions had any errors.\n/// When true, diagnostics for missing \'template\' keyword will be supressed.\n///\n/// \\param EnteringContext whether we will be entering into the context of\n/// the nested-name-specifier after parsing it.\n///\n/// \\param MayBePseudoDestructor When non-NULL, points to a flag that\n/// indicates whether this nested-name-specifier may be part of a\n/// pseudo-destructor name. In this case, the flag will be set false\n/// if we don\'t actually end up parsing a destructor name. Moreover,\n/// if we do end up determining that we are parsing a destructor name,\n/// the last component of the nested-name-specifier is not parsed as\n/// part of the scope specifier.\n///\n/// \\param IsTypename If \\c true, this nested-name-specifier is known to be\n/// part of a type name. This is used to improve error recovery.\n///\n/// \\param LastII When non-NULL, points to an IdentifierInfo* that will be\n/// filled in with the leading identifier in the last component of the\n/// nested-name-specifier, if any.\n///\n/// \\param OnlyNamespace If true, only considers namespaces in lookup.\n///\n///\n/// \\returns true if there was an error parsing a scope specifier\nbool Parser::ParseOptionalCXXScopeSpecifier(CXXScopeSpec &SS, ParsedType ObjectType, bool ObjectHadErrors, bool EnteringContext, bool *MayBePseudoDestructor, bool IsTypename, IdentifierInfo **LastII, bool OnlyNamespace, bool InUsingDeclaration) {\n  while (true) {\n    // Parse the optional \'template\' keyword, then make sure we have\n    // \'identifier <\' after it.\n    if (Tok.is(tok::kw_template)) {\n      if (Tok.is(tok::identifier)) {\n      } else if (Tok.is(tok::kw_operator)) {\n        if (TemplateName.getKind() != UnqualifiedIdKind::IK_OperatorFunctionId && TemplateName.getKind() != UnqualifiedIdKind::IK_LiteralOperatorId) {\n          Diag(TemplateName.getSourceRange().getBegin(), diag::err_id_after_template_in_nested_name_spec) << TemplateName.getSourceRange();"}}
},
},
["note_local_decl_close_param_match"]={
["err_ident_list_in_fn_declaration"]={
[c]="type of A parameter of local declaration does not match definition (B vs C)",
[j]="a parameter list without types is only allowed in a function definition",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="type of %ordinal0 parameter of local declaration does not match definition%diff{ ($ vs $)|}1,2",
[e]="a parameter list without types is only allowed in a function definition",
[b]=q,
[f]=n,
[a]="type of (.*?) parameter of local declaration does not match definition(?: \\((.*?) vs (.*?)\\)|)",
[g]="a parameter list without types is only allowed in a function definition",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"114394f8246f",1376022901,"Implement [class.friend]p11\'s special name lookup rules for friend declarations"}
[b]={z,1236199783,A},
[k]={{F,4805,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n  for (unsigned i = 0, e = D.getNumTypeObjects(); i != e; ++i) {\n    case DeclaratorChunk::Function: {\n      // OpenCL disallows functions without a prototype, but it doesn\'t enforce\n      // strict prototypes as in C2x because it allows a function definition to\n      // have an identifier list. See OpenCL 3.0 6.11/g for more details.\n      if (!FTI.NumParams && !FTI.isVariadic && !LangOpts.requiresStrictPrototypes() && !LangOpts.OpenCL) {\n      } else {\n        if (FTI.NumParams && FTI.Params[0].Param == nullptr) {\n          S.Diag(FTI.Params[0].IdentLoc, diag::err_ident_list_in_fn_declaration);"}}
},
},
["note_local_var_initializer"]={
["err_ifunc_resolver_return"]={
[c]="... variable ...here",
[j]="ifunc resolver function must return a pointer",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{via initialization of|binding reference}0 variable %select{%2 |}1here",
[e]="ifunc resolver function must return a pointer",
[b]=q,
[f]=n,
[a]="(?:via initialization of|binding reference) variable (?:(.*?) |)here",
[g]="ifunc resolver function must return a pointer",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"afe48f9d68e4",1532380882,"Fold -Wreturn-stack-address into general initialization lifetime"}
[b]={"85eda12d0937",1460360939,"[GCC] Attribute ifunc support in clang"},
[k]={{"clang/lib/CodeGen/CodeGenModule.cpp",539,"static bool checkAliasedGlobal(DiagnosticsEngine &Diags, SourceLocation Location, bool IsIFunc, const llvm::GlobalValue *Alias, const llvm::GlobalValue *&GV, const llvm::MapVector<GlobalDecl, StringRef> &MangledDeclNames, SourceRange AliasRange) {\n  if (IsIFunc) {\n    if (!FTy->getReturnType()->isPointerTy()) {\n      Diags.Report(Location, diag::err_ifunc_resolver_return);"}}
},
},
["note_lock_exclusive_and_shared"]={
["err_illegal_container_subscripting_op"]={
[c]="the other acquisition of A \'B\' is here",
[j]="illegal operation on Objective-C container subscripting",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="the other acquisition of %0 \'%1\' is here",
[e]="illegal operation on Objective-C container subscripting",
[b]=q,
[f]=n,
[a]="the other acquisition of (.*?) \'(.*?)\' is here",
[g]="illegal operation on Objective\\-C container subscripting",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"46b057681a7f",1315505978,"Thread safety: shared vs. exclusive locks"}
[b]={"e65b086e07a6",1331064356,"Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,"},
[k]={{pb,1280,"/// Check an increment or decrement of a pseudo-object expression.\nExprResult Sema::checkPseudoObjectIncDec(Scope *Sc, SourceLocation opcLoc, UnaryOperatorKind opcode, Expr *op) {\n  if (ObjCPropertyRefExpr *refExpr = dyn_cast<ObjCPropertyRefExpr>(opaqueRef)) {\n  } else if (isa<ObjCSubscriptRefExpr>(opaqueRef)) {\n    Diag(opcLoc, diag::err_illegal_container_subscripting_op);"}}
},
},
["note_locked_here"]={
["err_illegal_decl_array_of_functions"]={
[c]="A acquired here",
[j]="\'A\' declared as array of functions of type B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 acquired here",
[e]="\'%0\' declared as array of functions of type %1",
[b]=q,
[f]=n,
[a]="(.*?) acquired here",
[g]="\'(.*?)\' declared as array of functions of type (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"922866783b07",1328244326,"Thread safety analysis:"}
[b]={x,1237025389,w},
[k]={{F,2232,"/// Build an array type.\n///\n/// \\param T The type of each element in the array.\n///\n/// \\param ASM C99 array size modifier (e.g., \'*\', \'static\').\n///\n/// \\param ArraySize Expression describing the size of the array.\n///\n/// \\param Brackets The range from the opening \'[\' to the closing \']\'.\n///\n/// \\param Entity The name of the entity that involves the array\n/// type, if known.\n///\n/// \\returns A suitable array type, if there are no errors. Otherwise,\n/// returns a NULL type.\nQualType Sema::BuildArrayType(QualType T, ArrayType::ArraySizeModifier ASM, Expr *ArraySize, unsigned Quals, SourceRange Brackets, DeclarationName Entity) {\n  if (T->isFunctionType()) {\n    Diag(Loc, diag::err_illegal_decl_array_of_functions) << getPrintableNameForEntity(Entity) << T;"}}
},
},
["note_logical_instead_of_bitwise_change_operator"]={
["err_illegal_decl_array_of_references"]={
[c]="use \'A\' for a bitwise operation",
[j]="\'A\' declared as array of references of type B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use \'%0\' for a bitwise operation",
[e]="\'%0\' declared as array of references of type %1",
[b]=q,
[f]=n,
[a]="use \'(.*?)\' for a bitwise operation",
[g]="\'(.*?)\' declared as array of references of type (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"0a0ba9d883f5",1313430606,"Add fixit notes for -Wconstant-logical-operand."}
[b]={x,1237025389,w},
[k]={{F,2191,"/// Build an array type.\n///\n/// \\param T The type of each element in the array.\n///\n/// \\param ASM C99 array size modifier (e.g., \'*\', \'static\').\n///\n/// \\param ArraySize Expression describing the size of the array.\n///\n/// \\param Brackets The range from the opening \'[\' to the closing \']\'.\n///\n/// \\param Entity The name of the entity that involves the array\n/// type, if known.\n///\n/// \\returns A suitable array type, if there are no errors. Otherwise,\n/// returns a NULL type.\nQualType Sema::BuildArrayType(QualType T, ArrayType::ArraySizeModifier ASM, Expr *ArraySize, unsigned Quals, SourceRange Brackets, DeclarationName Entity) {\n  if (getLangOpts().CPlusPlus) {\n    // C++ [dcl.array]p1:\n    //  T is called the array element type; this type shall not be a reference\n    //  type, the (possibly cv-qualified) type void, a function type or an\n    //  abstract class type.\n    //\n    // C++ [dcl.array]p3:\n    //  When several \"array of\" specifications are adjacent, [...] only the\n    //  first of the constant expressions that specify the bounds of the arrays\n    //  may be omitted.\n    //\n    // Note: function types are handled in the common path with C.\n    if (T->isReferenceType()) {\n      Diag(Loc, diag::err_illegal_decl_array_of_references) << getPrintableNameForEntity(Entity) << T;"}}
},
},
["note_logical_instead_of_bitwise_remove_constant"]={
["err_illegal_decl_mempointer_in_nonclass"]={
[c]="remove constant to silence this warning",
[j]="\'A\' does not point into a class",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="remove constant to silence this warning",
[e]="\'%0\' does not point into a class",
[b]=q,
[f]=n,
[a]="remove constant to silence this warning",
[g]="\'(.*?)\' does not point into a class",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"0a0ba9d883f5",1313430606,"Add fixit notes for -Wconstant-logical-operand."}
[b]={x,1237025389,w},
[k]={{F,4999,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n  for (unsigned i = 0, e = D.getNumTypeObjects(); i != e; ++i) {\n    case DeclaratorChunk::MemberPointer: {\n      if (SS.isInvalid()) {\n      } else if (S.isDependentScopeSpecifier(SS) || isa_and_nonnull<CXXRecordDecl>(S.computeDeclContext(SS))) {\n      } else {\n        S.Diag(DeclType.Mem.Scope().getBeginLoc(), diag::err_illegal_decl_mempointer_in_nonclass) << (D.getIdentifier() ? D.getIdentifier()->getName() : \"type name\") << DeclType.Mem.Scope().getRange();"}}
},
},
["note_logical_not_fix"]={
["err_illegal_decl_mempointer_to_reference"]={
[c]="add parentheses after the \'!\' to evaluate the ... first",
[j]="\'A\' declared as a member pointer to a reference of type B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="add parentheses after the \'!\' to evaluate the %select{comparison|bitwise operator}0 first",
[e]="\'%0\' declared as a member pointer to a reference of type %1",
[b]=q,
[f]=n,
[a]="add parentheses after the \'\\!\' to evaluate the (?:comparison|bitwise operator) first",
[g]="\'(.*?)\' declared as a member pointer to a reference of type (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"bb4b894e0b2d",1370890327,"Add a new warning, -Wlogical-not-parentheses, to -Wparentheses."}
[b]={"124f34c15014",1246320417,"Make an error message more clear."},
[k]={{F,2695,"/// Build a member pointer type \\c T Class::*.\n///\n/// \\param T the type to which the member pointer refers.\n/// \\param Class the class type into which the member pointer points.\n/// \\param Loc the location where this type begins\n/// \\param Entity the name of the entity that will have this member pointer type\n///\n/// \\returns a member pointer type, if successful, or a NULL type if there was\n/// an error.\nQualType Sema::BuildMemberPointerType(QualType T, QualType Class, SourceLocation Loc, DeclarationName Entity) {\n  // C++ 8.3.3p3: A pointer to member shall not point to ... a member\n  //  with reference type, or \"cv void.\"\n  if (T->isReferenceType()) {\n    Diag(Loc, diag::err_illegal_decl_mempointer_to_reference) << getPrintableNameForEntity(Entity) << T;"}}
},
},
["note_logical_not_silence_with_parens"]={
["err_illegal_decl_mempointer_to_void"]={
[c]="add parentheses around left hand side expression to silence this warning",
[j]="\'A\' declared as a member pointer to void",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="add parentheses around left hand side expression to silence this warning",
[e]="\'%0\' declared as a member pointer to void",
[b]=q,
[f]=n,
[a]="add parentheses around left hand side expression to silence this warning",
[g]="\'(.*?)\' declared as a member pointer to void",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"bb4b894e0b2d",1370890327,"Add a new warning, -Wlogical-not-parentheses, to -Wparentheses."}
[b]={x,1237025389,w},
[k]={{F,2700,"/// Build a member pointer type \\c T Class::*.\n///\n/// \\param T the type to which the member pointer refers.\n/// \\param Class the class type into which the member pointer points.\n/// \\param Loc the location where this type begins\n/// \\param Entity the name of the entity that will have this member pointer type\n///\n/// \\returns a member pointer type, if successful, or a NULL type if there was\n/// an error.\nQualType Sema::BuildMemberPointerType(QualType T, QualType Class, SourceLocation Loc, DeclarationName Entity) {\n  if (T->isVoidType()) {\n    Diag(Loc, diag::err_illegal_decl_mempointer_to_void) << getPrintableNameForEntity(Entity);"}}
},
},
["note_loop_iteration_here"]={
["err_illegal_decl_pointer_to_reference"]={
[c]="... here",
[j]="\'A\' declared as a pointer to a reference of type B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{decremented|incremented}0 here",
[e]="\'%0\' declared as a pointer to a reference of type %1",
[b]=q,
[f]=n,
[a]="(?:decremented|incremented) here",
[g]="\'(.*?)\' declared as a pointer to a reference of type (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"4e7c9628917a",1375824714,"Add a new warning to -Wloop-analysis to detect suspicious increments or"}
[b]={x,1237025389,w},
[k]={{F,1916,"/// Build a pointer type.\n///\n/// \\param T The type to which we\'ll be building a pointer.\n///\n/// \\param Loc The location of the entity whose type involves this\n/// pointer type or, if there is no such entity, the location of the\n/// type that will have pointer type.\n///\n/// \\param Entity The name of the entity that involves the pointer\n/// type, if known.\n///\n/// \\returns A suitable pointer type, if there are no\n/// errors. Otherwise, returns a NULL type.\nQualType Sema::BuildPointerType(QualType T, SourceLocation Loc, DeclarationName Entity) {\n  if (T->isReferenceType()) {\n    Diag(Loc, diag::err_illegal_decl_pointer_to_reference) << getPrintableNameForEntity(Entity) << T;"}}
},
},
["note_macro_expansion_here"]={
["err_illegal_decl_reference_to_reference"]={
[c]="expansion of macro A requested here",
[j]="A declared as a reference to a reference",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="expansion of macro %0 requested here",
[e]="%0 declared as a reference to a reference",
[b]=q,
[f]=n,
[a]="expansion of macro (.*?) requested here",
[g]="(.*?) declared as a reference to a reference",
[g]=p,
[h]=a,
[e]=C,
[i]=s,
[i]={"023dd1eefad3",1550117597,"Print a note to the called macro when diagnosing err_embedded_directive"}
[b]={z,1236199783,A},
[k]={{C,5732,"/// ParseDeclaratorInternal - Parse a C or C++ declarator. The direct-declarator\n/// is parsed by the function passed to it. Pass null, and the direct-declarator\n/// isn\'t parsed at all, making this function effectively parse the C++\n/// ptr-operator production.\n///\n/// If the grammar of this construct is extended, matching changes must also be\n/// made to TryParseDeclarator and MightBeDeclarator, and possibly to\n/// isConstructorDeclarator.\n///\n///      declarator: [C99 6.7.5] [C++ 8p4, dcl.decl]\n/// [C]    pointer[opt] direct-declarator\n/// [C++]  direct-declarator\n/// [C++]  ptr-operator declarator\n///\n///      pointer: [C99 6.7.5]\n///        \'*\' type-qualifier-list[opt]\n///        \'*\' type-qualifier-list[opt] pointer\n///\n///      ptr-operator:\n///        \'*\' cv-qualifier-seq[opt]\n///        \'&\'\n/// [C++0x] \'&&\'\n/// [GNU]  \'&\' restrict[opt] attributes[opt]\n/// [GNU?]  \'&&\' restrict[opt] attributes[opt]\n///        \'::\'[opt] nested-name-specifier \'*\' cv-qualifier-seq[opt]\nvoid Parser::ParseDeclaratorInternal(Declarator &D, DirectDeclParseFunction DirectDeclParser) {\n  if (Kind == tok::star || Kind == tok::caret) {\n  } else {\n    if (D.getNumTypeObjects() > 0) {\n      if (InnerChunk.Kind == DeclaratorChunk::Reference) {\n        if (const IdentifierInfo *II = D.getIdentifier())\n          Diag(InnerChunk.Loc, diag::err_illegal_decl_reference_to_reference) << II;"},{C,5734,"/// ParseDeclaratorInternal - Parse a C or C++ declarator. The direct-declarator\n/// is parsed by the function passed to it. Pass null, and the direct-declarator\n/// isn\'t parsed at all, making this function effectively parse the C++\n/// ptr-operator production.\n///\n/// If the grammar of this construct is extended, matching changes must also be\n/// made to TryParseDeclarator and MightBeDeclarator, and possibly to\n/// isConstructorDeclarator.\n///\n///      declarator: [C99 6.7.5] [C++ 8p4, dcl.decl]\n/// [C]    pointer[opt] direct-declarator\n/// [C++]  direct-declarator\n/// [C++]  ptr-operator declarator\n///\n///      pointer: [C99 6.7.5]\n///        \'*\' type-qualifier-list[opt]\n///        \'*\' type-qualifier-list[opt] pointer\n///\n///      ptr-operator:\n///        \'*\' cv-qualifier-seq[opt]\n///        \'&\'\n/// [C++0x] \'&&\'\n/// [GNU]  \'&\' restrict[opt] attributes[opt]\n/// [GNU?]  \'&&\' restrict[opt] attributes[opt]\n///        \'::\'[opt] nested-name-specifier \'*\' cv-qualifier-seq[opt]\nvoid Parser::ParseDeclaratorInternal(Declarator &D, DirectDeclParseFunction DirectDeclParser) {\n  if (Kind == tok::star || Kind == tok::caret) {\n  } else {\n    if (D.getNumTypeObjects() > 0) {\n      if (InnerChunk.Kind == DeclaratorChunk::Reference) {\n        if (const IdentifierInfo *II = D.getIdentifier())\n        else\n          Diag(InnerChunk.Loc, diag::err_illegal_decl_reference_to_reference) << \"type name\";"}}
},
},
["note_macro_here"]={
["err_illegal_initializer"]={
[c]="macro A defined here",
[j]="illegal initializer (only variables can be initialized)",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="macro %0 defined here",
[e]="illegal initializer (only variables can be initialized)",
[b]=q,
[f]=n,
[a]="macro (.*?) defined here",
[g]="illegal initializer \\(only variables can be initialized\\)",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={"19b02cd7fc91",1340409548,"Minor improvements to some C99 variadic-macro-related diagnostics."}
[b]={x,1237025389,w},
[k]={{p,11467,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n  if (!VDecl) {\n    Diag(RealDecl->getLocation(), diag::err_illegal_initializer);"},{r,15506,"void Sema::ActOnPureSpecifier(Decl *D, SourceLocation ZeroLoc) {\n  if (D->getFriendObjectKind())\n  else if (auto *M = dyn_cast<CXXMethodDecl>(D))\n  else\n    Diag(D->getLocation(), diag::err_illegal_initializer);"}}
},
},
["note_main_change_return_type"]={
["err_illegal_initializer_type"]={
[c]="change return type to \'int\'",
[j]="illegal initializer type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="change return type to \'int\'",
[e]="illegal initializer type %0",
[b]=q,
[f]=n,
[a]="change return type to \'int\'",
[g]="illegal initializer type (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"ae73417b6955",1358382373,"Implement a fixit for -Wmain-return-type"}
[b]={x,1237025389,w},
[k]={{L,1088,"void InitListChecker::CheckListElementTypes(const InitializedEntity &Entity, InitListExpr *IList, QualType &DeclType, bool SubobjectIsDesignatorContext, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex, bool TopLevelObject) {\n  if (DeclType->isAnyComplexType() && SubobjectIsDesignatorContext) {\n  } else if (DeclType->isScalarType()) {\n  } else if (DeclType->isVectorType()) {\n  } else if (const RecordDecl *RD = getRecordDecl(DeclType)) {\n  } else if (DeclType->isArrayType()) {\n  } else if (DeclType->isVoidType() || DeclType->isFunctionType()) {\n    if (!VerifyOnly)\n      SemaRef.Diag(IList->getBeginLoc(), diag::err_illegal_initializer_type) << DeclType;"},{L,1108,"void InitListChecker::CheckListElementTypes(const InitializedEntity &Entity, InitListExpr *IList, QualType &DeclType, bool SubobjectIsDesignatorContext, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex, bool TopLevelObject) {\n  if (DeclType->isAnyComplexType() && SubobjectIsDesignatorContext) {\n  } else if (DeclType->isScalarType()) {\n  } else if (DeclType->isVectorType()) {\n  } else if (const RecordDecl *RD = getRecordDecl(DeclType)) {\n  } else if (DeclType->isArrayType()) {\n  } else if (DeclType->isVoidType() || DeclType->isFunctionType()) {\n  } else if (DeclType->isReferenceType()) {\n  } else if (DeclType->isObjCObjectType()) {\n  } else if (DeclType->isOCLIntelSubgroupAVCType() || DeclType->isSizelessBuiltinType()) {\n  } else if (DeclType->isDependentType()) {\n  } else {\n    if (!VerifyOnly)\n      SemaRef.Diag(IList->getBeginLoc(), diag::err_illegal_initializer_type) << DeclType;"}}
},
},
["note_main_remove_noreturn"]={
["err_illegal_message_expr_incomplete_type"]={
[c]="remove \'_Noreturn\'",
[j]="Objective-C message has incomplete result type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="remove \'_Noreturn\'",
[e]="Objective-C message has incomplete result type %0",
[b]=q,
[f]=n,
[a]="remove \'_Noreturn\'",
[g]="Objective\\-C message has incomplete result type (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"7ec6f3ddeb4c",1358767503,"Add a fixit for _Noreturn main,"}
[b]={"1d44608cc112",1276714564,"Make sure result type of objc++ message expression is"},
[k]={{O,2165,"/// \\param ReceiverType The type of the object receiving the\n/// message. When \\p ReceiverTypeInfo is non-NULL, this is the same\n/// type as that refers to. For a superclass send, this is the type of\n/// the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this class message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildClassMessage(TypeSourceInfo *ReceiverTypeInfo, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n  if (Method && !Method->getReturnType()->isVoidType() && RequireCompleteType(LBracLoc, Method->getReturnType(), diag::err_illegal_message_expr_incomplete_type))"},{O,2594,"/// Build an Objective-C instance message expression.\n///\n/// This routine takes care of both normal instance messages and\n/// instance messages to the superclass instance.\n///\n/// \\param Receiver The expression that computes the object that will\n/// receive this message. This may be empty, in which case we are\n/// sending to the superclass instance and \\p SuperLoc must be a valid\n/// source location.\n///\n/// \\param ReceiverType The (static) type of the object receiving the\n/// message. When a \\p Receiver expression is provided, this is the\n/// same type as that expression. For a superclass instance send, this\n/// is a pointer to the type of the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass instance message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this instance message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildInstanceMessage(Expr *Receiver, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n  if (Method && !Method->getReturnType()->isVoidType() && RequireCompleteType(LBracLoc, Method->getReturnType(), diag::err_illegal_message_expr_incomplete_type))"}}
},
},
["note_matching"]={
["err_illegal_qualifiers_on_catch_parm"]={
[c]="to match this A",
[j]="illegal qualifiers on @catch parameter",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="to match this %0",
[e]="illegal qualifiers on @catch parameter",
[b]=q,
[f]=n,
[a]="to match this (.*?)",
[g]="illegal qualifiers on @catch parameter",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={M,1236199783,L}
[b]={x,1237025389,w},
[k]={{hb,4298,"/// Build a type-check a new Objective-C exception variable declaration.\nVarDecl *Sema::BuildObjCExceptionDecl(TypeSourceInfo *TInfo, QualType T, SourceLocation StartLoc, SourceLocation IdLoc, IdentifierInfo *Id, bool Invalid) {\n  // An @catch parameter must be an unqualified object pointer type;\n  // FIXME: Recover from \"NSObject foo\" by inserting the * in \"NSObject *foo\"?\n  if (Invalid) {\n  } else if (T->isDependentType()) {\n  } else if (T->isObjCQualifiedIdType()) {\n    Diag(IdLoc, diag::err_illegal_qualifiers_on_catch_parm);"}}
},
},
["note_max_tokens_total_override"]={
["err_illegal_super_cast"]={
[c]="total token limit set here",
[j]="cannot cast \'super\' (it isn\'t an expression)",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="total token limit set here",
[e]="cannot cast \'super\' (it isn\'t an expression)",
[b]=q,
[f]=n,
[a]="total token limit set here",
[g]="cannot cast \'super\' \\(it isn\'t an expression\\)",
[g]=p,
[h]=a,
[e]=p,
[i]=s,
[i]={"739b410f1ff5",1570627358,"Add a warning, flags and pragmas to limit the number of pre-processor tokens in a translation unit"}
[b]={x,1237025389,w},
[k]={{Fb,2826,"/// ParseParenExpression - This parses the unit that starts with a \'(\' token,\n/// based on what is allowed by ExprType.  The actual thing parsed is returned\n/// in ExprType. If stopIfCastExpr is true, it will only return the parsed type,\n/// not the parsed cast-expression.\n///\n/// \\verbatim\n///      primary-expression: [C99 6.5.1]\n///        \'(\' expression \')\'\n/// [GNU]  \'(\' compound-statement \')\'      (if !ParenExprOnly)\n///      postfix-expression: [C99 6.5.2]\n///        \'(\' type-name \')\' \'{\' initializer-list \'}\'\n///        \'(\' type-name \')\' \'{\' initializer-list \',\' \'}\'\n///      cast-expression: [C99 6.5.4]\n///        \'(\' type-name \')\' cast-expression\n/// [ARC]  bridged-cast-expression\n/// [ARC] bridged-cast-expression:\n///        (__bridge type-name) cast-expression\n///        (__bridge_transfer type-name) cast-expression\n///        (__bridge_retained type-name) cast-expression\n///      fold-expression: [C++1z]\n///        \'(\' cast-expression fold-operator \'...\' \')\'\n///        \'(\' \'...\' fold-operator cast-expression \')\'\n///        \'(\' cast-expression fold-operator \'...\'\n///                fold-operator cast-expression \')\'\n/// [OPENMP] Array shaping operation\n///      \'(\' \'[\' expression \']\' { \'[\' expression \']\' } cast-expression\n/// \\endverbatim\nExprResult Parser::ParseParenExpression(ParenParseOption &ExprType, bool stopIfCastExpr, bool isTypeCast, ParsedType &CastTy, SourceLocation &RParenLoc) {\n  // None of these cases should fall through with an invalid Result\n  // unless they\'ve already reported an error.\n  if (ExprType >= CompoundStmt && Tok.is(tok::l_brace)) {\n  } else if (ExprType >= CompoundLiteral && BridgeCast) {\n  } else if (ExprType >= CompoundLiteral && isTypeIdInParens(isAmbiguousTypeId)) {\n    // If our type is followed by an identifier and either \':\' or \']\', then\n    // this is probably an Objective-C message send where the leading \'[\' is\n    // missing. Recover as if that were the case.\n    if (!DeclaratorInfo.isInvalidType() && Tok.is(tok::identifier) && !InMessageExpression && getLangOpts().ObjC && (NextToken().is(tok::colon) || NextToken().is(tok::r_square))) {\n    } else {\n      if (ExprType == CastExpr) {\n        // Reject the cast of super idiom in ObjC.\n        if (Tok.is(tok::identifier) && getLangOpts().ObjC && Tok.getIdentifierInfo() == Ident_super && getCurScope()->isInObjcMethodScope() && GetLookAheadToken(1).isNot(tok::period)) {\n          Diag(Tok.getLocation(), diag::err_illegal_super_cast) << SourceRange(OpenLoc, RParenLoc);"}}
},
},
["note_meant_to_use_typename"]={
["err_illegal_union_or_anon_struct_member"]={
[c]="did you mean to use \'typename\'?",
[j]="... member A has a non-trivial ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="did you mean to use \'typename\'?",
[e]="%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",
[b]=q,
[f]=n,
[a]="did you mean to use \'typename\'\\?",
[g]="(?:anonymous struct|union) member (.*?) has a non\\-trivial (?:default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor)",
[g]=p,
[h]=a,
[e]="Generics Issue",
[i]=o,
[i]={"3a98e51823be",1518100678,"[Parser][FixIt] Better diagnostics for \"typedef\" instead of \"typename\" typo"}
[b]={"33aee3934acf",1281979628,"Emit diagnostic error when the field of an anonymous struct is non trivial."},
[k]={{p,16039,"bool Sema::CheckNontrivialField(FieldDecl *FD) {\n  if (const RecordType *RT = EltTy->getAs<RecordType>()) {\n    if (RDecl->getDefinition()) {\n      if (member != CXXInvalid) {\n        Diag(FD->getLocation(), getLangOpts().CPlusPlus11 ? diag::warn_cxx98_compat_nontrivial_union_or_anon_struct_member : diag::err_illegal_union_or_anon_struct_member) << FD->getParent()->isUnion() << FD->getDeclName() << member;"}}
},
},
["note_member_declared_at"]={
["err_illegal_use_of_flt_eval_macro"]={
[c]="member is declared here",
[j]="\'__FLT_EVAL_METHOD__\' cannot be expanded inside a scope containing \'#pragma clang fp eval_method\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="member is declared here",
[e]="\'__FLT_EVAL_METHOD__\' cannot be expanded inside a scope containing \'#pragma clang fp eval_method\'",
[b]=q,
[f]=n,
[a]="member is declared here",
[g]="\'__FLT_EVAL_METHOD__\' cannot be expanded inside a scope containing \'\\#pragma clang fp eval_method\'",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"2afa8780d62a",1401279614,"Consolidate some note diagnostics"}
[b]={M,1625925174,N},
[k]={{"clang/lib/Lex/PPMacroExpansion.cpp",1532,"/// ExpandBuiltinMacro - If an identifier token is read that is to be expanded\n/// as a builtin macro, handle it and return the next token as \'Tok\'.\nvoid Preprocessor::ExpandBuiltinMacro(Token &Tok) {\n  if (II == Ident__LINE__) {\n  } else if (II == Ident__FILE__ || II == Ident__BASE_FILE__ || II == Ident__FILE_NAME__) {\n  } else if (II == Ident__DATE__) {\n  } else if (II == Ident__TIME__) {\n  } else if (II == Ident__INCLUDE_LEVEL__) {\n  } else if (II == Ident__TIMESTAMP__) {\n  } else if (II == Ident__FLT_EVAL_METHOD__) {\n    if (getLastFPEvalPragmaLocation().isValid()) {\n      Diag(Tok, diag::err_illegal_use_of_flt_eval_macro);"}}
},
},
["note_member_declared_here"]={
["err_imaginary_not_supported"]={
[c]="member A declared here",
[j]="imaginary types are not supported",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="member %0 declared here",
[e]="imaginary types are not supported",
[b]=q,
[f]=n,
[a]="member (.*?) declared here",
[g]="imaginary types are not supported",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"861eb80a3b9d",1272228908,"Improve the diagnostic when we find something we did not expect in a"}
[b]={"719a46bbf14a",1285234831,"Don\'t crash on _Imaginary."},
[k]={{F,1579,"#include \"clang/Basic/OpenCLImageTypes.def\"\n  // FIXME: Imaginary.\n  if (DS.getTypeSpecComplex() == DeclSpec::TSC_imaginary)\n    S.Diag(DS.getTypeSpecComplexLoc(), diag::err_imaginary_not_supported);"}}
},
},
["note_member_def_close_const_match"]={
["err_immediate_function_used_before_definition"]={
[c]="member declaration does not match because it ... const qualified",
[j]="immediate function A used before it is defined",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="member declaration does not match because it %select{is|is not}0 const qualified",
[e]="immediate function %0 used before it is defined",
[b]=q,
[f]=n,
[a]="member declaration does not match because it (?:is|is not) const qualified",
[g]="immediate function (.*?) used before it is defined",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"1a6eb99d45e5",1318269697,"Give nicer note when a member redeclaration has or lacks \'const\'"}
[b]={M,1625925174,N},
[k]={{r,2073,"bool Sema::CheckImmediateEscalatingFunctionDefinition(FunctionDecl *FD, const sema::FunctionScopeInfo *FSI) {\n  if (FSI->FoundImmediateEscalatingExpression) {\n    if (it != UndefinedButUsed.end()) {\n      Diag(it->second, diag::err_immediate_function_used_before_definition) << it->first;"}}
},
},
["note_member_def_close_match"]={
["err_impcast_complex_scalar"]={
[c]="member declaration nearly matches",
[j]="implicit conversion from A to B is not permitted in C++",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="member declaration nearly matches",
[e]="implicit conversion from %0 to %1 is not permitted in C++",
[b]=q,
[f]=n,
[a]="member declaration nearly matches",
[g]="implicit conversion from (.*?) to (.*?) is not permitted in C\\+\\+",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={db,1237025389,eb}
[b]={"0241637c0ea3",1502234285,"Sema: disable implicit conversion from _Complex to real types in C++."},
[k]={{y,13150,"static void CheckImplicitConversion(Sema &S, Expr *E, QualType T, SourceLocation CC, bool *ICContext = nullptr, bool IsListInit = false) {\n  // Strip complex types.\n  if (isa<ComplexType>(Source)) {\n    if (!isa<ComplexType>(Target)) {\n      return DiagnoseImpCast(S, E, T, CC, S.getLangOpts().CPlusPlus ? diag::err_impcast_complex_scalar : diag::warn_impcast_complex_scalar);"}}
},
},
["note_member_def_close_param_match"]={
["err_implementation_of_class_stub"]={
[c]="type of A parameter of member declaration does not match definition (B vs C)",
[j]="cannot declare implementation of a class declared with the \'objc_class_stub\' attribute",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="type of %ordinal0 parameter of member declaration does not match definition%diff{ ($ vs $)|}1,2",
[e]="cannot declare implementation of a class declared with the \'objc_class_stub\' attribute",
[b]=q,
[f]=n,
[a]="type of (.*?) parameter of member declaration does not match definition(?: \\((.*?) vs (.*?)\\)|)",
[g]="cannot declare implementation of a class declared with the \'objc_class_stub\' attribute",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"7d9bc633d246",1312479600,"Match type names and give more info for out-of-line function definition errors."}
[b]={"2c91c3b7af7c",1559189341,"Add the `objc_class_stub` attribute."},
[k]={{hb,3428,"// Note: For class/category implementations, allMethods is always null.\nDecl *Sema::ActOnAtEnd(Scope *S, SourceRange AtEnd, ArrayRef<Decl *> allMethods, ArrayRef<DeclGroupPtrTy> allTUVars) {\n  if (ObjCImplementationDecl *IC = dyn_cast<ObjCImplementationDecl>(ClassDecl)) {\n    if (ObjCInterfaceDecl *IDecl = IC->getClassInterface()) {\n      if (IDecl->hasAttr<ObjCClassStubAttr>())\n        Diag(IC->getLocation(), diag::err_implementation_of_class_stub);"}}
},
},
["note_member_first_declared_here"]={
["err_implicit_coroutine_std_nothrow_type_not_found"]={
[c]="member A first declared here",
[j]="std::nothrow was not found; include <new> before defining a coroutine which uses get_return_object_on_allocation_failure()",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="member %0 first declared here",
[e]="std::nothrow was not found; include <new> before defining a coroutine which uses get_return_object_on_allocation_failure()",
[b]=q,
[f]=n,
[a]="member (.*?) first declared here",
[g]="std\\:\\:nothrow was not found; include \\<new\\> before defining a coroutine which uses get_return_object_on_allocation_failure\\(\\)",
[g]=p,
[h]=a,
[e]=o,
[i]=tb,
[i]={"fc50f62caafd",1495724379,"[coroutines] Diagnose when promise types fail to declare either return_void or return_value."}
[b]={"627a63cf5081",1492334399,"[coroutines] Fix building of new/delete expressions when get_return_object_on_allocation_failure() i..."},
[k]={{eb,912,"/// Look up the std::nothrow object.\nstatic Expr *buildStdNoThrowDeclRef(Sema &S, SourceLocation Loc) {\n  if (!S.LookupQualifiedName(Result, Std)) {\n    S.Diag(Loc, diag::err_implicit_coroutine_std_nothrow_type_not_found);"}}
},
},
["note_member_reference_arrow_from_operator_arrow"]={
["err_implicit_empty_initializer"]={
[c]="\'->\' applied to return value of the operator->() declared here",
[j]="initializer for aggregate with no elements requires explicit braces",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'->\' applied to return value of the operator->() declared here",
[e]="initializer for aggregate with no elements requires explicit braces",
[b]=q,
[f]=n,
[a]="\'\\-\\>\' applied to return value of the operator\\-\\>\\(\\) declared here",
[g]="initializer for aggregate with no elements requires explicit braces",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"0c51de4ab1ae",1375292304,"Improve the diagnostic experience, including adding recovery, for"}
[b]={x,1237025389,w},
[k]={{L,898,"/// Check whether the range of the initializer \\p ParentIList from element\n/// \\p Index onwards can be used to initialize an object of type \\p T. Update\n/// \\p Index to indicate how many elements of the list were consumed.\n///\n/// This also fills in \\p StructuredList, from element \\p StructuredIndex\n/// onwards, with the fully-braced, desugared form of the initialization.\nvoid InitListChecker::CheckImplicitInitList(const InitializedEntity &Entity, InitListExpr *ParentIList, QualType T, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex) {\n  if (maxElements == 0) {\n    if (!VerifyOnly)\n      SemaRef.Diag(ParentIList->getInit(Index)->getBeginLoc(), diag::err_implicit_empty_initializer);"}}
},
},
["note_member_synthesized_at"]={
["err_implicit_instantiate_member_undefined"]={
[c]="in ... ... for A first required here",
[j]="implicit instantiation of undefined member A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in %select{implicit|defaulted}0 %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}1 for %2 first required here",
[e]="implicit instantiation of undefined member %0",
[b]=q,
[f]=n,
[a]="in (?:implicit|defaulted) (?:default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor) for (.*?) first required here",
[g]="implicit instantiation of undefined member (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"26a807d37a67",1259616290,"When we\'re trying to define an implicit virtual destructor, make sure that we have a valid delete op..."}
[b]={"8ea8fd48f2c7",1238015823,"Instantiation for member classes of class templates. Note that only"},
[k]={{K,713,"/// Determine whether we would be unable to instantiate this template (because\n/// it either has no definition, or is in the process of being instantiated).\nbool Sema::DiagnoseUninstantiableTemplate(SourceLocation PointOfInstantiation, NamedDecl *Instantiation, bool InstantiatedFromMember, const NamedDecl *Pattern, const NamedDecl *PatternDef, TemplateSpecializationKind TSK, bool Complain /*= true*/) {\n  if (PatternDef) {\n  } else if (InstantiatedFromMember) {\n    if (isa<FunctionDecl>(Instantiation)) {\n    } else {\n      Diag(PointOfInstantiation, diag::err_implicit_instantiate_member_undefined) << InstantiationTy;"}}
},
},
["note_memsize_comparison_cast_silence"]={
["err_implied_comparison_category_type_not_found"]={
[c]="explicitly cast the argument to size_t to silence this warning",
[j]="cannot ... because type \'A\' was not found; include <compare>",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="explicitly cast the argument to size_t to silence this warning",
[e]="cannot %select{use builtin operator \'<=>\'|default \'operator<=>\'}1 because type \'%0\' was not found; include <compare>",
[b]=q,
[f]=n,
[a]="explicitly cast the argument to size_t to silence this warning",
[g]="cannot (?:use builtin operator \'\\<\\=\\>\'|default \'operator\\<\\=\\>\') because type \'(.*?)\' was not found; include \\<compare\\>",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"b0869036c114",1400289198,"Tweak diagnostic wording for init list narrowing"}
[b]={"0683c0e68d31",1525727230,"[C++2a] Implement operator<=> CodeGen and ExprConstant"},
[k]={{r,9998,"QualType Sema::CheckComparisonCategoryType(ComparisonCategoryType Kind, SourceLocation Loc, ComparisonCategoryUsage Usage) {\n  // If lookup failed\n  if (!Info) {\n    Diag(Loc, diag::err_implied_comparison_category_type_not_found) << NameForDiags << (int)Usage;"}}
},
},
["note_memsize_comparison_paren"]={
["err_implied_coroutine_type_not_found"]={
[c]="did you mean to compare the result of A instead?",
[j]="A type was not found; include <coroutine> before defining a coroutine",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="did you mean to compare the result of %0 instead?",
[e]="%0 type was not found; include <coroutine> before defining a coroutine",
[b]=q,
[f]=n,
[a]="did you mean to compare the result of (.*?) instead\\?",
[g]="(.*?) type was not found; include \\<coroutine\\> before defining a coroutine",
[g]=p,
[h]=a,
[e]=o,
[i]=tb,
[i]={"b0869036c114",1400289198,"Tweak diagnostic wording for init list narrowing"}
[b]={"6dcb0eb301c7",1489028983,"[coroutines] Build and pass coroutine_handle to await_suspend"},
[k]={{eb,129,"/// Look up the std::coroutine_handle<PromiseType>.\nstatic QualType lookupCoroutineHandleType(Sema &S, QualType PromiseType, SourceLocation Loc) {\n  if (!S.LookupQualifiedName(Result, CoroNamespace)) {\n    S.Diag(Loc, diag::err_implied_coroutine_type_not_found) << \"std::coroutine_handle\";"},{eb,1707,"ClassTemplateDecl *Sema::lookupCoroutineTraits(SourceLocation KwLoc, SourceLocation FuncLoc) {\n  if (!Found) {\n    Diag(KwLoc, diag::err_implied_coroutine_type_not_found) << \"std::coroutine_traits\";"}}
},
},
["note_method_declared_at"]={
["err_implied_std_coroutine_traits_promise_type_not_class"]={
[c]="method A declared here",
[j]="this function cannot be a coroutine: A is not a class",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="method %0 declared here",
[e]="this function cannot be a coroutine: %0 is not a class",
[b]=q,
[f]=n,
[a]="method (.*?) declared here",
[g]="this function cannot be a coroutine\\: (.*?) is not a class",
[g]=p,
[h]=a,
[e]=o,
[i]=tb,
[i]={"e5c1bda4d177",1288394405,"Improve diagnostics reporting of un-implemented"}
[b]={"9f690bd80bb6",1445925765,"[coroutines] Creation of promise object, lookup of operator co_await, building"},
[k]={{eb,110,"/// Look up the std::coroutine_traits<...>::promise_type for the given\n/// function type.\nstatic QualType lookupPromiseType(Sema &S, const FunctionDecl *FD, SourceLocation KwLoc) {\n  if (!PromiseType->getAsCXXRecordDecl()) {\n    S.Diag(FuncLoc, diag::err_implied_std_coroutine_traits_promise_type_not_class) << buildElaboratedType();"}}
},
},
["note_method_return_type_change"]={
["err_implied_std_coroutine_traits_promise_type_not_found"]={
[c]="compiler has implicitly changed method A return type",
[j]="this function cannot be a coroutine: A has no member named \'promise_type\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="compiler has implicitly changed method %0 return type",
[e]="this function cannot be a coroutine: %q0 has no member named \'promise_type\'",
[b]=q,
[f]=n,
[a]="compiler has implicitly changed method (.*?) return type",
[g]="this function cannot be a coroutine\\: (.*?) has no member named \'promise_type\'",
[g]=p,
[h]=a,
[e]=o,
[i]=tb,
[i]={"b248ca55489e",1373561286,"ObjectiveC arc[qoi]: When due to change of certain methods\'"}
[b]={"9f690bd80bb6",1445925765,"[coroutines] Creation of promise object, lookup of operator co_await, building"},
[k]={{eb,97,"/// Look up the std::coroutine_traits<...>::promise_type for the given\n/// function type.\nstatic QualType lookupPromiseType(Sema &S, const FunctionDecl *FD, SourceLocation KwLoc) {\n  if (!Promise) {\n    S.Diag(FuncLoc, diag::err_implied_std_coroutine_traits_promise_type_not_found) << RD;"}}
},
},
["note_method_sent_forward_class"]={
["err_implied_std_initializer_list_not_found"]={
[c]="method A is used for the forward class",
[j]="cannot deduce type of initializer list because std::initializer_list was not found; include <initializer_list>",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="method %0 is used for the forward class",
[e]="cannot deduce type of initializer list because std::initializer_list was not found; include <initializer_list>",
[b]=q,
[f]=n,
[a]="method (.*?) is used for the forward class",
[g]="cannot deduce type of initializer list because std\\:\\:initializer_list was not found; include \\<initializer_list\\>",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"5276014db2b4",1241826349,"We want to diagnose sending message to a forward class"}
[b]={"42acd4a05b52",1326840608,"Auto deduction support for std::initializer_list, including for-range support. This means you can no..."},
[k]={{r,10142,"static ClassTemplateDecl *LookupStdInitializerList(Sema &S, SourceLocation Loc) {\n  if (!Std) {\n    S.Diag(Loc, diag::err_implied_std_initializer_list_not_found);"},{r,10148,"static ClassTemplateDecl *LookupStdInitializerList(Sema &S, SourceLocation Loc) {\n  if (!S.LookupQualifiedName(Result, Std)) {\n    S.Diag(Loc, diag::err_implied_std_initializer_list_not_found);"}}
},
},
["note_misaligned_member_used_here"]={
["err_import_in_wrong_fragment"]={
[c]="passing byval argument A with potentially incompatible alignment here",
[j]="module... imports cannot be in the ... module fragment",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="passing byval argument %0 with potentially incompatible alignment here",
[e]="module%select{| partition}0 imports cannot be in the %select{global|private}1 module fragment",
[b]=q,
[f]=n,
[a]="passing byval argument (.*?) with potentially incompatible alignment here",
[g]="module(?:| partition) imports cannot be in the (?:global|private) module fragment",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={N,1625925174,O}
[b]={"69350e569dc4",1612659633,"[C++20][Modules][3/8] Initial handling for module partitions."},
[k]={{Q,2316,"/// Parse a module import declaration. This is essentially the same for\n/// Objective-C and C++20 except for the leading \'@\' (in ObjC) and the\n/// trailing optional attributes (in C++).\n///\n/// [ObjC]  @import declaration:\n///          \'@\' \'import\' module-name \';\'\n/// [ModTS] module-import-declaration:\n///          \'import\' module-name attribute-specifier-seq[opt] \';\'\n/// [C++20] module-import-declaration:\n///          \'export\'[opt] \'import\' module-name\n///                  attribute-specifier-seq[opt] \';\'\n///          \'export\'[opt] \'import\' module-partition\n///                  attribute-specifier-seq[opt] \';\'\n///          \'export\'[opt] \'import\' header-name\n///                  attribute-specifier-seq[opt] \';\'\nDecl *Parser::ParseModuleImport(SourceLocation AtLoc, Sema::ModuleImportState &ImportState) {\n  case Sema::ModuleImportState::PrivateFragmentImportAllowed:\n    // We can only have pre-processor directives in the global module fragment\n    // which allows pp-import, but not of a partition (since the global module\n    // does not have partitions).\n    // We cannot import a partition into a private module fragment, since\n    // [module.private.frag]/1 disallows private module fragments in a multi-\n    // TU module.\n    if (IsPartition || (HeaderUnit && HeaderUnit->Kind != Module::ModuleKind::ModuleHeaderUnit))\n      Diag(ImportLoc, diag::err_import_in_wrong_fragment) << IsPartition << (ImportState == Sema::ModuleImportState::GlobalFragment ? 0 : 1);"}}
},
},
["note_misplaced_ellipsis_vararg_add_comma"]={
["err_import_not_allowed_here"]={
[c]="insert \',\' before \'...\' to silence this warning",
[j]="imports must immediately follow the module declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="insert \',\' before \'...\' to silence this warning",
[e]="imports must immediately follow the module declaration",
[b]=q,
[f]=n,
[a]="insert \',\' before \'\\.\\.\\.\' to silence this warning",
[g]="imports must immediately follow the module declaration",
[g]=p,
[h]=a,
[e]=y,
[i]=D,
[i]={"36ee9fb21957",1407799823,"Reject varargs \'...\' in function prototype if there are more parameters after"}
[b]={"69350e569dc4",1612659633,"[C++20][Modules][3/8] Initial handling for module partitions."},
[k]={{Q,2323,"/// Parse a module import declaration. This is essentially the same for\n/// Objective-C and C++20 except for the leading \'@\' (in ObjC) and the\n/// trailing optional attributes (in C++).\n///\n/// [ObjC]  @import declaration:\n///          \'@\' \'import\' module-name \';\'\n/// [ModTS] module-import-declaration:\n///          \'import\' module-name attribute-specifier-seq[opt] \';\'\n/// [C++20] module-import-declaration:\n///          \'export\'[opt] \'import\' module-name\n///                  attribute-specifier-seq[opt] \';\'\n///          \'export\'[opt] \'import\' module-partition\n///                  attribute-specifier-seq[opt] \';\'\n///          \'export\'[opt] \'import\' header-name\n///                  attribute-specifier-seq[opt] \';\'\nDecl *Parser::ParseModuleImport(SourceLocation AtLoc, Sema::ModuleImportState &ImportState) {\n  case Sema::ModuleImportState::PrivateFragmentImportFinished:\n    if (getLangOpts().CPlusPlusModules)\n      Diag(ImportLoc, diag::err_import_not_allowed_here);"}}
},
},
["note_misplaced_ellipsis_vararg_add_ellipsis"]={
["err_imported_module_modmap_changed"]={
[c]="place \'...\' ... to declare a function parameter pack",
[j]="module \'A\' ... AST file \'B\' found in a different module map file (C) than when the importing AST file was built (D)",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="place \'...\' %select{immediately before declared identifier|here}0 to declare a function parameter pack",
[e]="module \'%0\' %select{in|imported by}4 AST file \'%1\' found in a different module map file (%2) than when the importing AST file was built (%3)",
[b]=q,
[f]=J,
[a]="place \'\\.\\.\\.\' (?:immediately before declared identifier|here) to declare a function parameter pack",
[g]="module \'(.*?)\' (?:in|imported by) AST file \'(.*?)\' found in a different module map file \\((.*?)\\) than when the importing AST file was built \\((.*?)\\)",
[g]=p,
[h]=a,
[e]=y,
[i]=jb,
[i]={"36ee9fb21957",1407799823,"Reject varargs \'...\' in function prototype if there are more parameters after"}
[b]={"beee15e721f6",1397498401,"Allow multiple modules with the same name to coexist in the module cache"},
[k]={{bb,3572,"ASTReader::ASTReadResult ASTReader::ReadModuleMapFileBlock(RecordData &Record, ModuleFile &F, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n  if (PP.getPreprocessorOpts().ModulesCheckRelocated && F.Kind == MK_ImplicitModule && ModuleMgr.begin()->Kind != MK_MainFile) {\n    if (!StoredModMap || *StoredModMap != ModMap) {\n      if (!canRecoverFromOutOfDate(F.FileName, ClientLoadCapabilities))\n        Diag(diag::err_imported_module_modmap_changed) << F.ModuleName << (NotImported ? F.FileName : ImportedBy->FileName) << ModMap->getName() << F.ModuleMapPath << NotImported;"}}
},
},
["note_misplaced_ellipsis_vararg_existing_ellipsis"]={
["err_imported_module_not_found"]={
[c]="preceding \'...\' declares a function parameter pack",
[j]="module \'A\' in AST file \'B\' ...is not defined in any loaded module map file; maybe you need to load \'C\'?",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="preceding \'...\' declares a function parameter pack",
[e]="module \'%0\' in AST file \'%1\' %select{(imported by AST file \'%2\') |}4is not defined in any loaded module map file; maybe you need to load \'%3\'?",
[b]=q,
[f]=J,
[a]="preceding \'\\.\\.\\.\' declares a function parameter pack",
[g]="module \'(.*?)\' in AST file \'(.*?)\' (?:\\(imported by AST file \'(.*?)\'\\) |)is not defined in any loaded module map file; maybe you need to load \'(.*?)\'\\?",
[g]=p,
[h]=a,
[e]=y,
[i]=jb,
[i]={"36ee9fb21957",1407799823,"Reject varargs \'...\' in function prototype if there are more parameters after"}
[b]={"beee15e721f6",1397498401,"Allow multiple modules with the same name to coexist in the module cache"},
[k]={{bb,3552,"ASTReader::ASTReadResult ASTReader::ReadModuleMapFileBlock(RecordData &Record, ModuleFile &F, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n  if (PP.getPreprocessorOpts().ModulesCheckRelocated && F.Kind == MK_ImplicitModule && ModuleMgr.begin()->Kind != MK_MainFile) {\n    // Don\'t emit module relocation error if we have -fno-validate-pch\n    if (!bool(PP.getPreprocessorOpts().DisablePCHOrModuleValidation & DisableValidationForModuleKind::Module) && !ModMap) {\n      if (!canRecoverFromOutOfDate(F.FileName, ClientLoadCapabilities)) {\n        if (auto ASTFE = M ? M->getASTFile() : std::nullopt) {\n        } else {\n          Diag(diag::err_imported_module_not_found) << F.ModuleName << F.FileName << (ImportedBy ? ImportedBy->FileName : \"\") << F.ModuleMapPath << !ImportedBy;"}}
},
},
["note_missing_end_of_definition_before"]={
["err_imported_module_relocated"]={
[c]="still within definition of A here",
[j]="module \'A\' was built in directory \'B\' but now resides in directory \'C\'",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="still within definition of %q0 here",
[e]="module \'%0\' was built in directory \'%1\' but now resides in directory \'%2\'",
[b]=q,
[f]=J,
[a]="still within definition of (.*?) here",
[g]="module \'(.*?)\' was built in directory \'(.*?)\' but now resides in directory \'(.*?)\'",
[g]=p,
[h]=a,
[e]=y,
[i]=jb,
[i]={"da35e963bc57",1383972771,"Try to recover a bit better if a close brace is missing from the end of a class"}
[b]={"223d3f2e4d49",1417836068,"[modules] If we import a module, and we\'ve seen a module map that describes the"},
[k]={{bb,2682,"ASTReader::ASTReadResult ASTReader::ReadControlBlock(ModuleFile &F, SmallVectorImpl<ImportedModule> &Loaded, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n  while (true) {\n    case MODULE_DIRECTORY: {\n      if (M && M->Directory) {\n        // If we\'re implicitly loading a module, the base directory can\'t\n        // change between the build and use.\n        // Don\'t emit module relocation error if we have -fno-validate-pch\n        if (!bool(PP.getPreprocessorOpts().DisablePCHOrModuleValidation & DisableValidationForModuleKind::Module) && F.Kind != MK_ExplicitModule && F.Kind != MK_PrebuiltModule) {\n          if (!BuildDir || *BuildDir != M->Directory) {\n            if (!canRecoverFromOutOfDate(F.FileName, ClientLoadCapabilities))\n              Diag(diag::err_imported_module_relocated) << F.ModuleName << Blob << M->Directory->getName();"}}
},
},
["note_missing_selector_name"]={
["err_in_class_initializer_bad_type"]={
[c]="introduce a parameter name to make A part of the selector",
[j]="static data member of type A must be initialized out of line",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="introduce a parameter name to make %0 part of the selector",
[e]="static data member of type %0 must be initialized out of line",
[b]=q,
[f]=n,
[a]="introduce a parameter name to make (.*?) part of the selector",
[g]="static data member of type (.*?) must be initialized out of line",
[g]=p,
[h]=a,
[e]=y,
[i]=o,
[i]={"84f498433116",1347923399,"objective-C: improve on warnings about misplacement of method"}
[b]={"db76892e72e4",1284160882,"Support in-class initialization of static const floating-point data members."},
[k]={{p,11823,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n  if (VDecl->isLocalVarDecl()) {\n  } else if (VDecl->isStaticDataMember() && !VDecl->isInline() && VDecl->getLexicalDeclContext()->isRecord()) {\n    // Do nothing on dependent types.\n    if (DclT->isDependentType()) {\n    } else if (VDecl->isConstexpr()) {\n    } else if (!DclT.isConstQualified()) {\n    } else if (DclT->isIntegralOrEnumerationType()) {\n    } else if (DclT->isFloatingType()) { // also permits complex, which is ok\n    } else if (getLangOpts().CPlusPlus11 && DclT->isLiteralType(Context)) {\n    } else {\n      Diag(VDecl->getLocation(), diag::err_in_class_initializer_bad_type) << DclT << Init->getSourceRange();"}}
},
},
["note_mmap_add_framework_keyword"]={
["err_in_class_initializer_literal_type"]={
[c]="use \'framework module\' to declare module \'A\'",
[j]="in-class initializer for static data member of type A requires \'constexpr\' specifier",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use \'framework module\' to declare module \'%0\'",
[e]="in-class initializer for static data member of type %0 requires \'constexpr\' specifier",
[b]=q,
[f]=n,
[a]="use \'framework module\' to declare module \'(.*?)\'",
[g]="in\\-class initializer for static data member of type (.*?) requires \'constexpr\' specifier",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={"9f6020bcc522",1527816378,"[Modules] Warning for module declarations lacking \'framework\' qualifier"}
[b]={"256336d9ab6d",1317338314,"Mark the ExtWarn for in-class initialization of static const float members as a GNU extension. Don\'t..."},
[k]={{p,11819,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n  if (VDecl->isLocalVarDecl()) {\n  } else if (VDecl->isStaticDataMember() && !VDecl->isInline() && VDecl->getLexicalDeclContext()->isRecord()) {\n    // Do nothing on dependent types.\n    if (DclT->isDependentType()) {\n    } else if (VDecl->isConstexpr()) {\n    } else if (!DclT.isConstQualified()) {\n    } else if (DclT->isIntegralOrEnumerationType()) {\n    } else if (DclT->isFloatingType()) { // also permits complex, which is ok\n    } else if (getLangOpts().CPlusPlus11 && DclT->isLiteralType(Context)) {\n      Diag(VDecl->getLocation(), diag::err_in_class_initializer_literal_type) << DclT << Init->getSourceRange() << FixItHint::CreateInsertion(VDecl->getBeginLoc(), \"constexpr \");"}}
},
},
["note_mmap_lbrace_match"]={
["err_in_class_initializer_non_const"]={
[c]="to match this \'{\'",
[j]="non-const static data member must be initialized out of line",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="to match this \'{\'",
[e]="non-const static data member must be initialized out of line",
[b]=q,
[f]=n,
[a]="to match this \'\\{\'",
[g]="non\\-const static data member must be initialized out of line",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={"718292f260bf",1321038628,"Introduce basic support for parsing module map files."}
[b]={"db76892e72e4",1284160882,"Support in-class initialization of static const floating-point data members."},
[k]={{p,11773,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n  if (VDecl->isLocalVarDecl()) {\n  } else if (VDecl->isStaticDataMember() && !VDecl->isInline() && VDecl->getLexicalDeclContext()->isRecord()) {\n    // Do nothing on dependent types.\n    if (DclT->isDependentType()) {\n    } else if (VDecl->isConstexpr()) {\n    } else if (!DclT.isConstQualified()) {\n      Diag(VDecl->getLocation(), diag::err_in_class_initializer_non_const) << Init->getSourceRange();"}}
},
},
["note_mmap_lsquare_match"]={
["err_in_class_initializer_non_constant"]={
[c]="to match this \']\'",
[j]="in-class initializer for static data member is not a constant expression",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="to match this \']\'",
[e]="in-class initializer for static data member is not a constant expression",
[b]=q,
[f]=n,
[a]="to match this \'\\]\'",
[g]="in\\-class initializer for static data member is not a constant expression",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={"a686e1b05df9",1327693953,"Introduce module attributes into the module map grammar, along with a"}
[b]={x,1237025389,w},
[k]={{p,11797,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n  if (VDecl->isLocalVarDecl()) {\n  } else if (VDecl->isStaticDataMember() && !VDecl->isInline() && VDecl->getLexicalDeclContext()->isRecord()) {\n    // Do nothing on dependent types.\n    if (DclT->isDependentType()) {\n    } else if (VDecl->isConstexpr()) {\n    } else if (!DclT.isConstQualified()) {\n    } else if (DclT->isIntegralOrEnumerationType()) {\n      if (getLangOpts().CPlusPlus11 && DclT.isVolatileQualified())\n      else if (Init->isValueDependent())\n      else if (Init->isIntegerConstantExpr(Context, &Loc))\n      else if (Init->getType()->isScopedEnumeralType() && Init->isCXX11ConstantExpr(Context))\n      else if (Init->isEvaluatable(Context)) {\n      } else {\n        Diag(Loc, diag::err_in_class_initializer_non_constant) << Init->getSourceRange();"},{p,11812,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n  if (VDecl->isLocalVarDecl()) {\n  } else if (VDecl->isStaticDataMember() && !VDecl->isInline() && VDecl->getLexicalDeclContext()->isRecord()) {\n    // Do nothing on dependent types.\n    if (DclT->isDependentType()) {\n    } else if (VDecl->isConstexpr()) {\n    } else if (!DclT.isConstQualified()) {\n    } else if (DclT->isIntegralOrEnumerationType()) {\n    } else if (DclT->isFloatingType()) { // also permits complex, which is ok\n      // In C++98, this is a GNU extension. In C++11, it is not, but we support\n      // it anyway and provide a fixit to add the \'constexpr\'.\n      if (getLangOpts().CPlusPlus11) {\n      } else {\n        if (!Init->isValueDependent() && !Init->isEvaluatable(Context)) {\n          Diag(Init->getExprLoc(), diag::err_in_class_initializer_non_constant) << Init->getSourceRange();"}}
},
},
["note_mmap_prev_definition"]={
["err_in_class_initializer_volatile"]={
[c]="previously defined here",
[j]="static const volatile data member must be initialized out of line",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previously defined here",
[e]="static const volatile data member must be initialized out of line",
[b]=q,
[f]=n,
[a]="previously defined here",
[g]="static const volatile data member must be initialized out of line",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={"718292f260bf",1321038628,"Introduce basic support for parsing module map files."}
[b]={"ee6311df6972",1317331694,"In C++0x, static const volatile data members cannot be initialized in-class."},
[k]={{p,11783,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n  if (VDecl->isLocalVarDecl()) {\n  } else if (VDecl->isStaticDataMember() && !VDecl->isInline() && VDecl->getLexicalDeclContext()->isRecord()) {\n    // Do nothing on dependent types.\n    if (DclT->isDependentType()) {\n    } else if (VDecl->isConstexpr()) {\n    } else if (!DclT.isConstQualified()) {\n    } else if (DclT->isIntegralOrEnumerationType()) {\n      if (getLangOpts().CPlusPlus11 && DclT.isVolatileQualified())\n        Diag(VDecl->getLocation(), diag::err_in_class_initializer_volatile);"}}
},
},
["note_mmap_rename_top_level_private_module"]={
["err_include_too_large"]={
[c]="rename \'A\' to ensure it can be found by name",
[j]="sorry, this include generates a translation unit too large for Clang to process.",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="rename \'%0\' to ensure it can be found by name",
[e]="sorry, this include generates a translation unit too large for Clang to process.",
[b]=q,
[f]=J,
[a]="rename \'(.*?)\' to ensure it can be found by name",
[g]="sorry, this include generates a translation unit too large for Clang to process\\.",
[g]=p,
[h]=a,
[e]=C,
[i]=a,
[i]={"2972991969b6",1513911210,"[Modules] Change private modules rules and warnings"}
[b]={"39f50da2a357",1568041174,"Support -fstack-clash-protection for x86"},
[k]={{"clang/lib/Basic/SourceManager.cpp",525,"/// createFileID - Create a new FileID for the specified ContentCache and\n/// include position.  This works regardless of whether the ContentCache\n/// corresponds to a file or some other input source.\nFileID SourceManager::createFileIDImpl(ContentCache &File, StringRef Filename, SourceLocation IncludePos, SrcMgr::CharacteristicKind FileCharacter, int LoadedID, SourceLocation::UIntTy LoadedOffset) {\n  if (!(NextLocalOffset + FileSize + 1 > NextLocalOffset && NextLocalOffset + FileSize + 1 <= CurrentLoadedOffset)) {\n    Diag.Report(IncludePos, diag::err_include_too_large);"}}
},
},
["note_module_cache_path"]={
["err_incompatible_exception_specs"]={
[c]="after modifying system headers, please delete the module cache at \'A\'",
[j]="target exception specification is not superset of source",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="after modifying system headers, please delete the module cache at \'%0\'",
[e]="target exception specification is not superset of source",
[b]=q,
[f]=n,
[a]="after modifying system headers, please delete the module cache at \'(.*?)\'",
[g]="target exception specification is not superset of source",
[g]=p,
[h]=a,
[e]=Kc,
[i]=o,
[i]={"940e80502e57",1368224113,"[Modules] When things go horribly wrong when reading a module, point at the module cache."}
[b]={"5d43164bc2e4",1255176250,"Implement the core checking for compatible exception specifications in assignment and initialization..."},
[k]={{Hb,831,"bool Sema::CheckExceptionSpecCompatibility(Expr *From, QualType ToType) {\n  unsigned DiagID = diag::err_incompatible_exception_specs;"}}
},
},
["note_module_def_undef_here"]={
["err_incompatible_fp_eval_method_options"]={
[c]="macro was ... here",
[j]="option \'ffp-eval-method\' cannot be used with option ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="macro was %select{defined|#undef\'d}0 here",
[e]="option \'ffp-eval-method\' cannot be used with option %select{\'fapprox-func\'|\'mreassociate\'|\'freciprocal\'}0",
[b]=q,
[f]=n,
[a]="macro was (?:defined|\\#undef\'d) here",
[g]="option \'ffp\\-eval\\-method\' cannot be used with option (?:\'fapprox\\-func\'|\'mreassociate\'|\'freciprocal\')",
[g]=p,
[h]=a,
[e]=p,
[i]=a,
[i]={"35b13ece231b",1363738925,"<rdar://problem/10796651> Introduce configuration macros into module maps."}
[b]={"bac6cd5bf856",1648850628,"[misexpect] Re-implement MisExpect Diagnostics"},
[k]={{Bb,413,"static bool FixupInvocation(CompilerInvocation &Invocation, DiagnosticsEngine &Diags, const ArgList &Args, InputKind IK) {\n  // When these options are used, the compiler is allowed to apply\n  // optimizations that may affect the final result. For example\n  // (x+y)+z is transformed to x+(y+z) but may not give the same\n  // final result; it\'s not value safe.\n  // Another example can be to simplify x/x to 1.0 but x could be 0.0, INF\n  // or NaN. Final result may then differ. An error is issued when the eval\n  // method is set with one of these options.\n  if (Args.hasArg(OPT_ffp_eval_method_EQ)) {\n    if (LangOpts.ApproxFunc)\n      Diags.Report(diag::err_incompatible_fp_eval_method_options) << 0;"},{Bb,415,"static bool FixupInvocation(CompilerInvocation &Invocation, DiagnosticsEngine &Diags, const ArgList &Args, InputKind IK) {\n  // When these options are used, the compiler is allowed to apply\n  // optimizations that may affect the final result. For example\n  // (x+y)+z is transformed to x+(y+z) but may not give the same\n  // final result; it\'s not value safe.\n  // Another example can be to simplify x/x to 1.0 but x could be 0.0, INF\n  // or NaN. Final result may then differ. An error is issued when the eval\n  // method is set with one of these options.\n  if (Args.hasArg(OPT_ffp_eval_method_EQ)) {\n    if (LangOpts.AllowFPReassoc)\n      Diags.Report(diag::err_incompatible_fp_eval_method_options) << 1;"},{Bb,417,"static bool FixupInvocation(CompilerInvocation &Invocation, DiagnosticsEngine &Diags, const ArgList &Args, InputKind IK) {\n  // When these options are used, the compiler is allowed to apply\n  // optimizations that may affect the final result. For example\n  // (x+y)+z is transformed to x+(y+z) but may not give the same\n  // final result; it\'s not value safe.\n  // Another example can be to simplify x/x to 1.0 but x could be 0.0, INF\n  // or NaN. Final result may then differ. An error is issued when the eval\n  // method is set with one of these options.\n  if (Args.hasArg(OPT_ffp_eval_method_EQ)) {\n    if (LangOpts.AllowRecip)\n      Diags.Report(diag::err_incompatible_fp_eval_method_options) << 2;"}}
},
},
["note_module_file_conflict"]={
["err_incompatible_qualified_id"]={
[c]="this is generally caused by modules with the same name found in multiple paths",
[j]="...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="this is generally caused by modules with the same name found in multiple paths",
[e]="%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",
[b]=q,
[f]=n,
[a]="this is generally caused by modules with the same name found in multiple paths",
[g]="(?:(?:assigning to (.*?) from incompatible type (.*?)|assigning to type from incompatible type)|(?:passing (.*?) to parameter of incompatible type (.*?)|passing type to parameter of incompatible type)|(?:returning (.*?) from a function with incompatible result type (.*?)|returning type from a function with incompatible result type)|(?:converting (.*?) to incompatible type (.*?)|converting type to incompatible type)|(?:initializing (.*?) with an expression of incompatible type (.*?)|initializing type with an expression of incompatible type)|(?:sending (.*?) to parameter of incompatible type (.*?)|sending type to parameter of incompatible type)|(?:casting (.*?) to incompatible type (.*?)|casting type to incompatible type))",
[g]=p,
[h]=a,
[e]=Kc,
[i]=o,
[i]={"766a08df12c1",1626398649,"[Frontend] Only compile modules if not already finalized"}
[b]={T,1576908663,U},
[k]={{q,15351,"bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, SourceLocation Loc, QualType DstType, QualType SrcType, Expr *SrcExpr, AssignmentAction Action, bool *Complained) {\n  case IncompatibleObjCQualifiedId: {\n    if (getLangOpts().CPlusPlus) {\n      DiagKind = diag::err_incompatible_qualified_id;"},{q,15432,"bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, SourceLocation Loc, QualType DstType, QualType SrcType, Expr *SrcExpr, AssignmentAction Action, bool *Complained) {\n  if ((DiagKind == diag::warn_incompatible_qualified_id || DiagKind == diag::err_incompatible_qualified_id) && PDecl && IFace && !IFace->hasDefinition())"}}
},
},
["note_module_file_imported_by"]={
["err_incompatible_vectors"]={
[c]="imported by ...\'A\'",
[j]="incompatible vector types ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="imported by %select{|module \'%2\' in }1\'%0\'",
[e]="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",
[b]=q,
[f]=n,
[a]="imported by (?:|module \'(.*?)\' in )\'(.*?)\'",
[g]="incompatible vector types (?:(?:assigning to (.*?) from (.*?)|assigning to different types)|(?:passing (.*?) to parameter of type (.*?)|passing to parameter of different type)|(?:returning (.*?) from a function with result type (.*?)|returning from function with different return type)|(?:converting (.*?) to type (.*?)|converting between types)|(?:initializing (.*?) with an expression of type (.*?)|initializing with expression of different type)|(?:sending (.*?) to parameter of type (.*?)|sending to parameter of different type)|(?:casting (.*?) to type (.*?)|casting between types))",
[g]=p,
[h]=a,
[e]=Kc,
[i]=o,
[i]={"37bd29a5e6b0",1425092992,"Give better diagnostics when -fmodule-file= finds a bad file: if the file is"}
[b]={T,1576908663,U},
[k]={{q,15360,"bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, SourceLocation Loc, QualType DstType, QualType SrcType, Expr *SrcExpr, AssignmentAction Action, bool *Complained) {\n  case IncompatibleVectors:\n    if (getLangOpts().CPlusPlus) {\n      DiagKind = diag::err_incompatible_vectors;"}}
},
},
["note_module_import_here"]={
["err_incomplete_array_member_init"]={
[c]="module imported here",
[j]="array bound cannot be deduced from a default member initializer",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="module imported here",
[e]="array bound cannot be deduced from a default member initializer",
[b]=q,
[f]=n,
[a]="module imported here",
[g]="array bound cannot be deduced from a default member initializer",
[g]=p,
[h]=a,
[e]=p,
[i]=s,
[i]={"27e5aa08920d",1496689076,"Factor out and unify emission of \"module is unavailable\" diagnostics."}
[b]={"938f40b5aa98",1307812782,"Implement support for C++11 in-class initialization of non-static data members."},
[k]={{R,2672,"/// ParseCXXClassMemberDeclaration - Parse a C++ class member declaration.\n///\n///      member-declaration:\n///        decl-specifier-seq[opt] member-declarator-list[opt] \';\'\n///        function-definition \';\'[opt]\n///        ::[opt] nested-name-specifier template[opt] unqualified-id \';\'[TODO]\n///        using-declaration                                            [TODO]\n/// [C++0x] static_assert-declaration\n///        template-declaration\n/// [GNU]  \'__extension__\' member-declaration\n///\n///      member-declarator-list:\n///        member-declarator\n///        member-declarator-list \',\' member-declarator\n///\n///      member-declarator:\n///        declarator virt-specifier-seq[opt] pure-specifier[opt]\n/// [C++2a] declarator requires-clause\n///        declarator constant-initializer[opt]\n/// [C++11] declarator brace-or-equal-initializer[opt]\n///        identifier[opt] \':\' constant-expression\n///\n///      virt-specifier-seq:\n///        virt-specifier\n///        virt-specifier-seq virt-specifier\n///\n///      virt-specifier:\n///        override\n///        final\n/// [MS]    sealed\n///\n///      pure-specifier:\n///        \'= 0\'\n///\n///      constant-initializer:\n///        \'=\' constant-expression\n///\nParser::DeclGroupPtrTy Parser::ParseCXXClassMemberDeclaration(AccessSpecifier AS, ParsedAttributes &AccessAttrs, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject *TemplateDiags) {\n  while (true) {\n    // Handle the initializer.\n    if (HasInClassInit != ICIS_NoInit) {\n      if (DeclaratorInfo.isArrayOfUnknownBound()) {\n        Diag(Tok, diag::err_incomplete_array_member_init);"}}
},
},
["note_module_import_not_at_top_level"]={
["err_incomplete_base_class"]={
[c]="A begins here",
[j]="base class has incomplete type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 begins here",
[e]="base class has incomplete type",
[b]=q,
[f]=n,
[a]="(.*?) begins here",
[g]="base class has incomplete type",
[g]=p,
[h]=a,
[e]=cd,
[i]=o,
[i]={"779448684662",1393739898,"Add [extern_c] attribute for modules, allowing a C module to be imported within an extern \"C\" block ..."}
[b]={x,1237025389,w},
[k]={{r,2323,"/// Check the validity of a C++ base class specifier.\n///\n/// \\returns a new CXXBaseSpecifier if well-formed, emits diagnostics\n/// and returns NULL otherwise.\nCXXBaseSpecifier *Sema::CheckBaseSpecifier(CXXRecordDecl *Class, SourceRange SpecifierRange, bool Virtual, AccessSpecifier Access, TypeSourceInfo *TInfo, SourceLocation EllipsisLoc) {\n  if (RequireCompleteType(BaseLoc, BaseType, diag::err_incomplete_base_class, SpecifierRange)) {"}}
},
},
["note_module_odr_violation_definition_data"]={
["err_incomplete_enum"]={
[c]="but in \'A\' found ...",
[j]="enumeration A is incomplete",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="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",
[e]="enumeration %0 is incomplete",
[b]=q,
[f]=n,
[a]="but in \'(.*?)\' found (?:(.*?) base (?:class|classes)|(.*?) virtual base (?:class|classes)|(.*?) base class with different type (.*?)|(.*?) (?:non\\-virtual|virtual) base class (.*?)|(.*?) base class (.*?) with (?:public|protected|private|no) access specifier)",
[g]="enumeration (.*?) is incomplete",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"e13eabe7d339",1506737957,"[ODRHash] Add base classes to hashing CXXRecordDecl."}
[b]={"3dbcea8b957a",1615397021,"Reland [clang] Check unsupported types in expressions"},
[k]={{cb,277,"/// Require that the EnumDecl is completed with its enumerators defined or\n/// instantiated. SS, if provided, is the ScopeRef parsed.\n///\nbool Sema::RequireCompleteEnumDecl(EnumDecl *EnumD, SourceLocation L, CXXScopeSpec *SS) {\n  if (SS) {\n  } else {\n    Diag(L, diag::err_incomplete_enum) << QualType(EnumD->getTypeForDecl(), 0);"}}
},
},
["note_module_odr_violation_different_definitions"]={
["err_incomplete_in_exception_spec"]={
[c]="definition in module \'A\' is here",
[j]="...incomplete type A is not allowed in exception specification",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="definition in module \'%0\' is here",
[e]="%select{|pointer to |reference to }0incomplete type %1 is not allowed in exception specification",
[b]=q,
[f]=n,
[a]="definition in module \'(.*?)\' is here",
[g]="(?:|pointer to |reference to )incomplete type (.*?) is not allowed in exception specification",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"cd45dbc5f24c",1397879310,"When a module completes the definition of a class template specialization imported from another modu..."}
[b]={"d643456d450a",1243620153,"Reject incomplete types in exception specs."},
[k]={{Hb,150,"/// CheckSpecifiedExceptionType - Check if the given type is valid in an\n/// exception specification. Incomplete types, or pointers to incomplete types\n/// other than void are not allowed.\n///\n/// \\param[in,out] T  The exception type. This will be decayed to a pointer type\n///                  when the input is an array or a function type.\nbool Sema::CheckSpecifiedExceptionType(QualType &T, SourceRange Range) {\n  unsigned DiagID = diag::err_incomplete_in_exception_spec;"}}
},
},
["note_module_odr_violation_enum"]={
["err_incomplete_member_access"]={
[c]="but in \'A\' found ...",
[j]="member access into incomplete type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="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",
[e]="member access into incomplete type %0",
[b]=q,
[f]=n,
[a]="but in \'(.*?)\' found (?:enum that is (?:not scoped|scoped)|enum scoped with keyword (?:struct|class)|enum (?:without|with) specified type|enum with specified type (.*?)|enum with (.*?) element(.*?)|(.*?) element has name (.*?)|(.*?) element (.*?) (?:has|does not have) an initializer|(.*?) element (.*?) has different initializer|)",
[g]="member access into incomplete type (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"ab4d730f14d1",1532559125,"[ODRHash] Support hashing enums."}
[b]={"3fad61786e7c",1258435053,"Require the object type of a member access expression (\".\" or \"->\") to"},
[k]={{B,6655,"ExprResult Sema::ActOnStartCXXMemberReference(Scope *S, Expr *Base, SourceLocation OpLoc, tok::TokenKind OpKind, ParsedType &ObjectType, bool &MayBePseudoDestructor) {\n  if (!BaseType->isDependentType() && !isThisOutsideMemberFunctionBody(BaseType) && RequireCompleteType(OpLoc, BaseType, diag::err_incomplete_member_access)) {"}}
},
},
["note_module_odr_violation_field"]={
["err_incomplete_nested_name_spec"]={
[c]=Id,
[j]="incomplete type A named in nested name specifier",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="but in %select{\'%1\'|definition here}0 found %select{field %3|field %3 with type %4|%select{non-|}4bitfield %3|bitfield %3 with different width expression|%select{non-|}4mutable field %3|field %3 with %select{no|an}4 initializer|field %3 with a different initializer}2",
[e]="incomplete type %0 named in nested name specifier",
[b]=q,
[f]=n,
[a]="but in (?:\'(.*?)\'|definition here) found (?:field (.*?)|field (.*?) with type (.*?)|(?:non\\-|)bitfield (.*?)|bitfield (.*?) with different width expression|(?:non\\-|)mutable field (.*?)|field (.*?) with (?:no|an) initializer|field (.*?) with a different initializer)",
[g]="incomplete type (.*?) named in nested name specifier",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={Bd,1643408541,yd}
[b]={x,1237025389,w},
[k]={{cb,227,"/// Require that the context specified by SS be complete.\n///\n/// If SS refers to a type, this routine checks whether the type is\n/// complete enough (or can be made complete enough) for name lookup\n/// into the DeclContext. A type that is not yet completed can be\n/// considered \"complete enough\" if it is a class/struct/union/enum\n/// that is currently being defined. Or, if we have a type that names\n/// a class template specialization that is not a complete type, we\n/// will attempt to instantiate that class template.\nbool Sema::RequireCompleteDeclContext(CXXScopeSpec &SS, DeclContext *DC) {\n  if (RequireCompleteType(loc, type, diag::err_incomplete_nested_name_spec, SS.getRange())) {"},{cb,274,"/// Require that the EnumDecl is completed with its enumerators defined or\n/// instantiated. SS, if provided, is the ScopeRef parsed.\n///\nbool Sema::RequireCompleteEnumDecl(EnumDecl *EnumD, SourceLocation L, CXXScopeSpec *SS) {\n  if (SS) {\n    Diag(L, diag::err_incomplete_nested_name_spec) << QualType(EnumD->getTypeForDecl(), 0) << SS->getRange();"},{B,121,"ParsedType Sema::getConstructorName(IdentifierInfo &II, SourceLocation NameLoc, Scope *S, CXXScopeSpec &SS, bool EnteringContext) {\n  if (!InjectedClassName) {\n    if (!CurClass->isInvalidDecl()) {\n      Diag(SS.getLastQualifierNameLoc(), diag::err_incomplete_nested_name_spec) << CurClass << SS.getRange();"}}
},
},
["note_module_odr_violation_function"]={
["err_incomplete_object_call"]={
[c]="but in \'A\' found ...",
[j]="incomplete type in call to object of type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="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",
[e]="incomplete type in call to object of type %0",
[b]=q,
[f]=n,
[a]="but in \'(.*?)\' found (?:different return type (.*?)|(.*?) parameter with name (.*?)|(.*?) parameter with type (.*?)(?:| decayed from (.*?))|(.*?) parameter with(?:out|) a default argument|(.*?) parameter with a different default argument|a different body)",
[g]="incomplete type in call to object of type (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"e81caeb3147f",1512782980,"[ODRHash] Support ODR violation detection in functions."}
[b]={"74ba25ca5a34",1256105919,"Improve diagnostics and template instantiation behavior when calling"},
[k]={{Ab,12635,"/// BuildCallToObjectOfClassType - Build a call to an object of class\n/// type (C++ [over.call.object]), which can end up invoking an\n/// overloaded function call operator (@c operator()) or performing a\n/// user-defined conversion on the object argument.\nExprResult Sema::BuildCallToObjectOfClassType(Scope *S, Expr *Obj, SourceLocation LParenLoc, MultiExprArg Args, SourceLocation RParenLoc) {\n  if (RequireCompleteType(LParenLoc, Object.get()->getType(), diag::err_incomplete_object_call, Object.get()))"}}
},
},
["note_module_odr_violation_method_params"]={
["err_incomplete_receiver_type"]={
[c]=Id,
[j]="incomplete receiver type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="but in %select{\'%1\'|definition here}0 found %select{%select{method %4|constructor|destructor}3 that has %5 parameter%s5|%select{method %4|constructor|destructor}3 with %ordinal5 parameter of type %6%select{| decayed from %8}7|%select{method %4|constructor|destructor}3 with %ordinal5 parameter named %6}2",
[e]="incomplete receiver type %0",
[b]=q,
[f]=n,
[a]="but in (?:\'(.*?)\'|definition here) found (?:(?:method (.*?)|constructor|destructor) that has (.*?) parameter(.*?)|(?:method (.*?)|constructor|destructor) with (.*?) parameter of type (.*?)(?:| decayed from (.*?))|(?:method (.*?)|constructor|destructor) with (.*?) parameter named (.*?))",
[g]="incomplete receiver type (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={Bd,1643408541,yd}
[b]={"4b60a1594d2c",1383863694,"Re-instate contextual conversion to Objective-C pointers in message sends."},
[k]={{O,2345,"/// Build an Objective-C instance message expression.\n///\n/// This routine takes care of both normal instance messages and\n/// instance messages to the superclass instance.\n///\n/// \\param Receiver The expression that computes the object that will\n/// receive this message. This may be empty, in which case we are\n/// sending to the superclass instance and \\p SuperLoc must be a valid\n/// source location.\n///\n/// \\param ReceiverType The (static) type of the object receiving the\n/// message. When a \\p Receiver expression is provided, this is the\n/// same type as that expression. For a superclass instance send, this\n/// is a pointer to the type of the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass instance message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this instance message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildInstanceMessage(Expr *Receiver, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n  // If we have a receiver expression, perform appropriate promotions\n  // and determine receiver type.\n  if (Receiver) {\n    // If the receiver is an ObjC pointer, a block pointer, or an\n    // __attribute__((NSObject)) pointer, we don\'t need to do any\n    // special conversion in order to look up a receiver.\n    if (ReceiverType->isObjCRetainableType()) {\n    } else if (!getLangOpts().ObjCAutoRefCount && !Context.getObjCIdType().isNull() && (ReceiverType->isPointerType() || ReceiverType->isIntegerType())) {\n    } else if (getLangOpts().CPlusPlus) {\n      if (RequireCompleteType(Loc, Receiver->getType(), diag::err_incomplete_receiver_type))"},{E,3714,"ExprResult Sema::ActOnObjCAtSynchronizedOperand(SourceLocation atLoc, Expr *operand) {\n  if (!type->isDependentType() && !type->isObjCObjectPointerType()) {\n    if (!pointerType || !pointerType->getPointeeType()->isVoidType()) {\n      if (getLangOpts().CPlusPlus) {\n        if (RequireCompleteType(atLoc, type, diag::err_incomplete_receiver_type))"}}
},
},
["note_module_odr_violation_mismatch_decl"]={
["err_incomplete_synthesized_property"]={
[c]=Id,
[j]="cannot synthesize property A with incomplete type B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="but in %select{\'%1\'|definition here}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|method|instance variable|property}2",
[e]="cannot synthesize property %0 with incomplete type %1",
[b]=q,
[f]=n,
[a]="but in (?:\'(.*?)\'|definition here) found (?: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|method|instance variable|property)",
[g]="cannot synthesize property (.*?) with incomplete type (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"fa3d93a148d4",1485827055,"Add better ODR checking for modules."}
[b]={"169ec35bb3b2",1335911166,"Add a missing RequireCompleteType call when synthesizing properties.  <rdar://problem/11333367>."},
[k]={{Gb,1005,"/// ActOnPropertyImplDecl - This routine performs semantic checks and\n/// builds the AST node for a property implementation declaration; declared\n/// as \\@synthesize or \\@dynamic.\n///\nDecl *Sema::ActOnPropertyImplDecl(Scope *S, SourceLocation AtLoc, SourceLocation PropertyLoc, bool Synthesize, IdentifierInfo *PropertyId, IdentifierInfo *PropertyIvar, SourceLocation PropertyIvarLoc, ObjCPropertyQueryKind QueryKind) {\n  // Check that we have a valid, previously declared ivar for @synthesize\n  if (Synthesize) {\n    if (RequireCompleteType(PropertyDiagLoc, PropertyIvarType, diag::err_incomplete_synthesized_property, property->getDeclName())) {"}}
},
},
["note_module_odr_violation_mismatch_decl_unknown"]={
["err_incomplete_type"]={
[c]=Id,
[j]="incomplete type A where a complete type is required",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="but in %select{\'%1\'|definition here}0 found %select{||||different static assert|different field|different method|different type alias|different typedef|different data member|different friend declaration|different function template|different method|different instance variable|different property|another unexpected decl}2",
[e]="incomplete type %0 where a complete type is required",
[b]=q,
[f]=n,
[a]="but in (?:\'(.*?)\'|definition here) found (?:||||different static assert|different field|different method|different type alias|different typedef|different data member|different friend declaration|different function template|different method|different instance variable|different property|another unexpected decl)",
[g]="incomplete type (.*?) where a complete type is required",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"708859a71326",1496883381,"[ODRHash] Change the fall-back diagnostic error."}
[b]={"a04f2ca19aaf",1267458985,"When looking for the instantiated declaration that corresponds to a"},
[k]={{"clang/lib/Sema/SemaCast.cpp",2806,"void CastOperation::CheckBuiltinBitCast() {\n  if (Self.RequireCompleteType(OpRange.getBegin(), DestType, diag::err_typecheck_cast_to_incomplete) || Self.RequireCompleteType(OpRange.getBegin(), SrcType, diag::err_incomplete_type)) {"},{y,1696,"static ExprResult SemaBuiltinLaunder(Sema &S, CallExpr *TheCall) {\n  if (S.RequireCompleteType(TheCall->getBeginLoc(), ParamTy->getPointeeType(), diag::err_incomplete_type))"},{y,6803,"ExprResult Sema::BuildAtomicExpr(SourceRange CallRange, SourceRange ExprRange, SourceLocation RParenLoc, MultiExprArg Args, AtomicExpr::AtomicOp Op, AtomicArgumentOrder ArgOrder) {\n  // For an arithmetic operation, the implied arithmetic must be well-formed.\n  if (Form == Arithmetic) {\n    if (IsC11 && ValType->isPointerType() && RequireCompleteType(Ptr->getBeginLoc(), ValType->getPointeeType(), diag::err_incomplete_type)) {"},{y,13460,"static void CheckConditionalOperand(Sema &S, Expr *E, QualType T, SourceLocation CC, bool &ICContext) {\n  // Diagnose incomplete type for second or third operand in C.\n  if (!S.getLangOpts().CPlusPlus && E->getType()->isRecordType())\n    S.RequireCompleteExprType(E, diag::err_incomplete_type);"},{eb,1178,"bool CoroutineStmtBuilder::makeNewAndDeleteExpr() {\n  if (S.RequireCompleteType(Loc, PromiseType, diag::err_incomplete_type))"},{r,1191,"static bool checkMemberDecomposition(Sema &S, ArrayRef<BindingDecl *> Bindings, ValueDecl *Src, QualType DecompType, const CXXRecordDecl *OrigRD) {\n  if (S.RequireCompleteType(Src->getLocation(), DecompType, diag::err_incomplete_type))"},{r,9988,"QualType Sema::CheckComparisonCategoryType(ComparisonCategoryType Kind, SourceLocation Loc, ComparisonCategoryUsage Usage) {\n  if (Info && FullyCheckedComparisonCategories[static_cast<unsigned>(Kind)]) {\n    if (RequireCompleteType(Loc, TyForDiags(Info), diag::err_incomplete_type))"},{r,10010,"QualType Sema::CheckComparisonCategoryType(ComparisonCategoryType Kind, SourceLocation Loc, ComparisonCategoryUsage Usage) {\n  if (RequireCompleteType(Loc, TyForDiags(Info), diag::err_incomplete_type))"},{q,12638,"// C99 6.5.17\nstatic QualType CheckCommaOperands(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc) {\n  if (!S.getLangOpts().CPlusPlus) {\n    if (!RHS.get()->getType()->isVoidType())\n      S.RequireCompleteType(Loc, RHS.get()->getType(), diag::err_incomplete_type);"},{B,7115,"/// Perform the conversions required for an expression used in a\n/// context that ignores the result.\nExprResult Sema::IgnoredValueConversions(Expr *E) {\n  if (!E->getType()->isVoidType())\n    RequireCompleteType(E->getExprLoc(), E->getType(), diag::err_incomplete_type);"},{L,7232,"ExprResult Sema::TemporaryMaterializationConversion(Expr *E) {\n  if (RequireCompleteType(E->getExprLoc(), T, diag::err_incomplete_type))"},{"clang/lib/Sema/SemaOpenMP.cpp",17146,"static bool checkTypeMappable(SourceLocation SL, SourceRange SR, Sema &SemaRef, DSAStackTy *Stack, QualType QTy, bool FullCheck = true) {\n  if (SemaRef.RequireCompleteType(SL, QTy, diag::err_incomplete_type))"},{"clang/lib/Sema/SemaTemplateInstantiateDecl.cpp",5236,"/// Find the instantiation of the given declaration within the\n/// current instantiation.\n///\n/// This routine is intended to be used when \\p D is a declaration\n/// referenced from within a template, that needs to mapped into the\n/// corresponding declaration within an instantiation. For example,\n/// given:\n///\n/// \\code\n/// template<typename T>\n/// struct X {\n///  enum Kind {\n///    KnownValue = sizeof(T)\n///  };\n///\n///  bool getKind() const { return KnownValue; }\n/// };\n///\n/// template struct X<int>;\n/// \\endcode\n///\n/// In the instantiation of X<int>::getKind(), we need to map the \\p\n/// EnumConstantDecl for \\p KnownValue (which refers to\n/// X<T>::<Kind>::KnownValue) to its instantiation (X<int>::<Kind>::KnownValue).\n/// \\p FindInstantiatedDecl performs this mapping from within the instantiation\n/// of X<int>.\nNamedDecl *Sema::FindInstantiatedDecl(SourceLocation Loc, NamedDecl *D, const MultiLevelTemplateArgumentList &TemplateArgs, bool FindingInstantiatedContext) {\n  if (ParentDC != D->getDeclContext()) {\n    if (CXXRecordDecl *Spec = dyn_cast<CXXRecordDecl>(ParentDC)) {\n      if (!Spec->isDependentContext()) {\n        if (!Tag->isBeingDefined() && RequireCompleteType(Loc, T, diag::err_incomplete_type))"}}
},
},
["note_module_odr_violation_no_possible_decls"]={
["err_incomplete_type_objc_at_encode"]={
[c]="definition has no member A",
[j]="\'@encode\' of incomplete type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="definition has no member %0",
[e]="\'@encode\' of incomplete type %0",
[b]=q,
[f]=n,
[a]="definition has no member (.*?)",
[g]="\'@encode\' of incomplete type (.*?)",
[g]=p,
[h]=a,
[e]=Kc,
[i]=o,
[i]={"2b9e3e396a6f",1382076318,"Basic ODR checking for C++ modules:"}
[b]={"7da04c636728",1305405159,"Emit an error when trying to @encode an incomplete type."},
[k]={{O,928,"ExprResult Sema::BuildObjCEncodeExpression(SourceLocation AtLoc, TypeSourceInfo *EncodedTypeInfo, SourceLocation RParenLoc) {\n  if (EncodedType->isDependentType())\n  else {\n    if (!EncodedType->getAsArrayTypeUnsafe() && //// Incomplete array is handled.\n      if (RequireCompleteType(AtLoc, EncodedType, diag::err_incomplete_type_objc_at_encode, EncodedTypeInfo->getTypeLoc()))"}}
},
},
["note_module_odr_violation_objc_interface"]={
["err_incomplete_type_used_in_type_trait_expr"]={
[c]=Id,
[j]="incomplete type A used in type trait expression",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="but in %select{\'%1\'|definition here}0 found %select{%select{no super class|super class with type %4}3|instance variable \'%3\' access control is %select{|@private|@protected|@public|@package}4}2",
[e]="incomplete type %0 used in type trait expression",
[b]=q,
[f]=n,
[a]="but in (?:\'(.*?)\'|definition here) found (?:(?:no super class|super class with type (.*?))|instance variable \'(.*?)\' access control is (?:|@private|@protected|@public|@package))",
[g]="incomplete type (.*?) used in type trait expression",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"f27afedc6c86",1662843785,"[Clang] Implement P2738R1 - constexpr cast from void*"}
[b]={"1f9648da17c7",1246993562,"Some (most) type trait expressions require that the argument passed in is a complete type."},
[k]={{B,4129,"/// Check the completeness of a type in a unary type trait.\n///\n/// If the particular type trait requires a complete type, tries to complete\n/// it. If completing the type fails, a diagnostic is emitted and false\n/// returned. If completing the type succeeds or no completion was required,\n/// returns true.\nstatic bool CheckUnaryTypeTraitTypeCompleteness(Sema &S, TypeTrait UTT, SourceLocation Loc, QualType ArgTy) {\n  case UTT_IsAbstract:\n    if (const auto *RD = ArgTy->getAsCXXRecordDecl())\n      if (!RD->isUnion())\n        return !S.RequireCompleteType(Loc, ArgTy, diag::err_incomplete_type_used_in_type_trait_expr);"},{B,4137,"/// Check the completeness of a type in a unary type trait.\n///\n/// If the particular type trait requires a complete type, tries to complete\n/// it. If completing the type fails, a diagnostic is emitted and false\n/// returned. If completing the type succeeds or no completion was required,\n/// returns true.\nstatic bool CheckUnaryTypeTraitTypeCompleteness(Sema &S, TypeTrait UTT, SourceLocation Loc, QualType ArgTy) {\n  case UTT_IsSealed:\n    if (ArgTy->getAsCXXRecordDecl())\n      return !S.RequireCompleteType(Loc, ArgTy, diag::err_incomplete_type_used_in_type_trait_expr);"},{B,4145,"/// Check the completeness of a type in a unary type trait.\n///\n/// If the particular type trait requires a complete type, tries to complete\n/// it. If completing the type fails, a diagnostic is emitted and false\n/// returned. If completing the type succeeds or no completion was required,\n/// returns true.\nstatic bool CheckUnaryTypeTraitTypeCompleteness(Sema &S, TypeTrait UTT, SourceLocation Loc, QualType ArgTy) {\n  // LWG3823: T shall be an array type, a complete type, or cv void.\n  case UTT_IsAggregate:\n    return !S.RequireCompleteType(Loc, ArgTy, diag::err_incomplete_type_used_in_type_trait_expr);"},{B,4185,"/// Check the completeness of a type in a unary type trait.\n///\n/// If the particular type trait requires a complete type, tries to complete\n/// it. If completing the type fails, a diagnostic is emitted and false\n/// returned. If completing the type succeeds or no completion was required,\n/// returns true.\nstatic bool CheckUnaryTypeTraitTypeCompleteness(Sema &S, TypeTrait UTT, SourceLocation Loc, QualType ArgTy) {\n  case UTT_HasUniqueObjectRepresentations:\n    return !S.RequireCompleteType(Loc, ArgTy, diag::err_incomplete_type_used_in_type_trait_expr);"},{B,4675,"static bool EvaluateBooleanTypeTrait(Sema &S, TypeTrait Kind, SourceLocation KWLoc, ArrayRef<TypeSourceInfo *> Args, SourceLocation RParenLoc, bool IsDependent) {\n  case clang::TT_IsTriviallyConstructible: {\n    // Precondition: T and all types in the parameter pack Args shall be\n    // complete types, (possibly cv-qualified) void, or arrays of\n    // unknown bound.\n    for (const auto *TSI : Args) {\n      if (S.RequireCompleteType(KWLoc, ArgTy, diag::err_incomplete_type_used_in_type_trait_expr))"},{B,4865,"static bool EvaluateBinaryTypeTrait(Sema &Self, TypeTrait BTT, QualType LhsT, QualType RhsT, SourceLocation KeyLoc) {\n  case BTT_IsBaseOf: {\n    if (!rhsRecord || !lhsRecord) {\n      if (Self.RequireCompleteType(KeyLoc, RhsT, diag::err_incomplete_type_used_in_type_trait_expr))"},{B,4887,"static bool EvaluateBinaryTypeTrait(Sema &Self, TypeTrait BTT, QualType LhsT, QualType RhsT, SourceLocation KeyLoc) {\n  case BTT_IsBaseOf: {\n    if (Self.RequireCompleteType(KeyLoc, RhsT, diag::err_incomplete_type_used_in_type_trait_expr))"},{B,4977,"static bool EvaluateBinaryTypeTrait(Sema &Self, TypeTrait BTT, QualType LhsT, QualType RhsT, SourceLocation KeyLoc) {\n  case BTT_IsTriviallyAssignable: {\n    if (!LhsT->isVoidType() && !LhsT->isIncompleteArrayType() && Self.RequireCompleteType(KeyLoc, LhsT, diag::err_incomplete_type_used_in_type_trait_expr))"},{B,4979,"static bool EvaluateBinaryTypeTrait(Sema &Self, TypeTrait BTT, QualType LhsT, QualType RhsT, SourceLocation KeyLoc) {\n  case BTT_IsTriviallyAssignable: {\n    if (!RhsT->isVoidType() && !RhsT->isIncompleteArrayType() && Self.RequireCompleteType(KeyLoc, RhsT, diag::err_incomplete_type_used_in_type_trait_expr))"}}
},
},
["note_module_odr_violation_objc_method"]={
["err_incomplete_typeid"]={
[c]=Id,
[j]="\'typeid\' of incomplete type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="but in %select{\'%1\'|definition here}0 found %select{method %3 with different return type %4|method %3 as %select{class|instance}4 method|%select{no|\'required\'|\'optional\'}3 method control|method %3 with %select{no designated initializer|designated initializer}4|%select{regular|direct}4 method %3|different method %3}2",
[e]="\'typeid\' of incomplete type %0",
[b]=q,
[f]=n,
[a]="but in (?:\'(.*?)\'|definition here) found (?:method (.*?) with different return type (.*?)|method (.*?) as (?:class|instance) method|(?:no|\'required\'|\'optional\') method control|method (.*?) with (?:no designated initializer|designated initializer)|(?:regular|direct) method (.*?)|different method (.*?))",
[g]="\'typeid\' of incomplete type (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={Bd,1643408541,yd}
[b]={"721fb2b6e405",1261602366,"Diagnose the use of incomplete types in C++ typeid expressions"},
[k]={{B,505,"/// Build a C++ typeid expression with a type operand.\nExprResult Sema::BuildCXXTypeId(QualType TypeInfoType, SourceLocation TypeidLoc, TypeSourceInfo *Operand, SourceLocation RParenLoc) {\n  if (T->getAs<RecordType>() && RequireCompleteType(TypeidLoc, T, diag::err_incomplete_typeid))"},{B,534,"/// Build a C++ typeid expression with an expression operand.\nExprResult Sema::BuildCXXTypeId(QualType TypeInfoType, SourceLocation TypeidLoc, Expr *E, SourceLocation RParenLoc) {\n  if (E && !E->isTypeDependent()) {\n    if (const RecordType *RecordT = T->getAs<RecordType>()) {\n      if (RequireCompleteType(TypeidLoc, T, diag::err_incomplete_typeid))"}}
},
},
["note_module_odr_violation_objc_property"]={
["err_inconsistent_ivar_count"]={
[c]=Id,
[j]="inconsistent number of instance variables specified",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="but in %select{\'%1\'|definition here}0 found %select{property %3|property %3 with type %4|%select{no|\'required\'|\'optional\'}3 property control|property %3 with different \'%select{none|readonly|getter|assign|readwrite|retain|copy|nonatomic|setter|atomic|weak|strong|unsafe_unretained|nullability|null_resettable|class|direct}4\' attribute}2",
[e]="inconsistent number of instance variables specified",
[b]=q,
[f]=n,
[a]="but in (?:\'(.*?)\'|definition here) found (?:property (.*?)|property (.*?) with type (.*?)|(?:no|\'required\'|\'optional\') property control|property (.*?) with different \'(?:none|readonly|getter|assign|readwrite|retain|copy|nonatomic|setter|atomic|weak|strong|unsafe_unretained|nullability|null_resettable|class|direct)\' attribute)",
[g]="inconsistent number of instance variables specified",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"dcb71b5e1d13",1657144706,"[ODRHash] Hash `ObjCPropertyDecl` and diagnose discovered mismatches."}
[b]={"fff0674ae092",1385956221,"Fix inconsistent diag name"},
[k]={{hb,1806,"void Sema::CheckImplementationIvars(ObjCImplementationDecl *ImpDecl, ObjCIvarDecl **ivars, unsigned numIvars, SourceLocation RBrace) {\n  if (numIvars > 0)\n    Diag(ivars[j]->getLocation(), diag::err_inconsistent_ivar_count);"},{hb,1808,"void Sema::CheckImplementationIvars(ObjCImplementationDecl *ImpDecl, ObjCIvarDecl **ivars, unsigned numIvars, SourceLocation RBrace) {\n  if (numIvars > 0)\n  else if (IVI != IVE)\n    Diag(IVI->getLocation(), diag::err_inconsistent_ivar_count);"}}
},
},
["note_module_odr_violation_possible_decl"]={
["err_incorrect_defaulted_consteval"]={
[c]="declaration of A does not match",
[j]="defaulted declaration of ... cannot be consteval because implicit definition is not constexpr",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="declaration of %0 does not match",
[e]="defaulted declaration of %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 cannot be consteval because implicit definition is not constexpr",
[b]=q,
[f]=n,
[a]="declaration of (.*?) does not match",
[g]="defaulted declaration of (?:default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor) cannot be consteval because implicit definition is not constexpr",
[g]=p,
[h]=a,
[e]=Kc,
[i]=o,
[i]={"2b9e3e396a6f",1382076318,"Basic ODR checking for C++ modules:"}
[b]={"796ed03b8412",1560502580,"[C++20] add Basic consteval specifier"},
[k]={{r,6609,"bool Sema::CheckExplicitlyDefaultedSpecialMember(CXXMethodDecl *MD, CXXSpecialMember CSM, SourceLocation DefaultLoc) {\n  if ((getLangOpts().CPlusPlus20 || (getLangOpts().CPlusPlus14 ? !isa<CXXDestructorDecl>(MD) : isa<CXXConstructorDecl>(MD))) && MD->isConstexpr() && !Constexpr && MD->getTemplatedKind() == FunctionDecl::TK_NonTemplate) {\n    Diag(MD->getBeginLoc(), MD->isConsteval() ? diag::err_incorrect_defaulted_consteval : diag::err_incorrect_defaulted_constexpr) << CSM;"}}
},
},
["note_module_odr_violation_record"]={
["err_incorrect_defaulted_constexpr"]={
[c]="but in \'A\' found ...",
[j]="defaulted definition of ... is not constexpr",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="but in \'%0\' found %select{static assert with different condition|static assert with different message|static assert with %select{|no }2message|%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 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|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",
[e]="defaulted definition of %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 is not constexpr",
[b]=q,
[f]=n,
[a]="but in \'(.*?)\' found (?:static assert with different condition|static assert with different message|static assert with (?:|no )message|(?:method (.*?)|constructor|destructor)|(?:method (.*?)|constructor|destructor) is (?:not deleted|deleted)|(?:method (.*?)|constructor|destructor) is (?:not defaulted|defaulted)|(?:method (.*?)|constructor|destructor) is (?:|pure )(?:not virtual|virtual)|(?:method (.*?)|constructor|destructor) is (?:not static|static)|(?:method (.*?)|constructor|destructor) is (?:not volatile|volatile)|(?:method (.*?)|constructor|destructor) is (?:not const|const)|(?:method (.*?)|constructor|destructor) is (?:not inline|inline)|(?:method (.*?)|constructor|destructor) with (.*?) parameter with(?:out|) a default argument|(?:method (.*?)|constructor|destructor) with (.*?) parameter with a different default argument|(?:method (.*?)|constructor|destructor) with (?:no |)template arguments|(?:method (.*?)|constructor|destructor) with (.*?) template argument(.*?)|(?:method (.*?)|constructor|destructor) with (.*?) for (.*?) template argument|(?:method (.*?)|constructor|destructor) with (?:no body|body)|(?:method (.*?)|constructor|destructor) with different body|friend (?:class|function)|friend (.*?)|friend function (.*?)|function template (.*?) with (.*?) template parameter(.*?)|function template (.*?) with (.*?) template paramter being a (?:type|non\\-type|template) template parameter|function template (.*?) with (.*?) template parameter (?:with no name|named (.*?))|function template (.*?) with (.*?) template parameter with (?:no |)default argument|function template (.*?) with (.*?) template parameter with default argument (.*?)|function template (.*?) with (.*?) template parameter with different type|function template (.*?) with (.*?) template parameter (?:not |)being a template parameter pack|)",
[g]="defaulted definition of (?:default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor) is not constexpr",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={Bd,1643408541,yd}
[b]={"cc36f698afe0",1324520551,"PR11614: Mark defaulted special constructors as constexpr if their implicit"},
[k]={{r,6609,"bool Sema::CheckExplicitlyDefaultedSpecialMember(CXXMethodDecl *MD, CXXSpecialMember CSM, SourceLocation DefaultLoc) {\n  if ((getLangOpts().CPlusPlus20 || (getLangOpts().CPlusPlus14 ? !isa<CXXDestructorDecl>(MD) : isa<CXXConstructorDecl>(MD))) && MD->isConstexpr() && !Constexpr && MD->getTemplatedKind() == FunctionDecl::TK_NonTemplate) {\n    Diag(MD->getBeginLoc(), MD->isConsteval() ? diag::err_incorrect_defaulted_consteval : diag::err_incorrect_defaulted_constexpr) << CSM;"}}
},
},
["note_module_odr_violation_referenced_protocols"]={
["err_incorrect_number_of_vector_initializers"]={
[c]=Id,
[j]="number of elements must be either one or match the size of the vector",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="but in %select{\'%1\'|definition here}0 found %select{%3 referenced %plural{1:protocol|:protocols}3|%ordinal3 referenced protocol with different name %4}2",
[e]="number of elements must be either one or match the size of the vector",
[b]=q,
[f]=n,
[a]="but in (?:\'(.*?)\'|definition here) found (?:(.*?) referenced (?:protocol|protocols)|(.*?) referenced protocol with different name (.*?))",
[g]="number of elements must be either one or match the size of the vector",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={Bd,1643408541,yd}
[b]={"28ccef788bb2",1301218360,"supported: AltiVec vector initialization with a single literal according to PIM section 2.5.1 - afte..."},
[k]={{q,7346,"ExprResult Sema::BuildVectorLiteral(SourceLocation LParenLoc, SourceLocation RParenLoc, Expr *E, TypeSourceInfo *TInfo) {\n  if (ShouldSplatAltivecScalarInCast(VTy)) {\n    // The number of initializers must be one or must match the size of the\n    // vector. If a single value is specified in the initializer then it will\n    // be replicated to all the components of the vector\n    if (numExprs == 1) {\n    } else if (numExprs < numElems) {\n      Diag(E->getExprLoc(), diag::err_incorrect_number_of_vector_initializers);"}}
},
},
["note_module_odr_violation_template_parameter"]={
["err_increment_decrement_enum"]={
[c]="but in \'A\' found ...",
[j]="cannot ... expression of enum type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="but in \'%0\' found %select{unnamed template parameter %2|template parameter %3|template parameter with %select{no |}2default argument|template parameter with different default argument}1",
[e]="cannot %select{decrement|increment}0 expression of enum type %1",
[b]=q,
[f]=n,
[a]="but in \'(.*?)\' found (?:unnamed template parameter (.*?)|template parameter (.*?)|template parameter with (?:no |)default argument|template parameter with different default argument)",
[g]="cannot (?:decrement|increment) expression of enum type (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"498117bf11d8",1503456239,"[ODRHash] Diagnose differing template parameters."}
[b]={"493df1a14f5d",1375926623,"Emit an error for enum increments and decrements in C++ mode."},
[k]={{q,12672,"/// CheckIncrementDecrementOperand - unlike most \"Check\" methods, this routine\n/// doesn\'t need to call UsualUnaryConversions or UsualArithmeticConversions.\nstatic QualType CheckIncrementDecrementOperand(Sema &S, Expr *Op, ExprValueKind &VK, ExprObjectKind &OK, SourceLocation OpLoc, bool IsInc, bool IsPrefix) {\n  if (S.getLangOpts().CPlusPlus && ResType->isBooleanType()) {\n  } else if (S.getLangOpts().CPlusPlus && ResType->isEnumeralType()) {\n    S.Diag(OpLoc, diag::err_increment_decrement_enum) << IsInc << ResType;"}}
},
},
["note_module_odr_violation_typedef"]={
["err_indirect_goto_in_protected_scope"]={
[c]="but in \'A\' found ...",
[j]="cannot jump from this ... goto statement to one of its possible targets",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="but in \'%0\' found %select{%select{typedef|type alias}2 name %3|%select{typedef|type alias}2 %3 with different underlying type %4}1",
[e]="cannot jump from this %select{indirect|asm}0 goto statement to one of its possible targets",
[b]=q,
[f]=n,
[a]="but in \'(.*?)\' found (?:(?:typedef|type alias) name (.*?)|(?:typedef|type alias) (.*?) with different underlying type (.*?))",
[g]="cannot jump from this (?:indirect|asm) goto statement to one of its possible targets",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={Bd,1643408541,yd}
[b]={"0bf2dd2ed408",1240103126,"First half of jump scope checking for indirect goto."},
[k]={{lb,785,"/// Produce primary diagnostic for an indirect jump statement.\nstatic void DiagnoseIndirectOrAsmJumpStmt(Sema &S, Stmt *Jump, LabelDecl *Target, bool &Diagnosed) {\n  S.Diag(Jump->getBeginLoc(), diag::err_indirect_goto_in_protected_scope) << IsAsmGoto;"}}
},
},
["note_module_odr_violation_variable"]={
["err_indirect_goto_without_addrlabel"]={
[c]="but in \'A\' found ...",
[j]="indirect goto in function with no address-of-label expressions",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="but in \'%0\' found %select{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}1",
[e]="indirect goto in function with no address-of-label expressions",
[b]=q,
[f]=n,
[a]="but in \'(.*?)\' found (?:data member with name (.*?)|data member (.*?) with different type (.*?)|data member (.*?) with(?:out|) an initializer|data member (.*?) with a different initializer|data member (.*?) (?:is constexpr|is not constexpr))",
[g]="indirect goto in function with no address\\-of\\-label expressions",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={Bd,1643408541,yd}
[b]={"cf819ab38311",1273625893,"When checking scopes for indirect goto, be more permissive (but still safe)"},
[k]={{lb,667,"/// VerifyIndirectJumps - Verify whether any possible indirect goto jump might\n/// cross a protection boundary.  Unlike direct jumps, indirect goto jumps\n/// count cleanups as protection boundaries: since there\'s no way to know where\n/// the jump is going, we can\'t implicitly run the right cleanups the way we\n/// can with direct jumps.  Thus, an indirect/asm jump is \"trivial\" if it\n/// bypasses no initializations and no teardowns.  More formally, an\n/// indirect/asm jump from A to B is trivial if the path out from A to DCA(A,B)\n/// is trivial and the path in from DCA(A,B) to B is trivial, where DCA(A,B) is\n/// the deepest common ancestor of A and B.  Jump-triviality is transitive but\n/// asymmetric.\n///\n/// A path in is trivial if none of the entered scopes have an InDiag.\n/// A path out is trivial is none of the exited scopes have an OutDiag.\n///\n/// Under these definitions, this function checks that the indirect\n/// jump between A and B is trivial for every indirect goto statement A\n/// and every label B whose address was taken in the function.\nvoid JumpScopeChecker::VerifyIndirectJumps() {\n  // If there aren\'t any address-of-label expressions in this function,\n  // complain about the first indirect goto.\n  if (IndirectJumpTargets.empty()) {\n    S.Diag(IndirectJumps[0]->getBeginLoc(), diag::err_indirect_goto_without_addrlabel);"}}
},
},
["note_mt_message"]={
["err_init_capture_deduction_failure"]={
[c]="[rewriter] A",
[j]="cannot deduce type for lambda capture A from initializer of type B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="[rewriter] %0",
[e]="cannot deduce type for lambda capture %0 from initializer of type %2",
[b]=q,
[f]=n,
[a]="\\[rewriter\\] (.*?)",
[g]="cannot deduce type for lambda capture (.*?) from initializer of type (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=S,
[i]={"42aa21222d37",1390712852,"ARCMigrate: Introduce proper diagnostics for TransformActions"}
[b]={"ba71c0852340",1368685258,"First pass of semantic analysis for init-captures: check the initializer, build"},
[k]={{p,11181,"QualType Sema::deduceVarTypeFromInitializer(VarDecl *VDecl, DeclarationName Name, QualType Type, TypeSourceInfo *TSI, SourceRange Range, bool DirectInit, Expr *Init) {\n  if (Result != TDK_Success && Result != TDK_AlreadyDiagnosed) {\n    if (!IsInitCapture)\n    else if (isa<InitListExpr>(Init))\n    else\n      Diag(Range.getBegin(), diag::err_init_capture_deduction_failure) << VN << TSI->getType() << (DeduceInit->getType().isNull() ? TSI->getType() : DeduceInit->getType()) << DeduceInit->getSourceRange();"},{"clang/lib/Sema/SemaTemplateDeduction.cpp",4214,"void Sema::DiagnoseAutoDeductionFailure(VarDecl *VDecl, Expr *Init) {\n  if (isa<InitListExpr>(Init))\n  else\n    Diag(VDecl->getLocation(), VDecl->isInitCapture() ? diag::err_init_capture_deduction_failure : diag::err_auto_var_deduction_failure) << VDecl->getDeclName() << VDecl->getType() << Init->getType() << Init->getSourceRange();"}}
},
},
["note_multiversioning_caused_here"]={
["err_init_capture_deduction_failure_from_init_list"]={
[c]="function multiversioning caused by this declaration",
[j]="cannot deduce type for lambda capture A from initializer list",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="function multiversioning caused by this declaration",
[e]="cannot deduce type for lambda capture %0 from initializer list",
[b]=q,
[f]=n,
[a]="function multiversioning caused by this declaration",
[g]="cannot deduce type for lambda capture (.*?) from initializer list",
[g]=p,
[h]=a,
[e]=p,
[i]=S,
[i]={"281d20b601c8",1515447257,"Implement Attribute Target MultiVersioning"}
[b]={"ba71c0852340",1368685258,"First pass of semantic analysis for init-captures: check the initializer, build"},
[k]={{p,11179,"QualType Sema::deduceVarTypeFromInitializer(VarDecl *VDecl, DeclarationName Name, QualType Type, TypeSourceInfo *TSI, SourceRange Range, bool DirectInit, Expr *Init) {\n  if (Result != TDK_Success && Result != TDK_AlreadyDiagnosed) {\n    if (!IsInitCapture)\n    else if (isa<InitListExpr>(Init))\n      Diag(Range.getBegin(), diag::err_init_capture_deduction_failure_from_init_list) << VN << (DeduceInit->getType().isNull() ? TSI->getType() : DeduceInit->getType()) << DeduceInit->getSourceRange();"},{"clang/lib/Sema/SemaTemplateDeduction.cpp",4212,"void Sema::DiagnoseAutoDeductionFailure(VarDecl *VDecl, Expr *Init) {\n  if (isa<InitListExpr>(Init))\n    Diag(VDecl->getLocation(), VDecl->isInitCapture() ? diag::err_init_capture_deduction_failure_from_init_list : diag::err_auto_var_deduction_failure_from_init_list) << VDecl->getDeclName() << VDecl->getType() << Init->getSourceRange();"}}
},
},
["note_musttail_callconv_mismatch"]={
["err_init_capture_multiple_expressions"]={
[c]="target function has calling convention A (expected B)",
[j]="initializer for lambda capture A contains multiple expressions",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="target function has calling convention %1 (expected %0)",
[e]="initializer for lambda capture %0 contains multiple expressions",
[b]=q,
[f]=n,
[a]="target function has calling convention (.*?) \\(expected (.*?)\\)",
[g]="initializer for lambda capture (.*?) contains multiple expressions",
[g]=p,
[h]=a,
[e]=o,
[i]=S,
[i]={Lc,1607502387,Mc}
[b]={"ba71c0852340",1368685258,"First pass of semantic analysis for init-captures: check the initializer, build"},
[k]={{p,11145,"QualType Sema::deduceVarTypeFromInitializer(VarDecl *VDecl, DeclarationName Name, QualType Type, TypeSourceInfo *TSI, SourceRange Range, bool DirectInit, Expr *Init) {\n  if (DeduceInits.size() > 1) {\n    Diag(DeduceInits[1]->getBeginLoc(), IsInitCapture ? diag::err_init_capture_multiple_expressions : diag::err_auto_var_init_multiple_expressions) << VN << Type << Range;"}}
},
},
["note_musttail_callee_defined_here"]={
["err_init_capture_no_expression"]={
[c]="A declared here",
[j]="initializer missing for lambda capture A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 declared here",
[e]="initializer missing for lambda capture %0",
[b]=q,
[f]=n,
[a]="(.*?) declared here",
[g]="initializer missing for lambda capture (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=S,
[i]={Lc,1607502387,Mc}
[b]={"ba71c0852340",1368685258,"First pass of semantic analysis for init-captures: check the initializer, build"},
[k]={{p,11140,"QualType Sema::deduceVarTypeFromInitializer(VarDecl *VDecl, DeclarationName Name, QualType Type, TypeSourceInfo *TSI, SourceRange Range, bool DirectInit, Expr *Init) {\n  // Deduction only works if we have exactly one source expression.\n  if (DeduceInits.empty()) {\n    Diag(Init->getBeginLoc(), IsInitCapture ? diag::err_init_capture_no_expression : diag::err_auto_var_init_no_expression) << VN << Type << Range;"}}
},
},
["note_musttail_fix_non_prototype"]={
["err_init_capture_paren_braces"]={
[c]="add \'void\' to the parameter list to turn an old-style K&R function declaration into a prototype",
[j]="cannot deduce type for lambda capture A from ... initializer list",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="add \'void\' to the parameter list to turn an old-style K&R function declaration into a prototype",
[e]="cannot deduce type for lambda capture %1 from %select{parenthesized|nested}0 initializer list",
[b]=q,
[f]=n,
[a]="add \'void\' to the parameter list to turn an old\\-style K&R function declaration into a prototype",
[g]="cannot deduce type for lambda capture (.*?) from (?:parenthesized|nested) initializer list",
[g]=p,
[h]=a,
[e]=o,
[i]=S,
[i]={Lc,1607502387,Mc}
[b]={"66204ecff985",1394646165,"DR1346: a parenthesized braced-init-list cannot be used as the initializer when"},
[k]={{p,11151,"QualType Sema::deduceVarTypeFromInitializer(VarDecl *VDecl, DeclarationName Name, QualType Type, TypeSourceInfo *TSI, SourceRange Range, bool DirectInit, Expr *Init) {\n  if (DirectInit && isa<InitListExpr>(DeduceInit)) {\n    Diag(Init->getBeginLoc(), IsInitCapture ? diag::err_init_capture_paren_braces : diag::err_auto_var_init_paren_braces) << isa<InitListExpr>(Init) << VN << Type << Range;"}}
},
},
["note_musttail_mismatch"]={
["err_init_conversion_failed"]={
[c]="target function ...",
[j]="cannot initialize ... of type A with an ... of type B...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="target function %select{is a member of different class%diff{ (expected $ but has $)|}1,2|has different number of parameters (expected %1 but has %2)|has type mismatch at %ordinal3 parameter%diff{ (expected $ but has $)|}1,2|has different return type%diff{ ($ expected but has $)|}1,2}0",
[e]="cannot initialize %select{a variable|a parameter|template 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|a structured binding|a member subobject}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",
[b]=q,
[f]=n,
[a]="target function (?:is a member of different class(?: \\(expected (.*?) but has (.*?)\\)|)|has different number of parameters \\(expected (.*?) but has (.*?)\\)|has type mismatch at (.*?) parameter(?: \\(expected (.*?) but has (.*?)\\)|)|has different return type(?: \\((.*?) expected but has (.*?)\\)|))",
[g]="cannot initialize (?:a variable|a parameter|template 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|a structured binding|a member subobject) (?:of type (.*?) with an (?:rvalue|lvalue) of type (.*?)|with an (?:rvalue|lvalue) of incompatible type)(?:|\\: different classes(?: \\((.*?) vs (.*?)\\)|)|\\: different number of parameters \\((.*?) vs (.*?)\\)|\\: type mismatch at (.*?) parameter(?: \\((.*?) vs (.*?)\\)|)|\\: different return type(?: \\((.*?) vs (.*?)\\)|)|\\: different qualifiers \\((.*?) vs (.*?)\\)|\\: different exception specifications)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={Lc,1607502387,Mc}
[b]={"e1314a64b803",1261112541,"Switch the initialization required by return statements over to the"},
[k]={{L,8263,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n  case FK_ConversionFailed: {\n    PartialDiagnostic PDiag = S.PDiag(diag::err_init_conversion_failed) << (int)Entity.getKind() << DestType << OnlyArg->isLValue() << FromType << Args[0]->getSourceRange();"}}
},
},
["note_musttail_structors_forbidden"]={
["err_init_element_not_constant"]={
[c]="target ... is declared here",
[j]="initializer element is not a compile-time constant",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="target %select{constructor|destructor}0 is declared here",
[e]="initializer element is not a compile-time constant",
[b]=q,
[f]=n,
[a]="target (?:constructor|destructor) is declared here",
[g]="initializer element is not a compile\\-time constant",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={Lc,1607502387,Mc}
[b]={x,1237025389,w},
[k]={{p,10764,"bool Sema::CheckForConstantInitializer(Expr *Init, QualType DclT) {\n  Diag(Culprit->getExprLoc(), diag::err_init_element_not_constant) << Culprit->getSourceRange();"}}
},
},
["note_namespace_defined_here"]={
["err_init_for_function_type"]={
[c]="namespace A defined here",
[j]="cannot create object of function type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="namespace %0 defined here",
[e]="cannot create object of function type %0",
[b]=q,
[f]=n,
[a]="namespace (.*?) defined here",
[g]="cannot create object of function type (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"cdf87024edb7",1277834026,"Allow a using directive to refer to the implicitly-defined namespace"}
[b]={"49a6b6e91edf",1490318065,"Fix handling of initialization from parenthesized initializer list."},
[k]={{B,1386,"ExprResult Sema::BuildCXXTypeConstructExpr(TypeSourceInfo *TInfo, SourceLocation LParenOrBraceLoc, MultiExprArg Exprs, SourceLocation RParenOrBraceLoc, bool ListInitialization) {\n  // Only construct objects with object types.\n  // The standard doesn\'t explicitly forbid function types here, but that\'s an\n  // obvious oversight, as there\'s no way to dynamically construct a function\n  // in general.\n  if (Ty->isFunctionType())\n    return ExprError(Diag(TyBeginLoc, diag::err_init_for_function_type) << Ty << FullRange);"}}
},
},
["note_neon_vector_initializer_non_portable"]={
["err_init_incomplete_type"]={
[c]="consider using vld1_AB() to initialize a vector from memory, or vcreate_CD() to initialize from an integer constant",
[j]="initialization of incomplete type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="consider using vld1_%0%1() to initialize a vector from memory, or vcreate_%0%1() to initialize from an integer constant",
[e]="initialization of incomplete type %0",
[b]=q,
[f]=n,
[a]="consider using vld1_(.*?)(.*?)\\(\\) to initialize a vector from memory, or vcreate_(.*?)(.*?)\\(\\) to initialize from an integer constant",
[g]="initialization of incomplete type (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"9eef2659bf60",1403274913,"The ability to use vector initializer lists is a GNU vector extension"}
[b]={"3f4f03a23553",1274393522,"Add a new failure kind, FK_Incomplete, to InitializationSequence, to"},
[k]={{L,8394,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n  case FK_Incomplete:\n    S.RequireCompleteType(Kind.getLocation(), FailedIncompleteType, diag::err_init_incomplete_type);"}}
},
},
["note_neon_vector_initializer_non_portable_q"]={
["err_init_list_bad_dest_type"]={
[c]="consider using vld1q_AB() to initialize a vector from memory, or vcombine_CD(vcreate_EF(), vcreate_GH()) to initialize from integer constants",
[j]="...type A cannot be initialized with an initializer list",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="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",
[e]="%select{|non-aggregate }0type %1 cannot be initialized with an initializer list",
[b]=q,
[f]=n,
[a]="consider using vld1q_(.*?)(.*?)\\(\\) to initialize a vector from memory, or vcombine_(.*?)(.*?)\\(vcreate_(.*?)(.*?)\\(\\), vcreate_(.*?)(.*?)\\(\\)\\) to initialize from integer constants",
[g]="(?:|non\\-aggregate )type (.*?) cannot be initialized with an initializer list",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"9eef2659bf60",1403274913,"The ability to use vector initializer lists is a GNU vector extension"}
[b]={"51e77d5ab0a0",1260467815,"Move initialization via initializer list over to InitializationSequences."},
[k]={{L,8302,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n  case FK_InitListBadDestinationType:\n    S.Diag(Kind.getLocation(), diag::err_init_list_bad_dest_type) << (DestType->isRecordType()) << DestType << Args[0]->getSourceRange();"}}
},
},
["note_nested_requirement_here"]={
["err_init_list_bin_op"]={
[c]="while checking the satisfaction of nested requirement requested here",
[j]="initializer list cannot be used on the ... hand side of operator \'A\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="while checking the satisfaction of nested requirement requested here",
[e]="initializer list cannot be used on the %select{left|right}0 hand side of operator \'%1\'",
[b]=q,
[f]=n,
[a]="while checking the satisfaction of nested requirement requested here",
[g]="initializer list cannot be used on the (?:left|right) hand side of operator \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"6d485ff455ea",1576172311,Md}
[b]={"5e0cac784a57",1330570757,"Reject \'a = {0} = {0}\' rather than parsing it as \'(a = {0}) = {0}\'. Also"},
[k]={{Fb,422,"/// Parse a binary expression that starts with \\p LHS and has a\n/// precedence of at least \\p MinPrec.\nExprResult Parser::ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec) {\n  while (true) {\n    if (NextTokPrec == prec::Conditional) {\n      if (getLangOpts().CPlusPlus11 && Tok.is(tok::l_brace)) {\n        if (!TernaryMiddle.isInvalid()) {\n          Diag(BraceLoc, diag::err_init_list_bin_op) << /*RHS*/ 1 << PP.getSpelling(OpToken) << Actions.getExprRange(TernaryMiddle.get());"},{Fb,516,"/// Parse a binary expression that starts with \\p LHS and has a\n/// precedence of at least \\p MinPrec.\nExprResult Parser::ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec) {\n  while (true) {\n    // Get the precedence of the operator to the right of the RHS.  If it binds\n    // more tightly with RHS than we do, evaluate it completely first.\n    if (ThisPrec < NextTokPrec || (ThisPrec == NextTokPrec && isRightAssoc)) {\n      if (!RHS.isInvalid() && RHSIsInitList) {\n        Diag(Tok, diag::err_init_list_bin_op) << /*LHS*/ 0 << PP.getSpelling(Tok) << Actions.getExprRange(RHS.get());"},{Fb,543,"/// Parse a binary expression that starts with \\p LHS and has a\n/// precedence of at least \\p MinPrec.\nExprResult Parser::ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec) {\n  while (true) {\n    if (!RHS.isInvalid() && RHSIsInitList) {\n      if (ThisPrec == prec::Assignment) {\n      } else if (ColonLoc.isValid()) {\n        Diag(ColonLoc, diag::err_init_list_bin_op) << /*RHS*/ 1 << \":\" << Actions.getExprRange(RHS.get());"},{Fb,546,"/// Parse a binary expression that starts with \\p LHS and has a\n/// precedence of at least \\p MinPrec.\nExprResult Parser::ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec) {\n  while (true) {\n    if (!RHS.isInvalid() && RHSIsInitList) {\n      if (ThisPrec == prec::Assignment) {\n      } else if (ColonLoc.isValid()) {\n      } else {\n        Diag(OpToken, diag::err_init_list_bin_op) << /*RHS*/ 1 << PP.getSpelling(OpToken) << Actions.getExprRange(RHS.get());"}}
},
},
["note_nested_requirement_substitution_error"]={
["err_init_method_bad_return_type"]={
[c]="... \'A\' would be invalidB",
[j]="init methods must return an object pointer type, not A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{and|because}0 \'%1\' would be invalid%2",
[e]="init methods must return an object pointer type, not %0",
[b]=q,
[f]=n,
[a]="(?:and|because) \'(.*?)\' would be invalid(.*?)",
[g]="init methods must return an object pointer type, not (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"6d485ff455ea",1576172311,Md}
[b]={"31168b077c36",1308178962,"Automatic Reference Counting."},
[k]={{v,2612,"static void handleObjCMethodFamilyAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (F == ObjCMethodFamilyAttr::OMF_init && !M->getReturnType()->isObjCObjectPointerType()) {\n    S.Diag(M->getLocation(), diag::err_init_method_bad_return_type) << M->getReturnType();"}}
},
},
["note_nested_requirement_unknown_substitution_error"]={
["err_init_non_aggr_init_list"]={
[c]="... \'A\' would be invalid",
[j]="initialization of non-aggregate type A with an initializer list",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{and|because}0 \'%1\' would be invalid",
[e]="initialization of non-aggregate type %0 with an initializer list",
[b]=q,
[f]=n,
[a]="(?:and|because) \'(.*?)\' would be invalid",
[g]="initialization of non\\-aggregate type (.*?) with an initializer list",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"6d485ff455ea",1576172311,Md}
[b]={z,1236199783,A},
[k]={{L,1380,"void InitListChecker::CheckReferenceType(const InitializedEntity &Entity, InitListExpr *IList, QualType DeclType, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex) {\n  if (isa<InitListExpr>(expr) && !SemaRef.getLangOpts().CPlusPlus11) {\n    if (!VerifyOnly)\n      SemaRef.Diag(IList->getBeginLoc(), diag::err_init_non_aggr_init_list) << DeclType << IList->getSourceRange();"}}
},
},
["note_next_field_declaration"]={
["err_init_objc_class"]={
[c]="next field declaration is here",
[j]="cannot initialize Objective-C class type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="next field declaration is here",
[e]="cannot initialize Objective-C class type %0",
[b]=q,
[f]=n,
[a]="next field declaration is here",
[g]="cannot initialize Objective\\-C class type (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"30680e943735",1508796101,"[Sema] Add support for flexible array members in Obj-C."}
[b]={"50ec46d4af82",1272911077,"Complain when we try to initialize an object of Objective-C class type"},
[k]={{L,1094,"void InitListChecker::CheckListElementTypes(const InitializedEntity &Entity, InitListExpr *IList, QualType &DeclType, bool SubobjectIsDesignatorContext, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex, bool TopLevelObject) {\n  if (DeclType->isAnyComplexType() && SubobjectIsDesignatorContext) {\n  } else if (DeclType->isScalarType()) {\n  } else if (DeclType->isVectorType()) {\n  } else if (const RecordDecl *RD = getRecordDecl(DeclType)) {\n  } else if (DeclType->isArrayType()) {\n  } else if (DeclType->isVoidType() || DeclType->isFunctionType()) {\n  } else if (DeclType->isReferenceType()) {\n  } else if (DeclType->isObjCObjectType()) {\n    if (!VerifyOnly)\n      SemaRef.Diag(IList->getBeginLoc(), diag::err_init_objc_class) << DeclType;"}}
},
},
["note_next_ivar_declaration"]={
["err_init_priority_object_attr"]={
[c]="next ... is here",
[j]="can only use \'init_priority\' attribute on file-scope definitions of objects of class type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="next %select{instance variable declaration|synthesized instance variable}0 is here",
[e]="can only use \'init_priority\' attribute on file-scope definitions of objects of class type",
[b]=q,
[f]=n,
[a]="next (?:instance variable declaration|synthesized instance variable) is here",
[g]="can only use \'init_priority\' attribute on file\\-scope definitions of objects of class type",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"30680e943735",1508796101,"[Sema] Add support for flexible array members in Obj-C."}
[b]={"0bf5ee74c473",1276902893,"More Sema Check and a test case for init_priority attr."},
[k]={{v,3370,"/// Handle __attribute__((init_priority(priority))) attributes based on\n/// http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html\nstatic void handleInitPriorityAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (S.getCurFunctionOrMethodDecl()) {\n    S.Diag(AL.getLoc(), diag::err_init_priority_object_attr);"},{v,3378,"/// Handle __attribute__((init_priority(priority))) attributes based on\n/// http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html\nstatic void handleInitPriorityAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (!T->getAs<RecordType>()) {\n    S.Diag(AL.getLoc(), diag::err_init_priority_object_attr);"}}
},
},
["note_non_c_like_anon_struct"]={
["err_init_reference_member_uninitialized"]={
[c]="type is not C-compatible due to this ...",
[j]="reference member of type A uninitialized",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="type is not C-compatible due to this %select{base class|default member initializer|lambda expression|friend declaration|member declaration}0",
[e]="reference member of type %0 uninitialized",
[b]=q,
[f]=n,
[a]="type is not C\\-compatible due to this (?:base class|default member initializer|lambda expression|friend declaration|member declaration)",
[g]="reference member of type (.*?) uninitialized",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={Pb,1576809732,Qb}
[b]={z,1236199783,A},
[k]={{L,567,"void InitListChecker::FillInEmptyInitForField(unsigned Init, FieldDecl *Field, const InitializedEntity &ParentEntity, InitListExpr *ILE, bool &RequiresSecondPass, bool FillWithNoInit) {\n  if (Init >= NumInits || !ILE->getInit(Init)) {\n    if (Field->getType()->isReferenceType()) {\n      if (!VerifyOnly) {\n        SemaRef.Diag(Loc, diag::err_init_reference_member_uninitialized) << Field->getType() << (ILE->isSyntacticForm() ? ILE : ILE->getSyntacticForm())->getSourceRange();"},{L,1370,"void InitListChecker::CheckReferenceType(const InitializedEntity &Entity, InitListExpr *IList, QualType DeclType, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex) {\n  if (Index >= IList->getNumInits()) {\n    // FIXME: It would be wonderful if we could point at the actual member. In\n    // general, it would be useful to pass location information down the stack,\n    // so that we know the location (or decl) of the \"current object\" being\n    // initialized.\n    if (!VerifyOnly)\n      SemaRef.Diag(IList->getBeginLoc(), diag::err_init_reference_member_uninitialized) << DeclType << IList->getSourceRange();"},{L,4756,"static void TryOrBuildParenListInitialization(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args, InitializationSequence &Sequence, bool VerifyOnly, ExprResult *Result = nullptr) {\n  if (const ArrayType *AT = S.getASTContext().getAsArrayType(Entity.getType())) {\n  } else if (auto *RT = Entity.getType()->getAs<RecordType>()) {\n    for (FieldDecl *FD : RD->fields()) {\n      if (EntityIndexToProcess < Args.size()) {\n      } else {\n        // We\'ve processed all of the args, but there are still members that\n        // have to be initialized.\n        if (FD->hasInClassInitializer()) {\n        } else {\n          // C++ [dcl.init]p17.6.2.2\n          //  The remaining elements...otherwise are value initialzed\n          if (FD->getType()->isReferenceType()) {\n            if (!VerifyOnly) {\n              S.Diag(SR.getEnd(), diag::err_init_reference_member_uninitialized) << FD->getType() << SR;"}}
},
},
["note_non_deducible_parameter"]={
["err_initializer_overrides_destructed"]={
[c]="non-deducible template parameter A",
[j]="initializer would partially override prior initialization of object of type A with non-trivial destruction",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="non-deducible template parameter %0",
[e]="initializer would partially override prior initialization of object of type %1 with non-trivial destruction",
[b]=q,
[f]=n,
[a]="non\\-deducible template parameter (.*?)",
[g]="initializer would partially override prior initialization of object of type (.*?) with non\\-trivial destruction",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"4e05eaa9e84a",1487205407,"[c++1z] Diagnose non-deducible template parameters in deduction guide templates, per [temp.param]p11..."}
[b]={"5030928d60a1",1567205575,"[c++20] Implement semantic restrictions for C++20 designated"},
[k]={{L,340,"/// Semantic checking for initializer lists.\n///\n/// The InitListChecker class contains a set of routines that each\n/// handle the initialization of a certain kind of entity, e.g.,\n/// arrays, vectors, struct/union types, scalars, etc. The\n/// InitListChecker itself performs a recursive walk of the subobject\n/// structure of the type to be initialized, while stepping through\n/// the initializer list one element at a time. The IList and Index\n/// parameters to each of the Check* routines contain the active\n/// (syntactic) initializer list and the index into that initializer\n/// list that represents the current initializer. Each routine is\n/// responsible for moving that Index forward as it consumes elements.\n///\n/// Each Check* routine also has a StructuredList/StructuredIndex\n/// arguments, which contains the current \"structured\" (semantic)\n/// initializer list and the index into that initializer list where we\n/// are copying initializers as we map them over to the semantic\n/// list. Once we have completed our recursive walk of the subobject\n/// structure, we will have constructed a full semantic initializer\n/// list.\n///\n/// C99 designators cause changes in the initializer list traversal,\n/// because they make the initialization \"jump\" into a specific\n/// subobject and then continue the initialization from that\n/// point. CheckDesignatedInitializer() recursively steps into the\n/// designated subobject and manages backing out the recursion to\n/// initialize the subobjects after the one designated.\n///\n/// If an initializer list contains any designators, we build a placeholder\n/// structured list even in \'verify only\' mode, so that we can track which\n/// elements need \'empty\' initializtion.\nclass InitListChecker {\n  /// Diagnose that OldInit (or part thereof) has been overridden by NewInit.\n  void diagnoseInitOverride(Expr *OldInit, SourceRange NewInitRange, bool UnionOverride = false, bool FullyOverwritten = true) {\n    if (InOverloadResolution && SemaRef.getLangOpts().CPlusPlus) {\n    } else if (OldInit->getType().isDestructedType() && !FullyOverwritten) {\n      DiagID = diag::err_initializer_overrides_destructed;"}}
},
},
["note_non_instantiated_member_here"]={
["err_initializer_string_for_char_array_too_long"]={
[c]="not-yet-instantiated member is declared here",
[j]="initializer-string for char array is too long, array size is A but initializer has size B (including the null terminating character)",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="not-yet-instantiated member is declared here",
[e]="initializer-string for char array is too long, array size is %0 but initializer has size %1 (including the null terminating character)",
[b]=q,
[f]=n,
[a]="not\\-yet\\-instantiated member is declared here",
[g]="initializer\\-string for char array is too long, array size is (.*?) but initializer has size (.*?) \\(including the null terminating character\\)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"528ad93924b1",1299442365,"We may fail to map a declaration in a template to its instantiated"}
[b]={"554eba9c0873",1302481425,"PR9669: implement correct checking for [dcl.init.string]p2."},
[k]={{L,226,"static void CheckStringInit(Expr *Str, QualType &DeclT, const ArrayType *AT, Sema &S) {\n  // We have an array of character type with known size.  However,\n  // the size may be smaller or larger than the string we are initializing.\n  // FIXME: Avoid truncation for 64-bit length strings.\n  if (S.getLangOpts().CPlusPlus) {\n    // [dcl.init.string]p2\n    if (StrLength > CAT->getSize().getZExtValue())\n      S.Diag(Str->getBeginLoc(), diag::err_initializer_string_for_char_array_too_long) << CAT->getSize().getZExtValue() << StrLength << Str->getSourceRange();"}}
},
},
["note_non_literal_base_class"]={
["err_inline_decl_follows_def"]={
[c]="A is not literal because it has base class B of non-literal type",
[j]="inline declaration of A follows non-inline definition",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is not literal because it has base class %1 of non-literal type",
[e]="inline declaration of %0 follows non-inline definition",
[b]=q,
[f]=n,
[a]="(.*?) is not literal because it has base class (.*?) of non\\-literal type",
[g]="inline declaration of (.*?) follows non\\-inline definition",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"eb3c10c248ac",1317436288,"constexpr: semantic checking for constexpr functions and constructors. Based in"}
[b]={"ee4f4025c3e7",1396161894,"Sema: Implement DR317"},
[k]={{p,4197,"/// MergeVarDecl - We just parsed a variable \'New\' which has the same name\n/// and scope as a previous declaration \'Old\'.  Figure out how to resolve this\n/// situation, merging decls or emitting diagnostics as appropriate.\n///\n/// Tentative definition rules (C99 6.9.2p2) are checked by\n/// FinalizeDeclaratorGroup. Unfortunately, we can\'t analyze tentative\n/// definitions here, since the initializer hasn\'t been attached.\n///\nvoid Sema::MergeVarDecl(VarDecl *New, LookupResult &Previous) {\n  if (New->isInline() && !Old->getMostRecentDecl()->isInline()) {\n    if (VarDecl *Def = Old->getDefinition()) {\n      Diag(New->getLocation(), diag::err_inline_decl_follows_def) << New;"},{r,614,"/// MergeCXXFunctionDecl - Merge two declarations of the same C++\n/// function, once we already know that they have the same\n/// type. Subroutine of MergeFunctionDecl. Returns true if there was an\n/// error, false otherwise.\nbool Sema::MergeCXXFunctionDecl(FunctionDecl *New, FunctionDecl *Old, Scope *S) {\n  // C++11 [dcl.constexpr]p1: If any declaration of a function or function\n  // template has a constexpr specifier then all its declarations shall\n  // contain the constexpr specifier.\n  if (New->getConstexprKind() != Old->getConstexprKind()) {\n  } else if (!Old->getMostRecentDecl()->isInlined() && New->isInlined() && Old->isDefined(Def) &&\n    Diag(New->getLocation(), diag::err_inline_decl_follows_def) << New;"}}
},
},
["note_non_literal_field"]={
["err_inline_declaration_block_scope"]={
[c]="A is not literal because it has data member B of ... type C",
[j]="inline declaration of A not allowed in block scope",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is not literal because it has data member %1 of %select{non-literal|volatile}3 type %2",
[e]="inline declaration of %0 not allowed in block scope",
[b]=q,
[f]=n,
[a]="(.*?) is not literal because it has data member (.*?) of (?:non\\-literal|volatile) type (.*?)",
[g]="inline declaration of (.*?) not allowed in block scope",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"eb3c10c248ac",1317436288,"constexpr: semantic checking for constexpr functions and constructors. Based in"}
[b]={"2588691a6960",1281095050,"Diagnose the use of \"inline\" on block-scope function declarations in"},
[k]={{p,6853,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n  if (D.getDeclSpec().isInlineSpecified()) {\n    if (!getLangOpts().CPlusPlus) {\n    } else if (CurContext->isFunctionOrMethod()) {\n      Diag(D.getDeclSpec().getInlineSpecLoc(), diag::err_inline_declaration_block_scope) << Name << FixItHint::CreateRemoval(D.getDeclSpec().getInlineSpecLoc());"},{p,8709,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n  if (getLangOpts().CPlusPlus) {\n    // C++ [dcl.fct.spec]p3:\n    //  The inline specifier shall not appear on a block scope function\n    //  declaration.\n    if (isInline && !NewFD->isInvalidDecl()) {\n      if (CurContext->isFunctionOrMethod()) {\n        Diag(D.getDeclSpec().getInlineSpecLoc(), diag::err_inline_declaration_block_scope) << Name << FixItHint::CreateRemoval(D.getDeclSpec().getInlineSpecLoc());"}}
},
},
["note_non_literal_incomplete"]={
["err_inline_main"]={
[c]="incomplete type A is not a literal type",
[j]="\'main\' is not allowed to be declared inline",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="incomplete type %0 is not a literal type",
[e]="\'main\' is not allowed to be declared inline",
[b]=q,
[f]=n,
[a]="incomplete type (.*?) is not a literal type",
[g]="\'main\' is not allowed to be declared inline",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"6ca73133ca7b",1335396228,"If a type is non-literal by virtue of being incomplete produce notes"}
[b]={"d937bf13d461",1315463584,"Adding FixIts to static/inline main declaration diagnostics."},
[k]={{p,10534,"void Sema::CheckMain(FunctionDecl *FD, const DeclSpec &DS) {\n  if (FD->isInlineSpecified())\n    Diag(DS.getInlineSpecLoc(), diag::err_inline_main) << FixItHint::CreateRemoval(DS.getInlineSpecLoc());"}}
},
},
["note_non_literal_lambda"]={
["err_inline_namespace_alias"]={
[c]="lambda closure types are non-literal types before C++17",
[j]="namespace alias cannot be inline",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="lambda closure types are non-literal types before C++17",
[e]="namespace alias cannot be inline",
[b]=q,
[f]=n,
[a]="lambda closure types are non\\-literal types before C\\+\\+17",
[g]="namespace alias cannot be inline",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"d699da427a4c",1526328904,"PR37450: Fix bug that disabled some type checks for variables with deduced types."}
[b]={"6766794c0b91",1282950766,"Parser support for inline namespaces"},
[k]={{R,137,"/// ParseNamespace - We know that the current token is a namespace keyword. This\n/// may either be a top level namespace or a block-level namespace alias. If\n/// there was an inline keyword, it has already been parsed.\n///\n///      namespace-definition: [C++: namespace.def]\n///        named-namespace-definition\n///        unnamed-namespace-definition\n///        nested-namespace-definition\n///\n///      named-namespace-definition:\n///        \'inline\'[opt] \'namespace\' attributes[opt] identifier \'{\'\n///        namespace-body \'}\'\n///\n///      unnamed-namespace-definition:\n///        \'inline\'[opt] \'namespace\' attributes[opt] \'{\' namespace-body \'}\'\n///\n///      nested-namespace-definition:\n///        \'namespace\' enclosing-namespace-specifier \'::\' \'inline\'[opt]\n///        identifier \'{\' namespace-body \'}\'\n///\n///      enclosing-namespace-specifier:\n///        identifier\n///        enclosing-namespace-specifier \'::\' \'inline\'[opt] identifier\n///\n///      namespace-alias-definition: [C++ 7.3.2: namespace.alias]\n///        \'namespace\' identifier \'=\' qualified-namespace-specifier \';\'\n///\nParser::DeclGroupPtrTy Parser::ParseNamespace(DeclaratorContext Context, SourceLocation &DeclEnd, SourceLocation InlineLoc) {\n  if (Tok.is(tok::equal)) {\n    if (InlineLoc.isValid())\n      Diag(InlineLoc, diag::err_inline_namespace_alias) << FixItHint::CreateRemoval(InlineLoc);"}}
},
},
["note_non_literal_no_constexpr_ctors"]={
["err_inline_namespace_mismatch"]={
[c]="A is not literal because it is not an aggregate and has no constexpr constructors other than copy or move constructors",
[j]="non-inline namespace cannot be reopened as inline",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is not literal because it is not an aggregate and has no constexpr constructors other than copy or move constructors",
[e]="non-inline namespace cannot be reopened as inline",
[b]=q,
[f]=n,
[a]="(.*?) is not literal because it is not an aggregate and has no constexpr constructors other than copy or move constructors",
[g]="non\\-inline namespace cannot be reopened as inline",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"eb3c10c248ac",1317436288,"constexpr: semantic checking for constexpr functions and constructors. Based in"}
[b]={"b5c2baa2d7a2",1283214996,"Enable inline namespaces in the AST."},
[k]={{r,9765,"/// Diagnose a mismatch in \'inline\' qualifiers when a namespace is\n/// reopened.\nstatic void DiagnoseNamespaceInlineMismatch(Sema &S, SourceLocation KeywordLoc, SourceLocation Loc, IdentifierInfo *II, bool *IsInline, NamespaceDecl *PrevNS) {\n  if (PrevNS->isInline())\n  else\n    S.Diag(Loc, diag::err_inline_namespace_mismatch);"}}
},
},
["note_non_literal_non_constexpr_dtor"]={
["err_inline_namespace_std"]={
[c]="A is not literal because its destructor is not constexpr",
[j]="cannot declare the namespace \'std\' to be inline",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is not literal because its destructor is not constexpr",
[e]="cannot declare the namespace \'std\' to be inline",
[b]=q,
[f]=n,
[a]="(.*?) is not literal because its destructor is not constexpr",
[g]="cannot declare the namespace \'std\' to be inline",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={kb,1567434909,mb}
[b]={"bed75faf7d76",1690219823,"[Clang] Reject programs declaring namespace std to be inline"},
[k]={{r,9793,"/// ActOnStartNamespaceDef - This is called at the start of a namespace\n/// definition.\nDecl *Sema::ActOnStartNamespaceDef(Scope *NamespcScope, SourceLocation InlineLoc, SourceLocation NamespaceLoc, SourceLocation IdentLoc, IdentifierInfo *II, SourceLocation LBrace, const ParsedAttributesView &AttrList, UsingDirectiveDecl *&UD, bool IsNested) {\n  if (II) {\n    // C++ [namespace.std]p7:\n    //  A translation unit shall not declare namespace std to be an inline\n    //  namespace (9.8.2).\n    //\n    // Precondition: the std namespace is in the file scope and is declared to\n    // be inline\n    auto DiagnoseInlineStdNS = [&]() {\n      Diag(InlineLoc, diag::err_inline_namespace_std) << SourceRange(InlineLoc, InlineLoc.getLocWithOffset(6));"}}
},
},
["note_non_literal_nontrivial_dtor"]={
["err_inline_nested_namespace_definition"]={
[c]="A is not literal because it has a non-trivial destructor",
[j]="nested namespace definition cannot be \'inline\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is not literal because it has a non-trivial destructor",
[e]="nested namespace definition cannot be \'inline\'",
[b]=q,
[f]=n,
[a]="(.*?) is not literal because it has a non\\-trivial destructor",
[g]="nested namespace definition cannot be \'inline\'",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"eb3c10c248ac",1317436288,"constexpr: semantic checking for constexpr functions and constructors. Based in"}
[b]={"13307f5f2429",1415425054,"[c++1z] Implement nested-namespace-definitions."},
[k]={{R,160,"/// ParseNamespace - We know that the current token is a namespace keyword. This\n/// may either be a top level namespace or a block-level namespace alias. If\n/// there was an inline keyword, it has already been parsed.\n///\n///      namespace-definition: [C++: namespace.def]\n///        named-namespace-definition\n///        unnamed-namespace-definition\n///        nested-namespace-definition\n///\n///      named-namespace-definition:\n///        \'inline\'[opt] \'namespace\' attributes[opt] identifier \'{\'\n///        namespace-body \'}\'\n///\n///      unnamed-namespace-definition:\n///        \'inline\'[opt] \'namespace\' attributes[opt] \'{\' namespace-body \'}\'\n///\n///      nested-namespace-definition:\n///        \'namespace\' enclosing-namespace-specifier \'::\' \'inline\'[opt]\n///        identifier \'{\' namespace-body \'}\'\n///\n///      enclosing-namespace-specifier:\n///        identifier\n///        enclosing-namespace-specifier \'::\' \'inline\'[opt] identifier\n///\n///      namespace-alias-definition:  [C++ 7.3.2: namespace.alias]\n///        \'namespace\' identifier \'=\' qualified-namespace-specifier \';\'\n///\nParser::DeclGroupPtrTy Parser::ParseNamespace(DeclaratorContext Context, SourceLocation &DeclEnd, SourceLocation InlineLoc) {\n  if (ExtraNSs.empty()) {\n  } else if (InlineLoc.isValid()) {\n    Diag(InlineLoc, diag::err_inline_nested_namespace_definition);"}}
},
},
["note_non_literal_user_provided_dtor"]={
["err_inline_non_function"]={
[c]="A is not literal because it has a user-provided destructor",
[j]="\'inline\' can only appear on functions...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is not literal because it has a user-provided destructor",
[e]="\'inline\' can only appear on functions%select{| and non-local variables}0",
[b]=q,
[f]=n,
[a]="(.*?) is not literal because it has a user\\-provided destructor",
[g]="\'inline\' can only appear on functions(?:| and non\\-local variables)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"eb3c10c248ac",1317436288,"constexpr: semantic checking for constexpr functions and constructors. Based in"}
[b]={"574c74537027",1239133077,"Diagnose uses of function specifiers on declarations which don\'t declare"},
[k]={{p,4562,"/// ParsedFreeStandingDeclSpec - This method is invoked when a declspec with\n/// no declarator (e.g. \"struct foo;\") is parsed. It also accepts template\n/// parameters to cope with template friend declarations.\nDecl *Sema::ParsedFreeStandingDeclSpec(Scope *S, AccessSpecifier AS, DeclSpec &DS, const ParsedAttributesView &DeclAttrs, MultiTemplateParamsArg TemplateParams, bool IsExplicitInstantiation, RecordDecl *&AnonRecord) {\n  if (DS.isInlineSpecified())\n    Diag(DS.getInlineSpecLoc(), diag::err_inline_non_function) << getLangOpts().CPlusPlus17;"},{p,5922,"NamedDecl *Sema::ActOnTypedefDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous) {\n  if (D.getDeclSpec().isInlineSpecified())\n    Diag(D.getDeclSpec().getInlineSpecLoc(), diag::err_inline_non_function) << getLangOpts().CPlusPlus17;"},{p,6850,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n  if (D.getDeclSpec().isInlineSpecified()) {\n    if (!getLangOpts().CPlusPlus) {\n      Diag(D.getDeclSpec().getInlineSpecLoc(), diag::err_inline_non_function) << 0;"},{p,12883,"/// ActOnParamDeclarator - Called from Parser::ParseFunctionDeclarator()\n/// to introduce parameters into function prototype scope.\nDecl *Sema::ActOnParamDeclarator(Scope *S, Declarator &D) {\n  if (DS.isInlineSpecified())\n    Diag(DS.getInlineSpecLoc(), diag::err_inline_non_function) << getLangOpts().CPlusPlus17;"},{p,15760,"/// HandleField - Analyze a field of a C struct or a C++ data member.\n///\nFieldDecl *Sema::HandleField(Scope *S, RecordDecl *Record, SourceLocation DeclStart, Declarator &D, Expr *BitWidth, InClassInitStyle InitStyle, AccessSpecifier AS) {\n  if (D.getDeclSpec().isInlineSpecified())\n    Diag(D.getDeclSpec().getInlineSpecLoc(), diag::err_inline_non_function) << getLangOpts().CPlusPlus17;"},{r,16115,"/// HandleMSProperty - Analyze a __delcspec(property) field of a C++ class.\n///\nMSPropertyDecl *Sema::HandleMSProperty(Scope *S, RecordDecl *Record, SourceLocation DeclStart, Declarator &D, Expr *BitWidth, InClassInitStyle InitStyle, AccessSpecifier AS, const ParsedAttr &MSPropertyAttr) {\n  if (D.getDeclSpec().isInlineSpecified())\n    Diag(D.getDeclSpec().getInlineSpecLoc(), diag::err_inline_non_function) << getLangOpts().CPlusPlus17;"},{hb,4332,"Decl *Sema::ActOnObjCExceptionDecl(Scope *S, Declarator &D) {\n  if (DS.isInlineSpecified())\n    Diag(DS.getInlineSpecLoc(), diag::err_inline_non_function) << getLangOpts().CPlusPlus17;"}}
},
},
["note_non_literal_virtual_base"]={
["err_int_to_block_pointer"]={
[c]="... with virtual base class is not a literal type",
[j]="invalid block pointer conversion ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{struct|interface|class}0 with virtual base %plural{1:class|:classes}1 is not a literal type",
[e]="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",
[b]=q,
[f]=n,
[a]="(?:struct|interface|class) with virtual base (?:class|classes) is not a literal type",
[g]="invalid block pointer conversion (?:(?:assigning to (.*?) from (.*?)|assigning to different types)|(?:passing (.*?) to parameter of type (.*?)|passing to parameter of different type)|(?:returning (.*?) from a function with result type (.*?)|returning from function with different return type)|(?:converting (.*?) to type (.*?)|converting between types)|(?:initializing (.*?) with an expression of type (.*?)|initializing with expression of different type)|(?:sending (.*?) to parameter of type (.*?)|sending to parameter of different type)|(?:casting (.*?) to type (.*?)|casting between types))",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"eb3c10c248ac",1317436288,"constexpr: semantic checking for constexpr functions and constructors. Based in"}
[b]={x,1237025389,w},
[k]={{q,15325,"bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, SourceLocation Loc, QualType DstType, QualType SrcType, Expr *SrcExpr, AssignmentAction Action, bool *Complained) {\n  case IntToBlockPointer:\n    DiagKind = diag::err_int_to_block_pointer;"}}
},
},
["note_non_null_attribute_failed"]={
["err_integer_literal_too_large"]={
[c]="null passed to a callee that requires a non-null argument",
[j]="integer literal is too large to be represented in any ...integer type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="null passed to a callee that requires a non-null argument",
[e]="integer literal is too large to be represented in any %select{signed |}0integer type",
[b]=q,
[f]=n,
[a]="null passed to a callee that requires a non\\-null argument",
[g]="integer literal is too large to be represented in any (?:signed |)integer type",
[g]=p,
[h]=a,
[e]=p,
[i]=a,
[i]={"0bb4d46b2be5",1560587576,"[clang] perform semantic checking in constant context"}
[b]={"31f42318d833",1406213483,"Improving the \"integer constant too large\" diagnostics based on post-commit feedback from Richard Sm..."},
[k]={{"clang/lib/Lex/PPExpressions.cpp",322,"/// EvaluateValue - Evaluate the token PeekTok (and any others needed) and\n/// return the computed value in Result.  Return true if there was an error\n/// parsing.  This function also returns information about the form of the\n/// expression in DT.  See above for information on what DT means.\n///\n/// If ValueLive is false, then this value is being evaluated in a context where\n/// the result is not used.  As such, avoid diagnostics that relate to\n/// evaluation.\nstatic bool EvaluateValue(PPValue &Result, Token &PeekTok, DefinedTracker &DT, bool ValueLive, Preprocessor &PP) {\n  case tok::numeric_constant: {\n    // Parse the integer literal into Result.\n    if (Literal.GetIntegerValue(Result.Val)) {\n      // Overflow parsing integer literal.\n      if (ValueLive)\n        PP.Diag(PeekTok, diag::err_integer_literal_too_large) << /* Unsigned */ 1;"},{q,3422,"ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {\n  if (Literal.hasUDSuffix()) {\n    case LOLR_Cooked: {\n      if (Literal.isFloatingLiteral()) {\n      } else {\n        if (Literal.GetIntegerValue(ResultVal))\n          Diag(Tok.getLocation(), diag::err_integer_literal_too_large) << /* Unsigned */ 1;"},{q,3567,"ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {\n  if (Literal.isFixedPointLiteral()) {\n  } else if (Literal.isFloatingLiteral()) {\n  } else if (!Literal.isIntegerLiteral()) {\n  } else {\n    if (Literal.GetIntegerValue(ResultVal)) {\n      Diag(Tok.getLocation(), diag::err_integer_literal_too_large) << /* Unsigned */ 1;"},{q,3604,"ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {\n  if (Literal.isFixedPointLiteral()) {\n  } else if (Literal.isFloatingLiteral()) {\n  } else if (!Literal.isIntegerLiteral()) {\n  } else {\n    if (Literal.GetIntegerValue(ResultVal)) {\n    } else {\n      // Bit-precise integer literals are automagically-sized based on the\n      // width required by the literal.\n      if (Literal.isBitInt) {\n        if (Width > MaxBitIntWidth) {\n          Diag(Tok.getLocation(), diag::err_integer_literal_too_large) << Literal.isUnsigned;"}}
},
},
["note_non_template_in_template_id_found"]={
["err_integer_sequence_integral_element_type"]={
[c]="non-template declaration found by name lookup",
[j]="integer sequences must have integral element type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="non-template declaration found by name lookup",
[e]="integer sequences must have integral element type",
[b]=q,
[f]=n,
[a]="non\\-template declaration found by name lookup",
[g]="integer sequences must have integral element type",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"42bc73a3f15f",1494383428,"When we see a \'<\' operator, check whether it\'s a probable typo for a template-id."}
[b]={"d9b1a4fb710d",1446608430,"[Sema] Implement __make_integer_seq"},
[k]={{K,3067,"static QualType checkBuiltinTemplateIdType(Sema &SemaRef, BuiltinTemplateDecl *BTD, ArrayRef<TemplateArgument> Converted, SourceLocation TemplateLoc, TemplateArgumentListInfo &TemplateArgs) {\n  case BTK__make_integer_seq: {\n    // C++14 [inteseq.intseq]p1:\n    //  T shall be an integer type.\n    if (!OrigType->isDependentType() && !OrigType->isIntegralType(Context)) {\n      SemaRef.Diag(TemplateArgs[1].getLocation(), diag::err_integer_sequence_integral_element_type);"}}
},
},
["note_non_trivial_c_union"]={
["err_integer_sequence_negative_length"]={
[c]="... non-trivial to ...",
[j]="integer sequences must have non-negative sequence length",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{%2 has subobjects that are|%3 has type %2 that is}0 non-trivial to %select{default-initialize|destruct|copy}1",
[e]="integer sequences must have non-negative sequence length",
[b]=q,
[f]=n,
[a]="(?:(.*?) has subobjects that are|(.*?) has type (.*?) that is) non\\-trivial to (?:default\\-initialize|destruct|copy)",
[g]="integer sequences must have non\\-negative sequence length",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"81b03d4a08b1",1562982435,"[Sema] Diagnose default-initialization, destruction, and copying of"}
[b]={"d9b1a4fb710d",1446608430,"[Sema] Implement __make_integer_seq"},
[k]={{K,3089,"static QualType checkBuiltinTemplateIdType(Sema &SemaRef, BuiltinTemplateDecl *BTD, ArrayRef<TemplateArgument> Converted, SourceLocation TemplateLoc, TemplateArgumentListInfo &TemplateArgs) {\n  case BTK__make_integer_seq: {\n    if (llvm::APSInt NumArgs = NumArgsArg.getAsIntegral(); NumArgs >= 0) {\n    } else {\n      SemaRef.Diag(TemplateArgs[2].getLocation(), diag::err_integer_sequence_negative_length);"}}
},
},
["note_non_usual_function_declared_here"]={
["err_introducing_special_friend"]={
[c]="non-usual A declared here",
[j]="must use a qualified name when declaring a ... as a friend",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="non-usual %0 declared here",
[e]="%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",
[b]=q,
[f]=n,
[a]="non\\-usual (.*?) declared here",
[g]="(?:must use a qualified name when declaring|cannot declare) a (?:constructor|destructor|conversion operator|deduction guide) as a friend",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"fa752f23cc20",1521659988,"[Builtins] Overload __builtin_operator_new/delete to allow forwarding to usual allocation/deallocati..."}
[b]={"07e91c04ba33",1249524943,"First pass at friend semantics."},
[k]={{r,15117,"NamedDecl *Sema::ActOnFriendFunctionDecl(Scope *S, Declarator &D, MultiTemplateParamsArg TemplateParams) {\n  if (!DC->isRecord()) {\n    // This implies that it has to be an operator or function.\n    if (DiagArg >= 0) {\n      Diag(Loc, diag::err_introducing_special_friend) << DiagArg;"}}
},
},
["note_nontemplate_decl_here"]={
["err_invalid_asm_cast_lvalue"]={
[c]="non-templated declaration is here",
[j]="invalid use of a cast in a inline asm context requiring an lvalue: remove the cast or build with -fheinous-gnu-extensions",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="non-templated declaration is here",
[e]="invalid use of a cast in a inline asm context requiring an lvalue: remove the cast or build with -fheinous-gnu-extensions",
[b]=q,
[f]=n,
[a]="non\\-templated declaration is here",
[g]="invalid use of a cast in a inline asm context requiring an lvalue\\: remove the cast or build with \\-fheinous\\-gnu\\-extensions",
[g]=p,
[h]=a,
[e]=o,
[i]=sb,
[i]={"2ec748cd5a66",1242260891,"Implement explicit instantiations of member classes of class templates, e.g.,"}
[b]={x,1237025389,w},
[k]={{"clang/lib/Sema/SemaStmtAsm.cpp",73,"/// Emit a warning about usage of \"noop\"-like casts for lvalues (GNU extension)\n/// and fix the argument with removing LValueToRValue cast from the expression.\nstatic void emitAndFixInvalidAsmCastLValue(const Expr *LVal, Expr *BadArgument, Sema &S) {\n  if (!S.getLangOpts().HeinousExtensions) {\n    S.Diag(LVal->getBeginLoc(), diag::err_invalid_asm_cast_lvalue) << BadArgument->getSourceRange();"}}
},
},
["note_nontrivial_default_arg"]={
["err_invalid_asm_value_for_constraint"]={
[c]="because it has a default argument",
[j]="value \'A\' out of range for constraint \'B\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="because it has a default argument",
[e]="value \'%0\' out of range for constraint \'%1\'",
[b]=q,
[f]=n,
[a]="because it has a default argument",
[g]="value \'(.*?)\' out of range for constraint \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=sb,
[i]={Cd,1354935182,Ed}
[b]={"a2823578e6c5",1420518394,"Sema: analyze I,J,K,M,N,O constraints"},
[k]={{"clang/lib/Sema/SemaStmtAsm.cpp",363,"StmtResult Sema::ActOnGCCAsmStmt(SourceLocation AsmLoc, bool IsSimple, bool IsVolatile, unsigned NumOutputs, unsigned NumInputs, IdentifierInfo **Names, MultiExprArg constraints, MultiExprArg Exprs, Expr *asmString, MultiExprArg clobbers, unsigned NumLabels, SourceLocation RParenLoc) {\n  for (unsigned i = NumOutputs, e = NumOutputs + NumInputs; i != e; i++) {\n    // Only allow void types for memory constraints.\n    if (Info.allowsMemory() && !Info.allowsRegister()) {\n    } else {\n      if (Info.requiresImmediateConstant() && !Info.allowsRegister()) {\n        if (!InputExpr->isValueDependent()) {\n          if (InputExpr->EvaluateAsRValue(EVResult, Context, true)) {\n            if (EVResult.Val.toIntegralConstant(IntResult, InputExpr->getType(), Context))\n              if (!Info.isValidAsmImmediate(IntResult))\n                return StmtError(Diag(InputExpr->getBeginLoc(), diag::err_invalid_asm_value_for_constraint) << toString(IntResult, 10) << Info.getConstraintStr() << InputExpr->getSourceRange());"}}
},
},
["note_nontrivial_default_member_init"]={
["err_invalid_astype_of_different_size"]={
[c]="because field A has an initializer",
[j]="invalid reinterpretation: sizes of A and B must match",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="because field %0 has an initializer",
[e]="invalid reinterpretation: sizes of %0 and %1 must match",
[b]=q,
[f]=n,
[a]="because field (.*?) has an initializer",
[g]="invalid reinterpretation\\: sizes of (.*?) and (.*?) must match",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={ob,1582847864,nb}
[b]={"55808c1026bd",1307148467,"Add support for builtin astype:"},
[k]={{q,6294,"/// Create a new AsTypeExpr node (bitcast) from the arguments.\nExprResult Sema::BuildAsTypeExpr(Expr *E, QualType DestTy, SourceLocation BuiltinLoc, SourceLocation RParenLoc) {\n  if (!SrcTy->isDependentType() && Context.getTypeSize(DestTy) != Context.getTypeSize(SrcTy))\n    return ExprError(Diag(BuiltinLoc, diag::err_invalid_astype_of_different_size) << DestTy << SrcTy << E->getSourceRange());"}}
},
},
["note_nontrivial_field"]={
["err_invalid_base_in_interface"]={
[c]="field is non-trivial to ...",
[j]="interface type cannot inherit from ... A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="field is non-trivial to %select{copy|default-initialize}0",
[e]="interface type cannot inherit from %select{struct|non-public interface|class}0 %1",
[b]=q,
[f]=n,
[a]="field is non\\-trivial to (?:copy|default\\-initialize)",
[g]="interface type cannot inherit from (?:struct|non\\-public interface|class) (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"2be0441e770d",1523992421,"[Sema] Warn about memcpy\'ing non-trivial C structs."}
[b]={"db632ac004ae",1348558359,"Fix for r163013 regression and further __interface enhancement."},
[k]={{r,2488,"/// Performs the actual work of attaching the given base class\n/// specifiers to a C++ class.\nbool Sema::AttachBaseSpecifiers(CXXRecordDecl *Class, MutableArrayRef<CXXBaseSpecifier *> Bases) {\n  for (unsigned idx = 0; idx < Bases.size(); ++idx) {\n    if (KnownBase) {\n    } else {\n      if (const RecordType *Record = NewBaseType->getAs<RecordType>()) {\n        if (Class->isInterface() && (!RD->isInterfaceLike() || KnownBase->getAccessSpecifier() != AS_public)) {\n          Diag(KnownBase->getBeginLoc(), diag::err_invalid_base_in_interface) << getRecordDiagFromTagKind(RD->getTagKind()) << RD << RD->getSourceRange();"}}
},
},
["note_nontrivial_has_virtual"]={
["err_invalid_branch_protection_spec"]={
[c]="because type A has a virtual ...",
[j]="invalid or misplaced branch protection specification \'A\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="because type %0 has a virtual %select{member function|base class}1",
[e]="invalid or misplaced branch protection specification \'%0\'",
[b]=q,
[f]=n,
[a]="because type (.*?) has a virtual (?:member function|base class)",
[g]="invalid or misplaced branch protection specification \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"8a27391190de",1248287124,"\"This patch implements the restrictions on union members detailed in"}
[b]={yb,1573050950,vb},
[k]={{v,3026,"// Check for things we\'d like to warn about. Multiversioning issues are\n// handled later in the process, once we know how many exist.\nbool Sema::checkTargetAttr(SourceLocation LiteralLoc, StringRef AttrStr) {\n  if (!Context.getTargetInfo().validateBranchProtection(ParsedAttrs.BranchProtection, ParsedAttrs.CPU, BPI, DiagMsg)) {\n    return Diag(LiteralLoc, diag::err_invalid_branch_protection_spec) << DiagMsg;"}}
},
},
["note_nontrivial_no_copy"]={
["err_invalid_char_raw_delim"]={
[c]="because no ... can be used to ... ... of type A",
[j]="invalid character \'A\' character in raw string delimiter; use PREFIX( )PREFIX to delimit raw string",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="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",
[e]="invalid character \'%0\' character in raw string delimiter; use PREFIX( )PREFIX to delimit raw string",
[b]=q,
[f]=n,
[a]="because no (?:constructor|constructor|assignment operator|assignment operator) can be used to (?:copy|move|copy|move) (?:base class|field|an object) of type (.*?)",
[g]="invalid character \'(.*?)\' character in raw string delimiter; use PREFIX\\( \\)PREFIX to delimit raw string",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={Cd,1354935182,Ed}
[b]={"54edccafc5e3",1313035575,"Add support for C++0x raw string literals."},
[k]={{"clang/lib/Lex/Lexer.cpp",1957,"/// LexRawStringLiteral - Lex the remainder of a raw string literal, after\n/// having lexed R\", LR\", u8R\", uR\", or UR\".\nbool Lexer::LexRawStringLiteral(Token &Result, const char *CurPtr, tok::TokenKind Kind) {\n  // If the last character was not a \'(\', then we didn\'t lex a valid delimiter.\n  if (CurPtr[PrefixLen] != \'(\') {\n    if (!isLexingRawMode()) {\n      if (PrefixLen == 16) {\n      } else {\n        Diag(PrefixEnd, diag::err_invalid_char_raw_delim) << StringRef(PrefixEnd, 1);"}}
},
},
["note_nontrivial_no_def_ctor"]={
["err_invalid_character_to_charify"]={
[c]="because ...type A has no default constructor",
[j]="invalid argument to convert to character",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="because %select{base class of |field of |}0type %1 has no default constructor",
[e]="invalid argument to convert to character",
[b]=q,
[f]=n,
[a]="because (?:base class of |field of |)type (.*?) has no default constructor",
[g]="invalid argument to convert to character",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={Cd,1354935182,Ed}
[b]={z,1236199783,A},
[k]={{"clang/lib/Lex/MacroArgs.cpp",280,"/// StringifyArgument - Implement C99 6.10.3.2p2, converting a sequence of\n/// tokens into the literal string token that should be produced by the C #\n/// preprocessor operator.  If Charify is true, then it should be turned into\n/// a character literal for the Microsoft charize (#@) extension.\n///\nToken MacroArgs::StringifyArgument(const Token *ArgToks, Preprocessor &PP, bool Charify, SourceLocation ExpansionLocStart, SourceLocation ExpansionLocEnd) {\n  // If this is the charify operation and the result is not a legal character\n  // constant, diagnose it.\n  if (Charify) {\n    if (isBad) {\n      PP.Diag(ArgTokStart[0], diag::err_invalid_character_to_charify);"}}
},
},
["note_nontrivial_objc_ownership"]={
["err_invalid_character_udl"]={
[c]="because type A has a member with ... ownership",
[j]="character literal with user-defined suffix cannot be used here",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="because type %0 has a member with %select{no|no|__strong|__weak|__autoreleasing}1 ownership",
[e]="character literal with user-defined suffix cannot be used here",
[b]=q,
[f]=n,
[a]="because type (.*?) has a member with (?:no|no|__strong|__weak|__autoreleasing) ownership",
[g]="character literal with user\\-defined suffix cannot be used here",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"cff00d9c127c",1308874139,"Rename objc_lifetime -> objc_ownership, and modify diagnostics to talk about \'ownership\', not \'lifet..."}
[b]={"bcc22fc4e1b2",1331280036,"Support for raw and template forms of numeric user-defined literals,"},
[k]={{q,3282,"ExprResult Sema::ActOnCharacterConstant(const Token &Tok, Scope *UDLScope) {\n  // Make sure we\'re allowed user-defined literals here.\n  if (!UDLScope)\n    return ExprError(Diag(UDSuffixLoc, diag::err_invalid_character_udl));"}}
},
},
["note_nontrivial_param_type"]={
["err_invalid_collection_element"]={
[c]="because its parameter is of type A, not B",
[j]="collection element of type A is not an Objective-C object",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="because its parameter is %diff{of type $, not $|of the wrong type}2,3",
[e]="collection element of type %0 is not an Objective-C object",
[b]=q,
[f]=n,
[a]="because its parameter is (?:of type (.*?), not (.*?)|of the wrong type)",
[g]="collection element of type (.*?) is not an Objective\\-C object",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={Cd,1354935182,Ed}
[b]={"e65b086e07a6",1331064356,"Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,"},
[k]={{O,404,"/// Check that the given expression is a valid element of an Objective-C\n/// collection literal.\nstatic ExprResult CheckObjCCollectionLiteralElement(Sema &S, Expr *Element, QualType T, bool ArrayLiteral = false) {\n  // Make sure that we have an Objective-C pointer type or block.\n  if (!Element->getType()->isObjCObjectPointerType() && !Element->getType()->isBlockPointerType()) {\n    if (!Recovered) {\n      S.Diag(Element->getBeginLoc(), diag::err_invalid_collection_element) << Element->getType();"}}
},
},
["note_nontrivial_subobject"]={
["err_invalid_complex_spec"]={
[c]="because the function selected to ... ... of type A is not trivial",
[j]="\'_Complex A\' is invalid",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="because the function selected to %select{construct|copy|move|copy|move|destroy}2 %select{base class|field}0 of type %1 is not trivial",
[e]="\'_Complex %0\' is invalid",
[b]=q,
[f]=n,
[a]="because the function selected to (?:construct|copy|move|copy|move|destroy) (?:base class|field) of type (.*?) is not trivial",
[g]="\'_Complex (.*?)\' is invalid",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={Cd,1354935182,Ed}
[b]={z,1236199783,A},
[k]={{G,1187,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // TODO: if the implementation does not implement _Complex or _Imaginary,\n  // disallow their use.  Need information about the backend.\n  if (TypeSpecComplex != TSC_unspecified) {\n    if (TypeSpecType == TST_unspecified) {\n    } else if (TypeSpecType == TST_int || TypeSpecType == TST_char || TypeSpecType == TST_bitint) {\n    } else if (TypeSpecType != TST_float && TypeSpecType != TST_double && TypeSpecType != TST_float128 && TypeSpecType != TST_float16 && TypeSpecType != TST_ibm128) {\n      S.Diag(TSCLoc, diag::err_invalid_complex_spec) << getSpecifierName((TST)TypeSpecType, Policy);"},{y,7868,"/// Perform semantic analysis for a call to __builtin_complex.\nbool Sema::SemaBuiltinComplex(CallExpr *TheCall) {\n  // We don\'t allow _Complex _Float16 nor _Complex __fp16 as type specifiers;\n  // don\'t allow this builtin to form those types either.\n  // FIXME: Should we allow these types?\n  if (Real->getType()->isFloat16Type())\n    return Diag(TheCall->getBeginLoc(), diag::err_invalid_complex_spec) << \"_Float16\";"},{y,7870,"/// Perform semantic analysis for a call to __builtin_complex.\nbool Sema::SemaBuiltinComplex(CallExpr *TheCall) {\n  if (Real->getType()->isHalfType())\n    return Diag(TheCall->getBeginLoc(), diag::err_invalid_complex_spec) << \"half\";"}}
},
},
["note_nontrivial_user_provided"]={
["err_invalid_consteval_call"]={
[c]="because ...type A has a user-provided ...",
[j]="call to ... function A is not a constant expression",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="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",
[e]="call to %select{immediate|consteval}1 function %q0 is not a constant expression",
[b]=q,
[f]=n,
[a]="because (?:base class of |field of |)type (.*?) has a user\\-provided (?:default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor)",
[g]="call to (?:immediate|consteval) function (.*?) is not a constant expression",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={Cd,1354935182,Ed}
[b]={"1228d42ddab8",1576809732,"[OpenMP][Part 2] Use reusable OpenMP context/traits handling"},
[k]={{q,15833,"static void EvaluateAndDiagnoseImmediateInvocation(Sema &SemaRef, Sema::ImmediateInvocationCandidate Candidate) {\n  if (!Result || !Notes.empty()) {\n    SemaRef.Diag(CE->getBeginLoc(), diag::err_invalid_consteval_call) << FD << FD->isConsteval();"}}
},
},
["note_nontrivial_variadic"]={
["err_invalid_consteval_decl_kind"]={
[c]="because it is a variadic function",
[j]="A cannot be declared consteval",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="because it is a variadic function",
[e]="%0 cannot be declared consteval",
[b]=q,
[f]=n,
[a]="because it is a variadic function",
[g]="(.*?) cannot be declared consteval",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={Cd,1354935182,Ed}
[b]={"1228d42ddab8",1576809732,"[OpenMP][Part 2] Use reusable OpenMP context/traits handling"},
[k]={{p,8745,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n  if (getLangOpts().CPlusPlus) {\n    if (ConstexprKind != ConstexprSpecKind::Unspecified) {\n      // C++20 [dcl.constexpr]p2: An allocation function, or a\n      // deallocation function shall not be declared with the consteval\n      // specifier.\n      if (ConstexprKind == ConstexprSpecKind::Consteval && (NewFD->getOverloadedOperator() == OO_New || NewFD->getOverloadedOperator() == OO_Array_New || NewFD->getOverloadedOperator() == OO_Delete || NewFD->getOverloadedOperator() == OO_Array_Delete)) {\n        Diag(D.getDeclSpec().getConstexprSpecLoc(), diag::err_invalid_consteval_decl_kind) << NewFD;"}}
},
},
["note_nontrivial_virtual_dtor"]={
["err_invalid_consteval_take_address"]={
[c]="destructor for A is not trivial because it is virtual",
[j]="cannot take address of ... ... A outside of an immediate invocation",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="destructor for %0 is not trivial because it is virtual",
[e]="cannot take address of %select{immediate|consteval}2 %select{function|call operator of}1 %0 outside of an immediate invocation",
[b]=q,
[f]=n,
[a]="destructor for (.*?) is not trivial because it is virtual",
[g]="cannot take address of (?:immediate|consteval) (?:function|call operator of) (.*?) outside of an immediate invocation",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={Cd,1354935182,Ed}
[b]={"1228d42ddab8",1576809732,"[OpenMP][Part 2] Use reusable OpenMP context/traits handling"},
[k]={{q,15986,"static void HandleImmediateInvocations(Sema &SemaRef, Sema::ExpressionEvaluationContextRecord &Rec) {\n  for (auto *DR : Rec.ReferenceToConsteval) {\n    if (!Rec.InImmediateEscalatingFunctionContext || (SemaRef.inTemplateInstantiation() && !ImmediateEscalating)) {\n      SemaRef.Diag(DR->getBeginLoc(), diag::err_invalid_consteval_take_address) << ND << isa<CXXRecordDecl>(ND) << FD->isConsteval();"}}
},
},
["note_not_found_by_two_phase_lookup"]={
["err_invalid_constexpr"]={
[c]="A should be declared prior to the call site...",
[j]="... cannot be ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 should be declared prior to the call site%select{| or in %2| or in an associated namespace of one of its arguments}1",
[e]="%select{function parameter|typedef}0 cannot be %select{<ERROR>|constexpr|consteval|constinit}1",
[b]=q,
[f]=n,
[a]="(.*?) should be declared prior to the call site(?:| or in (.*?)| or in an associated namespace of one of its arguments)",
[g]="(?:function parameter|typedef) cannot be (?:constexpr|consteval|constinit)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"998a591e3261",1307313768,"Fix PR10053: Improve diagnostics and error recovery for code which some compilers incorrectly accept..."}
[b]={"a77a0a6bf221",1313442247,"Track in the AST whether a function is constexpr."},
[k]={{p,5924,"NamedDecl *Sema::ActOnTypedefDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous) {\n  if (D.getDeclSpec().hasConstexprSpecifier())\n    Diag(D.getDeclSpec().getConstexprSpecLoc(), diag::err_invalid_constexpr) << 1 << static_cast<int>(D.getDeclSpec().getConstexprSpecifier());"},{p,12885,"/// ActOnParamDeclarator - Called from Parser::ParseFunctionDeclarator()\n/// to introduce parameters into function prototype scope.\nDecl *Sema::ActOnParamDeclarator(Scope *S, Declarator &D) {\n  if (DS.hasConstexprSpecifier())\n    Diag(DS.getConstexprSpecLoc(), diag::err_invalid_constexpr) << 0 << static_cast<int>(D.getDeclSpec().getConstexprSpecifier());"}}
},
},
["note_not_module_interface_add_export"]={
["err_invalid_constexpr_member"]={
[c]="add \'export\' here if this is intended to be a module interface unit",
[j]="non-static data member cannot be constexpr...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="add \'export\' here if this is intended to be a module interface unit",
[e]="non-static data member cannot be constexpr%select{; did you intend to make it %select{const|static}0?|}1",
[b]=q,
[f]=n,
[a]="add \'export\' here if this is intended to be a module interface unit",
[g]="non\\-static data member cannot be constexpr(?:; did you intend to make it (?:const|static)\\?|)",
[g]=p,
[h]=a,
[e]=cd,
[i]=o,
[i]={"a5bbbfef156c",1555621974,"[c++2a] Add semantic support for private module fragments."}
[b]={"35506f82025c",1359508938,"Provide a fixit for constexpr non-static data members."},
[k]={{r,2986,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n  if (DS.hasConstexprSpecifier() && isInstField) {\n    SemaDiagnosticBuilder B = Diag(DS.getConstexprSpecLoc(), diag::err_invalid_constexpr_member);"}}
},
},
["note_not_structural_mutable_field"]={
["err_invalid_constexpr_var_decl"]={
[c]="A is not a structural type because it has a mutable non-static data member",
[j]="constexpr variable declaration must be a definition",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is not a structural type because it has a mutable non-static data member",
[e]="constexpr variable declaration must be a definition",
[b]=q,
[f]=n,
[a]="(.*?) is not a structural type because it has a mutable non\\-static data member",
[g]="constexpr variable declaration must be a definition",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={ob,1582847864,nb}
[b]={"2316cd8b798b",1317323497,"constexpr: semantic checking for constexpr variables."},
[k]={{p,11958,"void Sema::ActOnUninitializedDecl(Decl *RealDecl) {\n  if (VarDecl *Var = dyn_cast<VarDecl>(RealDecl)) {\n    // C++11 [class.static.data]p3: A static data member can be declared with\n    // the constexpr specifier; if so, its declaration shall specify\n    // a brace-or-equal-initializer.\n    // C++11 [dcl.constexpr]p1: The constexpr specifier shall be applied only to\n    // the definition of a variable [...] or the declaration of a static data\n    // member.\n    if (Var->isConstexpr() && !Var->isThisDeclarationADefinition() && !Var->isThisDeclarationADemotedDefinition()) {\n      if (Var->isStaticDataMember()) {\n      } else {\n        Diag(Var->getLocation(), diag::err_invalid_constexpr_var_decl);"}}
},
},
["note_not_structural_non_public"]={
["err_invalid_conversion_between_ext_vectors"]={
[c]="A is not a structural type because it has a ... that is not public",
[j]="invalid conversion between ext-vector type A and B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is not a structural type because it has a %select{non-static data member|base class}1 that is not public",
[e]="invalid conversion between ext-vector type %0 and %1",
[b]=q,
[f]=n,
[a]="(.*?) is not a structural type because it has a (?:non\\-static data member|base class) that is not public",
[g]="invalid conversion between ext\\-vector type (.*?) and (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={ob,1582847864,nb}
[b]={"c69b740df42c",1245977428,"OpenCL 1.0 support: explicit casts to ext-vector types"},
[k]={{q,7215,"ExprResult Sema::CheckExtVectorCast(SourceRange R, QualType DestTy, Expr *CastExpr, CastKind &Kind) {\n  // If SrcTy is a VectorType, the total size must match to explicitly cast to\n  // an ExtVectorType.\n  // In OpenCL, casts between vectors of different types are not allowed.\n  // (See OpenCL 6.2).\n  if (SrcTy->isVectorType()) {\n    if (!areLaxCompatibleVectorTypes(SrcTy, DestTy) || (getLangOpts().OpenCL && !Context.hasSameUnqualifiedType(DestTy, SrcTy))) {\n      Diag(R.getBegin(), diag::err_invalid_conversion_between_ext_vectors) << DestTy << SrcTy << R;"}}
},
},
["note_not_structural_rvalue_ref_field"]={
["err_invalid_conversion_between_matrix_and_type"]={
[c]="A is not a structural type because it has a non-static data member of rvalue reference type",
[j]="conversion between matrix type A and incompatible type B is not allowed",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is not a structural type because it has a non-static data member of rvalue reference type",
[e]="conversion between matrix type %0 and incompatible type %1 is not allowed",
[b]=q,
[f]=n,
[a]="(.*?) is not a structural type because it has a non\\-static data member of rvalue reference type",
[g]="conversion between matrix type (.*?) and incompatible type (.*?) is not allowed",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={ob,1582847864,nb}
[b]={Z,1607502387,Y},
[k]={{q,7151,"bool Sema::CheckMatrixCast(SourceRange R, QualType DestTy, QualType SrcTy, CastKind &Kind) {\n  if (SrcTy->isMatrixType() && DestTy->isMatrixType()) {\n  } else if (SrcTy->isMatrixType()) {\n    return Diag(R.getBegin(), diag::err_invalid_conversion_between_matrix_and_type) << SrcTy << DestTy << R;"},{q,7153,"bool Sema::CheckMatrixCast(SourceRange R, QualType DestTy, QualType SrcTy, CastKind &Kind) {\n  if (SrcTy->isMatrixType() && DestTy->isMatrixType()) {\n  } else if (SrcTy->isMatrixType()) {\n  } else if (DestTy->isMatrixType()) {\n    return Diag(R.getBegin(), diag::err_invalid_conversion_between_matrix_and_type) << DestTy << SrcTy << R;"}}
},
},
["note_not_structural_subobject"]={
["err_invalid_conversion_between_matrixes"]={
[c]="A is not a structural type because it has a ... of non-structural type B",
[j]="conversion between matrix types A and B of different size is not allowed",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is not a structural type because it has a %select{non-static data member|base class}1 of non-structural type %2",
[e]="conversion between matrix types%diff{ $ and $|}0,1 of different size is not allowed",
[b]=q,
[f]=n,
[a]="(.*?) is not a structural type because it has a (?:non\\-static data member|base class) of non\\-structural type (.*?)",
[g]="conversion between matrix types(?: (.*?) and (.*?)|) of different size is not allowed",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={ob,1582847864,nb}
[b]={Z,1607502387,Y},
[k]={{q,7148,"bool Sema::CheckMatrixCast(SourceRange R, QualType DestTy, QualType SrcTy, CastKind &Kind) {\n  if (SrcTy->isMatrixType() && DestTy->isMatrixType()) {\n    if (!areMatrixTypesOfTheSameDimension(SrcTy, DestTy)) {\n      return Diag(R.getBegin(), diag::err_invalid_conversion_between_matrixes) << DestTy << SrcTy << R;"}}
},
},
["note_nsdictionary_duplicate_key_here"]={
["err_invalid_conversion_between_vector_and_integer"]={
[c]="previous equal key is here",
[j]="invalid conversion between vector type A and integer type B of different size",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous equal key is here",
[e]="invalid conversion between vector type %0 and integer type %1 of different size",
[b]=q,
[f]=n,
[a]="previous equal key is here",
[g]="invalid conversion between vector type (.*?) and integer type (.*?) of different size",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={wb,1576908663,vb}
[b]={x,1237025389,w},
[k]={{"clang/lib/Sema/SemaCast.cpp",2331,"bool Sema::CheckAltivecInitFromScalar(SourceRange R, QualType VecTy, QualType SrcTy) {\n  if (this->getLangOpts().AltiVec && SrcCompatGCC) {\n    this->Diag(R.getBegin(), diag::err_invalid_conversion_between_vector_and_integer) << VecTy << SrcTy << R;"},{q,7165,"bool Sema::CheckVectorCast(SourceRange R, QualType VectorTy, QualType Ty, CastKind &Kind) {\n  if (Ty->isVectorType() || Ty->isIntegralType(Context)) {\n    if (!areLaxCompatibleVectorTypes(Ty, VectorTy))\n      return Diag(R.getBegin(), Ty->isVectorType() ? diag::err_invalid_conversion_between_vectors : diag::err_invalid_conversion_between_vector_and_integer) << VectorTy << Ty << R;"}}
},
},
["note_nullability_fix_it"]={
["err_invalid_conversion_between_vector_and_scalar"]={
[c]="insert \'...\' if the ... ...",
[j]="invalid conversion between vector type A and scalar type B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="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",
[e]="invalid conversion between vector type %0 and scalar type %1",
[b]=q,
[f]=n,
[a]="insert \'(?:_Nonnull|_Nullable|_Null_unspecified)\' if the (?:pointer|block pointer|member pointer|array parameter) (?:should never be null|may be null|should not declare nullability)",
[g]="invalid conversion between vector type (.*?) and scalar type (.*?)",
[g]=p,
[h]=a,
[e]=qc,
[i]=o,
[i]={"06dd406e27b4",1482181100,"Add fix-it notes to the nullability consistency warning."}
[b]={x,1237025389,w},
[k]={{q,7167,"bool Sema::CheckVectorCast(SourceRange R, QualType VectorTy, QualType Ty, CastKind &Kind) {\n  if (Ty->isVectorType() || Ty->isIntegralType(Context)) {\n  } else\n    return Diag(R.getBegin(), diag::err_invalid_conversion_between_vector_and_scalar) << VectorTy << Ty << R;"},{q,7226,"ExprResult Sema::CheckExtVectorCast(SourceRange R, QualType DestTy, Expr *CastExpr, CastKind &Kind) {\n  // All non-pointer scalars can be cast to ExtVector type.  The appropriate\n  // conversion will take place first from scalar to elt type, and then\n  // splat from elt type to vector.\n  if (SrcTy->isPointerType())\n    return Diag(R.getBegin(), diag::err_invalid_conversion_between_vector_and_scalar) << DestTy << SrcTy << R;"}}
},
},
["note_nullability_here"]={
["err_invalid_conversion_between_vectors"]={
[c]="A specified here",
[j]="invalid conversion between vector type A and B of different size",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 specified here",
[e]="invalid conversion between vector type%diff{ $ and $|}0,1 of different size",
[b]=q,
[f]=n,
[a]="(.*?) specified here",
[g]="invalid conversion between vector type(?: (.*?) and (.*?)|) of different size",
[g]=p,
[h]=a,
[e]=qc,
[i]=o,
[i]={"261a89b0f70b",1434736265,"Introduce type nullability specifiers for C/C++."}
[b]={x,1237025389,w},
[k]={{q,7165,"bool Sema::CheckVectorCast(SourceRange R, QualType VectorTy, QualType Ty, CastKind &Kind) {\n  if (Ty->isVectorType() || Ty->isIntegralType(Context)) {\n    if (!areLaxCompatibleVectorTypes(Ty, VectorTy))\n      return Diag(R.getBegin(), Ty->isVectorType() ? diag::err_invalid_conversion_between_vectors : diag::err_invalid_conversion_between_vector_and_integer) << VectorTy << Ty << R;"}}
},
},
["note_nullability_type_specifier"]={
["err_invalid_cpu_is"]={
[c]="use nullability type specifier A to affect the innermost pointer type of B",
[j]="invalid cpu name for builtin",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use nullability type specifier %0 to affect the innermost pointer type of %1",
[e]="invalid cpu name for builtin",
[b]=q,
[f]=n,
[a]="use nullability type specifier (.*?) to affect the innermost pointer type of (.*?)",
[g]="invalid cpu name for builtin",
[g]=p,
[h]=a,
[e]=qc,
[i]=o,
[i]={"813a066f16df",1434737678,"Extend type nullability qualifiers for Objective-C."}
[b]={"699ae0c173bd",1502396910,"[X86] Implement __builtin_cpu_is"},
[k]={{y,5182,"/// SemaBuiltinCpuIs - Handle __builtin_cpu_is(char *).\n/// This checks that the target supports __builtin_cpu_is and\n/// that the string argument is constant and valid.\nstatic bool SemaBuiltinCpuIs(Sema &S, const TargetInfo &TI, CallExpr *TheCall) {\n  if (!TI.validateCpuIs(Feature))\n    return S.Diag(TheCall->getBeginLoc(), diag::err_invalid_cpu_is) << Arg->getSourceRange();"}}
},
},
["note_objc_circular_container_declared_here"]={
["err_invalid_cpu_specific_dispatch_value"]={
[c]="A declared here",
[j]="invalid option \'A\' for ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 declared here",
[e]="invalid option \'%0\' for %select{cpu_specific|cpu_dispatch}1",
[b]=q,
[f]=n,
[a]="(.*?) declared here",
[g]="invalid option \'(.*?)\' for (?:cpu_specific|cpu_dispatch)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"e1d882c726b5",1425491752,"New ObjC warning: circular containers."}
[b]={"3efe00206f0f",1532096008,"Implement cpu_dispatch/cpu_specific Multiversioning"},
[k]={{v,1894,"static void handleCPUSpecificAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  for (unsigned ArgNo = 0; ArgNo < getNumAttributeArgs(AL); ++ArgNo) {\n    if (!S.Context.getTargetInfo().validateCPUSpecificCPUDispatch(CPUName)) {\n      S.Diag(CPUArg->Loc, diag::err_invalid_cpu_specific_dispatch_value) << CPUName << (AL.getKind() == ParsedAttr::AT_CPUDispatch);"}}
},
},
["note_objc_container_start"]={
["err_invalid_cpu_supports"]={
[c]="... started here",
[j]="invalid cpu feature string for builtin",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{class|protocol|category|class extension|implementation|category implementation}0 started here",
[e]="invalid cpu feature string for builtin",
[b]=q,
[f]=n,
[a]="(?:class|protocol|category|class extension|implementation|category implementation) started here",
[g]="invalid cpu feature string for builtin",
[g]=p,
[h]=a,
[e]=y,
[i]=o,
[i]={"c6c8d9356dc0",1323163523,"Extend warnings for missing \'@end\'."}
[b]={"d983270976d2",1435611605,"Add support for the x86 builtin __builtin_cpu_supports."},
[k]={{y,5165,"/// SemaBuiltinCpuSupports - Handle __builtin_cpu_supports(char *).\n/// This checks that the target supports __builtin_cpu_supports and\n/// that the string argument is constant and valid.\nstatic bool SemaBuiltinCpuSupports(Sema &S, const TargetInfo &TI, CallExpr *TheCall) {\n  if (!TI.validateCpuSupports(Feature))\n    return S.Diag(TheCall->getBeginLoc(), diag::err_invalid_cpu_supports) << Arg->getSourceRange();"}}
},
},
["note_objc_designated_init_marked_here"]={
["err_invalid_cxx_abi"]={
[c]="method marked as designated initializer of the class here",
[j]="invalid C++ ABI name \'A\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="method marked as designated initializer of the class here",
[e]="invalid C++ ABI name \'%0\'",
[b]=q,
[f]=n,
[a]="method marked as designated initializer of the class here",
[g]="invalid C\\+\\+ ABI name \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"22bfa2c28bdb",1386105096,"[objc] Emit a warning when the implementation of a designated initializer does not chain to"}
[b]={"683b308c07bf",1597194187,"[clang] Add -fc++-abi= flag for specifying which C++ ABI to use"},
[k]={{Bb,3370,"#include \"clang/Driver/Options.inc\"\n  if (!CXXABI.empty()) {\n    if (!TargetCXXABI::isABI(CXXABI)) {\n      Diags.Report(diag::err_invalid_cxx_abi) << CXXABI;"}}
},
},
["note_objc_literal_comparison_isequal"]={
["err_invalid_decl_spec_combination"]={
[c]="use \'isEqual:\' instead",
[j]="cannot combine with previous \'A\' declaration specifier",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use \'isEqual:\' instead",
[e]="cannot combine with previous \'%0\' declaration specifier",
[b]=q,
[f]=n,
[a]="use \'isEqual\\:\' instead",
[g]="cannot combine with previous \'(.*?)\' declaration specifier",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"7660f78fb95b",1342547200,"Now that -Wobjc-literal-compare is a warning, put the fixit on a note."}
[b]={z,1236199783,A},
[k]={{G,406,"template <class T> static bool BadSpecifier(T TNew, T TPrev, const char *&PrevSpec, unsigned &DiagID, bool IsExtension = true) {\n  if (TNew != TPrev)\n    DiagID = diag::err_invalid_decl_spec_combination;"},{G,714,"bool DeclSpec::SetTypeSpecType(TST T, SourceLocation TagKwLoc, SourceLocation TagNameLoc, const char *&PrevSpec, unsigned &DiagID, ParsedType Rep, const PrintingPolicy &Policy) {\n  if (TypeSpecType != TST_unspecified) {\n    DiagID = diag::err_invalid_decl_spec_combination;"},{G,732,"bool DeclSpec::SetTypeSpecType(TST T, SourceLocation Loc, const char *&PrevSpec, unsigned &DiagID, Expr *Rep, const PrintingPolicy &Policy) {\n  if (TypeSpecType != TST_unspecified) {\n    DiagID = diag::err_invalid_decl_spec_combination;"},{G,753,"bool DeclSpec::SetTypeSpecType(TST T, SourceLocation TagKwLoc, SourceLocation TagNameLoc, const char *&PrevSpec, unsigned &DiagID, Decl *Rep, bool Owned, const PrintingPolicy &Policy) {\n  if (TypeSpecType != TST_unspecified) {\n    DiagID = diag::err_invalid_decl_spec_combination;"},{G,777,"bool DeclSpec::SetTypeSpecType(TST T, SourceLocation Loc, const char *&PrevSpec, unsigned &DiagID, const PrintingPolicy &Policy) {\n  if (TypeSpecType != TST_unspecified) {\n    DiagID = diag::err_invalid_decl_spec_combination;"},{G,821,"bool DeclSpec::SetTypePipe(bool isPipe, SourceLocation Loc, const char *&PrevSpec, unsigned &DiagID, const PrintingPolicy &Policy) {\n  if (TypeSpecType != TST_unspecified) {\n    DiagID = diag::err_invalid_decl_spec_combination;"},{G,874,"bool DeclSpec::SetBitIntType(SourceLocation KWLoc, Expr *BitsExpr, const char *&PrevSpec, unsigned &DiagID, const PrintingPolicy &Policy) {\n  if (TypeSpecType != TST_unspecified) {\n    DiagID = diag::err_invalid_decl_spec_combination;"},{G,1204,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // C11 6.7.1/3, C++11 [dcl.stc]p1, GNU TLS: __thread, thread_local and\n  // _Thread_local can only appear with the \'static\' and \'extern\' storage class\n  // specifiers. We also allow __private_extern__ as an extension.\n  if (ThreadStorageClassSpec != TSCS_unspecified) {\n    default:\n      if (S.getSourceManager().isBeforeInTranslationUnit(getThreadStorageClassSpecLoc(), getStorageClassSpecLoc()))\n        S.Diag(getStorageClassSpecLoc(), diag::err_invalid_decl_spec_combination) << DeclSpec::getSpecifierName(getThreadStorageClassSpec()) << SourceRange(getThreadStorageClassSpecLoc());"},{G,1206,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // C11 6.7.1/3, C++11 [dcl.stc]p1, GNU TLS: __thread, thread_local and\n  // _Thread_local can only appear with the \'static\' and \'extern\' storage class\n  // specifiers. We also allow __private_extern__ as an extension.\n  if (ThreadStorageClassSpec != TSCS_unspecified) {\n    default:\n      if (S.getSourceManager().isBeforeInTranslationUnit(getThreadStorageClassSpecLoc(), getStorageClassSpecLoc()))\n      else\n        S.Diag(getThreadStorageClassSpecLoc(), diag::err_invalid_decl_spec_combination) << DeclSpec::getSpecifierName(getStorageClassSpec()) << SourceRange(getStorageClassSpecLoc());"}}
},
},
["note_objc_literal_method_param"]={
["err_invalid_decl_specifier_in_nontype_parm"]={
[c]="... parameter has unexpected type A (should be B)",
[j]="invalid declaration specifier in template non-type parameter",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{first|second|third}0 parameter has unexpected type %1 (should be %2)",
[e]="invalid declaration specifier in template non-type parameter",
[b]=q,
[f]=n,
[a]="(?:first|second|third) parameter has unexpected type (.*?) \\(should be (.*?)\\)",
[g]="invalid declaration specifier in template non\\-type parameter",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"e65b086e07a6",1331064356,"Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,"}
[b]={"a223d1c856db",1513914655,"Diagnose the various invalid decl-specifiers on nontype template parameters."},
[k]={{K,1272,"NamedDecl *Sema::ActOnNonTypeTemplateParameter(Scope *S, Declarator &D, unsigned Depth, unsigned Position, SourceLocation EqualLoc, Expr *Default) {\n  // Check that we have valid decl-specifiers specified.\n  auto CheckValidDeclSpecifiers = [this, &D] {\n    auto EmitDiag = [this](SourceLocation Loc) { Diag(Loc, diag::err_invalid_decl_specifier_in_nontype_parm) << FixItHint::CreateRemoval(Loc); };"}}
},
},
["note_objc_literal_method_return"]={
["err_invalid_declaration_in_hlsl_buffer"]={
[c]="method returns unexpected type A (should be an object type)",
[j]="invalid declaration inside ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="method returns unexpected type %0 (should be an object type)",
[e]="invalid declaration inside %select{tbuffer|cbuffer}0",
[b]=q,
[f]=n,
[a]="method returns unexpected type (.*?) \\(should be an object type\\)",
[g]="invalid declaration inside (?:tbuffer|cbuffer)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"e65b086e07a6",1331064356,"Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,"}
[b]={"782ac2182c2b",1657907157,"[HLSL] Support cbuffer/tbuffer for hlsl."},
[k]={{"clang/lib/Parse/ParseHLSL.cpp",35,"static bool validateDeclsInsideHLSLBuffer(Parser::DeclGroupPtrTy DG, SourceLocation BufferLoc, bool IsCBuffer, Parser &P) {\n  // Only allow function, variable, record decls inside HLSLBuffer.\n  for (DeclGroupRef::iterator I = Decls.begin(), E = Decls.end(); I != E; ++I) {\n    // FIXME: support nested HLSLBuffer and namespace inside HLSLBuffer.\n    if (isa<HLSLBufferDecl, NamespaceDecl>(D)) {\n      P.Diag(D->getLocation(), diag::err_invalid_declaration_in_hlsl_buffer) << IsCBuffer;"},{"clang/lib/Parse/ParseHLSL.cpp",41,"static bool validateDeclsInsideHLSLBuffer(Parser::DeclGroupPtrTy DG, SourceLocation BufferLoc, bool IsCBuffer, Parser &P) {\n  // Only allow function, variable, record decls inside HLSLBuffer.\n  for (DeclGroupRef::iterator I = Decls.begin(), E = Decls.end(); I != E; ++I) {\n    P.Diag(D->getLocation(), diag::err_invalid_declaration_in_hlsl_buffer) << IsCBuffer;"}}
},
},
["note_objc_needs_superclass"]={
["err_invalid_declarator_global_scope"]={
[c]="add a super class to fix this problem",
[j]="definition or redeclaration of A cannot name the global scope",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="add a super class to fix this problem",
[e]="definition or redeclaration of %0 cannot name the global scope",
[b]=q,
[f]=n,
[a]="add a super class to fix this problem",
[g]="definition or redeclaration of (.*?) cannot name the global scope",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"acfbe9e1f228",1333735942,"Added a new attribute, objc_root_class, which informs the compiler when a root class is intentionall..."}
[b]={x,1237025389,w},
[k]={{p,5515,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n  // Check whether the qualifying scope encloses the scope of the original\n  // declaration. For a template-id, we perform the checks in\n  // CheckTemplateSpecializationScope.\n  if (!Cur->Encloses(DC) && !IsTemplateId) {\n    if (Cur->isRecord())\n    else if (isa<TranslationUnitDecl>(DC))\n      Diag(Loc, diag::err_invalid_declarator_global_scope) << Name << SS.getRange();"}}
},
},
["note_objc_type_param_here"]={
["err_invalid_declarator_in_block"]={
[c]="type parameter A declared here",
[j]="definition or redeclaration of A not allowed inside a block",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="type parameter %0 declared here",
[e]="definition or redeclaration of %0 not allowed inside a block",
[b]=q,
[f]=n,
[a]="type parameter (.*?) declared here",
[g]="definition or redeclaration of (.*?) not allowed inside a block",
[g]=p,
[h]=a,
[e]="Generics Issue",
[i]=o,
[i]={"85f3f9513dbc",1436241435,"Parsing, semantic analysis, and AST for Objective-C type parameters."}
[b]={"e2358c1debe9",1376344441,"Fix crash w/BlockDecl and invalid qualified decl."},
[k]={{p,5519,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n  // Check whether the qualifying scope encloses the scope of the original\n  // declaration. For a template-id, we perform the checks in\n  // CheckTemplateSpecializationScope.\n  if (!Cur->Encloses(DC) && !IsTemplateId) {\n    if (Cur->isRecord())\n    else if (isa<TranslationUnitDecl>(DC))\n    else if (isa<FunctionDecl>(Cur))\n    else if (isa<BlockDecl>(Cur))\n      Diag(Loc, diag::err_invalid_declarator_in_block) << Name << SS.getRange();"}}
},
},
["note_objc_unsafe_perform_selector_method_declared_here"]={
["err_invalid_declarator_in_function"]={
[c]="method A that returns B declared here",
[j]="definition or redeclaration of A not allowed inside a function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="method %0 that returns %1 declared here",
[e]="definition or redeclaration of %0 not allowed inside a function",
[b]=q,
[f]=n,
[a]="method (.*?) that returns (.*?) declared here",
[g]="definition or redeclaration of (.*?) not allowed inside a function",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"0e23c61c8755",1488815914,"[Sema][ObjC] Warn about \'performSelector\' calls with selectors"}
[b]={x,1237025389,w},
[k]={{p,5517,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n  // Check whether the qualifying scope encloses the scope of the original\n  // declaration. For a template-id, we perform the checks in\n  // CheckTemplateSpecializationScope.\n  if (!Cur->Encloses(DC) && !IsTemplateId) {\n    if (Cur->isRecord())\n    else if (isa<TranslationUnitDecl>(DC))\n    else if (isa<FunctionDecl>(Cur))\n      Diag(Loc, diag::err_invalid_declarator_in_function) << Name << SS.getRange();"}}
},
},
["note_odr_base"]={
["err_invalid_declarator_scope"]={
[c]="class has base type A",
[j]="cannot define or redeclare A here because namespace B does not enclose namespace C",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="class has base type %0",
[e]="cannot define or redeclare %0 here because namespace %1 does not enclose namespace %2",
[b]=q,
[f]=n,
[a]="class has base type (.*?)",
[g]="cannot define or redeclare (.*?) here because namespace (.*?) does not enclose namespace (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"7eeb59752a60",1265916115,"When AST merging for record declarations fails, warn about the"}
[b]={x,1237025389,w},
[k]={{p,5528,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n  // Check whether the qualifying scope encloses the scope of the original\n  // declaration. For a template-id, we perform the checks in\n  // CheckTemplateSpecializationScope.\n  if (!Cur->Encloses(DC) && !IsTemplateId) {\n    if (Cur->isRecord())\n    else if (isa<TranslationUnitDecl>(DC))\n    else if (isa<FunctionDecl>(Cur))\n    else if (isa<BlockDecl>(Cur))\n    else if (isa<ExportDecl>(Cur)) {\n    } else\n      Diag(Loc, diag::err_invalid_declarator_scope) << Name << cast<NamedDecl>(Cur) << cast<NamedDecl>(DC) << SS.getRange();"}}
},
},
["note_odr_enumerator"]={
["err_invalid_digit"]={
[c]="enumerator A with value B here",
[j]="invalid digit \'A\' in ... constant",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="enumerator %0 with value %1 here",
[e]="invalid digit \'%0\' in %select{decimal|octal|binary}1 constant",
[b]=q,
[f]=n,
[a]="enumerator (.*?) with value (.*?) here",
[g]="invalid digit \'(.*?)\' in (?:decimal|octal|binary) constant",
[g]=p,
[h]=a,
[e]=p,
[i]=t,
[i]={"98c101833744",1266013059,"Implement AST importing and merging for enumeration types and"}
[b]={"7f5ff2175f68",1447466995,"Use %select to merge similar diagnostics. NFC"},
[k]={{W,1051,"/// ParseDecimalOrOctalCommon - This method is called for decimal or octal\n/// numbers. It issues an error for illegal digits, and handles floating point\n/// parsing. If it detects a floating point number, the radix is set to 10.\nvoid NumericLiteralParser::ParseDecimalOrOctalCommon(SourceLocation TokLoc) {\n  // If we have a hex digit other than \'e\' (which denotes a FP exponent) then\n  // the code is using an incorrect base.\n  if (isHexDigit(*s) && *s != \'e\' && *s != \'E\' && !isValidUDSuffix(LangOpts, StringRef(s, ThisTokEnd - s))) {\n    Diags.Report(Lexer::AdvanceToTokenCharacter(TokLoc, s - ThisTokBegin, SM, LangOpts), diag::err_invalid_digit) << StringRef(s, 1) << (radix == 8 ? 1 : 0);"},{W,1202,"/// ParseNumberStartingWithZero - This method is called when the first character\n/// of the number is found to be a zero.  This means it is either an octal\n/// number (like \'04\') or a hex number (\'0x123a\') a binary number (\'0b1010\') or\n/// a floating point number (01239.123e4).  Eat the prefix, determining the\n/// radix etc.\nvoid NumericLiteralParser::ParseNumberStartingWithZero(SourceLocation TokLoc) {\n  // Handle simple binary numbers 0b01010\n  if ((c1 == \'b\' || c1 == \'B\') && (s[1] == \'0\' || s[1] == \'1\')) {\n    if (s == ThisTokEnd) {\n    } else if (isHexDigit(*s) && !isValidUDSuffix(LangOpts, StringRef(s, ThisTokEnd - s))) {\n      Diags.Report(Lexer::AdvanceToTokenCharacter(TokLoc, s - ThisTokBegin, SM, LangOpts), diag::err_invalid_digit) << StringRef(s, 1) << 2;"}}
},
},
["note_odr_field"]={
["err_invalid_feature_combination"]={
[c]="field A has type B here",
[j]="invalid feature combination: A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="field %0 has type %1 here",
[e]="invalid feature combination: %0",
[b]=q,
[f]=n,
[a]="field (.*?) has type (.*?) here",
[g]="invalid feature combination\\: (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=a,
[i]={"7eeb59752a60",1265916115,"When AST merging for record declarations fails, warn about the"}
[b]={"ff13189c5d0d",1624436334,"[RISCV] Unify the arch string parsing logic to to RISCVISAInfo."},
[k]={{"clang/lib/Basic/Targets/AMDGPU.cpp",107,"bool AMDGPUTargetInfo::initFeatureMap(llvm::StringMap<bool> &Features, DiagnosticsEngine &Diags, StringRef CPU, const std::vector<std::string> &FeatureVec) const {\n  if (!insertWaveSizeFeature(CPU, getTriple(), Features, ErrorMsg)) {\n    Diags.Report(diag::err_invalid_feature_combination) << ErrorMsg;"},{"clang/lib/Basic/Targets/RISCV.cpp",203,"bool RISCVTargetInfo::initFeatureMap(llvm::StringMap<bool> &Features, DiagnosticsEngine &Diags, StringRef CPU, const std::vector<std::string> &FeaturesVec) const {\n  if (!ParseResult) {\n    Diags.Report(diag::err_invalid_feature_combination) << OutputErrMsg.str();"},{"clang/lib/Basic/Targets/RISCV.cpp",259,"/// Perform initialization based on the user configured set of features.\nbool RISCVTargetInfo::handleTargetFeatures(std::vector<std::string> &Features, DiagnosticsEngine &Diags) {\n  if (!ParseResult) {\n    Diags.Report(diag::err_invalid_feature_combination) << OutputErrMsg.str();"}}
},
},
["note_odr_field_name"]={
["err_invalid_form_pointer_member_function"]={
[c]="field has name A here",
[j]="cannot create a non-constant pointer to member function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="field has name %0 here",
[e]="cannot create a non-constant pointer to member function",
[b]=q,
[f]=n,
[a]="field has name (.*?) here",
[g]="cannot create a non\\-constant pointer to member function",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"df0ee34bc252",1498867607,"[Modules] Implement ODR-like semantics for tag types in C/ObjC"}
[b]={"8d08b9b408ca",1282900108,"Propagate whether an id-expression is the immediate argument of"},
[k]={{q,12815,"/// CheckAddressOfOperand - The operand of & must be either a function\n/// designator or an lvalue designating an object. If it is an lvalue, the\n/// object cannot be declared with storage class register or be a bit field.\n/// Note: The usual conversions are *not* applied to the operand of the &\n/// operator (C99 6.3.2.1p[2-4]), and its result is never an lvalue.\n/// In C++, the operand might be an overloaded function name, in which case\n/// we allow the \'&\' but retain the overloaded-function type.\nQualType Sema::CheckAddressOfOperand(ExprResult &OrigOp, SourceLocation OpLoc) {\n  if (const BuiltinType *PTy = OrigOp.get()->getType()->getAsPlaceholderType()) {\n    if (PTy->getKind() == BuiltinType::Overload) {\n      if (isa<UnresolvedMemberExpr>(Ovl))\n        if (!ResolveSingleFunctionTemplateSpecialization(Ovl)) {\n          Diag(OpLoc, diag::err_invalid_form_pointer_member_function) << OrigOp.get()->getSourceRange();"},{q,12826,"/// CheckAddressOfOperand - The operand of & must be either a function\n/// designator or an lvalue designating an object. If it is an lvalue, the\n/// object cannot be declared with storage class register or be a bit field.\n/// Note: The usual conversions are *not* applied to the operand of the &\n/// operator (C99 6.3.2.1p[2-4]), and its result is never an lvalue.\n/// In C++, the operand might be an overloaded function name, in which case\n/// we allow the \'&\' but retain the overloaded-function type.\nQualType Sema::CheckAddressOfOperand(ExprResult &OrigOp, SourceLocation OpLoc) {\n  if (const BuiltinType *PTy = OrigOp.get()->getType()->getAsPlaceholderType()) {\n    if (PTy->getKind() == BuiltinType::BoundMember) {\n      Diag(OpLoc, diag::err_invalid_form_pointer_member_function) << OrigOp.get()->getSourceRange();"},{q,12891,"/// CheckAddressOfOperand - The operand of & must be either a function\n/// designator or an lvalue designating an object. If it is an lvalue, the\n/// object cannot be declared with storage class register or be a bit field.\n/// Note: The usual conversions are *not* applied to the operand of the &\n/// operator (C99 6.3.2.1p[2-4]), and its result is never an lvalue.\n/// In C++, the operand might be an overloaded function name, in which case\n/// we allow the \'&\' but retain the overloaded-function type.\nQualType Sema::CheckAddressOfOperand(ExprResult &OrigOp, SourceLocation OpLoc) {\n  if (lval == Expr::LV_ClassTemporary || lval == Expr::LV_ArrayTemporary) {\n  } else if (isa<ObjCSelectorExpr>(op)) {\n  } else if (lval == Expr::LV_MemberFunction) {\n    // If the underlying expression isn\'t a decl ref, give up.\n    if (!isa<DeclRefExpr>(op)) {\n      Diag(OpLoc, diag::err_invalid_form_pointer_member_function) << OrigOp.get()->getSourceRange();"},{Ab,10757,"// A helper class to help with address of function resolution\n// - allows us to avoid passing around all those ugly parameters\nclass AddressOfFunctionResolver {\n  void ComplainIsStaticMemberFunctionFromBoundPointer() const { S.Diag(OvlExpr->getBeginLoc(), diag::err_invalid_form_pointer_member_function) << OvlExpr->getSourceRange(); }"}}
},
},
["note_odr_friend"]={
["err_invalid_incomplete_type_use"]={
[c]="friend declared here",
[j]="invalid use of incomplete type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="friend declared here",
[e]="invalid use of incomplete type %0",
[b]=q,
[f]=n,
[a]="friend declared here",
[g]="invalid use of incomplete type (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"b180eebed423",1524677283,"[ASTImporter] FriendDecl importing improvements"}
[b]={x,1237025389,w},
[k]={{B,1391,"ExprResult Sema::BuildCXXTypeConstructExpr(TypeSourceInfo *TInfo, SourceLocation LParenOrBraceLoc, MultiExprArg Exprs, SourceLocation RParenOrBraceLoc, bool ListInitialization) {\n  if (!Ty->isVoidType() && RequireCompleteType(TyBeginLoc, ElemTy, diag::err_invalid_incomplete_type_use, FullRange))"}}
},
},
["note_odr_missing_base"]={
["err_invalid_macos_32bit_deployment_target"]={
[c]="no corresponding base class here",
[j]="32-bit targets are not supported when building for Mac Catalyst",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="no corresponding base class here",
[e]="32-bit targets are not supported when building for Mac Catalyst",
[b]=q,
[f]=n,
[a]="no corresponding base class here",
[g]="32\\-bit targets are not supported when building for Mac Catalyst",
[g]=p,
[h]=a,
[e]=p,
[i]=a,
[i]={"7eeb59752a60",1265916115,"When AST merging for record declarations fails, warn about the"}
[b]={"0687578728ea",1610286626,"[C++20][Modules][HU 2/5] Support searching Header Units in user or system search paths."},
[k]={{"clang/lib/Driver/ToolChains/Darwin.cpp",1982,"void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {\n  // Set the tool chain target information.\n  if (Platform == MacOS) {\n  } else if (Platform == IPhoneOS) {\n    // For 32-bit targets, the deployment target for iOS has to be earlier than\n    // iOS 11.\n    if (getTriple().isArch32Bit() && Major >= 11) {\n      // If the deployment target is explicitly specified, print a diagnostic.\n      if (OSTarget->isExplicitlySpecified()) {\n        if (OSTarget->getEnvironment() == MacCatalyst)\n          getDriver().Diag(diag::err_invalid_macos_32bit_deployment_target);"}}
},
},
["note_odr_missing_enumerator"]={
["err_invalid_mask_type_size"]={
[c]="no corresponding enumerator here",
[j]="mask type size must be between 1-byte and 8-bytes",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="no corresponding enumerator here",
[e]="mask type size must be between 1-byte and 8-bytes",
[b]=q,
[f]=n,
[a]="no corresponding enumerator here",
[g]="mask type size must be between 1\\-byte and 8\\-bytes",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"98c101833744",1266013059,"Implement AST importing and merging for enumeration types and"}
[b]={"d572cf496ded",1541487914,"os_log: Allow specifying mask type in format string."},
[k]={{y,9578,"void CheckPrintfHandler::handleInvalidMaskType(StringRef MaskType) { S.Diag(getLocationOfByte(MaskType.data()), diag::err_invalid_mask_type_size); }"}}
},
},
["note_odr_missing_field"]={
["err_invalid_member_in_interface"]={
[c]="no corresponding field here",
[j]="...A is not permitted within an interface type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="no corresponding field here",
[e]="%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",
[b]=q,
[f]=n,
[a]="no corresponding field here",
[g]="(?:data member |non\\-public member function |static member function |user\\-declared constructor|user\\-declared destructor|operator |nested class )(.*?) is not permitted within an interface type",
[g]=p,
[h]=a,
[e]=p,
[i]=a,
[i]={"7eeb59752a60",1265916115,"When AST merging for record declarations fails, warn about the"}
[b]={"db632ac004ae",1348558359,"Fix for r163013 regression and further __interface enhancement."},
[k]={{R,2990,"/// ParseCXXMemberSpecification - Parse the class definition.\n///\n///      member-specification:\n///        member-declaration member-specification[opt]\n///        access-specifier \':\' member-specification[opt]\n///\nvoid Parser::ParseCXXMemberSpecification(SourceLocation RecordLoc, SourceLocation AttrFixitLoc, ParsedAttributes &Attrs, unsigned TagType, Decl *TagDecl) {\n  if (!ClassStack.empty()) {\n    for (const Scope *S = getCurScope(); S; S = S->getParent()) {\n      if (S->isClassScope()) {\n        // The Microsoft extension __interface does not permit nested classes.\n        if (getCurrentClass().IsInterface) {\n          Diag(RecordLoc, diag::err_invalid_member_in_interface) << /*ErrorType=*/6 << (isa<NamedDecl>(TagDecl) ? cast<NamedDecl>(TagDecl)->getQualifiedNameAsString() : \"(anonymous)\");"},{r,2951,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n  if (cast<CXXRecordDecl>(CurContext)->isInterface()) {\n    if (InvalidDecl) {\n      if (ShowDeclName)\n        Diag(Loc, diag::err_invalid_member_in_interface) << (InvalidDecl - 1) << Name;"},{r,2953,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n  if (cast<CXXRecordDecl>(CurContext)->isInterface()) {\n    if (InvalidDecl) {\n      if (ShowDeclName)\n      else\n        Diag(Loc, diag::err_invalid_member_in_interface) << (InvalidDecl - 1) << \"\";"}}
},
},
["note_odr_missing_friend"]={
["err_invalid_member_use_in_static_method"]={
[c]="no corresponding friend here",
[j]="invalid use of member A in static member function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="no corresponding friend here",
[e]="invalid use of member %0 in static member function",
[b]=q,
[f]=n,
[a]="no corresponding friend here",
[g]="invalid use of member (.*?) in static member function",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"b180eebed423",1524677283,"[ASTImporter] FriendDecl importing improvements"}
[b]={x,1237025389,w},
[k]={{fb,207,"/// Diagnose a reference to a field with no object available.\nstatic void diagnoseInstanceReference(Sema &SemaRef, const CXXScopeSpec &SS, NamedDecl *Rep, const DeclarationNameInfo &nameInfo) {\n  if (IsField && InStaticMethod)\n    SemaRef.Diag(Loc, diag::err_invalid_member_use_in_static_method) << Range << nameInfo.getName();"}}
},
},
["note_odr_number_of_bases"]={
["err_invalid_module_name"]={
[c]="class has A base class",
[j]="A is an invalid name for a module",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="class has %0 base %plural{1:class|:classes}0",
[e]="%0 is an invalid name for a module",
[b]=q,
[f]=n,
[a]="class has (.*?) base (?:class|classes)",
[g]="(.*?) is an invalid name for a module",
[g]=p,
[h]=a,
[e]=p,
[i]=D,
[i]={"7eeb59752a60",1265916115,"When AST merging for record declarations fails, warn about the"}
[b]={M,1625925174,N},
[k]={{X,150,"/// Tests whether the given identifier is reserved as a module name and\n/// diagnoses if it is. Returns true if a diagnostic is emitted and false\n/// otherwise.\nstatic bool DiagReservedModuleName(Sema &S, const IdentifierInfo *II, SourceLocation Loc) {\n  case Invalid:\n    return S.Diag(Loc, diag::err_invalid_module_name) << II;"}}
},
},
["note_odr_objc_method_here"]={
["err_invalid_neon_type_code"]={
[c]="... method A also declared here",
[j]="incompatible constant for this __builtin_neon function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{class|instance}0 method %1 also declared here",
[e]="incompatible constant for this __builtin_neon function",
[b]=q,
[f]=n,
[a]="(?:class|instance) method (.*?) also declared here",
[g]="incompatible constant for this __builtin_neon function",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"43f54796ab42",1266372767,"Implement AST importing and checking for Objective-C method declarations."}
[b]={"d773fe67dd67",1276404472,"Most of NEON sema checking & fix to polynomial type detection"},
[k]={{y,2726,"#include \"clang/Basic/arm_neon.inc\"\n  if (mask) {\n    if ((TV > 63) || (mask & (1ULL << TV)) == 0)\n      return Diag(TheCall->getBeginLoc(), diag::err_invalid_neon_type_code) << TheCall->getArg(ImmArg)->getSourceRange();"}}
},
},
["note_odr_objc_missing_superclass"]={
["err_invalid_non_static_member_use"]={
[c]="no corresponding superclass here",
[j]="invalid use of non-static data member A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="no corresponding superclass here",
[e]="invalid use of non-static data member %0",
[b]=q,
[f]=n,
[a]="no corresponding superclass here",
[g]="invalid use of non\\-static data member (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"7244b0bb860b",1266366870,"Implement AST importing of Objective-C instance variables. "}
[b]={x,1237025389,w},
[k]={{q,15605,"// Handle the case where we conclude a expression which we speculatively\n// considered to be unevaluated is actually evaluated.\nclass TransformToPE : public TreeTransform<TransformToPE> {\n  // We need to special-case DeclRefExprs referring to FieldDecls which\n  // are not part of a member pointer formation; normal TreeTransforming\n  // doesn\'t catch this case because of the way we represent them in the AST.\n  // FIXME: This is a bit ugly; is it really the best way to handle this\n  // case?\n  //\n  // Error on DeclRefExprs referring to FieldDecls.\n  ExprResult TransformDeclRefExpr(DeclRefExpr *E) {\n    if (isa<FieldDecl>(E->getDecl()) && !SemaRef.isUnevaluatedContext())\n      return SemaRef.Diag(E->getLocation(), diag::err_invalid_non_static_member_use) << E->getDecl() << E->getSourceRange();"},{fb,213,"/// Diagnose a reference to a field with no object available.\nstatic void diagnoseInstanceReference(Sema &SemaRef, const CXXScopeSpec &SS, NamedDecl *Rep, const DeclarationNameInfo &nameInfo) {\n  if (IsField && InStaticMethod)\n  else if (ContextClass && RepClass && SS.isEmpty() && !InStaticMethod && !RepClass->Equals(ContextClass) && RepClass->Encloses(ContextClass))\n  else if (IsField)\n    SemaRef.Diag(Loc, diag::err_invalid_non_static_member_use) << nameInfo.getName() << Range;"}}
},
},
["note_odr_objc_property_impl_kind"]={
["err_invalid_nsnumber_type"]={
[c]="property A is implemented with ... here",
[j]="A is not a valid literal type for NSNumber",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="property %0 is implemented with %select{@synthesize|@dynamic}1 here",
[e]="%0 is not a valid literal type for NSNumber",
[b]=q,
[f]=n,
[a]="property (.*?) is implemented with (?:@synthesize|@dynamic) here",
[g]="(.*?) is not a valid literal type for NSNumber",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"14a49e2fbe1c",1291746723,"Implement AST import for Objective-C property implementations"}
[b]={"e65b086e07a6",1331064356,"Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,"},
[k]={{O,223,"/// Retrieve the NSNumber factory method that should be used to create\n/// an Objective-C literal for the given type.\nstatic ObjCMethodDecl *getNSNumberFactoryMethod(Sema &S, SourceLocation Loc, QualType NumberType, bool isLiteral = false, SourceRange R = SourceRange()) {\n  if (!Kind) {\n    if (isLiteral) {\n      S.Diag(Loc, diag::err_invalid_nsnumber_type) << NumberType << R;"}}
},
},
["note_odr_objc_superclass"]={
["err_invalid_numeric_udl"]={
[c]="inherits from superclass A here",
[j]="numeric literal with user-defined suffix cannot be used here",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="inherits from superclass %0 here",
[e]="numeric literal with user-defined suffix cannot be used here",
[b]=q,
[f]=n,
[a]="inherits from superclass (.*?) here",
[g]="numeric literal with user\\-defined suffix cannot be used here",
[g]=p,
[h]=a,
[e]=p,
[i]=t,
[i]={"7244b0bb860b",1266366870,"Implement AST importing of Objective-C instance variables. "}
[b]={"bcc22fc4e1b2",1331280036,"Support for raw and template forms of numeric user-defined literals,"},
[k]={{q,3381,"ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {\n  if (Literal.hasUDSuffix()) {\n    // Make sure we\'re allowed user-defined literals here.\n    if (!UDLScope)\n      return ExprError(Diag(UDSuffixLoc, diag::err_invalid_numeric_udl));"}}
},
},
["note_odr_objc_synthesize_ivar_here"]={
["err_invalid_operator_on_type"]={
[c]="property is synthesized to ivar A here",
[j]="cannot use ... operator on a type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="property is synthesized to ivar %0 here",
[e]="cannot use %select{dot|arrow}0 operator on a type",
[b]=q,
[f]=n,
[a]="property is synthesized to ivar (.*?) here",
[g]="cannot use (?:dot|arrow) operator on a type",
[g]=p,
[h]=a,
[e]=p,
[i]=s,
[i]={"14a49e2fbe1c",1291746723,"Implement AST import for Objective-C property implementations"}
[b]={"9c67267a7bce",1359167498,"Give a more informative error message when the dot or arrow operator is used"},
[k]={{C,6000,"/// ParseDirectDeclarator\n///      direct-declarator: [C99 6.7.5]\n/// [C99]  identifier\n///        \'(\' declarator \')\'\n/// [GNU]  \'(\' attributes declarator \')\'\n/// [C90]  direct-declarator \'[\' constant-expression[opt] \']\'\n/// [C99]  direct-declarator \'[\' type-qual-list[opt] assignment-expr[opt] \']\'\n/// [C99]  direct-declarator \'[\' \'static\' type-qual-list[opt] assign-expr \']\'\n/// [C99]  direct-declarator \'[\' type-qual-list \'static\' assignment-expr \']\'\n/// [C99]  direct-declarator \'[\' type-qual-list[opt] \'*\' \']\'\n/// [C++11] direct-declarator \'[\' constant-expression[opt] \']\'\n///                    attribute-specifier-seq[opt]\n///        direct-declarator \'(\' parameter-type-list \')\'\n///        direct-declarator \'(\' identifier-list[opt] \')\'\n/// [GNU]  direct-declarator \'(\' parameter-forward-declarations\n///                    parameter-type-list[opt] \')\'\n/// [C++]  direct-declarator \'(\' parameter-declaration-clause \')\'\n///                    cv-qualifier-seq[opt] exception-specification[opt]\n/// [C++11] direct-declarator \'(\' parameter-declaration-clause \')\'\n///                    attribute-specifier-seq[opt] cv-qualifier-seq[opt]\n///                    ref-qualifier[opt] exception-specification[opt]\n/// [C++]  declarator-id\n/// [C++11] declarator-id attribute-specifier-seq[opt]\n///\n///      declarator-id: [C++ 8]\n///        \'...\'[opt] id-expression\n///        \'::\'[opt] nested-name-specifier[opt] type-name\n///\n///      id-expression: [C++ 5.1]\n///        unqualified-id\n///        qualified-id\n///\n///      unqualified-id: [C++ 5.1]\n///        identifier\n///        operator-function-id\n///        conversion-function-id\n///          \'~\' class-name\n///        template-id\n///\n/// C++17 adds the following, which we also handle here:\n///\n///      simple-declaration:\n///        <decl-spec> \'[\' identifier-list \']\' brace-or-equal-initializer \';\'\n///\n/// Note, any additional constructs added here may need corresponding changes\n/// in isConstructorDeclarator.\nvoid Parser::ParseDirectDeclarator(Declarator &D) {\n  if (Tok.is(tok::l_paren)) {\n  } else if (D.mayOmitIdentifier()) {\n  } else {\n    if (D.getContext() == DeclaratorContext::Member) {\n    } else {\n      if (Tok.getKind() == tok::TokenKind::kw_while) {\n      } else if (getLangOpts().CPlusPlus) {\n        if (Tok.isOneOf(tok::period, tok::arrow))\n          Diag(Tok, diag::err_invalid_operator_on_type) << Tok.is(tok::arrow);"}}
},
},
["note_odr_parameter_pack_non_pack"]={
["err_invalid_pcs"]={
[c]="... declared here",
[j]="invalid PCS type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{parameter|parameter pack}0 declared here",
[e]="invalid PCS type",
[b]=q,
[f]=n,
[a]="(?:parameter|parameter pack) declared here",
[g]="invalid PCS type",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"a082a49d9e71",1291144490,"Implement basic AST importing and merging support for class template"}
[b]={"231e875b5c44",1302811609,"Implement ARM pcs attribute. Basically it\'s another way of calling convention selection (AAPCS or"},
[k]={{v,4741,"bool Sema::CheckCallingConvAttr(const ParsedAttr &Attrs, CallingConv &CC, const FunctionDecl *FD) {\n  case ParsedAttr::AT_Pcs: {\n    Diag(Attrs.getLoc(), diag::err_invalid_pcs);"}}
},
},
["note_odr_tag_kind_here"]={
["err_invalid_pixel_decl_spec_combination"]={
[c]="A is a ... here",
[j]="\'__pixel\' must be preceded by \'__vector\'.  \'A\' declaration specifier not allowed here",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is a %select{struct|interface|union|class|enum}1 here",
[e]="\'__pixel\' must be preceded by \'__vector\'.  \'%0\' declaration specifier not allowed here",
[b]=q,
[f]=n,
[a]="(.*?) is a (?:struct|interface|union|class|enum) here",
[g]="\'__pixel\' must be preceded by \'__vector\'\\.  \'(.*?)\' declaration specifier not allowed here",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"7eeb59752a60",1265916115,"When AST merging for record declarations fails, warn about the"}
[b]={"2233460de6ed",1265328742,"First stage of adding AltiVec support"},
[k]={{G,836,"bool DeclSpec::SetTypeAltiVecPixel(bool isAltiVecPixel, SourceLocation Loc, const char *&PrevSpec, unsigned &DiagID, const PrintingPolicy &Policy) {\n  if (!TypeAltiVecVector || TypeAltiVecPixel || (TypeSpecType != TST_unspecified)) {\n    DiagID = diag::err_invalid_pixel_decl_spec_combination;"}}
},
},
["note_odr_template_parameter_here"]={
["err_invalid_property_name"]={
[c]="template parameter declared here",
[j]="A is not a valid property name (accessing an object of type B)",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="template parameter declared here",
[e]="%0 is not a valid property name (accessing an object of type %1)",
[b]=q,
[f]=n,
[a]="template parameter declared here",
[g]="(.*?) is not a valid property name \\(accessing an object of type (.*?)\\)",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"a082a49d9e71",1291144490,"Implement basic AST importing and merging support for class template"}
[b]={"d645931066c1",1303323595,"Fix a crash-on-invalid involving non-identifier names in a member"},
[k]={{O,1615,"/// HandleExprPropertyRefExpr - Handle foo.bar where foo is a pointer to an\n/// objective C interface.  This is a property reference expression.\nExprResult Sema::HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT, Expr *BaseExpr, SourceLocation OpLoc, DeclarationName MemberName, SourceLocation MemberLoc, SourceLocation SuperLoc, QualType SuperType, bool Super) {\n  if (!MemberName.isIdentifier()) {\n    Diag(MemberLoc, diag::err_invalid_property_name) << MemberName << QualType(OPT, 0);"}}
},
},
["note_odr_template_parameter_list"]={
["err_invalid_protocol_qualifiers"]={
[c]="template parameter list also declared here",
[j]="invalid protocol qualifiers on non-ObjC type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="template parameter list also declared here",
[e]="invalid protocol qualifiers on non-ObjC type",
[b]=q,
[f]=n,
[a]="template parameter list also declared here",
[g]="invalid protocol qualifiers on non\\-ObjC type",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"a082a49d9e71",1291144490,"Implement basic AST importing and merging support for class template"}
[b]={x,1237025389,w},
[k]={{F,938,"QualType Sema::BuildObjCTypeParamType(const ObjCTypeParamDecl *Decl, SourceLocation ProtocolLAngleLoc, ArrayRef<ObjCProtocolDecl *> Protocols, ArrayRef<SourceLocation> ProtocolLocs, SourceLocation ProtocolRAngleLoc, bool FailOnError) {\n  if (!Protocols.empty()) {\n    if (HasError) {\n      Diag(SourceLocation(), diag::err_invalid_protocol_qualifiers) << SourceRange(ProtocolLAngleLoc, ProtocolRAngleLoc);"},{F,961,"QualType Sema::BuildObjCObjectType(QualType BaseType, SourceLocation Loc, SourceLocation TypeArgsLAngleLoc, ArrayRef<TypeSourceInfo *> TypeArgs, SourceLocation TypeArgsRAngleLoc, SourceLocation ProtocolLAngleLoc, ArrayRef<ObjCProtocolDecl *> Protocols, ArrayRef<SourceLocation> ProtocolLocs, SourceLocation ProtocolRAngleLoc, bool FailOnError, bool Rebuilding) {\n  if (!Protocols.empty()) {\n    if (HasError) {\n      Diag(Loc, diag::err_invalid_protocol_qualifiers) << SourceRange(ProtocolLAngleLoc, ProtocolRAngleLoc);"}}
},
},
["note_odr_value_here"]={
["err_invalid_qualified_constructor"]={
[c]="declared here with type A",
[j]="\'A\' qualifier is not allowed on a constructor",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="declared here with type %0",
[e]="\'%0\' qualifier is not allowed on a constructor",
[b]=q,
[f]=n,
[a]="declared here with type (.*?)",
[g]="\'(.*?)\' qualifier is not allowed on a constructor",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"3aed6cdd5e61",1265663379,"Implement basic importing and merging of variable declarations within"}
[b]={z,1236199783,A},
[k]={{r,9218,"/// CheckConstructorDeclarator - Called by ActOnDeclarator to check\n/// the well-formedness of the constructor declarator @p D with type @p\n/// R. If there are any errors in the declarator, this routine will\n/// emit diagnostics and set the invalid bit to true.  In any case, the type\n/// will be updated to reflect a well-formed type for the constructor and\n/// returned.\nQualType Sema::CheckConstructorDeclarator(Declarator &D, QualType R, StorageClass &SC) {\n  checkMethodTypeQualifiers(*this, D, diag::err_invalid_qualified_constructor);"}}
},
},
["note_odr_virtual_base"]={
["err_invalid_qualified_destructor"]={
[c]="... derivation here",
[j]="\'A\' qualifier is not allowed on a destructor",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{non-virtual|virtual}0 derivation here",
[e]="\'%0\' qualifier is not allowed on a destructor",
[b]=q,
[f]=n,
[a]="(?:non\\-virtual|virtual) derivation here",
[g]="\'(.*?)\' qualifier is not allowed on a destructor",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"7eeb59752a60",1265916115,"When AST merging for record declarations fails, warn about the"}
[b]={z,1236199783,A},
[k]={{r,9370,"/// CheckDestructorDeclarator - Called by ActOnDeclarator to check\n/// the well-formednes of the destructor declarator @p D with type @p\n/// R. If there are any errors in the declarator, this routine will\n/// emit diagnostics and set the declarator to invalid.  Even if this happens,\n/// will be updated to reflect a well-formed type for the destructor and\n/// returned.\nQualType Sema::CheckDestructorDeclarator(Declarator &D, QualType R, StorageClass &SC) {\n  checkMethodTypeQualifiers(*this, D, diag::err_invalid_qualified_destructor);"}}
},
},
["note_omp_assumption_clause_continue_here"]={
["err_invalid_qualified_function_type"]={
[c]="the ignored tokens spans until here",
[j]="... ...cannot have \'A\' qualifier",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="the ignored tokens spans until here",
[e]="%select{non-member function|static member function|deduction guide}0 %select{of type %2 |}1cannot have \'%3\' qualifier",
[b]=q,
[f]=n,
[a]="the ignored tokens spans until here",
[g]="(?:non\\-member function|static member function|deduction guide) (?:of type (.*?) |)cannot have \'(.*?)\' qualifier",
[g]=p,
[h]=a,
[e]=y,
[i]=o,
[i]={"38d18d93534d",1601621202,"[SVE] Add support to vectorize_width loop pragma for scalable vectors"}
[b]={x,1237025389,w},
[k]={{F,5143,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n  if (LangOpts.CPlusPlus && T->isFunctionType()) {\n    // C++11 [dcl.fct]p6 (w/DR1417):\n    // An attempt to specify a function type with a cv-qualifier-seq or a\n    // ref-qualifier (including by typedef-name) is ill-formed unless it is:\n    //  - the function type for a non-static member function,\n    //  - the function type to which a pointer to member refers,\n    //  - the top-level function type of a function typedef declaration or\n    //    alias-declaration,\n    //  - the type-id in the default argument of a type-parameter, or\n    //  - the type-id of a template-argument for a type-parameter\n    //\n    // FIXME: Checking this here is insufficient. We accept-invalid on:\n    //\n    //  template<typename T> struct S { void f(T); };\n    //  S<int() const> s;\n    //\n    // ... for instance.\n    if (IsQualifiedFunction && !(Kind == Member && D.getDeclSpec().getStorageClassSpec() != DeclSpec::SCS_static) && !IsTypedefName && D.getContext() != DeclaratorContext::TemplateArg && D.getContext() != DeclaratorContext::TemplateTypeArg) {\n      S.Diag(Loc, diag::err_invalid_qualified_function_type) << Kind << D.isFunctionDeclarator() << T << getFunctionQualifiersAsString(FnTy) << FixItHint::CreateRemoval(RemovalRange);"}}
},
},
["note_omp_atomic_capture"]={
["err_invalid_receiver_class_message"]={
[c]="...",
[j]="receiver type A is not an Objective-C class",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{expected assignment expression|expected compound statement|expected exactly two expression statements|expected in right hand side of the first expression}0",
[e]="receiver type %0 is not an Objective-C class",
[b]=q,
[f]=n,
[a]="(?:expected assignment expression|expected compound statement|expected exactly two expression statements|expected in right hand side of the first expression)",
[g]="receiver type (.*?) is not an Objective\\-C class",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"b78ca83d3b9f",1427859197,"[OPENMP] Sema analysis for \'atomic capture\' construct."}
[b]={"0c78ad96653c",1271879840,"Rework the Parser-Sema interaction for Objective-C message"},
[k]={{O,2129,"/// \\param ReceiverType The type of the object receiving the\n/// message. When \\p ReceiverTypeInfo is non-NULL, this is the same\n/// type as that refers to. For a superclass send, this is the type of\n/// the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this class message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildClassMessage(TypeSourceInfo *ReceiverTypeInfo, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n  if (!ClassType || !(Class = ClassType->getInterface())) {\n    Diag(Loc, diag::err_invalid_receiver_class_message) << ReceiverType;"}}
},
},
["note_omp_atomic_compare"]={
["err_invalid_receiver_to_message_super"]={
[c]="...",
[j]="\'super\' is only valid in a method body",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{expected compound statement|expected exactly one expression statement|expected assignment statement|expected conditional operator|expect result value to be at false expression|expect binary operator in conditional expression|expect \'<\', \'>\' or \'==\' as order operator|expect comparison in a form of \'x == e\', \'e == x\', \'x ordop expr\', or \'expr ordop x\'|expect lvalue for result value|expect scalar value|expect integer value|unexpected \'else\' statement|expect \'==\' operator|expect an assignment statement \'v = x\'|expect a \'if\' statement|expect no more than two statements|expect a compound statement|expect \'else\' statement|expect a form \'r = x == e; if (r) ...\'}0",
[e]="\'super\' is only valid in a method body",
[b]=q,
[f]=n,
[a]="(?:expected compound statement|expected exactly one expression statement|expected assignment statement|expected conditional operator|expect result value to be at false expression|expect binary operator in conditional expression|expect \'\\<\', \'\\>\' or \'\\=\\=\' as order operator|expect comparison in a form of \'x \\=\\= e\', \'e \\=\\= x\', \'x ordop expr\', or \'expr ordop x\'|expect lvalue for result value|expect scalar value|expect integer value|unexpected \'else\' statement|expect \'\\=\\=\' operator|expect an assignment statement \'v \\= x\'|expect a \'if\' statement|expect no more than two statements|expect a compound statement|expect \'else\' statement|expect a form \'r \\= x \\=\\= e; if \\(r\\) \\.\\.\\.\')",
[g]="\'super\' is only valid in a method body",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={wd,1616787805,rd}
[b]={"a36ec4243bea",1270974494,"fix PR6811 by not parsing \'super\' as a magic expression in"},
[k]={{O,1933,"ExprResult Sema::ActOnSuperMessage(Scope *S, SourceLocation SuperLoc, Selector Sel, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg Args) {\n  if (!Method) {\n    Diag(SuperLoc, diag::err_invalid_receiver_to_message_super);"}}
},
},
["note_omp_atomic_read_write"]={
["err_invalid_reference_qualifier_application"]={
[c]="...",
[j]="\'A\' qualifier may not be applied to a reference",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{expected an expression statement|expected built-in assignment operator|expected expression of scalar type|expected lvalue expression}0",
[e]="\'%0\' qualifier may not be applied to a reference",
[b]=q,
[f]=n,
[a]="(?:expected an expression statement|expected built\\-in assignment operator|expected expression of scalar type|expected lvalue expression)",
[g]="\'(.*?)\' qualifier may not be applied to a reference",
[g]=p,
[h]=a,
[e]=T,
[i]=s,
[i]={"f33eba65730d",1417159300,"[OPENMP] Additional processing of \'omp atomic write\' directive."}
[b]={z,1236199783,A},
[k]={{C,5716,"/// ParseDeclaratorInternal - Parse a C or C++ declarator. The direct-declarator\n/// is parsed by the function passed to it. Pass null, and the direct-declarator\n/// isn\'t parsed at all, making this function effectively parse the C++\n/// ptr-operator production.\n///\n/// If the grammar of this construct is extended, matching changes must also be\n/// made to TryParseDeclarator and MightBeDeclarator, and possibly to\n/// isConstructorDeclarator.\n///\n///      declarator: [C99 6.7.5] [C++ 8p4, dcl.decl]\n/// [C]    pointer[opt] direct-declarator\n/// [C++]  direct-declarator\n/// [C++]  ptr-operator declarator\n///\n///      pointer: [C99 6.7.5]\n///        \'*\' type-qualifier-list[opt]\n///        \'*\' type-qualifier-list[opt] pointer\n///\n///      ptr-operator:\n///        \'*\' cv-qualifier-seq[opt]\n///        \'&\'\n/// [C++0x] \'&&\'\n/// [GNU]  \'&\' restrict[opt] attributes[opt]\n/// [GNU?]  \'&&\' restrict[opt] attributes[opt]\n///        \'::\'[opt] nested-name-specifier \'*\' cv-qualifier-seq[opt]\nvoid Parser::ParseDeclaratorInternal(Declarator &D, DirectDeclParseFunction DirectDeclParser) {\n  if (Kind == tok::star || Kind == tok::caret) {\n  } else {\n    // C++ 8.3.2p1: cv-qualified references are ill-formed except when the\n    // cv-qualifiers are introduced through the use of a typedef or of a\n    // template type argument, in which case the cv-qualifiers are ignored.\n    if (DS.getTypeQualifiers() != DeclSpec::TQ_unspecified) {\n      if (DS.getTypeQualifiers() & DeclSpec::TQ_const)\n        Diag(DS.getConstSpecLoc(), diag::err_invalid_reference_qualifier_application) << \"const\";"},{C,5718,"/// ParseDeclaratorInternal - Parse a C or C++ declarator. The direct-declarator\n/// is parsed by the function passed to it. Pass null, and the direct-declarator\n/// isn\'t parsed at all, making this function effectively parse the C++\n/// ptr-operator production.\n///\n/// If the grammar of this construct is extended, matching changes must also be\n/// made to TryParseDeclarator and MightBeDeclarator, and possibly to\n/// isConstructorDeclarator.\n///\n///      declarator: [C99 6.7.5] [C++ 8p4, dcl.decl]\n/// [C]    pointer[opt] direct-declarator\n/// [C++]  direct-declarator\n/// [C++]  ptr-operator declarator\n///\n///      pointer: [C99 6.7.5]\n///        \'*\' type-qualifier-list[opt]\n///        \'*\' type-qualifier-list[opt] pointer\n///\n///      ptr-operator:\n///        \'*\' cv-qualifier-seq[opt]\n///        \'&\'\n/// [C++0x] \'&&\'\n/// [GNU]  \'&\' restrict[opt] attributes[opt]\n/// [GNU?]  \'&&\' restrict[opt] attributes[opt]\n///        \'::\'[opt] nested-name-specifier \'*\' cv-qualifier-seq[opt]\nvoid Parser::ParseDeclaratorInternal(Declarator &D, DirectDeclParseFunction DirectDeclParser) {\n  if (Kind == tok::star || Kind == tok::caret) {\n  } else {\n    // C++ 8.3.2p1: cv-qualified references are ill-formed except when the\n    // cv-qualifiers are introduced through the use of a typedef or of a\n    // template type argument, in which case the cv-qualifiers are ignored.\n    if (DS.getTypeQualifiers() != DeclSpec::TQ_unspecified) {\n      if (DS.getTypeQualifiers() & DeclSpec::TQ_volatile)\n        Diag(DS.getVolatileSpecLoc(), diag::err_invalid_reference_qualifier_application) << \"volatile\";"},{C,5721,"/// ParseDeclaratorInternal - Parse a C or C++ declarator. The direct-declarator\n/// is parsed by the function passed to it. Pass null, and the direct-declarator\n/// isn\'t parsed at all, making this function effectively parse the C++\n/// ptr-operator production.\n///\n/// If the grammar of this construct is extended, matching changes must also be\n/// made to TryParseDeclarator and MightBeDeclarator, and possibly to\n/// isConstructorDeclarator.\n///\n///      declarator: [C99 6.7.5] [C++ 8p4, dcl.decl]\n/// [C]    pointer[opt] direct-declarator\n/// [C++]  direct-declarator\n/// [C++]  ptr-operator declarator\n///\n///      pointer: [C99 6.7.5]\n///        \'*\' type-qualifier-list[opt]\n///        \'*\' type-qualifier-list[opt] pointer\n///\n///      ptr-operator:\n///        \'*\' cv-qualifier-seq[opt]\n///        \'&\'\n/// [C++0x] \'&&\'\n/// [GNU]  \'&\' restrict[opt] attributes[opt]\n/// [GNU?]  \'&&\' restrict[opt] attributes[opt]\n///        \'::\'[opt] nested-name-specifier \'*\' cv-qualifier-seq[opt]\nvoid Parser::ParseDeclaratorInternal(Declarator &D, DirectDeclParseFunction DirectDeclParser) {\n  if (Kind == tok::star || Kind == tok::caret) {\n  } else {\n    // C++ 8.3.2p1: cv-qualified references are ill-formed except when the\n    // cv-qualifiers are introduced through the use of a typedef or of a\n    // template type argument, in which case the cv-qualifiers are ignored.\n    if (DS.getTypeQualifiers() != DeclSpec::TQ_unspecified) {\n      // \'restrict\' is permitted as an extension.\n      if (DS.getTypeQualifiers() & DeclSpec::TQ_atomic)\n        Diag(DS.getAtomicSpecLoc(), diag::err_invalid_reference_qualifier_application) << \"_Atomic\";"}}
},
},
["note_omp_atomic_update"]={
["err_invalid_saturation_spec"]={
[c]="...",
[j]="\'_Sat\' specifier is only valid on \'_Fract\' or \'_Accum\', not \'A\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%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",
[e]="\'_Sat\' specifier is only valid on \'_Fract\' or \'_Accum\', not \'%0\'",
[b]=q,
[f]=n,
[a]="(?: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)",
[g]="\'_Sat\' specifier is only valid on \'_Fract\' or \'_Accum\', not \'(.*?)\'",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"1d160b1945c2",1426249651,"[OPENMP] Additional sema analysis for \'omp atomic[ update]\'."}
[b]={"ab80f3c8b71e",1528988031,"[Fixed Point Arithmetic] Addition of the remaining fixed point types and their saturated equivalents"},
[k]={{F,1559,"#include \"clang/Basic/OpenCLImageTypes.def\"\n  // Only fixed point types can be saturated\n  if (DS.isTypeSpecSat() && !IsFixedPointType)\n    S.Diag(DS.getTypeSpecSatLoc(), diag::err_invalid_saturation_spec) << DS.getSpecifierName(DS.getTypeSpecType(), Context.getPrintingPolicy());"}}
},
},
["note_omp_collapse_ordered_expr"]={
["err_invalid_sign_spec"]={
[c]="as specified in ... clause...",
[j]="\'A\' cannot be signed or unsigned",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="as specified in %select{\'collapse\'|\'ordered\'|\'collapse\' and \'ordered\'}0 clause%select{||s}0",
[e]="\'%0\' cannot be signed or unsigned",
[b]=q,
[f]=n,
[a]="as specified in (?:\'collapse\'|\'ordered\'|\'collapse\' and \'ordered\') clause(?:||s)",
[g]="\'(.*?)\' cannot be signed or unsigned",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"10e775f4a882",1438256176,"[OPENMP 4.1] Initial support for extended \'ordered\' clause."}
[b]={z,1236199783,A},
[k]={{G,1142,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // signed/unsigned are only valid with int/char/wchar_t/_Accum.\n  if (getTypeSpecSign() != TypeSpecifierSign::Unspecified) {\n    if (TypeSpecType == TST_unspecified)\n    else if (TypeSpecType != TST_int && TypeSpecType != TST_int128 && TypeSpecType != TST_char && TypeSpecType != TST_wchar && !IsFixedPointType && TypeSpecType != TST_bitint) {\n      S.Diag(TSSLoc, diag::err_invalid_sign_spec) << getSpecifierName((TST)TypeSpecType, Policy);"}}
},
},
["note_omp_conversion_here"]={
["err_invalid_storage_class_in_func_decl"]={
[c]="conversion to ... type A declared here",
[j]="invalid storage class specifier in function declarator",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="conversion to %select{integral|enumeration}0 type %1 declared here",
[e]="invalid storage class specifier in function declarator",
[b]=q,
[f]=n,
[a]="conversion to (?:integral|enumeration) type (.*?) declared here",
[g]="invalid storage class specifier in function declarator",
[g]=p,
[h]=a,
[e]=T,
[i]=s,
[i]={"568a833f68de",1394086519,"[OPENMP] Clause \'num_threads\'"}
[b]={z,1236199783,A},
[k]={{Q,1393,"/// ParseKNRParamDeclarations - Parse \'declaration-list[opt]\' which provides\n/// types for a function with a K&R-style identifier list for arguments.\nvoid Parser::ParseKNRParamDeclarations(Declarator &D) {\n  // Read all the argument declarations.\n  while (isDeclarationSpecifier(ImplicitTypenameContext::No)) {\n    // C99 6.9.1p6: Declarations shall contain no storage-class specifiers other\n    // than register.\n    if (DS.getStorageClassSpec() != DeclSpec::SCS_unspecified && DS.getStorageClassSpec() != DeclSpec::SCS_register) {\n      Diag(DS.getStorageClassSpecLoc(), diag::err_invalid_storage_class_in_func_decl);"},{Q,1397,"/// ParseKNRParamDeclarations - Parse \'declaration-list[opt]\' which provides\n/// types for a function with a K&R-style identifier list for arguments.\nvoid Parser::ParseKNRParamDeclarations(Declarator &D) {\n  // Read all the argument declarations.\n  while (isDeclarationSpecifier(ImplicitTypenameContext::No)) {\n    if (DS.getThreadStorageClassSpec() != DeclSpec::TSCS_unspecified) {\n      Diag(DS.getThreadStorageClassSpecLoc(), diag::err_invalid_storage_class_in_func_decl);"},{p,12876,"/// ActOnParamDeclarator - Called from Parser::ParseFunctionDeclarator()\n/// to introduce parameters into function prototype scope.\nDecl *Sema::ActOnParamDeclarator(Scope *S, Declarator &D) {\n  if (DS.getStorageClassSpec() == DeclSpec::SCS_register) {\n  } else if (getLangOpts().CPlusPlus && DS.getStorageClassSpec() == DeclSpec::SCS_auto) {\n  } else if (DS.getStorageClassSpec() != DeclSpec::SCS_unspecified) {\n    Diag(DS.getStorageClassSpecLoc(), diag::err_invalid_storage_class_in_func_decl);"}}
},
},
["note_omp_critical_hint_here"]={
["err_invalid_string_udl"]={
[c]="...\'hint\' clause with value \'A\'",
[j]="string literal with user-defined suffix cannot be used here",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{|previous }0\'hint\' clause with value \'%1\'",
[e]="string literal with user-defined suffix cannot be used here",
[b]=q,
[f]=n,
[a]="(?:|previous )\'hint\' clause with value \'(.*?)\'",
[g]="string literal with user\\-defined suffix cannot be used here",
[g]=p,
[h]=a,
[e]=T,
[i]=t,
[i]={"28c75417b2c4",1450167564,"[OPENMP 4.5] Parsing/sema for \'hint\' clause of \'critical\' directive."}
[b]={"d67aea28f6cb",1331004107,"User-defined literals: reject string and character UDLs in all places where the"},
[k]={{u,1421,"retry:\n  case tok::string_literal: {\n    if (LToken.hasUDSuffix()) {\n      Diags.Report(LToken.getLocation(), diag::err_invalid_string_udl);"},{rb,1314,"/// Handle a \\#line directive: C99 6.10.4.\n///\n/// The two acceptable forms are:\n/// \\verbatim\n///  # line digit-sequence\n///  # line digit-sequence \"s-char-sequence\"\n/// \\endverbatim\nvoid Preprocessor::HandleLineDirective() {\n  // If the StrTok is \"eod\", then it wasn\'t present.  Otherwise, it must be a\n  // string followed by eod.\n  if (StrTok.is(tok::eod))\n  else if (StrTok.isNot(tok::string_literal)) {\n  } else if (StrTok.hasUDSuffix()) {\n    Diag(StrTok, diag::err_invalid_string_udl);"},{rb,1462,"/// HandleDigitDirective - Handle a GNU line marker directive, whose syntax is\n/// one of the following forms:\n///\n///    # 42\n///    # 42 \"file\" (\'1\' | \'2\')?\n///     # 42 \"file\" (\'1\' | \'2\')? \'3\' \'4\'?\n///\nvoid Preprocessor::HandleDigitDirective(Token &DigitTok) {\n  // If the StrTok is \"eod\", then it wasn\'t present.  Otherwise, it must be a\n  // string followed by eod.\n  if (StrTok.is(tok::eod)) {\n  } else if (StrTok.isNot(tok::string_literal)) {\n  } else if (StrTok.hasUDSuffix()) {\n    Diag(StrTok, diag::err_invalid_string_udl);"},{rb,1548,"/// HandleIdentSCCSDirective - Handle a #ident/#sccs directive.\n///\nvoid Preprocessor::HandleIdentSCCSDirective(Token &Tok) {\n  if (StrTok.hasUDSuffix()) {\n    Diag(StrTok, diag::err_invalid_string_udl);"},{"clang/lib/Lex/Pragma.cpp",228,"/// Handle_Pragma - Read a _Pragma directive, slice it up, process it, then\n/// return the first token after the directive.  The _Pragma token has just\n/// been read into \'Tok\'.\nvoid Preprocessor::Handle_Pragma(Token &Tok) {\n  if (Tok.hasUDSuffix()) {\n    Diag(Tok, diag::err_invalid_string_udl);"},{"clang/lib/Lex/Pragma.cpp",572,"/// ParsePragmaPushOrPopMacro - Handle parsing of pragma push_macro/pop_macro.\n/// Return the IdentifierInfo* associated with the macro to push or pop.\nIdentifierInfo *Preprocessor::ParsePragmaPushOrPopMacro(Token &Tok) {\n  if (Tok.hasUDSuffix()) {\n    Diag(Tok, diag::err_invalid_string_udl);"},{"clang/lib/Lex/Preprocessor.cpp",1271,"bool Preprocessor::FinishLexStringLiteral(Token &Result, std::string &String, const char *DiagnosticTag, bool AllowMacroExpansion) {\n  do {\n    if (Result.hasUDSuffix())\n      Diag(Result, diag::err_invalid_string_udl);"},{q,1664,"ExprResult Sema::ActOnUnevaluatedStringLiteral(ArrayRef<Token> StringToks) {\n  if (!Literal.getUDSuffix().empty()) {\n    return ExprError(Diag(UDSuffixLoc, diag::err_invalid_string_udl));"},{q,1740,"/// ActOnStringLiteral - The specified tokens were lexed as pasted string\n/// fragments (e.g. \"foo\" \"bar\" L\"baz\").  The result string has to handle string\n/// concatenation ([C99 5.1.1.2, translation phase #6]), so it may come from\n/// multiple tokens.  However, the common case is that StringToks points to one\n/// string.\n///\nExprResult Sema::ActOnStringLiteral(ArrayRef<Token> StringToks, Scope *UDLScope) {\n  // Make sure we\'re allowed user-defined literals here.\n  if (!UDLScope)\n    return ExprError(Diag(UDSuffixLoc, diag::err_invalid_string_udl));"}}
},
},
["note_omp_critical_no_hint"]={
["err_invalid_suffix_constant"]={
[c]="...directive with no \'hint\' clause specified",
[j]="invalid suffix \'A\' on ... constant",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{|previous }0directive with no \'hint\' clause specified",
[e]="invalid suffix \'%0\' on %select{integer|floating|fixed-point}1 constant",
[b]=q,
[f]=n,
[a]="(?:|previous )directive with no \'hint\' clause specified",
[g]="invalid suffix \'(.*?)\' on (?:integer|floating|fixed\\-point) constant",
[g]=p,
[h]=a,
[e]=T,
[i]=t,
[i]={"28c75417b2c4",1450167564,"[OPENMP 4.5] Parsing/sema for \'hint\' clause of \'critical\' directive."}
[b]={"71a51ff10ee1",1447313810,"Use %select to merge two diagnostics that only differ in one word and are emitted in the same place...."},
[k]={{W,1032,"///      integer-constant: [C99 6.4.4.1]\n///        decimal-constant integer-suffix\n///        octal-constant integer-suffix\n///        hexadecimal-constant integer-suffix\n///        binary-literal integer-suffix [GNU, C++1y]\n///      user-defined-integer-literal: [C++11 lex.ext]\n///        decimal-literal ud-suffix\n///        octal-literal ud-suffix\n///        hexadecimal-literal ud-suffix\n///        binary-literal ud-suffix [GNU, C++1y]\n///      decimal-constant:\n///        nonzero-digit\n///        decimal-constant digit\n///      octal-constant:\n///        0\n///        octal-constant octal-digit\n///      hexadecimal-constant:\n///        hexadecimal-prefix hexadecimal-digit\n///        hexadecimal-constant hexadecimal-digit\n///      hexadecimal-prefix: one of\n///        0x 0X\n///      binary-literal:\n///        0b binary-digit\n///        0B binary-digit\n///        binary-literal binary-digit\n///      integer-suffix:\n///        unsigned-suffix [long-suffix]\n///        unsigned-suffix [long-long-suffix]\n///        long-suffix [unsigned-suffix]\n///        long-long-suffix [unsigned-sufix]\n///      nonzero-digit:\n///        1 2 3 4 5 6 7 8 9\n///      octal-digit:\n///        0 1 2 3 4 5 6 7\n///      hexadecimal-digit:\n///        0 1 2 3 4 5 6 7 8 9\n///        a b c d e f\n///        A B C D E F\n///      binary-digit:\n///        0\n///        1\n///      unsigned-suffix: one of\n///        u U\n///      long-suffix: one of\n///        l L\n///      long-long-suffix: one of\n///        ll LL\n///\n///      floating-constant: [C99 6.4.4.2]\n///        TODO: add rules...\n///\nNumericLiteralParser::NumericLiteralParser(StringRef TokSpelling, SourceLocation TokLoc, const SourceManager &SM, const LangOptions &LangOpts, const TargetInfo &Target, DiagnosticsEngine &Diags) : SM(SM), LangOpts(LangOpts), Diags(Diags), ThisTokBegin(TokSpelling.begin()), ThisTokEnd(TokSpelling.end()) {\n  // \"i\", \"if\", and \"il\" are user-defined suffixes in C++1y.\n  if (s != ThisTokEnd || isImaginary) {\n    if (s != ThisTokEnd) {\n      Diags.Report(Lexer::AdvanceToTokenCharacter(TokLoc, SuffixBegin - ThisTokBegin, SM, LangOpts), diag::err_invalid_suffix_constant) << StringRef(SuffixBegin, ThisTokEnd - SuffixBegin) << (isFixedPointConstant ? 2 : isFPConstant);"}}
},
},
["note_omp_ctx_compatible_set_and_selector_for_property"]={
["err_invalid_super_scope"]={
[c]="the context property \'A\' can be nested in the context selector \'B\' which is nested in the context set \'C\'; try \'match(D={E(F)})\'",
[j]="invalid use of \'__super\', this keyword can only be used inside class or member function scope",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="the context property \'%0\' can be nested in the context selector \'%1\' which is nested in the context set \'%2\'; try \'match(%2={%1(%0)})\'",
[e]="invalid use of \'__super\', this keyword can only be used inside class or member function scope",
[b]=q,
[f]=n,
[a]="the context property \'(.*?)\' can be nested in the context selector \'(.*?)\' which is nested in the context set \'(.*?)\'; try \'match\\((.*?)\\=\\{(.*?)\\((.*?)\\)\\}\\)\'",
[g]="invalid use of \'__super\', this keyword can only be used inside class or member function scope",
[g]=p,
[h]=a,
[e]=y,
[i]=o,
[i]={Pb,1576809732,Qb}
[b]={"67860249e064",1411691300,"-ms-extensions: Implement __super scope specifier (PR13236)."},
[k]={{cb,309,"bool Sema::ActOnSuperScopeSpecifier(SourceLocation SuperLoc, SourceLocation ColonColonLoc, CXXScopeSpec &SS) {\n  if (!RD) {\n    Diag(SuperLoc, diag::err_invalid_super_scope);"}}
},
},
["note_omp_ctx_compatible_set_for_selector"]={
["err_invalid_this_use"]={
[c]="the context selector \'A\' can be nested in the context set \'B\'; try \'match(C={D...})\'",
[j]="invalid use of \'this\' outside of a non-static member function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="the context selector \'%0\' can be nested in the context set \'%1\'; try \'match(%1={%0%select{|(property)}2})\'",
[e]="invalid use of \'this\' outside of a non-static member function",
[b]=q,
[f]=n,
[a]="the context selector \'(.*?)\' can be nested in the context set \'(.*?)\'; try \'match\\((.*?)\\=\\{(.*?)(?:|\\(property\\))\\}\\)\'",
[g]="invalid use of \'this\' outside of a non\\-static member function",
[g]=p,
[h]=a,
[e]=y,
[i]=o,
[i]={Pb,1576809732,Qb}
[b]={x,1237025389,w},
[k]={{B,1251,"ExprResult Sema::ActOnCXXThis(SourceLocation Loc) {\n  if (ThisTy.isNull())\n    return Diag(Loc, diag::err_invalid_this_use);"}}
},
},
["note_omp_declare_variant_ctx_continue_here"]={
["err_invalid_thread"]={
[c]="the ignored ... spans until here",
[j]="\'A\' is only allowed on variable declarations",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="the ignored %select{set|selector|property}0 spans until here",
[e]="\'%0\' is only allowed on variable declarations",
[b]=q,
[f]=n,
[a]="the ignored (?:set|selector|property) spans until here",
[g]="\'(.*?)\' is only allowed on variable declarations",
[g]=p,
[h]=a,
[e]=y,
[i]=o,
[i]={Pb,1576809732,Qb}
[b]={"d5c0eeda7285",1240172875,"Add more thorough/correct checking for invalid __thread specifiers."},
[k]={{p,8507,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n  if (DeclSpec::TSCS TSCS = D.getDeclSpec().getThreadStorageClassSpec())\n    Diag(D.getDeclSpec().getThreadStorageClassSpecLoc(), diag::err_invalid_thread) << DeclSpec::getSpecifierName(TSCS);"},{p,12881,"/// ActOnParamDeclarator - Called from Parser::ParseFunctionDeclarator()\n/// to introduce parameters into function prototype scope.\nDecl *Sema::ActOnParamDeclarator(Scope *S, Declarator &D) {\n  if (DeclSpec::TSCS TSCS = DS.getThreadStorageClassSpec())\n    Diag(DS.getThreadStorageClassSpecLoc(), diag::err_invalid_thread) << DeclSpec::getSpecifierName(TSCS);"},{p,15762,"/// HandleField - Analyze a field of a C struct or a C++ data member.\n///\nFieldDecl *Sema::HandleField(Scope *S, RecordDecl *Record, SourceLocation DeclStart, Declarator &D, Expr *BitWidth, InClassInitStyle InitStyle, AccessSpecifier AS) {\n  if (DeclSpec::TSCS TSCS = D.getDeclSpec().getThreadStorageClassSpec())\n    Diag(D.getDeclSpec().getThreadStorageClassSpecLoc(), diag::err_invalid_thread) << DeclSpec::getSpecifierName(TSCS);"},{r,16117,"/// HandleMSProperty - Analyze a __delcspec(property) field of a C++ class.\n///\nMSPropertyDecl *Sema::HandleMSProperty(Scope *S, RecordDecl *Record, SourceLocation DeclStart, Declarator &D, Expr *BitWidth, InClassInitStyle InitStyle, AccessSpecifier AS, const ParsedAttr &MSPropertyAttr) {\n  if (DeclSpec::TSCS TSCS = D.getDeclSpec().getThreadStorageClassSpec())\n    Diag(D.getDeclSpec().getThreadStorageClassSpecLoc(), diag::err_invalid_thread) << DeclSpec::getSpecifierName(TSCS);"},{hb,4334,"Decl *Sema::ActOnObjCExceptionDecl(Scope *S, Declarator &D) {\n  if (DeclSpec::TSCS TSCS = D.getDeclSpec().getThreadStorageClassSpec())\n    Diag(D.getDeclSpec().getThreadStorageClassSpecLoc(), diag::err_invalid_thread) << DeclSpec::getSpecifierName(TSCS);"}}
},
},
["note_omp_declare_variant_ctx_is_a"]={
["err_invalid_token_after_declarator_suggest_equal"]={
[c]="\'A\' is a context ... not a context ...",
[j]="invalid A at end of declaration; did you mean \'=\'?",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'%0\' is a context %select{set|selector|property}1 not a context %select{set|selector|property}2",
[e]="invalid %0 at end of declaration; did you mean \'=\'?",
[b]=q,
[f]=n,
[a]="\'(.*?)\' is a context (?:set|selector|property) not a context (?:set|selector|property)",
[g]="invalid (.*?) at end of declaration; did you mean \'\\=\'\\?",
[g]=p,
[h]=a,
[e]=y,
[i]=s,
[i]={Pb,1576809732,Qb}
[b]={"4972a6dd080f",1327010511,"Extend the error of invalid token after declarations to include fixits for "},
[k]={{Q,2008,"bool Parser::isTokenEqualOrEqualTypo() {\n  case tok::equalequal:          // ==\n    Diag(Tok, diag::err_invalid_token_after_declarator_suggest_equal) << Kind << FixItHint::CreateReplacement(SourceRange(Tok.getLocation()), \"=\");"}}
},
},
["note_omp_declare_variant_ctx_options"]={
["err_invalid_token_after_toplevel_declarator"]={
[c]="context ... options are: A",
[j]="expected \';\' after top level declarator",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="context %select{set|selector|property}0 options are: %1",
[e]="expected \';\' after top level declarator",
[b]=q,
[f]=n,
[a]="context (?:set|selector|property) options are\\: (.*?)",
[g]="expected \';\' after top level declarator",
[g]=p,
[h]=a,
[e]=y,
[i]=s,
[i]={Pb,1576809732,Qb}
[b]={z,1236199783,A},
[k]={{C,2110,"/// ParseDeclGroup - Having concluded that this is either a function\n/// definition or a group of object declarations, actually parse the\n/// result.\nParser::DeclGroupPtrTy Parser::ParseDeclGroup(ParsingDeclSpec &DS, DeclaratorContext Context, ParsedAttributes &Attrs, SourceLocation *DeclEnd, ForRangeInit *FRI) {\n  if (ExpectSemi && ExpectAndConsumeSemi(Context == DeclaratorContext::File ? diag::err_invalid_token_after_toplevel_declarator : diag::err_expected_semi_declaration)) {"}}
},
},
["note_omp_declare_variant_ctx_try"]={
["err_invalid_type_for_program_scope_var"]={
[c]="try \'match(A={BC})\'",
[j]="the A type cannot be used to declare a program scope variable",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="try \'match(%0={%1%2})\'",
[e]="the %0 type cannot be used to declare a program scope variable",
[b]=q,
[f]=n,
[a]="try \'match\\((.*?)\\=\\{(.*?)(.*?)\\}\\)\'",
[g]="the (.*?) type cannot be used to declare a program scope variable",
[g]=p,
[h]=a,
[e]=y,
[i]="Related Result Type Issue",
[i]={Pb,1576809732,Qb}
[b]={"c211c6c8844a",1480414900,"[OpenCL] Prohibit using reserve_id_t in program scope."},
[k]={{p,6526,"/// Returns true if there hasn\'t been any invalid type diagnosed.\nstatic bool diagnoseOpenCLTypes(Sema &Se, VarDecl *NewVD) {\n  // OpenCL v1.2 s6.9.r:\n  // The event type cannot be used to declare a program scope variable.\n  // OpenCL v2.0 s6.9.q:\n  // The clk_event_t and reserve_id_t types cannot be declared in program\n  // scope.\n  if (NewVD->hasGlobalStorage() && !NewVD->isStaticLocal()) {\n    if (R->isReserveIDT() || R->isClkEventT() || R->isEventT()) {\n      Se.Diag(NewVD->getLocation(), diag::err_invalid_type_for_program_scope_var) << R;"}}
},
},
["note_omp_declare_variant_ctx_used_here"]={
["err_invalid_ucn_name"]={
[c]="the previous context ... \'A\' used here",
[j]="\'A\' is not a valid Unicode character name",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="the previous context %select{set|selector|property}0 \'%1\' used here",
[e]="\'%0\' is not a valid Unicode character name",
[b]=q,
[f]=n,
[a]="the previous context (?:set|selector|property) \'(.*?)\' used here",
[g]="\'(.*?)\' is not a valid Unicode character name",
[g]=p,
[h]=a,
[e]=y,
[i]=t,
[i]={"70d2e5427ed3",1570556872,"[OPENMP50]Do not allow multiple same context traits in the same context"}
[b]={M,1625925174,N},
[k]={{"clang/lib/Lex/Lexer.cpp",3163,"std::optional<uint32_t> Lexer::tryReadNamedUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n  if (!Match) {\n    if (Diagnose) {\n      Diag(StartName, diag::err_invalid_ucn_name) << StringRef(Buffer.data(), Buffer.size()) << makeCharRange(*this, StartName, CurPtr - CharSize);"},{W,471,"static void DiagnoseInvalidUnicodeCharacterName(DiagnosticsEngine *Diags, const LangOptions &Features, FullSourceLoc Loc, const char *TokBegin, const char *TokRangeBegin, const char *TokRangeEnd, llvm::StringRef Name) {\n  Diag(Diags, Features, Loc, TokBegin, TokRangeBegin, TokRangeEnd, diag::err_invalid_ucn_name) << Name;"}}
},
},
["note_omp_default_dsa_none"]={
["err_invalid_use_of_array_type"]={
[c]="explicit data sharing attribute requested here",
[j]="an array type is not allowed here",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="explicit data sharing attribute requested here",
[e]="an array type is not allowed here",
[b]=q,
[f]=n,
[a]="explicit data sharing attribute requested here",
[g]="an array type is not allowed here",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"cf9e7a282b74",1557164962,"[OPENMP]Fix PR41768: check DSA for globals with `default(none)` clauses."}
[b]={x,1237025389,w},
[k]={{B,3396,"/// Check the use of the given variable as a C++ condition in an if,\n/// while, do-while, or switch statement.\nExprResult Sema::CheckConditionVariable(VarDecl *ConditionVar, SourceLocation StmtLoc, ConditionKind CK) {\n  // C++ [stmt.select]p2:\n  //  The declarator shall not specify a function or an array.\n  if (T->isFunctionType())\n  else if (T->isArrayType())\n    return ExprError(Diag(ConditionVar->getLocation(), diag::err_invalid_use_of_array_type) << ConditionVar->getSourceRange());"}}
},
},
["note_omp_defaultmap_attr_none"]={
["err_invalid_use_of_function_type"]={
[c]="explicit data sharing attribute, data mapping attribute, or is_device_ptr clause requested here",
[j]="a function type is not allowed here",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="explicit data sharing attribute, data mapping attribute, or is_device_ptr clause requested here",
[e]="a function type is not allowed here",
[b]=q,
[f]=n,
[a]="explicit data sharing attribute, data mapping attribute, or is_device_ptr clause requested here",
[g]="a function type is not allowed here",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"c094e7dc4b3f",1573050950,"[SYCL] Add sycl_kernel attribute for accelerated code outlining"}
[b]={x,1237025389,w},
[k]={{r,15572,"/// ActOnCXXConditionDeclarationExpr - Parsed a condition declaration of a\n/// C++ if/switch/while/for statement.\n/// e.g: \"if (int x = f()) {...}\"\nDeclResult Sema::ActOnCXXConditionDeclaration(Scope *S, Declarator &D) {\n  if (isa<FunctionDecl>(Dcl)) { // The declarator shall not specify a function.\n    Diag(Dcl->getLocation(), diag::err_invalid_use_of_function_type) << D.getSourceRange();"},{B,3394,"/// Check the use of the given variable as a C++ condition in an if,\n/// while, do-while, or switch statement.\nExprResult Sema::CheckConditionVariable(VarDecl *ConditionVar, SourceLocation StmtLoc, ConditionKind CK) {\n  // C++ [stmt.select]p2:\n  //  The declarator shall not specify a function or an array.\n  if (T->isFunctionType())\n    return ExprError(Diag(ConditionVar->getLocation(), diag::err_invalid_use_of_function_type) << ConditionVar->getSourceRange());"}}
},
},
["note_omp_directive_here"]={
["err_invalid_utf8"]={
[c]="\'A\' directive found here",
[j]="source file is not valid UTF-8",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'%0\' directive found here",
[e]="source file is not valid UTF-8",
[b]=q,
[f]=n,
[a]="\'(.*?)\' directive found here",
[g]="source file is not valid UTF\\-8",
[g]=p,
[h]=a,
[e]=T,
[i]=t,
[i]={Ib,1615397021,Hb}
[b]={"7f43dddae066",1359060646,"Handle universal character names and Unicode characters outside of literals."},
[k]={{"clang/lib/Lex/Lexer.cpp",4062,"LexStart:\n  default: {\n    Diag(CurPtr, diag::err_invalid_utf8);"}}
},
},
["note_omp_exits_structured_block"]={
["err_invalid_var_template_spec_type"]={
[c]="jump exits scope of OpenMP structured block",
[j]="type A of ... of B does not match expected type C",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump exits scope of OpenMP structured block",
[e]="type %2 of %select{explicit instantiation|explicit specialization|partial specialization|redeclaration}0 of %1 does not match expected type %3",
[b]=q,
[f]=n,
[a]="jump exits scope of OpenMP structured block",
[g]="type (.*?) of (?:explicit instantiation|explicit specialization|partial specialization|redeclaration) of (.*?) does not match expected type (.*?)",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={ob,1582847864,nb}
[b]={"39a1e507ff0b",1375750985,"Started implementing variable templates. Top level declarations should be fully supported, up to som..."},
[k]={{K,8698,"DeclResult Sema::ActOnExplicitInstantiation(Scope *S, SourceLocation ExternLoc, SourceLocation TemplateLoc, Declarator &D) {\n  if (!R->isFunctionType()) {\n    // Check the new variable specialization against the parsed input.\n    if (PrevTemplate && !Context.hasSameType(Prev->getType(), R)) {\n      Diag(T->getTypeLoc().getBeginLoc(), diag::err_invalid_var_template_spec_type) << 0 << PrevTemplate << R << Prev->getType();"}}
},
},
["note_omp_explicit_dsa"]={
["err_invalid_vector_bool_decl_spec"]={
[c]="defined as A",
[j]="cannot use \'A\' with \'__vector bool\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="defined as %0",
[e]="cannot use \'%0\' with \'__vector bool\'",
[b]=q,
[f]=n,
[a]="defined as (.*?)",
[g]="cannot use \'(.*?)\' with \'__vector bool\'",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"d4183dabd7a9",1378212952,"OpenMP: Data-sharing attributes analysis and clause \'shared\'"}
[b]={"37141f4fb4ac",1277272824,"improve altivec vector bool/pixel support, patch by Anton Yartsev"},
[k]={{G,850,"bool DeclSpec::SetTypeAltiVecBool(bool isAltiVecBool, SourceLocation Loc, const char *&PrevSpec, unsigned &DiagID, const PrintingPolicy &Policy) {\n  if (!TypeAltiVecVector || TypeAltiVecBool || (TypeSpecType != TST_unspecified)) {\n    DiagID = diag::err_invalid_vector_bool_decl_spec;"},{G,1081,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // Validate and finalize AltiVec vector declspec.\n  if (TypeAltiVecVector) {\n    if (TypeAltiVecBool) {\n      // Sign specifiers are not allowed with vector bool. (PIM 2.1)\n      if (getTypeSpecSign() != TypeSpecifierSign::Unspecified) {\n        S.Diag(TSSLoc, diag::err_invalid_vector_bool_decl_spec) << getSpecifierName(getTypeSpecSign());"},{G,1087,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // Validate and finalize AltiVec vector declspec.\n  if (TypeAltiVecVector) {\n    if (TypeAltiVecBool) {\n      // Only char/int are valid with vector bool prior to Power10.\n      // Power10 adds instructions that produce vector bool data\n      // for quadwords as well so allow vector bool __int128.\n      if (((TypeSpecType != TST_unspecified) && (TypeSpecType != TST_char) && (TypeSpecType != TST_int) && (TypeSpecType != TST_int128)) || TypeAltiVecPixel) {\n        S.Diag(TSTLoc, diag::err_invalid_vector_bool_decl_spec) << (TypeAltiVecPixel ? \"__pixel\" : getSpecifierName((TST)TypeSpecType, Policy));"},{G,1095,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // Validate and finalize AltiVec vector declspec.\n  if (TypeAltiVecVector) {\n    if (TypeAltiVecBool) {\n      // Only \'short\' and \'long long\' are valid with vector bool. (PIM 2.1)\n      if ((getTypeSpecWidth() != TypeSpecifierWidth::Unspecified) && (getTypeSpecWidth() != TypeSpecifierWidth::Short) && (getTypeSpecWidth() != TypeSpecifierWidth::LongLong))\n        S.Diag(TSWRange.getBegin(), diag::err_invalid_vector_bool_decl_spec) << getSpecifierName(getTypeSpecWidth());"}}
},
},
["note_omp_flush_order_clause_here"]={
["err_invalid_vector_bool_int128_decl_spec"]={
[c]="memory order clause \'A\' is specified here",
[j]="use of \'__int128\' with \'__vector bool\' requires VSX support enabled (on POWER10 or later)",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="memory order clause \'%0\' is specified here",
[e]="use of \'__int128\' with \'__vector bool\' requires VSX support enabled (on POWER10 or later)",
[b]=q,
[f]=n,
[a]="memory order clause \'(.*?)\' is specified here",
[g]="use of \'__int128\' with \'__vector bool\' requires VSX support enabled \\(on POWER10 or later\\)",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={Pb,1576809732,Qb}
[b]={"14f6bfcb52e7",1582847864,"[clang] Implement objc_non_runtime_protocol to remove protocol metadata"},
[k]={{G,1091,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // Validate and finalize AltiVec vector declspec.\n  if (TypeAltiVecVector) {\n    if (TypeAltiVecBool) {\n      // vector bool __int128 requires Power10.\n      if ((TypeSpecType == TST_int128) && (!S.Context.getTargetInfo().hasFeature(\"power10-vector\")))\n        S.Diag(TSTLoc, diag::err_invalid_vector_bool_int128_decl_spec);"}}
},
},
["note_omp_implicit_dsa"]={
["err_invalid_vector_decl_spec_combination"]={
[c]="implicitly determined as A",
[j]="cannot combine with previous \'A\' declaration specifier. \'__vector\' must be first",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="implicitly determined as %0",
[e]="cannot combine with previous \'%0\' declaration specifier. \'__vector\' must be first",
[b]=q,
[f]=n,
[a]="implicitly determined as (.*?)",
[g]="cannot combine with previous \'(.*?)\' declaration specifier\\. \'__vector\' must be first",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"bae9a793fdf7",1403865426,"[OPENMP] Parsing and sema analysis for \'copyprivate\' clause."}
[b]={"2233460de6ed",1265328742,"First stage of adding AltiVec support"},
[k]={{G,808,"bool DeclSpec::SetTypeAltiVecVector(bool isAltiVecVector, SourceLocation Loc, const char *&PrevSpec, unsigned &DiagID, const PrintingPolicy &Policy) {\n  if (TypeSpecType != TST_unspecified) {\n    DiagID = diag::err_invalid_vector_decl_spec_combination;"}}
},
},
["note_omp_invalid_length_on_this_ptr_mapping"]={
["err_invalid_vector_double_decl_spec"]={
[c]="expected length on mapping of \'this\' array section expression to be \'1\'",
[j]="use of \'double\' with \'__vector\' requires VSX support to be enabled (available on POWER7 or later)",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="expected length on mapping of \'this\' array section expression to be \'1\'",
[e]="use of \'double\' with \'__vector\' requires VSX support to be enabled (available on POWER7 or later)",
[b]=q,
[f]=n,
[a]="expected length on mapping of \'this\' array section expression to be \'1\'",
[g]="use of \'double\' with \'__vector\' requires VSX support to be enabled \\(available on POWER7 or later\\)",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"e13b1e3299c1",1546457328,"[OpenMP] Added support for explicit mapping of classes using \'this\' pointer. Differential revision: ..."}
[b]={"691e01d94e53",1414783164,"[PowerPC] Initial VSX intrinsic support, with min/max for vector double"},
[k]={{G,1106,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // Validate and finalize AltiVec vector declspec.\n  if (TypeAltiVecVector) {\n    if (TypeAltiVecBool) {\n    } else if (TypeSpecType == TST_double) {\n      // vector long double and vector long long double are never allowed.\n      // vector double is OK for Power7 and later, and ZVector.\n      if (getTypeSpecWidth() == TypeSpecifierWidth::Long || getTypeSpecWidth() == TypeSpecifierWidth::LongLong)\n      else if (!S.Context.getTargetInfo().hasFeature(\"vsx\") && !S.getLangOpts().ZVector)\n        S.Diag(TSTLoc, diag::err_invalid_vector_double_decl_spec);"}}
},
},
["note_omp_invalid_lower_bound_on_this_ptr_mapping"]={
["err_invalid_vector_float_decl_spec"]={
[c]="expected lower bound on mapping of \'this\' array section expression to be \'0\' or not specified",
[j]="cannot use \'float\' with \'__vector\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="expected lower bound on mapping of \'this\' array section expression to be \'0\' or not specified",
[e]="cannot use \'float\' with \'__vector\'",
[b]=q,
[f]=n,
[a]="expected lower bound on mapping of \'this\' array section expression to be \'0\' or not specified",
[g]="cannot use \'float\' with \'__vector\'",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"e13b1e3299c1",1546457328,"[OpenMP] Added support for explicit mapping of classes using \'this\' pointer. Differential revision: ..."}
[b]={"3c5038a535c8",1438265316,"Add support for System z vector language extensions"},
[k]={{G,1111,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // Validate and finalize AltiVec vector declspec.\n  if (TypeAltiVecVector) {\n    if (TypeAltiVecBool) {\n    } else if (TypeSpecType == TST_double) {\n    } else if (TypeSpecType == TST_float) {\n      // vector float is unsupported for ZVector unless we have the\n      // vector-enhancements facility 1 (ISA revision 12).\n      if (S.getLangOpts().ZVector && !S.Context.getTargetInfo().hasFeature(\"arch12\"))\n        S.Diag(TSTLoc, diag::err_invalid_vector_float_decl_spec);"}}
},
},
["note_omp_invalid_subscript_on_this_ptr_map"]={
["err_invalid_vector_int128_decl_spec"]={
[c]="expected \'this\' subscript expression on map clause to be \'this[0]\'",
[j]="use of \'__int128\' with \'__vector\' requires extended Altivec support (available on POWER8 or later)",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="expected \'this\' subscript expression on map clause to be \'this[0]\'",
[e]="use of \'__int128\' with \'__vector\' requires extended Altivec support (available on POWER8 or later)",
[b]=q,
[f]=n,
[a]="expected \'this\' subscript expression on map clause to be \'this\\[0\\]\'",
[g]="use of \'__int128\' with \'__vector\' requires extended Altivec support \\(available on POWER8 or later\\)",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"e13b1e3299c1",1546457328,"[OpenMP] Added support for explicit mapping of classes using \'this\' pointer. Differential revision: ..."}
[b]={"3dbcea8b957a",1615397021,"Reland [clang] Check unsupported types in expressions"},
[k]={{G,1076,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // Validate and finalize AltiVec vector declspec.\n  if (TypeAltiVecVector) {\n    // No vector __int128 prior to Power8.\n    if ((TypeSpecType == TST_int128) && !S.Context.getTargetInfo().hasFeature(\"power8-vector\"))\n      S.Diag(TSTLoc, diag::err_invalid_vector_int128_decl_spec);"}}
},
},
["note_omp_loop_cond_requres_compatible_incr"]={
["err_invalid_vector_long_decl_spec"]={
[c]="loop step is expected to be ... due to this condition",
[j]="cannot use \'long\' with \'__vector\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="loop step is expected to be %select{negative|positive}0 due to this condition",
[e]="cannot use \'long\' with \'__vector\'",
[b]=q,
[f]=n,
[a]="loop step is expected to be (?:negative|positive) due to this condition",
[g]="cannot use \'long\' with \'__vector\'",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"a8e9d2eccc6e",1401790607,"[OPENMP] Loop canonical form analysis (Sema)"}
[b]={"3c5038a535c8",1438265316,"Add support for System z vector language extensions"},
[k]={{G,1121,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // Validate and finalize AltiVec vector declspec.\n  if (TypeAltiVecVector) {\n    if (TypeAltiVecBool) {\n    } else if (TypeSpecType == TST_double) {\n    } else if (TypeSpecType == TST_float) {\n    } else if (getTypeSpecWidth() == TypeSpecifierWidth::Long) {\n      // Vector long is unsupported for ZVector, or without VSX, and deprecated\n      // for AltiVec.\n      // It has also been historically deprecated on AIX (as an alias for\n      // \"vector int\" in both 32-bit and 64-bit modes). It was then made\n      // unsupported in the Clang-based XL compiler since the deprecated type\n      // has a number of conflicting semantics and continuing to support it\n      // is a disservice to users.\n      if (S.getLangOpts().ZVector || !S.Context.getTargetInfo().hasFeature(\"vsx\") || S.Context.getTargetInfo().getTriple().isOSAIX())\n        S.Diag(TSWRange.getBegin(), diag::err_invalid_vector_long_decl_spec);"}}
},
},
["note_omp_marked_declare_variant_here"]={
["err_invalid_vector_long_double_decl_spec"]={
[c]="marked as \'declare variant\' here",
[j]="cannot use \'long double\' with \'__vector\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="marked as \'declare variant\' here",
[e]="cannot use \'long double\' with \'__vector\'",
[b]=q,
[f]=n,
[a]="marked as \'declare variant\' here",
[g]="cannot use \'long double\' with \'__vector\'",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={kb,1567434909,mb}
[b]={"691e01d94e53",1414783164,"[PowerPC] Initial VSX intrinsic support, with min/max for vector double"},
[k]={{G,1104,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // Validate and finalize AltiVec vector declspec.\n  if (TypeAltiVecVector) {\n    if (TypeAltiVecBool) {\n    } else if (TypeSpecType == TST_double) {\n      // vector long double and vector long long double are never allowed.\n      // vector double is OK for Power7 and later, and ZVector.\n      if (getTypeSpecWidth() == TypeSpecifierWidth::Long || getTypeSpecWidth() == TypeSpecifierWidth::LongLong)\n        S.Diag(TSWRange.getBegin(), diag::err_invalid_vector_long_double_decl_spec);"}}
},
},
["note_omp_marked_device_type_here"]={
["err_invalid_vector_long_long_decl_spec"]={
[c]="marked as \'device_type(A)\' here",
[j]="use of \'long long\' with \'__vector\' requires VSX support (available on POWER7 or later) to be enabled",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="marked as \'device_type(%0)\' here",
[e]="use of \'long long\' with \'__vector\' requires VSX support (available on POWER7 or later) to be enabled",
[b]=q,
[f]=n,
[a]="marked as \'device_type\\((.*?)\\)\' here",
[g]="use of \'long long\' with \'__vector\' requires VSX support \\(available on POWER7 or later\\) to be enabled",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"729e242a7972",1566576674,"[OPENMP5.0]Add support for device_type clause in declare target"}
[b]={"2351bec3ead0",1425413323,"[PowerPC]Activate \"vector bool long long\" (and alternate spellings) as a valid type for Altivec supp..."},
[k]={{G,1072,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  // Validate and finalize AltiVec vector declspec.\n  if (TypeAltiVecVector) {\n    // No vector long long without VSX (or ZVector).\n    if ((getTypeSpecWidth() == TypeSpecifierWidth::LongLong) && !S.Context.getTargetInfo().hasFeature(\"vsx\") && !S.getLangOpts().ZVector)\n      S.Diag(TSWRange.getBegin(), diag::err_invalid_vector_long_long_decl_spec);"}}
},
},
["note_omp_nested_statement_here"]={
["err_invalid_vfs_overlay"]={
[c]="... outside teams construct here",
[j]="invalid virtual filesystem overlay file \'A\'",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="%select{statement|directive}0 outside teams construct here",
[e]="invalid virtual filesystem overlay file \'%0\'",
[b]=q,
[f]=J,
[a]="(?:statement|directive) outside teams construct here",
[g]="invalid virtual filesystem overlay file \'(.*?)\'",
[g]=p,
[h]=a,
[e]=T,
[i]=a,
[i]={"941bbec6f4d9",1412676813,"[OPENMP] \'omp teams\' directive basic support."}
[b]={"801272a98c71",1393352627,"Add a driver option -ivfsoverlay"},
[k]={{Bb,3940,"IntrusiveRefCntPtr<llvm::vfs::FileSystem> clang::createVFSFromOverlayFiles(ArrayRef<std::string> VFSOverlayFiles, DiagnosticsEngine &Diags, IntrusiveRefCntPtr<llvm::vfs::FileSystem> BaseFS) {\n  // earlier vfs files are on the bottom\n  for (const auto &File : VFSOverlayFiles) {\n    if (!FS) {\n      Diags.Report(diag::err_invalid_vfs_overlay) << File;"}}
},
},
["note_omp_nested_teams_construct_here"]={
["err_invalid_width_spec"]={
[c]="nested teams construct here",
[j]="\'... A\' is invalid",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="nested teams construct here",
[e]="\'%select{|short|long|long long}0 %1\' is invalid",
[b]=q,
[f]=n,
[a]="nested teams construct here",
[g]="\'(?:|short|long|long long) (.*?)\' is invalid",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"941bbec6f4d9",1412676813,"[OPENMP] \'omp teams\' directive basic support."}
[b]={"54a6a68c706b",1447524968,"Merge some similar diagnostics using %select."},
[k]={{G,1157,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  case TypeSpecifierWidth::LongLong: // long long int\n    if (TypeSpecType == TST_unspecified)\n    else if (!(TypeSpecType == TST_int || (IsFixedPointType && getTypeSpecWidth() != TypeSpecifierWidth::LongLong))) {\n      S.Diag(TSWRange.getBegin(), diag::err_invalid_width_spec) << (int)TypeSpecWidth << getSpecifierName((TST)TypeSpecType, Policy);"},{G,1167,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n  case TypeSpecifierWidth::Long: // long double, long int\n    if (TypeSpecType == TST_unspecified)\n    else if (TypeSpecType != TST_int && TypeSpecType != TST_double && !IsFixedPointType) {\n      S.Diag(TSWRange.getBegin(), diag::err_invalid_width_spec) << (int)TypeSpecWidth << getSpecifierName((TST)TypeSpecType, Policy);"}}
},
},
["note_omp_nowait_clause_here"]={
["err_ivar_access_using_property_syntax_suggest"]={
[c]="\'nowait\' clause is here",
[j]="property A not found on object of type B; did you mean to access instance variable C?",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'nowait\' clause is here",
[e]="property %0 not found on object of type %1; did you mean to access instance variable %2?",
[b]=q,
[f]=n,
[a]="\'nowait\' clause is here",
[g]="property (.*?) not found on object of type (.*?); did you mean to access instance variable (.*?)\\?",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"3255bf3aacbb",1421644846,"[OPENMP] Disable copyprivate an nowait clauses in \'single\' directive."}
[b]={"c297cd883641",1309219252,"Provide fix-it for \'.\' <-> \'->\' for Objective-C ivar/property access."},
[k]={{O,1731,"/// HandleExprPropertyRefExpr - Handle foo.bar where foo is a pointer to an\n/// objective C interface.  This is a property reference expression.\nExprResult Sema::HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT, Expr *BaseExpr, SourceLocation OpLoc, DeclarationName MemberName, SourceLocation MemberLoc, SourceLocation SuperLoc, QualType SuperType, bool Super) {\n  if (ObjCIvarDecl *Ivar = IFace->lookupInstanceVariable(Member, ClassDeclared)) {\n    Diag(MemberLoc, diag::err_ivar_access_using_property_syntax_suggest) << MemberName << QualType(OPT, 0) << Ivar->getDeclName() << FixItHint::CreateReplacement(OpLoc, \"->\");"}}
},
},
["note_omp_ordered_param"]={
["err_ivar_in_superclass_use"]={
[c]="\'ordered\' clause...",
[j]="property A attempting to use instance variable B declared in super class C",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'ordered\' clause%select{| with specified parameter}0",
[e]="property %0 attempting to use instance variable %1 declared in super class %2",
[b]=q,
[f]=n,
[a]="\'ordered\' clause(?:| with specified parameter)",
[g]="property (.*?) attempting to use instance variable (.*?) declared in super class (.*?)",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"346265e3bcee",1443177432,"[OPENMP 4.1] Add \'threads\' clause for \'#pragma omp ordered\'."}
[b]={gb,1480718311,ib},
[k]={{Gb,1108,"/// ActOnPropertyImplDecl - This routine performs semantic checks and\n/// builds the AST node for a property implementation declaration; declared\n/// as \\@synthesize or \\@dynamic.\n///\nDecl *Sema::ActOnPropertyImplDecl(Scope *S, SourceLocation AtLoc, SourceLocation PropertyLoc, bool Synthesize, IdentifierInfo *PropertyId, IdentifierInfo *PropertyIvar, SourceLocation PropertyIvarLoc, ObjCPropertyQueryKind QueryKind) {\n  // Check that we have a valid, previously declared ivar for @synthesize\n  if (Synthesize) {\n    if (!Ivar) {\n    } else if (getLangOpts().ObjCRuntime.isNonFragile() && !declaresSameEntity(ClassDeclared, IDecl)) {\n      Diag(PropertyDiagLoc, diag::err_ivar_in_superclass_use) << property->getDeclName() << Ivar->getDeclName() << ClassDeclared->getDeclName();"}}
},
},
["note_omp_predefined_allocator"]={
["err_ivar_reference_type"]={
[c]="predefined trait \'A\' used here",
[j]="instance variables cannot be of reference type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="predefined trait \'%0\' used here",
[e]="instance variables cannot be of reference type",
[b]=q,
[f]=n,
[a]="predefined trait \'(.*?)\' used here",
[g]="instance variables cannot be of reference type",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={wb,1576908663,vb}
[b]={"0103d67f9816",1272319623,"Diagnose declaration of reference typed ivars."},
[k]={{p,16093,"/// ActOnIvar - Each ivar field of an objective-c class is passed into this\n/// in order to create an IvarDecl object for it.\nDecl *Sema::ActOnIvar(Scope *S, SourceLocation DeclStart, Declarator &D, Expr *BitfieldWidth, tok::ObjCKeywordKind Visibility) {\n  if (T->isReferenceType()) {\n    Diag(Loc, diag::err_ivar_reference_type);"}}
},
},
["note_omp_predetermined_dsa"]={
["err_ivar_use_in_class_method"]={
[c]="......",
[j]="instance variable A accessed in class method",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%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",
[e]="instance variable %0 accessed in class method",
[b]=q,
[f]=n,
[a]="(?: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)(?:|; perhaps you forget to enclose \'omp (.*?)\' directive into a parallel or another task region\\?)",
[g]="instance variable (.*?) accessed in class method",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"d4183dabd7a9",1378212952,"OpenMP: Data-sharing attributes analysis and clause \'shared\'"}
[b]={gb,1480718311,ib},
[k]={{q,2537,"/// The parser has read a name in, and Sema has detected that we\'re currently\n/// inside an ObjC method. Perform some additional checks and determine if we\n/// should form a reference to an ivar.\n///\n/// Ideally, most of this would be done by lookup, but there\'s\n/// actually quite a lot of extra work involved.\nDeclResult Sema::LookupIvarInObjCMethod(LookupResult &Lookup, Scope *S, IdentifierInfo *II) {\n  if (LookForIvars) {\n    if (IFace && (IV = IFace->lookupInstanceVariable(II, ClassDeclared))) {\n      // Diagnose using an ivar in a class method.\n      if (IsClassMethod) {\n        Diag(Loc, diag::err_ivar_use_in_class_method) << IV->getDeclName();"},{q,2560,"/// The parser has read a name in, and Sema has detected that we\'re currently\n/// inside an ObjC method. Perform some additional checks and determine if we\n/// should form a reference to an ivar.\n///\n/// Ideally, most of this would be done by lookup, but there\'s\n/// actually quite a lot of extra work involved.\nDeclResult Sema::LookupIvarInObjCMethod(LookupResult &Lookup, Scope *S, IdentifierInfo *II) {\n  if (LookForIvars) {\n  } else if (CurMethod->isInstanceMethod()) {\n  } else if (Lookup.isSingleResult() && Lookup.getFoundDecl()->isDefinedOutsideFunctionOrMethod()) {\n    // If accessing a stand-alone ivar in a class method, this is an error.\n    if (const ObjCIvarDecl *IV = dyn_cast<ObjCIvarDecl>(Lookup.getFoundDecl())) {\n      Diag(Loc, diag::err_ivar_use_in_class_method) << IV->getDeclName();"}}
},
},
["note_omp_previous_allocator"]={
["err_kern_call_not_global_function"]={
[c]="previous allocator is specified here",
[j]="kernel call to non-global function A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous allocator is specified here",
[e]="kernel call to non-global function %0",
[b]=q,
[f]=n,
[a]="previous allocator is specified here",
[g]="kernel call to non\\-global function (.*?)",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"282555ad8268",1553027624,"[OPENMP]Warn if the different allocator is used for the variable."}
[b]={"4b66c47a16ee",1298426009,"Sema: diagnose kernel calls to non-global functions"},
[k]={{q,6451,"/// BuildResolvedCallExpr - Build a call to a resolved expression,\n/// i.e. an expression not of \\p OverloadTy.  The expression should\n/// unary-convert to an expression of function-pointer or\n/// block-pointer type.\n///\n/// \\param NDecl the declaration being called, if available\nExprResult Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, SourceLocation LParenLoc, ArrayRef<Expr *> Args, SourceLocation RParenLoc, Expr *Config, bool IsExecConfig, ADLCallKind UsesADL) {\n  if (getLangOpts().CUDA) {\n    if (Config) {\n      // CUDA: Kernel calls must be to global functions\n      if (FDecl && !FDecl->hasAttr<CUDAGlobalAttr>())\n        return ExprError(Diag(LParenLoc, diag::err_kern_call_not_global_function) << FDecl << Fn->getSourceRange());"}}
},
},
["note_omp_previous_clause"]={
["err_kern_is_nonstatic_method"]={
[c]="\'A\' clause is specified here",
[j]="kernel function A must be a free function or static member function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'%0\' clause is specified here",
[e]="kernel function %0 must be a free function or static member function",
[b]=q,
[f]=n,
[a]="\'(.*?)\' clause is specified here",
[g]="kernel function (.*?) must be a free function or static member function",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={wb,1576908663,vb}
[b]={"c66a10652a94",1453249617,"[CUDA] Only allow __global__ on free functions and static member functions."},
[k]={{v,4426,"static void handleGlobalAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (const auto *Method = dyn_cast<CXXMethodDecl>(FD)) {\n    if (Method->isInstance()) {\n      S.Diag(Method->getBeginLoc(), diag::err_kern_is_nonstatic_method) << Method;"}}
},
},
["note_omp_previous_critical_region"]={
["err_kern_type_not_void_return"]={
[c]="previous \'critical\' region starts here",
[j]="kernel function type A must have void return type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous \'critical\' region starts here",
[e]="kernel function type %0 must have void return type",
[b]=q,
[f]=n,
[a]="previous \'critical\' region starts here",
[g]="kernel function type (.*?) must have void return type",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={"d9ed09f7a5f1",1405935725,"[OPENMP] Parsing/Sema of the OpenMP directive \'critical\'."}
[b]={"e8cfaf4258ca",1292194977,"Sema: diagnose kernel functions with non-void return type"},
[k]={{v,4421,"static void handleGlobalAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  if (!FD->getReturnType()->isVoidType() && !FD->getReturnType()->getAs<AutoType>() && !FD->getReturnType()->isInstantiationDependentType()) {\n    S.Diag(FD->getTypeSpecStartLoc(), diag::err_kern_type_not_void_return) << FD->getType() << (RTRange.isValid() ? FixItHint::CreateReplacement(RTRange, \"void\") : FixItHint());"},{q,6455,"/// BuildResolvedCallExpr - Build a call to a resolved expression,\n/// i.e. an expression not of \\p OverloadTy.  The expression should\n/// unary-convert to an expression of function-pointer or\n/// block-pointer type.\n///\n/// \\param NDecl the declaration being called, if available\nExprResult Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, SourceLocation LParenLoc, ArrayRef<Expr *> Args, SourceLocation RParenLoc, Expr *Config, bool IsExecConfig, ADLCallKind UsesADL) {\n  if (getLangOpts().CUDA) {\n    if (Config) {\n      // CUDA: Kernel function must have \'void\' return type\n      if (!FuncT->getReturnType()->isVoidType() && !FuncT->getReturnType()->getAs<AutoType>() && !FuncT->getReturnType()->isInstantiationDependentType())\n        return ExprError(Diag(LParenLoc, diag::err_kern_type_not_void_return) << Fn->getType() << Fn->getSourceRange());"},{E,3341,"/// Deduce the return type for a function from a returned expression, per\n/// C++1y [dcl.spec.auto]p6.\nbool Sema::DeduceFunctionTypeFromReturnExpr(FunctionDecl *FD, SourceLocation ReturnLoc, Expr *RetExpr, const AutoType *AT) {\n  // CUDA: Kernel function must have \'void\' return type.\n  if (getLangOpts().CUDA && FD->hasAttr<CUDAGlobalAttr>() && !Deduced->isVoidType()) {\n    Diag(FD->getLocation(), diag::err_kern_type_not_void_return) << FD->getType() << FD->getSourceRange();"},{"clang/lib/Sema/SemaTemplateDeduction.cpp",2844,"/// Substitute the explicitly-provided template arguments into the\n/// given function template according to C++ [temp.arg.explicit].\n///\n/// \\param FunctionTemplate the function template into which the explicit\n/// template arguments will be substituted.\n///\n/// \\param ExplicitTemplateArgs the explicitly-specified template\n/// arguments.\n///\n/// \\param Deduced the deduced template arguments, which will be populated\n/// with the converted and checked explicit template arguments.\n///\n/// \\param ParamTypes will be populated with the instantiated function\n/// parameters.\n///\n/// \\param FunctionType if non-NULL, the result type of the function template\n/// will also be instantiated and the pointed-to value will be updated with\n/// the instantiated function type.\n///\n/// \\param Info if substitution fails for any reason, this object will be\n/// populated with more information about the failure.\n///\n/// \\returns TDK_Success if substitution was successful, or some failure\n/// condition.\nSema::TemplateDeductionResult Sema::SubstituteExplicitTemplateArguments(FunctionTemplateDecl *FunctionTemplate, TemplateArgumentListInfo &ExplicitTemplateArgs, SmallVectorImpl<DeducedTemplateArgument> &Deduced, SmallVectorImpl<QualType> &ParamTypes, QualType *FunctionType, TemplateDeductionInfo &Info) {\n  {\n    // CUDA: Kernel function must have \'void\' return type.\n    if (getLangOpts().CUDA)\n      if (Function->hasAttr<CUDAGlobalAttr>() && !ResultType->isVoidType()) {\n        Diag(Function->getLocation(), diag::err_kern_type_not_void_return) << Function->getType() << Function->getSourceRange();"}}
},
},
["note_omp_previous_directive"]={
["err_kernel_arg_address_space"]={
[c]="previous \'A\' directive used here",
[j]="pointer arguments to kernel functions must reside in \'__global\', \'__constant\' or \'__local\' address space",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous \'%0\' directive used here",
[e]="pointer arguments to kernel functions must reside in \'__global\', \'__constant\' or \'__local\' address space",
[b]=q,
[f]=n,
[a]="previous \'(.*?)\' directive used here",
[g]="pointer arguments to kernel functions must reside in \'__global\', \'__constant\' or \'__local\' address space",
[g]=p,
[h]=a,
[e]=T,
[i]=o,
[i]={ob,1582847864,nb}
[b]={"de82a65053de",1481638043,"[OpenCL] Improve address space diagnostics."},
[k]={{p,8309,"static void checkIsValidOpenCLKernelParameter(Sema &S, Declarator &D, ParmVarDecl *Param, llvm::SmallPtrSetImpl<const Type *> &ValidTypes) {\n  case InvalidAddrSpacePtrKernelParam:\n    S.Diag(Param->getLocation(), diag::err_kernel_arg_address_space);"}}
},
},
["note_omp_previous_inscan_reduction"]={
["err_keyword_as_parameter"]={
[c]="\'reduction\' clause with \'inscan\' modifier is used here",
[j]="invalid parameter name: \'A\' is a keyword",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'reduction\' clause with \'inscan\' modifier is used here",
[e]="invalid parameter name: \'%0\' is a keyword",
[b]=q,
[f]=n,
[a]="\'reduction\' clause with \'inscan\' modifier is used here",
[g]="invalid parameter name\\: \'(.*?)\' is a keyword",
[g]=p,
[h]=a,
[e]=T,
[i]=s,
[i]={wb,1576908663,vb}
[b]={"625acd8f6847",1586351328,"[Parser] Improve diagnostic and error recovery when C++ keywords are used as identifiers."},
[k]={{C,6702,"/// ParseParameterDeclarationClause - Parse a (possibly empty) parameter-list\n/// after the opening parenthesis. This function will not parse a K&R-style\n/// identifier list.\n///\n/// DeclContext is the context of the declarator being parsed.  If FirstArgAttrs\n/// is non-null, then the caller parsed those attributes immediately after the\n/// open paren - they will be applied to the DeclSpec of the first parameter.\n///\n/// After returning, ParamInfo will hold the parsed parameters. EllipsisLoc will\n/// be the location of the ellipsis, if any was parsed.\n///\n///      parameter-type-list: [C99 6.7.5]\n///        parameter-list\n///        parameter-list \',\' \'...\'\n/// [C++]  parameter-list \'...\'\n///\n///      parameter-list: [C99 6.7.5]\n///        parameter-declaration\n///        parameter-list \',\' parameter-declaration\n///\n///      parameter-declaration: [C99 6.7.5]\n///        declaration-specifiers declarator\n/// [C++]  declaration-specifiers declarator \'=\' assignment-expression\n/// [C++11]                                      initializer-clause\n/// [GNU]  declaration-specifiers declarator attributes\n///        declaration-specifiers abstract-declarator[opt]\n/// [C++]  declaration-specifiers abstract-declarator[opt]\n///          \'=\' assignment-expression\n/// [GNU]  declaration-specifiers abstract-declarator[opt] attributes\n/// [C++11] attribute-specifier-seq parameter-declaration\n///\nvoid Parser::ParseParameterDeclarationClause(DeclaratorContext DeclaratorCtx, ParsedAttributes &FirstArgAttrs, SmallVectorImpl<DeclaratorChunk::ParamInfo> &ParamInfo, SourceLocation &EllipsisLoc, bool IsACXXFunctionDeclaration) {\n  do {\n    // If no parameter was specified, verify that *something* was specified,\n    // otherwise we have a missing type and identifier.\n    if (DS.isEmpty() && ParmDeclarator.getIdentifier() == nullptr && ParmDeclarator.getNumTypeObjects() == 0) {\n    } else {\n      // Now we are at the point where declarator parsing is finished.\n      //\n      // Try to catch keywords in place of the identifier in a declarator, and\n      // in particular the common case where:\n      //  1 identifier comes at the end of the declarator\n      //  2 if the identifier is dropped, the declarator is valid but anonymous\n      //    (no identifier)\n      //  3 declarator parsing succeeds, and then we have a trailing keyword,\n      //    which is never valid in a param list (e.g. missing a \',\')\n      // And we can\'t handle this in ParseDeclarator because in general keywords\n      // may be allowed to follow the declarator. (And in some cases there\'d be\n      // better recovery like inserting punctuation). ParseDeclarator is just\n      // treating this as an anonymous parameter, and fortunately at this point\n      // we\'ve already almost done that.\n      //\n      // We care about case 1) where the declarator type should be known, and\n      // the identifier should be null.\n      if (!ParmDeclarator.isInvalidType() && !ParmDeclarator.hasName() && Tok.isNot(tok::raw_identifier) && !Tok.isAnnotation() && Tok.getIdentifierInfo() && Tok.getIdentifierInfo()->isKeyword(getLangOpts())) {\n        Diag(Tok, diag::err_keyword_as_parameter) << PP.getSpelling(Tok);"}}
},
},
["note_omp_previous_mem_order_clause"]={
["err_keyword_misplaced"]={
[c]="\'A\' clause used here",
[j]="misplaced A; expected B here",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'%0\' clause used here",
[e]="misplaced %0; expected %0 here",
[b]=q,
[f]=n,
[a]="\'(.*?)\' clause used here",
[g]="misplaced (.*?); expected (.*?) here",
[g]=p,
[h]=a,
[e]=T,
[i]=s,
[i]={Pb,1576809732,Qb}
[b]={"ef9ec4bbcca2",1677810915,"[OpenMP] Add the `ompx_attribute` clause for target directives"},
[k]={{C,1552,"void Parser::DiagnoseProhibitedAttributes(const ParsedAttributesView &Attrs, const SourceLocation CorrectLocation) {\n  if (CorrectLocation.isValid()) {\n    (FirstAttr && FirstAttr->isRegularKeywordAttribute() ? Diag(CorrectLocation, diag::err_keyword_misplaced) << FirstAttr : Diag(CorrectLocation, diag::err_attributes_misplaced)) << FixItHint::CreateInsertionFromRange(CorrectLocation, AttrRange) << FixItHint::CreateRemoval(AttrRange);"}}
},
},
["note_omp_previous_named_if_clause"]={
["err_keyword_not_allowed"]={
[c]="previous clause with directive name modifier specified here",
[j]="A cannot appear here",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous clause with directive name modifier specified here",
[e]="%0 cannot appear here",
[b]=q,
[f]=n,
[a]="previous clause with directive name modifier specified here",
[g]="(.*?) cannot appear here",
[g]=p,
[h]=a,
[e]=T,
[i]=s,
[i]={"6b8046addfce",1441265028,"[OPENMP 4.1] Parsing/sema analysis for extended format of \'if\' clause."}
[b]={"ef9ec4bbcca2",1677810915,"[OpenMP] Add the `ompx_attribute` clause for target directives"},
[k]={{C,1545,"/// We have found the opening square brackets of a C++11\n/// attribute-specifier in a location where an attribute is not permitted, but\n/// we know where the attributes ought to be written. Parse them anyway, and\n/// provide a fixit moving them to the right place.\nvoid Parser::DiagnoseMisplacedCXX11Attribute(ParsedAttributes &Attrs, SourceLocation CorrectLocation) {\n  (Keyword ? Diag(Loc, diag::err_keyword_not_allowed) << Keyword : Diag(Loc, diag::err_attributes_not_allowed)) << FixItHint::CreateInsertionFromRange(CorrectLocation, AttrRange) << FixItHint::CreateRemoval(AttrRange);"},{C,1555,"void Parser::DiagnoseProhibitedAttributes(const ParsedAttributesView &Attrs, const SourceLocation CorrectLocation) {\n  if (CorrectLocation.isValid()) {\n  } else {\n    (FirstAttr && FirstAttr->isRegularKeywordAttribute() ? Diag(Range.getBegin(), diag::err_keyword_not_allowed) << FirstAttr : Diag(Range.getBegin(), diag::err_attributes_not_allowed)) << Range;"},{C,4579,"/// ParseEnumSpecifier\n///      enum-specifier: [C99 6.7.2.2]\n///        \'enum\' identifier[opt] \'{\' enumerator-list \'}\'\n///[C99/C++]\'enum\' identifier[opt] \'{\' enumerator-list \',\' \'}\'\n/// [GNU]  \'enum\' attributes[opt] identifier[opt] \'{\' enumerator-list \',\' [opt]\n///                                                \'}\' attributes[opt]\n/// [MS]    \'enum\' __declspec[opt] identifier[opt] \'{\' enumerator-list \',\' [opt]\n///                                                \'}\'\n///        \'enum\' identifier\n/// [GNU]  \'enum\' attributes[opt] identifier\n///\n/// [C++11] enum-head \'{\' enumerator-list[opt] \'}\'\n/// [C++11] enum-head \'{\' enumerator-list \',\'  \'}\'\n///\n///      enum-head: [C++11]\n///        enum-key attribute-specifier-seq[opt] identifier[opt] enum-base[opt]\n///        enum-key attribute-specifier-seq[opt] nested-name-specifier\n///            identifier enum-base[opt]\n///\n///      enum-key: [C++11]\n///        \'enum\'\n///        \'enum\' \'class\'\n///        \'enum\' \'struct\'\n///\n///      enum-base: [C++11]\n///        \':\' type-specifier-seq\n///\n/// [C++] elaborated-type-specifier:\n/// [C++]  \'enum\' nested-name-specifier[opt] identifier\n///\nvoid Parser::ParseEnumSpecifier(SourceLocation StartLoc, DeclSpec &DS, const ParsedTemplateInfo &TemplateInfo, AccessSpecifier AS, DeclSpecContext DSC) {\n  // An elaborated-type-specifier has a much more constrained grammar:\n  //\n  //  \'enum\' nested-name-specifier[opt] identifier\n  //\n  // If we parsed any other bits, reject them now.\n  //\n  // MSVC and (for now at least) Objective-C permit a full enum-specifier\n  // or opaque-enum-declaration anywhere.\n  if (IsElaboratedTypeSpecifier && !getLangOpts().MicrosoftExt && !getLangOpts().ObjC) {\n    ProhibitCXX11Attributes(attrs, diag::err_attributes_not_allowed, diag::err_keyword_not_allowed,"},{C,6071,"PastIdentifier:\n  while (true) {\n    if (Tok.is(tok::l_paren)) {\n    } else if (Tok.is(tok::l_square)) {\n    } else if (Tok.isRegularKeywordAttribute()) {\n      Diag(Tok, diag::err_keyword_not_allowed) << Tok.getIdentifierInfo();"},{R,685,"/// ParseUsingDeclaration - Parse C++ using-declaration or alias-declaration.\n/// Assumes that \'using\' was already seen.\n///\n///    using-declaration: [C++ 7.3.p3: namespace.udecl]\n///      \'using\' using-declarator-list[opt] ;\n///\n///    using-declarator-list: [C++1z]\n///      using-declarator \'...\'[opt]\n///      using-declarator-list \',\' using-declarator \'...\'[opt]\n///\n///    using-declarator-list: [C++98-14]\n///      using-declarator\n///\n///    alias-declaration: C++11 [dcl.dcl]p1\n///      \'using\' identifier attribute-specifier-seq[opt] = type-id ;\n///\n///    using-enum-declaration: [C++20, dcl.enum]\n///      \'using\' elaborated-enum-specifier ;\n///      The terminal name of the elaborated-enum-specifier undergoes\n///      ordinary lookup\n///\n///    elaborated-enum-specifier:\n///      \'enum\' nested-name-specifier[opt] identifier\nParser::DeclGroupPtrTy Parser::ParseUsingDeclaration(DeclaratorContext Context, const ParsedTemplateInfo &TemplateInfo, SourceLocation UsingLoc, SourceLocation &DeclEnd, ParsedAttributes &PrefixAttrs, AccessSpecifier AS) {\n  // If we had any misplaced attributes from earlier, this is where they\n  // should have been written.\n  if (MisplacedAttrs.Range.isValid()) {\n    (FirstAttr && FirstAttr->isRegularKeywordAttribute() ? Diag(Range.getBegin(), diag::err_keyword_not_allowed) << FirstAttr : Diag(Range.getBegin(), diag::err_attributes_not_allowed)) << FixItHint::CreateInsertionFromRange(Tok.getLocation(), CharSourceRange::getTokenRange(Range)) << FixItHint::CreateRemoval(Range);"},{R,1658,"#include \"clang/Basic/TransformTypeTraits.def\"\n  // Forbid misplaced attributes. In cases of a reference, we pass attributes\n  // to caller to handle.\n  if (TUK != Sema::TUK_Reference) {\n    if (AttrRange.isValid()) {\n      (FirstAttr && FirstAttr->isRegularKeywordAttribute() ? Diag(Loc, diag::err_keyword_not_allowed) << FirstAttr : Diag(Loc, diag::err_attributes_not_allowed)) << AttrRange << FixItHint::CreateInsertionFromRange(AttrFixitLoc, CharSourceRange(AttrRange, true)) << FixItHint::CreateRemoval(AttrRange);"},{R,1696,"#include \"clang/Basic/TransformTypeTraits.def\"\n  if (TemplateId) {\n    if (TemplateId->isInvalid()) {\n    } else if (TemplateInfo.Kind == ParsedTemplateInfo::ExplicitInstantiation && TUK == Sema::TUK_Declaration) {\n      ProhibitCXX11Attributes(attrs, diag::err_attributes_not_allowed, diag::err_keyword_not_allowed,"},{R,1706,"#include \"clang/Basic/TransformTypeTraits.def\"\n  if (TemplateId) {\n    if (TemplateId->isInvalid()) {\n    } else if (TemplateInfo.Kind == ParsedTemplateInfo::ExplicitInstantiation && TUK == Sema::TUK_Declaration) {\n    } else if (TUK == Sema::TUK_Reference || (TUK == Sema::TUK_Friend && TemplateInfo.Kind == ParsedTemplateInfo::NonTemplate)) {\n      ProhibitCXX11Attributes(attrs, diag::err_attributes_not_allowed, diag::err_keyword_not_allowed,"},{R,1755,"#include \"clang/Basic/TransformTypeTraits.def\"\n  if (TemplateId) {\n  } else if (TemplateInfo.Kind == ParsedTemplateInfo::ExplicitInstantiation && TUK == Sema::TUK_Declaration) {\n  } else if (TUK == Sema::TUK_Friend && TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate) {\n    ProhibitCXX11Attributes(attrs, diag::err_attributes_not_allowed, diag::err_keyword_not_allowed,"},{R,1761,"#include \"clang/Basic/TransformTypeTraits.def\"\n  if (TemplateId) {\n  } else if (TemplateInfo.Kind == ParsedTemplateInfo::ExplicitInstantiation && TUK == Sema::TUK_Declaration) {\n  } else if (TUK == Sema::TUK_Friend && TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate) {\n  } else {\n    if (TUK != Sema::TUK_Declaration && TUK != Sema::TUK_Definition)\n      ProhibitCXX11Attributes(attrs, diag::err_attributes_not_allowed, diag::err_keyword_not_allowed,"},{R,2630,"/// ParseCXXClassMemberDeclaration - Parse a C++ class member declaration.\n///\n///      member-declaration:\n///        decl-specifier-seq[opt] member-declarator-list[opt] \';\'\n///        function-definition \';\'[opt]\n///        ::[opt] nested-name-specifier template[opt] unqualified-id \';\'[TODO]\n///        using-declaration                                            [TODO]\n/// [C++0x] static_assert-declaration\n///        template-declaration\n/// [GNU]  \'__extension__\' member-declaration\n///\n///      member-declarator-list:\n///        member-declarator\n///        member-declarator-list \',\' member-declarator\n///\n///      member-declarator:\n///        declarator virt-specifier-seq[opt] pure-specifier[opt]\n/// [C++2a] declarator requires-clause\n///        declarator constant-initializer[opt]\n/// [C++11] declarator brace-or-equal-initializer[opt]\n///        identifier[opt] \':\' constant-expression\n///\n///      virt-specifier-seq:\n///        virt-specifier\n///        virt-specifier-seq virt-specifier\n///\n///      virt-specifier:\n///        override\n///        final\n/// [MS]    sealed\n///\n///      pure-specifier:\n///        \'= 0\'\n///\n///      constant-initializer:\n///        \'=\' constant-expression\n///\nParser::DeclGroupPtrTy Parser::ParseCXXClassMemberDeclaration(AccessSpecifier AS, ParsedAttributes &AccessAttrs, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject *TemplateDiags) {\n  while (true) {\n    if (DS.isFriendSpecified()) {\n      // C++11 [dcl.attr.grammar] p4: If an attribute-specifier-seq appertains\n      // to a friend declaration, that declaration shall be a definition.\n      //\n      // Diagnose attributes that appear in a friend member function declarator:\n      //  friend int foo [[]] ();\n      for (const ParsedAttr &AL : DeclaratorInfo.getAttributes())\n        if (AL.isCXX11Attribute() || AL.isRegularKeywordAttribute()) {\n          (AL.isRegularKeywordAttribute() ? Diag(Loc, diag::err_keyword_not_allowed) << AL : Diag(Loc, diag::err_attributes_not_allowed)) << AL.getRange();"},{R,4067,"void Parser::DiagnoseAndSkipCXX11Attributes() {\n  if (EndLoc.isValid()) {\n    (Keyword ? Diag(StartLoc, diag::err_keyword_not_allowed) << Keyword : Diag(StartLoc, diag::err_attributes_not_allowed)) << Range;"},{"clang/lib/Parse/ParseStmt.cpp",316,"#include \"clang/Basic/TransformTypeTraits.def\"\n  case tok::kw_asm: {\n    for (const ParsedAttr &AL : CXX11Attrs)\n      (AL.isRegularKeywordAttribute() ? Diag(AL.getRange().getBegin(), diag::err_keyword_not_allowed) : Diag(AL.getRange().getBegin(), diag::warn_attribute_ignored)) << AL;"}}
},
},
["note_omp_previous_reduction_identifier"]={
["err_keyword_not_import_attr"]={
[c]="previously marked as task_reduction with different reduction operation",
[j]="A cannot be applied to a module import",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previously marked as task_reduction with different reduction operation",
[e]="%0 cannot be applied to a module import",
[b]=q,
[f]=n,
[a]="previously marked as task_reduction with different reduction operation",
[g]="(.*?) cannot be applied to a module import",
[g]=p,
[h]=a,
[e]=T,
[i]=D,
[i]={"fa312f33f840",1500662901,"[OPENMP] Initial support for \'in_reduction\' clause."}
[b]={"ef9ec4bbcca2",1677810915,"[OpenMP] Add the `ompx_attribute` clause for target directives"},
[k]={{Q,2283,"/// Parse a module import declaration. This is essentially the same for\n/// Objective-C and C++20 except for the leading \'@\' (in ObjC) and the\n/// trailing optional attributes (in C++).\n///\n/// [ObjC]  @import declaration:\n///          \'@\' \'import\' module-name \';\'\n/// [ModTS] module-import-declaration:\n///          \'import\' module-name attribute-specifier-seq[opt] \';\'\n/// [C++20] module-import-declaration:\n///          \'export\'[opt] \'import\' module-name\n///                  attribute-specifier-seq[opt] \';\'\n///          \'export\'[opt] \'import\' module-partition\n///                  attribute-specifier-seq[opt] \';\'\n///          \'export\'[opt] \'import\' header-name\n///                  attribute-specifier-seq[opt] \';\'\nDecl *Parser::ParseModuleImport(SourceLocation AtLoc, Sema::ModuleImportState &ImportState) {\n  ProhibitCXX11Attributes(Attrs, diag::err_attribute_not_import_attr, diag::err_keyword_not_import_attr,"}}
},
},
["note_omp_protected_structured_block"]={
["err_keyword_not_module_attr"]={
[c]="jump bypasses OpenMP structured block",
[j]="A cannot be applied to a module",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses OpenMP structured block",
[e]="%0 cannot be applied to a module",
[b]=q,
[f]=n,
[a]="jump bypasses OpenMP structured block",
[g]="(.*?) cannot be applied to a module",
[g]=p,
[h]=a,
[e]=T,
[i]=D,
[i]={ob,1582847864,nb}
[b]={"ef9ec4bbcca2",1677810915,"[OpenMP] Add the `ompx_attribute` clause for target directives"},
[k]={{Q,2219,"/// Parse a declaration beginning with the \'module\' keyword or C++20\n/// context-sensitive keyword (optionally preceded by \'export\').\n///\n///  module-declaration:  [C++20]\n///    \'export\'[opt] \'module\' module-name attribute-specifier-seq[opt] \';\'\n///\n///  global-module-fragment:  [C++2a]\n///    \'module\' \';\' top-level-declaration-seq[opt]\n///  module-declaration:      [C++2a]\n///    \'export\'[opt] \'module\' module-name module-partition[opt]\n///            attribute-specifier-seq[opt] \';\'\n///  private-module-fragment: [C++2a]\n///    \'module\' \':\' \'private\' \';\' top-level-declaration-seq[opt]\nParser::DeclGroupPtrTy Parser::ParseModuleDecl(Sema::ModuleImportState &ImportState) {\n  ProhibitCXX11Attributes(Attrs, diag::err_attribute_not_module_attr, diag::err_keyword_not_module_attr,"}}
},
},
["note_omp_referenced"]={
["err_keyword_not_supported_on_target"]={
[c]="previously referenced here",
[j]="A is not supported on this target",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previously referenced here",
[e]="%0 is not supported on this target",
[b]=q,
[f]=n,
[a]="previously referenced here",
[g]="(.*?) is not supported on this target",
[g]=p,
[h]=a,
[e]=T,
[i]=a,
[i]={"c5e025831ba7",1402902515,"[OPENMP] Initial support of \'reduction\' clause"}
[b]={"33ee5c466346",1680613513,"[clang] Add Parse and Sema support for RegularKeyword attributes"},
[k]={{v,2000,"bool Sema::CheckAttrTarget(const ParsedAttr &AL) {\n  // Check whether the attribute is valid on the current target.\n  if (!AL.existsInTarget(Context.getTargetInfo())) {\n    Diag(AL.getLoc(), AL.isRegularKeywordAttribute() ? diag::err_keyword_not_supported_on_target : diag::warn_unknown_attribute_ignored) << AL << AL.getRange();"},{v,7688,"/// ProcessDeclAttribute - Apply the specific attribute to the specified decl if\n/// the attribute applies to decls.  If the attribute is a type attribute, just\n/// silently ignore it if a GNU attribute.\nstatic void ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D, const ParsedAttr &AL, const Sema::ProcessDeclAttributeOptions &Options) {\n  // Unknown attributes are automatically warned on. Target-specific attributes\n  // which do not apply to the current target architecture are treated as\n  // though they were unknown attributes.\n  if (AL.getKind() == ParsedAttr::UnknownAttribute || !AL.existsInTarget(S.Context.getTargetInfo())) {\n    S.Diag(AL.getLoc(), AL.isRegularKeywordAttribute() ? (unsigned)diag::err_keyword_not_supported_on_target : AL.isDeclspecAttribute() ? (unsigned)diag::warn_unhandled_ms_attribute_ignored : (unsigned)diag::warn_unknown_attribute_ignored) << AL << AL.getRange();"},{"clang/lib/Sema/SemaStmtAttr.cpp",412,"static Attr *ProcessStmtAttribute(Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range) {\n  if (A.getKind() == ParsedAttr::UnknownAttribute || !(A.existsInTarget(S.Context.getTargetInfo()) || (S.Context.getLangOpts().SYCLIsDevice && Aux && A.existsInTarget(*Aux)))) {\n    S.Diag(A.getLoc(), A.isRegularKeywordAttribute() ? (unsigned)diag::err_keyword_not_supported_on_target : A.isDeclspecAttribute() ? (unsigned)diag::warn_unhandled_ms_attribute_ignored : (unsigned)diag::warn_unknown_attribute_ignored) << A << A.getRange();"}}
},
},
["note_omp_requires_encountered_directive"]={
["err_l_square_l_square_not_attribute"]={
[c]="\'A\' previously encountered here",
[j]="C++11 only allows consecutive left square brackets when introducing an attribute",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'%0\' previously encountered here",
[e]="C++11 only allows consecutive left square brackets when introducing an attribute",
[b]=q,
[f]=n,
[a]="\'(.*?)\' previously encountered here",
[g]="C\\+\\+11 only allows consecutive left square brackets when introducing an attribute",
[g]=p,
[h]=a,
[e]=T,
[i]=s,
[i]={Pb,1576809732,Qb}
[b]={"7bdcc4a9da8c",1334021532,"Disambiguation of \'[[\':"},
[k]={{C,1516,"/// DiagnoseProhibitedCXX11Attribute - We have found the opening square brackets\n/// of a C++11 attribute-specifier in a location where an attribute is not\n/// permitted. By C++11 [dcl.attr.grammar]p6, this is ill-formed. Diagnose this\n/// situation.\n///\n/// \\return \\c true if we skipped an attribute-like chunk of tokens, \\c false if\n/// this doesn\'t appear to actually be an attribute-specifier, and the caller\n/// should try to parse it.\nbool Parser::DiagnoseProhibitedCXX11Attribute() {\n  case CAK_InvalidAttributeSpecifier:\n    Diag(Tok.getLocation(), diag::err_l_square_l_square_not_attribute);"}}
},
},
["note_omp_requires_previous_clause"]={
["err_lambda_after_delete"]={
[c]="A clause previously used here",
[j]="\'[]\' after delete interpreted as \'delete[]\'; add parentheses to treat this as a lambda-expression",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 clause previously used here",
[e]="\'[]\' after delete interpreted as \'delete[]\'; add parentheses to treat this as a lambda-expression",
[b]=q,
[f]=n,
[a]="(.*?) clause previously used here",
[g]="\'\\[\\]\' after delete interpreted as \'delete\\[\\]\'; add parentheses to treat this as a lambda\\-expression",
[g]=p,
[h]=a,
[e]=T,
[i]=s,
[i]={"1408f91a2588",1537936119,"[OPENMP] Add support for OMP5 requires directive + unified_address clause"}
[b]={"f53d1727107e",1558278478,"Added a better diagnostic when using the delete operator with lambdas"},
[k]={{V,3090,"/// ParseCXXDeleteExpression - Parse a C++ delete-expression. Delete is used\n/// to free memory allocated by new.\n///\n/// This method is called to parse the \'delete\' expression after the optional\n/// \'::\' has been already parsed.  If the \'::\' was present, \"UseGlobal\" is true\n/// and \"Start\" is its location.  Otherwise, \"Start\" is the location of the\n/// \'delete\' token.\n///\n///        delete-expression:\n///                  \'::\'[opt] \'delete\' cast-expression\n///                  \'::\'[opt] \'delete\' \'[\' \']\' cast-expression\nExprResult Parser::ParseCXXDeleteExpression(bool UseGlobal, SourceLocation Start) {\n  if (Tok.is(tok::l_square) && NextToken().is(tok::r_square)) {\n    // Basic lookahead to check if we have a lambda expression.\n    if (Next.isOneOf(tok::l_brace, tok::less) || (Next.is(tok::l_paren) && (GetLookAheadToken(3).is(tok::r_paren) || (GetLookAheadToken(3).is(tok::identifier) && GetLookAheadToken(4).is(tok::identifier))))) {\n      if (EmitFixIt)\n        Diag(Start, diag::err_lambda_after_delete) << SourceRange(Start, RSquareLoc) << FixItHint::CreateInsertion(LSquareLoc, \"(\") << FixItHint::CreateInsertion(Lexer::getLocForEndOfToken(RBraceLoc, 0, Actions.getSourceManager(), getLangOpts()), \")\");"},{V,3092,"/// ParseCXXDeleteExpression - Parse a C++ delete-expression. Delete is used\n/// to free memory allocated by new.\n///\n/// This method is called to parse the \'delete\' expression after the optional\n/// \'::\' has been already parsed.  If the \'::\' was present, \"UseGlobal\" is true\n/// and \"Start\" is its location.  Otherwise, \"Start\" is the location of the\n/// \'delete\' token.\n///\n///        delete-expression:\n///                  \'::\'[opt] \'delete\' cast-expression\n///                  \'::\'[opt] \'delete\' \'[\' \']\' cast-expression\nExprResult Parser::ParseCXXDeleteExpression(bool UseGlobal, SourceLocation Start) {\n  if (Tok.is(tok::l_square) && NextToken().is(tok::r_square)) {\n    // Basic lookahead to check if we have a lambda expression.\n    if (Next.isOneOf(tok::l_brace, tok::less) || (Next.is(tok::l_paren) && (GetLookAheadToken(3).is(tok::r_paren) || (GetLookAheadToken(3).is(tok::identifier) && GetLookAheadToken(4).is(tok::identifier))))) {\n      if (EmitFixIt)\n      else\n        Diag(Start, diag::err_lambda_after_delete) << SourceRange(Start, RSquareLoc);"}}
},
},
["note_omp_task_predetermined_firstprivate_here"]={
["err_lambda_capture_anonymous_var"]={
[c]="predetermined as a firstprivate in a task construct here",
[j]="unnamed variable cannot be implicitly captured in a lambda expression",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="predetermined as a firstprivate in a task construct here",
[e]="unnamed variable cannot be implicitly captured in a lambda expression",
[b]=q,
[f]=n,
[a]="predetermined as a firstprivate in a task construct here",
[g]="unnamed variable cannot be implicitly captured in a lambda expression",
[g]=p,
[h]=a,
[e]=T,
[i]=S,
[i]={"e7a5517a5835",1412764975,"[OPENMP] Codegen for \'firstprivate\' clause."}
[b]={"24af85047046",1328309257,"Implement implicit capture for lambda expressions."},
[k]={{q,16617,"// Certain capturing entities (lambdas, blocks etc.) are not allowed to capture\n// certain types of variables (unnamed, variably modified types etc.)\n// so check for eligibility.\nstatic bool isVariableCapturable(CapturingScopeInfo *CSI, ValueDecl *Var, SourceLocation Loc, const bool Diagnose, Sema &S) {\n  // Lambdas are not allowed to capture unnamed variables\n  // (e.g. anonymous unions).\n  // FIXME: The C++11 rule don\'t actually state this explicitly, but I\'m\n  // assuming that\'s the intent.\n  if (IsLambda && !Var->getDeclName()) {\n    if (Diagnose) {\n      S.Diag(Loc, diag::err_lambda_capture_anonymous_var);"}}
},
},
["note_opencl_typedef_access_qualifier"]={
["err_lambda_capture_default_arg"]={
[c]="previously declared \'A\' here",
[j]="lambda expression in default argument cannot capture any entity",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previously declared \'%0\' here",
[e]="lambda expression in default argument cannot capture any entity",
[b]=q,
[f]=n,
[a]="previously declared \'(.*?)\' here",
[g]="lambda expression in default argument cannot capture any entity",
[g]=p,
[h]=a,
[e]=o,
[i]=S,
[i]={"c813c8113db7",1467992099,"[OpenCL] Fix access qualifiers handling for typedefs"}
[b]={"f0d495100cf4",1328916622,"Implement C++11 [expr.lambda.prim]p13, which prohibits lambdas in"},
[k]={{r,158,"bool CheckDefaultArgumentVisitor::VisitLambdaExpr(const LambdaExpr *Lambda) {\n  for (const LambdaCapture &LC : Lambda->captures()) {\n    if (!Lambda->isInitCapture(&LC))\n      return S.Diag(LC.getLocation(), diag::err_lambda_capture_default_arg);"}}
},
},
["note_operator_arrow_depth"]={
["err_lambda_capture_flexarray_type"]={
[c]="use -foperator-arrow-depth=N to increase \'operator->\' limit",
[j]="variable A with flexible array member cannot be captured in a lambda expression",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use -foperator-arrow-depth=N to increase \'operator->\' limit",
[e]="variable %0 with flexible array member cannot be captured in a lambda expression",
[b]=q,
[f]=n,
[a]="use \\-foperator\\-arrow\\-depth\\=N to increase \'operator\\-\\>\' limit",
[g]="variable (.*?) with flexible array member cannot be captured in a lambda expression",
[g]=p,
[h]=a,
[e]=o,
[i]=S,
[i]={"79c927bfe9fc",1383766311,"Add a limit to the length of a sequence of \'operator->\' functions we will"}
[b]={"a716a345276c",1357687071,"objectiveC blocks: It is impractical to capture "},
[k]={{q,16639,"// Certain capturing entities (lambdas, blocks etc.) are not allowed to capture\n// certain types of variables (unnamed, variably modified types etc.)\n// so check for eligibility.\nstatic bool isVariableCapturable(CapturingScopeInfo *CSI, ValueDecl *Var, SourceLocation Loc, const bool Diagnose, Sema &S) {\n  // Prohibit structs with flexible array members too.\n  // We cannot capture what is in the tail end of the struct.\n  if (const RecordType *VTTy = Var->getType()->getAs<RecordType>()) {\n    if (VTTy->getDecl()->hasFlexibleArrayMember()) {\n      if (Diagnose) {\n        if (IsBlock)\n        else\n          S.Diag(Loc, diag::err_lambda_capture_flexarray_type) << Var;"}}
},
},
["note_operator_arrow_here"]={
["err_lambda_capture_misplaced_ellipsis"]={
[c]="\'operator->\' declared here produces an object of type A",
[j]="ellipsis in pack ...capture must appear ... the name of the capture",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'operator->\' declared here produces an object of type %0",
[e]="ellipsis in pack %select{|init-}0capture must appear %select{after|before}0 the name of the capture",
[b]=q,
[f]=n,
[a]="\'operator\\-\\>\' declared here produces an object of type (.*?)",
[g]="ellipsis in pack (?:|init\\-)capture must appear (?:after|before) the name of the capture",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"79c927bfe9fc",1383766311,"Add a limit to the length of a sequence of \'operator->\' functions we will"}
[b]={"b2997f579a8b",1558469450,"[c++20] P0780R2: Support pack-expansion of init-captures."},
[k]={{V,1002,"/// Parse a lambda introducer.\n/// \\param Intro A LambdaIntroducer filled in with information about the\n///        contents of the lambda-introducer.\n/// \\param Tentative If non-null, we are disambiguating between a\n///        lambda-introducer and some other construct. In this mode, we do not\n///        produce any diagnostics or take any other irreversible action unless\n///        we\'re sure that this is a lambda-expression.\n/// \\return \\c true if parsing (or disambiguation) failed with a diagnostic and\n///        the caller should bail out / recover.\nbool Parser::ParseLambdaIntroducer(LambdaIntroducer &Intro, LambdaIntroducerTentativeParse *Tentative) {\n  while (Tok.isNot(tok::r_square)) {\n    if (llvm::any_of(EllipsisLocs, [](SourceLocation Loc) { return Loc.isValid(); })) {\n      if (EllipsisLoc.isInvalid()) {\n        DiagID = diag::err_lambda_capture_misplaced_ellipsis;"},{V,1027,"/// Parse a lambda introducer.\n/// \\param Intro A LambdaIntroducer filled in with information about the\n///        contents of the lambda-introducer.\n/// \\param Tentative If non-null, we are disambiguating between a\n///        lambda-introducer and some other construct. In this mode, we do not\n///        produce any diagnostics or take any other irreversible action unless\n///        we\'re sure that this is a lambda-expression.\n/// \\return \\c true if parsing (or disambiguation) failed with a diagnostic and\n///        the caller should bail out / recover.\nbool Parser::ParseLambdaIntroducer(LambdaIntroducer &Intro, LambdaIntroducerTentativeParse *Tentative) {\n  while (Tok.isNot(tok::r_square)) {\n    if (llvm::any_of(EllipsisLocs, [](SourceLocation Loc) { return Loc.isValid(); })) {\n      if (DiagID) {\n        NonTentativeAction([&] {\n          if (DiagID == diag::err_lambda_capture_misplaced_ellipsis) {"}}
},
},
["note_operator_arrows_suppressed"]={
["err_lambda_capture_multiple_ellipses"]={
[c]="(skipping A \'operator->\'B in backtrace)",
[j]="multiple ellipses in pack capture",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="(skipping %0 \'operator->\'%s0 in backtrace)",
[e]="multiple ellipses in pack capture",
[b]=q,
[f]=n,
[a]="\\(skipping (.*?) \'operator\\-\\>\'(.*?) in backtrace\\)",
[g]="multiple ellipses in pack capture",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"79c927bfe9fc",1383766311,"Add a limit to the length of a sequence of \'operator->\' functions we will"}
[b]={"b2997f579a8b",1558469450,"[c++20] P0780R2: Support pack-expansion of init-captures."},
[k]={{V,1010,"/// Parse a lambda introducer.\n/// \\param Intro A LambdaIntroducer filled in with information about the\n///        contents of the lambda-introducer.\n/// \\param Tentative If non-null, we are disambiguating between a\n///        lambda-introducer and some other construct. In this mode, we do not\n///        produce any diagnostics or take any other irreversible action unless\n///        we\'re sure that this is a lambda-expression.\n/// \\return \\c true if parsing (or disambiguation) failed with a diagnostic and\n///        the caller should bail out / recover.\nbool Parser::ParseLambdaIntroducer(LambdaIntroducer &Intro, LambdaIntroducerTentativeParse *Tentative) {\n  while (Tok.isNot(tok::r_square)) {\n    if (llvm::any_of(EllipsisLocs, [](SourceLocation Loc) { return Loc.isValid(); })) {\n      if (EllipsisLoc.isInvalid()) {\n      } else {\n        if (NumEllipses > 1)\n          DiagID = diag::err_lambda_capture_multiple_ellipses;"}}
},
},
["note_overridden_marked_noescape"]={
["err_lambda_decl_ref_not_modifiable_lvalue"]={
[c]="parameter of overridden method is annotated with __attribute__((noescape))",
[j]="cannot assign to a variable captured by copy in a non-mutable lambda",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="parameter of overridden method is annotated with __attribute__((noescape))",
[e]="cannot assign to a variable captured by copy in a non-mutable lambda",
[b]=q,
[f]=n,
[a]="parameter of overridden method is annotated with __attribute__\\(\\(noescape\\)\\)",
[g]="cannot assign to a variable captured by copy in a non\\-mutable lambda",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"fc587e6a5707",1505888571,"Add support for attribute \'noescape\'."}
[b]={"5fa2ef4445fa",1331599021,"Alternate fix to PR12248:  put Sema in charge of special-casing"},
[k]={{q,12296,"/// CheckForModifiableLvalue - Verify that E is a modifiable lvalue.  If not,\n/// emit an error and return true.  If so, return false.\nstatic bool CheckForModifiableLvalue(Expr *E, SourceLocation Loc, Sema &S) {\n  case Expr::MLV_ConstQualified:\n    // Use a specialized diagnostic when we\'re assigning to an object\n    // from an enclosing function or block.\n    if (NonConstCaptureKind NCCK = isReferenceToNonConstCapture(S, E)) {\n      if (NCCK == NCCK_Block)\n      else\n        DiagID = diag::err_lambda_decl_ref_not_modifiable_lvalue;"}}
},
},
["note_overridden_method"]={
["err_lambda_decl_specifier_repeated"]={
[c]="overridden method is here",
[j]="... cannot appear multiple times in a lambda declarator",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="overridden method is here",
[e]="%select{\'mutable\'|\'static\'|\'constexpr\'|\'consteval\'}0 cannot appear multiple times in a lambda declarator",
[b]=q,
[f]=n,
[a]="overridden method is here",
[g]="(?:\'mutable\'|\'static\'|\'constexpr\'|\'consteval\') cannot appear multiple times in a lambda declarator",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"66a8ca0f7fef",1358289788,"When checking availability attributes for consistency between an"}
[b]={"a734ab980865",1459008697,"[Cxx1z-constexpr-lambda-P0170R1]  Support parsing of constexpr specifier (and its inference) on lamb..."},
[k]={{V,1079,"static void tryConsumeLambdaSpecifierToken(Parser &P, SourceLocation &MutableLoc, SourceLocation &StaticLoc, SourceLocation &ConstexprLoc, SourceLocation &ConstevalLoc, SourceLocation &DeclEndLoc) {\n  auto ConsumeLocation = [&P, &DeclEndLoc](SourceLocation &SpecifierLoc, int DiagIndex) {\n    if (SpecifierLoc.isValid()) {\n      P.Diag(P.getCurToken().getLocation(), diag::err_lambda_decl_specifier_repeated) << DiagIndex << FixItHint::CreateRemoval(P.getCurToken().getLocation());"}}
},
},
["note_overridden_virtual_function"]={
["err_lambda_impcap"]={
[c]="overridden virtual function is here",
[j]="variable A cannot be implicitly captured in a lambda with no capture-default specified",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="overridden virtual function is here",
[e]="variable %0 cannot be implicitly captured in a lambda with no capture-default specified",
[b]=q,
[f]=n,
[a]="overridden virtual function is here",
[g]="variable (.*?) cannot be implicitly captured in a lambda with no capture\\-default specified",
[g]=p,
[h]=a,
[e]=o,
[i]=S,
[i]={"f2a2e338ffec",1242263344,"Add return type checking for overriding virtual functions. We currently don\'t check covariance but t..."}
[b]={"24af85047046",1328309257,"Implement implicit capture for lambda expressions."},
[k]={{q,17057,"bool Sema::tryCaptureVariable(ValueDecl *Var, SourceLocation ExprLoc, TryCaptureKind Kind, SourceLocation EllipsisLoc, bool BuildAndDiagnose, QualType &CaptureType, QualType &DeclRefType, const unsigned *const FunctionScopeIndexToStopAt) {\n  do {\n    // If we are instantiating a generic lambda call operator body,\n    // we do not want to capture new variables. What was captured\n    // during either a lambdas transformation or initial parsing\n    // should be used.\n    if (isGenericLambdaCallOperatorSpecialization(DC)) {\n      if (BuildAndDiagnose) {\n        if (LSI->ImpCaptureStyle == CapturingScopeInfo::ImpCap_None) {\n          Diag(ExprLoc, diag::err_lambda_impcap) << Var;"},{q,17126,"bool Sema::tryCaptureVariable(ValueDecl *Var, SourceLocation ExprLoc, TryCaptureKind Kind, SourceLocation EllipsisLoc, bool BuildAndDiagnose, QualType &CaptureType, QualType &DeclRefType, const unsigned *const FunctionScopeIndexToStopAt) {\n  do {\n    if (CSI->ImpCaptureStyle == CapturingScopeInfo::ImpCap_None && !Explicit) {\n      // No capture-default, and this is not an explicit capture\n      // so cannot capture this variable.\n      if (BuildAndDiagnose) {\n        Diag(ExprLoc, diag::err_lambda_impcap) << Var;"}}
},
},
["note_ovl_ambiguous_eqeq_reversed_self_non_const"]={
["err_lambda_in_constant_expression"]={
[c]="mark \'operator==\' as const or add a matching \'operator!=\' to resolve the ambiguity",
[j]="a lambda expression may not appear inside of a constant expression",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="mark \'operator==\' as const or add a matching \'operator!=\' to resolve the ambiguity",
[e]="a lambda expression may not appear inside of a constant expression",
[b]=q,
[f]=n,
[a]="mark \'operator\\=\\=\' as const or add a matching \'operator\\!\\=\' to resolve the ambiguity",
[g]="a lambda expression may not appear inside of a constant expression",
[g]=p,
[h]=a,
[e]=o,
[i]=S,
[i]={N,1625925174,O}
[b]={"9adc361008e2",1382692372,"Sema: Do not allow lambda expressions to appear inside of constant expressions"},
[k]={{q,16019,"void Sema::PopExpressionEvaluationContext() {\n  if (!Rec.Lambdas.empty()) {\n    if (!getLangOpts().CPlusPlus20 && (Rec.ExprContext == ExpressionKind::EK_TemplateArgument || Rec.isUnevaluated() || (Rec.isConstantEvaluated() && !getLangOpts().CPlusPlus17))) {\n      if (Rec.isUnevaluated()) {\n      } else if (Rec.isConstantEvaluated() && !getLangOpts().CPlusPlus17) {\n        D = diag::err_lambda_in_constant_expression;"}}
},
},
["note_ovl_ambiguous_oper_binary_reversed_candidate"]={
["err_lambda_in_invalid_context"]={
[c]="ambiguous candidate function with reversed arguments",
[j]="a lambda expression cannot appear in this context",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="ambiguous candidate function with reversed arguments",
[e]="a lambda expression cannot appear in this context",
[b]=q,
[f]=n,
[a]="ambiguous candidate function with reversed arguments",
[g]="a lambda expression cannot appear in this context",
[g]=p,
[h]=a,
[e]=o,
[i]=S,
[i]={kb,1567434909,mb}
[b]={"b6d5c5871857",1531421141,"[C++17] Disallow lambdas in template parameters (PR33696)."},
[k]={{q,16023,"void Sema::PopExpressionEvaluationContext() {\n  if (!Rec.Lambdas.empty()) {\n    if (!getLangOpts().CPlusPlus20 && (Rec.ExprContext == ExpressionKind::EK_TemplateArgument || Rec.isUnevaluated() || (Rec.isConstantEvaluated() && !getLangOpts().CPlusPlus17))) {\n      if (Rec.isUnevaluated()) {\n      } else if (Rec.isConstantEvaluated() && !getLangOpts().CPlusPlus17) {\n      } else if (Rec.ExprContext == ExpressionKind::EK_TemplateArgument) {\n        D = diag::err_lambda_in_invalid_context;"}}
},
},
["note_ovl_ambiguous_oper_binary_reversed_self"]={
["err_lambda_incomplete_result"]={
[c]="ambiguity is between a regular call to this operator and a call with the argument order reversed",
[j]="incomplete result type A in lambda expression",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="ambiguity is between a regular call to this operator and a call with the argument order reversed",
[e]="incomplete result type %0 in lambda expression",
[b]=q,
[f]=n,
[a]="ambiguity is between a regular call to this operator and a call with the argument order reversed",
[g]="incomplete result type (.*?) in lambda expression",
[g]=p,
[h]=a,
[e]=o,
[i]=S,
[i]={wb,1576908663,vb}
[b]={"621003e7b956",1329254444,"Check the return type of lambda expressions."},
[k]={{"clang/lib/Sema/SemaLambda.cpp",377,"static void buildLambdaScopeReturnType(Sema &S, LambdaScopeInfo *LSI, CXXMethodDecl *CallOperator, bool ExplicitResultType) {\n  if (ExplicitResultType) {\n    if (!LSI->ReturnType->isDependentType() && !LSI->ReturnType->isVoidType())\n      S.RequireCompleteType(CallOperator->getBeginLoc(), LSI->ReturnType, diag::err_lambda_incomplete_result);"}}
},
},
["note_ovl_ambiguous_oper_binary_selected_candidate"]={
["err_lambda_return_init_list"]={
[c]="candidate function with non-reversed arguments",
[j]="cannot deduce lambda return type from initializer list",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate function with non-reversed arguments",
[e]="cannot deduce lambda return type from initializer list",
[b]=q,
[f]=n,
[a]="candidate function with non\\-reversed arguments",
[g]="cannot deduce lambda return type from initializer list",
[g]=p,
[h]=a,
[e]=o,
[i]=S,
[i]={wb,1576908663,vb}
[b]={"940a550f0d35",1328812839,"Don\'t allow deduction of a lambda result type from an initializer"},
[k]={{E,3130,"/// ActOnCapScopeReturnStmt - Utility routine to type-check return statements\n/// for capturing scopes.\n///\nStmtResult Sema::ActOnCapScopeReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp, NamedReturnInfo &NRInfo, bool SupressSimplerImplicitMoves) {\n  if (HasDeducedReturnType) {\n  } else if (CurCap->HasImplicitReturnType) {\n    // For blocks/lambdas with implicit return types, we check each return\n    // statement individually, and deduce the common return type when the block\n    // or lambda is completed.\n    // FIXME: Fold this into the \'auto\' codepath above.\n    if (RetValExp && !isa<InitListExpr>(RetValExp)) {\n    } else {\n      if (RetValExp) {\n        Diag(ReturnLoc, diag::err_lambda_return_init_list) << RetValExp->getSourceRange();"},{E,3265,"/// Deduce the return type for a function from a returned expression, per\n/// C++1y [dcl.spec.auto]p6.\nbool Sema::DeduceFunctionTypeFromReturnExpr(FunctionDecl *FD, SourceLocation ReturnLoc, Expr *RetExpr, const AutoType *AT) {\n  if (RetExpr && isa<InitListExpr>(RetExpr)) {\n    Diag(RetExpr->getExprLoc(), getCurLambda() ? diag::err_lambda_return_init_list : diag::err_auto_fn_return_init_list) << RetExpr->getSourceRange();"}}
},
},
["note_ovl_builtin_candidate"]={
["err_lambda_template_parameter_list_empty"]={
[c]="built-in candidate A",
[j]="lambda template parameter list cannot be empty",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="built-in candidate %0",
[e]="lambda template parameter list cannot be empty",
[b]=q,
[f]=n,
[a]="built\\-in candidate (.*?)",
[g]="lambda template parameter list cannot be empty",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={kb,1567434909,mb}
[b]={"8205a814a691",1556966986,"[c++20] Implement P0428R2 - Familiar template syntax for generic lambdas"},
[k]={{V,1212,"/// ParseLambdaExpressionAfterIntroducer - Parse the rest of a lambda\n/// expression.\nExprResult Parser::ParseLambdaExpressionAfterIntroducer(LambdaIntroducer &Intro) {\n  if (Tok.is(tok::less)) {\n    if (TemplateParams.empty()) {\n      Diag(RAngleLoc, diag::err_lambda_template_parameter_list_empty);"}}
},
},
["note_ovl_candidate"]={
["err_lambda_unevaluated_operand"]={
[c]="candidate .........",
[j]="lambda expression in an unevaluated operand",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'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",
[e]="lambda expression in an unevaluated operand",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?))(?:| has different class(?: \\(expected (.*?) but has (.*?)\\)|)| has different number of parameters \\(expected (.*?) but has (.*?)\\)| has type mismatch at (.*?) parameter(?: \\(expected (.*?) but has (.*?)\\)|)| has different return type(?: \\((.*?) expected but has (.*?)\\)|)| has different qualifiers \\(expected (.*?) but found (.*?)\\)| has different exception specification)",
[g]="lambda expression in an unevaluated operand",
[g]=p,
[h]=a,
[e]=o,
[i]=S,
[i]={"fd0b2f8fe486",1262770994,"Improve the diagnostics used to report implicitly-generated class members"}
[b]={"896254916416",1328775283,"Implement C++ [expr.prim.lambda]p2, which bans lambda expressions in"},
[k]={{q,16013,"void Sema::PopExpressionEvaluationContext() {\n  if (!Rec.Lambdas.empty()) {\n    if (!getLangOpts().CPlusPlus20 && (Rec.ExprContext == ExpressionKind::EK_TemplateArgument || Rec.isUnevaluated() || (Rec.isConstantEvaluated() && !getLangOpts().CPlusPlus17))) {\n      if (Rec.isUnevaluated()) {\n        D = diag::err_lambda_unevaluated_operand;"}}
},
},
["note_ovl_candidate_arity"]={
["err_language_linkage_spec_unknown"]={
[c]="candidate ...... not viable: requires... A argumentB, but C was provided",
[j]="unknown linkage language",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'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",
[e]="unknown linkage language",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: requires(?: at least| at most|) (.*?) argument(.*?), but (.*?) (?:was|were) provided",
[g]="unknown linkage language",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"e1ac8d174220",1263342319,"Improve the reporting of non-viable overload candidates by noting the reason"}
[b]={"4ee696d55cbb",1392679527,"PR18870: Parse language linkage specifiers properly if the string-literal is"},
[k]={{r,14092,"/// ActOnStartLinkageSpecification - Parsed the beginning of a C++\n/// linkage specification, including the language and (if present)\n/// the \'{\'. ExternLoc is the location of the \'extern\', Lang is the\n/// language string literal. LBraceLoc, if valid, provides the location of\n/// the \'{\' brace. Otherwise, this linkage specification does not\n/// have any braces.\nDecl *Sema::ActOnStartLinkageSpecification(Scope *S, SourceLocation ExternLoc, Expr *LangStr, SourceLocation LBraceLoc) {\n  if (Lang == \"C\")\n  else if (Lang == \"C++\")\n  else {\n    Diag(LangStr->getExprLoc(), diag::err_language_linkage_spec_unknown) << LangStr->getSourceRange();"}}
},
},
["note_ovl_candidate_arity_one"]={
["err_late_asm_label_name"]={
[c]="candidate ...... not viable: ... argument A, but no arguments were provided",
[j]="cannot apply asm label to ... after its first use",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'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",
[e]="cannot apply asm label to %select{variable|function}0 after its first use",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: (?:requires at least|allows at most single|requires single) argument (.*?), but (?:no|(.*?)) arguments were provided",
[g]="cannot apply asm label to (?:variable|function) after its first use",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"10ff50d7d8d6",1336713401,"PR11857: When the wrong number of arguments are provided for a function"}
[b]={"6ee53bc0850c",1449869335,"Error on redeclaring with a conflicting asm label and on redeclaring with an asm label after the fir..."},
[k]={{p,2929,"/// mergeDeclAttributes - Copy attributes from the Old decl to the New one.\nvoid Sema::mergeDeclAttributes(NamedDecl *New, Decl *Old, AvailabilityMergeKind AMK) {\n  if (AsmLabelAttr *NewA = New->getAttr<AsmLabelAttr>()) {\n    if (AsmLabelAttr *OldA = Old->getAttr<AsmLabelAttr>()) {\n    } else if (Old->isUsed()) {\n      Diag(New->getLocation(), diag::err_late_asm_label_name) << isa<FunctionDecl>(Old) << New->getAttr<AsmLabelAttr>()->getRange();"}}
},
},
["note_ovl_candidate_bad_addrspace"]={
["err_lexing_char"]={
[c]="candidate ...... not viable: cannot ... A ... B in C argument",
[j]="failure when lexing a character literal",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'operator<=>)\'|inherited constructor}0%select{| template| %2}1 not viable: cannot %select{pass pointer to|bind reference in}5 %3 %select{as a pointer to|to object in}5 %4 in %ordinal6 argument",
[e]="failure when lexing a character literal",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: cannot (?:pass pointer to|bind reference in) (.*?) (?:as a pointer to|to object in) (.*?) in (.*?) argument",
[g]="failure when lexing a character literal",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"47000997193c",1263439737,"Improve overload diagnostics some more by calling out qualifier mismatches"}
[b]={M,1625925174,N},
[k]={{W,1509,"/// \\verbatim\n///      user-defined-character-literal: [C++11 lex.ext]\n///        character-literal ud-suffix\n///      ud-suffix:\n///        identifier\n///      character-literal: [C++11 lex.ccon]\n///        \' c-char-sequence \'\n///        u\' c-char-sequence \'\n///        U\' c-char-sequence \'\n///        L\' c-char-sequence \'\n///        u8\' c-char-sequence \' [C++1z lex.ccon]\n///      c-char-sequence:\n///        c-char\n///        c-char-sequence c-char\n///      c-char:\n///        any member of the source character set except the single-quote \',\n///          backslash \\, or new-line character\n///        escape-sequence\n///        universal-character-name\n///      escape-sequence:\n///        simple-escape-sequence\n///        octal-escape-sequence\n///        hexadecimal-escape-sequence\n///      simple-escape-sequence:\n///        one of \\\' \\\" \\? \\\\ \\a \\b \\f \\n \\r \\t \\v\n///      octal-escape-sequence:\n///        \\ octal-digit\n///        \\ octal-digit octal-digit\n///        \\ octal-digit octal-digit octal-digit\n///      hexadecimal-escape-sequence:\n///        \\x hexadecimal-digit\n///        hexadecimal-escape-sequence hexadecimal-digit\n///      universal-character-name: [C++11 lex.charset]\n///        \\u hex-quad\n///        \\U hex-quad hex-quad\n///      hex-quad:\n///        hex-digit hex-digit hex-digit hex-digit\n/// \\endverbatim\n///\nCharLiteralParser::CharLiteralParser(const char *begin, const char *end, SourceLocation Loc, Preprocessor &PP, tok::TokenKind kind) {\n  // Skip over the entry quote.\n  if (begin[0] != \'\\\'\') {\n    PP.Diag(Loc, diag::err_lexing_char);"}}
},
},
["note_ovl_candidate_bad_addrspace_this"]={
["err_lexing_numeric"]={
[c]="candidate ...... not viable: \'this\' object is in A, but method expects object in B",
[j]="failure when lexing a numeric literal",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'operator<=>)\'|inherited constructor}0%select{| template| %2}1 not viable: \'this\' object is in %3, but method expects object in %4",
[e]="failure when lexing a numeric literal",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: \'this\' object is in (.*?), but method expects object in (.*?)",
[g]="failure when lexing a numeric literal",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"fe17b30a7957",1575504770,"[attributes][analyzer] Add annotations for handles."}
[b]={M,1625925174,N},
[k]={{W,790,"///      integer-constant: [C99 6.4.4.1]\n///        decimal-constant integer-suffix\n///        octal-constant integer-suffix\n///        hexadecimal-constant integer-suffix\n///        binary-literal integer-suffix [GNU, C++1y]\n///      user-defined-integer-literal: [C++11 lex.ext]\n///        decimal-literal ud-suffix\n///        octal-literal ud-suffix\n///        hexadecimal-literal ud-suffix\n///        binary-literal ud-suffix [GNU, C++1y]\n///      decimal-constant:\n///        nonzero-digit\n///        decimal-constant digit\n///      octal-constant:\n///        0\n///        octal-constant octal-digit\n///      hexadecimal-constant:\n///        hexadecimal-prefix hexadecimal-digit\n///        hexadecimal-constant hexadecimal-digit\n///      hexadecimal-prefix: one of\n///        0x 0X\n///      binary-literal:\n///        0b binary-digit\n///        0B binary-digit\n///        binary-literal binary-digit\n///      integer-suffix:\n///        unsigned-suffix [long-suffix]\n///        unsigned-suffix [long-long-suffix]\n///        long-suffix [unsigned-suffix]\n///        long-long-suffix [unsigned-sufix]\n///      nonzero-digit:\n///        1 2 3 4 5 6 7 8 9\n///      octal-digit:\n///        0 1 2 3 4 5 6 7\n///      hexadecimal-digit:\n///        0 1 2 3 4 5 6 7 8 9\n///        a b c d e f\n///        A B C D E F\n///      binary-digit:\n///        0\n///        1\n///      unsigned-suffix: one of\n///        u U\n///      long-suffix: one of\n///        l L\n///      long-long-suffix: one of\n///        ll LL\n///\n///      floating-constant: [C99 6.4.4.2]\n///        TODO: add rules...\n///\nNumericLiteralParser::NumericLiteralParser(StringRef TokSpelling, SourceLocation TokLoc, const SourceManager &SM, const LangOptions &LangOpts, const TargetInfo &Target, DiagnosticsEngine &Diags) : SM(SM), LangOpts(LangOpts), Diags(Diags), ThisTokBegin(TokSpelling.begin()), ThisTokEnd(TokSpelling.end()) {\n  // This routine assumes that the range begin/end matches the regex for integer\n  // and FP constants (specifically, the \'pp-number\' regex), and assumes that\n  // the byte at \"*end\" is both valid and not part of the regex. Because of\n  // this, it doesn\'t have to check for \'overscan\' in various places.\n  if (isPreprocessingNumberBody(*ThisTokEnd)) {\n    Diags.Report(TokLoc, diag::err_lexing_numeric);"}}
},
},
["note_ovl_candidate_bad_arc_conv"]={
["err_lexing_string"]={
[c]="candidate ...... not viable: cannot implicitly convert argument of type A to B for ... under ARC",
[j]="failure when lexing a string literal",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'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",
[e]="failure when lexing a string literal",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: cannot implicitly convert argument (?:of type (.*?) to (.*?)|type to parameter type) for (?:(.*?) argument|object argument) under ARC",
[g]="failure when lexing a string literal",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"a644f9cb73a1",1311182049,"arc-objc++: Issue an arc specific diagnostic when overload resolution"}
[b]={"9933e3ac88ad",1336067432,"In StringLiteralParser::init, make sure we emit an error when"},
[k]={{W,2063,"void StringLiteralParser::DiagnoseLexingError(SourceLocation Loc) {\n  if (Diags)\n    Diags->Report(Loc, diag::err_lexing_string);"}}
},
},
["note_ovl_candidate_bad_base_to_derived_conv"]={
["err_lifetimebound_ctor_dtor"]={
[c]="candidate ...... not viable: cannot ... ... A to ... B for C argument",
[j]="\'lifetimebound\' attribute cannot be applied to a ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'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",
[e]="\'lifetimebound\' attribute cannot be applied to a %select{constructor|destructor}0",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: cannot (?:convert from|convert from|bind) (?:base class pointer|superclass|base class object of type) (.*?) to (?:derived class pointer|subclass|derived class reference) (.*?) for (.*?) argument",
[g]="\'lifetimebound\' attribute cannot be applied to a (?:constructor|destructor)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"fb0c0d37b7f2",1277950485,"Extend the \"cannot convert from base class pointer to derived class"}
[b]={"f4e248c23e05",1533083605,"[P0936R0] add [[clang::lifetimebound]] attribute"},
[k]={{p,6252,"static void checkAttributesAfterMerging(Sema &S, NamedDecl &ND) {\n  // Check the attributes on the function type, if any.\n  if (const auto *FD = dyn_cast<FunctionDecl>(&ND)) {\n    for (TypeLoc TL = FD->getTypeSourceInfo()->getTypeLoc(); (ATL = TL.getAsAdjusted<AttributedTypeLoc>()); TL = ATL.getModifiedLoc()) {\n      // The [[lifetimebound]] attribute can be applied to the implicit object\n      // parameter of a non-static member function (other than a ctor or dtor)\n      // by applying it to the function type.\n      if (const auto *A = ATL.getAttrAs<LifetimeBoundAttr>()) {\n        if (!MD || MD->isStatic()) {\n        } else if (isa<CXXConstructorDecl>(MD) || isa<CXXDestructorDecl>(MD)) {\n          S.Diag(A->getLocation(), diag::err_lifetimebound_ctor_dtor) << isa<CXXDestructorDecl>(MD) << A->getRange();"}}
},
},
["note_ovl_candidate_bad_conv"]={
["err_lifetimebound_no_object_param"]={
[c]="candidate ...... not viable: no known conversion from A to B for ......",
[j]="\'lifetimebound\' attribute cannot be applied; ...member function has no implicit object parameter",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'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",
[e]="\'lifetimebound\' attribute cannot be applied; %select{static |non-}0member function has no implicit object parameter",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: no known conversion (?:from (.*?) to (.*?)|from argument type to parameter type) for (?:(.*?) argument|object argument)(?:|; dereference the argument with \\*|; take the address of the argument with &|; remove \\*|; remove &)",
[g]="\'lifetimebound\' attribute cannot be applied; (?:static |non\\-)member function has no implicit object parameter",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"e1ac8d174220",1263342319,"Improve the reporting of non-viable overload candidates by noting the reason"}
[b]={"f4e248c23e05",1533083605,"[P0936R0] add [[clang::lifetimebound]] attribute"},
[k]={{p,6250,"static void checkAttributesAfterMerging(Sema &S, NamedDecl &ND) {\n  // Check the attributes on the function type, if any.\n  if (const auto *FD = dyn_cast<FunctionDecl>(&ND)) {\n    for (TypeLoc TL = FD->getTypeSourceInfo()->getTypeLoc(); (ATL = TL.getAsAdjusted<AttributedTypeLoc>()); TL = ATL.getModifiedLoc()) {\n      // The [[lifetimebound]] attribute can be applied to the implicit object\n      // parameter of a non-static member function (other than a ctor or dtor)\n      // by applying it to the function type.\n      if (const auto *A = ATL.getAttrAs<LifetimeBoundAttr>()) {\n        if (!MD || MD->isStatic()) {\n          S.Diag(A->getLocation(), diag::err_lifetimebound_no_object_param) << !MD << A->getRange();"}}
},
},
["note_ovl_candidate_bad_conv_incomplete"]={
["err_list_init_in_parens"]={
[c]="candidate ...... not viable: cannot convert argument of incomplete type A to B for ......",
[j]="cannot initialize ... type A with a parenthesized initializer list",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'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",
[e]="cannot initialize %select{non-class|reference}0 type %1 with a parenthesized initializer list",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: cannot convert argument of incomplete type (?:(.*?) to (.*?)|to parameter type) for (?:(.*?) argument|object argument)(?:|; dereference the argument with \\*|; take the address of the argument with &|; remove \\*|; remove &)",
[g]="cannot initialize (?:non\\-class|reference) type (.*?) with a parenthesized initializer list",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"6d174646dd1a",1264234249,"Produce a special diagnostic when users call a function with an argument of"}
[b]={"3852637005b1",1478965135,"Use descriptive message if list initializer is incorrectly parenthesized."},
[k]={{L,8119,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n  case FK_ParenthesizedListInitForReference:\n    S.Diag(Kind.getLocation(), diag::err_list_init_in_parens) << 1 << Entity.getType() << Args[0]->getSourceRange();"},{L,8294,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n  case FK_ParenthesizedListInitForScalar:\n    S.Diag(Kind.getLocation(), diag::err_list_init_in_parens) << 0 << Entity.getType() << Args[0]->getSourceRange();"}}
},
},
["note_ovl_candidate_bad_cvr"]={
["err_literal_operator_bad_param_count"]={
[c]="candidate ...... not viable: A argument (B) would lose ... qualifier...",
[j]="non-template literal operator must have one or two parameters",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'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",
[e]="non-template literal operator must have one or two parameters",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: (.*?) argument \\((.*?)\\) would lose (?:const|restrict|const and restrict|volatile|const and volatile|volatile and restrict|const, volatile, and restrict) qualifier(?:||s||s|s|s)",
[g]="non\\-template literal operator must have one or two parameters",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"47000997193c",1263439737,"Improve overload diagnostics some more by calling out qualifier mismatches"}
[b]={Mb,1455667444,Jb},
[k]={{r,14046,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n  // template <char...> type operator \"\" name() and\n  // template <class T, T...> type operator \"\" name() are the only valid\n  // template signatures, and the only valid signatures with no parameters.\n  //\n  // C++20 also allows template <SomeClass T> type operator \"\" name().\n  if (TpDecl) {\n  } else if (FnDecl->param_size() == 1) {\n  } else if (FnDecl->param_size() == 2) {\n  } else {\n    Diag(FnDecl->getLocation(), diag::err_literal_operator_bad_param_count);"}}
},
},
["note_ovl_candidate_bad_cvr_this"]={
["err_literal_operator_default_argument"]={
[c]="candidate ...... not viable: \'this\' argument has type A, but method is not marked ...",
[j]="literal operator cannot have a default argument",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'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",
[e]="literal operator cannot have a default argument",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: \'this\' argument has type (.*?), but method is not marked (?:const|restrict|const or restrict|volatile|const or volatile|volatile or restrict|const, volatile, or restrict)",
[g]="literal operator cannot have a default argument",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"47000997193c",1263439737,"Improve overload diagnostics some more by calling out qualifier mismatches"}
[b]={"768ceccc75f0",1331280982,"Literal operators can\'t have default arguments."},
[k]={{r,14056,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n  // A parameter-declaration-clause containing a default argument is not\n  // equivalent to any of the permitted forms.\n  for (auto *Param : FnDecl->parameters()) {\n    if (Param->hasDefaultArg()) {\n      Diag(Param->getDefaultArgRange().getBegin(), diag::err_literal_operator_default_argument) << Param->getDefaultArgRange();"}}
},
},
["note_ovl_candidate_bad_deduction"]={
["err_literal_operator_extern_c"]={
[c]="candidate template ignored: failed template argument deduction",
[j]="literal operator must have C++ linkage",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: failed template argument deduction",
[e]="literal operator must have C++ linkage",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: failed template argument deduction",
[g]="literal operator must have C\\+\\+ linkage",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"8b9ed55bfbea",1265050406,"Note that an overload candidate was non-viable because template argument"}
[b]={"72eebee0cb6a",1330854076,"Add tests for [over.literal]. Fix a few bugs which were exposed by the tests."},
[k]={{r,13947,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n  if (FnDecl->isExternC()) {\n    Diag(FnDecl->getLocation(), diag::err_literal_operator_extern_c);"}}
},
},
["note_ovl_candidate_bad_gc"]={
["err_literal_operator_id_outside_namespace"]={
[c]="candidate ...... not viable: ... argument (A) has ... ownership, but parameter has ... ownership",
[j]="non-namespace scope \'A\' cannot have a literal operator member",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'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",
[e]="non-namespace scope \'%0\' cannot have a literal operator member",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: (?:(.*?)|\'this\') argument \\((.*?)\\) has (?:no|__weak|__strong) ownership, but parameter has (?:no|__weak|__strong) ownership",
[g]="non\\-namespace scope \'(.*?)\' cannot have a literal operator member",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"aec25847606f",1303859806,"When computing Objective-C pointer conversions in C++, retain"}
[b]={"d091dc179dbd",1386205113,"Reject template-ids containing literal-operator-ids that have a dependent"},
[k]={{B,483,"bool Sema::checkLiteralOperatorId(const CXXScopeSpec &SS, const UnqualifiedId &Name, bool IsUDSuffix) {\n  case NestedNameSpecifier::TypeSpecWithTemplate:\n    Diag(Name.getBeginLoc(), diag::err_literal_operator_id_outside_namespace) << SS.getScopeRep();"}}
},
},
["note_ovl_candidate_bad_list_argument"]={
["err_literal_operator_invalid_param"]={
[c]="candidate ...... not viable: ... argument to A",
[j]="parameter of literal operator must have type \'unsigned long long\', \'long double\', \'char\', \'wchar_t\', \'char16_t\', \'char32_t\', or \'const char *\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'operator<=>)\'|inherited constructor}0%select{| template| %2}1 not viable: %select{cannot convert initializer list|too few initializers in list|too many initializers in list}7 argument to %4",
[e]="parameter of literal operator must have type \'unsigned long long\', \'long double\', \'char\', \'wchar_t\', \'char16_t\', \'char32_t\', or \'const char *\'",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: (?:cannot convert initializer list|too few initializers in list|too many initializers in list) argument to (.*?)",
[g]="parameter of literal operator must have type \'unsigned long long\', \'long double\', \'char\', \'wchar_t\', \'char16_t\', \'char32_t\', or \'const char \\*\'",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"a72462cdf43b",1316886512,"Add a special note for overload resolution when an initializer list argument"}
[b]={Mb,1455667444,Jb},
[k]={{r,14000,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n  // template <char...> type operator \"\" name() and\n  // template <class T, T...> type operator \"\" name() are the only valid\n  // template signatures, and the only valid signatures with no parameters.\n  //\n  // C++20 also allows template <SomeClass T> type operator \"\" name().\n  if (TpDecl) {\n  } else if (FnDecl->param_size() == 1) {\n    // Only unsigned long long int, long double, any character type, and const\n    // char * are allowed as the only parameters.\n    if (ParamType->isSpecificBuiltinType(BuiltinType::ULongLong) || ParamType->isSpecificBuiltinType(BuiltinType::LongDouble) || Context.hasSameType(ParamType, Context.CharTy) || Context.hasSameType(ParamType, Context.WideCharTy) || Context.hasSameType(ParamType, Context.Char8Ty) || Context.hasSameType(ParamType, Context.Char16Ty) || Context.hasSameType(ParamType, Context.Char32Ty)) {\n    } else if (const PointerType *Ptr = ParamType->getAs<PointerType>()) {\n    } else if (ParamType->isRealFloatingType()) {\n    } else if (ParamType->isIntegerType()) {\n    } else {\n      Diag(Param->getSourceRange().getBegin(), diag::err_literal_operator_invalid_param) << ParamType << Param->getSourceRange();"}}
},
},
["note_ovl_candidate_bad_overload"]={
["err_literal_operator_outside_namespace"]={
[c]="candidate ...... not viable: no overload of A matching B for C argument",
[j]="literal operator A must be in a namespace or global scope",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'operator<=>)\'|inherited constructor}0%select{| template| %2}1 not viable: no overload of %4 matching %3 for %ordinal5 argument",
[e]="literal operator %0 must be in a namespace or global scope",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: no overload of (.*?) matching (.*?) for (.*?) argument",
[g]="literal operator (.*?) must be in a namespace or global scope",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"fb7ad0f57a0c",1265078572,"Improve the diagnostic used when an incompatible overload set is passed"}
[b]={"c88db06565fc",1263373262,"Implement semantic checking for C++ literal operators."},
[k]={{r,13942,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n  if (isa<CXXMethodDecl>(FnDecl)) {\n    Diag(FnDecl->getLocation(), diag::err_literal_operator_outside_namespace) << FnDecl->getDeclName();"}}
},
},
["note_ovl_candidate_bad_ownership"]={
["err_literal_operator_param"]={
[c]="candidate ...... not viable: ... argument (A) has ... ownership, but parameter has ... ownership",
[j]="invalid literal operator parameter type A, did you mean B?",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'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",
[e]="invalid literal operator parameter type %0, did you mean %1?",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: (?:(.*?)|\'this\') argument \\((.*?)\\) has (?:no|__unsafe_unretained|__strong|__weak|__autoreleasing) ownership, but parameter has (?:no|__unsafe_unretained|__strong|__weak|__autoreleasing) ownership",
[g]="invalid literal operator parameter type (.*?), did you mean (.*?)\\?",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"cff00d9c127c",1308874139,"Rename objc_lifetime -> objc_ownership, and modify diagnostics to talk about \'ownership\', not \'lifet..."}
[b]={Mb,1455667444,Jb},
[k]={{r,13987,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n  // template <char...> type operator \"\" name() and\n  // template <class T, T...> type operator \"\" name() are the only valid\n  // template signatures, and the only valid signatures with no parameters.\n  //\n  // C++20 also allows template <SomeClass T> type operator \"\" name().\n  if (TpDecl) {\n  } else if (FnDecl->param_size() == 1) {\n    // Only unsigned long long int, long double, any character type, and const\n    // char * are allowed as the only parameters.\n    if (ParamType->isSpecificBuiltinType(BuiltinType::ULongLong) || ParamType->isSpecificBuiltinType(BuiltinType::LongDouble) || Context.hasSameType(ParamType, Context.CharTy) || Context.hasSameType(ParamType, Context.WideCharTy) || Context.hasSameType(ParamType, Context.Char8Ty) || Context.hasSameType(ParamType, Context.Char16Ty) || Context.hasSameType(ParamType, Context.Char32Ty)) {\n    } else if (const PointerType *Ptr = ParamType->getAs<PointerType>()) {\n      // Pointer parameter must be a const char *.\n      if (!(Context.hasSameType(InnerType.getUnqualifiedType(), Context.CharTy) && InnerType.isConstQualified() && !InnerType.isVolatileQualified())) {\n        Diag(Param->getSourceRange().getBegin(), diag::err_literal_operator_param) << ParamType << \"\'const char *\'\" << Param->getSourceRange();"},{r,13992,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n  // template <char...> type operator \"\" name() and\n  // template <class T, T...> type operator \"\" name() are the only valid\n  // template signatures, and the only valid signatures with no parameters.\n  //\n  // C++20 also allows template <SomeClass T> type operator \"\" name().\n  if (TpDecl) {\} else if (FnDecl->param_size() == 1) {\n    // Only unsigned long long int, long double, any character type, and const\n    // char * are allowed as the only parameters.\n    if (ParamType->isSpecificBuiltinType(BuiltinType::ULongLong) || ParamType->isSpecificBuiltinType(BuiltinType::LongDouble) || Context.hasSameType(ParamType, Context.CharTy) || Context.hasSameType(ParamType, Context.WideCharTy) || Context.hasSameType(ParamType, Context.Char8Ty) || Context.hasSameType(ParamType, Context.Char16Ty) || Context.hasSameType(ParamType, Context.Char32Ty)) {\n    } else if (const PointerType *Ptr = ParamType->getAs<PointerType>()) {\n    } else if (ParamType->isRealFloatingType()) {\n      Diag(Param->getSourceRange().getBegin(), diag::err_literal_operator_param) << ParamType << Context.LongDoubleTy << Param->getSourceRange();"},{r,13996,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n  // template <char...> type operator \"\" name() and\n  // template <class T, T...> type operator \"\" name() are the only valid\n  // template signatures, and the only valid signatures with no parameters.\n  //\n  // C++20 also allows template <SomeClass T> type operator \"\" name().\n  if (TpDecl) {\n  } else if (FnDecl->param_size() == 1) {\n    // Only unsigned long long int, long double, any character type, and const\n    // char * are allowed as the only parameters.\n    if (ParamType->isSpecificBuiltinType(BuiltinType::ULongLong) || ParamType->isSpecificBuiltinType(BuiltinType::LongDouble) || Context.hasSameType(ParamType, Context.CharTy) || Context.hasSameType(ParamType, Context.WideCharTy) || Context.hasSameType(ParamType, Context.Char8Ty) || Context.hasSameType(ParamType, Context.Char16Ty) || Context.hasSameType(ParamType, Context.Char32Ty)) {\n    } else if (const PointerType *Ptr = ParamType->getAs<PointerType>()) {\n    } else if (ParamType->isRealFloatingType()) {\n    } else if (ParamType->isIntegerType()) {\n      Diag(Param->getSourceRange().getBegin(), diag::err_literal_operator_param) << ParamType << Context.UnsignedLongLongTy << Param->getSourceRange();"},{r,14016,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n  // template <char...> type operator \"\" name() and\n  // template <class T, T...> type operator \"\" name() are the only valid\n  // template signatures, and the only valid signatures with no parameters.\n  //\n  // C++20 also allows template <SomeClass T> type operator \"\" name().\n  if (TpDecl) {\n  } else if (FnDecl->param_size() == 1) {\n  } else if (FnDecl->param_size() == 2) {\n    if (!PT) {\n      Diag((*Param)->getSourceRange().getBegin(), diag::err_literal_operator_param) << FirstParamType << \"\'const char *\'\" << (*Param)->getSourceRange();"},{r,14023,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n  // template <char...> type operator \"\" name() and\n  // template <class T, T...> type operator \"\" name() are the only valid\n  // template signatures, and the only valid signatures with no parameters.\n  //\n  // C++20 also allows template <SomeClass T> type operator \"\" name().\n  if (TpDecl) {\n  } else if (FnDecl->param_size() == 1) {\n  } else if (FnDecl->param_size() == 2) {\n    // First parameter must be const\n    if (!PointeeType.isConstQualified() || PointeeType.isVolatileQualified()) {\n      Diag((*Param)->getSourceRange().getBegin(), diag::err_literal_operator_param) << FirstParamType << \"\'const char *\'\" << (*Param)->getSourceRange();"},{r,14032,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n  // template <char...> type operator \"\" name() and\n  // template <class T, T...> type operator \"\" name() are the only valid\n  // template signatures, and the only valid signatures with no parameters.\n  //\n  // C++20 also allows template <SomeClass T> type operator \"\" name().\n  if (TpDecl) {\n  } else if (FnDecl->param_size() == 1) {\n  } else if (FnDecl->param_size() == 2) {\n    // Only const char *, const wchar_t*, const char8_t*, const char16_t*, and\n    // const char32_t* are allowed as the first parameter to a two-parameter\n    // function\n    if (!(Context.hasSameType(InnerType, Context.CharTy) || Context.hasSameType(InnerType, Context.WideCharTy) || Context.hasSameType(InnerType, Context.Char8Ty) || Context.hasSameType(InnerType, Context.Char16Ty) || Context.hasSameType(InnerType, Context.Char32Ty))) {\n      Diag((*Param)->getSourceRange().getBegin(), diag::err_literal_operator_param) << FirstParamType << \"\'const char *\'\" << (*Param)->getSourceRange();"},{r,14042,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n  // template <char...> type operator \"\" name() and\n  // template <class T, T...> type operator \"\" name() are the only valid\n  // template signatures, and the only valid signatures with no parameters.\n  //\n  // C++20 also allows template <SomeClass T> type operator \"\" name().\n  if (TpDecl) {\n  } else if (FnDecl->param_size() == 1) {\n  } else if (FnDecl->param_size() == 2) {\n    if (!Context.hasSameType(SecondParamType, Context.getSizeType())) {\n      Diag((*Param)->getSourceRange().getBegin(), diag::err_literal_operator_param) << SecondParamType << Context.getSizeType() << (*Param)->getSourceRange();"}}
},
},
["note_ovl_candidate_bad_target"]={
["err_literal_operator_string_not_empty"]={
[c]="candidate ...... not viable: call to ... function from ... function",
[j]="string literal after \'operator\' must be \'\"\"\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'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",
[e]="string literal after \'operator\' must be \'\"\"\'",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: call to (?:__device__|__global__|__host__|__host__ __device__|invalid) function from (?:__device__|__global__|__host__|__host__ __device__|invalid) function",
[g]="string literal after \'operator\' must be \'\"\"\'",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"7277fe8aed6e",1317599380,"CUDA: diagnose invalid calls across targets"}
[b]={"d67aea28f6cb",1331004107,"User-defined literals: reject string and character UDLs in all places where the"},
[k]={{V,2520,"#include \"clang/Basic/OperatorKinds.def\"\n  if (getLangOpts().CPlusPlus11 && isTokenStringLiteral()) {\n    // The string literal must be empty.\n    if (!Literal.GetString().empty() || Literal.Pascal) {\n      DiagId = diag::err_literal_operator_string_not_empty;"}}
},
},
["note_ovl_candidate_bad_value_category"]={
["err_literal_operator_string_prefix"]={
[c]="candidate ...... not viable: expects an ... for ...",
[j]="string literal after \'operator\' cannot have an encoding prefix",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'operator<=>)\'|inherited constructor}0%select{| template| %2}1 not viable: expects an %select{lvalue|rvalue}5 for %select{%ordinal4 argument|object argument}3",
[e]="string literal after \'operator\' cannot have an encoding prefix",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: expects an (?:lvalue|rvalue) for (?:(.*?) argument|object argument)",
[g]="string literal after \'operator\' cannot have an encoding prefix",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={Mb,1590001902,Nb}
[b]={"7d182a790988",1331247962,"Fix a couple of issues with literal-operator-id parsing, and provide recovery"},
[k]={{V,2486,"#include \"clang/Basic/OperatorKinds.def\"\n  if (getLangOpts().CPlusPlus11 && isTokenStringLiteral()) {\n    while (isTokenStringLiteral()) {\n      if (!Tok.is(tok::string_literal) && !DiagId) {\n        DiagId = diag::err_literal_operator_string_prefix;"}}
},
},
["note_ovl_candidate_constraints_not_satisfied"]={
["err_literal_operator_template"]={
[c]="candidate ...... not viable: constraints not satisfied",
[j]="template parameter list for literal operator must be either \'char...\' or \'typename T, T...\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'operator<=>)\'|inherited constructor}0%select{| template| %2}1 not viable: constraints not satisfied",
[e]="template parameter list for literal operator must be either \'char...\' or \'typename T, T...\'",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) not viable\\: constraints not satisfied",
[g]="template parameter list for literal operator must be either \'char\\.\\.\\.\' or \'typename T, T\\.\\.\\.\'",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"349636d2bfc3",1575555459,"Implement VectorType conditional operator GNU extension."}
[b]={Mb,1455667444,Jb},
[k]={{r,13933,"static bool checkLiteralOperatorTemplateParameterList(Sema &SemaRef, FunctionTemplateDecl *TpDecl) {\n  SemaRef.Diag(TpDecl->getTemplateParameters()->getSourceRange().getBegin(), diag::err_literal_operator_template) << TpDecl->getTemplateParameters()->getSourceRange();"}}
},
},
["note_ovl_candidate_deduced_mismatch"]={
["err_literal_operator_template_with_params"]={
[c]="candidate template ignored: deduced type A of ...B parameter does not match adjusted type C of ...argumentD",
[j]="literal operator template cannot have any parameters",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="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",
[e]="literal operator template cannot have any parameters",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: deduced type (?:(.*?) of (?:|element of )(.*?) parameter does not match adjusted type (.*?) of (?:|element of )argument|of (?:|element of )(.*?) parameter does not match adjusted type of (?:|element of )argument)(.*?)",
[g]="literal operator template cannot have any parameters",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"9b534547250a",1451527374,"Improve diagnostic for the case where a function template candidate is rejected"}
[b]={Mb,1455667444,Jb},
[k]={{r,13967,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n  // template <char...> type operator \"\" name() and\n  // template <class T, T...> type operator \"\" name() are the only valid\n  // template signatures, and the only valid signatures with no parameters.\n  //\n  // C++20 also allows template <SomeClass T> type operator \"\" name().\n  if (TpDecl) {\n    if (FnDecl->param_size() != 0) {\n      Diag(FnDecl->getLocation(), diag::err_literal_operator_template_with_params);"}}
},
},
["note_ovl_candidate_deleted"]={
["err_loader_uninitialized_cant_init"]={
[c]="candidate ...... has been ...",
[j]="variable with \'loader_uninitialized\' attribute cannot have an initializer",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{function|function|function (with reversed parameter order)|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)|function (the implicit \'operator==\' for this \'operator<=>)\'|inherited constructor}0%select{| template| %2}1 has been %select{explicitly made unavailable|explicitly deleted|implicitly deleted}3",
[e]="variable with \'loader_uninitialized\' attribute cannot have an initializer",
[b]=q,
[f]=n,
[a]="candidate (?:function|function|function \\(with reversed parameter order\\)|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\\)|function \\(the implicit \'operator\\=\\=\' for this \'operator\\<\\=\\>\\)\'|inherited constructor)(?:| template| (.*?)) has been (?:explicitly made unavailable|explicitly deleted|implicitly deleted)",
[g]="variable with \'loader_uninitialized\' attribute cannot have an initializer",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"fd0b2f8fe486",1262770994,"Improve the diagnostics used to report implicitly-generated class members"}
[b]={T,1576908663,U},
[k]={{p,11589,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n  // The LoaderUninitialized attribute acts as a definition (of undef).\n  if (VDecl->hasAttr<LoaderUninitializedAttr>()) {\n    Diag(VDecl->getLocation(), diag::err_loader_uninitialized_cant_init);"}}
},
},
["note_ovl_candidate_disabled_by_enable_if"]={
["err_loader_uninitialized_extern_decl"]={
[c]="candidate template ignored: disabled by AB",
[j]="variable A cannot be declared both \'extern\' and with the \'loader_uninitialized\' attribute",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: disabled by %0%1",
[e]="variable %0 cannot be declared both \'extern\' and with the \'loader_uninitialized\' attribute",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: disabled by (.*?)(.*?)",
[g]="variable (.*?) cannot be declared both \'extern\' and with the \'loader_uninitialized\' attribute",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"6f8d2c6c9c34",1336540620,"A little tweak to the SFINAE condition reporting. Don\'t say:"}
[b]={T,1576908663,U},
[k]={{p,11984,"void Sema::ActOnUninitializedDecl(Decl *RealDecl) {\n  if (VarDecl *Var = dyn_cast<VarDecl>(RealDecl)) {\n    if (!Var->isInvalidDecl() && RealDecl->hasAttr<LoaderUninitializedAttr>()) {\n      if (Var->getStorageClass() == SC_Extern) {\n        Diag(Var->getLocation(), diag::err_loader_uninitialized_extern_decl) << Var;"}}
},
},
["note_ovl_candidate_disabled_by_function_cond_attr"]={
["err_loader_uninitialized_redeclaration"]={
[c]="candidate disabled: A",
[j]="redeclaration cannot add \'loader_uninitialized\' attribute",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate disabled: %0",
[e]="redeclaration cannot add \'loader_uninitialized\' attribute",
[b]=q,
[f]=n,
[a]="candidate disabled\\: (.*?)",
[g]="redeclaration cannot add \'loader_uninitialized\' attribute",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"177399e2277c",1483935134,"Add the diagnose_if attribute to clang."}
[b]={T,1576908663,U},
[k]={{p,2803,"/// checkNewAttributesAfterDef - If we already have a definition, check that\n/// there are no new attributes in this declaration.\nstatic void checkNewAttributesAfterDef(Sema &S, Decl *New, const Decl *Old) {\n  for (unsigned I = 0, E = NewAttributes.size(); I != E;) {\n    if (isa<C11NoReturnAttr>(NewAttribute)) {\n    } else if (isa<UuidAttr>(NewAttribute)) {\n    } else if (const AlignedAttr *AA = dyn_cast<AlignedAttr>(NewAttribute)) {\n    } else if (isa<LoaderUninitializedAttr>(NewAttribute)) {\n      // If there is a C definition followed by a redeclaration with this\n      // attribute then there are two different definitions. In C++, prefer the\n      // standard diagnostics.\n      if (!S.getLangOpts().CPlusPlus) {\n        S.Diag(NewAttribute->getLocation(), diag::err_loader_uninitialized_redeclaration);"}}
},
},
["note_ovl_candidate_disabled_by_requirement"]={
["err_loader_uninitialized_trivial_ctor"]={
[c]="candidate template ignored: requirement \'A\' was not satisfiedB",
[j]="variable with \'loader_uninitialized\' attribute must have a trivial default constructor",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: requirement \'%0\' was not satisfied%1",
[e]="variable with \'loader_uninitialized\' attribute must have a trivial default constructor",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: requirement \'(.*?)\' was not satisfied(.*?)",
[g]="variable with \'loader_uninitialized\' attribute must have a trivial default constructor",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"00fa10b43f25",1499286014,"Customize the SFINAE diagnostics for enable_if to provide the failed condition."}
[b]={T,1576908663,U},
[k]={{p,11994,"void Sema::ActOnUninitializedDecl(Decl *RealDecl) {\n  if (VarDecl *Var = dyn_cast<VarDecl>(RealDecl)) {\n    if (!Var->isInvalidDecl() && RealDecl->hasAttr<LoaderUninitializedAttr>()) {\n      if (CXXRecordDecl *RD = Var->getType()->getAsCXXRecordDecl()) {\n        if (!RD->hasTrivialDefaultConstructor()) {\n          Diag(Var->getLocation(), diag::err_loader_uninitialized_trivial_ctor);"}}
},
},
["note_ovl_candidate_explicit"]={
["err_local_cant_init"]={
[c]="explicit ... is not a candidate...",
[j]="\'__local\' variable cannot have an initializer",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="explicit %select{constructor|conversion function|deduction guide}0 is not a candidate%select{| (explicit specifier evaluates to true)}1",
[e]="\'__local\' variable cannot have an initializer",
[b]=q,
[f]=n,
[a]="explicit (?:constructor|conversion function|deduction guide) is not a candidate(?:| \\(explicit specifier evaluates to true\\))",
[g]="\'__local\' variable cannot have an initializer",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"349636d2bfc3",1575555459,"Implement VectorType conditional operator GNU extension."}
[b]={"2dbb708b8ade",1316466875,"OpenCL: introduce support for function scope __local variables"},
[k]={{p,11582,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n  // OpenCL 1.1 6.5.2: \"Variables allocated in the __local address space inside\n  // a kernel function cannot be initialized.\"\n  if (VDecl->getType().getAddressSpace() == LangAS::opencl_local) {\n    Diag(VDecl->getLocation(), diag::err_local_cant_init);"}}
},
},
["note_ovl_candidate_explicit_arg_mismatch_named"]={
["err_loongarch_builtin_requires_la32"]={
[c]="candidate template ignored: invalid explicitly-specified argument for template parameter A",
[j]="this builtin requires target: loongarch32",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: invalid explicitly-specified argument for template parameter %0",
[e]="this builtin requires target: loongarch32",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: invalid explicitly\\-specified argument for template parameter (.*?)",
[g]="this builtin requires target\\: loongarch32",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"1d72edd7c55a",1273346154,"Improve overload-candidate diagnostic for a function template that"}
[b]={M,1625925174,N},
[k]={{y,3406,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n  case LoongArch::BI__builtin_loongarch_cacop_w: {\n    if (BuiltinID == LoongArch::BI__builtin_loongarch_cacop_w && !TI.hasFeature(\"32bit\"))\n      return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la32) << TheCall->getSourceRange();"}}
},
},
["note_ovl_candidate_explicit_arg_mismatch_unnamed"]={
["err_loongarch_builtin_requires_la64"]={
[c]="candidate template ignored: invalid explicitly-specified argument for A template parameter",
[j]="this builtin requires target: loongarch64",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: invalid explicitly-specified argument for %ordinal0 template parameter",
[e]="this builtin requires target: loongarch64",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: invalid explicitly\\-specified argument for (.*?) template parameter",
[g]="this builtin requires target\\: loongarch64",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"1d72edd7c55a",1273346154,"Improve overload-candidate diagnostic for a function template that"}
[b]={M,1625925174,N},
[k]={{y,3402,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n  case LoongArch::BI__builtin_loongarch_cacop_d:\n    if (!TI.hasFeature(\"64bit\"))\n      return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la64) << TheCall->getSourceRange();"},{y,3424,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n  case LoongArch::BI__builtin_loongarch_asrtgt_d:\n    if (!TI.hasFeature(\"64bit\"))\n      return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la64) << TheCall->getSourceRange();"},{y,3440,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n  case LoongArch::BI__builtin_loongarch_csrrd_d:\n    if (!TI.hasFeature(\"64bit\"))\n      return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la64) << TheCall->getSourceRange();"},{y,3444,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n  case LoongArch::BI__builtin_loongarch_csrwr_d:\n    if (!TI.hasFeature(\"64bit\"))\n      return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la64) << TheCall->getSourceRange();"},{y,3448,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n  case LoongArch::BI__builtin_loongarch_csrxchg_d:\n    if (!TI.hasFeature(\"64bit\"))\n      return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la64) << TheCall->getSourceRange();"},{y,3453,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n  case LoongArch::BI__builtin_loongarch_ldpte_d:\n    if (!TI.hasFeature(\"64bit\"))\n      return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la64) << TheCall->getSourceRange();"}}
},
},
["note_ovl_candidate_has_pass_object_size_params"]={
["err_lvalue_reference_bind_to_initlist"]={
[c]="candidate address cannot be taken because parameter A has pass_object_size attribute",
[j]="... lvalue reference to type A cannot bind to an initializer list temporary",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate address cannot be taken because parameter %0 has pass_object_size attribute",
[e]="%select{non-const|volatile}0 lvalue reference to type %1 cannot bind to an initializer list temporary",
[b]=q,
[f]=n,
[a]="candidate address cannot be taken because parameter (.*?) has pass_object_size attribute",
[g]="(?:non\\-const|volatile) lvalue reference to type (.*?) cannot bind to an initializer list temporary",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"3e3bb95b6951",1449093488,"Add the `pass_object_size` attribute to clang."}
[b]={"29526f09cee8",1322412607,"Reference initialization with initializer lists."},
[k]={{L,8203,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n  case FK_NonConstLValueReferenceBindingToTemporary:\n    if (isa<InitListExpr>(Args[0])) {\n      S.Diag(Kind.getLocation(), diag::err_lvalue_reference_bind_to_initlist) << DestType.getNonReferenceType().isVolatileQualified() << DestType.getNonReferenceType() << Args[0]->getSourceRange();"}}
},
},
["note_ovl_candidate_illegal_constructor"]={
["err_lvalue_reference_bind_to_temporary"]={
[c]="candidate ... ignored: instantiation ... its own class type by value",
[j]="... lvalue reference to type A cannot bind to a temporary of type B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{constructor|template}0 ignored: instantiation %select{takes|would take}0 its own class type by value",
[e]="%select{non-const|volatile}0 lvalue reference %diff{to type $ cannot bind to a temporary of type $|cannot bind to incompatible temporary}1,2",
[b]=q,
[f]=n,
[a]="candidate (?:constructor|template) ignored\\: instantiation (?:takes|would take) its own class type by value",
[g]="(?:non\\-const|volatile) lvalue reference (?:to type (.*?) cannot bind to a temporary of type (.*?)|cannot bind to incompatible temporary)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"578a1f8c6d27",1418521613,"If a non-template constructor instantiated to X(X),"}
[b]={"3e1e52782604",1260399737,"Reimplement reference initialization (C++ [dcl.init.ref]) using the"},
[k]={{L,8209,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n  case FK_NonConstLValueReferenceBindingToUnrelated:\n    S.Diag(Kind.getLocation(), Failure == FK_NonConstLValueReferenceBindingToTemporary ? diag::err_lvalue_reference_bind_to_temporary : diag::err_lvalue_reference_bind_to_unrelated) << DestType.getNonReferenceType().isVolatileQualified() << DestType.getNonReferenceType() << OnlyArg->getType() << Args[0]->getSourceRange();"}}
},
},
["note_ovl_candidate_illegal_constructor_adrspace_mismatch"]={
["err_lvalue_reference_bind_to_unrelated"]={
[c]="candidate constructor ignored: cannot be used to construct an object in address space A",
[j]="... lvalue reference to type A cannot bind to a value of unrelated type B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate constructor ignored: cannot be used to construct an object in address space %0",
[e]="%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",
[b]=q,
[f]=n,
[a]="candidate constructor ignored\\: cannot be used to construct an object in address space (.*?)",
[g]="(?:non\\-const|volatile) lvalue reference (?:to type (.*?) cannot bind to a value of unrelated type (.*?)|cannot bind to a value of unrelated type)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"c25ea86d4392",1561047808,"[Sema] Diagnose addr space mismatch while constructing objects"}
[b]={"3e1e52782604",1260399737,"Reimplement reference initialization (C++ [dcl.init.ref]) using the"},
[k]={{L,8209,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n  case FK_NonConstLValueReferenceBindingToUnrelated:\n    S.Diag(Kind.getLocation(), Failure == FK_NonConstLValueReferenceBindingToTemporary ? diag::err_lvalue_reference_bind_to_temporary : diag::err_lvalue_reference_bind_to_unrelated) << DestType.getNonReferenceType().isVolatileQualified() << DestType.getNonReferenceType() << OnlyArg->getType() << Args[0]->getSourceRange();"}}
},
},
["note_ovl_candidate_incomplete_deduction"]={
["err_lvalue_to_rvalue_ref"]={
[c]="candidate template ignored: couldn\'t infer template argument A",
[j]="rvalue reference to type A cannot bind to lvalue of type B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: couldn\'t infer template argument %0",
[e]="rvalue reference %diff{to type $ cannot bind to lvalue of type $|cannot bind to incompatible lvalue}0,1",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: couldn\'t infer template argument (.*?)",
[g]="rvalue reference (?:to type (.*?) cannot bind to lvalue of type (.*?)|cannot bind to incompatible lvalue)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"8b9ed55bfbea",1265050406,"Note that an overload candidate was non-viable because template argument"}
[b]={"0f8b23f71fbe",1237245728,"Almost complete implementation of rvalue references. One bug, and a few unclear areas. Maybe Doug ca..."},
[k]={{L,8230,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n  case FK_RValueReferenceBindingToLValue:\n    S.Diag(Kind.getLocation(), diag::err_lvalue_to_rvalue_ref) << DestType.getNonReferenceType() << OnlyArg->getType() << Args[0]->getSourceRange();"}}
},
},
["note_ovl_candidate_incomplete_deduction_pack"]={
["err_machine_mode"]={
[c]="candidate template ignored: deduced too few arguments for expanded pack A; no argument for B expanded parameter in deduced argument pack C",
[j]="... machine mode A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: deduced too few arguments for expanded pack %0; no argument for %ordinal1 expanded parameter in deduced argument pack %2",
[e]="%select{unknown|unsupported}0 machine mode %1",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: deduced too few arguments for expanded pack (.*?); no argument for (.*?) expanded parameter in deduced argument pack (.*?)",
[g]="(?:unknown|unsupported) machine mode (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"4a8f3518cb14",1532026837,"Fix template argument deduction when a parameter pack has a value"}
[b]={"0390908588fa",1387812191,"Consolidating some mode attribute diagnostics. No functional changes intended."},
[k]={{v,4186,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n  // FIXME: Sync this with InitializePredefinedMacros; we need to match int8_t\n  // and friends, at least with glibc.\n  // FIXME: Make sure floating-point mappings are accurate\n  // FIXME: Support XF and TF types\n  if (!DestWidth) {\n    Diag(AttrLoc, diag::err_machine_mode) << 0 /*Unknown*/ << Name;"},{v,4243,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n  if (NewElemTy.isNull()) {\n    Diag(AttrLoc, diag::err_machine_mode) << 1 /*Unsupported*/ << Name;"}}
},
},
["note_ovl_candidate_inconsistent_deduction"]={
["err_main_arg_wrong"]={
[c]="candidate template ignored: deduced ... for parameter A (B vs. C)",
[j]="... parameter of \'main\' (...) must be of type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: deduced %select{conflicting types|conflicting values|conflicting templates|packs of different lengths}0 for parameter %1%diff{ ($ vs. $)|}2,3",
[e]="%select{first|second|third|fourth}0 parameter of \'main\' (%select{argument count|argument array|environment|platform-specific data}0) must be of type %1",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: deduced (?:conflicting types|conflicting values|conflicting templates|packs of different lengths) for parameter (.*?)(?: \\((.*?) vs\\. (.*?)\\)|)",
[g]="(?:first|second|third|fourth) parameter of \'main\' \\((?:argument count|argument array|environment|platform\\-specific data)\\) must be of type (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"3626a5cac2ed",1273340492,"When printing a non-viable overload candidate that failed due to"}
[b]={"02dee0a46a39",1248496613,"Semantic checking for main()."},
[k]={{p,10654,"void Sema::CheckMain(FunctionDecl *FD, const DeclSpec &DS) {\n  for (unsigned i = 0; i < nparams; ++i) {\n    if (mismatch) {\n      Diag(FD->getLocation(), diag::err_main_arg_wrong) << i << Expected[i];"}}
},
},
["note_ovl_candidate_inconsistent_deduction_types"]={
["err_main_global_variable"]={
[c]="candidate template ignored: deduced values of conflicting types for parameter A (B of type C vs. D of type E)",
[j]="main cannot be declared as global variable",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="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",
[e]="main cannot be declared as global variable",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: deduced values (?:of conflicting types for parameter (.*?) \\((.*?) of type (.*?) vs\\. (.*?) of type (.*?)\\)|(.*?) and (.*?) of conflicting types for parameter (.*?))",
[g]="main cannot be declared as global variable",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"593d6a168f45",1482456639,"When merging two deduced non-type template arguments for the same parameter,"}
[b]={"da8a3b903b45",1439561609,"[Sema] main can\'t be declared as global variable, in C++."},
[k]={{p,7154,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n  // Special handling of variable named \'main\'.\n  if (Name.getAsIdentifierInfo() && Name.getAsIdentifierInfo()->isStr(\"main\") && NewVD->getDeclContext()->getRedeclContext()->isTranslationUnit() && !getLangOpts().Freestanding && !NewVD->getDescribedVarTemplate()) {\n    // C++ [basic.start.main]p3\n    // A program that declares a variable main at global scope is ill-formed.\n    if (getLangOpts().CPlusPlus)\n      Diag(D.getBeginLoc(), diag::err_main_global_variable);"}}
},
},
["note_ovl_candidate_inherited_constructor"]={
["err_main_returns_nonint"]={
[c]="constructor from base class A inherited here",
[j]="\'main\' must return \'int\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="constructor from base class %0 inherited here",
[e]="\'main\' must return \'int\'",
[b]=q,
[f]=n,
[a]="constructor from base class (.*?) inherited here",
[g]="\'main\' must return \'int\'",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"0890502f44a1",1296933799,"Basic implementation of inherited constructors. Only generates declarations, and probably only works..."}
[b]={"02dee0a46a39",1248496613,"Semantic checking for main()."},
[k]={{p,10593,"void Sema::CheckMain(FunctionDecl *FD, const DeclSpec &DS) {\n  if (getLangOpts().GNUMode && !getLangOpts().CPlusPlus) {\n  } else {\n    // All the standards say that main() should return \'int\'.\n    if (Context.hasSameType(FT->getReturnType(), Context.IntTy))\n    else {\n      Diag(FD->getTypeSpecStartLoc(), diag::err_main_returns_nonint) << (RTRange.isValid() ? FixItHint::CreateReplacement(RTRange, \"int\") : FixItHint());"}}
},
},
["note_ovl_candidate_inherited_constructor_slice"]={
["err_main_surplus_args"]={
[c]="candidate ... ignored: inherited constructor cannot be used to ... object",
[j]="too many parameters (A) for \'main\': must be 0, 2, or 3",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate %select{constructor|template}0 ignored: inherited constructor cannot be used to %select{copy|move}1 object",
[e]="too many parameters (%0) for \'main\': must be 0, 2, or 3",
[b]=q,
[f]=n,
[a]="candidate (?:constructor|template) ignored\\: inherited constructor cannot be used to (?:copy|move) object",
[g]="too many parameters \\((.*?)\\) for \'main\'\\: must be 0, 2, or 3",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"f9c59b71220c",1483911944,"PR30305: Implement proposed DR resolution to prevent slicing via inherited constructor."}
[b]={"02dee0a46a39",1248496613,"Semantic checking for main()."},
[k]={{p,10621,"void Sema::CheckMain(FunctionDecl *FD, const DeclSpec &DS) {\n  if (HasExtraParameters) {\n    Diag(FD->getLocation(), diag::err_main_surplus_args) << nparams;"}}
},
},
["note_ovl_candidate_instantiation_depth"]={
["err_mainlike_template_decl"]={
[c]="candidate template ignored: substitution exceeded maximum template instantiation depth",
[j]="A cannot be a template",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: substitution exceeded maximum template instantiation depth",
[e]="%0 cannot be a template",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: substitution exceeded maximum template instantiation depth",
[g]="(.*?) cannot be a template",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"d09efd43d3f8",1273349246,"When printing an overload candidate that failed due to SFINAE, print a"}
[b]={"c729b0b50669",1379371460,"[-cxx-abi microsoft] Correctly identify Win32 entry points"},
[k]={{p,10665,"void Sema::CheckMain(FunctionDecl *FD, const DeclSpec &DS) {\n  if (!FD->isInvalidDecl() && FD->getDescribedFunctionTemplate()) {\n    Diag(FD->getLocation(), diag::err_mainlike_template_decl) << FD;"},{p,10715,"void Sema::CheckMSVCRTEntryPoint(FunctionDecl *FD) {\n  if (!FD->isInvalidDecl() && FD->getDescribedFunctionTemplate()) {\n    Diag(FD->getLocation(), diag::err_mainlike_template_decl) << FD;"}}
},
},
["note_ovl_candidate_non_deduced_mismatch"]={
["err_make_signed_integral_only"]={
[c]="candidate template ignored: could not match A against B",
[j]="\'...\' is only compatible with non-... integers and enum types, but was given A...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: could not match %diff{$ against $|types}0,1",
[e]="\'%select{make_unsigned|make_signed}0\' is only compatible with non-%select{bool|_BitInt(1)}1 integers and enum types, but was given %2%select{| whose underlying type is %4}3",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: could not match (?:(.*?) against (.*?)|types)",
[g]="\'(?:make_unsigned|make_signed)\' is only compatible with non\\-(?:bool|_BitInt\\(1\\)) integers and enum types, but was given (.*?)(?:| whose underlying type is (.*?))",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"44ecdbdc6134",1359609589,"Improve \'failed template argument deduction\' diagnostic for the case where we"}
[b]={M,1625925174,N},
[k]={{F,8530,"static QualType ChangeIntegralSignedness(Sema &S, QualType BaseType, bool IsMakeSigned, SourceLocation Loc) {\n  if (BaseType->isEnumeralType()) {\n    if (auto *BitInt = dyn_cast<BitIntType>(Underlying)) {\n      S.Diag(Loc, diag::err_make_signed_integral_only) << IsMakeSigned << /*_BitInt(1)*/ true << BaseType << 1 << Underlying;"},{F,8534,"static QualType ChangeIntegralSignedness(Sema &S, QualType BaseType, bool IsMakeSigned, SourceLocation Loc) {\n  if (BaseType->isEnumeralType()) {\n    if (Underlying->isBooleanType()) {\n      S.Diag(Loc, diag::err_make_signed_integral_only) << IsMakeSigned << /*_BitInt(1)*/ false << BaseType << 1 << Underlying;"},{F,8556,"QualType Sema::BuiltinChangeSignedness(QualType BaseType, UTTKind UKind, SourceLocation Loc) {\n  if ((!BaseType->isIntegerType() && !BaseType->isEnumeralType()) || BaseType->isBooleanType() || (BaseType->isBitIntType() && BaseType->getAs<BitIntType>()->getNumBits() < 2)) {\n    Diag(Loc, diag::err_make_signed_integral_only) << IsMakeSigned << BaseType->isBitIntType() << BaseType << 0;"}}
},
},
["note_ovl_candidate_non_deduced_mismatch_qualified"]={
["err_malformed_std_coroutine_handle"]={
[c]="candidate template ignored: could not match A against B",
[j]="std::coroutine_handle isn\'t a class template",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: could not match %q0 against %q1",
[e]="std::coroutine_handle isn\'t a class template",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: could not match (.*?) against (.*?)",
[g]="std\\:\\:coroutine_handle isn\'t a class template",
[g]=p,
[h]=a,
[e]=o,
[i]=tb,
[i]={"e373235c7cf8",1365455500,"Fix PR15634, better error message for template deduction failure."}
[b]={"6dcb0eb301c7",1489028983,"[coroutines] Build and pass coroutine_handle to await_suspend"},
[k]={{eb,138,"/// Look up the std::coroutine_handle<PromiseType>.\nstatic QualType lookupCoroutineHandleType(Sema &S, QualType PromiseType, SourceLocation Loc) {\n  if (!CoroHandle) {\n    S.Diag(Found->getLocation(), diag::err_malformed_std_coroutine_handle);"}}
},
},
["note_ovl_candidate_substitution_failure"]={
["err_malformed_std_coroutine_traits"]={
[c]="candidate template ignored: substitution failureAB",
[j]="std::coroutine_traits isn\'t a class template",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: substitution failure%0%1",
[e]="std::coroutine_traits isn\'t a class template",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: substitution failure(.*?)(.*?)",
[g]="std\\:\\:coroutine_traits isn\'t a class template",
[g]=p,
[h]=a,
[e]=o,
[i]=tb,
[i]={"d09efd43d3f8",1273349246,"When printing an overload candidate that failed due to SFINAE, print a"}
[b]={"9f690bd80bb6",1445925765,"[coroutines] Creation of promise object, lookup of operator co_await, building"},
[k]={{eb,1716,"ClassTemplateDecl *Sema::lookupCoroutineTraits(SourceLocation KwLoc, SourceLocation FuncLoc) {\n  if (!StdCoroutineTraitsCache) {\n    Diag(Found->getLocation(), diag::err_malformed_std_coroutine_traits);"}}
},
},
["note_ovl_candidate_underqualified"]={
["err_malformed_std_initializer_list"]={
[c]="candidate template ignored: cannot deduce a type for A that would make B equal C",
[j]="std::initializer_list must be a class template with a single type parameter",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: cannot deduce a type for %0 that would make %2 equal %1",
[e]="std::initializer_list must be a class template with a single type parameter",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: cannot deduce a type for (.*?) that would make (.*?) equal (.*?)",
[g]="std\\:\\:initializer_list must be a class template with a single type parameter",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"42d7d19710d0",1280999108,"TDK_InconsistentQuals is really totally different from TDK_Inconsistent."}
[b]={"42acd4a05b52",1326840608,"Auto deduction support for std::initializer_list, including for-range support. This means you can no..."},
[k]={{r,10156,"static ClassTemplateDecl *LookupStdInitializerList(Sema &S, SourceLocation Loc) {\n  if (!Template) {\n    S.Diag(Found->getLocation(), diag::err_malformed_std_initializer_list);"},{r,10164,"static ClassTemplateDecl *LookupStdInitializerList(Sema &S, SourceLocation Loc) {\n  if (Params->getMinRequiredArguments() != 1 || !isa<TemplateTypeParmDecl>(Params->getParam(0))) {\n    S.Diag(Template->getLocation(), diag::err_malformed_std_initializer_list);"}}
},
},
["note_ovl_candidate_unsatisfied_constraints"]={
["err_malformed_std_nothrow"]={
[c]="candidate template ignored: constraints not satisfiedA",
[j]="std::nothrow must be a valid variable declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="candidate template ignored: constraints not satisfied%0",
[e]="std::nothrow must be a valid variable declaration",
[b]=q,
[f]=n,
[a]="candidate template ignored\\: constraints not satisfied(.*?)",
[g]="std\\:\\:nothrow must be a valid variable declaration",
[g]=p,
[h]=a,
[e]=o,
[i]=tb,
[i]={"bd8791610948",1569403888,"[clang] Add no_builtin attribute"}
[b]={"627a63cf5081",1492334399,"[coroutines] Fix building of new/delete expressions when get_return_object_on_allocation_failure() i..."},
[k]={{eb,921,"/// Look up the std::nothrow object.\nstatic Expr *buildStdNoThrowDeclRef(Sema &S, SourceLocation Loc) {\n  if (!VD) {\n    S.Diag(Found->getLocation(), diag::err_malformed_std_nothrow);"}}
},
},
["note_ovl_surrogate_cand"]={
["err_matrix_incomplete_index"]={
[c]="conversion candidate of type A",
[j]="single subscript expressions are not allowed for matrix values",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="conversion candidate of type %0",
[e]="single subscript expressions are not allowed for matrix values",
[b]=q,
[f]=n,
[a]="conversion candidate of type (.*?)",
[g]="single subscript expressions are not allowed for matrix values",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"fd0b2f8fe486",1262770994,"Improve the diagnostics used to report implicitly-generated class members"}
[b]={T,1576908663,U},
[k]={{q,18820,"/// Check for operands with placeholder types and complain if found.\n/// Returns ExprError() if there was an error and no recovery was possible.\nExprResult Sema::CheckPlaceholderExpr(Expr *E) {\n  case BuiltinType::IncompleteMatrixIdx:\n    Diag(cast<MatrixSubscriptExpr>(E->IgnoreParens())->getRowIdx()->getBeginLoc(), diag::err_matrix_incomplete_index);"}}
},
},
["note_ovl_surrogate_constraints_not_satisfied"]={
["err_matrix_index_not_integer"]={
[c]="conversion candidate A not viable: constraints not satisfied",
[j]="matrix ... index is not an integer",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="conversion candidate %0 not viable: constraints not satisfied",
[e]="matrix %select{row|column}0 index is not an integer",
[b]=q,
[f]=n,
[a]="conversion candidate (.*?) not viable\\: constraints not satisfied",
[g]="matrix (?:row|column) index is not an integer",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"f9caa12328b2",1688403744,"[Clang] Fix constraint checking of non-generic lambdas."}
[b]={T,1576908663,U},
[k]={{q,4506,"ExprResult Sema::CreateBuiltinMatrixSubscriptExpr(Expr *Base, Expr *RowIdx, Expr *ColumnIdx, SourceLocation RBLoc) {\n  // Check that IndexExpr is an integer expression. If it is a constant\n  // expression, check that it is less than Dim (= the number of elements in the\n  // corresponding dimension).\n  auto IsIndexValid = [&](Expr *IndexExpr, unsigned Dim, bool IsColumnIdx) -> Expr * {\n    if (!IndexExpr->getType()->isIntegerType() && !IndexExpr->isTypeDependent()) {\n      Diag(IndexExpr->getBeginLoc(), diag::err_matrix_index_not_integer) << IsColumnIdx;"}}
},
},
["note_ovl_too_many_candidates"]={
["err_matrix_index_outside_range"]={
[c]="remaining A candidateB omitted; pass -fshow-overloads=all to show them",
[j]="matrix ... index is outside the allowed range [0, A)",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="remaining %0 candidate%s0 omitted; pass -fshow-overloads=all to show them",
[e]="matrix %select{row|column}0 index is outside the allowed range [0, %1)",
[b]=q,
[f]=n,
[a]="remaining (.*?) candidate(.*?) omitted; pass \\-fshow\\-overloads\\=all to show them",
[g]="matrix (?:row|column) index is outside the allowed range \\[0, (.*?)\\)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"2b99c6fc4f3e",1276235867,"Add an option -fshow-overloads=best|all to limit the number of overload"}
[b]={T,1576908663,U},
[k]={{q,4512,"ExprResult Sema::CreateBuiltinMatrixSubscriptExpr(Expr *Base, Expr *RowIdx, Expr *ColumnIdx, SourceLocation RBLoc) {\n  // Check that IndexExpr is an integer expression. If it is a constant\n  // expression, check that it is less than Dim (= the number of elements in the\n  // corresponding dimension).\n  auto IsIndexValid = [&](Expr *IndexExpr, unsigned Dim, bool IsColumnIdx) -> Expr * {\n    if (std::optional<llvm::APSInt> Idx = IndexExpr->getIntegerConstantExpr(Context)) {\n      if ((*Idx < 0 || *Idx >= Dim)) {\n        Diag(IndexExpr->getBeginLoc(), diag::err_matrix_index_outside_range) << IsColumnIdx << Dim;"}}
},
},
["note_ownership_returns_index_mismatch"]={
["err_matrix_separate_incomplete_index"]={
[c]="declared with index A here",
[j]="matrix row and column subscripts cannot be separated by any expression",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="declared with index %0 here",
[e]="matrix row and column subscripts cannot be separated by any expression",
[b]=q,
[f]=n,
[a]="declared with index (.*?) here",
[g]="matrix row and column subscripts cannot be separated by any expression",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"ef7aef8fe5d3",1406839466,"Implemented a diagnostic to handle multiple, distinct ownership_return attributes on the same declar..."}
[b]={T,1576908663,U},
[k]={{q,4370,"ExprResult Sema::ActOnArraySubscriptExpr(Scope *S, Expr *base, SourceLocation lbLoc, MultiExprArg ArgExprs, SourceLocation rbLoc) {\n  // The matrix subscript operator ([][])is considered a single operator.\n  // Separating the index expressions by parenthesis is not allowed.\n  if (base && !base->getType().isNull() && base->hasPlaceholderType(BuiltinType::IncompleteMatrixIdx) && !isa<MatrixSubscriptExpr>(base)) {\n    Diag(base->getExprLoc(), diag::err_matrix_separate_incomplete_index) << SourceRange(base->getBeginLoc(), rbLoc);"}}
},
},
["note_parameter_here"]={
["err_matrix_subscript_comma"]={
[c]="passing argument to parameter here",
[j]="comma expressions are not allowed as indices in matrix subscript expressions",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="passing argument to parameter here",
[e]="comma expressions are not allowed as indices in matrix subscript expressions",
[b]=q,
[f]=n,
[a]="passing argument to parameter here",
[g]="comma expressions are not allowed as indices in matrix subscript expressions",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"4f4946aaaa19",1271895618,"Whenever we complain about a failed initialization of a function or"}
[b]={T,1576908663,U},
[k]={{q,4362,"ExprResult Sema::ActOnArraySubscriptExpr(Scope *S, Expr *base, SourceLocation lbLoc, MultiExprArg ArgExprs, SourceLocation rbLoc) {\n  // Check if base and idx form a MatrixSubscriptExpr.\n  //\n  // Helper to check for comma expressions, which are not allowed as indices for\n  // matrix subscript expressions.\n  auto CheckAndReportCommaError = [this, base, rbLoc](Expr *E) {\n    if (isa<BinaryOperator>(E) && cast<BinaryOperator>(E)->isCommaOp()) {\n      Diag(E->getExprLoc(), diag::err_matrix_subscript_comma) << SourceRange(base->getBeginLoc(), rbLoc);"}}
},
},
["note_parameter_mapping_substitution_here"]={
["err_maybe_falloff_nonvoid_block"]={
[c]="while substituting into concept arguments here; substitution failures not allowed in concept arguments",
[j]="non-void block does not return a value in all control paths",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="while substituting into concept arguments here; substitution failures not allowed in concept arguments",
[e]="non-void block does not return a value in all control paths",
[b]=q,
[f]=n,
[a]="while substituting into concept arguments here; substitution failures not allowed in concept arguments",
[g]="non\\-void block does not return a value in all control paths",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"349636d2bfc3",1575555459,"Implement VectorType conditional operator GNU extension."}
[b]={"3bf1ab48d304",1248818641,"Add noreturn support for blocks."},
[k]={{Kb,546,"struct CheckFallThroughDiagnostics {\n  static CheckFallThroughDiagnostics MakeForBlock() {\n    D.diag_MaybeFallThrough_ReturnsNonVoid = diag::err_maybe_falloff_nonvoid_block;"}}
},
},
["note_parameter_named_here"]={
["err_mem_init_not_member_or_class"]={
[c]="passing argument to parameter A here",
[j]="member initializer A does not name a non-static data member or base class",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="passing argument to parameter %0 here",
[e]="member initializer %0 does not name a non-static data member or base class",
[b]=q,
[f]=n,
[a]="passing argument to parameter (.*?) here",
[g]="member initializer (.*?) does not name a non\\-static data member or base class",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"4f4946aaaa19",1271895618,"Whenever we complain about a failed initialization of a function or"}
[b]={x,1237025389,w},
[k]={{r,3839,"/// Handle a C++ member initializer.\nMemInitResult Sema::BuildMemInitializer(Decl *ConstructorD, Scope *S, CXXScopeSpec &SS, IdentifierInfo *MemberOrBase, ParsedType TemplateTypeTy, const DeclSpec &DS, SourceLocation IdLoc, Expr *Init, SourceLocation EllipsisLoc) {\n  if (TemplateTypeTy) {\n  } else if (DS.getTypeSpecType() == TST_decltype) {\n  } else if (DS.getTypeSpecType() == TST_decltype_auto) {\n  } else {\n    if (!TyD) {\n      if (!TyD && BaseType.isNull()) {\n        Diag(IdLoc, diag::err_mem_init_not_member_or_class) << MemberOrBase << SourceRange(IdLoc, Init->getSourceRange().getEnd());"}}
},
},
["note_parameter_pack_here"]={
["err_mem_init_not_member_or_class_suggest"]={
[c]="parameter pack A declared here",
[j]="initializer A does not name a non-static data member or base class; did you mean the ... B?",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="parameter pack %0 declared here",
[e]="initializer %0 does not name a non-static data member or base class; did you mean the %select{base class|member}1 %2?",
[b]=q,
[f]=n,
[a]="parameter pack (.*?) declared here",
[g]="initializer (.*?) does not name a non\\-static data member or base class; did you mean the (?:base class|member) (.*?)\\?",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"820ba7ba43a2",1294162438,"Implement the sizeof...(pack) expression to compute the length of a"}
[b]={"15e77a2fd305",1262250624,"Typo correction for C++ base and member initializers, e.g.,"},
[k]={{r,3819,"/// Handle a C++ member initializer.\nMemInitResult Sema::BuildMemInitializer(Decl *ConstructorD, Scope *S, CXXScopeSpec &SS, IdentifierInfo *MemberOrBase, ParsedType TemplateTypeTy, const DeclSpec &DS, SourceLocation IdLoc, Expr *Init, SourceLocation EllipsisLoc) {\n  if (TemplateTypeTy) {\n  } else if (DS.getTypeSpecType() == TST_decltype) {\n  } else if (DS.getTypeSpecType() == TST_decltype_auto) {\n  } else {\n    if (!TyD) {\n      if (R.empty() && BaseType.isNull() && (Corr = CorrectTypo(R.getLookupNameInfo(), R.getLookupKind(), S, &SS, CCC, CTK_ErrorRecovery, ClassDecl))) {\n        if (FieldDecl *Member = Corr.getCorrectionDeclAs<FieldDecl>()) {\n          diagnoseTypo(Corr, PDiag(diag::err_mem_init_not_member_or_class_suggest) << MemberOrBase << true);"},{r,3828,"/// Handle a C++ member initializer.\nMemInitResult Sema::BuildMemInitializer(Decl *ConstructorD, Scope *S, CXXScopeSpec &SS, IdentifierInfo *MemberOrBase, ParsedType TemplateTypeTy, const DeclSpec &DS, SourceLocation IdLoc, Expr *Init, SourceLocation EllipsisLoc) {\n  if (TemplateTypeTy) {\n  } else if (DS.getTypeSpecType() == TST_decltype) {\n  } else if (DS.getTypeSpecType() == TST_decltype_auto) {\n  } else {\n    if (!TyD) {\n      if (R.empty() && BaseType.isNull() && (Corr = CorrectTypo(R.getLookupNameInfo(), R.getLookupKind(), S, &SS, CCC, CTK_ErrorRecovery, ClassDecl))) {\n        if (FieldDecl *Member = Corr.getCorrectionDeclAs<FieldDecl>()) {\n        } else if (TypeDecl *Type = Corr.getCorrectionDeclAs<TypeDecl>()) {\n          if (FindBaseInitializer(*this, ClassDecl, Context.getTypeDeclType(Type), DirectBaseSpec, VirtualBaseSpec)) {\n            diagnoseTypo(Corr, PDiag(diag::err_mem_init_not_member_or_class_suggest) << MemberOrBase << false, PDiag() /*Suppress note, we provide our own.*/);"}}
},
},
["note_parameter_type"]={
["err_member_call_without_object"]={
[c]="parameter of type A is declared here",
[j]="call to non-static member function without an object argument",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="parameter of type %0 is declared here",
[e]="call to non-static member function without an object argument",
[b]=q,
[f]=n,
[a]="parameter of type (.*?) is declared here",
[g]="call to non\\-static member function without an object argument",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"e65b086e07a6",1331064356,"Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,"}
[b]={z,1236199783,A},
[k]={{q,2010,"/// Diagnose a lookup that found results in an enclosing class during error\n/// recovery. This usually indicates that the results were found in a dependent\n/// base class that could not be searched as part of a template definition.\n/// Always issues a diagnostic (though this may be only a warning in MS\n/// compatibility mode).\n///\n/// Return \\c true if the error is unrecoverable, or \\c false if the caller\n/// should attempt to recover using these lookup results.\nbool Sema::DiagnoseDependentMemberLookup(const LookupResult &R) {\n  // Return true if we are inside a default argument instantiation\n  // and the found name refers to an instance member function, otherwise\n  // the caller will try to create an implicit member call and this is wrong\n  // for default arguments.\n  //\n  // FIXME: Is this special case necessary? We could allow the caller to\n  // diagnose this.\n  if (isDefaultArgument && ((*R.begin())->isCXXInstanceMember())) {\n    Diag(R.getNameLoc(), diag::err_member_call_without_object);"},{q,6546,"/// BuildResolvedCallExpr - Build a call to a resolved expression,\n/// i.e. an expression not of \\p OverloadTy.  The expression should\n/// unary-convert to an expression of function-pointer or\n/// block-pointer type.\n///\n/// \\param NDecl the declaration being called, if available\nExprResult Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, SourceLocation LParenLoc, ArrayRef<Expr *> Args, SourceLocation RParenLoc, Expr *Config, bool IsExecConfig, ADLCallKind UsesADL) {\n  if (CXXMethodDecl *Method = dyn_cast_or_null<CXXMethodDecl>(FDecl))\n    if (!Method->isStatic())\n      return ExprError(Diag(LParenLoc, diag::err_member_call_without_object) << Fn->getSourceRange());"},{fb,215,"/// Diagnose a reference to a field with no object available.\nstatic void diagnoseInstanceReference(Sema &SemaRef, const CXXScopeSpec &SS, NamedDecl *Rep, const DeclarationNameInfo &nameInfo) {\n  if (IsField && InStaticMethod)\n  else if (ContextClass && RepClass && SS.isEmpty() && !InStaticMethod && !RepClass->Equals(ContextClass) && RepClass->Encloses(ContextClass))\n  else if (IsField)\n  else\n    SemaRef.Diag(Loc, diag::err_member_call_without_object) << Range;"}}
},
},
["note_partial_availability_specified_here"]={
["err_member_decl_does_not_match"]={
[c]="A has been marked as being introduced in B C here, but the deployment target is D E",
[j]="out-of-line ... of A does not match any declaration in B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 has been marked as being introduced in %1 %2 here, but the deployment target is %1 %3",
[e]="out-of-line %select{declaration|definition}2 of %0 does not match any declaration in %1",
[b]=q,
[f]=n,
[a]="(.*?) has been marked as being introduced in (.*?) (.*?) here, but the deployment target is (.*?) (.*?)",
[g]="out\\-of\\-line (?:declaration|definition) of (.*?) does not match any declaration in (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"0535b0f38731",1547493451,"Improve a -Wunguarded-availability note"}
[b]={"114394f8246f",1376022901,"Implement [class.friend]p11\'s special name lookup rules for friend declarations"},
[k]={{p,7910,"/// Generate diagnostics for an invalid function redeclaration.\n///\n/// This routine handles generating the diagnostic messages for an invalid\n/// function redeclaration, including finding possible similar declarations\n/// or performing typo correction if there are no previous declarations with\n/// the same name.\n///\n/// Returns a NamedDecl iff typo correction was performed and substituting in\n/// the new declaration name does not cause new errors.\nstatic NamedDecl *DiagnoseInvalidRedeclaration(Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD, ActOnFDArgs &ExtraArgs, bool IsLocalFriend, Scope *S) {\n  unsigned DiagMsg = IsLocalFriend ? diag::err_no_matching_local_friend : NewFD->getFriendObjectKind() ? diag::err_qualified_friend_no_match : diag::err_member_decl_does_not_match;"},{K,1732,"DeclResult Sema::CheckClassTemplate(Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, const ParsedAttributesView &Attr, TemplateParameterList *TemplateParams, AccessSpecifier AS, SourceLocation ModulePrivateLoc, SourceLocation FriendLoc, unsigned NumOuterTemplateParamLists, TemplateParameterList **OuterTemplateParamLists, SkipBodyInfo *SkipBody) {\n  if (SS.isSet()) {\n    // If the name of the template was qualified, we must be defining the\n    // template out-of-line.\n    if (!SS.isInvalid() && !Invalid && !PrevClassTemplate) {\n      Diag(NameLoc, TUK == TUK_Friend ? diag::err_friend_decl_does_not_match : diag::err_member_decl_does_not_match) << Name << SemanticContext << /*IsDefinition*/ true << SS.getRange();"}}
},
},
["note_partial_spec_match"]={
["err_member_decl_does_not_match_suggest"]={
[c]="partial specialization matches A",
[j]="out-of-line ... of A does not match any declaration in B; did you mean C?",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="partial specialization matches %0",
[e]="out-of-line %select{declaration|definition}2 of %0 does not match any declaration in %1; did you mean %3?",
[b]=q,
[f]=n,
[a]="partial specialization matches (.*?)",
[g]="out\\-of\\-line (?:declaration|definition) of (.*?) does not match any declaration in (.*?); did you mean (.*?)\\?",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"be999390ebc7",1253031831,"Implement partial ordering of class template partial specializations "}
[b]={"114394f8246f",1376022901,"Implement [class.friend]p11\'s special name lookup rules for friend declarations"},
[k]={{p,7970,"/// Generate diagnostics for an invalid function redeclaration.\n///\n/// This routine handles generating the diagnostic messages for an invalid\n/// function redeclaration, including finding possible similar declarations\n/// or performing typo correction if there are no previous declarations with\n/// the same name.\n///\n/// Returns a NamedDecl iff typo correction was performed and substituting in\n/// the new declaration name does not cause new errors.\nstatic NamedDecl *DiagnoseInvalidRedeclaration(Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD, ActOnFDArgs &ExtraArgs, bool IsLocalFriend, Scope *S) {\n  if (!Prev.empty()) {\n  } else if ((Correction = SemaRef.CorrectTypo(Prev.getLookupNameInfo(), Prev.getLookupKind(), S, &ExtraArgs.D.getCXXScopeSpec(), CCC, Sema::CTK_ErrorRecovery, IsLocalFriend ? nullptr : NewDC))) {\n    if (Result) {\n      SemaRef.diagnoseTypo(Correction, SemaRef.PDiag(IsLocalFriend ? diag::err_no_matching_local_friend_suggest : diag::err_member_decl_does_not_match_suggest) << Name << NewDC << IsDefinition);"}}
},
},
["note_pch_rebuild_required"]={
["err_member_def_does_not_match_ret_type"]={
[c]="please rebuild precompiled header \'A\'",
[j]="return type of out-of-line definition of A differs from that in the declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="please rebuild precompiled header \'%0\'",
[e]="return type of out-of-line definition of %q0 differs from that in the declaration",
[b]=q,
[f]=n,
[a]="please rebuild precompiled header \'(.*?)\'",
[g]="return type of out\\-of\\-line definition of (.*?) differs from that in the declaration",
[g]=p,
[h]=a,
[e]=Kc,
[i]=o,
[i]={"e82630d5d55d",1389917949,"Improve the error message when a PCH dependency is modified"}
[b]={"3d3208675f79",1296885289,"When the out-of-line definition differs from the declaration in the return type,"},
[k]={{p,3531,"/// MergeFunctionDecl - We just parsed a function \'New\' from\n/// declarator D which has the same name and scope as a previous\n/// declaration \'Old\'.  Figure out how to resolve this situation,\n/// merging decls or emitting diagnostics as appropriate.\n///\n/// In C++, New and Old must be declarations that are not\n/// overloaded. Use IsOverload to determine whether New and Old are\n/// overloaded, and to select the Old declaration that New should be\n/// merged with.\n///\n/// Returns true if there was an error, false otherwise.\nbool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD, Scope *S, bool MergeTypeWithOld, bool NewDeclIsDefn) {\n  if (getLangOpts().CPlusPlus) {\n    if (!Context.hasSameType(OldDeclaredReturnType, NewDeclaredReturnType) && canFullyTypeCheckRedeclaration(New, Old, NewDeclaredReturnType, OldDeclaredReturnType)) {\n      if (ResQT.isNull()) {\n        if (New->isCXXClassMember() && New->isOutOfLine())\n          Diag(New->getLocation(), diag::err_member_def_does_not_match_ret_type) << New << New->getReturnTypeSourceRange();"}}
},
},
["note_pch_required_by"]={
["err_member_def_undefined_record"]={
[c]="\'A\' required by \'B\'",
[j]="out-of-line definition of A from class B without definition",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'%0\' required by \'%1\'",
[e]="out-of-line definition of %0 from class %1 without definition",
[b]=q,
[f]=n,
[a]="\'(.*?)\' required by \'(.*?)\'",
[g]="out\\-of\\-line definition of (.*?) from class (.*?) without definition",
[g]=p,
[h]=a,
[e]=Kc,
[i]=o,
[i]={"e82630d5d55d",1389917949,"Improve the error message when a PCH dependency is modified"}
[b]={"67da35c832e6",1265322386,"Extract a common structure for holding information about the definition"},
[k]={{p,5604,"NamedDecl *Sema::HandleDeclarator(Scope *S, Declarator &D, MultiTemplateParamsArg TemplateParamLists) {\n  if (D.getCXXScopeSpec().isInvalid())\n  else if (D.getCXXScopeSpec().isSet()) {\n    // If a class is incomplete, do not parse entities inside it.\n    if (isa<CXXRecordDecl>(DC) && !cast<CXXRecordDecl>(DC)->hasDefinition()) {\n      Diag(D.getIdentifierLoc(), diag::err_member_def_undefined_record) << Name << DC << D.getCXXScopeSpec().getRange();"}}
},
},
["note_performs_forbidden_arc_conversion"]={
["err_member_extra_qualification"]={
[c]="inline function performs a conversion which is forbidden in ARC",
[j]="extra qualification on member A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="inline function performs a conversion which is forbidden in ARC",
[e]="extra qualification on member %0",
[b]=q,
[f]=n,
[a]="inline function performs a conversion which is forbidden in ARC",
[g]="extra qualification on member (.*?)",
[g]=p,
[h]=a,
[e]="ARC Restrictions",
[i]=o,
[i]={"c6af8c606dae",1446008599,"Refine r251469 to give better (and more localizable) diagnostics"}
[b]={"43bc036e8ae3",1347567380,"Promote the warning about extra qualification on a declaration from a"},
[k]={{p,5500,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n  // If the user provided a superfluous scope specifier that refers back to the\n  // class in which the entity is already declared, diagnose and ignore it.\n  //\n  // class X {\n  //  void X::f();\n  // };\n  //\n  // Note, it was once ill-formed to give redundant qualification in all\n  // contexts, but that rule was removed by DR482.\n  if (Cur->Equals(DC)) {\n    if (Cur->isRecord()) {\n      Diag(Loc, LangOpts.MicrosoftExt ? diag::warn_member_extra_qualification : diag::err_member_extra_qualification) << Name << FixItHint::CreateRemoval(SS.getRange());"}}
},
},
["note_pointer_declared_here"]={
["err_member_function_call_bad_cvr"]={
[c]="pointer A declared here",
[j]="\'this\' argument to member function A has type B, but function is not marked ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="pointer %0 declared here",
[e]="\'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",
[b]=q,
[f]=n,
[a]="pointer (.*?) declared here",
[g]="\'this\' argument to member function (.*?) has type (.*?), but function is not marked (?:const|restrict|const or restrict|volatile|const or volatile|volatile or restrict|const, volatile, or restrict)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"b4806822d2d5",1566123009,"[Diagnostics] Improve -Wsizeof-pointer-div"}
[b]={"9813d3221d7d",1289894685,"Improve diagnostic for calling non-const method on const object. Fixes rdar://7743000"},
[k]={{Ab,4791,"/// PerformObjectArgumentInitialization - Perform initialization of\n/// the implicit object parameter for the given Method with the given\n/// expression.\nExprResult Sema::PerformObjectArgumentInitialization(Expr *From, NestedNameSpecifier *Qualifier, NamedDecl *FoundDecl, CXXMethodDecl *Method) {\n  if (ICS.isBad()) {\n    case BadConversionSequence::bad_qualifiers: {\n      if (CVR) {\n        Diag(From->getBeginLoc(), diag::err_member_function_call_bad_cvr) << Method->getDeclName() << FromRecordType << (CVR - 1) << From->getSourceRange();"}}
},
},
["note_possibility"]={
["err_member_function_call_bad_ref"]={
[c]="one possibility",
[j]="\'this\' argument to member function A is an ..., but function has ... ref-qualifier",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="one possibility",
[e]="\'this\' argument to member function %0 is an %select{lvalue|rvalue}1, but function has %select{non-const lvalue|rvalue}2 ref-qualifier",
[b]=q,
[f]=n,
[a]="one possibility",
[g]="\'this\' argument to member function (.*?) is an (?:lvalue|rvalue), but function has (?:non\\-const lvalue|rvalue) ref\\-qualifier",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"31168b077c36",1308178962,"Automatic Reference Counting."}
[b]={"c7e67a04e0f3",1514695779,"[Sema] Improve diagnostics for const- and ref-qualified member functions"},
[k]={{Ab,4801,"/// PerformObjectArgumentInitialization - Perform initialization of\n/// the implicit object parameter for the given Method with the given\n/// expression.\nExprResult Sema::PerformObjectArgumentInitialization(Expr *From, NestedNameSpecifier *Qualifier, NamedDecl *FoundDecl, CXXMethodDecl *Method) {\n  if (ICS.isBad()) {\n    case BadConversionSequence::rvalue_ref_to_lvalue: {\n      Diag(From->getBeginLoc(), diag::err_member_function_call_bad_ref) << Method->getDeclName() << FromClassification.isRValue() << IsRValueQualified;"}}
},
},
["note_possible_target_of_call"]={
["err_member_function_call_bad_type"]={
[c]="possible target for call",
[j]="cannot initialize object parameter of type A with an expression of type B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="possible target for call",
[e]="cannot initialize object parameter of type %0 with an expression of type %1",
[b]=q,
[f]=n,
[a]="possible target for call",
[g]="cannot initialize object parameter of type (.*?) with an expression of type (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"50a2c2c19de5",1318374870,"Catch placeholder types in DefaultLvalueConversion"}
[b]={"c7e67a04e0f3",1514695779,"[Sema] Improve diagnostics for const- and ref-qualified member functions"},
[k]={{Ab,4815,"/// PerformObjectArgumentInitialization - Perform initialization of\n/// the implicit object parameter for the given Method with the given\n/// expression.\nExprResult Sema::PerformObjectArgumentInitialization(Expr *From, NestedNameSpecifier *Qualifier, NamedDecl *FoundDecl, CXXMethodDecl *Method) {\n  if (ICS.isBad()) {\n    return Diag(From->getBeginLoc(), diag::err_member_function_call_bad_type) << ImplicitParamRecordType << FromRecordType << From->getSourceRange();"}}
},
},
["note_pp_ambiguous_macro_chosen"]={
["err_member_function_initialization"]={
[c]="expanding this definition of A",
[j]="initializer on function does not look like a pure-specifier",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="expanding this definition of %0",
[e]="initializer on function does not look like a pure-specifier",
[b]=q,
[f]=n,
[a]="expanding this definition of (.*?)",
[g]="initializer on function does not look like a pure\\-specifier",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={"5968b1b71f88",1349989659,"Diagnose the expansion of ambiguous macro definitions. This can happen"}
[b]={z,1236199783,A},
[k]={{p,11459,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n  if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(RealDecl)) {\n    Diag(Method->getLocation(), diag::err_member_function_initialization) << Method->getDeclName() << Init->getSourceRange();"}}
},
},
["note_pp_ambiguous_macro_other"]={
["err_member_name_of_class"]={
[c]="other definition of A",
[j]="member A has the same name as its class",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="other definition of %0",
[e]="member %0 has the same name as its class",
[b]=q,
[f]=n,
[a]="other definition of (.*?)",
[g]="member (.*?) has the same name as its class",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={"5968b1b71f88",1349989659,"Diagnose the expansion of ambiguous macro definitions. This can happen"}
[b]={"36c22a2335c0",1287148881,"Diagnose C++ [class.mem]p13-14, where a class member has the same name"},
[k]={{p,5461,"/// DiagnoseClassNameShadow - Implement C++ [class.mem]p13:\n///  If T is the name of a class, then each of the following shall have a\n///  name different from T:\n///    - every static data member of class T;\n///    - every member function of class T\n///    - every member of class T that is itself a type;\n/// \\returns true if the declaration name violates these rules.\nbool Sema::DiagnoseClassNameShadow(DeclContext *DC, DeclarationNameInfo NameInfo) {\n  if (Record && Record->getIdentifier() && Record->getDeclName() == Name) {\n    Diag(NameInfo.getLoc(), diag::err_member_name_of_class) << Name;"},{r,5942,"/// Perform semantic checks on a class definition that has been\n/// completing, introducing implicitly-declared members, checking for\n/// abstract types, etc.\n///\n/// \\param S The scope in which the class was parsed. Null if we didn\'t just\n///        parse a class definition.\n/// \\param Record The completed class.\nvoid Sema::CheckCompletedCXXClass(Scope *S, CXXRecordDecl *Record) {\n  if (Record->getIdentifier()) {\n    for (DeclContext::lookup_iterator I = R.begin(), E = R.end(); I != E; ++I) {\n      if (((isa<FieldDecl>(D) || isa<UnresolvedUsingValueDecl>(D)) && Record->hasUserDeclaredConstructor()) || isa<IndirectFieldDecl>(D)) {\n        Diag((*I)->getLocation(), diag::err_member_name_of_class) << D->getDeclName();"}}
},
},
["note_pp_framework_without_header"]={
["err_member_not_yet_instantiated"]={
[c]="did not find header \'A\' in framework \'B\' (loaded from \'C\')",
[j]="no member A in B; it has not yet been instantiated",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="did not find header \'%0\' in framework \'%1\' (loaded from \'%2\')",
[e]="no member %0 in %1; it has not yet been instantiated",
[b]=q,
[f]=n,
[a]="did not find header \'(.*?)\' in framework \'(.*?)\' \\(loaded from \'(.*?)\'\\)",
[g]="no member (.*?) in (.*?); it has not yet been instantiated",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={"421380a10816",1549406095,"[Preprocessor] Add a note with framework location for \"file not found\" error."}
[b]={"528ad93924b1",1299442365,"We may fail to map a declaration in a template to its instantiated"},
[k]={{"clang/lib/Sema/SemaTemplateInstantiateDecl.cpp",5281,"/// Find the instantiation of the given declaration within the\n/// current instantiation.\n///\n/// This routine is intended to be used when \\p D is a declaration\n/// referenced from within a template, that needs to mapped into the\n/// corresponding declaration within an instantiation. For example,\n/// given:\n///\n/// \\code\n/// template<typename T>\n/// struct X {\n///  enum Kind {\n///    KnownValue = sizeof(T)\n///  };\n///\n///  bool getKind() const { return KnownValue; }\n/// };\n///\n/// template struct X<int>;\n/// \\endcode\n///\n/// In the instantiation of X<int>::getKind(), we need to map the \\p\n/// EnumConstantDecl for \\p KnownValue (which refers to\n/// X<T>::<Kind>::KnownValue) to its instantiation (X<int>::<Kind>::KnownValue).\n/// \\p FindInstantiatedDecl performs this mapping from within the instantiation\n/// of X<int>.\nNamedDecl *Sema::FindInstantiatedDecl(SourceLocation Loc, NamedDecl *D, const MultiLevelTemplateArgumentList &TemplateArgs, bool FindingInstantiatedContext) {\n  if (ParentDC != D->getDeclContext()) {\n    if (!Result) {\n      if (isa<UsingShadowDecl>(D)) {\n      } else if (hasUncompilableErrorOccurred()) {\n      } else if (IsBeingInstantiated) {\n        Diag(Loc, diag::err_member_not_yet_instantiated) << D->getDeclName() << Context.getTypeDeclType(cast<CXXRecordDecl>(ParentDC));"}}
},
},
["note_pp_macro_annotation"]={
["err_member_qualification"]={
[c]="macro marked \'...\' here",
[j]="non-friend class member A cannot have a qualified name",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="macro marked \'%select{deprecated|restrict_expansion|final}0\' here",
[e]="non-friend class member %0 cannot have a qualified name",
[b]=q,
[f]=n,
[a]="macro marked \'(?:deprecated|restrict_expansion|final)\' here",
[g]="non\\-friend class member (.*?) cannot have a qualified name",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={N,1625925174,O}
[b]={"a007d36c1bad",1287008393,"Generalize the checking for qualification of (non-friend) class"},
[k]={{p,5513,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n  // Check whether the qualifying scope encloses the scope of the original\n  // declaration. For a template-id, we perform the checks in\n  // CheckTemplateSpecializationScope.\n  if (!Cur->Encloses(DC) && !IsTemplateId) {\n    if (Cur->isRecord())\n      Diag(Loc, diag::err_member_qualification) << Name << SS.getRange();"},{p,5535,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n  if (Cur->isRecord()) {\n    Diag(Loc, diag::err_member_qualification) << Name << SS.getRange();"},{r,3056,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n  if (isInstField) {\n    if (SS.isSet() && !SS.isInvalid()) {\n      // The user provided a superfluous scope specifier inside a class\n      // definition:\n      //\n      // class X {\n      //  int X::member;\n      // };\n      if (DeclContext *DC = computeDeclContext(SS, false))\n      else\n        Diag(D.getIdentifierLoc(), diag::err_member_qualification) << Name << SS.getRange();"}}
},
},
["note_pp_module_begin_here"]={
["err_member_redeclared"]={
[c]="entering module \'A\' due to this pragma",
[j]="class member cannot be redeclared",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="entering module \'%0\' due to this pragma",
[e]="class member cannot be redeclared",
[b]=q,
[f]=n,
[a]="entering module \'(.*?)\' due to this pragma",
[g]="class member cannot be redeclared",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={"51d09c512b95",1496121779,"Diagnose attempts to build a preprocessed module that defines an unavailable submodule."}
[b]={x,1237025389,w},
[k]={{p,3593,"/// MergeFunctionDecl - We just parsed a function \'New\' from\n/// declarator D which has the same name and scope as a previous\n/// declaration \'Old\'.  Figure out how to resolve this situation,\n/// merging decls or emitting diagnostics as appropriate.\n///\n/// In C++, New and Old must be declarations that are not\n/// overloaded. Use IsOverload to determine whether New and Old are\n/// overloaded, and to select the Old declaration that New should be\n/// merged with.\n///\n/// Returns true if there was an error, false otherwise.\nbool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD, Scope *S, bool MergeTypeWithOld, bool NewDeclIsDefn) {\n  if (getLangOpts().CPlusPlus) {\n    if (OldMethod && NewMethod) {\n      if (!isFriend && NewMethod->getLexicalDeclContext()->isRecord() && !IsClassScopeExplicitSpecialization) {\n        // C++ [class.mem]p1:\n        //  [...] A member shall not be declared twice in the\n        //  member-specification, except that a nested class or member\n        //  class template can be declared and then later defined.\n        if (!inTemplateInstantiation()) {\n          if (isa<CXXConstructorDecl>(OldMethod))\n          else if (isa<CXXDestructorDecl>(NewMethod))\n          else if (isa<CXXConversionDecl>(NewMethod))\n          else\n            NewDiag = diag::err_member_redeclared;"}}
},
},
["note_pragma_attribute_applied_decl_here"]={
["err_member_redeclared_in_instantiation"]={
[c]="when applied to this declaration",
[j]="multiple overloads of A instantiate to the same signature B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="when applied to this declaration",
[e]="multiple overloads of %0 instantiate to the same signature %1",
[b]=q,
[f]=n,
[a]="when applied to this declaration",
[g]="multiple overloads of (.*?) instantiate to the same signature (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"0a849f47d2f7",1492508507,"Add #pragma clang attribute"}
[b]={"57e7ff9c0c44",1342152724,"Provide a special-case diagnostic when two class member functions instantiate"},
[k]={{p,3597,"/// MergeFunctionDecl - We just parsed a function \'New\' from\n/// declarator D which has the same name and scope as a previous\n/// declaration \'Old\'.  Figure out how to resolve this situation,\n/// merging decls or emitting diagnostics as appropriate.\n///\n/// In C++, New and Old must be declarations that are not\n/// overloaded. Use IsOverload to determine whether New and Old are\n/// overloaded, and to select the Old declaration that New should be\n/// merged with.\n///\n/// Returns true if there was an error, false otherwise.\nbool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD, Scope *S, bool MergeTypeWithOld, bool NewDeclIsDefn) {\n  if (getLangOpts().CPlusPlus) {\n    if (OldMethod && NewMethod) {\n      if (!isFriend && NewMethod->getLexicalDeclContext()->isRecord() && !IsClassScopeExplicitSpecialization) {\n        // C++ [class.mem]p1:\n        //  [...] A member shall not be declared twice in the\n        //  member-specification, except that a nested class or member\n        //  class template can be declared and then later defined.\n        if (!inTemplateInstantiation()) {\n        } else {\n          Diag(New->getLocation(), diag::err_member_redeclared_in_instantiation) << New << New->getType();"}}
},
},
["note_pragma_attribute_namespace_on_attribute"]={
["err_member_reference_needs_call"]={
[c]="omit the namespace to add attributes to the most-recently pushed attribute group",
[j]="base of member reference is a function; perhaps you meant to call it...?",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="omit the namespace to add attributes to the most-recently pushed attribute group",
[e]="base of member reference is a function; perhaps you meant to call it%select{| with no arguments}0?",
[b]=q,
[f]=n,
[a]="omit the namespace to add attributes to the most\\-recently pushed attribute group",
[g]="base of member reference is a function; perhaps you meant to call it(?:| with no arguments)\\?",
[g]=p,
[h]=a,
[e]=y,
[i]=o,
[i]={"0876cae0d749",1545345124,"Add support for namespaces on #pragma clang attribute"}
[b]={"d82ae38d5300",1257489047,"Rework the fix-it hint for code like"},
[k]={{fb,1378,"fail:\n  if (S.tryToRecoverWithCall(BaseExpr, S.PDiag(diag::err_member_reference_needs_call),"}}
},
},
["note_pragma_attribute_region_ends_here"]={
["err_member_with_template_arguments"]={
[c]="\'#pragma clang attribute push\' regions ends here",
[j]="member A cannot have template arguments",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'#pragma clang attribute push\' regions ends here",
[e]="member %0 cannot have template arguments",
[b]=q,
[f]=n,
[a]="\'\\#pragma clang attribute push\' regions ends here",
[g]="member (.*?) cannot have template arguments",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"0a849f47d2f7",1492508507,"Add #pragma clang attribute"}
[b]={Cb,1620118562,Eb},
[k]={{r,3042,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n  if (isInstField) {\n    if (D.getName().getKind() == UnqualifiedIdKind::IK_TemplateId) {\n      Diag(D.getIdentifierLoc(), diag::err_member_with_template_arguments) << II << SourceRange(D.getName().TemplateId->LAngleLoc, D.getName().TemplateId->RAngleLoc) << D.getName().TemplateId->LAngleLoc;"}}
},
},
["note_pragma_attribute_use_attribute_kw"]={
["err_mempointer_in_nonclass_type"]={
[c]="use the GNU \'__attribute__\' syntax",
[j]="member pointer refers into non-class type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use the GNU \'__attribute__\' syntax",
[e]="member pointer refers into non-class type %0",
[b]=q,
[f]=n,
[a]="use the GNU \'__attribute__\' syntax",
[g]="member pointer refers into non\\-class type (.*?)",
[g]=p,
[h]=a,
[e]=y,
[i]=o,
[i]={"0a849f47d2f7",1492508507,"Add #pragma clang attribute"}
[b]={"0bdc1f5eef52",1244585859,"Handle member pointer types with dependent class types (e.g., int"},
[k]={{F,2705,"/// Build a member pointer type \\c T Class::*.\n///\n/// \\param T the type to which the member pointer refers.\n/// \\param Class the class type into which the member pointer points.\n/// \\param Loc the location where this type begins\n/// \\param Entity the name of the entity that will have this member pointer type\n///\n/// \\returns a member pointer type, if successful, or a NULL type if there was\n/// an error.\nQualType Sema::BuildMemberPointerType(QualType T, QualType Class, SourceLocation Loc, DeclarationName Entity) {\n  if (!Class->isDependentType() && !Class->isRecordType()) {\n    Diag(Loc, diag::err_mempointer_in_nonclass_type) << Class;"}}
},
},
["note_pragma_entered_here"]={
["err_memptr_conv_via_virtual"]={
[c]="#pragma entered here",
[j]="conversion from pointer to member of class A to pointer to member of class B via virtual base C is not allowed",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="#pragma entered here",
[e]="conversion from pointer to member of class %0 to pointer to member of class %1 via virtual base %2 is not allowed",
[b]=q,
[f]=n,
[a]="\\#pragma entered here",
[g]="conversion from pointer to member of class (.*?) to pointer to member of class (.*?) via virtual base (.*?) is not allowed",
[g]=p,
[h]=a,
[e]=y,
[i]=o,
[i]={"32f5fe1467c4",1317359532,"Add explicit attributes to mark functions as having had their"}
[b]={x,1237025389,w},
[k]={{"clang/lib/Sema/SemaCast.cpp",1561,"/// TryStaticMemberPointerUpcast - Tests whether a conversion according to\n/// C++ 5.2.9p9 is valid:\n///\n///  An rvalue of type \"pointer to member of D of type cv1 T\" can be\n///  converted to an rvalue of type \"pointer to member of B of type cv2 T\",\n///  where B is a base class of D [...].\n///\nTryCastResult TryStaticMemberPointerUpcast(Sema &Self, ExprResult &SrcExpr, QualType SrcType, QualType DestType, bool CStyle, SourceRange OpRange, unsigned &msg, CastKind &Kind, CXXCastPath &BasePath) {\n  if (const RecordType *VBase = Paths.getDetectedVirtual()) {\n    Self.Diag(OpRange.getBegin(), diag::err_memptr_conv_via_virtual) << SrcClass << DestClass << QualType(VBase, 0) << OpRange;"},{Ab,2807,"/// CheckMemberPointerConversion - Check the member pointer conversion from the\n/// expression From to the type ToType. This routine checks for ambiguous or\n/// virtual or inaccessible base-to-derived member pointer conversions\n/// for which IsMemberPointerConversion has already returned true. It returns\n/// true and produces a diagnostic if there was an error, or returns false\n/// otherwise.\nbool Sema::CheckMemberPointerConversion(Expr *From, QualType ToType, CastKind &Kind, CXXCastPath &BasePath, bool IgnoreBaseAccess) {\n  if (const RecordType *VBase = Paths.getDetectedVirtual()) {\n    Diag(From->getExprLoc(), diag::err_memptr_conv_via_virtual) << FromClass << ToClass << QualType(VBase, 0) << From->getSourceRange();"}}
},
},
["note_pragma_loop_invalid_vectorize_option"]={
["err_memptr_incomplete"]={
[c]="vectorize_width loop hint malformed; use vectorize_width(X, fixed) or vectorize_width(X, scalable) where X is an integer, or vectorize_width(\'fixed\' or \'scalable\')",
[j]="member pointer has incomplete base type A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="vectorize_width loop hint malformed; use vectorize_width(X, fixed) or vectorize_width(X, scalable) where X is an integer, or vectorize_width(\'fixed\' or \'scalable\')",
[e]="member pointer has incomplete base type %0",
[b]=q,
[f]=n,
[a]="vectorize_width loop hint malformed; use vectorize_width\\(X, fixed\\) or vectorize_width\\(X, scalable\\) where X is an integer, or vectorize_width\\(\'fixed\' or \'scalable\'\\)",
[g]="member pointer has incomplete base type (.*?)",
[g]=p,
[h]=a,
[e]=y,
[i]=o,
[i]={"38d18d93534d",1601621202,"[SVE] Add support to vectorize_width loop pragma for scalable vectors"}
[b]={"54d13b406828",1527651604,"Sema: Add a flag for rejecting member pointers with incomplete base types."},
[k]={{F,8047,"/// The implementation of RequireCompleteType\nbool Sema::RequireCompleteTypeImpl(SourceLocation Loc, QualType T, CompleteTypeKind Kind, TypeDiagnoser *Diagnoser) {\n  if (const MemberPointerType *MPTy = T->getAs<MemberPointerType>()) {\n    if (!MPTy->getClass()->isDependentType()) {\n      if (getLangOpts().CompleteMemberPointers && !MPTy->getClass()->getAsCXXRecordDecl()->isBeingDefined() && RequireCompleteType(Loc, QualType(MPTy->getClass(), 0), Kind, diag::err_memptr_incomplete))"}}
},
},
["note_pragma_pack_here"]={
["err_memtag_any2arg_pointer"]={
[c]="previous \'#pragma pack\' directive that modifies alignment is here",
[j]="at least one argument of MTE builtin function must be a pointer (A, B invalid)",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous \'#pragma pack\' directive that modifies alignment is here",
[e]="at least one argument of MTE builtin function must be a pointer (%0, %1 invalid)",
[b]=q,
[f]=n,
[a]="previous \'\\#pragma pack\' directive that modifies alignment is here",
[g]="at least one argument of MTE builtin function must be a pointer \\((.*?), (.*?) invalid\\)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"ad273341a452",1500398631,"Add a warning for missing \'#pragma pack (pop)\' and suspicious uses"}
[b]={"18b0c40bc5db",1556312891,"[AArch64] Add support for MTE intrinsics"},
[k]={{y,8471,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n  if (BuiltinID == AArch64::BI__builtin_arm_subp) {\n    // at least one argument should be pointer type\n    if (!ArgTypeA->isAnyPointerType() && !ArgTypeB->isAnyPointerType())\n      return Diag(TheCall->getBeginLoc(), diag::err_memtag_any2arg_pointer) << ArgTypeA << ArgTypeB << ArgA->getSourceRange();"}}
},
},
["note_pragma_pack_pop_instead_reset"]={
["err_memtag_arg_must_be_integer"]={
[c]="did you intend to use \'#pragma pack (pop)\' instead of \'#pragma pack()\'?",
[j]="A argument of MTE builtin function must be an integer type (B invalid)",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="did you intend to use \'#pragma pack (pop)\' instead of \'#pragma pack()\'?",
[e]="%0 argument of MTE builtin function must be an integer type (%1 invalid)",
[b]=q,
[f]=n,
[a]="did you intend to use \'\\#pragma pack \\(pop\\)\' instead of \'\\#pragma pack\\(\\)\'\\?",
[g]="(.*?) argument of MTE builtin function must be an integer type \\((.*?) invalid\\)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"a1479d798870",1501508270,"-Wpragma-pack: add an additional note and fixit when warning"}
[b]={"18b0c40bc5db",1556312891,"[AArch64] Add support for MTE intrinsics"},
[k]={{y,8372,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n  if (BuiltinID == AArch64::BI__builtin_arm_irg) {\n    if (!SecArgType->isIntegerType())\n      return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_integer) << \"second\" << SecArgType << Arg1->getSourceRange();"},{y,8414,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n  if (BuiltinID == AArch64::BI__builtin_arm_gmi) {\n    if (!SecArgType->isIntegerType())\n      return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_integer) << \"second\" << SecArgType << Arg1->getSourceRange();"}}
},
},
["note_precedence_bitwise_first"]={
["err_memtag_arg_must_be_pointer"]={
[c]="place parentheses around the A expression to evaluate it first",
[j]="A argument of MTE builtin function must be a pointer (B invalid)",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="place parentheses around the %0 expression to evaluate it first",
[e]="%0 argument of MTE builtin function must be a pointer (%1 invalid)",
[b]=q,
[f]=n,
[a]="place parentheses around the (.*?) expression to evaluate it first",
[g]="(.*?) argument of MTE builtin function must be a pointer \\((.*?) invalid\\)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"fa1e36d0de87",1262910023,"Improve the fix-its for -Wparentheses to ensure that the fix-it"}
[b]={"18b0c40bc5db",1556312891,"[AArch64] Add support for MTE intrinsics"},
[k]={{y,8364,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n  if (BuiltinID == AArch64::BI__builtin_arm_irg) {\n    if (!FirstArgType->isAnyPointerType())\n      return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) << \"first\" << FirstArgType << Arg0->getSourceRange();"},{y,8389,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n  if (BuiltinID == AArch64::BI__builtin_arm_addg) {\n    if (!FirstArgType->isAnyPointerType())\n      return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) << \"first\" << FirstArgType << Arg0->getSourceRange();"},{y,8410,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n  if (BuiltinID == AArch64::BI__builtin_arm_gmi) {\n    if (!FirstArgType->isAnyPointerType())\n      return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) << \"first\" << FirstArgType << Arg0->getSourceRange();"},{y,8429,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n  if (BuiltinID == AArch64::BI__builtin_arm_ldg || BuiltinID == AArch64::BI__builtin_arm_stg) {\n    if (!FirstArgType->isAnyPointerType())\n      return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) << \"first\" << FirstArgType << Arg0->getSourceRange();"}}
},
},
["note_precedence_conditional_first"]={
["err_memtag_arg_null_or_pointer"]={
[c]="place parentheses around the \'?:\' expression to evaluate it first",
[j]="A argument of MTE builtin function must be a null or a pointer (B invalid)",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="place parentheses around the \'?:\' expression to evaluate it first",
[e]="%0 argument of MTE builtin function must be a null or a pointer (%1 invalid)",
[b]=q,
[f]=n,
[a]="place parentheses around the \'\\?\\:\' expression to evaluate it first",
[g]="(.*?) argument of MTE builtin function must be a null or a pointer \\((.*?) invalid\\)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"cf9bac4bc9dd",1307124036,"Warn about missing parentheses for conditional operator."}
[b]={"18b0c40bc5db",1556312891,"[AArch64] Add support for MTE intrinsics"},
[k]={{y,8455,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n  if (BuiltinID == AArch64::BI__builtin_arm_subp) {\n    // argument should be either a pointer or null\n    if (!ArgTypeA->isAnyPointerType() && !isNull(ArgA))\n      return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_null_or_pointer) << \"first\" << ArgTypeA << ArgA->getSourceRange();"},{y,8458,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n  if (BuiltinID == AArch64::BI__builtin_arm_subp) {\n    if (!ArgTypeB->isAnyPointerType() && !isNull(ArgB))\n      return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_null_or_pointer) << \"second\" << ArgTypeB << ArgB->getSourceRange();"}}
},
},
["note_precedence_silence"]={
["err_messaging_class_with_direct_method"]={
[c]="place parentheses around the \'A\' expression to silence this warning",
[j]="messaging a Class with a method that is possibly direct",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="place parentheses around the \'%0\' expression to silence this warning",
[e]="messaging a Class with a method that is possibly direct",
[b]=q,
[f]=n,
[a]="place parentheses around the \'(.*?)\' expression to silence this warning",
[g]="messaging a Class with a method that is possibly direct",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"dac86fd24c56",1349659189,"Use a single note diagnostic for all the precedent/parentheses warnings."}
[b]={yb,1573050950,vb},
[k]={{O,2530,"/// Build an Objective-C instance message expression.\n///\n/// This routine takes care of both normal instance messages and\n/// instance messages to the superclass instance.\n///\n/// \\param Receiver The expression that computes the object that will\n/// receive this message. This may be empty, in which case we are\n/// sending to the superclass instance and \\p SuperLoc must be a valid\n/// source location.\n///\n/// \\param ReceiverType The (static) type of the object receiving the\n/// message. When a \\p Receiver expression is provided, this is the\n/// same type as that expression. For a superclass instance send, this\n/// is a pointer to the type of the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass instance message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this instance message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildInstanceMessage(Expr *Receiver, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n  if (Method && Method->isDirectMethod()) {\n    // Under ARC, self can\'t be assigned, and doing a direct call to `self`\n    // when it\'s a Class is hence safe.  For other cases, we can\'t trust `self`\n    // is what we think it is, so we reject it.\n    if (ReceiverType->isObjCClassType() && !isImplicit && !(Receiver->isObjCSelfExpr() && getLangOpts().ObjCAutoRefCount)) {\n      {\n        auto Builder = Diag(Receiver->getExprLoc(), diag::err_messaging_class_with_direct_method);"}}
},
},
["note_prev_module_declaration"]={
["err_messaging_super_with_direct_method"]={
[c]="previous module declaration is here",
[j]="messaging super with a direct method",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous module declaration is here",
[e]="messaging super with a direct method",
[b]=q,
[f]=n,
[a]="previous module declaration is here",
[g]="messaging super with a direct method",
[g]=p,
[h]=a,
[e]=cd,
[i]=o,
[i]={"18057cb34c83",1507682216,"[Modules TS] Diagnose missing/duplicate module-declaration."}
[b]={yb,1573050950,vb},
[k]={{O,2169,"/// \\param ReceiverType The type of the object receiving the\n/// message. When \\p ReceiverTypeInfo is non-NULL, this is the same\n/// type as that refers to. For a superclass send, this is the type of\n/// the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this class message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildClassMessage(TypeSourceInfo *ReceiverTypeInfo, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n  if (Method && Method->isDirectMethod() && SuperLoc.isValid()) {\n    Diag(SuperLoc, diag::err_messaging_super_with_direct_method) << FixItHint::CreateReplacement(SuperLoc, getLangOpts().ObjCAutoRefCount ? \"self\" : Method->getClassInterface()->getName());"},{O,2540,"/// Build an Objective-C instance message expression.\n///\n/// This routine takes care of both normal instance messages and\n/// instance messages to the superclass instance.\n///\n/// \\param Receiver The expression that computes the object that will\n/// receive this message. This may be empty, in which case we are\n/// sending to the superclass instance and \\p SuperLoc must be a valid\n/// source location.\n///\n/// \\param ReceiverType The (static) type of the object receiving the\n/// message. When a \\p Receiver expression is provided, this is the\n/// same type as that expression. For a superclass instance send, this\n/// is a pointer to the type of the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass instance message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this instance message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildInstanceMessage(Expr *Receiver, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n  if (Method && Method->isDirectMethod()) {\n    if (SuperLoc.isValid()) {\n      {\n        auto Builder = Diag(SuperLoc, diag::err_messaging_super_with_direct_method);"}}
},
},
["note_prev_module_definition"]={
["err_messaging_unqualified_id_with_direct_method"]={
[c]="previously defined here",
[j]="messaging unqualified id with a method that is possibly direct",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previously defined here",
[e]="messaging unqualified id with a method that is possibly direct",
[b]=q,
[f]=n,
[a]="previously defined here",
[g]="messaging unqualified id with a method that is possibly direct",
[g]=p,
[h]=a,
[e]=cd,
[i]=o,
[i]={"bbcc9f0462c1",1472170478,"C++ Modules TS: add frontend support for building pcm files from module"}
[b]={yb,1573050950,vb},
[k]={{O,2521,"/// Build an Objective-C instance message expression.\n///\n/// This routine takes care of both normal instance messages and\n/// instance messages to the superclass instance.\n///\n/// \\param Receiver The expression that computes the object that will\n/// receive this message. This may be empty, in which case we are\n/// sending to the superclass instance and \\p SuperLoc must be a valid\n/// source location.\n///\n/// \\param ReceiverType The (static) type of the object receiving the\n/// message. When a \\p Receiver expression is provided, this is the\n/// same type as that expression. For a superclass instance send, this\n/// is a pointer to the type of the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass instance message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this instance message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildInstanceMessage(Expr *Receiver, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n  if (Method && Method->isDirectMethod()) {\n    if (ReceiverType->isObjCIdType() && !isImplicit) {\n      Diag(Receiver->getExprLoc(), diag::err_messaging_unqualified_id_with_direct_method);"}}
},
},
["note_prev_module_definition_from_ast_file"]={
["err_method_kernel"]={
[c]="module loaded from \'A\'",
[j]="kernel functions cannot be class members",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="module loaded from \'%0\'",
[e]="kernel functions cannot be class members",
[b]=q,
[f]=n,
[a]="module loaded from \'(.*?)\'",
[g]="kernel functions cannot be class members",
[g]=p,
[h]=a,
[e]=cd,
[i]=o,
[i]={"bbcc9f0462c1",1472170478,"C++ Modules TS: add frontend support for building pcm files from module"}
[b]={"d6865b7d71bc",1557238954,"[OpenCL] Prevent mangling kernel functions."},
[k]={{p,9344,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n  if (getLangOpts().OpenCL && NewFD->hasAttr<OpenCLKernelAttr>()) {\n    if (getLangOpts().OpenCLCPlusPlus) {\n      if (DC->isRecord()) {\n        Diag(D.getIdentifierLoc(), diag::err_method_kernel);"}}
},
},
["note_prev_partial_spec_here"]={
["err_method_not_found_with_typo"]={
[c]="previous declaration of class template partial specialization A is here",
[j]="... method A not found ; did you mean B?",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous declaration of class template partial specialization %0 is here",
[e]="%select{instance|class}1 method %0 not found ; did you mean %2?",
[b]=q,
[f]=n,
[a]="previous declaration of class template partial specialization (.*?) is here",
[g]="(?:instance|class) method (.*?) not found ; did you mean (.*?)\\?",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"21610380de97",1256774651,"Implement support for semantic checking and template instantiation of"}
[b]={gb,1480718311,ib},
[k]={{O,1420,"bool Sema::CheckMessageArgumentTypes(const Expr *Receiver, QualType ReceiverType, MultiExprArg Args, Selector Sel, ArrayRef<SourceLocation> SelectorLocs, ObjCMethodDecl *Method, bool isClassMessage, bool isSuperMessage, SourceLocation lbrac, SourceLocation rbrac, SourceRange RecRange, QualType &ReturnType, ExprValueKind &VK) {\n  if (!Method) {\n    if (!getLangOpts().DebuggerSupport) {\n      if (OMD && !OMD->isInvalidDecl()) {\n        if (getLangOpts().ObjCAutoRefCount)\n          DiagID = diag::err_method_not_found_with_typo;"}}
},
},
["note_previous_access_declaration"]={
["err_mips_builtin_requires_dsp"]={
[c]="previously declared \'A\' here",
[j]="this builtin requires \'dsp\' ASE, please use -mdsp",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previously declared \'%1\' here",
[e]="this builtin requires \'dsp\' ASE, please use -mdsp",
[b]=q,
[f]=n,
[a]="previously declared \'(.*?)\' here",
[g]="this builtin requires \'dsp\' ASE, please use \\-mdsp",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"2ed6ceba1d90",1238027057,"Check that the access specifier of a member redeclaration is the same as the original declaration."}
[b]={yb,1573050950,vb},
[k]={{y,3469,"bool Sema::CheckMipsBuiltinCpu(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n  if (Mips::BI__builtin_mips_addu_qb <= BuiltinID && BuiltinID <= Mips::BI__builtin_mips_lwx) {\n    if (!TI.hasFeature(\"dsp\"))\n      return Diag(TheCall->getBeginLoc(), diag::err_mips_builtin_requires_dsp);"}}
},
},
["note_previous_attribute"]={
["err_mips_builtin_requires_dspr2"]={
[c]="previous attribute is here",
[j]="this builtin requires \'dsp r2\' ASE, please use -mdspr2",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous attribute is here",
[e]="this builtin requires \'dsp r2\' ASE, please use -mdspr2",
[b]=q,
[f]=n,
[a]="previous attribute is here",
[g]="this builtin requires \'dsp r2\' ASE, please use \\-mdspr2",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"4c3db23d1c93",1335403563,"Reject cases like"}
[b]={yb,1573050950,vb},
[k]={{y,3474,"bool Sema::CheckMipsBuiltinCpu(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n  if (Mips::BI__builtin_mips_absq_s_qb <= BuiltinID && BuiltinID <= Mips::BI__builtin_mips_subuh_r_qb) {\n    if (!TI.hasFeature(\"dspr2\"))\n      return Diag(TheCall->getBeginLoc(), diag::err_mips_builtin_requires_dspr2);"}}
},
},
["note_previous_builtin_declaration"]={
["err_mips_builtin_requires_msa"]={
[c]="A is a builtin with type B",
[j]="this builtin requires \'msa\' ASE, please use -mmsa",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is a builtin with type %1",
[e]="this builtin requires \'msa\' ASE, please use -mmsa",
[b]=q,
[f]=n,
[a]="(.*?) is a builtin with type (.*?)",
[g]="this builtin requires \'msa\' ASE, please use \\-mmsa",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={M,1236199783,L}
[b]={yb,1573050950,vb},
[k]={{y,3479,"bool Sema::CheckMipsBuiltinCpu(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n  if (Mips::BI__builtin_msa_add_a_b <= BuiltinID && BuiltinID <= Mips::BI__builtin_msa_xori_b) {\n    if (!TI.hasFeature(\"msa\"))\n      return Diag(TheCall->getBeginLoc(), diag::err_mips_builtin_requires_msa);"}}
},
},
["note_previous_decl"]={
["err_mips_fp64_req"]={
[c]="A declared here",
[j]="\'A\' can only be used if the target supports the mfhc1 and mthc1 instructions",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 declared here",
[e]="\'%0\' can only be used if the target supports the mfhc1 and mthc1 instructions",
[b]=q,
[f]=n,
[a]="(.*?) declared here",
[g]="\'(.*?)\' can only be used if the target supports the mfhc1 and mthc1 instructions",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"e7488b904ca9",1259686698,"Don\'t automatically assume that an id-expression refers to a"}
[b]={"eb63256095dd",1534929985,"[clang][mips] Set __mips_fpr correctly for -mfpxx"},
[k]={{"clang/lib/Basic/Targets/Mips.cpp",217,"bool MipsTargetInfo::validateTarget(DiagnosticsEngine &Diags) const {\n  // Option -mfp64 permitted on Mips32 iff revision 2 or higher is present\n  if (FPMode == FP64 && (CPU == \"mips1\" || CPU == \"mips2\" || getISARev() < 2) && ABI == \"o32\") {\n    Diags.Report(diag::err_mips_fp64_req) << \"-mfp64\";"}}
},
},
["note_previous_declaration"]={
["err_mismatched_code_seg_base"]={
[c]="previous declaration is here",
[j]="derived class must specify the same code segment as its base classes",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous declaration is here",
[e]="derived class must specify the same code segment as its base classes",
[b]=q,
[f]=n,
[a]="previous declaration is here",
[g]="derived class must specify the same code segment as its base classes",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={M,1236199783,L}
[b]={"64144eb194c8",1526479037,"Add support for __declspec(code_seg(\"segname\"))"},
[k]={{r,2342,"/// Check the validity of a C++ base class specifier.\n///\n/// \\returns a new CXXBaseSpecifier if well-formed, emits diagnostics\n/// and returns NULL otherwise.\nCXXBaseSpecifier *Sema::CheckBaseSpecifier(CXXRecordDecl *Class, SourceRange SpecifierRange, bool Virtual, AccessSpecifier Access, TypeSourceInfo *TInfo, SourceLocation EllipsisLoc) {\n  if ((DerivedCSA || BaseCSA) && (!BaseCSA || !DerivedCSA || BaseCSA->getName() != DerivedCSA->getName())) {\n    Diag(Class->getLocation(), diag::err_mismatched_code_seg_base);"}}
},
},
["note_previous_declaration_as"]={
["err_mismatched_code_seg_override"]={
[c]="previously declared as A here",
[j]="overriding virtual function must specify the same code segment as its overridden function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previously declared as %0 here",
[e]="overriding virtual function must specify the same code segment as its overridden function",
[b]=q,
[f]=n,
[a]="previously declared as (.*?) here",
[g]="overriding virtual function must specify the same code segment as its overridden function",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={N,1625925174,O}
[b]={"64144eb194c8",1526479037,"Add support for __declspec(code_seg(\"segname\"))"},
[k]={{r,15378,"bool Sema::CheckOverridingFunctionAttributes(const CXXMethodDecl *New, const CXXMethodDecl *Old) {\n  if ((NewCSA || OldCSA) && (!OldCSA || !NewCSA || NewCSA->getName() != OldCSA->getName())) {\n    Diag(New->getLocation(), diag::err_mismatched_code_seg_override);"}}
},
},
["note_previous_default_assoc"]={
["err_mismatched_exception_spec"]={
[c]="previous default generic association is here",
[j]="exception specification in declaration does not match previous declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous default generic association is here",
[e]="exception specification in declaration does not match previous declaration",
[b]=q,
[f]=n,
[a]="previous default generic association is here",
[g]="exception specification in declaration does not match previous declaration",
[g]=p,
[h]=a,
[e]=y,
[i]=o,
[i]={"91147596414d",1302827748,"C1X: implement generic selections"}
[b]={"4f4d7b5d8e5f",1246707540,"Catch function redeclarations with incompatible exception specifications."},
[k]={{Hb,279,"bool Sema::CheckEquivalentExceptionSpec(FunctionDecl *Old, FunctionDecl *New) {\n  unsigned DiagID = diag::err_mismatched_exception_spec;"},{Hb,452,"/// CheckEquivalentExceptionSpec - Check if the two types have equivalent\n/// exception specifications. Exception specifications are equivalent if\n/// they allow exactly the same set of exception types. It does not matter how\n/// that is achieved. See C++ [except.spec]p2.\nbool Sema::CheckEquivalentExceptionSpec(const FunctionProtoType *Old, SourceLocation OldLoc, const FunctionProtoType *New, SourceLocation NewLoc) {\n  unsigned DiagID = diag::err_mismatched_exception_spec;"}}
},
},
["note_previous_definition"]={
["err_mismatched_exception_spec_explicit_instantiation"]={
[c]="previous definition is here",
[j]="exception specification in explicit instantiation does not match instantiated one",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous definition is here",
[e]="exception specification in explicit instantiation does not match instantiated one",
[b]=q,
[f]=n,
[a]="previous definition is here",
[g]="exception specification in explicit instantiation does not match instantiated one",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={M,1236199783,L}
[b]={"73983918c45b",1415268650,"Fix for exception specification mismatch in explicit instantiation."},
[k]={{K,8789,"DeclResult Sema::ActOnExplicitInstantiation(Scope *S, SourceLocation ExternLoc, SourceLocation TemplateLoc, Declarator &D) {\n  // C++11 [except.spec]p4\n  // In an explicit instantiation an exception-specification may be specified,\n  // but is not required.\n  // If an exception-specification is specified in an explicit instantiation\n  // directive, it shall be compatible with the exception-specifications of\n  // other declarations of that function.\n  if (auto *FPT = R->getAs<FunctionProtoType>())\n    if (FPT->hasExceptionSpec()) {\n      unsigned DiagID = diag::err_mismatched_exception_spec_explicit_instantiation;"}}
},
},
["note_previous_exception_handler"]={
["err_mismatched_ms_inheritance"]={
[c]="for type A",
[j]="inheritance model does not match ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="for type %0",
[e]="inheritance model does not match %select{definition|previous declaration}0",
[b]=q,
[f]=n,
[a]="for type (.*?)",
[g]="inheritance model does not match (?:definition|previous declaration)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"63c4da01c819",1248887745,"Check for identical types in C++ catch expression. Patch by Erik Verbruggen."}
[b]={"2c4e00ac1cc8",1391033256,"Sema: Diagnose improper application of inheritance keywords"},
[k]={{v,4063,"bool Sema::checkMSInheritanceAttrOnDefinition(CXXRecordDecl *RD, SourceRange Range, bool BestCase, MSInheritanceModel ExplicitModel) {\n  Diag(Range.getBegin(), diag::err_mismatched_ms_inheritance) << 0 /*definition*/;"},{v,7114,"MSInheritanceAttr *Sema::mergeMSInheritanceAttr(Decl *D, const AttributeCommonInfo &CI, bool BestCase, MSInheritanceModel Model) {\n  if (MSInheritanceAttr *IA = D->getAttr<MSInheritanceAttr>()) {\n    Diag(IA->getLocation(), diag::err_mismatched_ms_inheritance) << 1 /*previous declaration*/;"}}
},
},
["note_previous_explicit_instantiation"]={
["err_mismatched_owning_module"]={
[c]="previous explicit instantiation is here",
[j]="declaration of A in ... follows declaration in ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous explicit instantiation is here",
[e]="declaration of %0 in %select{the global module|module %2}1 follows declaration in %select{the global module|module %4}3",
[b]=q,
[f]=n,
[a]="previous explicit instantiation is here",
[g]="declaration of (.*?) in (?:the global module|module (.*?)) follows declaration in (?:the global module|module (.*?))",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"f61eca93c05f",1242239300,"Improve the semantic checking for explicit instantiations of"}
[b]={"b87720b77aee",1507592529,"[Modules TS] Module ownership semantics for redeclarations."},
[k]={{p,1503,"/// We\'ve determined that \\p New is a redeclaration of \\p Old. Check that they\n/// have compatible owning modules.\nbool Sema::CheckRedeclarationModuleOwnership(NamedDecl *New, NamedDecl *Old) {\n  if (NewIsModuleInterface || OldIsModuleInterface) {\n    Diag(New->getLocation(), diag::err_mismatched_owning_module) << New << NewIsModuleInterface << (NewIsModuleInterface ? NewM->getFullModuleName() : \"\") << OldIsModuleInterface << (OldIsModuleInterface ? OldM->getFullModuleName() : \"\");"}}
},
},
["note_previous_field_init"]={
["err_mismatched_uuid"]={
[c]="previous initialization for field A is here",
[j]="uuid does not match previous declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous initialization for field %0 is here",
[e]="uuid does not match previous declaration",
[b]=q,
[f]=n,
[a]="previous initialization for field (.*?) is here",
[g]="uuid does not match previous declaration",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"5030928d60a1",1567205575,"[c++20] Implement semantic restrictions for C++20 designated"}
[b]={"88f5ed9430a9",1473792926,"[clang-cl] Diagnose duplicate uuids."},
[k]={{v,6150,"UuidAttr *Sema::mergeUuidAttr(Decl *D, const AttributeCommonInfo &CI, StringRef UuidAsWritten, MSGuidDecl *GuidDecl) {\n  if (const auto *UA = D->getAttr<UuidAttr>()) {\n    if (!UA->getGuid().empty()) {\n      Diag(UA->getLocation(), diag::err_mismatched_uuid);"}}
},
},
["note_previous_implicit_declaration"]={
["err_mismatched_visibility"]={
[c]="previous implicit declaration is here",
[j]="visibility does not match previous declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous implicit declaration is here",
[e]="visibility does not match previous declaration",
[b]=q,
[f]=n,
[a]="previous implicit declaration is here",
[g]="visibility does not match previous declaration",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={M,1236199783,L}
[b]={"0232c19a3128",1336436919,"Add missing \'y\'."},
[k]={{v,2522,"template <class T> static T *mergeVisibilityAttr(Sema &S, Decl *D, const AttributeCommonInfo &CI, typename T::VisibilityType value) {\n  if (existingAttr) {\n    S.Diag(existingAttr->getLocation(), diag::err_mismatched_visibility);"}}
},
},
["note_previous_initializer"]={
["err_misplaced_ellipsis_in_declaration"]={
[c]="previous initialization ...is here...",
[j]="\'...\' must ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous initialization %select{|with side effects }0is here%select{| (side effects will not occur at run time)}0",
[e]="\'...\' must %select{immediately precede declared identifier|be innermost component of anonymous pack declaration}0",
[b]=q,
[f]=n,
[a]="previous initialization (?:|with side effects )is here(?:| \\(side effects will not occur at run time\\))",
[g]="\'\\.\\.\\.\' must (?:immediately precede declared identifier|be innermost component of anonymous pack declaration)",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={M,1236199783,L}
[b]={"0efa75c3e38d",1332983802,"Reject \'template<typename...Ts> void f(Ts ...(x));\'. Add a special-case"},
[k]={{"clang/lib/Parse/ParseTemplate.cpp",941,"void Parser::DiagnoseMisplacedEllipsis(SourceLocation EllipsisLoc, SourceLocation CorrectLoc, bool AlreadyHasEllipsis, bool IdentifierHasName) {\n  Diag(EllipsisLoc, diag::err_misplaced_ellipsis_in_declaration) << FixItHint::CreateRemoval(EllipsisLoc) << Insertion << !IdentifierHasName;"}}
},
},
["note_previous_ms_inheritance"]={
["err_misplaced_ivar"]={
[c]="previous inheritance model specified here",
[j]="instance variables may not be placed in ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous inheritance model specified here",
[e]="instance variables may not be placed in %select{categories|class extension}0",
[b]=q,
[f]=n,
[a]="previous inheritance model specified here",
[g]="instance variables may not be placed in (?:categories|class extension)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"2c4e00ac1cc8",1391033256,"Sema: Diagnose improper application of inheritance keywords"}
[b]={"4c172c63e510",1266879860,"Early support for declaring ivars in class extensions. wip."},
[k]={{p,16120,"/// ActOnIvar - Each ivar field of an objective-c class is passed into this\n/// in order to create an IvarDecl object for it.\nDecl *Sema::ActOnIvar(Scope *S, SourceLocation DeclStart, Declarator &D, Expr *BitfieldWidth, tok::ObjCKeywordKind Visibility) {\n  if (ObjCImplementationDecl *IMPDecl = dyn_cast<ObjCImplementationDecl>(EnclosingDecl)) {\n  } else {\n    if (ObjCCategoryDecl *CDecl = dyn_cast<ObjCCategoryDecl>(EnclosingDecl)) {\n      if (LangOpts.ObjCRuntime.isFragile() || !CDecl->IsClassExtension()) {\n        Diag(Loc, diag::err_misplaced_ivar) << CDecl->IsClassExtension();"}}
},
},
["note_previous_namespace_alias"]={
["err_missing_actual_pipe_type"]={
[c]="previously defined as an alias for A",
[j]="missing actual type specifier for pipe",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previously defined as an alias for %0",
[e]="missing actual type specifier for pipe",
[b]=q,
[f]=n,
[a]="previously defined as an alias for (.*?)",
[g]="missing actual type specifier for pipe",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"f463436d9c02",1409785882,"[modules] Make NamespaceAliasDecl redeclarable, as it should be. This fixes"}
[b]={"9c14e282112c",1452343997,"[OpenCL] Pipe type support"},
[k]={{F,1208,"/// Convert the specified declspec to the appropriate type\n/// object.\n/// \\param state Specifies the declarator containing the declaration specifier\n/// to be converted, along with other associated processing state.\n/// \\returns The type described by the declaration specifiers.  This function\n/// never returns null.\nstatic QualType ConvertDeclSpecToType(TypeProcessingState &state) {\n  case DeclSpec::TST_unspecified:\n    // Unspecified typespec defaults to int in C90.  However, the C90 grammar\n    // [C90 6.5] only allows a decl-spec if there was *some* type-specifier,\n    // type-qualifier, or storage-class-specifier.  If not, emit an extwarn.\n    // Note that the one exception to this is function definitions, which are\n    // allowed to be completely missing a declspec.  This is handled in the\n    // parser already though by it pretending to have seen an \'int\' in this\n    // case.\n    if (S.getLangOpts().isImplicitIntRequired()) {\n    } else if (!DS.hasTypeSpecifier()) {\n      // C99 and C++ require a type specifier.  For example, C99 6.7.2p2 says:\n      // \"At least one type specifier shall be given in the declaration\n      // specifiers in each declaration, and in the specifier-qualifier list in\n      // each struct declaration and type name.\"\n      if (!S.getLangOpts().isImplicitIntAllowed() && !DS.isTypeSpecPipe()) {\n      } else if (S.getLangOpts().getOpenCLCompatibleVersion() >= 200 && DS.isTypeSpecPipe()) {\n        S.Diag(DeclLoc, diag::err_missing_actual_pipe_type) << DS.getSourceRange();"}}
},
},
["note_previous_statement"]={
["err_missing_atsign_prefix"]={
[c]="previous statement is here",
[j]="... literal must be prefixed by \'@\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous statement is here",
[e]="%select{string|numeric}0 literal must be prefixed by \'@\'",
[b]=q,
[f]=n,
[a]="previous statement is here",
[g]="(?:string|numeric) literal must be prefixed by \'@\'",
[g]=p,
[h]=a,
[e]=y,
[i]=o,
[i]={"739b410f1ff5",1570627358,"Add a warning, flags and pragmas to limit the number of pre-processor tokens in a translation unit"}
[b]={"bd714e9bb120",1387308823,"Objective-C. Make diagnostics and fix-its consistent "},
[k]={{q,15146,"bool Sema::CheckConversionToObjCLiteral(QualType DstType, Expr *&Exp, bool Diagnose) {\n  if (auto *SL = dyn_cast<StringLiteral>(SrcExpr)) {\n    if (Diagnose) {\n      Diag(SL->getBeginLoc(), diag::err_missing_atsign_prefix) << /*string*/ 0 << FixItHint::CreateInsertion(SL->getBeginLoc(), \"@\");"},{q,15156,"bool Sema::CheckConversionToObjCLiteral(QualType DstType, Expr *&Exp, bool Diagnose) {\n  if ((isa<IntegerLiteral>(SrcExpr) || isa<CharacterLiteral>(SrcExpr) || isa<FloatingLiteral>(SrcExpr) || isa<ObjCBoolLiteralExpr>(SrcExpr) || isa<CXXBoolLiteralExpr>(SrcExpr)) && !SrcExpr->isNullPointerConstant(getASTContext(), Expr::NPC_NeverValueDependent)) {\n    if (Diagnose) {\n      Diag(SrcExpr->getBeginLoc(), diag::err_missing_atsign_prefix) << /*number*/ 1 << FixItHint::CreateInsertion(SrcExpr->getBeginLoc(), \"@\");"}}
},
},
["note_previous_template_specialization"]={
["err_missing_before_module_end"]={
[c]="previous template specialization is here",
[j]="expected A at end of module",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous template specialization is here",
[e]="expected %0 at end of module",
[b]=q,
[f]=n,
[a]="previous template specialization is here",
[g]="expected (.*?) at end of module",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"f61eca93c05f",1242239300,"Improve the semantic checking for explicit instantiations of"}
[b]={"c4e04a296403",1442640777,"[Modules] More descriptive diagnostics for misplaced import directive"},
[k]={{Q,2453,"bool BalancedDelimiterTracker::diagnoseMissingClose() {\n  if (P.Tok.is(tok::annot_module_end))\n    P.Diag(P.Tok, diag::err_missing_before_module_end) << Close;"}}
},
},
["note_previous_use"]={
["err_missing_catch_finally"]={
[c]="previous use is here",
[j]="@try statement without a @catch and @finally clause",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous use is here",
[e]="@try statement without a @catch and @finally clause",
[b]=q,
[f]=n,
[a]="previous use is here",
[g]="@try statement without a @catch and @finally clause",
[g]=p,
[h]=a,
[e]=p,
[i]=s,
[i]={M,1236199783,L}
[b]={z,1236199783,A},
[k]={{"clang/lib/Parse/ParseObjc.cpp",2388,"///  objc-try-catch-statement:\n///    @try compound-statement objc-catch-list[opt]\n///    @try compound-statement objc-catch-list[opt] @finally compound-statement\n///\n///  objc-catch-list:\n///    @catch ( parameter-declaration ) compound-statement\n///    objc-catch-list @catch ( catch-parameter-declaration ) compound-statement\n///  catch-parameter-declaration:\n///    parameter-declaration\n///    \'...\' [OBJC2]\n///\nStmtResult Parser::ParseObjCTryStmt(SourceLocation atLoc) {\n  if (!catch_or_finally_seen) {\n    Diag(atLoc, diag::err_missing_catch_finally);"}}
},
},
["note_previous_uuid"]={
["err_missing_comma_before_ellipsis"]={
[c]="previous uuid specified here",
[j]="C requires a comma prior to the ellipsis in a variadic function type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous uuid specified here",
[e]="C requires a comma prior to the ellipsis in a variadic function type",
[b]=q,
[f]=n,
[a]="previous uuid specified here",
[g]="C requires a comma prior to the ellipsis in a variadic function type",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"88f5ed9430a9",1473792926,"[clang-cl] Diagnose duplicate uuids."}
[b]={"9bfc2e50a786",1253655700,"In C++, a variadic function does not need an ellipsis prior to the comma. Parse it in both C and C++..."},
[k]={{C,6766,"/// ParseParameterDeclarationClause - Parse a (possibly empty) parameter-list\n/// after the opening parenthesis. This function will not parse a K&R-style\n/// identifier list.\n///\n/// DeclContext is the context of the declarator being parsed.  If FirstArgAttrs\n/// is non-null, then the caller parsed those attributes immediately after the\n/// open paren - they will be applied to the DeclSpec of the first parameter.\n///\n/// After returning, ParamInfo will hold the parsed parameters. EllipsisLoc will\n/// be the location of the ellipsis, if any was parsed.\n///\n///      parameter-type-list: [C99 6.7.5]\n///        parameter-list\n///        parameter-list \',\' \'...\'\n/// [C++]  parameter-list \'...\'\n///\n///      parameter-list: [C99 6.7.5]\n///        parameter-declaration\n///        parameter-list \',\' parameter-declaration\n///\n///      parameter-declaration: [C99 6.7.5]\n///        declaration-specifiers declarator\n/// [C++]  declaration-specifiers declarator \'=\' assignment-expression\n/// [C++11]                                      initializer-clause\n/// [GNU]  declaration-specifiers declarator attributes\n///        declaration-specifiers abstract-declarator[opt]\n/// [C++]  declaration-specifiers abstract-declarator[opt]\n///          \'=\' assignment-expression\n/// [GNU]  declaration-specifiers abstract-declarator[opt] attributes\n/// [C++11] attribute-specifier-seq parameter-declaration\n///\nvoid Parser::ParseParameterDeclarationClause(DeclaratorContext DeclaratorCtx, ParsedAttributes &FirstArgAttrs, SmallVectorImpl<DeclaratorChunk::ParamInfo> &ParamInfo, SourceLocation &EllipsisLoc, bool IsACXXFunctionDeclaration) {\n  do {\n    if (TryConsumeToken(tok::ellipsis, EllipsisLoc)) {\n      if (!getLangOpts().CPlusPlus) {\n        Diag(EllipsisLoc, diag::err_missing_comma_before_ellipsis) << FixItHint::CreateInsertion(EllipsisLoc, \", \");"}}
},
},
["note_printf_c_str"]={
["err_missing_default_ctor"]={
[c]="did you mean to call the A method?",
[j]="... ... A ... does not have a default constructor",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="did you mean to call the %0 method?",
[e]="%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",
[b]=q,
[f]=n,
[a]="did you mean to call the (.*?) method\\?",
[g]="(?:constructor for (.*?) must explicitly initialize the|implicit default constructor for (.*?) must explicitly initialize the|cannot use constructor inherited from base class (.*?);) (?:base class|member) (.*?) (?:which|which|of (.*?)) does not have a default constructor",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"c7b0bdffe75c",1340240915,"If an object (such as a std::string) with an appropriate c_str() member function"}
[b]={"d7686ef31c21",1257728747,"Unify the codepaths used to verify base and member initializers for explicitly"},
[k]={{L,8335,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n  case FK_ConstructorOverloadFailed: {\n    case OR_No_Viable_Function:\n      if (Kind.getKind() == InitializationKind::IK_Default && (Entity.getKind() == InitializedEntity::EK_Base || Entity.getKind() == InitializedEntity::EK_Member || Entity.getKind() == InitializedEntity::EK_ParenAggInitMember) && isa<CXXConstructorDecl>(S.CurContext)) {\n        if (Entity.getKind() == InitializedEntity::EK_Base) {\n          S.Diag(Kind.getLocation(), diag::err_missing_default_ctor) << (InheritedFrom ? 2 : Constructor->isImplicit() ? 1 : 0) << S.Context.getTypeDeclType(Constructor->getParent()) << /*base=*/0 << Entity.getType() << InheritedFrom;"},{L,8340,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n  case FK_ConstructorOverloadFailed: {\n    case OR_No_Viable_Function:\n      if (Kind.getKind() == InitializationKind::IK_Default && (Entity.getKind() == InitializedEntity::EK_Base || Entity.getKind() == InitializedEntity::EK_Member || Entity.getKind() == InitializedEntity::EK_ParenAggInitMember) && isa<CXXConstructorDecl>(S.CurContext)) {\n        if (Entity.getKind() == InitializedEntity::EK_Base) {\n        } else {\n          S.Diag(Kind.getLocation(), diag::err_missing_default_ctor) << (InheritedFrom ? 2 : Constructor->isImplicit() ? 1 : 0) << S.Context.getTypeDeclType(Constructor->getParent()) << /*member=*/1 << Entity.getName() << InheritedFrom;"}}
},
},
["note_prior_template_arg_substitution"]={
["err_missing_dependent_template_keyword"]={
[c]="while substituting prior template arguments into ... template parameterA B",
[j]="use \'template\' keyword to treat \'A\' as a dependent template name",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="while substituting prior template arguments into %select{non-type|template}0 template parameter%1 %2",
[e]="use \'template\' keyword to treat \'%0\' as a dependent template name",
[b]=q,
[f]=n,
[a]="while substituting prior template arguments into (?:non\\-type|template) template parameter(.*?) (.*?)",
[g]="use \'template\' keyword to treat \'(.*?)\' as a dependent template name",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"e62e6a0191d2",1257966828,"Before checking a template template argument against its corresponding"}
[b]={"786123dc48d8",1274483887,"Improve parser recovery when we encounter a dependent template name"},
[k]={{V,475,"/// Parse global scope or nested-name-specifier if present.\n///\n/// Parses a C++ global scope specifier (\'::\') or nested-name-specifier (which\n/// may be preceded by \'::\'). Note that this routine will not parse ::new or\n/// ::delete; it will just leave them in the token stream.\n///\n///      \'::\'[opt] nested-name-specifier\n///      \'::\'\n///\n///      nested-name-specifier:\n///        type-name \'::\'\n///        namespace-name \'::\'\n///        nested-name-specifier identifier \'::\'\n///        nested-name-specifier \'template\'[opt] simple-template-id \'::\'\n///\n///\n/// \\param SS the scope specifier that will be set to the parsed\n/// nested-name-specifier (or empty)\n///\n/// \\param ObjectType if this nested-name-specifier is being parsed following\n/// the \".\" or \"->\" of a member access expression, this parameter provides the\n/// type of the object whose members are being accessed.\n///\n/// \\param ObjectHadErrors if this unqualified-id occurs within a member access\n/// expression, indicates whether the original subexpressions had any errors.\n/// When true, diagnostics for missing \'template\' keyword will be supressed.\n///\n/// \\param EnteringContext whether we will be entering into the context of\n/// the nested-name-specifier after parsing it.\n///\n/// \\param MayBePseudoDestructor When non-NULL, points to a flag that\n/// indicates whether this nested-name-specifier may be part of a\n/// pseudo-destructor name. In this case, the flag will be set false\n/// if we don\'t actually end up parsing a destructor name. Moreover,\n/// if we do end up determining that we are parsing a destructor name,\n/// the last component of the nested-name-specifier is not parsed as\n/// part of the scope specifier.\n///\n/// \\param IsTypename If \\c true, this nested-name-specifier is known to be\n/// part of a type name. This is used to improve error recovery.\n///\n/// \\param LastII When non-NULL, points to an IdentifierInfo* that will be\n/// filled in with the leading identifier in the last component of the\n/// nested-name-specifier, if any.\n///\n/// \\param OnlyNamespace If true, only considers namespaces in lookup.\n///\n///\n/// \\returns true if there was an error parsing a scope specifier\nbool Parser::ParseOptionalCXXScopeSpecifier(CXXScopeSpec &SS, ParsedType ObjectType, bool ObjectHadErrors, bool EnteringContext, bool *MayBePseudoDestructor, bool IsTypename, IdentifierInfo **LastII, bool OnlyNamespace, bool InUsingDeclaration) {\n  while (true) {\n    // nested-name-specifier:\n    //  type-name \'<\'\n    if (Next.is(tok::less)) {\n      if (MemberOfUnknownSpecialization && (ObjectType || SS.isSet()) && (IsTypename || isTemplateArgumentList(1) == TPResult::True)) {\n        // If we had errors before, ObjectType can be dependent even without any\n        // templates. Do not report missing template keyword in that case.\n        if (!ObjectHadErrors) {\n          unsigned DiagID = diag::err_missing_dependent_template_keyword;"},{V,2256,"/// Finish parsing a C++ unqualified-id that is a template-id of\n/// some form.\n///\n/// This routine is invoked when a \'<\' is encountered after an identifier or\n/// operator-function-id is parsed by \\c ParseUnqualifiedId() to determine\n/// whether the unqualified-id is actually a template-id. This routine will\n/// then parse the template arguments and form the appropriate template-id to\n/// return to the caller.\n///\n/// \\param SS the nested-name-specifier that precedes this template-id, if\n/// we\'re actually parsing a qualified-id.\n///\n/// \\param ObjectType if this unqualified-id occurs within a member access\n/// expression, the type of the base object whose member is being accessed.\n///\n/// \\param ObjectHadErrors this unqualified-id occurs within a member access\n/// expression, indicates whether the original subexpressions had any errors.\n///\n/// \\param Name for constructor and destructor names, this is the actual\n/// identifier that may be a template-name.\n///\n/// \\param NameLoc the location of the class-name in a constructor or\n/// destructor.\n///\n/// \\param EnteringContext whether we\'re entering the scope of the\n/// nested-name-specifier.\n///\n/// \\param Id as input, describes the template-name or operator-function-id\n/// that precedes the \'<\'. If template arguments were parsed successfully,\n/// will be updated with the template-id.\n///\n/// \\param AssumeTemplateId When true, this routine will assume that the name\n/// refers to a template without performing name lookup to verify.\n///\n/// \\returns true if a parse error occurred, false otherwise.\nbool Parser::ParseUnqualifiedIdTemplateId(CXXScopeSpec &SS, ParsedType ObjectType, bool ObjectHadErrors, SourceLocation TemplateKWLoc, IdentifierInfo *Name, SourceLocation NameLoc, bool EnteringContext, UnqualifiedId &Id, bool AssumeTemplateId) {\n  case UnqualifiedIdKind::IK_LiteralOperatorId:\n    if (AssumeTemplateId) {\n    } else {\n      if (TNK == TNK_Non_template && MemberOfUnknownSpecialization && ObjectType && isTemplateArgumentList(0) == TPResult::True) {\n        // If we had errors before, ObjectType can be dependent even without any\n        // templates, do not report missing template keyword in that case.\n        if (!ObjectHadErrors) {\n          Diag(Id.StartLocation, diag::err_missing_dependent_template_keyword) << Name << FixItHint::CreateInsertion(Id.StartLocation, \"template \");"}}
},
},
["note_private_extern"]={
["err_missing_end_of_definition"]={
[c]="use __attribute__((visibility(\"hidden\"))) attribute instead",
[j]="missing \'}\' at end of definition of A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use __attribute__((visibility(\"hidden\"))) attribute instead",
[e]="missing \'}\' at end of definition of %q0",
[b]=q,
[f]=n,
[a]="use __attribute__\\(\\(visibility\\(\"hidden\"\\)\\)\\) attribute instead",
[g]="missing \'\\}\' at end of definition of (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"f85f33863455",1345239895,"c: privide deprecated warning when __private_extern__ storage"}
[b]={"da35e963bc57",1383972771,"Try to recover a bit better if a close brace is missing from the end of a class"},
[k]={{R,3194,"void Parser::DiagnoseUnexpectedNamespace(NamedDecl *D) {\n  Diag(D->getLocation(), diag::err_missing_end_of_definition) << D;"}}
},
},
["note_private_module_fragment"]={
["err_missing_exception_specification"]={
[c]="private module fragment begins here",
[j]="A is missing exception specification \'B\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="private module fragment begins here",
[e]="%0 is missing exception specification \'%1\'",
[b]=q,
[f]=n,
[a]="private module fragment begins here",
[g]="(.*?) is missing exception specification \'(.*?)\'",
[g]=p,
[h]=a,
[e]=cd,
[i]=o,
[i]={"a5bbbfef156c",1555621974,"[c++2a] Add semantic support for private module fragments."}
[b]={"a91de375f278",1443574130,"Promote a warning on ill-formed code (redeclaration missing an exception"},
[k]={{Hb,372,"bool Sema::CheckEquivalentExceptionSpec(FunctionDecl *Old, FunctionDecl *New) {\n  if (getLangOpts().MSVCCompat && isDynamicExceptionSpec(ESI.Type)) {\n  } else if (New->isReplaceableGlobalAllocationFunction() && ESI.Type != EST_DependentNoexcept) {\n  } else if (ESI.Type == EST_NoThrow) {\n  } else {\n    DiagID = diag::err_missing_exception_specification;"}}
},
},
["note_private_top_level_defined"]={
["err_missing_method_context"]={
[c]="module defined here",
[j]="missing context for method declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="module defined here",
[e]="missing context for method declaration",
[b]=q,
[f]=n,
[a]="module defined here",
[g]="missing context for method declaration",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"84bc0a271dcd",1513919083,"[Modules] Map missing private submodules from Foo.Private to Foo_Private"}
[b]={gb,1480718311,ib},
[k]={{hb,3917,"Decl *Sema::ActOnMethodDeclaration(Scope *S, SourceLocation MethodLoc, SourceLocation EndLoc, tok::TokenKind MethodType, ObjCDeclSpec &ReturnQT, ParsedType ReturnType, ArrayRef<SourceLocation> SelectorLocs, Selector Sel,\n  // Make sure we can establish a context for the method.\n  if (!CurContext->isObjCContainer()) {\n    Diag(MethodLoc, diag::err_missing_method_context);"}}
},
},
["note_property_attribute"]={
["err_missing_module"]={
[c]="property A is declared ... here",
[j]="no module named \'A\' declared in module map file \'B\'",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="property %0 is declared %select{deprecated|unavailable|partial}1 here",
[e]="no module named \'%0\' declared in module map file \'%1\'",
[b]=q,
[f]=J,
[a]="property (.*?) is declared (?:deprecated|unavailable|partial) here",
[g]="no module named \'(.*?)\' declared in module map file \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"974c94804986",1348260397,"objective-C: when diagnosing deprecated/unavailable usage of"}
[b]={"2b20cb87f5b6",1321402146,"Add support for building a module from a module map to the -cc1"},
[k]={{qb,443,"static Module *prepareToBuildModule(CompilerInstance &CI, StringRef ModuleMapFilename) {\n  if (!M) {\n    CI.getDiagnostics().Report(diag::err_missing_module) << CI.getLangOpts().CurrentModule << ModuleMapFilename;"}}
},
},
["note_property_declare"]={
["err_missing_module_name"]={
[c]="property declared here",
[j]="no module name provided; specify one with -fmodule-name=",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="property declared here",
[e]="no module name provided; specify one with -fmodule-name=",
[b]=q,
[f]=J,
[a]="property declared here",
[g]="no module name provided; specify one with \\-fmodule\\-name\\=",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"de8db16a7daa",1257201915,"Property declared in continuation class can only be used to"}
[b]={"2b20cb87f5b6",1321402146,"Add support for building a module from a module map to the -cc1"},
[k]={{qb,429,"static Module *prepareToBuildModule(CompilerInstance &CI, StringRef ModuleMapFilename) {\n  if (CI.getLangOpts().CurrentModule.empty()) {\n    CI.getDiagnostics().Report(diag::err_missing_module_name);"}}
},
},
["note_property_synthesize"]={
["err_missing_open_square_message_send"]={
[c]="property synthesized here",
[j]="missing \'[\' at start of message send expression",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="property synthesized here",
[e]="missing \'[\' at start of message send expression",
[b]=q,
[f]=n,
[a]="property synthesized here",
[g]="missing \'\\[\' at start of message send expression",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"f5b993f7b149",1355352505,"[objc] For the ARC error that is emitted when a synthesized property implementation"}
[b]={"e9bba4f1a441",1284562265,"Implement bracket insertion for Objective-C instance message sends as"},
[k]={{O,2105,"/// \\param ReceiverType The type of the object receiving the\n/// message. When \\p ReceiverTypeInfo is non-NULL, this is the same\n/// type as that refers to. For a superclass send, this is the type of\n/// the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this class message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildClassMessage(TypeSourceInfo *ReceiverTypeInfo, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n  if (LBracLoc.isInvalid()) {\n    Diag(Loc, diag::err_missing_open_square_message_send) << FixItHint::CreateInsertion(Loc, \"[\");"},{O,2290,"/// Build an Objective-C instance message expression.\n///\n/// This routine takes care of both normal instance messages and\n/// instance messages to the superclass instance.\n///\n/// \\param Receiver The expression that computes the object that will\n/// receive this message. This may be empty, in which case we are\n/// sending to the superclass instance and \\p SuperLoc must be a valid\n/// source location.\n///\n/// \\param ReceiverType The (static) type of the object receiving the\n/// message. When a \\p Receiver expression is provided, this is the\n/// same type as that expression. For a superclass instance send, this\n/// is a pointer to the type of the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass instance message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this instance message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildInstanceMessage(Expr *Receiver, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n  if (LBracLoc.isInvalid()) {\n    Diag(Loc, diag::err_missing_open_square_message_send) << FixItHint::CreateInsertion(Loc, \"[\");"}}
},
},
["note_protected_by___block"]={
["err_missing_param"]={
[c]="jump bypasses setup of __block variable",
[j]="expected parameter declarator",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses setup of __block variable",
[e]="expected parameter declarator",
[b]=q,
[f]=n,
[a]="jump bypasses setup of __block variable",
[g]="expected parameter declarator",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"9662cd322760",1248034631,"enhance the goto checker to reject jumps across __block variable definitions."}
[b]={z,1236199783,A},
[k]={{C,6674,"/// ParseParameterDeclarationClause - Parse a (possibly empty) parameter-list\n/// after the opening parenthesis. This function will not parse a K&R-style\n/// identifier list.\n///\n/// DeclContext is the context of the declarator being parsed.  If FirstArgAttrs\n/// is non-null, then the caller parsed those attributes immediately after the\n/// open paren - they will be applied to the DeclSpec of the first parameter.\n///\n/// After returning, ParamInfo will hold the parsed parameters. EllipsisLoc will\n/// be the location of the ellipsis, if any was parsed.\n///\n///      parameter-type-list: [C99 6.7.5]\n///        parameter-list\n///        parameter-list \',\' \'...\'\n/// [C++]  parameter-list \'...\'\n///\n///      parameter-list: [C99 6.7.5]\n///        parameter-declaration\n///        parameter-list \',\' parameter-declaration\n///\n///      parameter-declaration: [C99 6.7.5]\n///        declaration-specifiers declarator\n/// [C++]  declaration-specifiers declarator \'=\' assignment-expression\n/// [C++11]                                      initializer-clause\n/// [GNU]  declaration-specifiers declarator attributes\n///        declaration-specifiers abstract-declarator[opt]\n/// [C++]  declaration-specifiers abstract-declarator[opt]\n///          \'=\' assignment-expression\n/// [GNU]  declaration-specifiers abstract-declarator[opt] attributes\n/// [C++11] attribute-specifier-seq parameter-declaration\n///\nvoid Parser::ParseParameterDeclarationClause(DeclaratorContext DeclaratorCtx, ParsedAttributes &FirstArgAttrs, SmallVectorImpl<DeclaratorChunk::ParamInfo> &ParamInfo, SourceLocation &EllipsisLoc, bool IsACXXFunctionDeclaration) {\n  do {\n    // If no parameter was specified, verify that *something* was specified,\n    // otherwise we have a missing type and identifier.\n    if (DS.isEmpty() && ParmDeclarator.getIdentifier() == nullptr && ParmDeclarator.getNumTypeObjects() == 0) {\n      Diag(DSStart, diag::err_missing_param);"}}
},
},
["note_protected_by_cleanup"]={
["err_missing_property_context"]={
[c]="jump bypasses initialization of variable with __attribute__((cleanup))",
[j]="missing context for property implementation declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of variable with __attribute__((cleanup))",
[e]="missing context for property implementation declaration",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of variable with __attribute__\\(\\(cleanup\\)\\)",
[g]="missing context for property implementation declaration",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"960cc525ec72",1240047387,"rewrite the goto scope checking code to be more efficient, simpler,"}
[b]={gb,1480718311,ib},
[k]={{Gb,891,"/// ActOnPropertyImplDecl - This routine performs semantic checks and\n/// builds the AST node for a property implementation declaration; declared\n/// as \\@synthesize or \\@dynamic.\n///\nDecl *Sema::ActOnPropertyImplDecl(Scope *S, SourceLocation AtLoc, SourceLocation PropertyLoc, bool Synthesize, IdentifierInfo *PropertyId, IdentifierInfo *PropertyIvar, SourceLocation PropertyIvarLoc, ObjCPropertyQueryKind QueryKind) {\n  // Make sure we have a context for the property implementation declaration.\n  if (!ClassImpDecl) {\n    Diag(AtLoc, diag::err_missing_property_context);"}}
},
},
["note_protected_by_consteval_if"]={
["err_missing_property_interface"]={
[c]="jump enters controlled statement of consteval if",
[j]="property implementation in a category with no category declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump enters controlled statement of consteval if",
[e]="property implementation in a category with no category declaration",
[b]=q,
[f]=n,
[a]="jump enters controlled statement of consteval if",
[g]="property implementation in a category with no category declaration",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={Ib,1615397021,Hb}
[b]={gb,1480718311,ib},
[k]={{Gb,972,"/// ActOnPropertyImplDecl - This routine performs semantic checks and\n/// builds the AST node for a property implementation declaration; declared\n/// as \\@synthesize or \\@dynamic.\n///\nDecl *Sema::ActOnPropertyImplDecl(Scope *S, SourceLocation AtLoc, SourceLocation PropertyLoc, bool Synthesize, IdentifierInfo *PropertyId, IdentifierInfo *PropertyIvar, SourceLocation PropertyIvarLoc, ObjCPropertyQueryKind QueryKind) {\n  if ((IC = dyn_cast<ObjCImplementationDecl>(ClassImpDecl))) {\n  } else if ((CatImplClass = dyn_cast<ObjCCategoryImplDecl>(ClassImpDecl))) {\n    if (!IDecl) {\n      Diag(AtLoc, diag::err_missing_property_interface);"}}
},
},
["note_protected_by_constexpr_if"]={
["err_missing_property_ivar_decl"]={
[c]="jump enters controlled statement of constexpr if",
[j]="synthesized property A must either be named the same as a compatible instance variable or must explicitly name an instance variable",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump enters controlled statement of constexpr if",
[e]="synthesized property %0 must either be named the same as a compatible instance variable or must explicitly name an instance variable",
[b]=q,
[f]=n,
[a]="jump enters controlled statement of constexpr if",
[g]="synthesized property (.*?) must either be named the same as a compatible instance variable or must explicitly name an instance variable",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"b130fe7d316e",1466709409,"Implement p0292r2 (constexpr if), a likely C++1z feature."}
[b]={gb,1480718311,ib},
[k]={{Gb,1104,"/// ActOnPropertyImplDecl - This routine performs semantic checks and\n/// builds the AST node for a property implementation declaration; declared\n/// as \\@synthesize or \\@dynamic.\n///\nDecl *Sema::ActOnPropertyImplDecl(Scope *S, SourceLocation AtLoc, SourceLocation PropertyLoc, bool Synthesize, IdentifierInfo *PropertyId, IdentifierInfo *PropertyIvar, SourceLocation PropertyIvarLoc, ObjCPropertyQueryKind QueryKind) {\n  // Check that we have a valid, previously declared ivar for @synthesize\n  if (Synthesize) {\n    if (!Ivar) {\n      if (getLangOpts().ObjCRuntime.isFragile())\n        Diag(PropertyDiagLoc, diag::err_missing_property_ivar_decl) << PropertyId;"}}
},
},
["note_protected_by_cxx_catch"]={
["err_missing_type_specifier"]={
[c]="jump bypasses initialization of catch block",
[j]="a type specifier is required for all declarations",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of catch block",
[e]="a type specifier is required for all declarations",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of catch block",
[g]="a type specifier is required for all declarations",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"4de47b445b96",1240864051,"Improve validation of C++ exception handling: diagnose throwing incomplete types and jumps into prot..."}
[b]={x,1237025389,w},
[k]={{F,1201,"/// Convert the specified declspec to the appropriate type\n/// object.\n/// \\param state Specifies the declarator containing the declaration specifier\n/// to be converted, along with other associated processing state.\n/// \\returns The type described by the declaration specifiers.  This function\n/// never returns null.\nstatic QualType ConvertDeclSpecToType(TypeProcessingState &state) {\n  case DeclSpec::TST_unspecified:\n    // Unspecified typespec defaults to int in C90.  However, the C90 grammar\n    // [C90 6.5] only allows a decl-spec if there was *some* type-specifier,\n    // type-qualifier, or storage-class-specifier.  If not, emit an extwarn.\n    // Note that the one exception to this is function definitions, which are\n    // allowed to be completely missing a declspec.  This is handled in the\n    // parser already though by it pretending to have seen an \'int\' in this\n    // case.\n    if (S.getLangOpts().isImplicitIntRequired()) {\n    } else if (!DS.hasTypeSpecifier()) {\n      // C99 and C++ require a type specifier.  For example, C99 6.7.2p2 says:\n      // \"At least one type specifier shall be given in the declaration\n      // specifiers in each declaration, and in the specifier-qualifier list in\n      // each struct declaration and type name.\"\n      if (!S.getLangOpts().isImplicitIntAllowed() && !DS.isTypeSpecPipe()) {\n        S.Diag(DeclLoc, diag::err_missing_type_specifier) << DS.getSourceRange();"}}
},
},
["note_protected_by_cxx_try"]={
["err_missing_vfs_overlay_file"]={
[c]="jump bypasses initialization of try block",
[j]="virtual filesystem overlay file \'A\' not found",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="jump bypasses initialization of try block",
[e]="virtual filesystem overlay file \'%0\' not found",
[b]=q,
[f]=J,
[a]="jump bypasses initialization of try block",
[g]="virtual filesystem overlay file \'(.*?)\' not found",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"4de47b445b96",1240864051,"Improve validation of C++ exception handling: diagnose throwing incomplete types and jumps into prot..."}
[b]={"801272a98c71",1393352627,"Add a driver option -ivfsoverlay"},
[k]={{Bb,3933,"IntrusiveRefCntPtr<llvm::vfs::FileSystem> clang::createVFSFromOverlayFiles(ArrayRef<std::string> VFSOverlayFiles, DiagnosticsEngine &Diags, IntrusiveRefCntPtr<llvm::vfs::FileSystem> BaseFS) {\n  // earlier vfs files are on the bottom\n  for (const auto &File : VFSOverlayFiles) {\n    if (!Buffer) {\n      Diags.Report(diag::err_missing_vfs_overlay_file) << File;"}}
},
},
["note_protected_by_if_available"]={
["err_missing_whitespace_digraph"]={
[c]="jump enters controlled statement of if available",
[j]="found \'<::\' after a ... which forms the digraph \'<:\' (aka \'[\') and a \':\', did you mean \'< ::\'?",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump enters controlled statement of if available",
[e]="found \'<::\' after a %select{template name|addrspace_cast|const_cast|dynamic_cast|reinterpret_cast|static_cast}0 which forms the digraph \'<:\' (aka \'[\') and a \':\', did you mean \'< ::\'?",
[b]=q,
[f]=n,
[a]="jump enters controlled statement of if available",
[g]="found \'\\<\\:\\:\' after a (?:template name|addrspace_cast|const_cast|dynamic_cast|reinterpret_cast|static_cast) which forms the digraph \'\\<\\:\' \\(aka \'\\[\'\\) and a \'\\:\', did you mean \'\\< \\:\\:\'\\?",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"5cd57177a51a",1471369451,"[ObjC] Warn on unguarded use of partial declaration"}
[b]={"55858499e21e",1302817545,"Detect when the string \"<::\" is found in code after a cast or template name and is interpreted as \"[..."},
[k]={{V,71,"// Suggest fixit for \"<::\" after a cast.\nstatic void FixDigraph(Parser &P, Preprocessor &PP, Token &DigraphToken, Token &ColonToken, tok::TokenKind Kind, bool AtDigraph) {\n  P.Diag(DigraphToken.getLocation(), diag::err_missing_whitespace_digraph) << SelectDigraphErrorMessage(Kind) << FixItHint::CreateReplacement(Range, \"< ::\");"}}
},
},
["note_protected_by_non_trivial_c_struct_init"]={
["err_mixing_cxx_try_seh_try"]={
[c]="jump bypasses initialization of variable of non-trivial C struct type",
[j]="cannot use ... in the same function as SEH \'__try\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of variable of non-trivial C struct type",
[e]="cannot use %select{C++ \'try\'|Objective-C \'@try\'}0 in the same function as SEH \'__try\'",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of variable of non\\-trivial C struct type",
[g]="cannot use (?:C\\+\\+ \'try\'|Objective\\-C \'@try\') in the same function as SEH \'__try\'",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"7275da0f2ee2",1519802155,"[ObjC] Allow declaring __strong pointer fields in structs in Objective-C"}
[b]={"e71759103e72",1422915331,"SEH: Diagnose use of C++ EH and SEH in the same function"},
[k]={{E,3654,"StmtResult Sema::ActOnObjCAtTryStmt(SourceLocation AtLoc, Stmt *Try, MultiStmtArg CatchStmts, Stmt *Finally) {\n  if (FSI->FirstSEHTryLoc.isValid()) {\n    Diag(AtLoc, diag::err_mixing_cxx_try_seh_try) << 1;"},{E,3868,"/// ActOnCXXTryBlock - Takes a try compound-statement and a number of\n/// handlers and creates a try statement from them.\nStmtResult Sema::ActOnCXXTryBlock(SourceLocation TryLoc, Stmt *TryBlock, ArrayRef<Stmt *> Handlers) {\n  // C++ try is incompatible with SEH __try.\n  if (!getLangOpts().Borland && FSI->FirstSEHTryLoc.isValid()) {\n    Diag(TryLoc, diag::err_mixing_cxx_try_seh_try) << 0;"},{E,3947,"StmtResult Sema::ActOnSEHTryBlock(bool IsCXXTry, SourceLocation TryLoc, Stmt *TryBlock, Stmt *Handler) {\n  // SEH __try is incompatible with C++ try. Borland appears to support this,\n  // however.\n  if (!getLangOpts().Borland) {\n    if (FSI->FirstCXXOrObjCTryLoc.isValid()) {\n      Diag(TryLoc, diag::err_mixing_cxx_try_seh_try) << FSI->FirstTryType;"}}
},
},
["note_protected_by_objc_autoreleasepool"]={
["err_mmap_config_macro_submodule"]={
[c]="jump bypasses auto release push of @autoreleasepool block",
[j]="configuration macros are only allowed in top-level modules",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses auto release push of @autoreleasepool block",
[e]="configuration macros are only allowed in top-level modules",
[b]=q,
[f]=n,
[a]="jump bypasses auto release push of @autoreleasepool block",
[g]="configuration macros are only allowed in top\\-level modules",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"31168b077c36",1308178962,"Automatic Reference Counting."}
[b]={"35b13ece231b",1363738925,"<rdar://problem/10796651> Introduce configuration macros into module maps."},
[k]={{u,2395,"/// Parse a configuration macro declaration.\n///\n///  module-declaration:\n///    \'config_macros\' attributes[opt] config-macro-list?\n///\n///  config-macro-list:\n///    identifier (\',\' identifier)?\nvoid ModuleMapParser::parseConfigMacros() {\n  // Only top-level modules can have configuration macros.\n  if (ActiveModule->Parent) {\n    Diags.Report(ConfigMacrosLoc, diag::err_mmap_config_macro_submodule);"}}
},
},
["note_protected_by_objc_catch"]={
["err_mmap_conflicting_export_as"]={
[c]="jump bypasses initialization of @catch block",
[j]="conflicting re-export of module \'A\' as \'B\' or \'C\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of @catch block",
[e]="conflicting re-export of module \'%0\' as \'%1\' or \'%2\'",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of @catch block",
[g]="conflicting re\\-export of module \'(.*?)\' as \'(.*?)\' or \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"5c926f366019",1240090132,"reject invalid jumps among pieces of @try blocksThis seems to work"}
[b]={"f0b11de279e7",1505432324,"[Module map] Introduce a private module re-export directive."},
[k]={{u,2328,"/// Parse a module export_as declaration.\n///\n///  export-as-declaration:\n///    \'export_as\' identifier\nvoid ModuleMapParser::parseExportAsDecl() {\n if (!ActiveModule->ExportAsModule.empty()) {\n    if (ActiveModule->ExportAsModule == Tok.getString()) {\n    } else {\n      Diags.Report(Tok.getLocation(), diag::err_mmap_conflicting_export_as) << ActiveModule->Name << ActiveModule->ExportAsModule << Tok.getString();"}}
},
},
["note_protected_by_objc_fast_enumeration"]={
["err_mmap_duplicate_header_attribute"]={
[c]="jump enters Objective-C fast enumeration loop",
[j]="header attribute \'A\' specified multiple times",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump enters Objective-C fast enumeration loop",
[e]="header attribute \'%0\' specified multiple times",
[b]=q,
[f]=n,
[a]="jump enters Objective\\-C fast enumeration loop",
[g]="header attribute \'(.*?)\' specified multiple times",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"3901377c2297",1492624448,"[Sema][ObjC] Disallow jumping into ObjC fast enumeration loops."}
[b]={"040e12662a67",1496368539,"Support lazy stat\'ing of files referenced by module maps."},
[k]={{u,2140,"/// Parse a header declaration.\n///\n///  header-declaration:\n///    \'textual\'[opt] \'header\' string-literal\n///    \'private\' \'textual\'[opt] \'header\' string-literal\n///    \'exclude\' \'header\' string-literal\n///    \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n  // If we were given stat information, parse it so we can skip looking for\n  // the file.\n  if (Tok.is(MMToken::LBrace)) {\n    while (!Tok.is(MMToken::RBrace) && !Tok.is(MMToken::EndOfFile)) {\n      case Size:\n        if (Header.Size)\n          Diags.Report(Loc, diag::err_mmap_duplicate_header_attribute) << Str;"},{u,2152,"/// Parse a header declaration.\n///\n///  header-declaration:\n///    \'textual\'[opt] \'header\' string-literal\n///    \'private\' \'textual\'[opt] \'header\' string-literal\n///    \'exclude\' \'header\' string-literal\n///    \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n  // If we were given stat information, parse it so we can skip looking for\n  // the file.\n  if (Tok.is(MMToken::LBrace)) {\n    while (!Tok.is(MMToken::RBrace) && !Tok.is(MMToken::EndOfFile)) {\n      case ModTime:\n        if (Header.ModTime)\n          Diags.Report(Loc, diag::err_mmap_duplicate_header_attribute) << Str;"}}
},
},
["note_protected_by_objc_finally"]={
["err_mmap_expected_attribute"]={
[c]="jump bypasses initialization of @finally block",
[j]="expected an attribute name",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of @finally block",
[e]="expected an attribute name",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of @finally block",
[g]="expected an attribute name",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"5c926f366019",1240090132,"reject invalid jumps among pieces of @try blocksThis seems to work"}
[b]={"a686e1b05df9",1327693953,"Introduce module attributes into the module map grammar, along with a"},
[k]={{u,2654,"/// Parse optional attributes.\n///\n///  attributes:\n///    attribute attributes\n///    attribute\n///\n///  attribute:\n///    [ identifier ]\n///\n/// \\param Attrs Will be filled in with the parsed attributes.\n///\n/// \\returns true if an error occurred, false otherwise.\nbool ModuleMapParser::parseOptionalAttributes(Attributes &Attrs) {\n while (Tok.is(MMToken::LSquare)) {\n    // Check whether we have an attribute name here.\n    if (!Tok.is(MMToken::Identifier)) {\n      Diags.Report(Tok.getLocation(), diag::err_mmap_expected_attribute);"}}
},
},
["note_protected_by_objc_strong_init"]={
["err_mmap_expected_config_macro"]={
[c]="jump bypasses initialization of __strong variable",
[j]="expected configuration macro name after \',\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of __strong variable",
[e]="expected configuration macro name after \',\'",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of __strong variable",
[g]="expected configuration macro name after \',\'",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"039f2bbd02ce",1445450798,"Some minor ARC diagnostic improvements."}
[b]={"35b13ece231b",1363738925,"<rdar://problem/10796651> Introduce configuration macros into module maps."},
[k]={{u,2427,"/// Parse a configuration macro declaration.\n///\n///  module-declaration:\n///    \'config_macros\' attributes[opt] config-macro-list?\n///\n///  config-macro-list:\n///    identifier (\',\' identifier)?\nvoid ModuleMapParser::parseConfigMacros() {\n  do {\n    // We expect to see a macro name here.\n    // FIXME: Support macros with the same name as a keyword here.\n    if (!Tok.is(MMToken::Identifier)) {\n      Diags.Report(Tok.getLocation(), diag::err_mmap_expected_config_macro);"}}
},
},
["note_protected_by_objc_synchronized"]={
["err_mmap_expected_conflicts_comma"]={
[c]="jump bypasses initialization of @synchronized block",
[j]="expected \',\' after conflicting module name",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of @synchronized block",
[e]="expected \',\' after conflicting module name",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of @synchronized block",
[g]="expected \',\' after conflicting module name",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"c70dd5647701",1240293660,"add support for goto checking and @synchronized blocks,"}
[b]={"fb9126578ec3",1363813835,"<rdar://problem/12368093> Extend module maps with a \'conflict\' declaration, and warn when a newly-im..."},
[k]={{u,2470,"/// Parse a conflict declaration.\n///\n///  module-declaration:\n///    \'conflict\' module-id \',\' string-literal\nvoid ModuleMapParser::parseConflict() {\n  // Parse the \',\'.\n  if (!Tok.is(MMToken::Comma)) {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_expected_conflicts_comma) << SourceRange(ConflictLoc);"}}
},
},
["note_protected_by_objc_try"]={
["err_mmap_expected_conflicts_message"]={
[c]="jump bypasses initialization of @try block",
[j]="expected a message describing the conflict with \'A\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of @try block",
[e]="expected a message describing the conflict with \'%0\'",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of @try block",
[g]="expected a message describing the conflict with \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"960cc525ec72",1240047387,"rewrite the goto scope checking code to be more efficient, simpler,"}
[b]={"fb9126578ec3",1363813835,"<rdar://problem/12368093> Extend module maps with a \'conflict\' declaration, and warn when a newly-im..."},
[k]={{u,2477,"/// Parse a conflict declaration.\n///\n///  module-declaration:\n///    \'conflict\' module-id \',\' string-literal\nvoid ModuleMapParser::parseConflict() {\n  // Parse the message.\n  if (!Tok.is(MMToken::StringLiteral)) {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_expected_conflicts_message) << formatModuleId(Conflict.Id);"}}
},
},
["note_protected_by_objc_weak_init"]={
["err_mmap_expected_export_wildcard"]={
[c]="jump bypasses initialization of __weak variable",
[j]="only \'*\' can be exported from an inferred submodule",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of __weak variable",
[e]="only \'*\' can be exported from an inferred submodule",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of __weak variable",
[g]="only \'\\*\' can be exported from an inferred submodule",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"039f2bbd02ce",1445450798,"Some minor ARC diagnostic improvements."}
[b]={Ib,1323124064,Lb},
[k]={{u,2608,"/// Parse an inferred module declaration (wildcard modules).\n///\n///  module-declaration:\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n///      { inferred-module-member* }\n///\n///  inferred-module-member:\n///    \'export\' \'*\'\n///    \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n  do {\n    case MMToken::ExportKeyword:\n      if (Tok.is(MMToken::Star))\n      else\n        Diags.Report(Tok.getLocation(), diag::err_mmap_expected_export_wildcard);"}}
},
},
["note_protected_by_seh_except"]={
["err_mmap_expected_feature"]={
[c]="jump bypasses initialization of __except block",
[j]="expected a feature name",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of __except block",
[e]="expected a feature name",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of __except block",
[g]="expected a feature name",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"b14f87226902",1422983168,"Implement jump scope SEHmantic analysis."}
[b]={"1fb5c3a63a88",1325304344,"Implement support for module requirements, which indicate the language"},
[k]={{u,2040,"/// Parse a requires declaration.\n///\n///  requires-declaration:\n///    \'requires\' feature-list\n///\n///  feature-list:\n///    feature \',\' feature-list\n///    feature\n///\n///  feature:\n///    \'!\'[opt] identifier\nvoid ModuleMapParser::parseRequiresDecl() {\n  // Parse the feature-list.\n  do {\n    if (!Tok.is(MMToken::Identifier)) {\n      Diags.Report(Tok.getLocation(), diag::err_mmap_expected_feature);"}}
},
},
["note_protected_by_seh_finally"]={
["err_mmap_expected_header"]={
[c]="jump bypasses initialization of __finally block",
[j]="expected a header name after \'A\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of __finally block",
[e]="expected a header name after \'%0\'",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of __finally block",
[g]="expected a header name after \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"b14f87226902",1422983168,"Implement jump scope SEHmantic analysis."}
[b]={kb,1321038628,mb},
[k]={{u,2103,"/// Parse a header declaration.\n///\n///  header-declaration:\n///    \'textual\'[opt] \'header\' string-literal\n///    \'private\' \'textual\'[opt] \'header\' string-literal\n///    \'exclude\' \'header\' string-literal\n///    \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n  if (LeadingToken != MMToken::HeaderKeyword) {\n    if (!Tok.is(MMToken::HeaderKeyword)) {\n      Diags.Report(Tok.getLocation(), diag::err_mmap_expected_header) << (LeadingToken == MMToken::PrivateKeyword ? \"private\" : LeadingToken == MMToken::ExcludeKeyword ? \"exclude\" : LeadingToken == MMToken::TextualKeyword ? \"textual\" : \"umbrella\");"},{u,2111,"/// Parse a header declaration.\n///\n///  header-declaration:\n///    \'textual\'[opt] \'header\' string-literal\n///    \'private\' \'textual\'[opt] \'header\' string-literal\n///    \'exclude\' \'header\' string-literal\n///    \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n  // Parse the header name.\n  if (!Tok.is(MMToken::StringLiteral)) {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_expected_header) << \"header\";"},{u,2194,"/// Parse an umbrella directory declaration.\n///\n///  umbrella-dir-declaration:\n///    umbrella string-literal\nvoid ModuleMapParser::parseUmbrellaDirDecl(SourceLocation UmbrellaLoc) {\n  // Parse the directory name.\n  if (!Tok.is(MMToken::StringLiteral)) {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_expected_header) << \"umbrella\";"}}
},
},
["note_protected_by_seh_try"]={
["err_mmap_expected_header_attribute"]={
[c]="jump bypasses initialization of __try block",
[j]="expected a header attribute name (\'size\' or \'mtime\')",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of __try block",
[e]="expected a header attribute name (\'size\' or \'mtime\')",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of __try block",
[g]="expected a header attribute name \\(\'size\' or \'mtime\'\\)",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"b14f87226902",1422983168,"Implement jump scope SEHmantic analysis."}
[b]={"040e12662a67",1496368539,"Support lazy stat\'ing of files referenced by module maps."},
[k]={{u,2163,"/// Parse a header declaration.\n///\n///  header-declaration:\n///    \'textual\'[opt] \'header\' string-literal\n///    \'private\' \'textual\'[opt] \'header\' string-literal\n///    \'exclude\' \'header\' string-literal\n///    \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n  // If we were given stat information, parse it so we can skip looking for\n  // the file.\n  if (Tok.is(MMToken::LBrace)) {\n    while (!Tok.is(MMToken::RBrace) && !Tok.is(MMToken::EndOfFile)) {\n      case Unknown:\n        Diags.Report(Loc, diag::err_mmap_expected_header_attribute);"}}
},
},
["note_protected_by_variable_init"]={
["err_mmap_expected_inferred_member"]={
[c]="jump bypasses variable initialization",
[j]="expected ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses variable initialization",
[e]="expected %select{module exclusion with \'exclude\'|\'export *\'}0",
[b]=q,
[f]=n,
[a]="jump bypasses variable initialization",
[g]="expected (?:module exclusion with \'exclude\'|\'export \\*\')",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"30d0cfda354e",1267477193,"Implement jump checking for initialized c++ variables, implementing"}
[b]={"9194a91dc928",1352230780,"Introduce inferred framework modules into the module map file,"},
[k]={{u,2581,"/// Parse an inferred module declaration (wildcard modules).\n///\n///  module-declaration:\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n///      { inferred-module-member* }\n///\n///  inferred-module-member:\n///    \'export\' \'*\'\n///    \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n  do {\n    case MMToken::ExcludeKeyword:\n      if (ActiveModule) {\n        Diags.Report(Tok.getLocation(), diag::err_mmap_expected_inferred_member) << (ActiveModule != nullptr);"},{u,2599,"/// Parse an inferred module declaration (wildcard modules).\n///\n///  module-declaration:\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n///      { inferred-module-member* }\n///\n///  inferred-module-member:\n///    \'export\' \'*\'\n///    \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n  do {\n    case MMToken::ExportKeyword:\n      if (!ActiveModule) {\n        Diags.Report(Tok.getLocation(), diag::err_mmap_expected_inferred_member) << (ActiveModule != nullptr);"},{u,2618,"/// Parse an inferred module declaration (wildcard modules).\n///\n///  module-declaration:\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n///      { inferred-module-member* }\n///\n///  inferred-module-member:\n///    \'export\' \'*\'\n///    \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n  do {\n    default:\n      Diags.Report(Tok.getLocation(), diag::err_mmap_expected_inferred_member) << (ActiveModule != nullptr);"}}
},
},
["note_protected_by_variable_non_pod"]={
["err_mmap_expected_lbrace"]={
[c]="jump bypasses initialization of non-POD variable",
[j]="expected \'{\' to start module \'A\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of non-POD variable",
[e]="expected \'{\' to start module \'%0\'",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of non\\-POD variable",
[g]="expected \'\\{\' to start module \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"fe2750db42c0",1319146932,"Add -Wc++98-compat diagnostics for jumps which bypass initialization of non-POD"}
[b]={kb,1321038628,mb},
[k]={{u,1751,"/// Parse a module declaration.\n///\n///  module-declaration:\n///    \'extern\' \'module\' module-id string-literal\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n///      { module-member* }\n///\n///  module-member:\n///    requires-declaration\n///    header-declaration\n///    submodule-declaration\n///    export-declaration\n///    export-as-declaration\n///    link-declaration\n///\n///  submodule-declaration:\n///    module-declaration\n///    inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n  // Parse the opening brace.\n  if (!Tok.is(MMToken::LBrace)) {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_expected_lbrace) << ModuleName;"}}
},
},
["note_protected_by_variable_nontriv_destructor"]={
["err_mmap_expected_lbrace_wildcard"]={
[c]="jump bypasses variable with a non-trivial destructor",
[j]="expected \'{\' to start inferred submodule",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses variable with a non-trivial destructor",
[e]="expected \'{\' to start inferred submodule",
[b]=q,
[f]=n,
[a]="jump bypasses variable with a non\\-trivial destructor",
[g]="expected \'\\{\' to start inferred submodule",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"1778b030c0dc",1308108214,"Properly implement C++0x [stmt.dcl]p3, which requires a scope to be"}
[b]={Ib,1323124064,Lb},
[k]={{u,2564,"/// Parse an inferred module declaration (wildcard modules).\n///\n///  module-declaration:\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n///      { inferred-module-member* }\n///\n///  inferred-module-member:\n///    \'export\' \'*\'\n///    \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n  // Parse the opening brace.\n  if (!Tok.is(MMToken::LBrace)) {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_expected_lbrace_wildcard);"}}
},
},
["note_protected_by_vla"]={
["err_mmap_expected_library_name"]={
[c]="jump bypasses initialization of variable length array",
[j]="expected ... name as a string",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of variable length array",
[e]="expected %select{library|framework}0 name as a string",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of variable length array",
[g]="expected (?:library|framework) name as a string",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"960cc525ec72",1240047387,"rewrite the goto scope checking code to be more efficient, simpler,"}
[b]={"6ddfca91e04e",1358184060,"Implement parsing, AST, (de-)serialization, and placeholder global"},
[k]={{u,2372,"/// Parse a link declaration.\n///\n///  module-declaration:\n///    \'link\' \'framework\'[opt] string-literal\nvoid ModuleMapParser::parseLinkDecl() {\n  // Parse the library name\n  if (!Tok.is(MMToken::StringLiteral)) {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_expected_library_name) << IsFramework << SourceRange(LinkLoc);"}}
},
},
["note_protected_by_vla_type_alias"]={
["err_mmap_expected_member"]={
[c]="jump bypasses initialization of VLA type alias",
[j]="expected umbrella, header, submodule, or module export",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of VLA type alias",
[e]="expected umbrella, header, submodule, or module export",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of VLA type alias",
[g]="expected umbrella, header, submodule, or module export",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"dda56e4b4a9c",1302877477,"Support for C++11 (non-template) alias declarations."}
[b]={kb,1321038628,mb},
[k]={{u,1914,"/// Parse a module declaration.\n///\n///  module-declaration:\n///    \'extern\' \'module\' module-id string-literal\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n///      { module-member* }\n///\n///  module-member:\n///    requires-declaration\n///    header-declaration\n///    submodule-declaration\n///    export-declaration\n///    export-as-declaration\n///    link-declaration\n///\n///  submodule-declaration:\n///    module-declaration\n///    inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n  do {\n    default:\n      Diags.Report(Tok.getLocation(), diag::err_mmap_expected_member);"}}
},
},
["note_protected_by_vla_typedef"]={
["err_mmap_expected_mmap_file"]={
[c]="jump bypasses initialization of VLA typedef",
[j]="expected a module map file name",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="jump bypasses initialization of VLA typedef",
[e]="expected a module map file name",
[b]=q,
[f]=n,
[a]="jump bypasses initialization of VLA typedef",
[g]="expected a module map file name",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"960cc525ec72",1240047387,"rewrite the goto scope checking code to be more efficient, simpler,"}
[b]={"97292843d0aa",1378884044,"Support for modular module-map-files"},
[k]={{u,1970,"/// Parse an extern module declaration.\n///\n///  extern module-declaration:\n///    \'extern\' \'module\' module-id string-literal\nvoid ModuleMapParser::parseExternModuleDecl() {\n  // Parse the referenced module map file name.\n  if (!Tok.is(MMToken::StringLiteral)) {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_expected_mmap_file);"}}
},
},
["note_protocol_decl"]={
["err_mmap_expected_module"]={
[c]="protocol is declared here",
[j]="expected module declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="protocol is declared here",
[e]="expected module declaration",
[b]=q,
[f]=n,
[a]="protocol is declared here",
[g]="expected module declaration",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"566fff0dac54",1347061583,"objective-C: introduce __attribute((objc_requires_super)) on method"}
[b]={kb,1321038628,mb},
[k]={{u,1682,"/// Parse a module declaration.\n///\n///  module-declaration:\n///    \'extern\' \'module\' module-id string-literal\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n///      { module-member* }\n///\n///  module-member:\n///    requires-declaration\n///    header-declaration\n///    submodule-declaration\n///    export-declaration\n///    export-as-declaration\n///    link-declaration\n///\n///  submodule-declaration:\n///    module-declaration\n///    inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n  // Parse \'module\' keyword.\n  if (!Tok.is(MMToken::ModuleKeyword)) {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_expected_module);"},{u,1954,"/// Parse an extern module declaration.\n///\n///  extern module-declaration:\n///    \'extern\' \'module\' module-id string-literal\nvoid ModuleMapParser::parseExternModuleDecl() {\n  // Parse \'module\' keyword.\n  if (!Tok.is(MMToken::ModuleKeyword)) {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_expected_module);"},{u,2741,"/// Parse a module map file.\n///\n///  module-map-file:\n///    module-declaration*\nbool ModuleMapParser::parseModuleMapFile() {\n  do {\n    case MMToken::UseKeyword:\n      Diags.Report(Tok.getLocation(), diag::err_mmap_expected_module);"}}
},
},
["note_protocol_decl_undefined"]={
["err_mmap_expected_module_name"]={
[c]="protocol A has no definition",
[j]="expected module name",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="protocol %0 has no definition",
[e]="expected module name",
[b]=q,
[f]=n,
[a]="protocol (.*?) has no definition",
[g]="expected module name",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"bf678e82e12d",1394557851,"Objective-C. Diagose use of undefined protocols"}
[b]={kb,1321038628,mb},
[k]={{u,1552,"/// Parse a module-id.\n///\n///  module-id:\n///    identifier\n///    identifier \'.\' module-id\n///\n/// \\returns true if an error occurred, false otherwise.\nbool ModuleMapParser::parseModuleId(ModuleId &Id) {\n  do {\n    if (Tok.is(MMToken::Identifier) || Tok.is(MMToken::StringLiteral)) {\n    } else {\n      Diags.Report(Tok.getLocation(), diag::err_mmap_expected_module_name);"}}
},
},
["note_protocol_method"]={
["err_mmap_expected_rbrace"]={
[c]="protocol method is here",
[j]="expected \'}\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="protocol method is here",
[e]="expected \'}\'",
[b]=q,
[f]=n,
[a]="protocol method is here",
[g]="expected \'\\}\'",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"d2a713e41bd3",1443648462,"Don\'t inherit availability information when implementing a protocol requirement."}
[b]={kb,1321038628,mb},
[k]={{u,1793,"/// Parse a module declaration.\n///\n///  module-declaration:\n///    \'extern\' \'module\' module-id string-literal\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n///      { module-member* }\n///\n///  module-member:\n///    requires-declaration\n///    header-declaration\n///    submodule-declaration\n///    export-declaration\n///    export-as-declaration\n///    link-declaration\n///\n///  submodule-declaration:\n///    module-declaration\n///    inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n  if (Module *Existing = Map.lookupModuleQualified(ModuleName, ActiveModule)) {\n    if (LoadedFromASTFile || Inferred || PartOfFramework || ParsedAsMainInput) {\n      if (Tok.is(MMToken::RBrace))\n      else {\n        Diags.Report(Tok.getLocation(), diag::err_mmap_expected_rbrace);"},{u,1923,"/// Parse a module declaration.\n///\n///  module-declaration:\n///    \'extern\' \'module\' module-id string-literal\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n///      { module-member* }\n///\n///  module-member:\n///    requires-declaration\n///    header-declaration\n///    submodule-declaration\n///    export-declaration\n///    export-as-declaration\n///    link-declaration\n///\n///  submodule-declaration:\n///    module-declaration\n///    inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n  if (Tok.is(MMToken::RBrace))\n  else {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_expected_rbrace);"},{u,2172,"/// Parse a header declaration.\n///\n///  header-declaration:\n///    \'textual\'[opt] \'header\' string-literal\n///    \'private\' \'textual\'[opt] \'header\' string-literal\n///    \'exclude\' \'header\' string-literal\n///    \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n  // If we were given stat information, parse it so we can skip looking for\n  // the file.\n  if (Tok.is(MMToken::LBrace)) {\n    if (Tok.is(MMToken::RBrace))\n    else {\n      Diags.Report(Tok.getLocation(), diag::err_mmap_expected_rbrace);"},{u,2627,"/// Parse an inferred module declaration (wildcard modules).\n///\n///  module-declaration:\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n///      { inferred-module-member* }\n///\n///  inferred-module-member:\n///    \'export\' \'*\'\n///    \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n  if (Tok.is(MMToken::RBrace))\n  else {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_expected_rbrace);"}}
},
},
["note_protocol_property_declare"]={
["err_mmap_expected_rsquare"]={
[c]="it could also be property ... declared here",
[j]="expected \']\' to close attribute",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="it could also be property %select{of type %1|without attribute \'%1\'|with attribute \'%1\'|with getter %1|with setter %1}0 declared here",
[e]="expected \']\' to close attribute",
[b]=q,
[f]=n,
[a]="it could also be property (?:of type (.*?)|without attribute \'(.*?)\'|with attribute \'(.*?)\'|with getter (.*?)|with setter (.*?)) declared here",
[g]="expected \'\\]\' to close attribute",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"0ebf87959fff",1369084824,"Objective-C [qoi]: When an class conforms to multiple"}
[b]={"a686e1b05df9",1327693953,"Introduce module attributes into the module map grammar, along with a"},
[k]={{u,2688,"/// Parse optional attributes.\n///\n///  attributes:\n///    attribute attributes\n///    attribute\n///\n///  attribute:\n///    [ identifier ]\n///\n/// \\param Attrs Will be filled in with the parsed attributes.\n///\n/// \\returns true if an error occurred, false otherwise.\nbool ModuleMapParser::parseOptionalAttributes(Attributes &Attrs) {\n  while (Tok.is(MMToken::LSquare)) {\n    // Consume the \']\'.\n    if (!Tok.is(MMToken::RSquare)) {\n      Diags.Report(Tok.getLocation(), diag::err_mmap_expected_rsquare);"}}
},
},
["note_pure_qualified_call_kext"]={
["err_mmap_explicit_inferred_framework"]={
[c]="qualified call to A::B is treated as a virtual call to C due to -fapple-kext",
[j]="inferred framework modules cannot be \'explicit\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="qualified call to %0::%1 is treated as a virtual call to %1 due to -fapple-kext",
[e]="inferred framework modules cannot be \'explicit\'",
[b]=q,
[f]=n,
[a]="qualified call to (.*?)\\:\\:(.*?) is treated as a virtual call to (.*?) due to \\-fapple\\-kext",
[g]="inferred framework modules cannot be \'explicit\'",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"ccb373852758",1436916970,"[Sema] Don\'t emit \"pure virtual\" warning for fully qualified calls."}
[b]={"9194a91dc928",1352230780,"Introduce inferred framework modules into the module map file,"},
[k]={{u,2528,"/// Parse an inferred module declaration (wildcard modules).\n///\n///  module-declaration:\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n///      { inferred-module-member* }\n///\n///  inferred-module-member:\n///    \'export\' \'*\'\n///    \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n  if (ActiveModule) {\n  } else if (Explicit) {\n    Diags.Report(StarLoc, diag::err_mmap_explicit_inferred_framework);"}}
},
},
["note_pure_virtual_function"]={
["err_mmap_explicit_top_level"]={
[c]="unimplemented pure virtual method A in B",
[j]="\'explicit\' is not permitted on top-level modules",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="unimplemented pure virtual method %0 in %1",
[e]="\'explicit\' is not permitted on top-level modules",
[b]=q,
[f]=n,
[a]="unimplemented pure virtual method (.*?) in (.*?)",
[g]="\'explicit\' is not permitted on top\\-level modules",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"576cc6f725a8",1237753097,"Disallow abstract types where appropriate."}
[b]={"e7ab36693b68",1323224625,"Implement basic support for private headers in frameworks. In essence,"},
[k]={{u,1710,"/// Parse a module declaration.\n///\n///  module-declaration:\n///    \'extern\' \'module\' module-id string-literal\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n///      { module-member* }\n///\n///  module-member:\n///    requires-declaration\n///    header-declaration\n///    submodule-declaration\n///    export-declaration\n///    export-as-declaration\n///    link-declaration\n///\n///  submodule-declaration:\n///    module-declaration\n///    inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n  if (ActiveModule) {\n  } else if (Id.size() == 1 && Explicit) {\n    Diags.Report(ExplicitLoc, diag::err_mmap_explicit_top_level);"}}
},
},
["note_raii_guard_add_name"]={
["err_mmap_inferred_framework_submodule"]={
[c]="add a variable name to declare a A initialized with B",
[j]="inferred submodule cannot be a framework submodule",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="add a variable name to declare a %0 initialized with %1",
[e]="inferred submodule cannot be a framework submodule",
[b]=q,
[f]=n,
[a]="add a variable name to declare a (.*?) initialized with (.*?)",
[g]="inferred submodule cannot be a framework submodule",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"ac63d63543ca",1506729445,"Add a \"vexing parse\" warning for ambiguity between a variable declaration and a"}
[b]={"9194a91dc928",1352230780,"Introduce inferred framework modules into the module map file,"},
[k]={{u,2524,"/// Parse an inferred module declaration (wildcard modules).\n///\n///  module-declaration:\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n///      { inferred-module-member* }\n///\n///  inferred-module-member:\n///    \'export\' \'*\'\n///    \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n  if (ActiveModule) {\n    // Check for the \'framework\' keyword, which is not permitted here.\n    if (Framework) {\n      Diags.Report(StarLoc, diag::err_mmap_inferred_framework_submodule);"}}
},
},
["note_receiver_class_declared"]={
["err_mmap_inferred_no_umbrella"]={
[c]="receiver is instance of class declared here",
[j]="inferred submodules require a module with an umbrella",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="receiver is instance of class declared here",
[e]="inferred submodules require a module with an umbrella",
[b]=q,
[f]=n,
[a]="receiver is instance of class declared here",
[g]="inferred submodules require a module with an umbrella",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"773df4a11fab",1368573857,"Objective-C [diagnostics] [QOI], when method is not"}
[b]={Ib,1323124064,Lb},
[k]={{u,2510,"/// Parse an inferred module declaration (wildcard modules).\n///\n///  module-declaration:\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n///      { inferred-module-member* }\n///\n///  inferred-module-member:\n///    \'export\' \'*\'\n///    \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n  if (ActiveModule) {\n    // Inferred modules must have umbrella directories.\n    if (!Failed && ActiveModule->IsAvailable && !ActiveModule->getEffectiveUmbrellaDir()) {\n      Diags.Report(StarLoc, diag::err_mmap_inferred_no_umbrella);"}}
},
},
["note_receiver_expr_here"]={
["err_mmap_inferred_redef"]={
[c]="receiver expression is here",
[j]="redefinition of inferred submodule",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="receiver expression is here",
[e]="redefinition of inferred submodule",
[b]=q,
[f]=n,
[a]="receiver expression is here",
[g]="redefinition of inferred submodule",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"19c2e2fab2e9",1408491557,"Objective-C [qoi]. Provide fix-it hint when sending"}
[b]={Ib,1323124064,Lb},
[k]={{u,2516,"/// Parse an inferred module declaration (wildcard modules).\n///\n///  module-declaration:\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n///      { inferred-module-member* }\n///\n///  inferred-module-member:\n///    \'export\' \'*\'\n///    \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n  if (ActiveModule) {\n    // Check for redefinition of an inferred module.\n    if (!Failed && ActiveModule->InferSubmodules) {\n      Diags.Report(StarLoc, diag::err_mmap_inferred_redef);"}}
},
},
["note_receiver_is_id"]={
["err_mmap_invalid_header_attribute_value"]={
[c]="receiver is treated with \'id\' type for purpose of method lookup",
[j]="expected integer literal as value for header attribute \'A\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="receiver is treated with \'id\' type for purpose of method lookup",
[e]="expected integer literal as value for header attribute \'%0\'",
[b]=q,
[f]=n,
[a]="receiver is treated with \'id\' type for purpose of method lookup",
[g]="expected integer literal as value for header attribute \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"c934de67e0c6",1328230964,"objc: Issue diagnostic when receiver type is a forward class declaration and"}
[b]={"040e12662a67",1496368539,"Support lazy stat\'ing of files referenced by module maps."},
[k]={{u,2142,"/// Parse a header declaration.\n///\n///  header-declaration:\n///    \'textual\'[opt] \'header\' string-literal\n///    \'private\' \'textual\'[opt] \'header\' string-literal\n///    \'exclude\' \'header\' string-literal\n///    \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n  // If we were given stat information, parse it so we can skip looking for\n  // the file.\n  if (Tok.is(MMToken::LBrace)) {\n    while (!Tok.is(MMToken::RBrace) && !Tok.is(MMToken::EndOfFile)) {\n      case Size:\n        if (!Tok.is(MMToken::IntegerLiteral)) {\n          Diags.Report(Tok.getLocation(), diag::err_mmap_invalid_header_attribute_value) << Str;"},{u,2154,"/// Parse a header declaration.\n///\n///  header-declaration:\n///    \'textual\'[opt] \'header\' string-literal\n///    \'private\' \'textual\'[opt] \'header\' string-literal\n///    \'exclude\' \'header\' string-literal\n///    \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n  // If we were given stat information, parse it so we can skip looking for\n  // the file.\n  if (Tok.is(MMToken::LBrace)) {\n    while (!Tok.is(MMToken::RBrace) && !Tok.is(MMToken::EndOfFile)) {\n      case ModTime:\n        if (!Tok.is(MMToken::IntegerLiteral)) {\n          Diags.Report(Tok.getLocation(), diag::err_mmap_invalid_header_attribute_value) << Str;"}}
},
},
["note_recursive_default_argument_used_here"]={
["err_mmap_missing_exclude_name"]={
[c]="default argument used here",
[j]="expected excluded module name",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="default argument used here",
[e]="expected excluded module name",
[b]=q,
[f]=n,
[a]="default argument used here",
[g]="expected excluded module name",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={wb,1576908663,vb}
[b]={"9194a91dc928",1352230780,"Introduce inferred framework modules into the module map file,"},
[k]={{u,2589,"/// Parse an inferred module declaration (wildcard modules).\n///\n///  module-declaration:\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n///      { inferred-module-member* }\n///\n///  inferred-module-member:\n///    \'export\' \'*\'\n///    \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n  do {\n    case MMToken::ExcludeKeyword:\n      // FIXME: Support string-literal module names here.\n      if (!Tok.is(MMToken::Identifier)) {\n        Diags.Report(Tok.getLocation(), diag::err_mmap_missing_exclude_name);"}}
},
},
["note_redefinition_include_same_file"]={
["err_mmap_missing_module_qualified"]={
[c]="\'A\' included multiple times, additional include site here",
[j]="no module named \'A\' in \'B\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'%0\' included multiple times, additional include site here",
[e]="no module named \'%0\' in \'%1\'",
[b]=q,
[f]=n,
[a]="\'(.*?)\' included multiple times, additional include site here",
[g]="no module named \'(.*?)\' in \'(.*?)\'",
[g]=p,
[h]=a,
[e]=cd,
[i]=t,
[i]={"0ad318217917",1494483607,"[Sema] Improve redefinition errors pointing to the same header"}
[b]={"2b82c2a59eca",1322790427,"Implementing parsing and resolution of module export declarations"},
[k]={{u,140,"Module *ModuleMap::resolveModuleId(const ModuleId &Id, Module *Mod, bool Complain) const {\n  // Dig into the module path.\n  for (unsigned I = 1, N = Id.size(); I != N; ++I) {\n    if (!Sub) {\n      if (Complain)\n        Diags.Report(Id[I].second, diag::err_mmap_missing_module_qualified) << Id[I].first << Context->getFullModuleName() << SourceRange(Id[0].second, Id[I - 1].second);"}}
},
},
["note_redefinition_modules_same_file"]={
["err_mmap_missing_module_unqualified"]={
[c]="\'A\' included multiple times, additional include site in header from module \'B\'",
[j]="no module named \'A\' visible from \'B\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="\'%0\' included multiple times, additional include site in header from module \'%1\'",
[e]="no module named \'%0\' visible from \'%1\'",
[b]=q,
[f]=n,
[a]="\'(.*?)\' included multiple times, additional include site in header from module \'(.*?)\'",
[g]="no module named \'(.*?)\' visible from \'(.*?)\'",
[g]=p,
[h]=a,
[e]=cd,
[i]=t,
[i]={"0ad318217917",1494483607,"[Sema] Improve redefinition errors pointing to the same header"}
[b]={"2b82c2a59eca",1322790427,"Implementing parsing and resolution of module export declarations"},
[k]={{u,130,"Module *ModuleMap::resolveModuleId(const ModuleId &Id, Module *Mod, bool Complain) const {\n  if (!Context) {\n    if (Complain)\n      Diags.Report(Id[0].second, diag::err_mmap_missing_module_unqualified) << Id[0].first << Mod->getFullModuleName();"}}
},
},
["note_ref_or_ptr_member_declared_here"]={
["err_mmap_missing_parent_module"]={
[c]="... member declared here",
[j]="no module named \'A\' ..., parent module must be defined before the submodule",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{reference|pointer}0 member declared here",
[e]="no module named \'%0\' %select{found|in \'%2\'}1, parent module must be defined before the submodule",
[b]=q,
[f]=n,
[a]="(?:reference|pointer) member declared here",
[g]="no module named \'(.*?)\' (?:found|in \'(.*?)\'), parent module must be defined before the submodule",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"599deef37946",1315012455,"Add a simple new warning to catch blatantly dangling pointer and"}
[b]={"8839e278ffca",1595533636,"[Modules] Improve error message when cannot find parent module for submodule definition."},
[k]={{u,1730,"/// Parse a module declaration.\n///\n///  module-declaration:\n///    \'extern\' \'module\' module-id string-literal\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n///      { module-member* }\n///\n///  module-member:\n///    requires-declaration\n///    header-declaration\n///    submodule-declaration\n///    export-declaration\n///    export-as-declaration\n///    link-declaration\n///\n///  submodule-declaration:\n///    module-declaration\n///    inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n  if (Id.size() > 1) {\n    for (unsigned I = 0, N = Id.size() - 1; I != N; ++I) {\n      Diags.Report(Id[I].second, diag::err_mmap_missing_parent_module) << Id[I].first << (ActiveModule != nullptr) << (ActiveModule ? ActiveModule->getTopLevelModule()->getFullModuleName() : \"\");"}}
},
},
["note_refconst_member_not_initialized"]={
["err_mmap_module_id"]={
[c]="... member A will never be initialized",
[j]="expected a module name or \'*\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{const|reference}0 member %1 will never be initialized",
[e]="expected a module name or \'*\'",
[b]=q,
[f]=n,
[a]="(?:const|reference) member (.*?) will never be initialized",
[g]="expected a module name or \'\\*\'",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"454a5b65d402",1271289653,"Warn about non-aggregate classes with no user-declared constructors"}
[b]={"ba7f2f7110c2",1380014054,"Module use declarations (II)"},
[k]={{u,2295,"/// Parse a module export declaration.\n///\n///  export-declaration:\n///    \'export\' wildcard-module-id\n///\n///  wildcard-module-id:\n///    identifier\n///    \'*\'\n///    identifier \'.\' wildcard-module-id\nvoid ModuleMapParser::parseExportDecl() {\n  do {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_module_id);"},{u,2313,"/// Parse a module export_as declaration.\n///\n///  export-as-declaration:\n///    \'export_as\' identifier\nvoid ModuleMapParser::parseExportAsDecl() {\n  if (!Tok.is(MMToken::Identifier)) {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_module_id);"}}
},
},
["note_reference_is_return_value"]={
["err_mmap_module_redefinition"]={
[c]="A returns a reference",
[j]="redefinition of module \'A\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 returns a reference",
[e]="redefinition of module \'%0\'",
[b]=q,
[f]=n,
[a]="(.*?) returns a reference",
[g]="redefinition of module \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"c1888e0c6e62",1403997937,"Extend -Wtautological-undefined-compare and -Wundefined-bool-conversion to"}
[b]={kb,1321038628,mb},
[k]={{u,1804,"/// Parse a module declaration.\n///\n///  module-declaration:\n///    \'extern\' \'module\' module-id string-literal\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n///      { module-member* }\n///\n///  module-member:\n///    requires-declaration\n///    header-declaration\n///    submodule-declaration\n///    export-declaration\n///    export-as-declaration\n///    link-declaration\n///\n///  submodule-declaration:\n///    module-declaration\n///    inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n  if (Module *Existing = Map.lookupModuleQualified(ModuleName, ActiveModule)) {\n    if (!Existing->Parent && Map.mayShadowNewModule(Existing)) {\n    } else {\n      Diags.Report(ModuleNameLoc, diag::err_mmap_module_redefinition) << ModuleName;"}}
},
},
["note_referenced_type_template"]={
["err_mmap_nested_submodule_id"]={
[c]="... template declared here",
[j]="qualified module name can only be used to define modules at the top level",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{class|type alias}0 template declared here",
[e]="qualified module name can only be used to define modules at the top level",
[b]=q,
[f]=n,
[a]="(?:class|type alias) template declared here",
[g]="qualified module name can only be used to define modules at the top level",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={N,1625925174,O}
[b]={"e7ab36693b68",1323224625,"Implement basic support for private headers in frameworks. In essence,"},
[k]={{u,1703,"/// Parse a module declaration.\n///\n///  module-declaration:\n///    \'extern\' \'module\' module-id string-literal\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n///      { module-member* }\n///\n///  module-member:\n///    requires-declaration\n///    header-declaration\n///    submodule-declaration\n///    export-declaration\n///    export-as-declaration\n///    link-declaration\n///\n///  submodule-declaration:\n///    module-declaration\n///    inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n  if (ActiveModule) {\n    if (Id.size() > 1) {\n      Diags.Report(Id.front().second, diag::err_mmap_nested_submodule_id) << SourceRange(Id.front().second, Id.back().second);"}}
},
},
["note_reinterpret_updowncast_use_static"]={
["err_mmap_submodule_export_as"]={
[c]="use \'static_cast\' to adjust the pointer correctly while ...",
[j]="only top-level modules can be re-exported as public",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use \'static_cast\' to adjust the pointer correctly while %select{upcasting|downcasting}0",
[e]="only top-level modules can be re-exported as public",
[b]=q,
[f]=n,
[a]="use \'static_cast\' to adjust the pointer correctly while (?:upcasting|downcasting)",
[g]="only top\\-level modules can be re\\-exported as public",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"cda80833090b",1363921094,"Warn about attempts to reinterpret_cast between two types that are"}
[b]={"f0b11de279e7",1505432324,"[Module map] Introduce a private module re-export directive."},
[k]={{u,2319,"/// Parse a module export_as declaration.\n///\n///  export-as-declaration:\n///    \'export_as\' identifier\nvoid ModuleMapParser::parseExportAsDecl() {\n  if (ActiveModule->Parent) {\n    Diags.Report(Tok.getLocation(), diag::err_mmap_submodule_export_as);"}}
},
},
["note_related_result_type_explicit"]={
["err_mmap_top_level_inferred_submodule"]={
[c]="... method is explicitly declared \'instancetype\'...",
[j]="only submodules and framework modules may be inferred with wildcard syntax",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{overridden|current}0 method is explicitly declared \'instancetype\'%select{| and is expected to return an instance of its class type}0",
[e]="only submodules and framework modules may be inferred with wildcard syntax",
[b]=q,
[f]=n,
[a]="(?:overridden|current) method is explicitly declared \'instancetype\'(?:| and is expected to return an instance of its class type)",
[g]="only submodules and framework modules may be inferred with wildcard syntax",
[g]=p,
[h]=a,
[e]="Related Result Type Issue",
[i]=t,
[i]={"5ec7e7def3a1",1363676665,"Add a clarifying note when a return statement is rejected because"}
[b]={Ib,1323124064,Lb},
[k]={{u,2503,"/// Parse an inferred module declaration (wildcard modules).\n///\n///  module-declaration:\n///    \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n///      { inferred-module-member* }\n///\n///  inferred-module-member:\n///    \'export\' \'*\'\n///    \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n  // Inferred modules must be submodules.\n  if (!ActiveModule && !Framework) {\n    Diags.Report(StarLoc, diag::err_mmap_top_level_inferred_submodule);"}}
},
},
["note_related_result_type_family"]={
["err_mmap_umbrella_clash"]={
[c]="... method is part of the \'...\' method family...",
[j]="umbrella for module \'A\' already covers this directory",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%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",
[e]="umbrella for module \'%0\' already covers this directory",
[b]=q,
[f]=n,
[a]="(?:overridden|current) method is part of the \'(?:|alloc|copy|init|mutableCopy|new|autorelease|dealloc|finalize|release|retain|retainCount|self)\' method family(?:| and is expected to return an instance of its class type)",
[g]="umbrella for module \'(.*?)\' already covers this directory",
[g]=p,
[h]=a,
[e]="Related Result Type Issue",
[i]=t,
[i]={"5ec7e7def3a1",1363676665,"Add a clarifying note when a return statement is rejected because"}
[b]={"b65dbfff5275",1321484545,"A module with an umbrella header assumes that all of the headers in"},
[k]={{u,244,"void ModuleMap::resolveHeader(Module *Mod, const Module::UnresolvedHeaderDirective &Header, bool &NeedsFramework) {\n  if (OptionalFileEntryRef File = findHeader(Mod, Header, RelativePathName, NeedsFramework)) {\n    if (Header.IsUmbrella) {\n      if (Module *UmbrellaMod = UmbrellaDirs[UmbrellaDir])\n        Diags.Report(Header.FileNameLoc, diag::err_mmap_umbrella_clash) << UmbrellaMod->getFullModuleName();"},{u,2123,"/// Parse a header declaration.\n///\n///  header-declaration:\n///    \'textual\'[opt] \'header\' string-literal\n///    \'private\' \'textual\'[opt] \'header\' string-literal\n///    \'exclude\' \'header\' string-literal\n///    \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n  // Check whether we already have an umbrella.\n  if (Header.IsUmbrella && ActiveModule->Umbrella) {\n    Diags.Report(Header.FileNameLoc, diag::err_mmap_umbrella_clash) << ActiveModule->getFullModuleName();"},{u,2205,"/// Parse an umbrella directory declaration.\n///\n///  umbrella-dir-declaration:\n///    umbrella string-literal\nvoid ModuleMapParser::parseUmbrellaDirDecl(SourceLocation UmbrellaLoc) {\n  // Check whether we already have an umbrella.\n  if (ActiveModule->Umbrella) {\n    Diags.Report(DirNameLoc, diag::err_mmap_umbrella_clash) << ActiveModule->getFullModuleName();"},{u,2250,"/// Parse an umbrella directory declaration.\n///\n///  umbrella-dir-declaration:\n///    umbrella string-literal\nvoid ModuleMapParser::parseUmbrellaDirDecl(SourceLocation UmbrellaLoc) {\n  if (Module *OwningModule = Map.UmbrellaDirs[*Dir]) {\n    Diags.Report(UmbrellaLoc, diag::err_mmap_umbrella_clash) << OwningModule->getFullModuleName();"}}
},
},
["note_related_result_type_inferred"]={
["err_mmap_unknown_token"]={
[c]="... method A is assumed to return an instance of its receiver type (B)",
[j]="skipping stray token",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{class|instance}0 method %1 is assumed to return an instance of its receiver type (%2)",
[e]="skipping stray token",
[b]=q,
[f]=n,
[a]="(?:class|instance) method (.*?) is assumed to return an instance of its receiver type \\((.*?)\\)",
[g]="skipping stray token",
[g]=p,
[h]=a,
[e]="Related Result Type Issue",
[i]=t,
[i]={"33823727c80a",1307754570,"Implement Objective-C Related Result Type semantics."}
[b]={kb,1321038628,mb},
[k]={{u,1453,"retry:\n  case tok::numeric_constant: {\n    if (StringRef(Start, Length).getAsInteger(0, Value)) {\n      Diags.Report(Tok.getLocation(), diag::err_mmap_unknown_token);"},{u,1484,"retry:\n  default:\n    Diags.Report(Tok.getLocation(), diag::err_mmap_unknown_token);"}}
},
},
["note_related_result_type_overridden"]={
["err_mmap_use_decl_submodule"]={
[c]="overridden method returns an instance of its class type",
[j]="use declarations are only allowed in top-level modules",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="overridden method returns an instance of its class type",
[e]="use declarations are only allowed in top-level modules",
[b]=q,
[f]=n,
[a]="overridden method returns an instance of its class type",
[g]="use declarations are only allowed in top\\-level modules",
[g]=p,
[h]=a,
[e]="Related Result Type Issue",
[i]=t,
[i]={"33823727c80a",1307754570,"Implement Objective-C Related Result Type semantics."}
[b]={"8f4d3ff1466a",1427407801,"[modules] Restrict the module use-declaration to only appear in top-level"},
[k]={{u,2350,"/// Parse a module use declaration.\n///\n///  use-declaration:\n///    \'use\' wildcard-module-id\nvoid ModuleMapParser::parseUseDecl() {\n  if (ActiveModule->Parent)\n    Diags.Report(KWLoc, diag::err_mmap_use_decl_submodule);"}}
},
},
["note_remove_abs"]={
["err_mode_not_primitive"]={
[c]="remove the call to \'A\' since unsigned values cannot be negative",
[j]="mode attribute only supported for integer and floating-point types",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="remove the call to \'%0\' since unsigned values cannot be negative",
[e]="mode attribute only supported for integer and floating-point types",
[b]=q,
[f]=n,
[a]="remove the call to \'(.*?)\' since unsigned values cannot be negative",
[g]="mode attribute only supported for integer and floating\\-point types",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"7eb0b2c1819c",1393377448,"Add -Wabsolute-value, warnings about absolute value functions."}
[b]={z,1236199783,A},
[k]={{v,4223,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n  if (!OldElemTy->getAs<BuiltinType>() && !OldElemTy->isComplexType() && !IntegralOrAnyEnumType)\n    Diag(AttrLoc, diag::err_mode_not_primitive);"}}
},
},
["note_remove_max_call"]={
["err_mode_wrong_type"]={
[c]="remove call to max function and unsigned zero argument",
[j]="type of machine mode does not match type of base type",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="remove call to max function and unsigned zero argument",
[e]="type of machine mode does not match type of base type",
[b]=q,
[f]=n,
[a]="remove call to max function and unsigned zero argument",
[g]="type of machine mode does not match type of base type",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"67c0071517e5",1480981306,"Warn on unsigned zero in call to std::max"}
[b]={z,1236199783,A},
[k]={{v,4226,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n  if (!OldElemTy->getAs<BuiltinType>() && !OldElemTy->isComplexType() && !IntegralOrAnyEnumType)\n  else if (IntegerMode) {\n    if (!IntegralOrAnyEnumType)\n      Diag(AttrLoc, diag::err_mode_wrong_type);"},{v,4229,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n  if (!OldElemTy->getAs<BuiltinType>() && !OldElemTy->isComplexType() && !IntegralOrAnyEnumType)\n  else if (IntegerMode) {\n  } else if (ComplexMode) {\n    if (!OldElemTy->isComplexType())\n      Diag(AttrLoc, diag::err_mode_wrong_type);"},{v,4232,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n  if (!OldElemTy->getAs<BuiltinType>() && !OldElemTy->isComplexType() && !IntegralOrAnyEnumType)\n  else if (IntegerMode) {\n  } else if (ComplexMode) {\n  } else {\n    if (!OldElemTy->isFloatingType())\n      Diag(AttrLoc, diag::err_mode_wrong_type);"},{v,4265,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n  if (NewTy.isNull()) {\n    Diag(AttrLoc, diag::err_mode_wrong_type);"}}
},
},
["note_remove_move"]={
["err_modifier_expected_colon"]={
[c]="remove std::move call here",
[j]="missing \':\' after A modifier",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="remove std::move call here",
[e]="missing \':\' after %0 modifier",
[b]=q,
[f]=n,
[a]="remove std\\:\\:move call here",
[g]="missing \'\\:\' after (.*?) modifier",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"ac3eca536d3d",1430272337,"Add -Wpessimizing-move and -Wredundant-move warnings."}
[b]={"ab9eac762c35",1668730814,"[OpenMP] Initial parsing/sema for \'strict\' modifier with \'grainsize\' clause"},
[k]={{"clang/lib/Parse/ParseOpenMP.cpp",3350,"/// Parsing of OpenMP clauses with single expressions and some additional\n/// argument like \'schedule\' or \'dist_schedule\'.\n///\n///    schedule-clause:\n///      \'schedule\' \'(\' [ modifier [ \',\' modifier ] \':\' ] kind [\',\' expression ]\n///      \')\'\n///\n///    if-clause:\n///      \'if\' \'(\' [ directive-name-modifier \':\' ] expression \')\'\n///\n///    defaultmap:\n///      \'defaultmap\' \'(\' modifier [ \':\' kind ] \')\'\n///\n///    device-clause:\n///      \'device\' \'(\' [ device-modifier \':\' ] expression \')\'\n///\nOMPClause *Parser::ParseOpenMPSingleExprWithArgClause(OpenMPDirectiveKind DKind, OpenMPClauseKind Kind, bool ParseOnly) {\n  if (Kind == OMPC_schedule) {\n  } else if (Kind == OMPC_dist_schedule) {\n  } else if (Kind == OMPC_defaultmap) {\n  } else if (Kind == OMPC_order) {\n  } else if (Kind == OMPC_device) {\n  } else if (Kind == OMPC_grainsize) {\n    if (getLangOpts().OpenMP >= 51) {\n      if (NextToken().is(tok::colon)) {\n      } else {\n        if (Modifier == OMPC_GRAINSIZE_strict) {\n          Diag(Tok, diag::err_modifier_expected_colon) << \"strict\";"},{"clang/lib/Parse/ParseOpenMP.cpp",3374,"/// Parsing of OpenMP clauses with single expressions and some additional\n/// argument like \'schedule\' or \'dist_schedule\'.\n///\n///    schedule-clause:\n///      \'schedule\' \'(\' [ modifier [ \',\' modifier ] \':\' ] kind [\',\' expression ]\n///      \')\'\n///\n///    if-clause:\n///      \'if\' \'(\' [ directive-name-modifier \':\' ] expression \')\'\n///\n///    defaultmap:\n///      \'defaultmap\' \'(\' modifier [ \':\' kind ] \')\'\n///\n///    device-clause:\n///      \'device\' \'(\' [ device-modifier \':\' ] expression \')\'\n///\nOMPClause *Parser::ParseOpenMPSingleExprWithArgClause(OpenMPDirectiveKind DKind, OpenMPClauseKind Kind, bool ParseOnly) {\n  if (Kind == OMPC_schedule) {\n  } else if (Kind == OMPC_dist_schedule) {\n  } else if (Kind == OMPC_defaultmap) {\n  } else if (Kind == OMPC_order) {\n  } else if (Kind == OMPC_device) {\n  } else if (Kind == OMPC_grainsize) {\n  } else if (Kind == OMPC_num_tasks) {\n    if (getLangOpts().OpenMP >= 51) {\n      if (NextToken().is(tok::colon)) {\n      } else {\n        if (Modifier == OMPC_NUMTASKS_strict) {\n          Diag(Tok, diag::err_modifier_expected_colon) << \"strict\";"}}
},
},
["note_remove_parens_for_variable_declaration"]={
["err_module_build_disabled"]={
[c]="remove parentheses to silence this warning",
[j]="module \'A\' is needed but has not been provided, and implicit use of module files is disabled",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="remove parentheses to silence this warning",
[e]="module \'%0\' is needed but has not been provided, and implicit use of module files is disabled",
[b]=q,
[f]=J,
[a]="remove parentheses to silence this warning",
[g]="module \'(.*?)\' is needed but has not been provided, and implicit use of module files is disabled",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"ac63d63543ca",1506729445,"Add a \"vexing parse\" warning for ambiguity between a variable declaration and a"}
[b]={"d2e8b04d6111",1424432681,"Add -fno-implicit-modules."},
[k]={{db,1496,"ModuleLoadResult CompilerInstance::findOrCompileModuleAndReadAST(StringRef ModuleName, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, bool IsInclusionDirective) {\n  if (ModuleFilename.empty()) {\n    getDiagnostics().Report(ModuleNameLoc, diag::err_module_build_disabled) << ModuleName;"}}
},
},
["note_replace_abs_function"]={
["err_module_build_requires_fmodules"]={
[c]="use function \'A\' instead",
[j]="module compilation requires \'-fmodules\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use function \'%0\' instead",
[e]="module compilation requires \'-fmodules\'",
[b]=q,
[f]=n,
[a]="use function \'(.*?)\' instead",
[g]="module compilation requires \'\\-fmodules\'",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"7eb0b2c1819c",1393377448,"Add -Wabsolute-value, warnings about absolute value functions."}
[b]={"1f2bd35b247b",1499375156,"Reject attempts to build a module without -fmodules, rather than silently doing weird things."},
[k]={{"clang/lib/Frontend/FrontendActions.cpp",177,"bool GenerateModuleFromModuleMapAction::BeginSourceFileAction(CompilerInstance &CI) {\n  if (!CI.getLangOpts().Modules) {\n    CI.getDiagnostics().Report(diag::err_module_build_requires_fmodules);"}}
},
},
["note_replace_equals_default_to_delete"]={
["err_module_build_shadowed_submodule"]={
[c]="replace \'default\' with \'delete\'",
[j]="build a shadowed submodule \'A\'",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="replace \'default\' with \'delete\'",
[e]="build a shadowed submodule \'%0\'",
[b]=q,
[f]=J,
[a]="replace \'default\' with \'delete\'",
[g]="build a shadowed submodule \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={N,1625925174,O}
[b]={"b6ec4a33fb2b",1515032260,"[Modules] Allow modules specified by -fmodule-map-file to shadow implicitly found ones"},
[k]={{rb,2317,"#endif\n  // Determine if we\'re switching to building a new submodule, and which one.\n  // This does not apply for C++20 modules header units.\n  if (SM && !SM->isHeaderUnit()) {\n    if (SM->getTopLevelModule()->ShadowingModule) {\n      Diag(SM->DefinitionLoc, diag::err_module_build_shadowed_submodule) << SM->getFullModuleName();"}}
},
},
["note_rewriting_operator_as_spaceship"]={
["err_module_cannot_create_includes"]={
[c]="while rewriting comparison as call to \'operator<=>\' declared here",
[j]="cannot create includes file for module A: B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="while rewriting comparison as call to \'operator<=>\' declared here",
[e]="cannot create includes file for module %0: %1",
[b]=q,
[f]=n,
[a]="while rewriting comparison as call to \'operator\\<\\=\\>\' declared here",
[g]="cannot create includes file for module (.*?)\\: (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=a,
[i]={kb,1567434909,mb}
[b]={"723928c7dcc7",1394503367,"If a module map is found in a relative -I path, convert the filenames within it"},
[k]={{qb,495,"/// Compute the input buffer that should be used to build the specified module.\nstatic std::unique_ptr<llvm::MemoryBuffer> getInputBufferForModule(CompilerInstance &CI, Module *M) {\n  if (Err) {\n    CI.getDiagnostics().Report(diag::err_module_cannot_create_includes) << M->getFullModuleName() << Err.message();"}}
},
},
["note_riscv_repeated_interrupt_attribute"]={
["err_module_cycle"]={
[c]="repeated RISC-V \'interrupt\' attribute is here",
[j]="cyclic dependency in module \'A\': B",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="repeated RISC-V \'interrupt\' attribute is here",
[e]="cyclic dependency in module \'%0\': %1",
[b]=q,
[f]=J,
[a]="repeated RISC\\-V \'interrupt\' attribute is here",
[g]="cyclic dependency in module \'(.*?)\'\\: (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"1eee1b771f43",1532626665," [RISCV] Add support for interrupt attribute"}
[b]={"dff0e892db7c",1316119210,"Detect cyclic module dependencies in a manner that is rather more"},
[k]={{db,1585,"ModuleLoadResult CompilerInstance::findOrCompileModuleAndReadAST(StringRef ModuleName, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, bool IsInclusionDirective) {\n  if (Pos != PosEnd) {\n    getDiagnostics().Report(ModuleNameLoc, diag::err_module_cycle) << ModuleName << CyclePath;"}}
},
},
["note_safe_buffer_usage_suggestions_disabled"]={
["err_module_decl_in_header_unit"]={
[c]="pass -fsafe-buffer-usage-suggestions to receive code hardening suggestions",
[j]="\'module\' declaration found while building header unit",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="pass -fsafe-buffer-usage-suggestions to receive code hardening suggestions",
[e]="\'module\' declaration found while building header unit",
[b]=q,
[f]=n,
[a]="pass \\-fsafe\\-buffer\\-usage\\-suggestions to receive code hardening suggestions",
[g]="\'module\' declaration found while building header unit",
[g]=p,
[h]=a,
[e]=p,
[i]=D,
[i]={N,1625925174,O}
[b]={M,1625925174,N},
[k]={{X,205,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n  case LangOptions::CMK_HeaderUnit:\n    Diag(ModuleLoc, diag::err_module_decl_in_header_unit);"}}
},
},
["note_second_module_difference"]={
["err_module_decl_in_module_map_module"]={
[c]="in second definition, possible difference is here",
[j]="\'module\' declaration found while building module from module map",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in second definition, possible difference is here",
[e]="\'module\' declaration found while building module from module map",
[b]=q,
[f]=n,
[a]="in second definition, possible difference is here",
[g]="\'module\' declaration found while building module from module map",
[g]=p,
[h]=a,
[e]=p,
[i]=D,
[i]={"ca48d369bac3",1498009393,"[ODRHash] Supply more information when generic error message is emitted."}
[b]={"81328ac3a5b1",1492814358,"P0629R0: Switch to latest proposal for distinguishing module interface from implementation."},
[k]={{X,201,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n  case LangOptions::CMK_ModuleMap:\n    Diag(ModuleLoc, diag::err_module_decl_in_module_map_module);"}}
},
},
["note_sentinel_here"]={
["err_module_decl_not_at_start"]={
[c]="... has been explicitly marked sentinel here",
[j]="module declaration must occur at the start of the translation unit",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{function|method|block}0 has been explicitly marked sentinel here",
[e]="module declaration must occur at the start of the translation unit",
[b]=q,
[f]=n,
[a]="(?:function|method|block) has been explicitly marked sentinel here",
[g]="module declaration must occur at the start of the translation unit",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"9e87721d47fd",1242256850,"Look for and diagnose missing sentinel argument on message"}
[b]={"d652bdd05f1c",1555229219,"[c++20] Parsing support for module-declarations, import-declarations,"},
[k]={{X,226,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n  // In C++20, the module-declaration must be the first declaration if there\n  // is no global module fragment.\n  if (getLangOpts().CPlusPlusModules && !IsFirstDecl && !SeenGMF) {\n    Diag(ModuleLoc, diag::err_module_decl_not_at_start);"}}
},
},
["note_shadow_field"]={
["err_module_declaration_missing"]={
[c]="declared here",
[j]="missing \'export module\' declaration in module interface unit",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="declared here",
[e]="missing \'export module\' declaration in module interface unit",
[b]=q,
[f]=n,
[a]="declared here",
[g]="missing \'export module\' declaration in module interface unit",
[g]=p,
[h]=a,
[e]=p,
[i]=D,
[i]={"a6ae060db4fd",1486524613,"Sema: add warning for c++ member variable shadowing"}
[b]={"18057cb34c83",1507682216,"[Modules TS] Diagnose missing/duplicate module-declaration."},
[k]={{"clang/lib/Sema/Sema.cpp",1077,"/// ActOnEndOfTranslationUnit - This is called at the very end of the\n/// translation unit when EOF is reached and all but the top-level scope is\n/// popped.\nvoid Sema::ActOnEndOfTranslationUnit() {\n  if (TUKind == TU_Module) {\n    // If we are building a module interface unit, we need to have seen the\n    // module declaration by now.\n    if (getLangOpts().getCompilingModule() == LangOptions::CMK_ModuleInterface && !isCurrentModulePurview() && !DiagnosedMissingModuleDeclaration) {\n      Diag(getSourceManager().getLocForStartOfFile(getSourceManager().getMainFileID()), diag::err_module_declaration_missing);"}}
},
},
["note_silence_aligned_allocation_unavailable"]={
["err_module_declaration_missing_after_global_module_introducer"]={
[c]="if you supply your own aligned allocation functions, use -faligned-allocation to silence this diagnostic",
[j]="missing \'module\' declaration at end of global module fragment introduced here",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="if you supply your own aligned allocation functions, use -faligned-allocation to silence this diagnostic",
[e]="missing \'module\' declaration at end of global module fragment introduced here",
[b]=q,
[f]=n,
[a]="if you supply your own aligned allocation functions, use \\-faligned\\-allocation to silence this diagnostic",
[g]="missing \'module\' declaration at end of global module fragment introduced here",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"751381db5a39",1534866864,"[clang][NFC] Fix typo in the name of a note"}
[b]={"d652bdd05f1c",1555229219,"[c++20] Parsing support for module-declarations, import-declarations,"},
[k]={{"clang/lib/Sema/Sema.cpp",1068,"/// ActOnEndOfTranslationUnit - This is called at the very end of the\n/// translation unit when EOF is reached and all but the top-level scope is\n/// popped.\nvoid Sema::ActOnEndOfTranslationUnit() {\n  if (!ModuleScopes.empty() && ModuleScopes.back().Module->Kind == Module::ExplicitGlobalModuleFragment) {\n    Diag(ModuleScopes.back().BeginLoc, diag::err_module_declaration_missing_after_global_module_introducer);"}}
},
},
["note_single_arg_concept_specialization_constraint_evaluated_to_false"]={
["err_module_different_modmap"]={
[c]="... A does not satisfy B",
[j]="module \'A\' ... additional module map \'B\'... used when the module was built",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{and|because}0 %1 does not satisfy %2",
[e]="module \'%0\' %select{uses|does not use}1 additional module map \'%2\'%select{| not}1 used when the module was built",
[b]=q,
[f]=n,
[a]="(?:and|because) (.*?) does not satisfy (.*?)",
[g]="module \'(.*?)\' (?:uses|does not use) additional module map \'(.*?)\'(?:| not) used when the module was built",
[g]=p,
[h]=a,
[e]=o,
[i]=jb,
[i]={"bd8791610948",1569403888,"[clang] Add no_builtin attribute"}
[b]={"4b8a9e951e09",1407861753,"Verify all the module map files for a pcm are the same on load"},
[k]={{bb,3597,"ASTReader::ASTReadResult ASTReader::ReadModuleMapFileBlock(RecordData &Record, ModuleFile &F, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n  if (PP.getPreprocessorOpts().ModulesCheckRelocated && F.Kind == MK_ImplicitModule && ModuleMgr.begin()->Kind != MK_MainFile) {\n    // Check any additional module map files (e.g. module.private.modulemap)\n    // that are not in the pcm.\n    if (auto *AdditionalModuleMaps = Map.getAdditionalModuleMapFiles(M)) {\n      for (const FileEntry *ModMap : *AdditionalModuleMaps) {\n        // Remove files that match\n        // Note: SmallPtrSet::erase is really remove\n        if (!AdditionalStoredMaps.erase(ModMap)) {\n          if (!canRecoverFromOutOfDate(F.FileName, ClientLoadCapabilities))\n            Diag(diag::err_module_different_modmap) << F.ModuleName << /*new*/ 0 << ModMap->getName();"},{bb,3607,"ASTReader::ASTReadResult ASTReader::ReadModuleMapFileBlock(RecordData &Record, ModuleFile &F, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n  if (PP.getPreprocessorOpts().ModulesCheckRelocated && F.Kind == MK_ImplicitModule && ModuleMgr.begin()->Kind != MK_MainFile) {\n    // Check any additional module map files that are in the pcm, but not\n    // found in header search. Cases that match are already removed.\n    for (const FileEntry *ModMap : AdditionalStoredMaps) {\n      if (!canRecoverFromOutOfDate(F.FileName, ClientLoadCapabilities))\n        Diag(diag::err_module_different_modmap) << F.ModuleName << /*not new*/ 1 << ModMap->getName();"}}
},
},
["note_specialized_decl"]={
["err_module_expected_ident"]={
[c]="attempt to specialize declaration here",
[j]="expected a module name after \'...\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="attempt to specialize declaration here",
[e]="expected a module name after \'%select{module|import}0\'",
[b]=q,
[f]=n,
[a]="attempt to specialize declaration here",
[g]="expected a module name after \'(?:module|import)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"5c0405d48454",1254954940,"Type checking for specializations of member functions of class"}
[b]={"081425343b18",1314402967,"Introduce support for a simple module import declaration, which"},
[k]={{Q,2371,"/// Parse a C++ / Objective-C module name (both forms use the same\n/// grammar).\n///\n///        module-name:\n///          module-name-qualifier[opt] identifier\n///        module-name-qualifier:\n///          module-name-qualifier[opt] identifier \'.\'\nbool Parser::ParseModuleName(SourceLocation UseLoc, SmallVectorImpl<std::pair<IdentifierInfo *, SourceLocation>> &Path, bool IsImport) {\n  // Parse the module path.\n  while (true) {\n    if (!Tok.is(tok::identifier)) {\n      Diag(Tok, diag::err_module_expected_ident) << IsImport;"}}
},
},
["note_specialized_entity"]={
["err_module_expected_semi"]={
[c]="explicitly specialized declaration is here",
[j]="expected \';\' after module name",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="explicitly specialized declaration is here",
[e]="expected \';\' after module name",
[b]=q,
[f]=n,
[a]="explicitly specialized declaration is here",
[g]="expected \';\' after module name",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"548886518d08",1254874412,"Refactor checking of the scope of explicit template specialization"}
[b]={"081425343b18",1314402967,"Introduce support for a simple module import declaration, which"},
[k]={{Q,2223,"/// Parse a declaration beginning with the \'module\' keyword or C++20\n/// context-sensitive keyword (optionally preceded by \'export\').\n///\n///  module-declaration:  [C++20]\n///    \'export\'[opt] \'module\' module-name attribute-specifier-seq[opt] \';\'\n///\n///  global-module-fragment:  [C++2a]\n///    \'module\' \';\' top-level-declaration-seq[opt]\n///  module-declaration:      [C++2a]\n///    \'export\'[opt] \'module\' module-name module-partition[opt]\n///            attribute-specifier-seq[opt] \';\'\n///  private-module-fragment: [C++2a]\n///    \'module\' \':\' \'private\' \';\' top-level-declaration-seq[opt]\nParser::DeclGroupPtrTy Parser::ParseModuleDecl(Sema::ModuleImportState &ImportState) {\n  ExpectAndConsumeSemi(diag::err_module_expected_semi);"},{Q,2329,"/// Parse a module import declaration. This is essentially the same for\n/// Objective-C and C++20 except for the leading \'@\' (in ObjC) and the\n/// trailing optional attributes (in C++).\n///\n/// [ObjC]  @import declaration:\n///          \'@\' \'import\' module-name \';\'\n/// [ModTS] module-import-declaration:\n///          \'import\' module-name attribute-specifier-seq[opt] \';\'\n/// [C++20] module-import-declaration:\n///          \'export\'[opt] \'import\' module-name\n///                  attribute-specifier-seq[opt] \';\'\n///          \'export\'[opt] \'import\' module-partition\n///                  attribute-specifier-seq[opt] \';\'\n///          \'export\'[opt] \'import\' header-name\n///                  attribute-specifier-seq[opt] \';\'\nDecl *Parser::ParseModuleImport(SourceLocation AtLoc, Sema::ModuleImportState &ImportState) {\n  if (SeenError) {\n    ExpectAndConsumeSemi(diag::err_module_expected_semi);"},{Q,2338,"/// Parse a module import declaration. This is essentially the same for\n/// Objective-C and C++20 except for the leading \'@\' (in ObjC) and the\n/// trailing optional attributes (in C++).\n///\n/// [ObjC]  @import declaration:\n///          \'@\' \'import\' module-name \';\'\n/// [ModTS] module-import-declaration:\n///          \'import\' module-name attribute-specifier-seq[opt] \';\'\n/// [C++20] module-import-declaration:\n///          \'export\'[opt] \'import\' module-name\n///                  attribute-specifier-seq[opt] \';\'\n///          \'export\'[opt] \'import\' module-partition\n///                  attribute-specifier-seq[opt] \';\'\n///          \'export\'[opt] \'import\' header-name\n///                  attribute-specifier-seq[opt] \';\'\nDecl *Parser::ParseModuleImport(SourceLocation AtLoc, Sema::ModuleImportState &ImportState) {\n  ExpectAndConsumeSemi(diag::err_module_expected_semi);"}}
},
},
["note_static_for_internal_linkage"]={
["err_module_file_conflict"]={
[c]="declare \'static\' if the ... is not intended to be used outside of this translation unit",
[j]="module \'A\' is defined in both \'B\' and \'C\'",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="declare \'static\' if the %select{variable|function}0 is not intended to be used outside of this translation unit",
[e]="module \'%0\' is defined in both \'%1\' and \'%2\'",
[b]=q,
[f]=J,
[a]="declare \'static\' if the (?:variable|function) is not intended to be used outside of this translation unit",
[g]="module \'(.*?)\' is defined in both \'(.*?)\' and \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=jb,
[i]={"df195d8aedff",1560898628,"Suggestions to fix -Wmissing-{prototypes,variable-declarations}"}
[b]={"8a114ab557f0",1360190431,"Detect when we end up trying to load conflicting module files."},
[k]={{bb,3549,"ASTReader::ASTReadResult ASTReader::ReadModuleMapFileBlock(RecordData &Record, ModuleFile &F, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n  if (PP.getPreprocessorOpts().ModulesCheckRelocated && F.Kind == MK_ImplicitModule && ModuleMgr.begin()->Kind != MK_MainFile) {\n    // Don\'t emit module relocation error if we have -fno-validate-pch\n    if (!bool(PP.getPreprocessorOpts().DisablePCHOrModuleValidation & DisableValidationForModuleKind::Module) && !ModMap) {\n      if (!canRecoverFromOutOfDate(F.FileName, ClientLoadCapabilities)) {\n        if (auto ASTFE = M ? M->getASTFile() : std::nullopt) {\n          Diag(diag::err_module_file_conflict) << F.ModuleName << F.FileName << ASTFE->getName();"},{bb,5039,"llvm::Error ASTReader::ReadSubmoduleBlock(ModuleFile &F, unsigned ClientLoadCapabilities) {\n  while (true) {\n    case SUBMODULE_DEFINITION: {\n      if (!ParentModule) {\n        if (const FileEntry *CurFile = CurrentModule->getASTFile()) {\n          // Don\'t emit module relocation error if we have -fno-validate-pch\n          if (!bool(PP.getPreprocessorOpts().DisablePCHOrModuleValidation & DisableValidationForModuleKind::Module) && CurFile != F.File) {\n            auto ConflictError = PartialDiagnostic(diag::err_module_file_conflict, ContextObj->DiagAllocator) << CurrentModule->getTopLevelModuleName() << CurFile->getName() << F.File->getName();"}}
},
},
["note_string_plus_scalar_silence"]={
["err_module_file_missing_top_level_submodule"]={
[c]="use array indexing to silence this warning",
[j]="module file \'A\' is missing its top-level submodule",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="use array indexing to silence this warning",
[e]="module file \'%0\' is missing its top-level submodule",
[b]=q,
[f]=J,
[a]="use array indexing to silence this warning",
[g]="module file \'(.*?)\' is missing its top\\-level submodule",
[g]=p,
[h]=a,
[e]=o,
[i]=jb,
[i]={"5565941effbe",1382719920,"Add -Wstring-plus-char, which warns when adding char literals to C strings."}
[b]={"83dcb34b6bf4",1573420492,"clang/Modules: Error if ReadASTBlock does not find the main module"},
[k]={{bb,3848,"ASTReader::ASTReadResult ASTReader::ReadAST(StringRef FileName, ModuleKind Type, SourceLocation ImportLoc, unsigned ClientLoadCapabilities, SmallVectorImpl<ImportedSubmodule> *Imported) {\n  // Load the AST blocks of all of the modules that we loaded. We can still\n  // hit errors parsing the ASTs at this point.\n  for (ImportedModule &M : Loaded) {\n    // The AST block should always have a definition for the main module.\n    if (F.isModule() && !F.DidReadTopLevelSubmodule) {\n      Error(diag::err_module_file_missing_top_level_submodule, F.FileName);"}}
},
},
["note_strlcpycat_wrong_size"]={
["err_module_file_not_module"]={
[c]="change size argument to be the size of the destination",
[j]="AST file \'A\' was not built as a module",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="change size argument to be the size of the destination",
[e]="AST file \'%0\' was not built as a module",
[b]=q,
[f]=J,
[a]="change size argument to be the size of the destination",
[g]="AST file \'(.*?)\' was not built as a module",
[g]=p,
[h]=a,
[e]=o,
[i]=jb,
[i]={"d5fe9e4d9741",1313624436,"Add experimental -Wstrlcpy-size warning that looks to see if the size argument for strlcpy/strlcat i..."}
[b]={"e842a4745222",1413943546,"[modules] Initial support for explicitly loading .pcm files."},
[k]={{bb,4160,"ASTReader::ASTReadResult ASTReader::ReadASTCore(StringRef FileName, ModuleKind Type, SourceLocation ImportLoc, ModuleFile *ImportedBy, SmallVectorImpl<ImportedModule> &Loaded, off_t ExpectedSize, time_t ExpectedModTime, ASTFileSignature ExpectedSignature, unsigned ClientLoadCapabilities) {\n  while (true) {\n    case CONTROL_BLOCK_ID:\n      case Success:\n        // Check that we didn\'t try to load a non-module AST file as a module.\n        //\n        // FIXME: Should we also perform the converse check? Loading a module as\n        // a PCH file sort of works, but it\'s a bit wonky.\n        if ((Type == MK_ImplicitModule || Type == MK_ExplicitModule || Type == MK_PrebuiltModule) && F.ModuleName.empty()) {\n          if (Result != OutOfDate || (ClientLoadCapabilities & ARR_OutOfDate) == 0)\n            Diag(diag::err_module_file_not_module) << FileName;"}}
},
},
["note_strncat_wrong_size"]={
["err_module_format_unhandled"]={
[c]="change the argument to be the free space in the destination buffer minus the terminating null byte",
[j]="no handler registered for module format \'A\'",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="change the argument to be the free space in the destination buffer minus the terminating null byte",
[e]="no handler registered for module format \'%0\'",
[b]=q,
[f]=J,
[a]="change the argument to be the free space in the destination buffer minus the terminating null byte",
[g]="no handler registered for module format \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"314cd09b5c79",1328123337,"Add a new compiler warning, which flags anti-patterns used as the size"}
[b]={"fb2398d0c434",1437095994,"Make the clang module container format selectable from the command line."}
},
},
["note_struct_class_suggestion"]={
["err_module_fragment_exported"]={
[c]="did you mean ... here?",
[j]="... module fragment cannot be exported",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="did you mean %select{struct|interface|class}0 here?",
[e]="%select{global|private}0 module fragment cannot be exported",
[b]=q,
[f]=n,
[a]="did you mean (?:struct|interface|class) here\\?",
[g]="(?:global|private) module fragment cannot be exported",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"caa33d36fb3f",1307675486,"Made changes to how \'struct\'/\'class\' mismatches are handled in -Wmismatched-tags."}
[b]={"d652bdd05f1c",1555229219,"[c++20] Parsing support for module-declarations, import-declarations,"},
[k]={{Q,2182,"/// Parse a declaration beginning with the \'module\' keyword or C++20\n/// context-sensitive keyword (optionally preceded by \'export\').\n///\n///  module-declaration:  [C++20]\n///     \'export\'[opt] \'module\' module-name attribute-specifier-seq[opt] \';\'\n///\n///  global-module-fragment:  [C++2a]\n///    \'module\' \';\' top-level-declaration-seq[opt]\n///  module-declaration:      [C++2a]\n///    \'export\'[opt] \'module\' module-name module-partition[opt]\n///            attribute-specifier-seq[opt] \';\'\n///  private-module-fragment: [C++2a]\n///    \'module\' \':\' \'private\' \';\' top-level-declaration-seq[opt]\nParser::DeclGroupPtrTy Parser::ParseModuleDecl(Sema::ModuleImportState &ImportState) {\n  // Parse a global-module-fragment, if present.\n  if (getLangOpts().CPlusPlusModules && Tok.is(tok::semi)) {\n    if (MDK == Sema::ModuleDeclKind::Interface) {\n      Diag(StartLoc, diag::err_module_fragment_exported) << /*global*/ 0 << FixItHint::CreateRemoval(StartLoc);"},{Q,2191,"/// Parse a declaration beginning with the \'module\' keyword or C++20\n/// context-sensitive keyword (optionally preceded by \'export\').\n///\n///  module-declaration:  [C++20]\n///    \'export\'[opt] \'module\' module-name attribute-specifier-seq[opt] \';\'\n///\n///  global-module-fragment:  [C++2a]\n///    \'module\' \';\' top-level-declaration-seq[opt]\n///  module-declaration:      [C++2a]\n///    \'export\'[opt] \'module\' module-name module-partition[opt]\n///            attribute-specifier-seq[opt] \';\'\n///  private-module-fragment: [C++2a]\n///    \'module\' \':\' \'private\' \';\' top-level-declaration-seq[opt]\nParser::DeclGroupPtrTy Parser::ParseModuleDecl(Sema::ModuleImportState &ImportState) {\n  // Parse a private-module-fragment, if present.\n  if (getLangOpts().CPlusPlusModules && Tok.is(tok::colon) && NextToken().is(tok::kw_private)) {\n    if (MDK == Sema::ModuleDeclKind::Interface) {\n      Diag(StartLoc, diag::err_module_fragment_exported) << /*private*/ 1 << FixItHint::CreateRemoval(StartLoc);"}}
},
},
["note_substituted_constraint_expr_is_ill_formed"]={
["err_module_header_file_not_found"]={
[c]="because substituted constraint expression is ill-formedA",
[j]="module header file \'A\' not found",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="because substituted constraint expression is ill-formed%0",
[e]="module header file \'%0\' not found",
[b]=q,
[f]=J,
[a]="because substituted constraint expression is ill\\-formed(.*?)",
[g]="module header file \'(.*?)\' not found",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"bd8791610948",1569403888,"[clang] Add no_builtin attribute"}
[b]={"d6509cf21dd0",1536974475,"[modules] Frontend support for building a header module from a list of"},
[k]={{qb,731,"bool FrontendAction::BeginSourceFile(CompilerInstance &CI, const FrontendInputFile &RealInput) {\n  // Handle C++20 header units.\n  // Here, the user has the option to specify that the header name should be\n  // looked up in the pre-processor search paths (and the main filename as\n  // passed by the driver might therefore be incomplete until that look-up).\n  if (CI.getLangOpts().CPlusPlusModules && Input.getKind().isHeaderUnit() && !Input.getKind().isPreprocessed()) {\n    if (Kind.getHeaderUnitKind() != InputKind::HeaderUnit_Abs) {\n      if (!FE) {\n        CI.getDiagnostics().Report(diag::err_module_header_file_not_found) << FileName;"}}
},
},
["note_suggest_disabling_all_checkers"]={
["err_module_header_missing"]={
[c]="use -analyzer-disable-all-checks to disable all static analyzer checkers",
[j]="...header \'A\' not found",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use -analyzer-disable-all-checks to disable all static analyzer checkers",
[e]="%select{|umbrella }0header \'%1\' not found",
[b]=q,
[f]=n,
[a]="use \\-analyzer\\-disable\\-all\\-checks to disable all static analyzer checkers",
[g]="(?:|umbrella )header \'(.*?)\' not found",
[g]=p,
[h]=a,
[e]=p,
[i]=s,
[i]={"d5478fdd8f05",1409342498,"Add an option to silence all analyzer warnings."}
[b]={"0761a8a085f4",1387276297,"Modules: Don\'t warn upon missing headers while reading the module map."},
[k]={{qb,310,"/// Collect the set of header includes needed to construct the given\n/// module and update the TopHeaders file set of the module.\n///\n/// \\param Module The module we\'re collecting includes from.\n///\n/// \\param Includes Will be augmented with the set of \\#includes or \\#imports\n/// needed to load all of the named headers.\nstatic std::error_code collectModuleHeaderIncludes(const LangOptions &LangOpts, FileManager &FileMgr, DiagnosticsEngine &Diag, ModuleMap &ModMap, clang::Module *Module, SmallVectorImpl<char> &Includes) {\n  // If any headers are missing, we can\'t build this module. In most cases,\n  // diagnostics for this should have already been produced; we only get here\n  // if explicit stat information was provided.\n  // FIXME: If the name resolves to a file with different stat information,\n  // produce a better diagnostic.\n  if (!Module->MissingHeaders.empty()) {\n    Diag.Report(MissingHeader.FileNameLoc, diag::err_module_header_missing) << MissingHeader.IsUmbrella << MissingHeader.FileName;"},{rb,1760,"bool Preprocessor::checkModuleIsAvailable(const LangOptions &LangOpts, const TargetInfo &TargetInfo, DiagnosticsEngine &Diags, Module *M) {\n  if (MissingHeader.FileNameLoc.isValid()) {\n    Diags.Report(MissingHeader.FileNameLoc, diag::err_module_header_missing) << MissingHeader.IsUmbrella << MissingHeader.FileName;"}}
},
},
["note_suggest_parens_for_macro"]={
["err_module_import_in_implementation"]={
[c]="parentheses are required around macro argument containing braced initializer list",
[j]="@import of module \'A\' in implementation of \'B\'; use #import",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="parentheses are required around macro argument containing braced initializer list",
[e]="@import of module \'%0\' in implementation of \'%1\'; use #import",
[b]=q,
[f]=n,
[a]="parentheses are required around macro argument containing braced initializer list",
[g]="@import of module \'(.*?)\' in implementation of \'(.*?)\'; use \\#import",
[g]=p,
[h]=a,
[e]=C,
[i]=D,
[i]={"79b45389c3cd",1374602509,"Add new diagnostic messages when too many arguments are presented to a"}
[b]={"b537a3a65180",1406129423,"Add stopgap option -fmodule-implementation-of <name>"},
[k]={{X,506,"DeclResult Sema::ActOnModuleImport(SourceLocation StartLoc, SourceLocation ExportLoc, SourceLocation ImportLoc, Module *Mod, ModuleIdPath Path) {\n  // FIXME: we should support importing a submodule within a different submodule\n  // of the same top-level module. Until we do, make it an error rather than\n  // silently ignoring the import.\n  // FIXME: Should we warn on a redundant import of the current module?\n  if (Mod->isForBuilding(getLangOpts())) {\n    Diag(ImportLoc, getLangOpts().isCompilingModule() ? diag::err_module_self_import : diag::err_module_import_in_implementation) << Mod->getFullModuleName() << getLangOpts().CurrentModule;"}}
},
},
["note_suppress_ctad_maybe_unsupported"]={
["err_module_import_not_at_top_level_fatal"]={
[c]="add a deduction guide to suppress this warning",
[j]="import of module \'A\' appears within B",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="add a deduction guide to suppress this warning",
[e]="import of module \'%0\' appears within %1",
[b]=q,
[f]=J,
[a]="add a deduction guide to suppress this warning",
[g]="import of module \'(.*?)\' appears within (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"73b51ae160af",1547761464,"Add -Wctad-maybe-unsupported to diagnose CTAD on types with no user defined deduction guides."}
[b]={"c4e04a296403",1442640777,"[Modules] More descriptive diagnostics for misplaced import directive"},
[k]={{X,43,"static void checkModuleImportContext(Sema &S, Module *M, SourceLocation ImportLoc, DeclContext *DC, bool FromInclude = false) {\n  if (!isa<TranslationUnitDecl>(DC)) {\n    S.Diag(ImportLoc, (FromInclude && S.isModuleVisible(M)) ? diag::ext_module_import_not_at_top_level_noop : diag::err_module_import_not_at_top_level_fatal) << M->getFullModuleName() << DC;"}}
},
},
["note_suppressed_class_declare"]={
["err_module_interface_implementation_mismatch"]={
[c]="class with specified objc_requires_property_definitions attribute is declared here",
[j]="missing \'export\' specifier in module declaration while building module interface",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="class with specified objc_requires_property_definitions attribute is declared here",
[e]="missing \'export\' specifier in module declaration while building module interface",
[b]=q,
[f]=n,
[a]="class with specified objc_requires_property_definitions attribute is declared here",
[g]="missing \'export\' specifier in module declaration while building module interface",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"783ffde6d3f0",1325718973,"objc: When issuing warning for missing synthesis for"}
[b]={"964cc53d9a74",1471570986,"C++ Modules TS: support parsing the \'module\' declaration (including extensions"},
[k]={{X,196,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n  case LangOptions::CMK_ModuleInterface:\n    Diag(ModuleLoc, diag::err_module_interface_implementation_mismatch) << FixItHint::CreateInsertion(ModuleLoc, \"export \");"}}
},
},
["note_surrounding_namespace_ends_here"]={
["err_module_interface_requires_cpp_modules"]={
[c]="surrounding namespace with visibility attribute ends here",
[j]="module interface compilation requires \'-std=c++20\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="surrounding namespace with visibility attribute ends here",
[e]="module interface compilation requires \'-std=c++20\'",
[b]=q,
[f]=n,
[a]="surrounding namespace with visibility attribute ends here",
[g]="module interface compilation requires \'\\-std\\=c\\+\\+20\'",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"6d65d7b63d1c",1328138699,"Reject mismatched \"#pragma GCC visibility push\" and \"#pragma GCC visibility pop\"."}
[b]={"b1b580e047ad",1555240297,"[c++20] Enable driver and frontend support for building and using"},
[k]={{"clang/lib/Frontend/FrontendActions.cpp",213,"bool GenerateHeaderUnitAction::BeginSourceFileAction(CompilerInstance &CI) {\n  if (!CI.getLangOpts().CPlusPlusModules) {\n    CI.getDiagnostics().Report(diag::err_module_interface_requires_cpp_modules);"}}
},
},
["note_surrounding_namespace_starts_here"]={
["err_module_map_not_found"]={
[c]="surrounding namespace with visibility attribute starts here",
[j]="module map file \'A\' not found",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="surrounding namespace with visibility attribute starts here",
[e]="module map file \'%0\' not found",
[b]=q,
[f]=J,
[a]="surrounding namespace with visibility attribute starts here",
[g]="module map file \'(.*?)\' not found",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"6d65d7b63d1c",1328138699,"Reject mismatched \"#pragma GCC visibility push\" and \"#pragma GCC visibility pop\"."}
[b]={"2b20cb87f5b6",1321402146,"Add support for building a module from a module map to the -cc1"},
[k]={{qb,465,"static Module *prepareToBuildModule(CompilerInstance &CI, StringRef ModuleMapFilename) {\n  if (!OriginalModuleMapName.empty()) {\n    if (!OriginalModuleMap) {\n      CI.getDiagnostics().Report(diag::err_module_map_not_found) << OriginalModuleMapName;"},{qb,807,"bool FrontendAction::BeginSourceFile(CompilerInstance &CI, const FrontendInputFile &RealInput) {\n  // If we were asked to load any module map files, do so now.\n  for (const auto &Filename : CI.getFrontendOpts().ModuleMapFiles) {\n    if (auto File = CI.getFileManager().getOptionalFileRef(Filename))\n    else\n      CI.getDiagnostics().Report(diag::err_module_map_not_found) << Filename;"}}
},
},
["note_suspicious_bzero_size_silence"]={
["err_module_no_size_mtime_for_header"]={
[c]="parenthesize the second argument to silence",
[j]="cannot emit module A: ... must be explicitly specified for missing header file \"B\"",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="parenthesize the second argument to silence",
[e]="cannot emit module %0: %select{size|mtime}1 must be explicitly specified for missing header file \"%2\"",
[b]=q,
[f]=n,
[a]="parenthesize the second argument to silence",
[g]="cannot emit module (.*?)\\: (?:size|mtime) must be explicitly specified for missing header file \"(.*?)\"",
[g]=p,
[h]=a,
[e]=o,
[i]="AST Serialization Issue",
[i]={"d1cf276621a7",1532018775,"[Sema] Add a new warning, -Wmemset-transposed-args"}
[b]={"040e12662a67",1496368539,"Support lazy stat\'ing of files referenced by module maps."},
[k]={{"clang/lib/Serialization/ASTWriter.cpp",1740,"/// Write the header search block for the list of files that\n///\n/// \\param HS The header search structure to save.\nvoid ASTWriter::WriteHeaderSearch(const HeaderSearch &HS) {\n  if (WritingModule) {\n    while (!Worklist.empty()) {\n      // If the file didn\'t exist, we can still create a module if we were given\n      // enough information in the module map.\n      for (const auto &U : M->MissingHeaders) {\n        // Check that we were given enough information to build a module\n        // without this file existing on disk.\n        if (!U.Size || (!U.ModTime && IncludeTimestamps)) {\n          PP->Diag(U.FileNameLoc, diag::err_module_no_size_mtime_for_header) << WritingModule->getFullModuleName() << U.Size.has_value() << U.FileName;"}}
},
},
["note_suspicious_sizeof_memset_silence"]={
["err_module_not_built"]={
[c]="... to silence",
[j]="could not build module \'A\'",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="%select{parenthesize the third argument|cast the second argument to \'int\'}0 to silence",
[e]="could not build module \'%0\'",
[b]=q,
[f]=J,
[a]="(?:parenthesize the third argument|cast the second argument to \'int\') to silence",
[g]="could not build module \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"d1cf276621a7",1532018775,"[Sema] Add a new warning, -Wmemset-transposed-args"}
[b]={"faeb1d465862",1315870284,"When an import statement fails to find a module in the module cache,"},
[k]={{db,1146,"/// Read the AST right after compiling the module.\nstatic bool readASTAfterCompileModule(CompilerInstance &ImportingInstance, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, Module *Module, StringRef ModuleFileName, bool *OutOfDate) {\n  // The ASTReader didn\'t diagnose the error, so conservatively report it.\n  if (ReadResult == ASTReader::Missing || !Diags.hasErrorOccurred())\n    Diags.Report(ModuleNameLoc, diag::err_module_not_built) << Module->Name << SourceRange(ImportLoc, ModuleNameLoc);"},{db,1155,"/// Compile a module in a separate compiler instance and read the AST,\n/// returning true if the module compiles without errors.\nstatic bool compileModuleAndReadASTImpl(CompilerInstance &ImportingInstance, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, Module *Module, StringRef ModuleFileName) {\n  if (!compileModule(ImportingInstance, ModuleNameLoc, Module, ModuleFileName)) {\n    ImportingInstance.getDiagnostics().Report(ModuleNameLoc, diag::err_module_not_built) << Module->Name << SourceRange(ImportLoc, ModuleNameLoc);"},{db,1592,"ModuleLoadResult CompilerInstance::findOrCompileModuleAndReadAST(StringRef ModuleName, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, bool IsInclusionDirective) {\n  // Check whether we have already attempted to build this module (but\n  // failed).\n  if (getPreprocessorOpts().FailedModules && getPreprocessorOpts().FailedModules->hasAlreadyFailed(ModuleName)) {\n    getDiagnostics().Report(ModuleNameLoc, diag::err_module_not_built) << ModuleName << SourceRange(ImportLoc, ModuleNameLoc);"}}
},
},
["note_switch_conversion"]={
["err_module_not_defined"]={
[c]="conversion to ... type A",
[j]="definition of module \'A\' is not available; use -fmodule-file= to specify path to precompiled module interface",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="conversion to %select{integral|enumeration}0 type %1",
[e]="definition of module \'%0\' is not available; use -fmodule-file= to specify path to precompiled module interface",
[b]=q,
[f]=n,
[a]="conversion to (?:integral|enumeration) type (.*?)",
[g]="definition of module \'(.*?)\' is not available; use \\-fmodule\\-file\\= to specify path to precompiled module interface",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"d0c22e0d10fc",1258983968,"Implement conversion from a switch condition with class type to an"}
[b]={"d97d35e1500d",1507674927,"[Modules TS] Diagnose attempts to enter module implementation units without the module interface bei..."},
[k]={{X,312,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n  case ModuleDeclKind::Implementation: {\n    if (!Interface) {\n      Diag(ModuleLoc, diag::err_module_not_defined) << ModuleName;"}}
},
},
["note_tail_call_required"]={
["err_module_not_found"]={
[c]="tail call required by A attribute here",
[j]="module \'A\' not found",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="tail call required by %0 attribute here",
[e]="module \'%0\' not found",
[b]=q,
[f]=J,
[a]="tail call required by (.*?) attribute here",
[g]="module \'(.*?)\' not found",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={Lc,1607502387,Mc}
[b]={"dd8a2fe0be34",1314827541,"Switch the \"no module found\" default-fatal warning to a default-fatal error."},
[k]={{db,1486,"ModuleLoadResult CompilerInstance::findOrCompileModuleAndReadAST(StringRef ModuleName, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, bool IsInclusionDirective) {\n  if (Source == MS_ModuleNotFound) {\n    getDiagnostics().Report(ModuleNameLoc, diag::err_module_not_found) << ModuleName << SourceRange(ImportLoc, ModuleNameLoc);"}}
},
},
["note_template_arg_internal_object"]={
["err_module_odr_violation_definition_data"]={
[c]="non-type template argument refers to ... here",
[j]=ab,
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="non-type template argument refers to %select{function|object}0 here",
[e]="%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",
[b]=q,
[f]=n,
[a]="non\\-type template argument refers to (?:function|object) here",
[g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:(.*?) base (?:class|classes)|(.*?) virtual base (?:class|classes)|(.*?) base class with type (.*?)|(.*?) (?:non\\-virtual|virtual) base class (.*?)|(.*?) base class (.*?) with (?:public|protected|private|no) access specifier)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={db,1237025389,eb}
[b]={"e13eabe7d339",1506737957,"[ODRHash] Add base classes to hashing CXXRecordDecl."},
[k]={{P,557,"bool ODRDiagsEmitter::diagnoseMismatch(const CXXRecordDecl *FirstRecord, const CXXRecordDecl *SecondRecord, const struct CXXRecordDecl::DefinitionData *SecondDD) const {\n  // Diagnostics from DefinitionData are emitted here.\n  if (FirstDD != SecondDD) {\n    auto DiagBaseError = [FirstRecord, &FirstModule, this](SourceLocation Loc, SourceRange Range, ODRDefinitionDataDifference DiffType) { return Diag(Loc, diag::err_module_odr_violation_definition_data) << FirstRecord << FirstModule.empty() << FirstModule << Range << DiffType; };"}}
},
},
["note_template_arg_refers_here"]={
["err_module_odr_violation_different_definitions"]={
[c]="non-type template argument refers here",
[j]="A has different definitions in different modules; ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="non-type template argument refers here",
[e]="%q0 has different definitions in different modules; %select{definition in module \'%2\' is here|defined here}1",
[b]=q,
[f]=n,
[a]="non\\-type template argument refers here",
[g]="(.*?) has different definitions in different modules; (?:definition in module \'(.*?)\' is here|defined here)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={db,1237025389,eb}
[b]={"cd45dbc5f24c",1397879310,"When a module completes the definition of a class template specialization imported from another modu..."},
[k]={{P,497,"void ODRDiagsEmitter::diagnoseSubMismatchUnexpected(DiffResult &DR, const NamedDecl *FirstRecord, StringRef FirstModule, const NamedDecl *SecondRecord, StringRef SecondModule) const {\n  Diag(FirstRecord->getLocation(), diag::err_module_odr_violation_different_definitions) << FirstRecord << FirstModule.empty() << FirstModule;"}}
},
},
["note_template_arg_refers_here_func"]={
["err_module_odr_violation_different_instantiations"]={
[c]="template argument refers to function template A, here",
[j]="instantiation of A is different in different modules",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="template argument refers to function template %0, here",
[e]="instantiation of %q0 is different in different modules",
[b]=q,
[f]=n,
[a]="template argument refers to function template (.*?), here",
[g]="instantiation of (.*?) is different in different modules",
[g]=p,
[h]=a,
[e]=o,
[i]=jb,
[i]={db,1237025389,eb}
[b]={"cd45dbc5f24c",1397879310,"When a module completes the definition of a class template specialization imported from another modu..."},
[k]={{bb,8706,"void ASTReader::diagnoseOdrViolations() {\n  // Issue any pending ODR-failure diagnostics.\n  for (auto &Merge : OdrMergeFailures) {\n    if (!Diagnosed) {\n      Diag(Merge.first->getLocation(), diag::err_module_odr_violation_different_instantiations) << Merge.first;"}}
},
},
["note_template_class_explicit_specialization_was_here"]={
["err_module_odr_violation_enum"]={
[c]="class template A was explicitly specialized here",
[j]="A has different definitions in different modules; ... first difference is ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="class template %0 was explicitly specialized here",
[e]="%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 initializer|%ordinal4 element %5 has an initializer|}3",
[b]=q,
[f]=n,
[a]="class template (.*?) was explicitly specialized here",
[g]="(.*?) has different definitions in different modules; (?:definition in module \'(.*?)\'|defined here) first difference is (?:enum that is (?:not scoped|scoped)|enum scoped with keyword (?:struct|class)|enum (?:without|with) specified type|enum with specified type (.*?)|enum with (.*?) element(.*?)|(.*?) element has name (.*?)|(.*?) element (.*?) (?:has|does not have) an initializer|(.*?) element (.*?) has an initializer|)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"9bea9cc73bd0",1403720757,"MS ABI: Propagate class-level DLL attributes to class template specialization bases (PR11170)"}
[b]={"ab4d730f14d1",1532559125,"[ODRHash] Support hashing enums."},
[k]={{P,1374,"bool ODRDiagsEmitter::diagnoseMismatch(const EnumDecl *FirstEnum, const EnumDecl *SecondEnum) const {\n  auto DiagError = [FirstEnum, &FirstModule, this](const auto *DiagAnchor, ODREnumDifference DiffType) { return Diag(DiagAnchor->getLocation(), diag::err_module_odr_violation_enum) << FirstEnum << FirstModule.empty() << FirstModule << DiagAnchor->getSourceRange() << DiffType; };"}}
},
},
["note_template_class_instantiation_here"]={
["err_module_odr_violation_field"]={
[c]="in instantiation of template class A requested here",
[j]=ab,
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in instantiation of template class %q0 requested here",
[e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{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 initializer|field %4 with an initializer}3",
[b]=q,
[f]=n,
[a]="in instantiation of template class (.*?) requested here",
[g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:field (.*?)|field (.*?) with type (.*?)|(?:non\\-|)bitfield (.*?)|bitfield (.*?) with one width expression|(?:non\\-|)mutable field (.*?)|field (.*?) with (?:no|an) initializer|field (.*?) with an initializer)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={db,1237025389,eb}
[b]={wb,1643408541,zb},
[k]={{P,134,"bool ODRDiagsEmitter::diagnoseSubMismatchField(const NamedDecl *FirstRecord, StringRef FirstModule, StringRef SecondModule, const FieldDecl *FirstField, const FieldDecl *SecondField) const {\n  auto DiagError = [FirstRecord, FirstField, FirstModule, this](ODRFieldDifference DiffType) { return Diag(FirstField->getLocation(), diag::err_module_odr_violation_field) << FirstRecord << FirstModule.empty() << FirstModule << FirstField->getSourceRange() << DiffType; };"}}
},
},
["note_template_class_instantiation_was_here"]={
["err_module_odr_violation_function"]={
[c]="class template A was instantiated here",
[j]="A has different definitions in different modules; ... first difference is ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="class template %0 was instantiated here",
[e]="%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",
[b]=q,
[f]=n,
[a]="class template (.*?) was instantiated here",
[g]="(.*?) has different definitions in different modules; (?:definition in module \'(.*?)\'|defined here) first difference is (?:return type is (.*?)|(.*?) parameter with name (.*?)|(.*?) parameter with type (.*?)(?:| decayed from (.*?))|(.*?) parameter with(?:out|) a default argument|(.*?) parameter with a default argument|function body)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"9bea9cc73bd0",1403720757,"MS ABI: Propagate class-level DLL attributes to class template specialization bases (PR11170)"}
[b]={"e81caeb3147f",1512782980,"[ODRHash] Support ODR violation detection in functions."},
[k]={{P,1289,"bool ODRDiagsEmitter::diagnoseMismatch(const FunctionDecl *FirstFunction, const FunctionDecl *SecondFunction) const {\n  auto DiagError = [FirstFunction, &FirstModule, this](SourceLocation Loc, SourceRange Range, ODRFunctionDifference DiffType) { return Diag(Loc, diag::err_module_odr_violation_function) << FirstFunction << FirstModule.empty() << FirstModule << Range << DiffType; };"}}
},
},
["note_template_decl_here"]={
["err_module_odr_violation_method_params"]={
[c]="template is declared here",
[j]=ab,
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="template is declared here",
[e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{%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}3",
[b]=q,
[f]=n,
[a]="template is declared here",
[g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:(?:method (.*?)|constructor|destructor) that has (.*?) parameter(.*?)|(?:method (.*?)|constructor|destructor) with (.*?) parameter of type (.*?)(?:| decayed from (.*?))|(?:method (.*?)|constructor|destructor) with (.*?) parameter named (.*?))",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={db,1237025389,eb}
[b]={wb,1643408541,zb},
[k]={{P,74,"template <typename MethodT> static bool diagnoseSubMismatchMethodParameters(DiagnosticsEngine &Diags, const NamedDecl *FirstContainer, StringRef FirstModule, StringRef SecondModule, const MethodT *FirstMethod, const MethodT *SecondMethod) {\n  auto DiagError = [&Diags, &GetDiagMethodType, FirstContainer, FirstModule, FirstMethod](ODRMethodParametersDifference DiffType) {\n    return Diags.Report(FirstMethod->getLocation(), diag::err_module_odr_violation_method_params) << FirstContainer << FirstModule.empty() << FirstModule << FirstMethod->getSourceRange() << DiffType << FirstMethodType << FirstName;"}}
},
},
["note_template_declared_here"]={
["err_module_odr_violation_mismatch_decl"]={
[c]="... A declared here",
[j]=ab,
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{function template|class template|variable template|type alias template|template template parameter}0 %1 declared here",
[e]="%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|method|instance variable|property}3",
[b]=q,
[f]=n,
[a]="(?:function template|class template|variable template|type alias template|template template parameter) (.*?) declared here",
[g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?: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|method|instance variable|property)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"8b6070bb9df4",1299274634,"Teach Sema::ActOnCXXNestedNameSpecifier and Sema::CheckTemplateIdType"}
[b]={"fa3d93a148d4",1485827055,"Add better ODR checking for modules."},
[k]={{P,529,"void ODRDiagsEmitter::diagnoseSubMismatchDifferentDeclKinds(DiffResult &DR, const NamedDecl *FirstRecord, StringRef FirstModule, const NamedDecl *SecondRecord, StringRef SecondModule) const {\n  Diag(FirstDiagInfo.first, diag::err_module_odr_violation_mismatch_decl) << FirstRecord << FirstModule.empty() << FirstModule << FirstDiagInfo.second << DR.FirstDiffType;"}}
},
},
["note_template_default_arg_checking"]={
["err_module_odr_violation_mismatch_decl_unknown"]={
[c]="while checking a default template argument used here",
[j]="A ... has different definitions in different modules; first difference is this ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="while checking a default template argument used here",
[e]="%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|function template|method|instance variable|property|unexpected decl}3",
[b]=q,
[f]=n,
[a]="while checking a default template argument used here",
[g]="(.*?) (?:with definition in module \'(.*?)\'|defined here) has different definitions in different modules; first difference is this (?:||||static assert|field|method|type alias|typedef|data member|friend declaration|function template|method|instance variable|property|unexpected decl)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"84d49a2085bb",1257976463,"Improve diagnostics when a default template argument does not match"}
[b]={"708859a71326",1496883381,"[ODRHash] Change the fall-back diagnostic error."},
[k]={{P,1187,"bool ODRDiagsEmitter::diagnoseMismatch(const CXXRecordDecl *FirstRecord, const CXXRecordDecl *SecondRecord, const struct CXXRecordDecl::DefinitionData *SecondDD) const {\n  Diag(FirstDecl->getLocation(), diag::err_module_odr_violation_mismatch_decl_unknown) << FirstRecord << FirstModule.empty() << FirstModule << FirstDiffType << FirstDecl->getSourceRange();"},{P,1267,"bool ODRDiagsEmitter::diagnoseMismatch(const RecordDecl *FirstRecord, const RecordDecl *SecondRecord) const {\n  Diag(FirstDecl->getLocation(), diag::err_module_odr_violation_mismatch_decl_unknown) << FirstRecord << FirstModule.empty() << FirstModule << FirstDiffType << FirstDecl->getSourceRange();"},{P,1597,"bool ODRDiagsEmitter::diagnoseMismatch(const ObjCInterfaceDecl *FirstID, const ObjCInterfaceDecl *SecondID, const struct ObjCInterfaceDecl::DefinitionData *SecondDD) const {\n  Diag(FirstDecl->getLocation(), diag::err_module_odr_violation_mismatch_decl_unknown) << FirstID << FirstModule.empty() << FirstModule << FirstDiffType << FirstDecl->getSourceRange();"},{P,1683,"bool ODRDiagsEmitter::diagnoseMismatch(const ObjCProtocolDecl *FirstProtocol, const ObjCProtocolDecl *SecondProtocol, const struct ObjCProtocolDecl::DefinitionData *SecondDD) const {\n  Diag(FirstDecl->getLocation(), diag::err_module_odr_violation_mismatch_decl_unknown) << FirstProtocol << FirstModule.empty() << FirstModule << FirstDiffType << FirstDecl->getSourceRange();"}}
},
},
["note_template_enum_def_here"]={
["err_module_odr_violation_missing_decl"]={
[c]="in instantiation of enumeration A requested here",
[j]="A from module \'B\' is not present in definition of C...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in instantiation of enumeration %q0 requested here",
[e]="%q0 from module \'%1\' is not present in definition of %q2%select{ in module \'%4\'| provided earlier}3",
[b]=q,
[f]=n,
[a]="in instantiation of enumeration (.*?) requested here",
[g]="(.*?) from module \'(.*?)\' is not present in definition of (.*?)(?: in module \'(.*?)\'| provided earlier)",
[g]=p,
[h]=a,
[e]=o,
[i]=jb,
[i]={"4b38ded66a55",1331766790,"Instantiating a class template should not instantiate the definition of any"}
[b]={"2b9e3e396a6f",1382076318,"Basic ODR checking for C++ modules:"},
[k]={{bb,8665,"void ASTReader::diagnoseOdrViolations() {\n  // For each declaration from a merged context, check that the canonical\n  // definition of that context also contains a declaration of the same\n  // entity.\n  //\n  // Caution: this loop does things that might invalidate iterators into\n  // PendingOdrMergeChecks. Don\'t turn this into a range-based for loop!\n  while (!PendingOdrMergeChecks.empty()) {\n    if (!Found) {\n      Diag(D->getLocation(), diag::err_module_odr_violation_missing_decl) << D << ODRDiagsEmitter::getOwningModuleNameForDiagnostic(D) << CanonDef << CanonDefModule.empty() << CanonDefModule;"}}
},
},
["note_template_exception_spec_instantiation_here"]={
["err_module_odr_violation_objc_interface"]={
[c]="in instantiation of exception specification for A requested here",
[j]=ab,
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in instantiation of exception specification for %0 requested here",
[e]="%0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{%select{no super class|super class with type %5}4|instance variable \'%4\' access control is %select{|@private|@protected|@public|@package}5}3",
[b]=q,
[f]=n,
[a]="in instantiation of exception specification for (.*?) requested here",
[g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:(?:no super class|super class with type (.*?))|instance variable \'(.*?)\' access control is (?:|@private|@protected|@public|@package))",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"f623c962600b",1334624280,"Implement DR1330 in C++11 mode, to support libstdc++4.7 which uses it."}
[b]={"f27afedc6c86",1662843785,"[Clang] Implement P2738R1 - constexpr cast from void*"},
[k]={{P,1477,"bool ODRDiagsEmitter::diagnoseMismatch(const ObjCInterfaceDecl *FirstID, const ObjCInterfaceDecl *SecondID, const struct ObjCInterfaceDecl::DefinitionData *SecondDD) const {\n  auto DiagError = [FirstID, &FirstModule, this](SourceLocation Loc, SourceRange Range, ODRInterfaceDifference DiffType) { return Diag(Loc, diag::err_module_odr_violation_objc_interface) << FirstID << FirstModule.empty() << FirstModule << Range << DiffType; };"}}
},
},
["note_template_kw_refers_to_non_template"]={
["err_module_odr_violation_objc_method"]={
[c]="declared as a non-template here",
[j]=ab,
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="declared as a non-template here",
[e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{method %4 with return type %5|%select{class|instance}5 method %4|%select{no|\'required\'|\'optional\'}4 method control|method %4 with %select{no designated initializer|designated initializer}5|%select{regular|direct}5 method %4|method %4}3",
[b]=q,
[f]=n,
[a]="declared as a non\\-template here",
[g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:method (.*?) with return type (.*?)|(?:class|instance) method (.*?)|(?:no|\'required\'|\'optional\') method control|method (.*?) with (?:no designated initializer|designated initializer)|(?:regular|direct) method (.*?)|method (.*?))",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"7981004eb7bd",1526006588,"Improve diagnostics and error recovery for template name lookup."}
[b]={wb,1643408541,zb},
[k]={{P,336,"bool ODRDiagsEmitter::diagnoseSubMismatchObjCMethod(const NamedDecl *FirstObjCContainer, StringRef FirstModule, StringRef SecondModule, const ObjCMethodDecl *FirstMethod, const ObjCMethodDecl *SecondMethod) const {\n  auto DiagError = [FirstObjCContainer, FirstModule, FirstMethod, this](ODRMethodDifference DiffType) { return Diag(FirstMethod->getLocation(), diag::err_module_odr_violation_objc_method) << FirstObjCContainer << FirstModule.empty() << FirstModule << FirstMethod->getSourceRange() << DiffType; };"}}
},
},
["note_template_member_class_here"]={
["err_module_odr_violation_objc_property"]={
[c]="in instantiation of member class A requested here",
[j]=ab,
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in instantiation of member class %q0 requested here",
[e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{property %4|property %4 with type %5|%select{no|\'required\'|\'optional\'}4 property control|property %4 with %select{default |}6\'%select{none|readonly|getter|assign|readwrite|retain|copy|nonatomic|setter|atomic|weak|strong|unsafe_unretained|nullability|null_resettable|class|direct}5\' attribute}3",
[b]=q,
[f]=n,
[a]="in instantiation of member class (.*?) requested here",
[g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:property (.*?)|property (.*?) with type (.*?)|(?:no|\'required\'|\'optional\') property control|property (.*?) with (?:default |)\'(?:none|readonly|getter|assign|readwrite|retain|copy|nonatomic|setter|atomic|weak|strong|unsafe_unretained|nullability|null_resettable|class|direct)\' attribute)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"8ea8fd48f2c7",1238015823,"Instantiation for member classes of class templates. Note that only"}
[b]={"dcb71b5e1d13",1657144706,"[ODRHash] Hash `ObjCPropertyDecl` and diagnose discovered mismatches."},
[k]={{P,390,"bool ODRDiagsEmitter::diagnoseSubMismatchObjCProperty(const NamedDecl *FirstObjCContainer, StringRef FirstModule, StringRef SecondModule, const ObjCPropertyDecl *FirstProp, const ObjCPropertyDecl *SecondProp) const {\n  auto DiagError = [FirstObjCContainer, FirstModule, FirstProp, this](SourceLocation Loc, ODRPropertyDifference DiffType) { return Diag(Loc, diag::err_module_odr_violation_objc_property) << FirstObjCContainer << FirstModule.empty() << FirstModule << FirstProp->getSourceRange() << DiffType; };"}}
},
},
["note_template_member_function_here"]={
["err_module_odr_violation_record"]={
[c]="in instantiation of member function A requested here",
[j]=ab,
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in instantiation of member function %q0 requested here",
[e]="%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|%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 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|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",
[b]=q,
[f]=n,
[a]="in instantiation of member function (.*?) requested here",
[g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:static assert with condition|static assert with message|static assert with (?:|no )message|(?:method (.*?)|constructor|destructor)|(?:method (.*?)|constructor|destructor) is (?:not deleted|deleted)|(?:method (.*?)|constructor|destructor) is (?:not defaulted|defaulted)|(?:method (.*?)|constructor|destructor) is (?:|pure )(?:not virtual|virtual)|(?:method (.*?)|constructor|destructor) is (?:not static|static)|(?:method (.*?)|constructor|destructor) is (?:not volatile|volatile)|(?:method (.*?)|constructor|destructor) is (?:not const|const)|(?:method (.*?)|constructor|destructor) is (?:not inline|inline)|(?:method (.*?)|constructor|destructor) with (.*?) parameter with(?:out|) a default argument|(?:method (.*?)|constructor|destructor) with (.*?) parameter with a default argument|(?:method (.*?)|constructor|destructor) with (?:no |)template arguments|(?:method (.*?)|constructor|destructor) with (.*?) template argument(.*?)|(?:method (.*?)|constructor|destructor) with (.*?) for (.*?) template argument|(?:method (.*?)|constructor|destructor) with (?:no body|body)|(?:method (.*?)|constructor|destructor) with body|friend (?:class|function)|friend (.*?)|friend function (.*?)|function template (.*?) with (.*?) template parameter(.*?)|function template (.*?) with (.*?) template parameter being a (?:type|non\\-type|template) template parameter|function template (.*?) with (.*?) template parameter (?:with no name|named (.*?))|function template (.*?) with (.*?) template parameter with (?:no |)default argument|function template (.*?) with (.*?) template parameter with default argument (.*?)|function template (.*?) with (.*?) template parameter with one type|function template (.*?) with (.*?) template parameter (?:not |)being a template parameter pack|)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"8567358cc9e0",1242666117,"When instantiating the definition of a member function of a class"}
[b]={wb,1643408541,zb},
[k]={{P,727,"bool ODRDiagsEmitter::diagnoseMismatch(const CXXRecordDecl *FirstRecord, const CXXRecordDecl *SecondRecord, const struct CXXRecordDecl::DefinitionData *SecondDD) const {\n  auto DiagError = [FirstRecord, &FirstModule, this](SourceLocation Loc, SourceRange Range, ODRCXXRecordDifference DiffType) { return Diag(Loc, diag::err_module_odr_violation_record) << FirstRecord << FirstModule.empty() << FirstModule << Range << DiffType; };"}}
},
},
["note_template_nontype_parm_different_type"]={
["err_module_odr_violation_referenced_protocols"]={
[c]="template non-type parameter has a different type A in template argument",
[j]=ab,
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="template non-type parameter has a different type %0 in template argument",
[e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{%4 referenced %plural{1:protocol|:protocols}4|%ordinal4 referenced protocol with name %5}3",
[b]=q,
[f]=n,
[a]="template non\\-type parameter has a different type (.*?) in template argument",
[g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:(.*?) referenced (?:protocol|protocols)|(.*?) referenced protocol with name (.*?))",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={db,1237025389,eb}
[b]={wb,1643408541,zb},
[k]={{P,294,"bool ODRDiagsEmitter::diagnoseSubMismatchProtocols(const ObjCProtocolList &FirstProtocols, const ObjCContainerDecl *FirstContainer, StringRef FirstModule, const ObjCProtocolList &SecondProtocols, const ObjCContainerDecl *SecondContainer, StringRef SecondModule) const {\n  auto DiagRefProtocolError = [FirstContainer, FirstModule, this](SourceLocation Loc, SourceRange Range, ODRReferencedProtocolDifference DiffType) { return Diag(Loc, diag::err_module_odr_violation_referenced_protocols) << FirstContainer << FirstModule.empty() << FirstModule << Range << DiffType; };"}}
},
},
["note_template_nontype_parm_prev_declaration"]={
["err_module_odr_violation_template_parameter"]={
[c]="previous non-type template parameter with type A is here",
[j]=ab,
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous non-type template parameter with type %0 is here",
[e]="%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 %5|template parameter with %select{no |}4default argument|template parameter with default argument}3",
[b]=q,
[f]=n,
[a]="previous non\\-type template parameter with type (.*?) is here",
[g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:unnamed template parameter|template parameter (.*?)|template parameter with (?:no |)default argument|template parameter with default argument)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={db,1237025389,eb}
[b]={"498117bf11d8",1503456239,"[ODRHash] Diagnose differing template parameters."},
[k]={{P,659,"bool ODRDiagsEmitter::diagnoseMismatch(const CXXRecordDecl *FirstRecord, const CXXRecordDecl *SecondRecord, const struct CXXRecordDecl::DefinitionData *SecondDD) const {\n  if (FirstTemplate && SecondTemplate) {\n    for (auto Pair : llvm::zip(FirstTemplateParams, SecondTemplateParams)) {\n      Diag(FirstDecl->getLocation(), diag::err_module_odr_violation_template_parameter) << FirstRecord << FirstModule.empty() << FirstModule << FirstDecl->getSourceRange() << ErrDiffType << hasFirstArg << FirstName;"}}
},
},
["note_template_nsdmi_here"]={
["err_module_odr_violation_typedef"]={
[c]="in instantiation of default member initializer A requested here",
[j]=ab,
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in instantiation of default member initializer %q0 requested here",
[e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{%select{typedef|type alias}4 name %5|%select{typedef|type alias}4 %5 with underlying type %6}3",
[b]=q,
[f]=n,
[a]="in instantiation of default member initializer (.*?) requested here",
[g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:(?:typedef|type alias) name (.*?)|(?:typedef|type alias) (.*?) with underlying type (.*?))",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"d60b82f93eee",1416267405,"Handle use of default member initializers before end of outermost class"}
[b]={wb,1643408541,zb},
[k]={{P,212,"bool ODRDiagsEmitter::diagnoseSubMismatchTypedef(const NamedDecl *FirstRecord, StringRef FirstModule, StringRef SecondModule, const TypedefNameDecl *FirstTD, const TypedefNameDecl *SecondTD, bool IsTypeAlias) const {\n  auto DiagError = [FirstRecord, FirstTD, FirstModule, this](ODRTypedefDifference DiffType) { return Diag(FirstTD->getLocation(), diag::err_module_odr_violation_typedef) << FirstRecord << FirstModule.empty() << FirstModule << FirstTD->getSourceRange() << DiffType; };"}}
},
},
["note_template_param_different_kind"]={
["err_module_odr_violation_variable"]={
[c]="template parameter has a different kind in template argument",
[j]=ab,
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="template parameter has a different kind in template argument",
[e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{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}3",
[b]=q,
[f]=n,
[a]="template parameter has a different kind in template argument",
[g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:data member with name (.*?)|data member (.*?) with type (.*?)|data member (.*?) with(?:out|) an initializer|data member (.*?) with an initializer|data member (.*?) (?:is constexpr|is not constexpr))",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={db,1237025389,eb}
[b]={wb,1643408541,zb},
[k]={{P,242,"bool ODRDiagsEmitter::diagnoseSubMismatchVar(const NamedDecl *FirstRecord, StringRef FirstModule, StringRef SecondModule, const VarDecl *FirstVD, const VarDecl *SecondVD) const {\n  auto DiagError = [FirstRecord, FirstVD, FirstModule, this](ODRVarDifference DiffType) { return Diag(FirstVD->getLocation(), diag::err_module_odr_violation_variable) << FirstRecord << FirstModule.empty() << FirstModule << FirstVD->getSourceRange() << DiffType; };"}}
},
},
["note_template_param_here"]={
["err_module_prebuilt"]={
[c]="template parameter is declared here",
[j]="error in loading module \'A\' from prebuilt module path",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="template parameter is declared here",
[e]="error in loading module \'%0\' from prebuilt module path",
[b]=q,
[f]=J,
[a]="template parameter is declared here",
[g]="error in loading module \'(.*?)\' from prebuilt module path",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={db,1237025389,eb}
[b]={"11f2a477721c",1471542135,"Module: add -fprebuilt-module-path to support loading prebuilt modules."},
[k]={{db,1530,"ModuleLoadResult CompilerInstance::findOrCompileModuleAndReadAST(StringRef ModuleName, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, bool IsInclusionDirective) {\n  case ASTReader::Success: {\n    getDiagnostics().Report(ModuleNameLoc, diag::err_module_prebuilt) << ModuleName;"}}
},
},
["note_template_param_list_different_arity"]={
["err_module_private_local"]={
[c]="... template parameters in template template argument",
[j]="... A cannot be declared __module_private__",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{too few|too many}0 template parameters in template template argument",
[e]="%select{local variable|parameter|typedef}0 %1 cannot be declared __module_private__",
[b]=q,
[f]=n,
[a]="(?:too few|too many) template parameters in template template argument",
[g]="(?:local variable|parameter|typedef) (.*?) cannot be declared __module_private__",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={db,1237025389,eb}
[b]={"41866816ce5c",1315852658,"Diagnose attempt to mark function-local declarations as __module_private__."},
[k]={{p,6948,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n  if (D.getDeclSpec().isModulePrivateSpecified()) {\n    if (IsVariableTemplateSpecialization)\n    else if (IsMemberSpecialization)\n    else if (NewVD->hasLocalStorage())\n      Diag(NewVD->getLocation(), diag::err_module_private_local) << 0 << NewVD << SourceRange(D.getDeclSpec().getModulePrivateSpecLoc()) << FixItHint::CreateRemoval(D.getDeclSpec().getModulePrivateSpecLoc());"},{p,12938,"/// ActOnParamDeclarator - Called from Parser::ParseFunctionDeclarator()\n/// to introduce parameters into function prototype scope.\nDecl *Sema::ActOnParamDeclarator(Scope *S, Declarator &D) {\n  if (D.getDeclSpec().isModulePrivateSpecified())\n    Diag(New->getLocation(), diag::err_module_private_local) << 1 << New << SourceRange(D.getDeclSpec().getModulePrivateSpecLoc()) << FixItHint::CreateRemoval(D.getDeclSpec().getModulePrivateSpecLoc());"},{p,14344,"TypedefDecl *Sema::ParseTypedefDecl(Scope *S, Declarator &D, QualType T, TypeSourceInfo *TInfo) {\n  if (D.getDeclSpec().isModulePrivateSpecified()) {\n    if (CurContext->isFunctionOrMethod())\n      Diag(NewTD->getLocation(), diag::err_module_private_local) << 2 << NewTD << SourceRange(D.getDeclSpec().getModulePrivateSpecLoc()) << FixItHint::CreateRemoval(D.getDeclSpec().getModulePrivateSpecLoc());"}}
},
},
["note_template_param_prev_default_arg"]={
["err_module_private_local_class"]={
[c]="previous default template argument defined here",
[j]="local ... cannot be declared __module_private__",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous default template argument defined here",
[e]="local %select{struct|interface|union|class|enum}0 cannot be declared __module_private__",
[b]=q,
[f]=n,
[a]="previous default template argument defined here",
[g]="local (?:struct|interface|union|class|enum) cannot be declared __module_private__",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={db,1237025389,eb}
[b]={"41866816ce5c",1315852658,"Diagnose attempt to mark function-local declarations as __module_private__."},
[k]={{p,4675,"/// ParsedFreeStandingDeclSpec - This method is invoked when a declspec with\n/// no declarator (e.g. \"struct foo;\") is parsed. It also accepts template\n/// parameters to cope with template friend declarations.\nDecl *Sema::ParsedFreeStandingDeclSpec(Scope *S, AccessSpecifier AS, DeclSpec &DS, const ParsedAttributesView &DeclAttrs, MultiTemplateParamsArg TemplateParams, bool IsExplicitInstantiation, RecordDecl *&AnonRecord) {\n  if (DS.isModulePrivateSpecified() && Tag && Tag->getDeclContext()->isFunctionOrMethod())\n    Diag(DS.getModulePrivateSpecLoc(), diag::err_module_private_local_class) << Tag->getTagKind() << FixItHint::CreateRemoval(DS.getModulePrivateSpecLoc());"}}
},
},
["note_template_param_prev_default_arg_in_other_module"]={
["err_module_private_specialization"]={
[c]="previous default template argument defined in module A",
[j]="... specialization cannot be declared __module_private__",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous default template argument defined in module %0",
[e]="%select{template|partial|member}0 specialization cannot be declared __module_private__",
[b]=q,
[f]=n,
[a]="previous default template argument defined in module (.*?)",
[g]="(?:template|partial|member) specialization cannot be declared __module_private__",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={N,1625925174,O}
[b]={"3c7cd6a0c448",1315601618,"Specializations cannot be module-hidden. Diagnose attempts to do so."},
[k]={{p,6944,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n  if (D.getDeclSpec().isModulePrivateSpecified()) {\n    if (IsVariableTemplateSpecialization)\n      Diag(NewVD->getLocation(), diag::err_module_private_specialization) << (IsPartialSpecialization ? 1 : 0) << FixItHint::CreateRemoval(D.getDeclSpec().getModulePrivateSpecLoc());"},{p,6946,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n  if (D.getDeclSpec().isModulePrivateSpecified()) {\n    if (IsVariableTemplateSpecialization)\n    else if (IsMemberSpecialization)\n      Diag(NewVD->getLocation(), diag::err_module_private_specialization) << 2 << FixItHint::CreateRemoval(D.getDeclSpec().getModulePrivateSpecLoc());"},{p,8754,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n  if (getLangOpts().CPlusPlus) {\n    // If __module_private__ was specified, mark the function accordingly.\n    if (D.getDeclSpec().isModulePrivateSpecified()) {\n      if (isFunctionTemplateSpecialization) {\n        Diag(ModulePrivateLoc, diag::err_module_private_specialization) << 0 << FixItHint::CreateRemoval(ModulePrivateLoc);"},{p,15396,"CreateNewDecl:\n  if (ModulePrivateLoc.isValid()) {\n    if (isMemberSpecialization)\n      Diag(New->getLocation(), diag::err_module_private_specialization) << 2 << FixItHint::CreateRemoval(ModulePrivateLoc);"},{K,7311,"DeclResult Sema::ActOnClassTemplateSpecialization(Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, SourceLocation ModulePrivateLoc, CXXScopeSpec &SS, TemplateIdAnnotation &TemplateId, const ParsedAttributesView &Attr, MultiTemplateParamsArg TemplateParameterLists, SkipBodyInfo *SkipBody) {\n  if (ModulePrivateLoc.isValid())\n    Diag(Specialization->getLocation(), diag::err_module_private_specialization) << (isPartialSpecialization ? 1 : 0) << FixItHint::CreateRemoval(ModulePrivateLoc);"}}
},
},
["note_template_parameter_pack_here"]={
["err_module_rebuild_finalized"]={
[c]="previous ... parameter... declared here",
[j]="cannot rebuild module \'A\' as it is already finalized",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="previous %select{template type|non-type template|template template}0 parameter%select{| pack}1 declared here",
[e]="cannot rebuild module \'%0\' as it is already finalized",
[b]=q,
[f]=J,
[a]="previous (?:template type|non\\-type template|template template) parameter(?:| pack) declared here",
[g]="cannot rebuild module \'(.*?)\' as it is already finalized",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"2e87ca218f5d",1275640472,"When checking for equality of template parameter lists, a template"}
[b]={"ff13189c5d0d",1624436334,"[RISCV] Unify the arch string parsing logic to to RISCVISAInfo."},
[k]={{db,948,"/// Compile a module file for the given module, using the options\n/// provided by the importing compiler instance. Returns true if the module\n/// was built without errors.\nstatic bool compileModuleImpl(\n  // Never compile a module that\'s already finalized - this would cause the\n  // existing module to be freed, causing crashes if it is later referenced\n  if (ImportingInstance.getModuleCache().isPCMFinal(ModuleFileName)) {\n    ImportingInstance.getDiagnostics().Report(ImportLoc, diag::err_module_rebuild_finalized) << ModuleName;"}}
},
},
["note_template_parameter_pack_non_pack"]={
["err_module_redeclaration"]={
[c]="... parameter... does not match ... parameter... in template argument",
[j]="translation unit contains multiple module declarations",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%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",
[e]="translation unit contains multiple module declarations",
[b]=q,
[f]=n,
[a]="(?:template type|non\\-type template|template template) parameter(?:| pack) does not match (?:template type|non\\-type template|template template) parameter(?: pack|) in template argument",
[g]="translation unit contains multiple module declarations",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"2e87ca218f5d",1275640472,"When checking for equality of template parameter lists, a template"}
[b]={"18057cb34c83",1507682216,"[Modules TS] Diagnose missing/duplicate module-declaration."},
[k]={{X,216,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n  // Only one module-declaration is permitted per source file.\n  if (isCurrentModulePurview()) {\n    Diag(ModuleLoc, diag::err_module_redeclaration);"}}
},
},
["note_template_prev_declaration"]={
["err_module_redefinition"]={
[c]="previous template ... is here",
[j]="redefinition of module \'A\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous template %select{declaration|template parameter}0 is here",
[e]="redefinition of module \'%0\'",
[b]=q,
[f]=n,
[a]="previous template (?:declaration|template parameter) is here",
[g]="redefinition of module \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={db,1237025389,eb}
[b]={"bbcc9f0462c1",1472170478,"C++ Modules TS: add frontend support for building pcm files from module"},
[k]={{X,278,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n  case ModuleDeclKind::PartitionInterface: {\n    // We can\'t have parsed or imported a definition of this module or parsed a\n    // module map defining it already.\n    if (auto *M = Map.findModule(ModuleName)) {\n      Diag(Path[0].second, diag::err_module_redefinition) << ModuleName;"}}
},
},
["note_template_recursion_depth"]={
["err_module_self_import"]={
[c]="use -ftemplate-depth=N to increase recursive template instantiation depth",
[j]="import of module \'A\' appears within same top-level module \'B\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use -ftemplate-depth=N to increase recursive template instantiation depth",
[e]="import of module \'%0\' appears within same top-level module \'%1\'",
[b]=q,
[f]=n,
[a]="use \\-ftemplate\\-depth\\=N to increase recursive template instantiation depth",
[g]="import of module \'(.*?)\' appears within same top\\-level module \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={db,1237025389,eb}
[b]={"527040e0c87a",1399267893,"Make module self-import an error"},
[k]={{X,506,"DeclResult Sema::ActOnModuleImport(SourceLocation StartLoc, SourceLocation ExportLoc, SourceLocation ImportLoc, Module *Mod, ModuleIdPath Path) {\n  // FIXME: we should support importing a submodule within a different submodule\n  // of the same top-level module. Until we do, make it an error rather than\n  // silently ignoring the import.\n  // FIXME: Should we warn on a redundant import of the current module?\n  if (Mod->isForBuilding(getLangOpts())) {\n    Diag(ImportLoc, getLangOpts().isCompilingModule() ? diag::err_module_self_import : diag::err_module_import_in_implementation) << Mod->getFullModuleName() << getLangOpts().CurrentModule;"}}
},
},
["note_template_requirement_instantiation_here"]={
["err_module_self_import_cxx20"]={
[c]="in instantiation of requirement here",
[j]="import of module \'A\' appears within its own ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in instantiation of requirement here",
[e]="import of module \'%0\' appears within its own %select{interface|implementation}1",
[b]=q,
[f]=n,
[a]="in instantiation of requirement here",
[g]="import of module \'(.*?)\' appears within its own (?:interface|implementation)",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"6d485ff455ea",1576172311,Md}
[b]={Cb,1620118562,Eb},
[k]={{X,474,"DeclResult Sema::ActOnModuleImport(SourceLocation StartLoc, SourceLocation ExportLoc, SourceLocation ImportLoc, ModuleIdPath Path, bool IsPartition) {\n  if (getLangOpts().CPlusPlusModules && isCurrentModulePurview() && getCurrentModule()->Name == ModuleName) {\n    Diag(ImportLoc, diag::err_module_self_import_cxx20) << ModuleName << !ModuleScopes.back().ModuleInterface;"}}
},
},
["note_template_requirement_params_instantiation_here"]={
["err_module_shadowed"]={
[c]="in instantiation of requirement parameters here",
[j]="import of shadowed module \'A\'",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="in instantiation of requirement parameters here",
[e]="import of shadowed module \'%0\'",
[b]=q,
[f]=J,
[a]="in instantiation of requirement parameters here",
[g]="import of shadowed module \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={N,1625925174,O}
[b]={"b6ec4a33fb2b",1515032260,"[Modules] Allow modules specified by -fmodule-map-file to shadow implicitly found ones"},
[k]={{rb,1762,"bool Preprocessor::checkModuleIsAvailable(const LangOptions &LangOpts, const TargetInfo &TargetInfo, DiagnosticsEngine &Diags, Module *M) {\n  if (MissingHeader.FileNameLoc.isValid()) {\n  } else if (ShadowingModule) {\n    Diags.Report(M->DefinitionLoc, diag::err_module_shadowed) << M->Name;"}}
},
},
["note_template_static_data_member_def_here"]={
["err_module_unable_to_hash_content"]={
[c]="in instantiation of static data member A requested here",
[j]="failed to hash content for \'A\' because memory buffer cannot be retrieved",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in instantiation of static data member %q0 requested here",
[e]="failed to hash content for \'%0\' because memory buffer cannot be retrieved",
[b]=q,
[f]=n,
[a]="in instantiation of static data member (.*?) requested here",
[g]="failed to hash content for \'(.*?)\' because memory buffer cannot be retrieved",
[g]=p,
[h]=a,
[e]=o,
[i]="AST Serialization Issue",
[i]={"a6ef8f0813d5",1248467683,"Template instantiation for static data members that are defined out-of-line."}
[b]={"2a1386c81de5",1571094123,"[Modules][PCH] Hash input files content"},
[k]={{"clang/lib/Serialization/ASTWriter.cpp",1454,"void ASTWriter::WriteInputFiles(SourceManager &SourceMgr, HeaderSearchOptions &HSOpts) {\n  for (unsigned I = 1, N = SourceMgr.local_sloc_entry_size(); I != N; ++I) {\n    if (PP->getHeaderSearchInfo().getHeaderSearchOpts().ValidateASTInputFilesContent) {\n      if (MemBuff)\n      else\n        PP->Diag(SourceLocation(), diag::err_module_unable_to_hash_content) << Entry.File.getName();"}}
},
},
["note_template_type_alias_instantiation_here"]={
["err_module_unavailable"]={
[c]="in instantiation of template type alias A requested here",
[j]="module \'A\' ... feature \'B\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in instantiation of template type alias %0 requested here",
[e]="module \'%0\' %select{is incompatible with|requires}1 feature \'%2\'",
[b]=q,
[f]=n,
[a]="in instantiation of template type alias (.*?) requested here",
[g]="module \'(.*?)\' (?:is incompatible with|requires) feature \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"3f1b5d077b7e",1304632627,"Implement support for C++0x alias templates."}
[b]={"1fb5c3a63a88",1325304344,"Implement support for module requirements, which indicate the language"},
[k]={{rb,1767,"bool Preprocessor::checkModuleIsAvailable(const LangOptions &LangOpts, const TargetInfo &TargetInfo, DiagnosticsEngine &Diags, Module *M) {\n  if (MissingHeader.FileNameLoc.isValid()) {\n  } else if (ShadowingModule) {\n  } else {\n    Diags.Report(M->DefinitionLoc, diag::err_module_unavailable) << M->getFullModuleName() << Requirement.second << Requirement.first;"}}
},
},
["note_template_unnamed_type_here"]={
["err_module_unimported_use"]={
[c]="unnamed type used in template argument was declared here",
[j]="... of A must be imported from module \'B\' before it is required",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="unnamed type used in template argument was declared here",
[e]="%select{declaration|definition|default argument|explicit specialization|partial specialization}0 of %1 must be imported from module \'%2\' before it is required",
[b]=q,
[f]=n,
[a]="unnamed type used in template argument was declared here",
[g]="(?:declaration|definition|default argument|explicit specialization|partial specialization) of (.*?) must be imported from module \'(.*?)\' before it is required",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={db,1237025389,eb}
[b]={"35c1df5cb6da",1434572192,"[modules] Improve diagnostic for a template-id that\'s invalid because a default"},
[k]={{"clang/lib/Sema/SemaLookup.cpp",5206,"void Sema::diagnoseMissingImport(SourceLocation UseLoc, const NamedDecl *Decl, SourceLocation DeclLoc, ArrayRef<Module *> Modules, MissingImportKind MIK, bool Recover) {\n  if (Modules.size() > 1) {\n  } else {\n    Diag(UseLoc, diag::err_module_unimported_use) << (int)MIK << Decl << Modules[0]->getFullModuleName();"}}
},
},
["note_template_variable_def_here"]={
["err_module_unimported_use_header"]={
[c]="in instantiation of variable template specialization A requested here",
[j]="...; ...A must be ... before it is used",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in instantiation of variable template specialization %q0 requested here",
[e]="%select{missing \'#include\'|missing \'#include %3\'}2; %select{||default argument of |explicit specialization of |partial specialization of }0%1 must be %select{declared|defined|defined|declared|declared}0 before it is used",
[b]=q,
[f]=n,
[a]="in instantiation of variable template specialization (.*?) requested here",
[g]="(?:missing \'\\#include\'|missing \'\\#include (.*?)\'); (?:||default argument of |explicit specialization of |partial specialization of )(.*?) must be (?:declared|defined|defined|declared|declared) before it is used",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"dbd65779649e",1376511302,"Bug fix: note diagnosis on expression narrowing should say \"variable template\" instead of \"static da..."}
[b]={"4eb8393c636b",1461794225,"[modules] When diagnosing a missing module import, suggest adding a #include if"},
[k]={{"clang/lib/Sema/SemaLookup.cpp",5181,"void Sema::diagnoseMissingImport(SourceLocation UseLoc, const NamedDecl *Decl, SourceLocation DeclLoc, ArrayRef<Module *> Modules, MissingImportKind MIK, bool Recover) {\n  // If we have a #include we should suggest, or if all definition locations\n  // were in global module fragments, don\'t suggest an import.\n  if (!HeaderName.empty() || UniqueModules.empty()) {\n    Diag(UseLoc, diag::err_module_unimported_use_header) << (int)MIK << Decl << !HeaderName.empty() << HeaderName;"}}
},
},
["note_thread_warning_in_fun"]={
["err_module_unimported_use_multiple"]={
[c]="thread warning in function A",
[j]="... of A must be imported from one of the following modules before it is required:B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="thread warning in function %0",
[e]="%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",
[b]=q,
[f]=n,
[a]="thread warning in function (.*?)",
[g]="(?:declaration|definition|default argument|explicit specialization|partial specialization) of (.*?) must be imported from one of the following modules before it is required\\:(.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=D,
[i]={"eb0ea5f40a48",1408052415,"Thread safety analysis: add -Wthread-safety-verbose flag, which adds additional notes that are helpf..."}
[b]={"35c1df5cb6da",1434572192,"[modules] Improve diagnostic for a template-id that\'s invalid because a default"},
[k]={{"clang/lib/Sema/SemaLookup.cpp",5203,"void Sema::diagnoseMissingImport(SourceLocation UseLoc, const NamedDecl *Decl, SourceLocation DeclLoc, ArrayRef<Module *> Modules, MissingImportKind MIK, bool Recover) {\n  if (Modules.size() > 1) {\n    Diag(UseLoc, diag::err_module_unimported_use_multiple) << (int)MIK << Decl << ModuleList;"}}
},
},
["note_throw_in_dtor"]={
["err_modules_embed_file_not_found"]={
[c]="... has a ... exception specification",
[j]="file \'A\' specified by \'-fmodules-embed-file=\' not found",
[d]=s,
[c]=I,
[f]=r,
[d]=H,
[h]="%select{destructor|deallocator}0 has a %select{non-throwing|implicit non-throwing}1 exception specification",
[e]="file \'%0\' specified by \'-fmodules-embed-file=\' not found",
[b]=q,
[f]=J,
[a]="(?:destructor|deallocator) has a (?:non\\-throwing|implicit non\\-throwing) exception specification",
[g]="file \'(.*?)\' specified by \'\\-fmodules\\-embed\\-file\\=\' not found",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"89fe9c269a22",1498249339,"Emit warning when throw exception in destruct or dealloc functions which has a "}
[b]={"fb1e7f7d1aca",1439528578,"[modules] Add an experimental -cc1 feature to embed the contents of an input"},
[k]={{qb,651,"bool FrontendAction::BeginSourceFile(CompilerInstance &CI, const FrontendInputFile &RealInput) {\n  // Set up embedding for any specified files. Do this before we load any\n  // source files, including the primary module map for the compilation.\n  for (const auto &F : CI.getFrontendOpts().ModulesEmbedFiles) {\n    if (auto FE = CI.getFileManager().getFile(F, /*openFile*/ true))\n    else\n      CI.getDiagnostics().Report(diag::err_modules_embed_file_not_found) << F;"}}
},
},
["note_throw_in_function"]={
["err_ms___leave_not_in___try"]={
[c]="function declared non-throwing here",
[j]="\'__leave\' statement not in __try block",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="function declared non-throwing here",
[e]="\'__leave\' statement not in __try block",
[b]=q,
[f]=n,
[a]="function declared non\\-throwing here",
[g]="\'__leave\' statement not in __try block",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"89fe9c269a22",1498249339,"Emit warning when throw exception in destruct or dealloc functions which has a "}
[b]={"eb61d4d7c2fd",1404687199,"Sema: Check that __leave is contained in a __try block."},
[k]={{E,3996,"StmtResult Sema::ActOnSEHLeaveStmt(SourceLocation Loc, Scope *CurScope) {\n  if (!SEHTryParent)\n    return StmtError(Diag(Loc, diag::err_ms___leave_not_in___try));"}}
},
},
["note_throw_underaligned_obj"]={
["err_ms_asm_bitfield_unsupported"]={
[c]="required alignment of type A (B bytes) is larger than the supported alignment of C++ exception objects on this target (C bytes)",
[j]="an inline asm block cannot have an operand which is a bit-field",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="required alignment of type %0 (%1 bytes) is larger than the supported alignment of C++ exception objects on this target (%2 bytes)",
[e]="an inline asm block cannot have an operand which is a bit-field",
[b]=q,
[f]=n,
[a]="required alignment of type (.*?) \\((.*?) bytes\\) is larger than the supported alignment of C\\+\\+ exception objects on this target \\((.*?) bytes\\)",
[g]="an inline asm block cannot have an operand which is a bit\\-field",
[g]=p,
[h]=a,
[e]=o,
[i]=sb,
[i]={"c39a243da651",1557454597,"Assume `__cxa_allocate_exception` returns an under-aligned memory on"}
[b]={"0982db188b66",1665177226,"[Clang] reject bit-fields as instruction operands in Microsoft style inline asm blocks."},
[k]={{"clang/lib/Sema/SemaStmtAsm.cpp",814,"StmtResult Sema::ActOnMSAsmStmt(SourceLocation AsmLoc, SourceLocation LBraceLoc, ArrayRef<Token> AsmToks, StringRef AsmString, unsigned NumOutputs, unsigned NumInputs, ArrayRef<StringRef> Constraints, ArrayRef<StringRef> Clobbers, ArrayRef<Expr *> Exprs, SourceLocation EndLoc) {\n  for (uint64_t I = 0; I < NumOutputs + NumInputs; ++I) {\n    if (E->getType()->isBitIntType()) {\n    } else if (E->refersToBitField()) {\n      Diag(E->getBeginLoc(), diag::err_ms_asm_bitfield_unsupported) << E->getSourceRange();"}}
},
},
["note_total_sloc_usage"]={
["err_ms_attributes_not_enabled"]={
[c]="AB in local locations, BB in locations loaded from AST files, for a total of CB (D% of available space)",
[j]="\'__declspec\' attributes are not enabled; use \'-fdeclspec\' or \'-fms-extensions\' to enable support for __declspec attributes",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0B in local locations, %1B in locations loaded from AST files, for a total of %2B (%3%% of available space)",
[e]="\'__declspec\' attributes are not enabled; use \'-fdeclspec\' or \'-fms-extensions\' to enable support for __declspec attributes",
[b]=q,
[f]=n,
[a]="(.*?)B in local locations, (.*?)B in locations loaded from AST files, for a total of (.*?)B \\((.*?)% of available space\\)",
[g]="\'__declspec\' attributes are not enabled; use \'\\-fdeclspec\' or \'\\-fms\\-extensions\' to enable support for __declspec attributes",
[g]=p,
[h]=a,
[e]=p,
[i]=s,
[i]={"9e52db182794",1668037554,"When we run out of source locations, try to produce useful information"}
[b]={"52d0aaac139a",1487112440,"Improve diagnostic reporting when using __declspec without enabling __declspec as a keyword."},
[k]={{C,3304,"/// ParseDeclarationSpecifiers\n///      declaration-specifiers: [C99 6.7]\n///        storage-class-specifier declaration-specifiers[opt]\n///        type-specifier declaration-specifiers[opt]\n/// [C99]  function-specifier declaration-specifiers[opt]\n/// [C11]  alignment-specifier declaration-specifiers[opt]\n/// [GNU]  attributes declaration-specifiers[opt]\n/// [Clang] \'__module_private__\' declaration-specifiers[opt]\n/// [ObjC1] \'__kindof\' declaration-specifiers[opt]\n///\n///      storage-class-specifier: [C99 6.7.1]\n///        \'typedef\'\n///        \'extern\'\n///        \'static\'\n///        \'auto\'\n///        \'register\'\n/// [C++]  \'mutable\'\n/// [C++11] \'thread_local\'\n/// [C11]  \'_Thread_local\'\n/// [GNU]  \'__thread\'\n///      function-specifier: [C99 6.7.4]\n/// [C99]  \'inline\'\n/// [C++]  \'virtual\'\n/// [C++]  \'explicit\'\n/// [OpenCL] \'__kernel\'\n///      \'friend\': [C++ dcl.friend]\n///      \'constexpr\': [C++0x dcl.constexpr]\nvoid Parser::ParseDeclarationSpecifiers(DeclSpec &DS, const ParsedTemplateInfo &TemplateInfo, AccessSpecifier AS, DeclSpecContext DSContext, LateParsedAttrList *LateAttrs, ImplicitTypenameContext AllowImplicitTypename) {\n  while (true) {\n    ParseIdentifier : {\n      // If the token is an identifier named \"__declspec\" and Microsoft\n      // extensions are not enabled, it is likely that there will be cascading\n      // parse errors if this really is a __declspec attribute. Attempt to\n      // recognize that scenario and recover gracefully.\n      if (!getLangOpts().DeclSpecKeyword && Tok.is(tok::identifier) && Tok.getIdentifierInfo()->getName().equals(\"__declspec\")) {\n        Diag(Loc, diag::err_ms_attributes_not_enabled);"}}
},
},
["note_transparent_union_first_field_size_align"]={
["err_ms_declspec_type"]={
[c]="... of first field is A bits",
[j]="__declspec attributes must be an identifier or string literal",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{alignment|size}0 of first field is %1 bits",
[e]="__declspec attributes must be an identifier or string literal",
[b]=q,
[f]=n,
[a]="(?:alignment|size) of first field is (.*?) bits",
[g]="__declspec attributes must be an identifier or string literal",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"0cfbdab0cf8a",1241043376,"Implement semantic analysis for transparent unions. This is largely"}
[b]={"38c9ad9e725c",1340113766,"Improves parsing and semantic analysis for MS __declspec attributes. This includes support for the ..."},
[k]={{C,707,"/// [MS] decl-specifier:\n///            __declspec ( extended-decl-modifier-seq )\n///\n/// [MS] extended-decl-modifier-seq:\n///            extended-decl-modifier[opt]\n///            extended-decl-modifier extended-decl-modifier-seq\nvoid Parser::ParseMicrosoftDeclSpecs(ParsedAttributes &Attrs) {\n  while (Tok.is(tok::kw___declspec)) {\n    // An empty declspec is perfectly legal and should not warn.  Additionally,\n    // you can specify multiple attributes per declspec.\n    while (Tok.isNot(tok::r_paren)) {\n      if (!IsString && Tok.getKind() != tok::identifier && Tok.getKind() != tok::kw_restrict) {\n        Diag(Tok, diag::err_ms_declspec_type);"}}
},
},
["note_type_being_defined"]={
["err_ms_property_duplicate_accessor"]={
[c]="definition of A is not complete until the closing \'}\'",
[j]="property declaration specifies \'A\' accessor twice",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="definition of %0 is not complete until the closing \'}\'",
[e]="property declaration specifies \'%0\' accessor twice",
[b]=q,
[f]=n,
[a]="definition of (.*?) is not complete until the closing \'\\}\'",
[g]="property declaration specifies \'(.*?)\' accessor twice",
[g]=p,
[h]=a,
[e]=p,
[i]=s,
[i]={M,1236199783,L}
[b]={nb,1366097310,ob},
[k]={{C,634,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n  if (AttrName->getName() == \"property\") {\n    // Parse the accessor specifications.\n    while (true) {\n      if (Kind == AK_Invalid) {\n      } else if (AccessorNames[Kind] != nullptr) {\n        Diag(KindLoc, diag::err_ms_property_duplicate_accessor) << KindStr;"}}
},
},
["note_type_incomplete"]={
["err_ms_property_expected_accessor_name"]={
[c]="A is incomplete",
[j]="expected name of accessor method",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 is incomplete",
[e]="expected name of accessor method",
[b]=q,
[f]=n,
[a]="(.*?) is incomplete",
[g]="expected name of accessor method",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"ffa7dc379f2e",1422480686,"PR 17456"}
[b]={nb,1366097310,ob},
[k]={{C,626,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n  if (AttrName->getName() == \"property\") {\n    // Parse the accessor specifications.\n    while (true) {\n      // Expect the method name.\n      if (!Tok.is(tok::identifier)) {\n        Diag(Tok.getLocation(), diag::err_ms_property_expected_accessor_name);"}}
},
},
["note_type_requirement_substitution_error"]={
["err_ms_property_expected_comma_or_rparen"]={
[c]="... \'A\' would be invalid: B",
[j]="expected \',\' or \')\' at end of property accessor list",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{and|because}0 \'%1\' would be invalid: %2",
[e]="expected \',\' or \')\' at end of property accessor list",
[b]=q,
[f]=n,
[a]="(?:and|because) \'(.*?)\' would be invalid\\: (.*?)",
[g]="expected \',\' or \'\\)\' at end of property accessor list",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"6d485ff455ea",1576172311,Md}
[b]={nb,1366097310,ob},
[k]={{C,649,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n  if (AttrName->getName() == \"property\") {\n    next_property_accessor:\n      Diag(Tok.getLocation(), diag::err_ms_property_expected_comma_or_rparen);"}}
},
},
["note_type_requirement_unknown_substitution_error"]={
["err_ms_property_expected_equal"]={
[c]="... \'A\' would be invalid",
[j]="expected \'=\' after \'A\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{and|because}0 \'%1\' would be invalid",
[e]="expected \'=\' after \'%0\'",
[b]=q,
[f]=n,
[a]="(?:and|because) \'(.*?)\' would be invalid",
[g]="expected \'\\=\' after \'(.*?)\'",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"6d485ff455ea",1576172311,Md}
[b]={nb,1366097310,ob},
[k]={{C,620,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n  if (AttrName->getName() == \"property\") {\n    // Parse the accessor specifications.\n    while (true) {\n      // Consume the \'=\'.\n      if (!TryConsumeToken(tok::equal)) {\n        Diag(Tok.getLocation(), diag::err_ms_property_expected_equal) << KindStr;"}}
},
},
["note_typecheck_assign_const"]={
["err_ms_property_has_set_accessor"]={
[c]="...",
[j]="putter for property must be specified as \'put\', not \'set\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%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",
[e]="putter for property must be specified as \'put\', not \'set\'",
[b]=q,
[f]=n,
[a]="(?:function (.*?) which returns const\\-qualified type (.*?) declared here|variable (.*?) declared const here|(?:non\\-|)static data member (.*?) declared const here|member function (.*?) is declared const here|(?:|nested )data member (.*?) declared const here)",
[g]="putter for property must be specified as \'put\', not \'set\'",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"af7d76c7204c",1428717193,"Improve the error message for assigning to read-only variables."}
[b]={nb,1366097310,ob},
[k]={{C,593,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n  if (AttrName->getName() == \"property\") {\n    // Parse the accessor specifications.\n    while (true) {\n      if (KindStr == \"get\") {\n      } else if (KindStr == \"put\") {\n      } else if (KindStr == \"set\") {\n        Diag(KindLoc, diag::err_ms_property_has_set_accessor) << FixItHint::CreateReplacement(KindLoc, \"put\");"}}
},
},
["note_typecheck_invalid_operands_converted"]={
["err_ms_property_initializer"]={
[c]="... operand was implicitly converted to type A",
[j]="property declaration cannot have a default member initializer",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{first|second}0 operand was implicitly converted to type %1",
[e]="property declaration cannot have a default member initializer",
[b]=q,
[f]=n,
[a]="(?:first|second) operand was implicitly converted to type (.*?)",
[g]="property declaration cannot have a default member initializer",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"1ef7554efd1a",1530131434,"DR1687: When overload resolution selects a built-in operator, implicit"}
[b]={"87ff66ccc750",1418470456,"Parse: MS property members cannot have an in-class initializer"},
[k]={{R,2806,"/// ParseCXXMemberInitializer - Parse the brace-or-equal-initializer.\n/// Also detect and reject any attempted defaulted/deleted function definition.\n/// The location of the \'=\', if any, will be placed in EqualLoc.\n///\n/// This does not check for a pure-specifier; that\'s handled elsewhere.\n///\n///  brace-or-equal-initializer:\n///    \'=\' initializer-expression\n///    braced-init-list\n///\n///  initializer-clause:\n///    assignment-expression\n///    braced-init-list\n///\n///  defaulted/deleted function-definition:\n///    \'=\' \'default\'\n///    \'=\' \'delete\'\n///\n/// Prior to C++0x, the assignment-expression in an initializer-clause must\n/// be a constant-expression.\nExprResult Parser::ParseCXXMemberInitializer(Decl *D, bool IsFunction, SourceLocation &EqualLoc) {\n  if (const auto *PD = dyn_cast_or_null<MSPropertyDecl>(D)) {\n    Diag(Tok, diag::err_ms_property_initializer) << PD;"}}
},
},
["note_typecheck_member_reference_suggestion"]={
["err_ms_property_missing_accessor_kind"]={
[c]="did you mean to use \'.\' instead?",
[j]="missing \'get=\' or \'put=\'",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="did you mean to use \'.\' instead?",
[e]="missing \'get=\' or \'put=\'",
[b]=q,
[f]=n,
[a]="did you mean to use \'\\.\' instead\\?",
[g]="missing \'get\\=\' or \'put\\=\'",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"bad7fb09b2d1",1373918094,"Move the \"->\" to \".\" fixit from r186128 into a separate note since"}
[b]={nb,1366097310,ob},
[k]={{C,599,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n  if (AttrName->getName() == \"property\") {\n    // Parse the accessor specifications.\n    while (true) {\n      if (KindStr == \"get\") {\n      } else if (KindStr == \"put\") {\n      } else if (KindStr == \"set\") {\n      } else if (NextToken().is(tok::comma) || NextToken().is(tok::r_paren)) {\n        Diag(KindLoc, diag::err_ms_property_missing_accessor_kind);"}}
},
},
["note_typedef_for_linkage_here"]={
["err_ms_property_no_getter_or_putter"]={
[c]="type is given name A for linkage purposes by this ... declaration",
[j]="property does not specify a getter or a putter",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="type is given name %0 for linkage purposes by this %select{typedef|alias}1 declaration",
[e]="property does not specify a getter or a putter",
[b]=q,
[f]=n,
[a]="type is given name (.*?) for linkage purposes by this (?:typedef|alias) declaration",
[g]="property does not specify a getter or a putter",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={Pb,1576809732,Qb}
[b]={nb,1366097310,ob},
[k]={{C,575,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n  if (AttrName->getName() == \"property\") {\n    // Parse the accessor specifications.\n    while (true) {\n      // Stop if this doesn\'t look like an accessor spec.\n      if (!Tok.is(tok::identifier)) {\n        // If the user wrote a completely empty list, use a special diagnostic.\n        if (Tok.is(tok::r_paren) && !HasInvalidAccessor && AccessorNames[AK_Put] == nullptr && AccessorNames[AK_Get] == nullptr) {\n          Diag(AttrNameLoc, diag::err_ms_property_no_getter_or_putter);"}}
},
},
["note_typename_member_refers_here"]={
["err_ms_property_unknown_accessor"]={
[c]="referenced member A is declared here",
[j]="expected \'get\' or \'put\' in property declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="referenced member %0 is declared here",
[e]="expected \'get\' or \'put\' in property declaration",
[b]=q,
[f]=n,
[a]="referenced member (.*?) is declared here",
[g]="expected \'get\' or \'put\' in property declaration",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"6d485ff455ea",1576172311,Md}
[b]={nb,1366097310,ob},
[k]={{C,579,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n  if (AttrName->getName() == \"property\") {\n    // Parse the accessor specifications.\n    while (true) {\n      // Stop if this doesn\'t look like an accessor spec.\n      if (!Tok.is(tok::identifier)) {\n        Diag(Tok.getLocation(), diag::err_ms_property_unknown_accessor);"},{C,606,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n  if (AttrName->getName() == \"property\") {\n    // Parse the accessor specifications.\n    while (true) {\n      if (KindStr == \"get\") {\n      } else if (KindStr == \"put\") {\n      } else if (KindStr == \"set\") {\n      } else if (NextToken().is(tok::comma) || NextToken().is(tok::r_paren)) {\n      } else {\n        Diag(KindLoc, diag::err_ms_property_unknown_accessor);"}}
},
},
["note_typename_refers_here"]={
["err_ms_va_start_used_in_sysv_function"]={
[c]="referenced A is declared here",
[j]="\'__builtin_ms_va_start\' used in System V ABI function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="referenced %0 is declared here",
[e]="\'__builtin_ms_va_start\' used in System V ABI function",
[b]=q,
[f]=n,
[a]="referenced (.*?) is declared here",
[g]="\'__builtin_ms_va_start\' used in System V ABI function",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"333489bba35d",1238195448,"Initial implementation of parsing, semantic analysis, and template"}
[b]={"c7d5c94f78c7",1442523333,"Support __builtin_ms_va_list."},
[k]={{y,7562,"/// Check that the user is calling the appropriate va_start builtin for the\n/// target and calling convention.\nstatic bool checkVAStartABI(Sema &S, unsigned BuiltinID, Expr *Fn) {\n  if (IsX64 || IsAArch64) {\n    if (IsMSVAStart) {\n      // Don\'t allow this in System V ABI functions.\n      if (CC == CC_X86_64SysV || (!IsWindows && CC != CC_Win64))\n        return S.Diag(Fn->getBeginLoc(), diag::err_ms_va_start_used_in_sysv_function);"}}
},
},
["note_ucn_four_not_eight"]={
["err_msasm_unable_to_create_target"]={
[c]="did you mean to use \'\\u\'?",
[j]="MS-style inline assembly is not available: A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="did you mean to use \'\\u\'?",
[e]="MS-style inline assembly is not available: %0",
[b]=q,
[f]=n,
[a]="did you mean to use \'\\\\u\'\\?",
[g]="MS\\-style inline assembly is not available\\: (.*?)",
[g]=p,
[h]=a,
[e]=C,
[i]=sb,
[i]={"62db5066e91e",1359060652,"Add a fixit for \\U1234 -> \\u1234."}
[b]={"45cf31f7d390",1383143368,"Recover instead of crashing on MS assembly when no target is loaded"},
[k]={{Db,491,"/// ParseMicrosoftAsmStatement. When -fms-extensions/-fasm-blocks is enabled,\n/// this routine is called to collect the tokens for an MS asm statement.\n///\n/// [MS]  ms-asm-statement:\n///        ms-asm-block\n///        ms-asm-block ms-asm-statement\n///\n/// [MS]  ms-asm-block:\n///        \'__asm\' ms-asm-line \'\\n\'\n///        \'__asm\' \'{\' ms-asm-instruction-block[opt] \'}\' \';\'[opt]\n///\n/// [MS]  ms-asm-instruction-block\n///        ms-asm-line\n///        ms-asm-line \'\\n\' ms-asm-instruction-block\n///\nStmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) {\n  if (!TheTriple.isX86()) {\n  } else {\n    if (!TheTarget)\n      Diag(AsmLoc, diag::err_msasm_unable_to_create_target) << Error;"},{Db,517,"/// ParseMicrosoftAsmStatement. When -fms-extensions/-fasm-blocks is enabled,\n/// this routine is called to collect the tokens for an MS asm statement.\n///\n/// [MS]  ms-asm-statement:\n///        ms-asm-block\n///        ms-asm-block ms-asm-statement\n///\n/// [MS]  ms-asm-block:\n///        \'__asm\' ms-asm-line \'\\n\'\n///        \'__asm\' \'{\' ms-asm-instruction-block[opt] \'}\' \';\'[opt]\n///\n/// [MS] ms-asm-instruction-block\n///        ms-asm-line\n///        ms-asm-line \'\\n\' ms-asm-instruction-block\n///\nStmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) {\n  if (!MRI) {\n    Diag(AsmLoc, diag::err_msasm_unable_to_create_target) << \"target MC unavailable\";"},{Db,529,"/// ParseMicrosoftAsmStatement. When -fms-extensions/-fasm-blocks is enabled,\n/// this routine is called to collect the tokens for an MS asm statement.\n///\n/// [MS]  ms-asm-statement:\n///        ms-asm-block\n///        ms-asm-block ms-asm-statement\n///\n/// [MS]  ms-asm-block:\n///        \'__asm\' ms-asm-line \'\\n\'\n///        \'__asm\' \'{\' ms-asm-instruction-block[opt] \'}\' \';\'[opt]\n///\n/// [MS] ms-asm-instruction-block\n///        ms-asm-line\n///        ms-asm-line \'\\n\' ms-asm-instruction-block\n///\nStmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) {\n  if (!MAI || !MII || !STI) {\n    Diag(AsmLoc, diag::err_msasm_unable_to_create_target) << \"target MC unavailable\";"},{Db,549,"/// ParseMicrosoftAsmStatement. When -fms-extensions/-fasm-blocks is enabled,\n/// this routine is called to collect the tokens for an MS asm statement.\n///\n/// [MS]  ms-asm-statement:\n///        ms-asm-block\n///        ms-asm-block ms-asm-statement\n///\n/// [MS]  ms-asm-block:\n///        \'__asm\' ms-asm-line \'\\n\'\n///        \'__asm\' \'{\' ms-asm-instruction-block[opt] \'}\' \';\'[opt]\n///\n/// [MS]  ms-asm-instruction-block\n///        ms-asm-line\n///        ms-asm-line \'\\n\' ms-asm-instruction-block\n///\nStmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) {\n  // Target AsmParser may not be linked in clang-based tools.\n  if (!TargetParser) {\n    Diag(AsmLoc, diag::err_msasm_unable_to_create_target) << \"target ASM parser unavailable\";"}}
},
},
["note_unguarded_available_silence"]={
["err_msasm_unsupported_arch"]={
[c]="enclose A in ... check to silence this warning",
[j]="unsupported architecture \'A\' for MS-style inline assembly",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="enclose %0 in %select{an @available|a __builtin_available}1 check to silence this warning",
[e]="unsupported architecture \'%0\' for MS-style inline assembly",
[b]=q,
[f]=n,
[a]="enclose (.*?) in (?:an @available|a __builtin_available) check to silence this warning",
[g]="unsupported architecture \'(.*?)\' for MS\\-style inline assembly",
[g]=p,
[h]=a,
[e]=o,
[i]=sb,
[i]={"5cd57177a51a",1471369451,"[ObjC] Warn on unguarded use of partial declaration"}
[b]={"282d675b2878",1359059074,"[ms-inline asm] Add an error when trying to compile MS-style inline assembly"},
[k]={{Db,486,"/// ParseMicrosoftAsmStatement. When -fms-extensions/-fasm-blocks is enabled,\n/// this routine is called to collect the tokens for an MS asm statement.\n///\n/// [MS]  ms-asm-statement:\n///        ms-asm-block\n///        ms-asm-block ms-asm-statement\n///\n/// [MS]  ms-asm-block:\n///        \'__asm\' ms-asm-line \'\\n\'\n///        \'__asm\' \'{\' ms-asm-instruction-block[opt] \'}\' \';\'[opt]\n///\n/// [MS]  ms-asm-instruction-block\n///        ms-asm-line\n///        ms-asm-line \'\\n\' ms-asm-instruction-block\n///\nStmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) {\n  if (!TheTriple.isX86()) {\n    Diag(AsmLoc, diag::err_msasm_unsupported_arch) << TheTriple.getArchName();"}}
},
},
["note_unimplemented_constexpr_lambda_feature_ast"]={
["err_msvc_annotation_wide_str"]={
[c]="unimplemented constexpr lambda feature: A (coming soon!)",
[j]="arguments to __annotation must be wide string constants",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="unimplemented constexpr lambda feature: %0 (coming soon!)",
[e]="arguments to __annotation must be wide string constants",
[b]=q,
[f]=n,
[a]="unimplemented constexpr lambda feature\\: (.*?) \\(coming soon\\!\\)",
[g]="arguments to __annotation must be wide string constants",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"a734ab980865",1459008697,"[Cxx1z-constexpr-lambda-P0170R1]  Support parsing of constexpr specifier (and its inference) on lamb..."}
[b]={"30701edf761c",1504643255,"[ms] Implement the __annotation intrinsic"},
[k]={{y,202,"static bool SemaBuiltinMSVCAnnotation(Sema &S, CallExpr *TheCall) {\n  // All arguments should be wide string literals.\n  for (Expr *Arg : TheCall->arguments()) {\n    if (!Literal || !Literal->isWide()) {\n      S.Diag(Arg->getBeginLoc(), diag::err_msvc_annotation_wide_str) << Arg->getSourceRange();"}}
},
},
["note_uninit_fixit_remove_cond"]={
["err_mt_message"]={
[c]="remove the ... is always ...",
[j]="[rewriter] A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="remove the %select{\'%1\' if its condition|condition if it}0 is always %select{false|true}2",
[e]="[rewriter] %0",
[b]=q,
[f]=n,
[a]="remove the (?:\'(.*?)\' if its condition|condition if it) is always (?:false|true)",
[g]="\\[rewriter\\] (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"1bb8edb8acc0",1338013246,"In response to some discussions on IRC, tweak the wording of the new"}
[b]={"42aa21222d37",1390712852,"ARCMigrate: Introduce proper diagnostics for TransformActions"},
[k]={{"clang/lib/ARCMigrate/TransformActions.cpp",574,"void TransformActions::reportError(StringRef message, SourceLocation loc, SourceRange range) { report(loc, diag::err_mt_message, range) << message; }"}}
},
},
["note_uninit_in_this_constructor"]={
["err_multichar_character_literal"]={
[c]="during field initialization in ... constructor",
[j]="... character literals may not contain multiple characters",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="during field initialization in %select{this|the implicit default}0 constructor",
[e]="%select{wide|Unicode}0 character literals may not contain multiple characters",
[b]=q,
[f]=n,
[a]="during field initialization in (?:this|the implicit default) constructor",
[g]="(?:wide|Unicode) character literals may not contain multiple characters",
[g]=p,
[h]=a,
[e]=o,
[i]=t,
[i]={"406e65c8d175",1379646186,"Modify the uninitialized field visitor to detect uninitialized use across the"}
[b]={M,1625925174,N},
[k]={{W,1624,"/// \\verbatim\n///      user-defined-character-literal: [C++11 lex.ext]\n///        character-literal ud-suffix\n///      ud-suffix:\n///        identifier\n///      character-literal: [C++11 lex.ccon]\n///        \' c-char-sequence \'\n///        u\' c-char-sequence \'\n///        U\' c-char-sequence \'\n///        L\' c-char-sequence \'\n///        u8\' c-char-sequence \' [C++1z lex.ccon]\n///      c-char-sequence:\n///        c-char\n///        c-char-sequence c-char\n///      c-char:\n///        any member of the source character set except the single-quote \',\n///          backslash \\, or new-line character\n///        escape-sequence\n///        universal-character-name\n///      escape-sequence:\n///        simple-escape-sequence\n///        octal-escape-sequence\n///        hexadecimal-escape-sequence\n///      simple-escape-sequence:\n///        one of \\\' \\\" \\? \\\\ \\a \\b \\f \\n \\r \\t \\v\n///      octal-escape-sequence:\n///        \\ octal-digit\n///        \\ octal-digit octal-digit\n///        \\ octal-digit octal-digit octal-digit\n///      hexadecimal-escape-sequence:\n///        \\x hexadecimal-digit\n///        hexadecimal-escape-sequence hexadecimal-digit\n///      universal-character-name: [C++11 lex.charset]\n///        \\u hex-quad\n///        \\U hex-quad hex-quad\n///      hex-quad:\n///        hex-digit hex-digit hex-digit hex-digit\n/// \\endverbatim\n///\nCharLiteralParser::CharLiteralParser(const char *begin, const char *end, SourceLocation Loc, Preprocessor &PP, tok::TokenKind kind) {\n  if (NumCharsSoFar > 1) {\n    if (isOrdinary() && NumCharsSoFar == 4)\n    else if (isOrdinary())\n    else {\n      PP.Diag(Loc, diag::err_multichar_character_literal) << (isWide() ? 0 : 1);"}}
},
},
["note_uninit_reference_member"]={
["err_multiple_base_initialization"]={
[c]="uninitialized reference member is here",
[j]="multiple initializations given for base A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="uninitialized reference member is here",
[e]="multiple initializations given for base %0",
[b]=q,
[f]=n,
[a]="uninitialized reference member is here",
[g]="multiple initializations given for base (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={M,1236199783,L}
[b]={"23eebd9c1ee8",1270891731,"Diagnose more cases of initializing distinct members of an anonymous union"},
[k]={{r,4779,"bool CheckRedundantInit(Sema &S, CXXCtorInitializer *Init, CXXCtorInitializer *&PrevInit) {\n  if (FieldDecl *Field = Init->getAnyMember())\n  else {\n    S.Diag(Init->getSourceLocation(), diag::err_multiple_base_initialization) << QualType(BaseClass, 0) << Init->getSourceRange();"}}
},
},
["note_uninit_var_use"]={
["err_multiple_def_index"]={
[c]="... here",
[j]="multiple definitions are found for the same key in index ",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{uninitialized use occurs|variable is captured by block}0 here",
[e]="multiple definitions are found for the same key in index ",
[b]=q,
[f]=n,
[a]="(?:uninitialized use occurs|variable is captured by block) here",
[g]="multiple definitions are found for the same key in index ",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"1bb8edb8acc0",1338013246,"In response to some discussions on IRC, tweak the wording of the new"}
[b]={"e350b0a19629",1506078661,"Add Cross Translation Unit support library"},
[k]={{"clang/lib/CrossTU/CrossTranslationUnit.cpp",316,"void CrossTranslationUnitContext::emitCrossTUDiagnostics(const IndexError &IE) {\n  case index_error_code::multiple_definitions:\n    Context.getDiagnostics().Report(diag::err_multiple_def_index) << IE.getLineNum();"}}
},
},
["note_unlocked_here"]={
["err_multiple_default_labels_defined"]={
[c]="A released here",
[j]="multiple default labels in one switch",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%0 released here",
[e]="multiple default labels in one switch",
[b]=q,
[f]=n,
[a]="(.*?) released here",
[g]="multiple default labels in one switch",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={ob,1582847864,nb}
[b]={x,1237025389,w},
[k]={{E,1084,"StmtResult Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, Stmt *BodyStmt) {\n  for (SwitchCase *SC = SS->getSwitchCaseList(); SC && !HasDependentValue; SC = SC->getNextSwitchCase()) {\n    if (DefaultStmt *DS = dyn_cast<DefaultStmt>(SC)) {\n      if (TheDefaultStmt) {\n        Diag(DS->getDefaultLoc(), diag::err_multiple_default_labels_defined);"}}
},
},
["note_unofficial_macro_backtrace_limit"]={
["err_multiple_final_overriders"]={
[c]="(skipping A expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)",
[j]="virtual function A has more than one final overrider in B",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="(skipping %0 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)",
[e]="virtual function %q0 has more than one final overrider in %1",
[b]=q,
[f]=n,
[a]="\\(skipping (.*?) expansions in backtrace; use \\-fmacro\\-backtrace\\-limit\\=0 to see all\\)",
[g]="virtual function (.*?) has more than one final overrider in (.*?)",
[g]=p,
[h]=a,
[e]=C
[i]=o,
[b]={"4165bd677248",1269388076,"Implement computation of the final overriders for each virtual"},
[k]={{p,16630,"void Sema::ActOnFields(Scope *S, SourceLocation RecLoc, Decl *EnclosingDecl, ArrayRef<Decl *> Fields, SourceLocation LBrac, SourceLocation RBrac, const ParsedAttributesView &Attrs) {\n  // Okay, we successfully defined \'Record\'.\n  if (Record) {\n    if (CXXRecord) {\n      if (!CXXRecord->isDependentType()) {\n        if (!CXXRecord->isInvalidDecl()) {\n          // If we have virtual base classes, we may end up finding multiple\n          // final overriders for a given virtual function. Check for this\n          // problem now.\n          if (CXXRecord->getNumVBases()) {\n            for (CXXFinalOverriderMap::iterator M = FinalOverriders.begin(), MEnd = FinalOverriders.end(); M != MEnd; ++M) {\n              for (OverridingMethods::iterator SO = M->second.begin(), SOEnd = M->second.end(); SO != SOEnd; ++SO) {\n                Diag(Record->getLocation(), diag::err_multiple_final_overriders) << (const NamedDecl *)M->first << Record;"}}
},
},
["note_unofficial_marco_expansion"]={
["err_multiple_mem_initialization"]={
[c]="expanded from here",
[j]="multiple initializations given for non-static member A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="expanded from here",
[e]="multiple initializations given for non-static member %0",
[b]=q,
[f]=n,
[a]="expanded from here",
[g]="multiple initializations given for non\\-static member (.*?)",
[g]=p,
[h]=a,
[e]=C
[i]=o,
[b]={"23eebd9c1ee8",1270891731,"Diagnose more cases of initializing distinct members of an anonymous union"},
[k]={{r,4775,"bool CheckRedundantInit(Sema &S, CXXCtorInitializer *Init, CXXCtorInitializer *&PrevInit) {\n  if (FieldDecl *Field = Init->getAnyMember())\n    S.Diag(Init->getSourceLocation(), diag::err_multiple_mem_initialization) << Field->getDeclName() << Init->getSourceRange();"}}
},
},
["note_unofficial_marco_expansion_from"]={
["err_multiple_mem_union_initialization"]={
[c]="expanded from macro \'A\'",
[j]="initializing multiple members of union",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="expanded from macro \'%0\'",
[e]="initializing multiple members of union",
[b]=q,
[f]=n,
[a]="expanded from macro \'(.*?)\'",
[g]="initializing multiple members of union",
[g]=p,
[h]=a,
[e]=C
[i]=o,
[b]={"23eebd9c1ee8",1270891731,"Diagnose more cases of initializing distinct members of an anonymous union"},
[k]={{p,4884,"static void checkDuplicateDefaultInit(Sema &S, CXXRecordDecl *Parent, SourceLocation DefaultInitLoc) {\n  S.Diag(DefaultInitLoc, diag::err_multiple_mem_union_initialization);"},{r,4798,"bool CheckRedundantUnionInit(Sema &S, CXXCtorInitializer *Init, RedundantUnionMap &Unions) {\n  while (Parent->isAnonymousStructOrUnion() || Parent->isUnion()) {\n    if (Parent->isUnion()) {\n      if (En.first && En.first != Child) {\n        S.Diag(Init->getSourceLocation(), diag::err_multiple_mem_union_initialization) << Field->getDeclName() << Init->getSourceRange();"}}
},
},
["note_unparenthesized_non_primary_expr_in_requires_clause"]={
["err_multiple_template_declarators"]={
[c]="parentheses are required around this expression in a requires clause",
[j]="... can only ... a single entity",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="parentheses are required around this expression in a requires clause",
[e]="%select{|a template declaration|an explicit template specialization|an explicit template instantiation}0 can only %select{|declare|declare|instantiate}0 a single entity",
[b]=q,
[f]=n,
[a]="parentheses are required around this expression in a requires clause",
[g]="(?:|a template declaration|an explicit template specialization|an explicit template instantiation) can only (?:|declare|declare|instantiate) a single entity",
[g]=p,
[h]=a,
[e]=y,
[i]=s,
[i]={"739b410f1ff5",1570627358,"Add a warning, flags and pragmas to limit the number of pre-processor tokens in a translation unit"}
[b]={"2399628cea7b",1242163911,"Refactor the parsing of declarations so that template declarations can"},
[k]={{"clang/lib/Parse/ParseTemplate.cpp",316,"/// Parse a single declaration that declares a template,\n/// template specialization, or explicit instantiation of a template.\n///\n/// \\param DeclEnd will receive the source location of the last token\n/// within this declaration.\n///\n/// \\param AS the access specifier associated with this\n/// declaration. Will be AS_none for namespace-scope declarations.\n///\n/// \\returns the new declaration.\nDecl *Parser::ParseSingleDeclarationAfterTemplate(DeclaratorContext Context, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject &DiagsFromTParams, SourceLocation &DeclEnd, ParsedAttributes &AccessAttrs, AccessSpecifier AS) {\n  if (Tok.is(tok::comma)) {\n    Diag(Tok, diag::err_multiple_template_declarators) << (int)TemplateInfo.Kind;"}}
},
},
["note_unreachable_entity"]={
["err_multiversion_after_used"]={
[c]="... here is not ...",
[j]="function declaration cannot become a multiversioned function after first usage",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{declaration|definition|default argument declared|explicit specialization declared|partial specialization declared}0 here is not %select{visible|reachable|reachable|reachable|reachable|reachable}0",
[e]="function declaration cannot become a multiversioned function after first usage",
[b]=q,
[f]=n,
[a]="(?:declaration|definition|default argument declared|explicit specialization declared|partial specialization declared) here is not (?:visible|reachable|reachable|reachable|reachable|reachable)",
[g]="function declaration cannot become a multiversioned function after first usage",
[g]=p,
[h]=a,
[e]=cd,
[i]=a,
[i]={wb,1576908663,vb}
[b]={xb,1515447257,ub},
[k]={{p,9763,"static bool CheckMultiVersionAdditionalRules(Sema &S, const FunctionDecl *OldFD, const FunctionDecl *NewFD, bool CausesMV, MultiVersionKind MVKind) {\n  // Only allow transition to MultiVersion if it hasn\'t been used.\n  if (OldFD && CausesMV && OldFD->isUsed(false))\n    return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used);"},{p,10159,"/// Check the validity of a mulitversion function declaration.\n/// Also sets the multiversion\'ness\' of the function itself.\n///\n/// This sets NewFD->isInvalidDecl() to true if there was an error.\n///\n/// Returns true if there was an error, false otherwise.\nstatic bool CheckMultiVersionFunction(Sema &S, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n  if (!OldFD->isMultiVersion()) {\n    case MultiVersionKind::TargetClones:\n      if (OldFD->isUsed(false)) {\n        return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used);"}}
},
},
["note_unreachable_silence"]={
["err_multiversion_diff"]={
[c]="silence by adding parentheses to mark code as explicitly dead",
[j]="multiversioned function declaration has a different ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="silence by adding parentheses to mark code as explicitly dead",
[e]="multiversioned function declaration has a different %select{calling convention|return type|constexpr specification|inline specification|linkage|language linkage}0",
[b]=q,
[f]=n,
[a]="silence by adding parentheses to mark code as explicitly dead",
[g]="multiversioned function declaration has a different (?:calling convention|return type|constexpr specification|inline specification|linkage|language linkage)",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"ec3bbf4933d7",1396053320,"Improve -Wunreachable-code to provide a means to indicate code is intentionally marked dead via if((..."}
[b]={xb,1515447257,ub},
[k]={{p,9765,"static bool CheckMultiVersionAdditionalRules(Sema &S, const FunctionDecl *OldFD, const FunctionDecl *NewFD, bool CausesMV, MultiVersionKind MVKind) {\n  return S.areMultiversionVariantFunctionsCompatible(OldFD, NewFD, S.PDiag(diag::err_multiversion_noproto), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::note_multiversioning_caused_here)), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::err_multiversion_doesnt_support) << static_cast<unsigned>(MVKind)), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::err_multiversion_diff)),"}}
},
},
["note_unsafe_buffer_operation"]={
["err_multiversion_disallowed_other_attr"]={
[c]="used... here",
[j]="attribute \'...\' multiversioning cannot be combined with attribute A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="used%select{| in pointer arithmetic| in buffer access}0 here",
[e]="attribute \'%select{|target|cpu_specific|cpu_dispatch|target_clones|target_version}0\' multiversioning cannot be combined with attribute %1",
[b]=q,
[f]=n,
[a]="used(?:| in pointer arithmetic| in buffer access) here",
[g]="attribute \'(?:|target|cpu_specific|cpu_dispatch|target_clones|target_version)\' multiversioning cannot be combined with attribute (.*?)",
[g]=p,
[h]=a,
[e]=p,
[i]=a,
[i]={N,1625925174,O}
[b]={"14f6bfcb52e7",1582847864,"[clang] Implement objc_non_runtime_protocol to remove protocol metadata"},
[k]={{p,9617,"static bool checkNonMultiVersionCompatAttributes(Sema &S, const FunctionDecl *FD, const FunctionDecl *CausedFD, MultiVersionKind MVKind) {\n  const auto Diagnose = [FD, CausedFD, MVKind](Sema &S, const Attr *A) {\n    S.Diag(FD->getLocation(), diag::err_multiversion_disallowed_other_attr) << static_cast<unsigned>(MVKind) << A;"}}
},
},
["note_unsafe_buffer_variable_fixit_group"]={
["err_multiversion_doesnt_support"]={
[c]="change type of A to \'...\' to preserve bounds information...",
[j]="attribute \'...\' multiversioned functions do not yet support ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="change type of %0 to \'%select{std::span|std::array|std::span::iterator}1\' to preserve bounds information%select{|, and change %2 to \'%select{std::span|std::array|std::span::iterator}1\' to propagate bounds information between them}3",
[e]="attribute \'%select{|target|cpu_specific|cpu_dispatch|target_clones|target_version}0\' multiversioned functions do not yet support %select{function templates|virtual functions|deduced return types|constructors|destructors|deleted functions|defaulted functions|constexpr functions|consteval function|lambdas}1",
[b]=q,
[f]=n,
[a]="change type of (.*?) to \'(?:std\\:\\:span|std\\:\\:array|std\\:\\:span\\:\\:iterator)\' to preserve bounds information(?:|, and change (.*?) to \'(?:std\\:\\:span|std\\:\\:array|std\\:\\:span\\:\\:iterator)\' to propagate bounds information between them)",
[g]="attribute \'(?:|target|cpu_specific|cpu_dispatch|target_clones|target_version)\' multiversioned functions do not yet support (?:function templates|virtual functions|deduced return types|constructors|destructors|deleted functions|defaulted functions|constexpr functions|consteval function|lambdas)",
[g]=p,
[h]=a,
[e]=p,
[i]=a,
[i]={N,1625925174,O}
[b]={xb,1515447257,ub},
[k]={{p,9765,"static bool CheckMultiVersionAdditionalRules(Sema &S, const FunctionDecl *OldFD, const FunctionDecl *NewFD, bool CausesMV, MultiVersionKind MVKind) {\n  return S.areMultiversionVariantFunctionsCompatible(OldFD, NewFD, S.PDiag(diag::err_multiversion_noproto), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::note_multiversioning_caused_here)), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::err_multiversion_doesnt_support) << static_cast<unsigned>(MVKind)), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::err_multiversion_diff)),"},{v,3205,"static void handleTargetClonesAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n  // FIXME: We could probably figure out how to get this to work for lambdas\n  // someday.\n  if (const auto *MD = dyn_cast<CXXMethodDecl>(D)) {\n    if (MD->getParent()->isLambda()) {\n      S.Diag(D->getLocation(), diag::err_multiversion_doesnt_support) << static_cast<unsigned>(MultiVersionKind::TargetClones) << /*Lambda*/ 9;"}}
},
},
["note_use_dashdash"]={
["err_multiversion_duplicate"]={
[c]="use \'--\' to treat subsequent arguments as filenames",
[j]="multiversioned function redeclarations require identical target attributes",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use \'--\' to treat subsequent arguments as filenames",
[e]="multiversioned function redeclarations require identical target attributes",
[b]=q,
[f]=n,
[a]="use \'\\-\\-\' to treat subsequent arguments as filenames",
[g]="multiversioned function redeclarations require identical target attributes",
[g]=p,
[h]=a,
[e]=p,
[i]=a,
[i]={"091f1b6ef314",1485536981,"clang-cl: Warn about /U flags that look like filenames (PR31662)"}
[b]={xb,1515447257,ub},
[k]={{p,9853,"static bool CheckTargetCausesMultiVersioning(Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n  if (NewTA) {\n    if (OldParsed == NewParsed) {\n      S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate);"},{p,9869,"static bool CheckTargetCausesMultiVersioning(Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n  if (NewTVA) {\n    if (Feats == NewFeats) {\n      S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate);"},{p,9969,"/// Check the validity of a new function declaration being added to an existing\n/// multiversioned declaration collection.\nstatic bool CheckMultiVersionAdditionalDecl(Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, MultiVersionKind NewMVKind, const CPUDispatchAttr *NewCPUDisp, const CPUSpecificAttr *NewCPUSpec, const TargetClonesAttr *NewClones, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n  // Next, check ALL non-invalid non-overloads to see if this is a redeclaration\n  // of a previous member of the MultiVersion set.\n  for (NamedDecl *ND : Previous) {\n    case MultiVersionKind::Target: {\n      if (CurParsed == NewParsed) {\n        S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate);"},{p,9990,"/// Check the validity of a new function declaration being added to an existing\n/// multiversioned declaration collection.\nstatic bool CheckMultiVersionAdditionalDecl(Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, MultiVersionKind NewMVKind, const CPUDispatchAttr *NewCPUDisp, const CPUSpecificAttr *NewCPUSpec, const TargetClonesAttr *NewClones, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n  // Next, check ALL non-invalid non-overloads to see if this is a redeclaration\n  // of a previous member of the MultiVersion set.\n  for (NamedDecl *ND : Previous) {\n    case MultiVersionKind::TargetVersion: {\n      if (CurFeats == NewFeats) {\n        S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate);"}}
},
},
["note_use_ifdef_guards"]={
["err_multiversion_noproto"]={
[c]="unguarded header; consider using #ifdef guards or #pragma once",
[j]="multiversioned function must have a prototype",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="unguarded header; consider using #ifdef guards or #pragma once",
[e]="multiversioned function must have a prototype",
[b]=q,
[f]=n,
[a]="unguarded header; consider using \\#ifdef guards or \\#pragma once",
[g]="multiversioned function must have a prototype",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"0ad318217917",1494483607,"[Sema] Improve redefinition errors pointing to the same header"}
[b]={xb,1515447257,ub},
[k]={{p,9765,"static bool CheckMultiVersionAdditionalRules(Sema &S, const FunctionDecl *OldFD, const FunctionDecl *NewFD, bool CausesMV, MultiVersionKind MVKind) {\n  return S.areMultiversionVariantFunctionsCompatible(OldFD, NewFD, S.PDiag(diag::err_multiversion_noproto), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::note_multiversioning_caused_here)), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::err_multiversion_doesnt_support) << static_cast<unsigned>(MVKind)), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::err_multiversion_diff)),"}}
},
},
["note_use_non_reference_type"]={
["err_multiversion_not_allowed_on_main"]={
[c]="use non-reference type A",
[j]="\'main\' cannot be a multiversioned function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use non-reference type %0",
[e]="\'main\' cannot be a multiversioned function",
[b]=q,
[f]=n,
[a]="use non\\-reference type (.*?)",
[g]="\'main\' cannot be a multiversioned function",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"3e1d483e0efb",1428962935,"Add new warning -Wrange-loop-analysis to warn on copies during loops."}
[b]={xb,1515447257,ub},
[k]={{p,10106,"/// Check the validity of a mulitversion function declaration.\n/// Also sets the multiversion\'ness\' of the function itself.\n///\n/// This sets NewFD->isInvalidDecl() to true if there was an error.\n///\n/// Returns true if there was an error, false otherwise.\nstatic bool CheckMultiVersionFunction(Sema &S, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n  // Main isn\'t allowed to become a multiversion function, however it IS\n  // permitted to have \'main\' be marked with the \'target\' optimization hint,\n  // for \'target_version\' only default is allowed.\n  if (NewFD->isMain()) {\n    if (MVKind != MultiVersionKind::None && !(MVKind == MultiVersionKind::Target && !NewTA->isDefaultVersion()) && !(MVKind == MultiVersionKind::TargetVersion && NewTVA->isDefaultVersion())) {\n      S.Diag(NewFD->getLocation(), diag::err_multiversion_not_allowed_on_main);"}}
},
},
["note_use_reference_type"]={
["err_multiversion_not_supported"]={
[c]="use reference type A to prevent copying",
[j]="function multiversioning is not supported on the current target",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use reference type %0 to prevent copying",
[e]="function multiversioning is not supported on the current target",
[b]=q,
[f]=n,
[a]="use reference type (.*?) to prevent copying",
[g]="function multiversioning is not supported on the current target",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"3e1d483e0efb",1428962935,"Add new warning -Wrange-loop-analysis to warn on copies during loops."}
[b]={xb,1515447257,ub},
[k]={{p,9747,"static bool CheckMultiVersionAdditionalRules(Sema &S, const FunctionDecl *OldFD, const FunctionDecl *NewFD, bool CausesMV, MultiVersionKind MVKind) {\n  if (!S.getASTContext().getTargetInfo().supportsMultiVersioning()) {\n    S.Diag(NewFD->getLocation(), diag::err_multiversion_not_supported);"}}
},
},
["note_use_thread_local"]={
["err_multiversion_required_in_redecl"]={
[c]="use \'thread_local\' to allow this",
[j]="function declaration is missing ... attribute in a multiversioned function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use \'thread_local\' to allow this",
[e]="function declaration is missing %select{\'target\'|\'cpu_specific\' or \'cpu_dispatch\'|\'target_version\'}0 attribute in a multiversioned function",
[b]=q,
[f]=n,
[a]="use \'thread_local\' to allow this",
[g]="function declaration is missing (?:\'target\'|\'cpu_specific\' or \'cpu_dispatch\'|\'target_version\') attribute in a multiversioned function",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"6ea1a4d1dcd6",1365970291,"Diagnose if a __thread or _Thread_local variable has a non-constant initializer"}
[b]={"3efe00206f0f",1532096008,"Implement cpu_dispatch/cpu_specific Multiversioning"},
[k]={{p,9882,"static bool CheckTargetCausesMultiVersioning(Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n  for (const auto *FD : OldFD->redecls()) {\n    // We allow forward declarations before ANY multiversioning attributes, but\n    // nothing after the fact.\n    if (PreviousDeclsHaveMultiVersionAttribute(FD) && ((NewTA && (!CurTA || CurTA->isInherited())) || (NewTVA && (!CurTVA || CurTVA->isInherited())))) {\n      S.Diag(FD->getLocation(), diag::err_multiversion_required_in_redecl) << (NewTA ? 0 : 2);"},{p,10146,"/// Check the validity of a mulitversion function declaration.\n/// Also sets the multiversion\'ness\' of the function itself.\n///\n/// This sets NewFD->isInvalidDecl() to true if there was an error.\n///\n/// Returns true if there was an error, false otherwise.\nstatic bool CheckMultiVersionFunction(Sema &S, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n  // Multiversioned redeclarations aren\'t allowed to omit the attribute, except\n  // for target_clones and target_version.\n  if (OldFD->isMultiVersion() && MVKind == MultiVersionKind::None && OldFD->getMultiVersionKind() != MultiVersionKind::TargetClones && OldFD->getMultiVersionKind() != MultiVersionKind::TargetVersion) {\n    S.Diag(NewFD->getLocation(), diag::err_multiversion_required_in_redecl) << (OldFD->getMultiVersionKind() != MultiVersionKind::Target);"}}
},
},
["note_use_type_or_non_reference"]={
["err_multiversion_types_mixed"]={
[c]="use non-reference type A to make construction explicit or type B to prevent copying",
[j]="multiversioning attributes cannot be combined",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use non-reference type %0 to make construction explicit or type %1 to prevent copying",
[e]="multiversioning attributes cannot be combined",
[b]=q,
[f]=n,
[a]="use non\\-reference type (.*?) to make construction explicit or type (.*?) to prevent copying",
[g]="multiversioning attributes cannot be combined",
[g]=p,
[h]=a,
[e]=o,
[i]=a,
[i]={"3e1d483e0efb",1428962935,"Add new warning -Wrange-loop-analysis to warn on copies during loops."}
[b]={"3efe00206f0f",1532096008,"Implement cpu_dispatch/cpu_specific Multiversioning"},
[k]={{p,9912,"/// Check the validity of a new function declaration being added to an existing\n/// multiversioned declaration collection.\nstatic bool CheckMultiVersionAdditionalDecl(Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, MultiVersionKind NewMVKind, const CPUDispatchAttr *NewCPUDisp, const CPUSpecificAttr *NewCPUSpec, const TargetClonesAttr *NewClones, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n  // Disallow mixing of multiversioning types.\n  if (!MultiVersionTypesCompatible(OldMVKind, NewMVKind)) {\n    S.Diag(NewFD->getLocation(), diag::err_multiversion_types_mixed);"}}
},
},
["note_used_here"]={
["err_musttail_callconv_mismatch"]={
[c]="used here",
[j]="cannot perform a tail call to function... because it uses an incompatible calling convention",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="used here",
[e]="cannot perform a tail call to function%select{| %1}0 because it uses an incompatible calling convention",
[b]=q,
[f]=n,
[a]="used here",
[g]="cannot perform a tail call to function(?:| (.*?)) because it uses an incompatible calling convention",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"837796754391",1298084021,"Warn about code that uses variables and functions with internal linkage"}
[b]={Z,1607502387,Y},
[k]={{E,696,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n  // Caller and callee must have matching calling conventions.\n  //\n  // Some calling conventions are physically capable of supporting tail calls\n  // even if the function types don\'t perfectly match. LLVM is currently too\n  // strict to allow this, but if LLVM added support for this in the future, we\n  // could exit early here and skip the remaining checks if the functions are\n  // using such a calling convention.\n  if (CallerType.Func->getCallConv() != CalleeType.Func->getCallConv()) {\n    if (const auto *ND = dyn_cast_or_null<NamedDecl>(CE->getCalleeDecl()))\n      Diag(St->getBeginLoc(), diag::err_musttail_callconv_mismatch) << true << ND->getDeclName();"},{E,698,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n  // Caller and callee must have matching calling conventions.\n  //\n  // Some calling conventions are physically capable of supporting tail calls\n  // even if the function types don\'t perfectly match. LLVM is currently too\n  // strict to allow this, but if LLVM added support for this in the future, we\n  // could exit early here and skip the remaining checks if the functions are\n  // using such a calling convention.\n  if (CallerType.Func->getCallConv() != CalleeType.Func->getCallConv()) {\n    if (const auto *ND = dyn_cast_or_null<NamedDecl>(CE->getCalleeDecl()))\n    else\n      Diag(St->getBeginLoc(), diag::err_musttail_callconv_mismatch) << false;"}}
},
},
["note_used_in_initialization_here"]={
["err_musttail_forbidden_from_this_context"]={
[c]="used in initialization here",
[j]="A attribute cannot be used from ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="used in initialization here",
[e]="%0 attribute cannot be used from %select{a block|an Objective-C function|this context}1",
[b]=q,
[f]=n,
[a]="used in initialization here",
[g]="(.*?) attribute cannot be used from (?:a block|an Objective\\-C function|this context)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"bcb70eee1a38",1404345069,"Enable clang to continue to parse libstdc++4.6 and stlport after r210091."}
[b]={Z,1607502387,Y},
[k]={{E,641,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n  // Find caller function signature.\n  if (!CallerDecl) {\n    Diag(St->getBeginLoc(), diag::err_musttail_forbidden_from_this_context) << &MTA << ContextType;"}}
},
},
["note_user_declared_ctor"]={
["err_musttail_member_mismatch"]={
[c]="implicit default constructor suppressed by user-declared constructor",
[j]="... function cannot perform a tail call to ... function...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="implicit default constructor suppressed by user-declared constructor",
[e]="%select{non-member|static member|non-static member}0 function cannot perform a tail call to %select{non-member|static member|non-static member|pointer-to-member}1 function%select{| %3}2",
[b]=q,
[f]=n,
[a]="implicit default constructor suppressed by user\\-declared constructor",
[g]="(?:non\\-member|static member|non\\-static member) function cannot perform a tail call to (?:non\\-member|static member|non\\-static member|pointer\\-to\\-member) function(?:| (.*?))",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={Cd,1354935182,Ed}
[b]={Z,1607502387,Y},
[k]={{E,712,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n  // Caller and callee must match in whether they have a \"this\" parameter.\n  if (CallerType.This.isNull() != CalleeType.This.isNull()) {\n    if (const auto *ND = dyn_cast_or_null<NamedDecl>(CE->getCalleeDecl())) {\n      Diag(St->getBeginLoc(), diag::err_musttail_member_mismatch) << CallerType.MemberType << CalleeType.MemberType << true << ND->getDeclName();"},{E,715,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n  // Caller and callee must match in whether they have a \"this\" parameter.\n  if (CallerType.This.isNull() != CalleeType.This.isNull()) {\n    if (const auto *ND = dyn_cast_or_null<NamedDecl>(CE->getCalleeDecl())) {\n    } else\n      Diag(St->getBeginLoc(), diag::err_musttail_member_mismatch) << CallerType.MemberType << CalleeType.MemberType << false;"}}
},
},
["note_using"]={
["err_musttail_mismatch"]={
[c]="using",
[j]="cannot perform a tail call to function... because its signature is incompatible with the calling function",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="using",
[e]="cannot perform a tail call to function%select{| %1}0 because its signature is incompatible with the calling function",
[b]=q,
[f]=n,
[a]="using",
[g]="cannot perform a tail call to function(?:| (.*?)) because its signature is incompatible with the calling function",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"e29c5cd2398c",1260474663,"Improve the diagnostic when a new declaration conflicts with a using shadow"}
[b]={Z,1607502387,Y},
[k]={{E,763,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n  if (!CheckTypesMatch(CallerType, CalleeType, PD)) {\n    if (const auto *ND = dyn_cast_or_null<NamedDecl>(CE->getCalleeDecl()))\n      Diag(St->getBeginLoc(), diag::err_musttail_mismatch) << true << ND->getDeclName();"},{E,765,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n  if (!CheckTypesMatch(CallerType, CalleeType, PD)) {\n    if (const auto *ND = dyn_cast_or_null<NamedDecl>(CE->getCalleeDecl()))\n    else\n      Diag(St->getBeginLoc(), diag::err_musttail_mismatch) << false;"}}
},
},
["note_using_decl"]={
["err_musttail_needs_call"]={
[c]="...using declaration",
[j]="A attribute requires that the return value is the result of a function call",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{|previous }0using declaration",
[e]="%0 attribute requires that the return value is the result of a function call",
[b]=q,
[f]=n,
[a]="(?:|previous )using declaration",
[g]="(.*?) attribute requires that the return value is the result of a function call",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={M,1236199783,L}
[b]={Z,1607502387,Y},
[k]={{E,586,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n  if (!CE) {\n    Diag(St->getBeginLoc(), diag::err_musttail_needs_call) << &MTA;"}}
},
},
["note_using_decl_class_member_workaround"]={
["err_musttail_needs_prototype"]={
[c]="use ... instead",
[j]="A attribute requires that both caller and callee functions have a prototype",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="use %select{an alias declaration|a typedef declaration|a reference|a const variable|a constexpr variable}0 instead",
[e]="%0 attribute requires that both caller and callee functions have a prototype",
[b]=q,
[f]=n,
[a]="use (?:an alias declaration|a typedef declaration|a reference|a const variable|a constexpr variable) instead",
[g]="(.*?) attribute requires that both caller and callee functions have a prototype",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"7ad0b8839652",1396475075,"If a using-declaration names a class member, but appears outside a class, try"}
[b]={Z,1607502387,Y},
[k]={{E,678,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n  // Both caller and callee must have a prototype (no K&R declarations).\n  if (!CalleeType.Func || !CallerType.Func) {\n    Diag(St->getBeginLoc(), diag::err_musttail_needs_prototype) << &MTA;"}}
},
},
["note_using_decl_conflict"]={
["err_musttail_needs_trivial_args"]={
[c]="conflicting declaration",
[j]="tail call requires that the return value, all parameters, and any temporaries created by the expression are trivially destructible",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="conflicting declaration",
[e]="tail call requires that the return value, all parameters, and any temporaries created by the expression are trivially destructible",
[b]=q,
[f]=n,
[a]="conflicting declaration",
[g]="tail call requires that the return value, all parameters, and any temporaries created by the expression are trivially destructible",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"84d8767c1582",1260438112,"Implement redeclaration checking and hiding semantics for using declarations. There"}
[b]={Z,1607502387,Y},
[k]={{E,592,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n if (const auto *EWC = dyn_cast<ExprWithCleanups>(E)) {\n    if (EWC->cleanupsHaveSideEffects()) {\n      Diag(St->getBeginLoc(), diag::err_musttail_needs_trivial_args) << &MTA;"}}
},
},
["note_using_decl_target"]={
["err_musttail_no_variadic"]={
[c]="target of using declaration",
[j]="A attribute may not be used with variadic functions",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="target of using declaration",
[e]="%0 attribute may not be used with variadic functions",
[b]=q,
[f]=n,
[a]="target of using declaration",
[g]="(.*?) attribute may not be used with variadic functions",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"e61f2ba7e44a",1258511779,"Incremental progress on using declarations. Split UnresolvedUsingDecl into"}
[b]={Z,1607502387,Y},
[k]={{E,705,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n  if (CalleeType.Func->isVariadic() || CallerType.Func->isVariadic()) {\n    Diag(St->getBeginLoc(), diag::err_musttail_no_variadic) << &MTA;"}}
},
},
["note_using_enum_decl"]={
["err_musttail_scope"]={
[c]="...using-enum declaration",
[j]="cannot perform a tail call from this return statement",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{|previous }0using-enum declaration",
[e]="cannot perform a tail call from this return statement",
[b]=q,
[f]=n,
[a]="(?:|previous )using\\-enum declaration",
[g]="cannot perform a tail call from this return statement",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={Ib,1615397021,Hb}
[b]={Z,1607502387,Y},
[k]={{lb,918,"void JumpScopeChecker::VerifyMustTailStmts() {\n  for (AttributedStmt *AS : MustTailStmts) {\n    for (unsigned I = LabelAndGotoScopes[AS]; I; I = Scopes[I].ParentScope) {\n      if (Scopes[I].OutDiag) {\n        S.Diag(AS->getBeginLoc(), diag::err_musttail_scope);"}}
},
},
["note_using_value_decl_missing_typename"]={
["err_musttail_structors_forbidden"]={
[c]="add \'typename\' to treat this using declaration as a type",
[j]="cannot perform a tail call ... a ...",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="add \'typename\' to treat this using declaration as a type",
[e]="cannot perform a tail call %select{from|to}0 a %select{constructor|destructor}1",
[b]=q,
[f]=n,
[a]="add \'typename\' to treat this using declaration as a type",
[g]="cannot perform a tail call (?:from|to) a (?:constructor|destructor)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"aed2efbbb54f",1291853187,"A typename specifier can end up referring to a unresolved using"}
[b]={Z,1607502387,Y},
[k]={{E,614,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n  auto GetMethodType = [this, St, MTA](const CXXMethodDecl *CMD, FuncType &Type, bool IsCallee) -> bool {\n    if (isa<CXXConstructorDecl, CXXDestructorDecl>(CMD)) {\n      Diag(St->getBeginLoc(), diag::err_musttail_structors_forbidden) << IsCallee << isa<CXXDestructorDecl>(CMD);"},{E,668,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n  // Find callee function signature.\n  if (const CXXMethodDecl *CMD = dyn_cast_or_null<CXXMethodDecl>(CE->getCalleeDecl())) {\n  } else if (CalleeBinOp && CalleeBinOp->isPtrMemOp()) {\n  } else if (isa<CXXPseudoDestructorExpr>(CalleeExpr)) {\n    Diag(St->getBeginLoc(), diag::err_musttail_structors_forbidden) << /* IsCallee = */ 1 << /* IsDestructor = */ 1;"}}
},
},
["note_valid_options"]={
["err_mutable_const"]={
[c]="valid target CPU values are: A",
[j]="\'mutable\' and \'const\' cannot be mixed",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="valid target CPU values are: %0",
[e]="\'mutable\' and \'const\' cannot be mixed",
[b]=q,
[f]=n,
[a]="valid target CPU values are\\: (.*?)",
[g]="\'mutable\' and \'const\' cannot be mixed",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"3ec1743d0d77",1518131655,"Make march/target-cpu print a note with the list of valid values for ARM"}
[b]={z,1236199783,A},
[k]={{p,15912,"/// Build a new FieldDecl and check its well-formedness.\n///\n/// This routine builds a new FieldDecl given the fields name, type,\n/// record, etc. \\p PrevDecl should refer to any previous declaration\n/// with the same name and in the same scope as the field to be\n/// created.\n///\n/// \\returns a new FieldDecl.\n///\n/// \\todo The Declarator argument is a hack. It will be removed once\nFieldDecl *Sema::CheckFieldDecl(DeclarationName Name, QualType T, TypeSourceInfo *TInfo, RecordDecl *Record, SourceLocation Loc, bool Mutable, Expr *BitWidth, InClassInitStyle InitStyle, SourceLocation TSSL, AccessSpecifier AS, NamedDecl *PrevDecl, Declarator *D) {\n  // Check that \'mutable\' is consistent with the type of the declaration.\n  if (!InvalidDecl && Mutable) {\n    if (T->isReferenceType())\n    else if (T.isConstQualified())\n      DiagID = diag::err_mutable_const;"}}
},
},
["note_value_initialization_here"]={
["err_mutable_function"]={
[c]="in value-initialization of type A here",
[j]="\'mutable\' cannot be applied to functions",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="in value-initialization of type %0 here",
[e]="\'mutable\' cannot be applied to functions",
[b]=q,
[f]=n,
[a]="in value\\-initialization of type (.*?) here",
[g]="\'mutable\' cannot be applied to functions",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"593f993a6855",1354932077,"Implement C++03 [dcl.init]p5\'s checking for value-initialization of references"}
[b]={z,1236199783,A},
[k]={{r,2970,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n  case DeclSpec::SCS_mutable:\n    if (isFunc) {\n      Diag(DS.getStorageClassSpecLoc(), diag::err_mutable_function);"}}
},
},
["note_var_declared_here"]={
["err_mutable_nonmember"]={
[c]="variable A is declared here",
[j]="\'mutable\' can only be applied to member variables",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="variable %0 is declared here",
[e]="\'mutable\' can only be applied to member variables",
[b]=q,
[f]=n,
[a]="variable (.*?) is declared here",
[g]="\'mutable\' can only be applied to member variables",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"f463a8a424e7",1461890263,"Avoid -Wshadow warnings about constructor parameters named after fields"}
[b]={z,1236199783,A},
[k]={{p,4713,"/// ParsedFreeStandingDeclSpec - This method is invoked when a declspec with\n/// no declarator (e.g. \"struct foo;\") is parsed. It also accepts template\n/// parameters to cope with template friend declarations.\nDecl *Sema::ParsedFreeStandingDeclSpec(Scope *S, AccessSpecifier AS, DeclSpec &DS, const ParsedAttributesView &DeclAttrs, MultiTemplateParamsArg TemplateParams, bool IsExplicitInstantiation, RecordDecl *&AnonRecord) {\n  // Note that a linkage-specification sets a storage class, but\n  // \'extern \"C\" struct foo;\' is actually valid and not theoretically\n  // useless.\n  if (DeclSpec::SCS SCS = DS.getStorageClassSpec()) {\n    if (SCS == DeclSpec::SCS_mutable)\n      Diag(DS.getStorageClassSpecLoc(), diag::err_mutable_nonmember);"},{p,5076,"/// BuildAnonymousStructOrUnion - Handle the declaration of an\n/// anonymous structure or union. Anonymous unions are a C++ feature\n/// (C++ [class.union]) and a C11 feature; anonymous structures\n/// are a C11 feature and GNU C++ extension.\nDecl *Sema::BuildAnonymousStructOrUnion(Scope *S, DeclSpec &DS, AccessSpecifier AS, RecordDecl *Record, const PrintingPolicy &Policy) {\n  if (RecordDecl *OwningClass = dyn_cast<RecordDecl>(Owner)) {\n  } else {\n    if (SCSpec == DeclSpec::SCS_mutable) {\n      Diag(Record->getLocation(), diag::err_mutable_nonmember);"},{p,6661,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n  if (SCSpec == DeclSpec::SCS_mutable) {\n    Diag(D.getIdentifierLoc(), diag::err_mutable_nonmember);"}}
},
},
["note_var_explicitly_captured_here"]={
["err_mutable_reference"]={
[c]="variable A is... captured here",
[j]="\'mutable\' cannot be applied to references",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="variable %0 is%select{| explicitly}1 captured here",
[e]="\'mutable\' cannot be applied to references",
[b]=q,
[f]=n,
[a]="variable (.*?) is(?:| explicitly) captured here",
[g]="\'mutable\' cannot be applied to references",
[g]=p,
[h]=a,
[e]=Bc,
[i]=o,
[i]={"175388c00d0a",1478687937,"[Sema] Avoid -Wshadow warnings for shadowed variables that aren\'t captured"}
[b]={z,1236199783,A},
[k]={{p,15910,"/// Build a new FieldDecl and check its well-formedness.\n///\n/// This routine builds a new FieldDecl given the fields name, type,\n/// record, etc. \\p PrevDecl should refer to any previous declaration\n/// with the same name and in the same scope as the field to be\n/// created.\n///\n/// \\returns a new FieldDecl.\n///\n/// \\todo The Declarator argument is a hack. It will be removed once\nFieldDecl *Sema::CheckFieldDecl(DeclarationName Name, QualType T, TypeSourceInfo *TInfo, RecordDecl *Record, SourceLocation Loc, bool Mutable, Expr *BitWidth, InClassInitStyle InitStyle, SourceLocation TSSL, AccessSpecifier AS, NamedDecl *PrevDecl, Declarator *D) {\n  // Check that \'mutable\' is consistent with the type of the declaration.\n  if (!InvalidDecl && Mutable) {\n    if (T->isReferenceType())\n      DiagID = getLangOpts().MSVCCompat ? diag::ext_mutable_reference : diag::err_mutable_reference;"}}
},
},
["note_var_fixit_add_initialization"]={
["err_namespace_nonnamespace_scope"]={
[c]="initialize the variable A to silence this warning",
[j]="namespaces can only be defined in global or namespace scope",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="initialize the variable %0 to silence this warning",
[e]="namespaces can only be defined in global or namespace scope",
[b]=q,
[f]=n,
[a]="initialize the variable (.*?) to silence this warning",
[g]="namespaces can only be defined in global or namespace scope",
[g]=p,
[h]=a,
[e]=o,
[i]=s,
[i]={"2959fdd087e7",1295638906,"Add basic fixits for -Wuninitialized-experimental"}
[b]={"05cfc295f45d",1273813702,"Namespaces can only be defined at global or namespace scope. Fixes PR6596."},
[k]={{R,152,"/// ParseNamespace - We know that the current token is a namespace keyword. This\n/// may either be a top level namespace or a block-level namespace alias. If\n/// there was an inline keyword, it has already been parsed.\n///\n///      namespace-definition: [C++: namespace.def]\n///        named-namespace-definition\n///        unnamed-namespace-definition\n///        nested-namespace-definition\n///\n///      named-namespace-definition:\n///        \'inline\'[opt] \'namespace\' attributes[opt] identifier \'{\'\n///        namespace-body \'}\'\n///\n///      unnamed-namespace-definition:\n///        \'inline\'[opt] \'namespace\' attributes[opt] \'{\' namespace-body \'}\'\n///\n///      nested-namespace-definition:\n///        \'namespace\' enclosing-namespace-specifier \'::\' \'inline\'[opt]\n///        identifier \'{\' namespace-body \'}\'\n///\n///      enclosing-namespace-specifier:\n///        identifier\n///        enclosing-namespace-specifier \'::\' \'inline\'[opt] identifier\n///\n///      namespace-alias-definition:  [C++ 7.3.2: namespace.alias]\n///        \'namespace\' identifier \'=\' qualified-namespace-specifier \';\'\n///\nParser::DeclGroupPtrTy Parser::ParseNamespace(DeclaratorContext Context, SourceLocation &DeclEnd, SourceLocation InlineLoc) {\n  if (getCurScope()->isClassScope() || getCurScope()->isTemplateParamScope() || getCurScope()->isInObjcMethodScope() || getCurScope()->getBlockParent() || getCurScope()->getFnParent()) {\n    Diag(T.getOpenLocation(), diag::err_namespace_nonnamespace_scope);"}}
},
},
["note_var_prev_partial_spec_here"]={
["err_need_header_before_placement_new"]={
[c]="previous declaration of variable template partial specialization is here",
[j]="no matching A function for non-allocating placement new expression; include <new>",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="previous declaration of variable template partial specialization is here",
[e]="no matching %0 function for non-allocating placement new expression; include <new>",
[b]=q,
[f]=n,
[a]="previous declaration of variable template partial specialization is here",
[g]="no matching (.*?) function for non\\-allocating placement new expression; include \\<new\\>",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"39a1e507ff0b",1375750985,"Started implementing variable templates. Top level declarations should be fully supported, up to som..."}
[b]={"61d065e21ff3",1590001902,"Let clang atomic builtins fetch add/sub support floating point types"},
[k]={{B,2162,"static bool resolveAllocationOverload(Sema &S, LookupResult &R, SourceRange Range, SmallVectorImpl<Expr *> &Args, bool &PassAlignment, FunctionDecl *&Operator, OverloadCandidateSet *AlignedCandidates, Expr *AlignArg, bool Diagnose) {\n  case OR_No_Viable_Function:\n    if (Diagnose) {\n      // If this is an allocation of the form \'new (p) X\' for some object\n      // pointer p (or an expression that will decay to such a pointer),\n      // diagnose the missing inclusion of <new>.\n      if (!R.isClassLookup() && Args.size() == 2 && (Args[1]->getType()->isObjectPointerType() || Args[1]->getType()->isArrayType())) {\n        S.Diag(R.getNameLoc(), diag::err_need_header_before_placement_new) << R.getLookupName() << Range;"}}
},
},
["note_vbase_moved_here"]={
["err_need_header_before_typeid"]={
[c]="...",
[j]="you need to include <typeinfo> before using the \'typeid\' operator",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="%select{%1 is a virtual base class of base class %2 declared here|virtual base class %1 declared here}0",
[e]="you need to include <typeinfo> before using the \'typeid\' operator",
[b]=q,
[f]=n,
[a]="(?:(.*?) is a virtual base class of base class (.*?) declared here|virtual base class (.*?) declared here)",
[g]="you need to include \\<typeinfo\\> before using the \'typeid\' operator",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"b2504bdc0d0e",1383539174,"Issue a diagnostic if an implicitly-defined move assignment operator would move"}
[b]={x,1237025389,w},
[k]={{B,595,"/// ActOnCXXTypeidOfType - Parse typeid( type-id ) or typeid (expression);\nExprResult Sema::ActOnCXXTypeid(SourceLocation OpLoc, SourceLocation LParenLoc, bool isType, void *TyOrExpr, SourceLocation RParenLoc) {\n  // Find the std::type_info type.\n  if (!getStdNamespace())\n    return ExprError(Diag(OpLoc, diag::err_need_header_before_typeid));"},{B,609,"/// ActOnCXXTypeidOfType - Parse typeid( type-id ) or typeid (expression);\nExprResult Sema::ActOnCXXTypeid(SourceLocation OpLoc, SourceLocation LParenLoc, bool isType, void *TyOrExpr, SourceLocation RParenLoc) {\n  if (!CXXTypeInfoDecl) {\n    if (!CXXTypeInfoDecl)\n      return ExprError(Diag(OpLoc, diag::err_need_header_before_typeid));"}}
},
},
["note_verify_ambiguous_marker"]={
["err_nested_name_member_ref_lookup_ambiguous"]={
[c]="ambiguous marker \'A\' is defined here",
[j]="lookup of A in member access expression is ambiguous",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="ambiguous marker \'%0\' is defined here",
[e]="lookup of %0 in member access expression is ambiguous",
[b]=q,
[f]=n,
[a]="ambiguous marker \'(.*?)\' is defined here",
[g]="lookup of (.*?) in member access expression is ambiguous",
[g]=p,
[h]=a,
[e]=p,
[i]=o,
[i]={"4e8144a0d140",1555130019,"[verify] Add support for location markers in directives."}
[b]={"b7bfe794129f",1251932376,"Rewrite of our handling of name lookup in C++ member access expressions, e.g.,"},
[k]={{cb,615,"/// Build a new nested-name-specifier for \"identifier::\", as described\n/// by ActOnCXXNestedNameSpecifier.\n///\n/// \\param S Scope in which the nested-name-specifier occurs.\n/// \\param IdInfo Parser information about an identifier in the\n///        nested-name-spec.\n/// \\param EnteringContext If true, enter the context specified by the\n///        nested-name-specifier.\n/// \\param SS Optional nested name specifier preceding the identifier.\n/// \\param ScopeLookupResult Provides the result of name lookup within the\n///        scope of the nested-name-specifier that was computed at template\n///        definition time.\n/// \\param ErrorRecoveryLookup Specifies if the method is called to improve\n///        error recovery and what kind of recovery is performed.\n/// \\param IsCorrectedToColon If not null, suggestion of replace \'::\' -> \':\'\n///        are allowed.  The bool value pointed by this parameter is set to\n///      \'true\' if the identifier is treated as if it was followed by \':\',\n///        not \'::\'.\n/// \\param OnlyNamespace If true, only considers namespaces in lookup.\n///\n/// This routine differs only slightly from ActOnCXXNestedNameSpecifier, in\n/// that it contains an extra parameter \\p ScopeLookupResult, which provides\n/// the result of name lookup within the scope of the nested-name-specifier\n/// that was computed at template definition time.\n///\n/// If ErrorRecoveryLookup is true, then this call is used to improve error\n/// recovery.  This means that it should not emit diagnostics, it should\n/// just return true on failure.  It also means it should only return a valid\n/// scope if it *knows* that the result is correct.  It should not return in a\n/// dependent context, for example. Nor will it extend \\p SS with the scope\n/// specifier.\nbool Sema::BuildCXXNestedNameSpecifier(Scope *S, NestedNameSpecInfo &IdInfo, bool EnteringContext, CXXScopeSpec &SS, NamedDecl *ScopeLookupResult, bool ErrorRecoveryLookup, bool *IsCorrectedToColon, bool OnlyNamespace) {\n  if (AcceptSpec) {\n    if (!ObjectType.isNull() && !ObjectTypeSearchedInScope && !getLangOpts().CPlusPlus11) {\n      if (isAcceptableNestedNameSpecifier(OuterDecl) && OuterDecl->getCanonicalDecl() != SD->getCanonicalDecl() && (!isa<TypeDecl>(OuterDecl) || !isa<TypeDecl>(SD) || !Context.hasSameType(Context.getTypeDeclType(cast<TypeDecl>(OuterDecl)), Context.getTypeDeclType(cast<TypeDecl>(SD))))) {\n        Diag(IdInfo.IdentifierLoc, diag::err_nested_name_member_ref_lookup_ambiguous) << IdInfo.Identifier;"}}
},
},
["note_vla_unsupported"]={
["err_nested_name_spec_is_not_class"]={
[c]="variable length arrays are not supported for the current target",
[j]="A cannot appear before \'::\' because it is not a class...; did you mean \':\'?",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="variable length arrays are not supported for the current target",
[e]="%0 cannot appear before \'::\' because it is not a class%select{ or namespace|, namespace, or enumeration}1; did you mean \':\'?",
[b]=q,
[f]=n,
[a]="variable length arrays are not supported for the current target",
[g]="(.*?) cannot appear before \'\\:\\:\' because it is not a class(?: or namespace|, namespace, or enumeration); did you mean \'\\:\'\\?",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"87d44269885f",1511038846,"[OpenMP] Show error if VLAs are not supported"}
[b]={"6a7ffbed8ab4",1397407923,"Improve error recovery around colon."},
[k]={{cb,545,"/// Build a new nested-name-specifier for \"identifier::\", as described\n/// by ActOnCXXNestedNameSpecifier.\n///\n/// \\param S Scope in which the nested-name-specifier occurs.\n/// \\param IdInfo Parser information about an identifier in the\n///        nested-name-spec.\n/// \\param EnteringContext If true, enter the context specified by the\n///        nested-name-specifier.\n/// \\param SS Optional nested name specifier preceding the identifier.\n/// \\param ScopeLookupResult Provides the result of name lookup within the\n///        scope of the nested-name-specifier that was computed at template\n///        definition time.\n/// \\param ErrorRecoveryLookup Specifies if the method is called to improve\n///        error recovery and what kind of recovery is performed.\n/// \\param IsCorrectedToColon If not null, suggestion of replace \'::\' -> \':\'\n///        are allowed.  The bool value pointed by this parameter is set to\n///      \'true\' if the identifier is treated as if it was followed by \':\',\n///        not \'::\'.\n/// \\param OnlyNamespace If true, only considers namespaces in lookup.\n///\n/// This routine differs only slightly from ActOnCXXNestedNameSpecifier, in\n/// that it contains an extra parameter \\p ScopeLookupResult, which provides\n/// the result of name lookup within the scope of the nested-name-specifier\n/// that was computed at template definition time.\n///\n/// If ErrorRecoveryLookup is true, then this call is used to improve error\n/// recovery.  This means that it should not emit diagnostics, it should\n/// just return true on failure.  It also means it should only return a valid\n/// scope if it *knows* that the result is correct.  It should not return in a\n/// dependent context, for example. Nor will it extend \\p SS with the scope\n/// specifier.\nbool Sema::BuildCXXNestedNameSpecifier(Scope *S, NestedNameSpecInfo &IdInfo, bool EnteringContext, CXXScopeSpec &SS, NamedDecl *ScopeLookupResult, bool ErrorRecoveryLookup, bool *IsCorrectedToColon, bool OnlyNamespace) {\n  if (Found.empty() && !ErrorRecoveryLookup) {\n    if (!R.empty()) {\n      // The identifier is found in ordinary lookup. If correction to colon is\n      // allowed, suggest replacement to \':\'.\n      if (IsCorrectedToColon) {\n        Diag(IdInfo.CCLoc, diag::err_nested_name_spec_is_not_class) << IdInfo.Identifier << getLangOpts().CPlusPlus << FixItHint::CreateReplacement(IdInfo.CCLoc, \":\");"}}
},
},
["note_which_delegates_to"]={
["err_nested_name_spec_non_tag"]={
[c]="which delegates to",
[j]="type A cannot be used prior to \'::\' because it has no members",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="which delegates to",
[e]="type %0 cannot be used prior to \'::\' because it has no members",
[b]=q,
[f]=n,
[a]="which delegates to",
[g]="type (.*?) cannot be used prior to \'\\:\\:\' because it has no members",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"6118d6642b8f",1304488644,"Implement a better version of delegating constructor cycle detection."}
[b]={"333489bba35d",1238195448,"Initial implementation of parsing, semantic analysis, and template"},
[k]={{cb,850,"bool Sema::ActOnCXXNestedNameSpecifier(Scope *S, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, TemplateTy OpaqueTemplate, SourceLocation TemplateNameLoc, SourceLocation LAngleLoc, ASTTemplateArgsPtr TemplateArgsIn, SourceLocation RAngleLoc, SourceLocation CCLoc, bool EnteringContext) {\n  // Alias template specializations can produce types which are not valid\n  // nested name specifiers.\n  if (!T->isDependentType() && !T->getAs<TagType>()) {\n    Diag(TemplateNameLoc, diag::err_nested_name_spec_non_tag) << T;"},{"clang/lib/Sema/SemaTemplateInstantiate.cpp",1196,"NamedDecl *TemplateInstantiator::TransformFirstQualifierInScope(NamedDecl *D, SourceLocation Loc) {\n  // If the first part of the nested-name-specifier was a template type\n  // parameter, instantiate that type parameter down to a tag type.\n  if (TemplateTypeParmDecl *TTPD = dyn_cast_or_null<TemplateTypeParmDecl>(D)) {\n    if (TTP->getDepth() < TemplateArgs.getNumLevels()) {\n      getSema().Diag(Loc, diag::err_nested_name_spec_non_tag) << T;"}}
},
},
["note_while_in_implementation"]={
["err_nested_non_static_member_use"]={
[c]="detected while default synthesizing properties in class implementation",
[j]="... A of B from nested type C",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="detected while default synthesizing properties in class implementation",
[e]="%select{call to non-static member function|use of non-static data member}0 %2 of %1 from nested type %3",
[b]=q,
[f]=n,
[a]="detected while default synthesizing properties in class implementation",
[g]="(?:call to non\\-static member function|use of non\\-static data member) (.*?) of (.*?) from nested type (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"d6886e7fad5e",1336500219,"Fixes a typo. note_xxx not not_xxx."}
[b]={"fa0a1f531f7d",1333588384,"Improve diagnostics for invalid use of non-static members / this:"},
[k]={{fb,211,"/// Diagnose a reference to a field with no object available.\nstatic void diagnoseInstanceReference(Sema &SemaRef, const CXXScopeSpec &SS, NamedDecl *Rep, const DeclarationNameInfo &nameInfo) {\n  if (IsField && InStaticMethod)\n  else if (ContextClass && RepClass && SS.isEmpty() && !InStaticMethod && !RepClass->Equals(ContextClass) && RepClass->Encloses(ContextClass))\n    SemaRef.Diag(Loc, diag::err_nested_non_static_member_use) << IsField << RepClass << nameInfo.getName() << ContextClass << Range;"}}
},
},
["note_widen_bitfield"]={
["err_nested_pointer_qualifier_mismatch"]={
[c]="widen this field to A bits to store all values of B",
[j]="... discards qualifiers in nested pointer types",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="widen this field to %0 bits to store all values of %1",
[e]="%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",
[b]=q,
[f]=n,
[a]="widen this field to (.*?) bits to store all values of (.*?)",
[g]="(?:(?:assigning to (.*?) from (.*?)|assigning to different types)|(?:passing (.*?) to parameter of type (.*?)|passing to parameter of different type)|(?:returning (.*?) from a function with result type (.*?)|returning from function with different return type)|(?:converting (.*?) to type (.*?)|converting between types)|(?:initializing (.*?) with an expression of type (.*?)|initializing with expression of different type)|(?:sending (.*?) to parameter of type (.*?)|sending to parameter of different type)|(?:casting (.*?) to type (.*?)|casting between types)) discards qualifiers in nested pointer types",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"329f24d6f6e7",1489514462,"Warn on enum assignment to bitfields that can\'t fit all values"}
[b]={"6f3de50ca73e",1257666394,"Test commit - minor terminology change to my recent patch suggested by John McCall"},
[k]={{q,15315,"bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, SourceLocation Loc, QualType DstType, QualType SrcType, Expr *SrcExpr, AssignmentAction Action, bool *Complained) {\n  case IncompatibleNestedPointerQualifiers:\n    if (getLangOpts().CPlusPlus) {\n      DiagKind = diag::err_nested_pointer_qualifier_mismatch;"}}
},
},
["note_within_field_of_type"]={
["err_nested_redefinition"]={
[c]="within field of type A declared here",
[j]="nested redefinition of A",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="within field of type %0 declared here",
[e]="nested redefinition of %0",
[b]=q,
[f]=n,
[a]="within field of type (.*?) declared here",
[g]="nested redefinition of (.*?)",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"efb38192b0b2",1374542616,"Error on more illegal kernel argument types for OpenCL"}
[b]={x,1237025389,w},
[k]={{p,15195,"/// This is invoked when we see \'struct foo\' or \'struct {\'.  In the\n/// former case, Name will be non-null.  In the later case, Name will be null.\n/// TagSpec indicates what kind of tag this is. TUK indicates whether this is a\n/// reference/declaration/definition of a tag.\n///\n/// \\param IsTypeSpecifier \\c true if this is a type-specifier (or\n/// trailing-type-specifier) other than one in an alias-declaration.\n///\n/// \\param SkipBody If non-null, will be set to indicate if the caller should\n/// skip the definition of this tag and treat it as if it were a declaration.\nDeclResult Sema::ActOnTag(Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, const ParsedAttributesView &Attrs, AccessSpecifier AS, SourceLocation ModulePrivateLoc, MultiTemplateParamsArg TemplateParameterLists, bool &OwnedDecl, bool &IsDependent, SourceLocation ScopedEnumKWLoc, bool ScopedEnumUsesClassTag, TypeResult UnderlyingType, bool IsTypeSpecifier, bool IsTemplateParamOrArg, OffsetOfKind OOK, SkipBodyInfo *SkipBody) {\n  if (!Previous.empty()) {\n    if (TagDecl *PrevTagDecl = dyn_cast<TagDecl>(PrevDecl)) {\n      // If this is a use of a previous tag, or if the tag is already declared\n      // in the same scope (so that the definition/declaration completes or\n      // rementions the tag), reuse the decl.\n      if (TUK == TUK_Reference || TUK == TUK_Friend || isDeclInScope(DirectPrevDecl, SearchDC, S, SS.isNotEmpty() || isMemberSpecialization)) {\n        if (!Invalid) {\n          // Diagnose attempts to redefine a tag.\n          if (TUK == TUK_Definition) {\n            if (NamedDecl *Def = PrevTagDecl->getDefinition()) {\n            } else {\n              if (TD->isBeingDefined()) {\n                Diag(NameLoc, diag::err_nested_redefinition) << Name;"}}
},
},
["note_xor_used_as_pow_silence"]={
["err_new_abi_tag_on_redeclaration"]={
[c]="replace expression with \'A\' ...to silence this warning",
[j]="\'abi_tag\' A missing in original declaration",
[d]=s,
[c]=l,
[f]=r,
[d]=m,
[h]="replace expression with \'%0\' %select{|or use \'xor\' instead of \'^\' }1to silence this warning",
[e]="\'abi_tag\' %0 missing in original declaration",
[b]=q,
[f]=n,
[a]="replace expression with \'(.*?)\' (?:|or use \'xor\' instead of \'\\^\' )to silence this warning",
[g]="\'abi_tag\' (.*?) missing in original declaration",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"920890e26812",1566155654,"[Diagnostics] Diagnose misused xor as pow"}
[b]={"bf17ecf59a9b",1457537453,"[GCC] PR23529 Sema part of attrbute abi_tag support"},
[k]={{p,2938,"/// mergeDeclAttributes - Copy attributes from the Old decl to the New one.\nvoid Sema::mergeDeclAttributes(NamedDecl *New, Decl *Old, AvailabilityMergeKind AMK) {\n  // Re-declaration cannot add abi_tag\'s.\n  if (const auto *NewAbiTagAttr = New->getAttr<AbiTagAttr>()) {\n    if (const auto *OldAbiTagAttr = Old->getAttr<AbiTagAttr>()) {\n      for (const auto &NewTag : NewAbiTagAttr->tags()) {\n        if (!llvm::is_contained(OldAbiTagAttr->tags(), NewTag)) {\n          Diag(NewAbiTagAttr->getLocation(), diag::err_new_abi_tag_on_redeclaration) << NewTag;"}}
},
},
["null_in_char_or_string"]={
["err_new_array_init_args"]={
[c]="null character(s) preserved in ... literal [-Wnull-character]",
[j]="array \'new\' cannot have initialization arguments",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"null-character"},
[e]="array \'new\' cannot have initialization arguments",
[m]="null-character",
[f]=n,
[h]="null character(s) preserved in %select{char|string}0 literal",
[g]="array \'new\' cannot have initialization arguments",
[b]=j,
[h]=a,
[a]="null character\\(s\\) preserved in (?:char|string) literal",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wnull\\-character[^\\]]*\\]",
[b]={"c6bb0e117f98",1272901523,"The array form of \'new\' can never have initializers."},
[e]=C,
[k]={{B,2010,"ExprResult Sema::BuildCXXNew(SourceRange Range, bool UseGlobal, SourceLocation PlacementLParen, MultiExprArg PlacementArgs, SourceLocation PlacementRParen, SourceRange TypeIdParens, QualType AllocType, TypeSourceInfo *AllocTypeInfo, std::optional<Expr *> ArraySize, SourceRange DirectInitRange, Expr *Initializer) {\n  // Array \'new\' can\'t have any initializers except empty parentheses.\n  // Initializer lists are also allowed, in C++11. Rely on the parser for the\n  // dialect distinction.\n  if (ArraySize && !isLegalArrayNewInitializer(initStyle, Initializer)) {\n    Diag(StartLoc, diag::err_new_array_init_args) << InitRange;"}}
[i]={"7f5ff2175f68",1447466995,"Use %select to merge similar diagnostics. NFC"}
},
},
["null_in_file"]={
["err_new_array_nonconst"]={
[c]="null character ignored [-Wnull-character]",
[j]="only the first dimension of an allocated array may have dynamic size",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"null-character"},
[e]="only the first dimension of an allocated array may have dynamic size",
[m]="null-character",
[f]=n,
[h]="null character ignored",
[g]="only the first dimension of an allocated array may have dynamic size",
[b]=j,
[h]=a,
[a]="null character ignored",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wnull\\-character[^\\]]*\\]",
[b]={x,1237025389,w},
[e]=C,
[k]={{B,1662,"/// Parsed a C++ \'new\' expression (C++ 5.3.4).\n///\n/// E.g.:\n/// @code new (memory) int[size][4] @endcode\n/// or\n/// @code ::new Foo(23, \"hello\") @endcode\n///\n/// \\param StartLoc The first location of the expression.\n/// \\param UseGlobal True if \'new\' was prefixed with \'::\'.\n/// \\param PlacementLParen Opening paren of the placement arguments.\n/// \\param PlacementArgs Placement new arguments.\n/// \\param PlacementRParen Closing paren of the placement arguments.\n/// \\param TypeIdParens If the type is in parens, the source range.\n/// \\param D The type to be allocated, as well as array dimensions.\n/// \\param Initializer The initializing expression or initializer-list, or null\n///  if there is none.\nExprResult Sema::ActOnCXXNew(SourceLocation StartLoc, bool UseGlobal, SourceLocation PlacementLParen, MultiExprArg PlacementArgs, SourceLocation PlacementRParen, SourceRange TypeIdParens, Declarator &D, Expr *Initializer) {\n  // Every dimension shall be of constant size.\n  if (ArraySize) {\n    for (unsigned I = 0, N = D.getNumTypeObjects(); I < N; ++I) {\n      if (Expr *NumElts = (Expr *)Array.NumElts) {\n        if (!NumElts->isTypeDependent() && !NumElts->isValueDependent()) {\n          // FIXME: GCC permits constant folding here. We should either do so consistently\n          // or not do so at all, rather than changing behavior in C++14 onwards.\n          if (getLangOpts().CPlusPlus14) {\n          } else {\n            Array.NumElts = VerifyIntegerConstantExpression(NumElts, nullptr, diag::err_new_array_nonconst, AllowFold).get();"}}
[i]={M,1236199783,L}
},
},
["override_keyword_hides_virtual_member_function"]={
["err_new_array_of_auto"]={
[c]="non-virtual member function marked \'A\' hides virtual member ...",
[j]="cannot allocate array of \'auto\'",
[d]=Bb,
[c]=l,
[f]=Gd,
[d]=m,
[h]="non-virtual member function marked \'%0\' hides virtual member %select{function|functions}1",
[e]="cannot allocate array of \'auto\'",
[b]=sd,
[f]=n,
[a]="non\\-virtual member function marked \'(.*?)\' hides virtual member (?:function|functions)",
[g]="cannot allocate array of \'auto\'",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"af65120bd382",1378425063,"Improve error for \"override\" + non-virtual func."}
[b]={"30482bc78659",1298171975,"Implement the C++0x deduced \'auto\' feature."},
[k]={{B,1634,"/// Parsed a C++ \'new\' expression (C++ 5.3.4).\n///\n/// E.g.:\n/// @code new (memory) int[size][4] @endcode\n/// or\n/// @code ::new Foo(23, \"hello\") @endcode\n///\n/// \\param StartLoc The first location of the expression.\n/// \\param UseGlobal True if \'new\' was prefixed with \'::\'.\n/// \\param PlacementLParen Opening paren of the placement arguments.\n/// \\param PlacementArgs Placement new arguments.\n/// \\param PlacementRParen Closing paren of the placement arguments.\n/// \\param TypeIdParens If the type is in parens, the source range.\n/// \\param D The type to be allocated, as well as array dimensions.\n/// \\param Initializer The initializing expression or initializer-list, or null\n///  if there is none.\nExprResult Sema::ActOnCXXNew(SourceLocation StartLoc, bool UseGlobal, SourceLocation PlacementLParen, MultiExprArg PlacementArgs, SourceLocation PlacementRParen, SourceRange TypeIdParens, Declarator &D, Expr *Initializer) {\n  // If the specified type is an array, unwrap it and save the expression.\n  if (D.getNumTypeObjects() > 0 && D.getTypeObject(0).Kind == DeclaratorChunk::Array) {\n    if (D.getDeclSpec().hasAutoTypeSpec())\n      return ExprError(Diag(Chunk.Loc, diag::err_new_array_of_auto) << D.getSourceRange());"}}
},
},
["override_keyword_only_allowed_on_virtual_member_functions"]={
["err_new_array_size_unknown_from_init"]={
[c]="only virtual member functions can be marked \'A\'",
[j]="cannot determine allocated array size from initializer",
[d]=Bb,
[c]=l,
[f]=Gd,
[d]=m,
[h]="only virtual member functions can be marked \'%0\'",
[e]="cannot determine allocated array size from initializer",
[b]=sd,
[f]=n,
[a]="only virtual member functions can be marked \'(.*?)\'",
[g]="cannot determine allocated array size from initializer",
[g]=p,
[h]=a,
[e]=o,
[i]=o,
[i]={"13a69102d779",1295498062,"Only allow virtual member functions to be marked \'override\' and \'final\'."}
[b]={"b9fb121a62de",1557114435,"[c++20] Implement P1009R2: allow omitting the array bound in an array"},
[k]={{B,2050,"ExprResult Sema::BuildCXXNew(SourceRange Range, bool UseGlobal, SourceLocation PlacementLParen, MultiExprArg PlacementArgs, SourceLocation PlacementRParen, SourceRange TypeIdParens, QualType AllocType, TypeSourceInfo *AllocTypeInfo, std::optional<Expr *> ArraySize, SourceRange DirectInitRange, Expr *Initializer) {\n  // If we can perform the initialization, and we\'ve not already done so,\n  // do it now.\n  if (!AllocType->isDependentType() && !Expr::hasAnyTypeDependentArguments(Exprs)) {\n    if (ArraySize && !*ArraySize) {\n      if (CAT) {\n      } else {\n        Diag(TypeRange.getEnd(), diag::err_new_array_size_unknown_from_init) << Initializer->getSourceRange();"}}
},
},
["pp_disabled_macro_expansion"]={
["err_new_incomplete_or_sizeless_type"]={
[c]="disabled expansion of recursive macro [-Wdisabled-macro-expansion]",
[j]="allocation of ... type A",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[t]=false,
[e]="allocation of %select{incomplete|sizeless}0 type %1",
[n]={"disabled-macro-expansion"},
[f]=n,
[m]="disabled-macro-expansion",
[g]="allocation of (?:incomplete|sizeless) type (.*?)",
[h]="disabled expansion of recursive macro",
[h]=a,
[b]=j,
[i]=o,
[a]="disabled expansion of recursive macro",
[b]={T,1576908663,U},
[g]=" \\[(?:\\-Werror,)?\\-Wdisabled\\-macro\\-expansion[^\\]]*\\]",
[k]={{B,2079,"/// Checks that a type is suitable as the allocated type\n/// in a new-expression.\nbool Sema::CheckAllocatedType(QualType AllocType, SourceLocation Loc, SourceRange R) {\n  else if (!AllocType->isDependentType() && RequireCompleteSizedType(Loc, AllocType, diag::err_new_incomplete_or_sizeless_type, R))"}}
[e]=C,
[i]={"123bec89ab8f",1325455264,"Added -Wdisabled-macro-expansion warning."}
},
},
["pp_err_elif_after_else"]={
["err_no_accessor_for_property"]={
[c]="... after #else",
[j]="no ... defined for property A",
[d]=Bb,
[c]=l,
[f]=Gd,
[d]=m,
[h]="%select{#elif|#elifdef|#elifndef}0 after #else",
[e]="no %select{getter|setter}0 defined for property %1",
[b]=sd,
[f]=n,
[a]="(?:\\#elif|\\#elifdef|\\#elifndef) after \\#else",
[g]="no (?:getter|setter) defined for property (.*?)",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={M,1236199783,L}
[b]={"213cf41a5874",1388075704,"s/getter_setter/accessor No functional changes intended."},
[k]={{pb,1202,"ExprResult MSPropertyOpBuilder::buildGet() {\n  if (!RefExpr->getPropertyDecl()->hasGetter()) {\n    S.Diag(RefExpr->getMemberLoc(), diag::err_no_accessor_for_property) << 0 /* getter */ << RefExpr->getPropertyDecl();"},{pb,1223,"ExprResult MSPropertyOpBuilder::buildSet(Expr *op, SourceLocation sl, bool captureSetValueAsResult) {\n  if (!RefExpr->getPropertyDecl()->hasSetter()) {\n    S.Diag(RefExpr->getMemberLoc(), diag::err_no_accessor_for_property) << 1 /* setter */ << RefExpr->getPropertyDecl();"}}
},
},
["pp_err_elif_without_if"]={
["err_no_base_classes"]={
[c]="... without #if",
[j]="invalid use of \'__super\', A has no base classes",
[d]=Bb,
[c]=l,
[f]=Gd,
[d]=m,
[h]="%select{#elif|#elifdef|#elifndef}0 without #if",
[e]="invalid use of \'__super\', %0 has no base classes",
[b]=sd,
[f]=n,
[a]="(?:\\#elif|\\#elifdef|\\#elifndef) without \\#if",
[g]="invalid use of \'__super\', (.*?) has no base classes",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={M,1236199783,L}
[b]={"67860249e064",1411691300,"-ms-extensions: Implement __super scope specifier (PR13236)."},
[k]={{cb,312,"bool Sema::ActOnSuperScopeSpecifier(SourceLocation SuperLoc, SourceLocation ColonColonLoc, CXXScopeSpec &SS) {\n  if (!RD) {\n  } else if (RD->getNumBases() == 0) {\n    Diag(SuperLoc, diag::err_no_base_classes) << RD->getName();"}}
},
},
["pp_err_else_after_else"]={
["err_no_declarators"]={
[c]="#else after #else",
[j]="declaration does not declare anything",
[d]=Bb,
[c]=l,
[f]=Gd,
[d]=m,
[h]="#else after #else",
[e]="declaration does not declare anything",
[b]=sd,
[f]=n,
[a]="\\#else after \\#else",
[g]="declaration does not declare anything",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={M,1236199783,L}
[b]={z,1236199783,A},
[k]={{p,4690,"/// ParsedFreeStandingDeclSpec - This method is invoked when a declspec with\n/// no declarator (e.g. \"struct foo;\") is parsed. It also accepts template\n/// parameters to cope with template friend declarations.\nDecl *Sema::ParsedFreeStandingDeclSpec(Scope *S, AccessSpecifier AS, DeclSpec &DS, const ParsedAttributesView &DeclAttrs, MultiTemplateParamsArg TemplateParams, bool IsExplicitInstantiation, RecordDecl *&AnonRecord) {\n  // C 6.7/2:\n  //  A declaration [...] shall declare at least a declarator [...], a tag,\n  //  or the members of an enumeration.\n  // C++ [dcl.dcl]p3:\n  //  [If there are no declarators], and except for the declaration of an\n  //  unnamed bit-field, the decl-specifier-seq shall introduce one or more\n  //  names into the program, or shall redeclare a name introduced by a\n  //  previous declaration.\n  if (!DeclaresAnything) {\n    Diag(DS.getBeginLoc(), (IsExplicitInstantiation || !TemplateParams.empty()) ? diag::err_no_declarators : diag::ext_no_declarators) << DS.getSourceRange();"}}
},
},
["pp_err_else_without_if"]={
["err_no_dynamic_cast_with_fno_rtti"]={
[c]="#else without #if",
[j]="use of dynamic_cast requires -frtti",
[d]=Bb,
[c]=l,
[f]=Gd,
[d]=m,
[h]="#else without #if",
[e]="use of dynamic_cast requires -frtti",
[b]=sd,
[f]=n,
[a]="\\#else without \\#if",
[g]="use of dynamic_cast requires \\-frtti",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={M,1236199783,L}
[b]={"cb6f943ada4c",1375345712,"Check dynamic_cast is not used with -fno-rtti, unless it is a noop or can be resolved statically."},
[k]={{"clang/lib/Sema/SemaCast.cpp",776,"/// CheckDynamicCast - Check that a dynamic_cast\\<DestType\\>(SrcExpr) is valid.\n/// Refer to C++ 5.2.7 for details. Dynamic casts are used mostly for runtime-\n/// checked downcasts in class hierarchies.\nvoid CastOperation::CheckDynamicCast() {\n  // dynamic_cast is not available with -fno-rtti.\n  // As an exception, dynamic_cast to void* is available because it doesn\'t\n  // use RTTI.\n  if (!Self.getLangOpts().RTTI && !DestPointee->isVoidType()) {\n    Self.Diag(OpRange.getBegin(), diag::err_no_dynamic_cast_with_fno_rtti);"}}
},
},
["pp_hash_warning"]={
["err_no_external_assembler"]={
[c]="A [-W#warnings]",
[j]="there is no external assembler that can be used on this platform",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"#warnings","cpp"},
[e]="there is no external assembler that can be used on this platform",
[m]="#warnings",
[f]=n,
[h]=Uc,
[g]="there is no external assembler that can be used on this platform",
[b]=j,
[h]=a,
[a]=Rc,
[i]=a,
[g]=" \\[(?:\\-Werror,)?\\-W\\#warnings[^\\]]*\\]",
[b]={"c8d4f0fa1d27",1385108866,"Tidy up the no-external-assembler diag"},
[e]="User-Defined Issue",
[k]={{"clang/lib/Driver/ToolChains/MSVC.cpp",394,"Tool *MSVCToolChain::buildAssembler() const {\n  getDriver().Diag(clang::diag::err_no_external_assembler);"},{"clang/lib/Driver/ToolChains/PS4CPU.cpp",268,"Tool *toolchains::PS5CPU::buildAssembler() const {\n  getDriver().Diag(clang::diag::err_no_external_assembler);"}}
[i]={M,1236199783,L}
},
},
["pp_include_macros_out_of_predefines"]={
["err_no_matching_local_friend"]={
[c]="the #__include_macros directive is only for internal use by -imacros",
[j]="no matching function found in local scope",
[d]=Bb,
[c]=l,
[f]=Gd,
[d]=m,
[h]="the #__include_macros directive is only for internal use by -imacros",
[e]="no matching function found in local scope",
[b]=sd,
[f]=n,
[a]="the \\#__include_macros directive is only for internal use by \\-imacros",
[g]="no matching function found in local scope",
[g]=p,
[h]=a,
[e]=C,
[i]=o,
[i]={"58a1eb0ba0e0",1239216400,"reject the #__include_macros directive unless it comes from the "}
[b]={"f7cfb2212c65",1286948715,"Support friend function declarations in local classes correctly."},
[k]={{p,7910,"/// Generate diagnostics for an invalid function redeclaration.\n///\n/// This routine handles generating the diagnostic messages for an invalid\n/// function redeclaration, including finding possible similar declarations\n/// or performing typo correction if there are no previous declarations with\n/// the same name.\n///\n/// Returns a NamedDecl iff typo correction was performed and substituting in\n/// the new declaration name does not cause new errors.\nstatic NamedDecl *DiagnoseInvalidRedeclaration(Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD, ActOnFDArgs &ExtraArgs, bool IsLocalFriend, Scope *S) {\n  unsigned DiagMsg = IsLocalFriend ? diag::err_no_matching_local_friend : NewFD->getFriendObjectKind() ? diag::err_qualified_friend_no_match : diag::err_member_decl_does_not_match;"}}
},
},
["pp_include_next_absolute_path"]={
["err_no_matching_local_friend_suggest"]={
[c]="#include_next in file found relative to primary source file or found by absolute path; will search from start of include path [-Winclude-next-absolute-path]",
[j]="no matching function A found in local scope; did you mean B?",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"include-next-absolute-path"},
[e]="no matching function %0 found in local scope; did you mean %3?",
[m]="include-next-absolute-path",
[f]=n,
[h]="#include_next in file found relative to primary source file or found by absolute path; will search from start of include path",
[g]="no matching function (.*?) found in local scope; did you mean (.*?)\\?",
[b]=j,
[h]=a,
[a]="\\#include_next in file found relative to primary source file or found by absolute path; will search from start of include path",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Winclude\\-next\\-absolute\\-path[^\\]]*\\]",
[b]={"fd81a350e262",1313691552,"Rework DiagnoseInvalidRedeclaration to add the ability to correct typos when"},
[e]=C,
[k]={{p,7970,"/// Generate diagnostics for an invalid function redeclaration.\n///\n/// This routine handles generating the diagnostic messages for an invalid\n/// function redeclaration, including finding possible similar declarations\n/// or performing typo correction if there are no previous declarations with\n/// the same name.\n///\n/// Returns a NamedDecl iff typo correction was performed and substituting in\n/// the new declaration name does not cause new errors.\nstatic NamedDecl *DiagnoseInvalidRedeclaration(Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD, ActOnFDArgs &ExtraArgs, bool IsLocalFriend, Scope *S) {\n  if (!Prev.empty()) {\n  } else if ((Correction = SemaRef.CorrectTypo(Prev.getLookupNameInfo(), Prev.getLookupKind(), S, &ExtraArgs.D.getCXXScopeSpec(), CCC, Sema::CTK_ErrorRecovery, IsLocalFriend ? nullptr : NewDC))) {\n    if (Result) {\n      SemaRef.diagnoseTypo(Correction, SemaRef.PDiag(IsLocalFriend ? diag::err_no_matching_local_friend_suggest : diag::err_member_decl_does_not_match_suggest) << Name << NewDC << IsDefinition);"}}
[i]={M,1236199783,L}
},
},
["pp_include_next_in_primary"]={
["err_no_matching_param"]={
[c]="#include_next in primary source file; will search from start of include path [-Winclude-next-outside-header]",
[j]="parameter named A is missing",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"include-next-outside-header"},
[e]="parameter named %0 is missing",
[m]="include-next-outside-header",
[f]=n,
[h]="#include_next in primary source file; will search from start of include path",
[g]="parameter named (.*?) is missing",
[b]=j,
[h]=a,
[a]="\\#include_next in primary source file; will search from start of include path",
[i]=s,
[g]=" \\[(?:\\-Werror,)?\\-Winclude\\-next\\-outside\\-header[^\\]]*\\]",
[b]={z,1236199783,A},
[e]=C,
[k]={{Q,1423,"/// ParseKNRParamDeclarations - Parse \'declaration-list[opt]\' which provides\n/// types for a function with a K&R-style identifier list for arguments.\nvoid Parser::ParseKNRParamDeclarations(Declarator &D) {\n  // Read all the argument declarations.\n  while (isDeclarationSpecifier(ImplicitTypenameContext::No)) {\n    // Handle the full declarator list.\n    while (true) {\n      if (Param &&\n        // Scan the argument list looking for the correct param to apply this\n        // type.\n        for (unsigned i = 0;; ++i) {\n          // C99 6.9.1p6: those declarators shall declare only identifiers from\n          // the identifier list.\n          if (i == FTI.NumParams) {\n            Diag(ParmDeclarator.getIdentifierLoc(), diag::err_no_matching_param) << ParmDeclarator.getIdentifier();"}}
[i]={M,1236199783,L}
},
},
["pp_invalid_string_literal"]={
["err_no_member"]={
[c]="invalid string literal, ignoring final \'\\\'",
[j]="no member named A in B",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[h]="invalid string literal, ignoring final \'\\\'",
[e]="no member named %0 in %1",
[b]=j,
[f]=n,
[a]="invalid string literal, ignoring final \'\\\\\'",
[g]="no member named (.*?) in (.*?)",
[g]=P,
[h]=a,
[e]=C,
[i]=o,
[i]={M,1236199783,L}
[b]={"e40876a50cf3",1255468604,"Unify our diagnostic printing for errors of the form, \"we didn\'t like"},
[k]={{eb,276,"static ExprResult buildMemberCall(Sema &S, Expr *Base, SourceLocation Loc, StringRef Name, MultiExprArg Args) {\n  // We meant exactly what we asked for. No need for typo correction.\n  if (auto *TE = dyn_cast<TypoExpr>(Result.get())) {\n    S.Diag(Loc, diag::err_no_member) << NameInfo.getName() << Base->getType()->getAsCXXRecordDecl() << Base->getSourceRange();"},{cb,740,"/// Build a new nested-name-specifier for \"identifier::\", as described\n/// by ActOnCXXNestedNameSpecifier.\n///\n/// \\param S Scope in which the nested-name-specifier occurs.\n/// \\param IdInfo Parser information about an identifier in the\n///        nested-name-spec.\n/// \\param EnteringContext If true, enter the context specified by the\n///        nested-name-specifier.\n/// \\param SS Optional nested name specifier preceding the identifier.\n/// \\param ScopeLookupResult Provides the result of name lookup within the\n///        scope of the nested-name-specifier that was computed at template\n///        definition time.\n/// \\param ErrorRecoveryLookup Specifies if the method is called to improve\n///        error recovery and what kind of recovery is performed.\n/// \\param IsCorrectedToColon If not null, suggestion of replace \'::\' -> \':\'\n///        are allowed.  The bool value pointed by this parameter is set to\n///      \'true\' if the identifier is treated as if it was followed by \':\',\n///        not \'::\'.\n/// \\param OnlyNamespace If true, only considers namespaces in lookup.\n///\n/// This routine differs only slightly from ActOnCXXNestedNameSpecifier, in\n/// that it contains an extra parameter \\p ScopeLookupResult, which provides\n/// the result of name lookup within the scope of the nested-name-specifier\n/// that was computed at template definition time.\n///\n/// If ErrorRecoveryLookup is true, then this call is used to improve error\n/// recovery.  This means that it should not emit diagnostics, it should\n/// just return true on failure.  It also means it should only return a valid\n/// scope if it *knows* that the result is correct.  It should not return in a\n/// dependent context, for example. Nor will it extend \\p SS with the scope\n/// specifier.\nbool Sema::BuildCXXNestedNameSpecifier(Scope *S, NestedNameSpecInfo &IdInfo, bool EnteringContext, CXXScopeSpec &SS, NamedDecl *ScopeLookupResult, bool ErrorRecoveryLookup, bool *IsCorrectedToColon, bool OnlyNamespace) {\n  if (!Found.empty()) {\n  } else if (SS.isSet())\n    Diag(IdInfo.IdentifierLoc, diag::err_no_member) << IdInfo.Identifier << LookupCtx << SS.getRange();"},{p,7097,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n  if (!getLangOpts().CPlusPlus) {\n  } else {\n    // Merge the decl with the existing one if appropriate.\n    if (!Previous.empty()) {\n    } else if (D.getCXXScopeSpec().isSet()) {\n      Diag(D.getIdentifierLoc(), diag::err_no_member) << Name << computeDeclContext(D.getCXXScopeSpec(), true) << D.getCXXScopeSpec().getRange();"},{r,10982,"/// Builds a using declaration.\n///\n/// \\param IsInstantiation - Whether this call arises from an\n///  instantiation of an unresolved using declaration.  We treat\n///  the lookup differently for these declarations.\nNamedDecl *Sema::BuildUsingDeclaration(Scope *S, AccessSpecifier AS, SourceLocation UsingLoc, bool HasTypenameKeyword, SourceLocation TypenameLoc, CXXScopeSpec &SS, DeclarationNameInfo NameInfo, SourceLocation EllipsisLoc, const ParsedAttributesView &AttrList, bool IsInstantiation, bool IsUsingIfExists) {\n  // Try to correct typos if possible. If constructor name lookup finds no\n  // results, that means the named class has no explicit constructors, and we\n  // suppressed declaring implicit ones (probably because it\'s dependent or\n  // invalid).\n  if (R.empty() && NameInfo.getName().getNameKind() != DeclarationName::CXXConstructorName) {\n    if (TypoCorrection Corrected = CorrectTypo(R.getLookupNameInfo(), R.getLookupKind(), S, &SS, CCC, CTK_ErrorRecovery)) {\n    } else {\n      Diag(IdentLoc, diag::err_no_member) << NameInfo.getName() << LookupContext << SS.getRange();"},{q,1944,"static void emitEmptyLookupTypoDiagnostic(const TypoCorrection &TC, Sema &SemaRef, const CXXScopeSpec &SS, DeclarationName Typo, SourceLocation TypoLoc, ArrayRef<Expr *> Args, unsigned DiagnosticID, unsigned DiagnosticSuggestID) {\n  if (!TC) {\n    // Emit a special diagnostic for failed member lookups.\n    // FIXME: computing the declaration context might fail here (?)\n    if (Ctx)\n      SemaRef.Diag(TypoLoc, diag::err_no_member) << Typo << Ctx << SS.getRange();"},{q,2145,"/// Diagnose an empty lookup.\n///\n/// \\return false if new lookup candidates were found\nbool Sema::DiagnoseEmptyLookup(Scope *S, CXXScopeSpec &SS, LookupResult &R, CorrectionCandidateCallback &CCC, TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef<Expr *> Args, TypoExpr **Out) {\n  // Emit a special diagnostic for failed member lookups.\n  // FIXME: computing the declaration context might fail here (?)\n  if (!SS.isEmpty()) {\n    Diag(R.getNameLoc(), diag::err_no_member) << Name << computeDeclContext(SS, false) << SS.getRange();"},{q,2448,"/// BuildQualifiedDeclarationNameExpr - Build a C++ qualified\n/// declaration name, generally during template instantiation.\n/// There\'s a large number of things which don\'t need to be done along\n/// this path.\nExprResult Sema::BuildQualifiedDeclarationNameExpr(CXXScopeSpec &SS, const DeclarationNameInfo &NameInfo, bool IsAddressOfOperand, const Scope *S, TypeSourceInfo **RecoveryTSI) {\n  if (R.empty()) {\n    Diag(NameInfo.getLoc(), diag::err_no_member) << NameInfo.getName() << DC << SS.getRange();"},{q,14471,"ExprResult Sema::BuildBuiltinOffsetOf(SourceLocation BuiltinLoc, TypeSourceInfo *TInfo, ArrayRef<OffsetOfComponent> Components, SourceLocation RParenLoc) {\n  for (const OffsetOfComponent &OC : Components) {\n    if (!MemberDecl)\n      return ExprError(Diag(BuiltinLoc, diag::err_no_member) << OC.U.IdentInfo << RD << SourceRange(OC.LocStart, OC.LocEnd));"},{fb,619,"static bool LookupMemberExprInRecord(Sema &SemaRef, LookupResult &R, Expr *BaseExpr, const RecordType *RTy, SourceLocation OpLoc, bool IsArrow, CXXScopeSpec &SS, bool HasTemplateArgs, SourceLocation TemplateKWLoc, TypoExpr *&TE) {\n  TE = SemaRef.CorrectTypoDelayed(\n      [=, &SemaRef](const TypoCorrection &TC) {\n        if (TC) {\n        } else {\n          SemaRef.Diag(TypoLoc, diag::err_no_member) << Typo << DC << BaseRange;"},{fb,841,"ExprResult Sema::BuildMemberReferenceExpr(Expr *BaseExpr, QualType BaseExprType, SourceLocation OpLoc, bool IsArrow, const CXXScopeSpec &SS, SourceLocation TemplateKWLoc, NamedDecl *FirstQualifierInScope, LookupResult &R, const TemplateArgumentListInfo *TemplateArgs, const Scope *S, bool SuppressQualifierCheck, ActOnMemberAccessExtraArgs *ExtraArgs) {\n  if (R.empty()) {\n    Diag(R.getNameLoc(), diag::err_no_member) << MemberName << DC << (BaseExpr ? BaseExpr->getSourceRange() : SourceRange());"},{K,4175,"// We actually only call this from template instantiation.\nExprResult Sema::BuildQualifiedTemplateIdExpr(CXXScopeSpec &SS, SourceLocation TemplateKWLoc, const DeclarationNameInfo &NameInfo, const TemplateArgumentListInfo *TemplateArgs) {\n  if (R.empty()) {\n    Diag(NameInfo.getLoc(), diag::err_no_member) << NameInfo.getName() << DC << SS.getRange();"},{K,4272,"/// Form a template name from a name that is syntactically required to name a\n/// template, either due to use of the \'template\' keyword or because a name in\n/// this syntactic context is assumed to name a template (C++ [temp.names]p2-4).\n///\n/// This action forms a template name given the name of the template and its\n/// optional scope specifier. This is used when the \'template\' keyword is used\n/// or when the parsing context unambiguously treats a following \'<\' as\n/// introducing a template argument list. Note that this may produce a\n/// non-dependent template name if we can perform the lookup now and identify\n/// the named template.\n///\n/// For example, given \"x.MetaFun::template apply\", the scope specifier\n/// \\p SS will be \"MetaFun::\", \\p TemplateKWLoc contains the location\n/// of the \"template\" keyword, and \"apply\" is the \\p Name.\nTemplateNameKind Sema::ActOnTemplateName(Scope *S, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, const UnqualifiedId &Name, ParsedType ObjectType, bool EnteringContext, TemplateTy &Result, bool AllowInjectedClassName) {\n  if (!MemberOfUnknownSpecialization) {\n    if (!LookupTemplateName(R, S, SS, ObjectType.get(), EnteringContext, MOUS, RTK, nullptr, /*AllowTypoCorrection=*/false) && !R.isAmbiguous()) {\n      if (LookupCtx)\n        Diag(Name.getBeginLoc(), diag::err_no_member) << DNI.getName() << LookupCtx << SS.getRange();"}}
},
},
["pp_macro_not_used"]={
["err_no_member_overloaded_arrow"]={
[c]="macro is not used [-Wunused-macros]",
[j]="no member named A in B; did you mean to use \'->\' instead of \'.\'?",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[t]=false,
[e]="no member named %0 in %1; did you mean to use \'->\' instead of \'.\'?",
[n]={"unused-macros"},
[f]=n,
[m]="unused-macros",
[g]="no member named (.*?) in (.*?); did you mean to use \'\\-\\>\' instead of \'\\.\'\\?",
[h]="macro is not used",
[h]=a,
[b]=j,
[i]=o,
[a]="macro is not used",
[b]={"76e07347ba02",1335383394,"Add an error message with fixit hint for changing \'.\' to \'->\'."},
[g]=" \\[(?:\\-Werror,)?\\-Wunused\\-macros[^\\]]*\\]",
[k]={{fb,836,"ExprResult Sema::BuildMemberReferenceExpr(Expr *BaseExpr, QualType BaseExprType, SourceLocation OpLoc, bool IsArrow, const CXXScopeSpec &SS, SourceLocation TemplateKWLoc, NamedDecl *FirstQualifierInScope, LookupResult &R, const TemplateArgumentListInfo *TemplateArgs, const Scope *S, bool SuppressQualifierCheck, ActOnMemberAccessExtraArgs *ExtraArgs) {\n  if (R.empty()) {\n    if (ExtraArgs) {\n      if (RetryExpr.isUsable()) {\n        Diag(OpLoc, diag::err_no_member_overloaded_arrow) << MemberName << DC << FixItHint::CreateReplacement(OpLoc, \"->\");"}}
[e]=C,
[i]={M,1236199783,L}
},
},
["pp_nonportable_path"]={
["err_no_member_suggest"]={
[c]="non-portable path to file \'A\'; specified path differs in case from file name on disk [-Wnonportable-include-path]",
[j]="no member named A in B; did you mean ...C?",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"nonportable-include-path"},
[e]="no member named %0 in %1; did you mean %select{|simply }2%3?",
[m]="nonportable-include-path",
[f]=n,
[h]="non-portable path to file \'%0\'; specified path differs in case from file name on disk",
[g]="no member named (.*?) in (.*?); did you mean (?:|simply )(.*?)\\?",
[b]=j,
[h]=a,
[a]="non\\-portable path to file \'(.*?)\'; specified path differs in case from file name on disk",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wnonportable\\-include\\-path[^\\]]*\\]",
[b]={"598b08f8182e",1262236813,"Implement typo correction for id-expressions, e.g.,"},
[e]=C,
[k]={{cb,569,"/// Build a new nested-name-specifier for \"identifier::\", as described\n/// by ActOnCXXNestedNameSpecifier.\n///\n/// \\param S Scope in which the nested-name-specifier occurs.\n/// \\param IdInfo Parser information about an identifier in the\n///        nested-name-spec.\n/// \\param EnteringContext If true, enter the context specified by the\n///        nested-name-specifier.\n/// \\param SS Optional nested name specifier preceding the identifier.\n/// \\param ScopeLookupResult Provides the result of name lookup within the\n///        scope of the nested-name-specifier that was computed at template\n///        definition time.\n/// \\param ErrorRecoveryLookup Specifies if the method is called to improve\n///        error recovery and what kind of recovery is performed.\n/// \\param IsCorrectedToColon If not null, suggestion of replace \'::\' -> \':\'\n///        are allowed. The bool value pointed by this parameter is set to\n///      \'true\' if the identifier is treated as if it was followed by \':\',\n///        not \'::\'.\n/// \\param OnlyNamespace If true, only considers namespaces in lookup.\n///\n/// This routine differs only slightly from ActOnCXXNestedNameSpecifier, in\n/// that it contains an extra parameter \\p ScopeLookupResult, which provides\n/// the result of name lookup within the scope of the nested-name-specifier\n/// that was computed at template definition time.\n///\n/// If ErrorRecoveryLookup is true, then this call is used to improve error\n/// recovery.  This means that it should not emit diagnostics, it should\n/// just return true on failure.  It also means it should only return a valid\n/// scope if it *knows* that the result is correct.  It should not return in a\n/// dependent context, for example. Nor will it extend \\p SS with the scope\n/// specifier.\nbool Sema::BuildCXXNestedNameSpecifier(Scope *S, NestedNameSpecInfo &IdInfo, bool EnteringContext, CXXScopeSpec &SS, NamedDecl *ScopeLookupResult, bool ErrorRecoveryLookup, bool *IsCorrectedToColon, bool OnlyNamespace) {\n  if (Found.empty() && !ErrorRecoveryLookup && !getLangOpts().MSVCCompat) {\n    if (TypoCorrection Corrected = CorrectTypo(Found.getLookupNameInfo(), Found.getLookupKind(), S, &SS, CCC, CTK_ErrorRecovery, LookupCtx, EnteringContext)) {\n      if (LookupCtx) {\n        diagnoseTypo(Corrected, PDiag(diag::err_no_member_suggest) << Name << LookupCtx << DroppedSpecifier << SS.getRange());"},{p,890,"Corrected:\n  case LookupResult::NotFound:\n    // Perform typo correction to determine if there is another name that is\n    // close to this name.\n    if (!SecondTry && CCC) {\n      if (TypoCorrection Corrected = CorrectTypo(Result.getLookupNameInfo(), Result.getLookupKind(), S, &SS, *CCC, CTK_ErrorRecovery)) {\n        unsigned QualifiedDiag = diag::err_no_member_suggest;"},{r,10946,"/// Builds a using declaration.\n///\n/// \\param IsInstantiation - Whether this call arises from an\n///  instantiation of an unresolved using declaration.  We treat\n///  the lookup differently for these declarations.\nNamedDecl *Sema::BuildUsingDeclaration(Scope *S, AccessSpecifier AS, SourceLocation UsingLoc, bool HasTypenameKeyword, SourceLocation TypenameLoc, CXXScopeSpec &SS, DeclarationNameInfo NameInfo, SourceLocation EllipsisLoc, const ParsedAttributesView &AttrList, bool IsInstantiation, bool IsUsingIfExists) {\n  // Try to correct typos if possible. If constructor name lookup finds no\n  // results, that means the named class has no explicit constructors, and we\n  // suppressed declaring implicit ones (probably because it\'s dependent or\n  // invalid).\n  if (R.empty() && NameInfo.getName().getNameKind() != DeclarationName::CXXConstructorName) {\n    if (TypoCorrection Corrected = CorrectTypo(R.getLookupNameInfo(), R.getLookupKind(), S, &SS, CCC, CTK_ErrorRecovery)) {\n      diagnoseTypo(Corrected, PDiag(diag::err_no_member_suggest) << NameInfo.getName() << LookupContext << 0 << SS.getRange());"},{q,1956,"static void emitEmptyLookupTypoDiagnostic(const TypoCorrection &TC, Sema &SemaRef, const CXXScopeSpec &SS, DeclarationName Typo, SourceLocation TypoLoc, ArrayRef<Expr *> Args, unsigned DiagnosticID, unsigned DiagnosticSuggestID) {\n  if (!Ctx)\n  else\n    SemaRef.diagnoseTypo(TC, SemaRef.PDiag(diag::err_no_member_suggest) << Typo << Ctx << DroppedSpecifier << SS.getRange(), SemaRef.PDiag(NoteID));"},{q,2134,"/// Diagnose an empty lookup.\n///\n/// \\return false if new lookup candidates were found\nbool Sema::DiagnoseEmptyLookup(Scope *S, CXXScopeSpec &SS, LookupResult &R, CorrectionCandidateCallback &CCC, TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef<Expr *> Args, TypoExpr **Out) {\n  if (S && Out) {\n  } else if (S && (Corrected = CorrectTypo(R.getLookupNameInfo(), R.getLookupKind(), S, &SS, CCC, CTK_ErrorRecovery))) {\n    if (AcceptableWithRecovery || AcceptableWithoutRecovery) {\n      if (SS.isEmpty())\n      else\n        diagnoseTypo(Corrected, PDiag(diag::err_no_member_suggest) << Name << computeDeclContext(SS, false) << DroppedSpecifier << SS.getRange(), PDiag(NoteID), AcceptableWithRecovery);"},{fb,617,"static bool LookupMemberExprInRecord(Sema &SemaRef, LookupResult &R, Expr *BaseExpr, const RecordType *RTy, SourceLocation OpLoc, bool IsArrow, CXXScopeSpec &SS, bool HasTemplateArgs, SourceLocation TemplateKWLoc, TypoExpr *&TE) {\n  TE = SemaRef.CorrectTypoDelayed(\n      [=, &SemaRef](const TypoCorrection &TC) {\n        if (TC) {\n          SemaRef.diagnoseTypo(TC, SemaRef.PDiag(diag::err_no_member_suggest) << Typo << DC << DroppedSpecifier << SS.getRange());"},{"clang/unittests/Sema/ExternalSemaSourceTest.cpp",62,"/// Counts the number of typo-correcting diagnostics correcting from one name to\n/// another while still passing all diagnostics along a chain of consumers.\nclass DiagnosticWatcher : public clang::DiagnosticConsumer {\n  void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel, const Diagnostic &Info) override {\n    } else if (Info.getID() == diag::err_no_member_suggest) {"}}
[i]={"fc5d13d9b180",1464979971,"Use the name of the file on disk to issue a new diagnostic about non-portable #include and #import p..."}
},
},
["pp_nonportable_system_path"]={
["err_no_member_template"]={
[c]="non-portable path to file \'A\'; specified path differs in case from file name on disk [-Wnonportable-system-include-path]",
[j]="no template named A in B",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[t]=false,
[e]="no template named %0 in %1",
[n]={"nonportable-system-include-path"},
[f]=n,
[m]="nonportable-system-include-path",
[g]="no template named (.*?) in (.*?)",
[h]="non-portable path to file \'%0\'; specified path differs in case from file name on disk",
[h]=a,
[b]=j,
[i]=o,
[a]="non\\-portable path to file \'(.*?)\'; specified path differs in case from file name on disk",
[b]={"52f8d19ceda6",1494451936,"Improve diagnosis of unknown template name."},
[g]=" \\[(?:\\-Werror,)?\\-Wnonportable\\-system\\-include\\-path[^\\]]*\\]",
[k]={{p,719,"void Sema::DiagnoseUnknownTypeName(IdentifierInfo *&II, SourceLocation IILoc, Scope *S, CXXScopeSpec *SS, ParsedType &SuggestedType, bool IsTemplateName) {\n  if (!SS || (!SS->isSet() && !SS->isInvalid()))\n  else if (DeclContext *DC = computeDeclContext(*SS, false))\n    Diag(IILoc, IsTemplateName ? diag::err_no_member_template : diag::err_typename_nested_not_found) << II << DC << SS->getRange();"}}
[e]=C,
[i]={"e8533670bf22",1465837398,"Use the name of the file on disk to issue a new diagnostic about non-portable #include and #import p..."}
},
},
["pp_out_of_date_dependency"]={
["err_no_member_template_suggest"]={
[c]="current file is older than dependency A",
[j]="no template named A in B; did you mean ...C?",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[h]="current file is older than dependency %0",
[e]="no template named %0 in %1; did you mean %select{|simply }2%3?",
[b]=j,
[f]=n,
[a]="current file is older than dependency (.*?)",
[g]="no template named (.*?) in (.*?); did you mean (?:|simply )(.*?)\\?",
[g]=P,
[h]=a,
[e]=C,
[i]=o,
[i]={M,1236199783,L}
[b]={"ff18cc114111",1262247077,"Typo correction for template names, e.g.,"},
[k]={{p,681,"void Sema::DiagnoseUnknownTypeName(IdentifierInfo *&II, SourceLocation IILoc, Scope *S, CXXScopeSpec *SS, ParsedType &SuggestedType, bool IsTemplateName) {\n  if (TypoCorrection Corrected = CorrectTypo(DeclarationNameInfo(II, IILoc), LookupOrdinaryName, S, SS, CCC, CTK_ErrorRecovery)) {\n    if (Corrected.isKeyword()) {\n    } else {\n      // We found a similarly-named type or interface; suggest that.\n      if (!SS || !SS->isSet()) {\n      } else if (DeclContext *DC = computeDeclContext(*SS, false)) {\n        diagnoseTypo(Corrected, PDiag(IsTemplateName ? diag::err_no_member_template_suggest : diag::err_unknown_nested_typename_suggest) << II << DC << DroppedSpecifier << SS->getRange(), CanRecover);"},{p,896,"Corrected:\n  case LookupResult::NotFound:\n    // Perform typo correction to determine if there is another name that is\n    // close to this name.\n    if (!SecondTry && CCC) {\n      if (TypoCorrection Corrected = CorrectTypo(Result.getLookupNameInfo(), Result.getLookupKind(), S, &SS, *CCC, CTK_ErrorRecovery)) {\n        if (getLangOpts().CPlusPlus && NextToken.is(tok::less) && UnderlyingFirstDecl && isa<TemplateDecl>(UnderlyingFirstDecl)) {\n          QualifiedDiag = diag::err_no_member_template_suggest;"},{K,472,"bool Sema::LookupTemplateName(LookupResult &Found, Scope *S, CXXScopeSpec &SS, QualType ObjectType, bool EnteringContext, bool &MemberOfUnknownSpecialization, RequiredTemplateKind RequiredTemplate, AssumedTemplateKind *ATK, bool AllowTypoCorrection) {\n  if (Found.empty() && !IsDependent && AllowTypoCorrection) {\n    if (TypoCorrection Corrected = CorrectTypo(Found.getLookupNameInfo(), Found.getLookupKind(), S, &SS, FilterCCC, CTK_ErrorRecovery, LookupCtx)) {\n      if (Found.isAmbiguous()) {\n      } else if (!Found.empty()) {\n        if (LookupCtx) {\n          diagnoseTypo(Corrected, PDiag(diag::err_no_member_template_suggest) << Name << LookupCtx << DroppedSpecifier << SS.getRange());"}}
},
},
["pp_poisoning_existing_macro"]={
["err_no_nsconstant_string_class"]={
[c]="poisoning existing macro",
[j]="cannot find interface declaration for A",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[h]="poisoning existing macro",
[e]="cannot find interface declaration for %0",
[b]=j,
[f]=n,
[a]="poisoning existing macro",
[g]="cannot find interface declaration for (.*?)",
[g]=P,
[h]=a,
[e]=C,
[i]=o,
[i]={M,1236199783,L}
[b]={"0731763efc6f",1272064744,"With -fno-constant-cfstrrings, class NSConstantString"},
[k]={{O,106,"ExprResult Sema::BuildObjCStringLiteral(SourceLocation AtLoc, StringLiteral *S) {\n  if (!Ty.isNull()) {\n  } else if (getLangOpts().NoConstantCFStrings) {\n    if (ObjCInterfaceDecl *StrIF = dyn_cast_or_null<ObjCInterfaceDecl>(IF)) {\n    } else {\n      Diag(S->getBeginLoc(), diag::err_no_nsconstant_string_class) << NSIdent << S->getSourceRange();"}}
},
},
["pp_pragma_once_in_main_file"]={
["err_no_submodule"]={
[c]="#pragma once in main file [-Wpragma-once-outside-header]",
[j]="no submodule named A in module \'B\'",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"pragma-once-outside-header"},
[e]="no submodule named %0 in module \'%1\'",
[m]="pragma-once-outside-header",
[f]=n,
[h]="#pragma once in main file",
[g]="no submodule named (.*?) in module \'(.*?)\'",
[b]=j,
[h]=a,
[a]="\\#pragma once in main file",
[i]=a,
[g]=" \\[(?:\\-Werror,)?\\-Wpragma\\-once\\-outside\\-header[^\\]]*\\]",
[b]={"5196bc6b39b5",1322625824,"When loading a module that involves submodules (e.g., std.vector),"},
[e]=C,
[k]={{db,1712,"ModuleLoadResult CompilerInstance::loadModule(SourceLocation ImportLoc, ModuleIdPath Path, Module::NameVisibilityKind Visibility, bool IsInclusionDirective) {\n  for (unsigned I = 1, N = Path.size(); I != N; ++I) {\n    if (!Sub) {\n      getDiagnostics().Report(Path[I].second, diag::err_no_submodule) << Path[I].first << Module->getFullModuleName() << SourceRange(Path[0].second, Path[I - 1].second);"}}
[i]={M,1236199783,L}
},
},
["pp_pragma_sysheader_in_main_file"]={
["err_no_submodule_suggest"]={
[c]="#pragma system_header ignored in main file [-Wpragma-system-header-outside-header]",
[j]="no submodule named A in module \'B\'; did you mean \'C\'?",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"pragma-system-header-outside-header"},
[e]="no submodule named %0 in module \'%1\'; did you mean \'%2\'?",
[m]="pragma-system-header-outside-header",
[f]=n,
[h]="#pragma system_header ignored in main file",
[g]="no submodule named (.*?) in module \'(.*?)\'; did you mean \'(.*?)\'\\?",
[b]=j,
[h]=a,
[a]="\\#pragma system_header ignored in main file",
[i]=a,
[g]=" \\[(?:\\-Werror,)?\\-Wpragma\\-system\\-header\\-outside\\-header[^\\]]*\\]",
[b]={"5196bc6b39b5",1322625824,"When loading a module that involves submodules (e.g., std.vector),"},
[e]=C,
[k]={{db,1703,"ModuleLoadResult CompilerInstance::loadModule(SourceLocation ImportLoc, ModuleIdPath Path, Module::NameVisibilityKind Visibility, bool IsInclusionDirective) {\n  for (unsigned I = 1, N = Path.size(); I != N; ++I) {\n    if (!Sub) {\n      // If there was a clear winner, user it.\n      if (Best.size() == 1) {\n        getDiagnostics().Report(Path[I].second, diag::err_no_submodule_suggest) << Path[I].first << Module->getFullModuleName() << Best[0] << SourceRange(Path[0].second, Path[I - 1].second) << FixItHint::CreateReplacement(SourceRange(Path[I].second), Best[0]);"}}
[i]={M,1236199783,L}
},
},
["remark_cc1_round_trip_generated"]={
["err_no_subobject_property_setting"]={
[c]="generated arguments #A in round-trip: B [-Rround-trip-cc1-args]",
[j]="expression is not assignable",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="expression is not assignable",
[n]={"round-trip-cc1-args"},
[f]=n,
[m]="round-trip-cc1-args",
[g]="expression is not assignable",
[h]="generated arguments #%0 in round-trip: %1",
[h]=a,
[b]=hc,
[i]=o,
[a]="generated arguments \\#(.*?) in round\\-trip\\: (.*?)",
[b]={gb,1480718311,ib},
[g]=p,
[k]={{q,12381,"/// CheckForModifiableLvalue - Verify that E is a modifiable lvalue.  If not,\n/// emit an error and return true.  If so, return false.\nstatic bool CheckForModifiableLvalue(Expr *E, SourceLocation Loc, Sema &S) {\n  case Expr::MLV_SubObjCPropertySetting:\n    DiagID = diag::err_no_subobject_property_setting;"}}
[e]=p,
[i]={"0175999805cf",1585492323,"[AMDGPU] Add options -mamdgpu-ieee -mno-amdgpu-ieee"}
},
},
["remark_fe_backend_optimization_remark"]={
["err_no_suitable_delete_member_function_found"]={
[c]="A [-Rpass]",
[j]="no suitable member A in B",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="no suitable member %0 in %1",
[n]={"pass"},
[f]=n,
[m]="pass",
[g]="no suitable member (.*?) in (.*?)",
[h]=Uc,
[h]=a,
[b]=hc,
[i]=o,
[a]=Rc,
[b]={"2c9e274e57c6",1258303395,"If we find a deallocation function in the class scope, but it is a placement function we should not ..."},
[g]=" \\[[^\\]]*\\-Rpass[^\\]]*\\]",
[k]={{B,2814,"bool Sema::FindDeallocationFunction(SourceLocation StartLoc, CXXRecordDecl *RD, DeclarationName Name, FunctionDecl *&Operator, bool Diagnose, bool WantSize, bool WantAligned) {\n  // We did find operator delete/operator delete[] declarations, but\n  // none of them were suitable.\n  if (!Found.empty()) {\n    if (Diagnose) {\n      Diag(StartLoc, diag::err_no_suitable_delete_member_function_found) << Name << RD;"}}
[e]=Tc,
[i]={"829b1700484d",1397667264,"Add support for optimization reports."}
},
},
["remark_fe_backend_optimization_remark_analysis"]={
["err_no_super_class_message"]={
[c]="A [-Rpass-analysis]",
[j]="no @interface declaration found in class messaging of A",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="no @interface declaration found in class messaging of %0",
[n]={"pass-analysis"},
[f]=n,
[m]="pass-analysis",
[g]="no @interface declaration found in class messaging of (.*?)",
[h]=Uc,
[h]=a,
[b]=hc,
[i]=o,
[a]=Rc,
[b]={gb,1480718311,ib},
[g]=" \\[[^\\]]*\\-Rpass\\-analysis[^\\]]*\\]",
[k]={{O,1939,"ExprResult Sema::ActOnSuperMessage(Scope *S, SourceLocation SuperLoc, Selector Sel, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg Args) {\n  if (!Class) {\n    Diag(SuperLoc, diag::err_no_super_class_message) << Method->getDeclName();"}}
[e]=Tc,
[i]={"d23ec94393bf",1401393306,"Add flags -Rpass-missed and -Rpass-analysis."}
},
},
["remark_fe_backend_optimization_remark_analysis_aliasing"]={
["err_no_template"]={
[c]="A; 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! [-Rpass-analysis]",
[j]="no template named A",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="no template named %0",
[n]={"pass-analysis"},
[f]=n,
[m]="pass-analysis",
[g]="no template named (.*?)",
[h]="%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!",
[h]=a,
[b]=hc,
[i]=o,
[a]="(.*?); 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\\!",
[b]={"52f8d19ceda6",1494451936,"Improve diagnosis of unknown template name."},
[g]=" \\[[^\\]]*\\-Rpass\\-analysis[^\\]]*\\]",
[k]={{p,717,"void Sema::DiagnoseUnknownTypeName(IdentifierInfo *&II, SourceLocation IILoc, Scope *S, CXXScopeSpec *SS, ParsedType &SuggestedType, bool IsTemplateName) {\n  if (!SS || (!SS->isSet() && !SS->isInvalid()))\n    Diag(IILoc, IsTemplateName ? diag::err_no_template : diag::err_unknown_typename) << II;"},{K,3454,"bool Sema::resolveAssumedTemplateNameAsType(Scope *S, TemplateName &Name, SourceLocation NameLoc, bool Diagnose) {\n  if (Diagnose)\n    Diag(R.getNameLoc(), diag::err_no_template) << R.getLookupName();"}}
[e]=Tc,
[i]={"034baf615477",1439247916,"Append options for vectorization when pointer checking threshold is exceeded."}
},
},
["remark_fe_backend_optimization_remark_analysis_fpcommute"]={
["err_no_template_suggest"]={
[c]="A; allow reordering by specifying \'#pragma clang loop vectorize(enable)\' before the loop or by providing the compiler option \'-ffast-math\'. [-Rpass-analysis]",
[j]="no template named A; did you mean B?",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="no template named %0; did you mean %1?",
[n]={"pass-analysis"},
[f]=n,
[m]="pass-analysis",
[g]="no template named (.*?); did you mean (.*?)\\?",
[h]="%0; allow reordering by specifying \'#pragma clang loop vectorize(enable)\' before the loop or by providing the compiler option \'-ffast-math\'.",
[h]=a,
[b]=hc,
[i]=o,
[a]="(.*?); allow reordering by specifying \'\\#pragma clang loop vectorize\\(enable\\)\' before the loop or by providing the compiler option \'\\-ffast\\-math\'\\.",
[b]={"ff18cc114111",1262247077,"Typo correction for template names, e.g.,"},
[g]=" \\[[^\\]]*\\-Rpass\\-analysis[^\\]]*\\]",
[k]={{p,672,"void Sema::DiagnoseUnknownTypeName(IdentifierInfo *&II, SourceLocation IILoc, Scope *S, CXXScopeSpec *SS, ParsedType &SuggestedType, bool IsTemplateName) {\n  if (TypoCorrection Corrected = CorrectTypo(DeclarationNameInfo(II, IILoc), LookupOrdinaryName, S, SS, CCC, CTK_ErrorRecovery)) {\n    if (Corrected.isKeyword()) {\n      diagnoseTypo(Corrected, PDiag(IsTemplateName ? diag::err_no_template_suggest : diag::err_unknown_typename_suggest) << II);"},{p,677,"void Sema::DiagnoseUnknownTypeName(IdentifierInfo *&II, SourceLocation IILoc, Scope *S, CXXScopeSpec *SS, ParsedType &SuggestedType, bool IsTemplateName) {\n  if (TypoCorrection Corrected = CorrectTypo(DeclarationNameInfo(II, IILoc), LookupOrdinaryName, S, SS, CCC, CTK_ErrorRecovery)) {\n    if (Corrected.isKeyword()) {\n    } else {\n      // We found a similarly-named type or interface; suggest that.\n      if (!SS || !SS->isSet()) {\n        diagnoseTypo(Corrected, PDiag(IsTemplateName ? diag::err_no_template_suggest : diag::err_unknown_typename_suggest) << II, CanRecover);"},{p,895,"Corrected:\n  case LookupResult::NotFound:\n    // Perform typo correction to determine if there is another name that is\n    // close to this name.\n    if (!SecondTry && CCC) {\n      if (TypoCorrection Corrected = CorrectTypo(Result.getLookupNameInfo(), Result.getLookupKind(), S, &SS, *CCC, CTK_ErrorRecovery)) {\n        if (getLangOpts().CPlusPlus && NextToken.is(tok::less) && UnderlyingFirstDecl && isa<TemplateDecl>(UnderlyingFirstDecl)) {\n          UnqualifiedDiag = diag::err_no_template_suggest;"},{K,474,"bool Sema::LookupTemplateName(LookupResult &Found, Scope *S, CXXScopeSpec &SS, QualType ObjectType, bool EnteringContext, bool &MemberOfUnknownSpecialization, RequiredTemplateKind RequiredTemplate, AssumedTemplateKind *ATK, bool AllowTypoCorrection) {\n  if (Found.empty() && !IsDependent && AllowTypoCorrection) {\n    if (TypoCorrection Corrected = CorrectTypo(Found.getLookupNameInfo(), Found.getLookupKind(), S, &SS, FilterCCC, CTK_ErrorRecovery, LookupCtx)) {\n      if (Found.isAmbiguous()) {\n      } else if (!Found.empty()) {\n        if (LookupCtx) {\n        } else {\n          diagnoseTypo(Corrected, PDiag(diag::err_no_template_suggest) << Name);"},{K,3448,"bool Sema::resolveAssumedTemplateNameAsType(Scope *S, TemplateName &Name, SourceLocation NameLoc, bool Diagnose) {\n  if (Corrected && Corrected.getFoundDecl()) {\n    diagnoseTypo(Corrected, PDiag(diag::err_no_template_suggest) << ATN->getDeclName());"}}
[e]=Tc,
[i]={"8a0925cb627c",1439236600,"Append options for floating-point commutivity when related diagnostics are produced."}
},
},
["remark_fe_backend_optimization_remark_missed"]={
["err_no_typeid_with_fno_rtti"]={
[c]="A [-Rpass-missed]",
[j]="use of typeid requires -frtti",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="use of typeid requires -frtti",
[n]={"pass-missed"},
[f]=n,
[m]="pass-missed",
[g]="use of typeid requires \\-frtti",
[h]=Uc,
[h]=a,
[b]=hc,
[i]=o,
[a]=Rc,
[b]={"1b7f39de3d58",1337477241,"Error when using typeid() with -fno-rtti. PR 12888."},
[g]=" \\[[^\\]]*\\-Rpass\\-missed[^\\]]*\\]",
[k]={{B,613,"/// ActOnCXXTypeidOfType - Parse typeid( type-id ) or typeid (expression);\nExprResult Sema::ActOnCXXTypeid(SourceLocation OpLoc, SourceLocation LParenLoc, bool isType, void *TyOrExpr, SourceLocation RParenLoc) {\n  if (!getLangOpts().RTTI) {\n    return ExprError(Diag(OpLoc, diag::err_no_typeid_with_fno_rtti));"}}
[e]=Tc,
[i]={"d23ec94393bf",1401393306,"Add flags -Rpass-missed and -Rpass-analysis."}
},
},
["remark_fe_backend_plugin"]={
["err_no_viable_destructor"]={
[c]="A [-Rremark-backend-plugin]",
[j]="no viable destructor found for class A",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="no viable destructor found for class %0",
[n]={"remark-backend-plugin"},
[f]=n,
[m]="remark-backend-plugin",
[g]="no viable destructor found for class (.*?)",
[h]=Uc,
[h]=a,
[b]=hc,
[i]=o,
[a]=Rc,
[b]={M,1625925174,N},
[g]=" \\[[^\\]]*\\-Rremark\\-backend\\-plugin[^\\]]*\\]",
[k]={{p,16240,"/// [class.dtor]p4:\n///  At the end of the definition of a class, overload resolution is\n///  performed among the prospective destructors declared in that class with\n///  an empty argument list to select the destructor for the class, also\n///  known as the selected destructor.\n///\n/// We do the overload resolution here, then mark the selected constructor in the AST.\n/// Later CXXRecordDecl::getDestructor() will return the selected constructor.\nstatic void ComputeSelectedDestructor(Sema &S, CXXRecordDecl *Record) {\n  case OR_No_Viable_Function:\n    Msg = diag::err_no_viable_destructor;"}}
[e]=Tc,
[i]={"741602461d20",1393578668,"Add \'remark\' diagnostic type in \'clang\'"}
},
},
["remark_module_build"]={
["err_nogetter_property_compound_assignment"]={
[c]="building module \'A\' as \'B\' [-Rmodule-build]",
[j]="a getter method is needed to perform a compound assignment on a property",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="a getter method is needed to perform a compound assignment on a property",
[n]={"module-build"},
[f]=n,
[m]="module-build",
[g]="a getter method is needed to perform a compound assignment on a property",
[h]="building module \'%0\' as \'%1\'",
[h]=a,
[b]=hc,
[i]=o,
[a]="building module \'(.*?)\' as \'(.*?)\'",
[b]={"c4a2d3259f9e",1319527676,"Introduce a placeholder type for \"pseudo object\""},
[g]=" \\[[^\\]]*\\-Rmodule\\-build[^\\]]*\\]",
[k]={{pb,765,"/// @property-specific behavior for doing assignments.\nExprResult ObjCPropertyOpBuilder::buildAssignmentOperation(Scope *Sc, SourceLocation opcLoc, BinaryOperatorKind opcode, Expr *LHS, Expr *RHS) {\n  // Verify that we can do a compound assignment.\n  if (opcode != BO_Assign && !findGetter()) {\n    S.Diag(opcLoc, diag::err_nogetter_property_compound_assignment) << LHS->getSourceRange() << RHS->getSourceRange();"}}
[e]=p,
[i]={"c95e56488d44",1399588562,"Switch Wmodule-build to a remark"}
},
},
["remark_module_build_done"]={
["err_nogetter_property_incdec"]={
[c]="finished building module \'A\' [-Rmodule-build]",
[j]="no getter method A for ... of property",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="no getter method %1 for %select{increment|decrement}0 of property",
[n]={"module-build"},
[f]=n,
[m]="module-build",
[g]="no getter method (.*?) for (?:increment|decrement) of property",
[h]="finished building module \'%0\'",
[h]=a,
[b]=hc,
[i]=o,
[a]="finished building module \'(.*?)\'",
[b]={"c4a2d3259f9e",1319527676,"Introduce a placeholder type for \"pseudo object\""},
[g]=" \\[[^\\]]*\\-Rmodule\\-build[^\\]]*\\]",
[k]={{pb,804,"/// @property-specific behavior for doing increments and decrements.\nExprResult ObjCPropertyOpBuilder::buildIncDecOperation(Scope *Sc, SourceLocation opcLoc, UnaryOperatorKind opcode, Expr *op) {\n  // We also need a getter.\n  if (!findGetter()) {\n    S.Diag(opcLoc, diag::err_nogetter_property_incdec) << unsigned(UnaryOperator::isDecrementOp(opcode)) << GetterSelector << op->getSourceRange();"}}
[e]=p,
[i]={"99891da71a88",1413252510,"Extend -Rmodule-build to also remark when module building finishes."}
},
},
["remark_module_import"]={
["err_non_asm_stmt_in_naked_function"]={
[c]="importing module \'A\'... from \'B\' [-Rmodule-import]",
[j]="non-ASM statement in naked function is not supported",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="non-ASM statement in naked function is not supported",
[n]={"module-import"},
[f]=n,
[m]="module-import",
[g]="non\\-ASM statement in naked function is not supported",
[h]="importing module \'%0\'%select{| into \'%3\'}2 from \'%1\'",
[h]=a,
[b]=hc,
[i]=o,
[a]="importing module \'(.*?)\'(?:| into \'(.*?)\') from \'(.*?)\'",
[b]={"d62cdd2c14c4",1409869000,"Don\'t allow non-ASM statements in naked functions"},
[g]=" \\[[^\\]]*\\-Rmodule\\-import[^\\]]*\\]",
[k]={{p,13914,"Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation) {\n  {\n    // Verify and clean out per-function state.\n    if (Body && (!FD || !FD->isDefaulted())) {\n      if (FD && FD->hasAttr<NakedAttr>()) {\n        for (const Stmt *S : Body->children()) {\n          if (!isa<AsmStmt>(S) && !isa<NullStmt>(S)) {\n            Diag(S->getBeginLoc(), diag::err_non_asm_stmt_in_naked_function);"}}
[e]=Kc,
[i]={"9dda8f540c8e",1551840646,"Modules: Add -Rmodule-import"}
},
},
["remark_module_lock"]={
["err_non_bool_atomic_constraint"]={
[c]="locking \'A\' to build module \'B\' [-Rmodule-lock]",
[j]="atomic constraint must be of type \'bool\' (found A)",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="atomic constraint must be of type \'bool\' (found %0)",
[n]={"module-lock"},
[f]=n,
[m]="module-lock",
[g]="atomic constraint must be of type \'bool\' \\(found (.*?)\\)",
[h]="locking \'%0\' to build module \'%1\'",
[h]=a,
[b]=hc,
[i]=o,
[a]="locking \'(.*?)\' to build module \'(.*?)\'",
[b]={"7c11da0cfd33",1567434909,"[clang] New __attribute__((__clang_arm_mve_alias))."},
[g]=" \\[[^\\]]*\\-Rmodule\\-lock[^\\]]*\\]",
[k]={{"clang/lib/Sema/SemaConcept.cpp",128,"bool Sema::CheckConstraintExpression(const Expr *ConstraintExpression, Token NextToken, bool *PossibleNonPrimary, bool IsTrailingRequiresClause) {\n  if (!Context.hasSameUnqualifiedType(Type, Context.BoolTy)) {\n    Diag(ConstraintExpression->getExprLoc(), diag::err_non_bool_atomic_constraint) << Type << ConstraintExpression->getSourceRange();"}}
[e]=p,
[i]={"b714f73defc8",1611802254,"Frontend: Add -f{,no-}implicit-modules-uses-lock and -Rmodule-lock"}
},
},
["remark_module_lock_failure"]={
["err_non_c_like_anon_struct_in_typedef"]={
[c]="could not acquire lock file for module \'A\': B [-Rmodule-build]",
[j]="anonymous non-C-compatible type given name for linkage purposes by ... declaration after its linkage was computed; add a tag name here to establish linkage prior to definition",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="anonymous non-C-compatible type given name for linkage purposes by %select{typedef|alias}0 declaration after its linkage was computed; add a tag name here to establish linkage prior to definition",
[n]={"module-build"},
[f]=n,
[m]="module-build",
[g]="anonymous non\\-C\\-compatible type given name for linkage purposes by (?:typedef|alias) declaration after its linkage was computed; add a tag name here to establish linkage prior to definition",
[h]="could not acquire lock file for module \'%0\': %1",
[h]=a,
[b]=hc,
[i]=o,
[a]="could not acquire lock file for module \'(.*?)\'\\: (.*?)",
[b]={"1228d42ddab8",1576809732,"[OpenMP][Part 2] Use reusable OpenMP context/traits handling"},
[g]=" \\[[^\\]]*\\-Rmodule\\-build[^\\]]*\\]",
[k]={{p,4481,"void Sema::setTagNameForLinkagePurposes(TagDecl *TagFromDeclSpec, TypedefNameDecl *NewTD) {\n  if (NonCLike || ChangesLinkage) {\n    if (ChangesLinkage) {\n      // If the linkage changes, we can\'t accept this as an extension.\n      if (NonCLike.Kind == NonCLikeKind::None)\n      else\n        DiagID = diag::err_non_c_like_anon_struct_in_typedef;"}}
[e]=y,
[i]={"5a0af1fcd16e",1489796778,"[Modules] In case of lock timeout, fallback and build module"}
},
},
["remark_module_lock_timeout"]={
["err_non_constant_constraint_expression"]={
[c]="timed out waiting to acquire lock file for module \'A\' [-Rmodule-build]",
[j]="substitution into constraint expression resulted in a non-constant expression",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="substitution into constraint expression resulted in a non-constant expression",
[n]={"module-build"},
[f]=n,
[m]="module-build",
[g]="substitution into constraint expression resulted in a non\\-constant expression",
[h]="timed out waiting to acquire lock file for module \'%0\'",
[h]=a,
[b]=hc,
[i]=o,
[a]="timed out waiting to acquire lock file for module \'(.*?)\'",
[b]={"7c11da0cfd33",1567434909,"[clang] New __attribute__((__clang_arm_mve_alias))."},
[g]=" \\[[^\\]]*\\-Rmodule\\-build[^\\]]*\\]",
[k]={{"clang/lib/Sema/SemaConcept.cpp",236,"template <typename AtomicEvaluator> static ExprResult calculateConstraintSatisfaction(Sema &S, const Expr *ConstraintExpr, ConstraintSatisfaction &Satisfaction, AtomicEvaluator &&Evaluator) {\n  if (!SubstitutedAtomicExpr.get()->EvaluateAsConstantExpr(EvalResult, S.Context) || !EvaluationDiags.empty()) {\n    S.Diag(SubstitutedAtomicExpr.get()->getBeginLoc(), diag::err_non_constant_constraint_expression) << SubstitutedAtomicExpr.get()->getSourceRange();"}}
[e]=y,
[i]={"5a0af1fcd16e",1489796778,"[Modules] In case of lock timeout, fallback and build module"}
},
},
["remark_pp_include_directive_modular_translation"]={
["err_non_consteval_override"]={
[c]="treating #... as an import of module \'A\' [-Rmodule-include-translation]",
[j]="non-consteval function A cannot override a consteval function",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="non-consteval function %0 cannot override a consteval function",
[n]={"module-include-translation"},
[f]=n,
[m]="module-include-translation",
[g]="non\\-consteval function (.*?) cannot override a consteval function",
[h]="treating #%select{include|import|include_next|__include_macros}0 as an import of module \'%1\'",
[h]=a,
[b]=hc,
[i]=o,
[a]="treating \\#(?:include|import|include_next|__include_macros) as an import of module \'(.*?)\'",
[b]={T,1576908663,U},
[g]=" \\[[^\\]]*\\-Rmodule\\-include\\-translation[^\\]]*\\]",
[k]={{r,6009,"/// Perform semantic checks on a class definition that has been\n/// completing, introducing implicitly-declared members, checking for\n/// abstract types, etc.\n///\n/// \\param S The scope in which the class was parsed. Null if we didn\'t just\n///        parse a class definition.\n/// \\param Record The completed class.\nvoid Sema::CheckCompletedCXXClass(Scope *S, CXXRecordDecl *Record) {\n  // Perform checks that can\'t be done until we know all the properties of a\n  // member function (whether it\'s defaulted, deleted, virtual, overriding,\n  // ...).\n  auto CheckCompletedMemberFunction = [&](CXXMethodDecl *MD) {\n    if (ReportOverrides(*this, MD->isConsteval() ? diag::err_consteval_override : diag::err_non_consteval_override, MD, [&](const CXXMethodDecl *V) { return MD->isConsteval() != V->isConsteval(); })) {"}}
[e]=C,
[i]={N,1625925174,O}
},
},
["remark_pp_search_path_usage"]={
["err_non_default_visibility_dllimport"]={
[c]="search path used: \'A\' [-Rsearch-path-usage]",
[j]="non-default visibility cannot be applied to \'dllimport\' declaration",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="non-default visibility cannot be applied to \'dllimport\' declaration",
[n]={"search-path-usage"},
[f]=n,
[m]="search-path-usage",
[g]="non\\-default visibility cannot be applied to \'dllimport\' declaration",
[h]="search path used: \'%0\'",
[h]=a,
[b]=hc,
[i]=a,
[a]="search path used\\: \'(.*?)\'",
[b]={"6f9c4851ab7c",1663023396,"[MinGW] Reject explicit hidden visibility applied to dllexport and hidden/protected applied to dllim..."},
[g]=" \\[[^\\]]*\\-Rsearch\\-path\\-usage[^\\]]*\\]",
[k]={{"clang/lib/CodeGen/CodeGenModule.cpp",1197,"void CodeGenModule::setGlobalVisibility(llvm::GlobalValue *GV, const NamedDecl *D) const {\n  if (GV->hasDLLExportStorageClass() || GV->hasDLLImportStorageClass()) {\n    if (GV->hasDLLExportStorageClass()) {\n    } else if (LV.getVisibility() != DefaultVisibility) {\n      getDiags().Report(D->getLocation(), diag::err_non_default_visibility_dllimport);"}}
[e]=C,
[i]={N,1625925174,O}
},
},
["remark_sanitize_address_insert_extra_padding_accepted"]={
["err_non_deleted_override"]={
[c]="-fsanitize-address-field-padding applied to A [-Rsanitize-address]",
[j]="non-deleted function A cannot override a deleted function",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="non-deleted function %0 cannot override a deleted function",
[n]={"sanitize-address"},
[f]=n,
[m]="sanitize-address",
[g]="non\\-deleted function (.*?) cannot override a deleted function",
[h]="-fsanitize-address-field-padding applied to %0",
[h]=a,
[b]=hc,
[i]=o,
[a]="\\-fsanitize\\-address\\-field\\-padding applied to (.*?)",
[b]={"7e414261f647",1350434878,"Implement C++ 10.3p16 - overrides involving deleted functions must match."},
[g]=" \\[[^\\]]*\\-Rsanitize\\-address[^\\]]*\\]",
[k]={{r,6000,"/// Perform semantic checks on a class definition that has been\n/// completing, introducing implicitly-declared members, checking for\n/// abstract types, etc.\n///\n/// \\param S The scope in which the class was parsed. Null if we didn\'t just\n///        parse a class definition.\n/// \\param Record The completed class.\nvoid Sema::CheckCompletedCXXClass(Scope *S, CXXRecordDecl *Record) {\n  // Perform checks that can\'t be done until we know all the properties of a\n  // member function (whether it\'s defaulted, deleted, virtual, overriding,\n  // ...).\n  auto CheckCompletedMemberFunction = [&](CXXMethodDecl *MD) {\n    if (ReportOverrides(*this, MD->isDeleted() ? diag::err_deleted_override : diag::err_non_deleted_override, MD, [&](const CXXMethodDecl *V) { return MD->isDeleted() != V->isDeleted(); })) {"}}
[e]=p,
[i]={"293dc9be6e36",1413492892,"Insert poisoned paddings between fields in C++ classes so that AddressSanitizer can find intra-objec..."}
},
},
["remark_sanitize_address_insert_extra_padding_rejected"]={
["err_non_designated_init_used"]={
[c]="-fsanitize-address-field-padding ignored for A because it ... [-Rsanitize-address]",
[j]="a randomized struct can only be initialized with a designated initializer",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[t]=false,
[e]="a randomized struct can only be initialized with a designated initializer",
[n]={"sanitize-address"},
[f]=n,
[m]="sanitize-address",
[g]="a randomized struct can only be initialized with a designated initializer",
[h]="-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 ignorelisted file|is ignorelisted}1",
[h]=a,
[b]=hc,
[i]=a,
[a]="\\-fsanitize\\-address\\-field\\-padding ignored for (.*?) because it (?:is not C\\+\\+|is packed|is a union|is trivially copyable|has trivial destructor|is standard layout|is in a ignorelisted file|is ignorelisted)",
[b]={"cb08f4aa4467",1620530452,"Support warn_unused_result on typedefs"},
[g]=" \\[[^\\]]*\\-Rsanitize\\-address[^\\]]*\\]",
[k]={{L,1900,"void InitListChecker::CheckStructUnionTypes(const InitializedEntity &Entity, InitListExpr *IList, QualType DeclType, CXXRecordDecl::base_class_const_range Bases, RecordDecl::field_iterator Field, bool SubobjectIsDesignatorContext, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex, bool TopLevelObject) {\n  while (Index < IList->getNumInits()) {\n    // Don\'t allow non-designated initializers on randomized structures.\n    if (RD->isRandomized() && !IsZeroInitializer(Init)) {\n      if (!VerifyOnly)\n        SemaRef.Diag(InitLoc, diag::err_non_designated_init_used);"}}
[e]=p,
[i]={"293dc9be6e36",1413492892,"Insert poisoned paddings between fields in C++ classes so that AddressSanitizer can find intra-objec..."}
},
},
["remark_sloc_usage"]={
["err_non_extern_extern"]={
[c]="source manager location address space usage: [-Rsloc-usage]",
[j]="non-extern declaration of A follows extern declaration",
[d]=dc,
[c]=l,
[f]=ec,
[d]=m,
[n]={"sloc-usage"},
[e]="non-extern declaration of %0 follows extern declaration",
[m]="sloc-usage",
[f]=n,
[h]="source manager location address space usage:",
[g]="non\\-extern declaration of (.*?) follows extern declaration",
[b]=hc,
[h]=a,
[a]="source manager location address space usage\\:",
[i]=o,
[g]=" \\[[^\\]]*\\-Rsloc\\-usage[^\\]]*\\]",
[b]={"819f61094216",1296457486,"Diagnose if extern local variable is followed by non-extern and vice-versa."},
[e]=p,
[k]={{p,4172,"/// MergeVarDecl - We just parsed a variable \'New\' which has the same name\n/// and scope as a previous declaration \'Old\'.  Figure out how to resolve this\n/// situation, merging decls or emitting diagnostics as appropriate.\n///\n/// Tentative definition rules (C99 6.9.2p2) are checked by\n/// FinalizeDeclaratorGroup. Unfortunately, we can\'t analyze tentative\n/// definitions here, since the initializer hasn\'t been attached.\n///\nvoid Sema::MergeVarDecl(VarDecl *New, LookupResult &Previous) {\n  if (Old->hasLinkage() && New->isLocalVarDeclOrParm() && !New->hasExternalStorage()) {\n    Diag(New->getLocation(), diag::err_non_extern_extern) << New->getDeclName();"}}
[i]={"9e52db182794",1668037554,"When we run out of source locations, try to produce useful information"}
},
},
["trigraph_converted"]={
["err_non_first_default_compare_deletes"]={
[c]="trigraph converted to \'A\' character [-Wtrigraphs]",
[j]="defaulting ... would delete it after its first declaration",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={v,x,A,Kd},
[e]="defaulting %select{this %select{<ERROR>|equality|three-way|equality|relational}1 comparison operator|the corresponding implicit \'operator==\' for this defaulted \'operator<=>\'}0 would delete it after its first declaration",
[m]=Kd,
[f]=n,
[h]="trigraph converted to \'%0\' character",
[g]="defaulting (?:this (?:equality|three\\-way|equality|relational) comparison operator|the corresponding implicit \'operator\\=\\=\' for this defaulted \'operator\\<\\=\\>\') would delete it after its first declaration",
[b]=j,
[h]=a,
[a]="trigraph converted to \'(.*?)\' character",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wtrigraphs[^\\]]*\\]",
[b]={"5253d9138eb3",1573070592,"[c++20] Determine whether a defaulted comparison should be deleted or"},
[e]=C,
[k]={{r,7572,"bool Sema::CheckExplicitlyDefaultedComparison(Scope *S, FunctionDecl *FD, DefaultedComparisonKind DCK) {\n  if (!First) {\n    if (Info.Deleted) {\n      Diag(FD->getLocation(), diag::err_non_first_default_compare_deletes) << FD->isImplicit() << (int)DCK;"}}
[i]={M,1236199783,L}
},
},
["trigraph_ends_block_comment"]={
["err_non_first_default_compare_in_class"]={
[c]="trigraph ends block comment [-Wtrigraphs]",
[j]="defaulting this ... comparison operator is not allowed because it was already declared outside the class",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={v,x,A,Kd},
[e]="defaulting this %select{<ERROR>|equality|three-way|equality|relational}0 comparison operator is not allowed because it was already declared outside the class",
[m]=Kd,
[f]=n,
[h]="trigraph ends block comment",
[g]="defaulting this (?:equality|three\\-way|equality|relational) comparison operator is not allowed because it was already declared outside the class",
[b]=j,
[h]=a,
[a]="trigraph ends block comment",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wtrigraphs[^\\]]*\\]",
[b]={M,1625925174,N},
[e]=C,
[k]={{r,7580,"bool Sema::CheckExplicitlyDefaultedComparison(Scope *S, FunctionDecl *FD, DefaultedComparisonKind DCK) {\n  if (!First) {\n    if (isa<CXXRecordDecl>(FD->getLexicalDeclContext())) {\n      Diag(FD->getLocation(), diag::err_non_first_default_compare_in_class) << (int)DCK;"}}
[i]={M,1236199783,L}
},
},
["trigraph_ignored"]={
["err_non_local_variable_decl_in_for"]={
[c]="trigraph ignored [-Wtrigraphs]",
[j]="declaration of non-local variable in \'for\' loop",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={v,x,A,Kd},
[e]="declaration of non-local variable in \'for\' loop",
[m]=Kd,
[f]=n,
[h]="trigraph ignored",
[g]="declaration of non\\-local variable in \'for\' loop",
[b]=j,
[h]=a,
[a]="trigraph ignored",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wtrigraphs[^\\]]*\\]",
[b]={"2eb1c57b9daf",1365454344,"<rdar://problem/13540921> Fix a crasher when an Objective-C for-in loop gets a non-variable iteratio..."},
[e]=C,
[k]={{E,1873,"StmtResult Sema::ActOnForStmt(SourceLocation ForLoc, SourceLocation LParenLoc, Stmt *First, ConditionResult Second, FullExprArg third, SourceLocation RParenLoc, Stmt *Body) {\n  if (!getLangOpts().CPlusPlus) {\n    if (DeclStmt *DS = dyn_cast_or_null<DeclStmt>(First)) {\n      for (auto *DI : DS->decls()) {\n        if (VarDecl *VD = dyn_cast<VarDecl>(DI)) {\n          if (VD->isLocalVarDecl() && !VD->hasLocalStorage()) {\n            Diag(DI->getLocation(), diag::err_non_local_variable_decl_in_for);"},{E,2011,"StmtResult Sema::ActOnObjCForCollectionStmt(SourceLocation ForLoc, Stmt *First, Expr *collection, SourceLocation RParenLoc) {\n  if (First) {\n    if (DeclStmt *DS = dyn_cast<DeclStmt>(First)) {\n      // C99 6.8.5p3: The declaration part of a \'for\' statement shall only\n      // declare identifiers for objects having storage class \'auto\' or\n      // \'register\'.\n      if (!D->hasLocalStorage())\n        return StmtError(Diag(D->getLocation(), diag::err_non_local_variable_decl_in_for));"}}
[i]={M,1236199783,L}
},
},
["trigraph_ignored_block_comment"]={
["err_non_static_static"]={
[c]="ignored trigraph would end block comment [-Wtrigraphs]",
[j]="non-static declaration of A follows static declaration",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={v,x,A,Kd},
[e]="non-static declaration of %0 follows static declaration",
[m]=Kd,
[f]=n,
[h]="ignored trigraph would end block comment",
[g]="non\\-static declaration of (.*?) follows static declaration",
[b]=j,
[h]=a,
[a]="ignored trigraph would end block comment",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wtrigraphs[^\\]]*\\]",
[b]={x,1237025389,w},
[e]=C,
[k]={{p,4160,"/// MergeVarDecl - We just parsed a variable \'New\' which has the same name\n/// and scope as a previous declaration \'Old\'.  Figure out how to resolve this\n/// situation, merging decls or emitting diagnostics as appropriate.\n///\n/// Tentative definition rules (C99 6.9.2p2) are checked by\n/// FinalizeDeclaratorGroup. Unfortunately, we can\'t analyze tentative\n/// definitions here, since the initializer hasn\'t been attached.\n///\nvoid Sema::MergeVarDecl(VarDecl *New, LookupResult &Previous) {\n  // C99 6.2.2p4:\n  //  For an identifier declared with the storage-class specifier\n  //  extern in a scope in which a prior declaration of that\n  //  identifier is visible,23) if the prior declaration specifies\n  //  internal or external linkage, the linkage of the identifier at\n  //  the later declaration is the same as the linkage specified at\n  //  the prior declaration. If no prior declaration is visible, or\n  //  if the prior declaration specifies no linkage, then the\n  //  identifier has external linkage.\n  if (New->hasExternalStorage() && Old->hasLinkage())\n  else if (New->getCanonicalDecl()->getStorageClass() != SC_Static && !New->isStaticDataMember() && Old->getCanonicalDecl()->getStorageClass() == SC_Static) {\n    Diag(New->getLocation(), diag::err_non_static_static) << New->getDeclName();"}}
[i]={M,1236199783,L}
},
},
["warn_O4_is_O3"]={
["err_non_template_in_member_template_id_suggest"]={
[c]="-O4 is equivalent to -O3 [-Wdeprecated]",
[j]="member A of B is not a template; did you mean ...C?",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={X},
[e]="member %0 of %1 is not a template; did you mean %select{|simply }2%3?",
[m]=X,
[f]=n,
[h]="-O4 is equivalent to -O3",
[g]="member (.*?) of (.*?) is not a template; did you mean (?:|simply )(.*?)\\?",
[b]=j,
[h]=a,
[a]="\\-O4 is equivalent to \\-O3",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wdeprecated[^\\]]*\\]",
[b]={"42bc73a3f15f",1494383428,"When we see a \'<\' operator, check whether it\'s a probable typo for a template-id."},
[e]=fb,
[k]={{K,611,"void Sema::diagnoseExprIntendedAsTemplateName(Scope *S, ExprResult TemplateName, SourceLocation Less, SourceLocation Greater) {\n  if (TypoCorrection Corrected = CorrectTypo(NameInfo, LookupKind, S, &SS, CCC, CTK_ErrorRecovery, LookupCtx)) {\n    if (ND || Corrected.isKeyword()) {\n      if (LookupCtx) {\n        diagnoseTypo(Corrected, PDiag(diag::err_non_template_in_member_template_id_suggest) << Name << LookupCtx << DroppedSpecifier << SS.getRange(), false);"}}
[i]={"ad70d9683ea7",1377622695,"Warn that -O4 is the same as -O3."}
},
},
["warn_abs_too_small"]={
["err_non_template_in_template_id"]={
[c]="absolute value function A given an argument of type B but has parameter of type C which may cause truncation of value [-Wabsolute-value]",
[j]="A does not name a template but is followed by template arguments",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={Hd},
[e]="%0 does not name a template but is followed by template arguments",
[m]=Hd,
[f]=n,
[h]="absolute value function %0 given an argument of type %1 but has parameter of type %2 which may cause truncation of value",
[g]="(.*?) does not name a template but is followed by template arguments",
[b]=j,
[h]=a,
[a]="absolute value function (.*?) given an argument of type (.*?) but has parameter of type (.*?) which may cause truncation of value",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wabsolute\\-value[^\\]]*\\]",
[b]={"42bc73a3f15f",1494383428,"When we see a \'<\' operator, check whether it\'s a probable typo for a template-id."},
[e]=o,
[k]={{K,621,"void Sema::diagnoseExprIntendedAsTemplateName(Scope *S, ExprResult TemplateName, SourceLocation Less, SourceLocation Greater) {\n  Diag(NameInfo.getLoc(), diag::err_non_template_in_template_id) << Name << SourceRange(Less, Greater);"}}
[i]={"7eb0b2c1819c",1393377448,"Add -Wabsolute-value, warnings about absolute value functions."}
},
},
["warn_abstract_final_class"]={
["err_non_template_in_template_id_suggest"]={
[c]="abstract class is marked \'...\' [-Wabstract-final-class]",
[j]="A does not name a template but is followed by template arguments; did you mean B?",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"abstract-final-class"},
[e]="%0 does not name a template but is followed by template arguments; did you mean %1?",
[m]="abstract-final-class",
[f]=n,
[h]="abstract class is marked \'%select{final|sealed}0\'",
[g]="(.*?) does not name a template but is followed by template arguments; did you mean (.*?)\\?",
[b]=j,
[h]=a,
[a]="abstract class is marked \'(?:final|sealed)\'",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wabstract\\-final\\-class[^\\]]*\\]",
[b]={"42bc73a3f15f",1494383428,"When we see a \'<\' operator, check whether it\'s a probable typo for a template-id."},
[e]=o,
[k]={{K,613,"void Sema::diagnoseExprIntendedAsTemplateName(Scope *S, ExprResult TemplateName, SourceLocation Less, SourceLocation Greater) {\n  if (TypoCorrection Corrected = CorrectTypo(NameInfo, LookupKind, S, &SS, CCC, CTK_ErrorRecovery, LookupCtx)) {\n    if (ND || Corrected.isKeyword()) {\n      if (LookupCtx) {\n      } else {\n        diagnoseTypo(Corrected, PDiag(diag::err_non_template_in_template_id_suggest) << Name, false);"}}
[i]={"348df509a0b7",1348197667,"PR13890: Warn on abstract final classes."}
},
},
["warn_abstract_vbase_init_ignored"]={
["err_non_thread_thread"]={
[c]="initializer for virtual base class A of abstract class B will never be used [-Wabstract-vbase-init]",
[j]="non-thread-local declaration of A follows thread-local declaration",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[t]=false,
[e]="non-thread-local declaration of %0 follows thread-local declaration",
[n]={"abstract-vbase-init"},
[f]=n,
[m]="abstract-vbase-init",
[g]="non\\-thread\\-local declaration of (.*?) follows thread\\-local declaration",
[h]="initializer for virtual base class %0 of abstract class %1 will never be used",
[h]=a,
[b]=j,
[i]=o,
[a]="initializer for virtual base class (.*?) of abstract class (.*?) will never be used",
[b]={"d5c0eeda7285",1240172875,"Add more thorough/correct checking for invalid __thread specifiers."},
[g]=" \\[(?:\\-Werror,)?\\-Wabstract\\-vbase\\-init[^\\]]*\\]",
[k]={{p,4212,"/// MergeVarDecl - We just parsed a variable \'New\' which has the same name\n/// and scope as a previous declaration \'Old\'.  Figure out how to resolve this\n/// situation, merging decls or emitting diagnostics as appropriate.\n///\n/// Tentative definition rules (C99 6.9.2p2) are checked by\n/// FinalizeDeclaratorGroup. Unfortunately, we can\'t analyze tentative\n/// definitions here, since the initializer hasn\'t been attached.\n///\nvoid Sema::MergeVarDecl(VarDecl *New, LookupResult &Previous) {\n  if (New->getTLSKind() != Old->getTLSKind()) {\n    if (!Old->getTLSKind()) {\n    } else if (!New->getTLSKind()) {\n      Diag(New->getLocation(), diag::err_non_thread_thread) << New->getDeclName();"}}
[e]=o,
[i]={"bc46e4341e95",1374461816,"Implement DR257 / fix PR16659:"}
},
},
["warn_access_decl_deprecated"]={
["err_non_trivial_c_union_in_invalid_context"]={
[c]="access declarations are deprecated; use using declarations instead [-Wdeprecated]",
[j]="cannot ... since it ... a union that is non-trivial to ...",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={X},
[e]="cannot %select{use type %1 for a function/method parameter|use type %1 for function/method return|default-initialize an object of type %1|declare an automatic variable of type %1|copy-initialize an object of type %1|assign to a variable of type %1|construct an automatic compound literal of type %1|capture a variable of type %1|cannot use volatile type %1 where it causes an lvalue-to-rvalue conversion}3 since it %select{contains|is}2 a union that is non-trivial to %select{default-initialize|destruct|copy}0",
[m]=X,
[f]=n,
[h]="access declarations are deprecated; use using declarations instead",
[g]="cannot (?:use type (.*?) for a function\\/method parameter|use type (.*?) for function\\/method return|default\\-initialize an object of type (.*?)|declare an automatic variable of type (.*?)|copy\\-initialize an object of type (.*?)|assign to a variable of type (.*?)|construct an automatic compound literal of type (.*?)|capture a variable of type (.*?)|cannot use volatile type (.*?) where it causes an lvalue\\-to\\-rvalue conversion) since it (?:contains|is) a union that is non\\-trivial to (?:default\\-initialize|destruct|copy)",
[b]=j,
[h]=a,
[a]="access declarations are deprecated; use using declarations instead",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wdeprecated[^\\]]*\\]",
[b]={"81b03d4a08b1",1562982435,"[Sema] Diagnose default-initialization, destruction, and copying of"},
[e]=fb,
[k]={{p,11299,"struct DiagNonTrivalCUnionDefaultInitializeVisitor : DefaultInitializedTypeVisitor<DiagNonTrivalCUnionDefaultInitializeVisitor, void> {\n  void visitStruct(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) {\n    if (RD->isUnion()) {\n      if (OrigLoc.isValid()) {\n        S.Diag(OrigLoc, diag::err_non_trivial_c_union_in_invalid_context) << 0 << OrigTy << IsUnion << UseContext;"},{p,11352,"struct DiagNonTrivalCUnionDestructedTypeVisitor : DestructedTypeVisitor<DiagNonTrivalCUnionDestructedTypeVisitor, void> {\n  void visitStruct(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) {\n    if (RD->isUnion()) {\n      if (OrigLoc.isValid()) {\n        S.Diag(OrigLoc, diag::err_non_trivial_c_union_in_invalid_context) << 1 << OrigTy << IsUnion << UseContext;"},{p,11406,"struct DiagNonTrivalCUnionCopyVisitor : CopiedTypeVisitor<DiagNonTrivalCUnionCopyVisitor, false, void> {\n  void visitStruct(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) {\n    if (RD->isUnion()) {\n      if (OrigLoc.isValid()) {\n        S.Diag(OrigLoc, diag::err_non_trivial_c_union_in_invalid_context) << 2 << OrigTy << IsUnion << UseContext;"}}
[i]={"a009726ce3a0",1260497403,"Implement access declarations. Most of the work here is parsing them, which"}
},
},
["warn_accessor_property_type_mismatch"]={
["err_non_type_template_arg_addr_label_diff"]={
[c]="type of property A does not match type of accessor B",
[j]="template argument / label address difference / what did you expect?",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[h]="type of property %0 does not match type of accessor %1",
[e]="template argument / label address difference / what did you expect?",
[b]=j,
[f]=n,
[a]="type of property (.*?) does not match type of accessor (.*?)",
[g]="template argument \\/ label address difference \\/ what did you expect\\?",
[g]=P,
[h]=a,
[e]=o,
[i]=o,
[i]={"b2ab73d93cf5",1241811394,"More type checking for properties, accessors and"}
[b]={"410cc893745e",1416972413,"[c++1z] Most of N4268 (allow constant evaluation for non-type template arguments)."},
[k]={{K,6047,"/// Check a template argument against its corresponding\n/// non-type template parameter.\n///\n/// This routine implements the semantics of C++ [temp.arg.nontype].\n/// If an error occurred, it returns ExprError(); otherwise, it\n/// returns the converted template argument. \\p ParamType is the\n/// type of the non-type template parameter after it has been instantiated.\nExprResult Sema::CheckTemplateArgument(NonTypeTemplateParmDecl *Param, QualType ParamType, Expr *Arg, TemplateArgument &SugaredConverted, TemplateArgument &CanonicalConverted, CheckTemplateArgumentKind CTAK) {\n  if (getLangOpts().CPlusPlus17) {\n    case APValue::AddrLabelDiff:\n      return Diag(StartLoc, diag::err_non_type_template_arg_addr_label_diff);"}}
},
},
["warn_acquire_requires_negative_cap"]={
["err_non_type_template_arg_subobject"]={
[c]="acquiring A \'B\' requires negative capability \'C\' [-Wthread-safety-negative]",
[j]="non-type template argument refers to subobject \'A\'",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[t]=false,
[e]="non-type template argument refers to subobject \'%0\'",
[n]={"thread-safety-negative"},
[f]=n,
[m]="thread-safety-negative",
[g]="non\\-type template argument refers to subobject \'(.*?)\'",
[h]="acquiring %0 \'%1\' requires negative capability \'%2\'",
[h]=a,
[b]=j,
[i]=o,
[a]="acquiring (.*?) \'(.*?)\' requires negative capability \'(.*?)\'",
[b]={"410cc893745e",1416972413,"[c++1z] Most of N4268 (allow constant evaluation for non-type template arguments)."},
[g]=" \\[(?:\\-Werror,)?\\-Wthread\\-safety\\-negative[^\\]]*\\]",
[k]={{K,6028,"/// Check a template argument against its corresponding\n/// non-type template parameter.\n///\n/// This routine implements the semantics of C++ [temp.arg.nontype].\n/// If an error occurred, it returns ExprError(); otherwise, it\n/// returns the converted template argument. \\p ParamType is the\n/// type of the non-type template parameter after it has been instantiated.\nExprResult Sema::CheckTemplateArgument(NonTypeTemplateParmDecl *Param, QualType ParamType, Expr *Arg, TemplateArgument &SugaredConverted, TemplateArgument &CanonicalConverted, CheckTemplateArgumentKind CTAK) {\n  if (getLangOpts().CPlusPlus17) {\n    case APValue::LValue: {\n      // -- a subobject\n      // FIXME: Until C++20\n      if (Value.hasLValuePath() && Value.getLValuePath().size() == 1 && VD && VD->getType()->isArrayType() && Value.getLValuePath()[0].getAsArrayIndex() == 0 && !Value.isLValueOnePastTheEnd() && ParamType->isPointerType()) {\n      } else if (!Value.hasLValuePath() || Value.getLValuePath().size() || Value.isLValueOnePastTheEnd()) {\n        Diag(StartLoc, diag::err_non_type_template_arg_subobject) << Value.getAsString(Context, ParamType);"}}
[e]=o,
[i]={"3efd0495a081",1407190386,"Thread Safety Analysis: add a -Wthread-safety-negative flag that warns whenever"}
},
},
["warn_acquired_before"]={
["err_non_type_template_arg_unsupported"]={
[c]="A \'B\' must be acquired before \'C\' [-Wthread-safety-analysis]",
[j]="sorry, non-type template argument of type A is not yet supported",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[t]=false,
[e]="sorry, non-type template argument of type %0 is not yet supported",
[n]={yb,lb},
[f]=n,
[m]=lb,
[g]="sorry, non\\-type template argument of type (.*?) is not yet supported",
[h]="%0 \'%1\' must be acquired before \'%2\'",
[h]=a,
[b]=j,
[i]=o,
[a]="(.*?) \'(.*?)\' must be acquired before \'(.*?)\'",
[b]={"14f6bfcb52e7",1582847864,"[clang] Implement objc_non_runtime_protocol to remove protocol metadata"},
[g]=gc,
[k]={{K,6054,"/// Check a template argument against its corresponding\n/// non-type template parameter.\n///\n/// This routine implements the semantics of C++ [temp.arg.nontype].\n/// If an error occurred, it returns ExprError(); otherwise, it\n/// returns the converted template argument. \\p ParamType is the\n/// type of the non-type template parameter after it has been instantiated.\nExprResult Sema::CheckTemplateArgument(NonTypeTemplateParmDecl *Param, QualType ParamType, Expr *Arg, TemplateArgument &SugaredConverted, TemplateArgument &CanonicalConverted, CheckTemplateArgumentKind CTAK) {\n  if (getLangOpts().CPlusPlus17) {\n    case APValue::Array:\n      return Diag(StartLoc, diag::err_non_type_template_arg_unsupported) << ParamType;"}}
[e]=o,
[i]={"4980df623f15",1422987468,"Thread Safety Analysis: add support for before/after annotations on mutexes."}
},
},
["warn_acquired_before_after_cycle"]={
["err_non_type_template_in_nested_name_specifier"]={
[c]="Cycle in acquired_before/after dependencies, starting with \'A\' [-Wthread-safety-analysis]",
[j]="qualified name refers into a specialization of ... template A",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[t]=false,
[e]="qualified name refers into a specialization of %select{function|variable}0 template %1",
[n]={yb,lb},
[f]=n,
[m]=lb,
[g]="qualified name refers into a specialization of (?:function|variable) template (.*?)",
[h]="Cycle in acquired_before/after dependencies, starting with \'%0\'",
[h]=a,
[b]=j,
[i]=o,
[a]="Cycle in acquired_before\\/after dependencies, starting with \'(.*?)\'",
[b]={"8b6070bb9df4",1299274634,"Teach Sema::ActOnCXXNestedNameSpecifier and Sema::CheckTemplateIdType"},
[g]=gc,
[k]={{cb,836,"bool Sema::ActOnCXXNestedNameSpecifier(Scope *S, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, TemplateTy OpaqueTemplate, SourceLocation TemplateNameLoc, SourceLocation LAngleLoc, ASTTemplateArgsPtr TemplateArgsIn, SourceLocation RAngleLoc, SourceLocation CCLoc, bool EnteringContext) {\n  if (Template.getAsOverloadedTemplate() || DTN || isa<FunctionTemplateDecl>(TD) || isa<VarTemplateDecl>(TD)) {\n    Diag(CCLoc, diag::err_non_type_template_in_nested_name_specifier) << (TD && isa<VarTemplateDecl>(TD)) << Template << R;"}}
[e]=o,
[i]={"4980df623f15",1422987468,"Thread Safety Analysis: add support for before/after annotations on mutexes."}
},
},
["warn_addition_in_bitshift"]={
["err_non_type_template_parm_type_deduction_failure"]={
[c]="operator \'A\' has lower precedence than \'B\'; \'C\' will be evaluated first [-Wshift-op-parentheses]",
[j]="non-type template parameter A with type B has incompatible initializer of type C",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={v,x,zc,"shift-op-parentheses"},
[e]="non-type template parameter %0 with type %1 has incompatible initializer of type %2",
[m]="shift-op-parentheses",
[f]=n,
[h]="operator \'%0\' has lower precedence than \'%1\'; \'%1\' will be evaluated first",
[g]="non\\-type template parameter (.*?) with type (.*?) has incompatible initializer of type (.*?)",
[b]=j,
[h]=a,
[a]="operator \'(.*?)\' has lower precedence than \'(.*?)\'; \'(.*?)\' will be evaluated first",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wshift\\-op\\-parentheses[^\\]]*\\]",
[b]={"5f274389d1d9",1475106927,"P0127R2: Support type deduction for types of non-type template parameters in"},
[e]=o,
[k]={{K,5870,"/// Check a template argument against its corresponding\n/// non-type template parameter.\n///\n/// This routine implements the semantics of C++ [temp.arg.nontype].\n/// If an error occurred, it returns ExprError(); otherwise, it\n/// returns the converted template argument. \\p ParamType is the\n/// type of the non-type template parameter after it has been instantiated.\nExprResult Sema::CheckTemplateArgument(NonTypeTemplateParmDecl *Param, QualType ParamType, Expr *Arg, TemplateArgument &SugaredConverted, TemplateArgument &CanonicalConverted, CheckTemplateArgumentKind CTAK) {\n  if (getLangOpts().CPlusPlus17 && DeducedT && !DeducedT->isDeduced()) {\n    if (isa<DeducedTemplateSpecializationType>(DeducedT)) {\n    } else {\n      if (Result == TDK_AlreadyDiagnosed) {\n      } else if (Result != TDK_Success) {\n        Diag(Arg->getExprLoc(), diag::err_non_type_template_parm_type_deduction_failure) << Param->getDeclName() << Param->getType() << Arg->getType() << Arg->getSourceRange();"}}
[i]={"15f17cbbd813",1349397663,"Implement -Wshift-op-parentheses for: a << b + c"}
},
},
["warn_address_of_reference_bool_conversion"]={
["err_non_variable_decl_in_for"]={
[c]="reference cannot be bound to dereferenced null pointer in well-defined C++ code; pointer may be assumed to always convert to true [-Wundefined-bool-conversion]",
[j]="non-variable declaration in \'for\' loop",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"bool-conversion","bool-conversions",V,W,"undefined-bool-conversion"},
[e]="non-variable declaration in \'for\' loop",
[m]="undefined-bool-conversion",
[f]=n,
[h]="reference cannot be bound to dereferenced null pointer in well-defined C++ code; pointer may be assumed to always convert to true",
[g]="non\\-variable declaration in \'for\' loop",
[b]=j,
[h]=a,
[a]="reference cannot be bound to dereferenced null pointer in well\\-defined C\\+\\+ code; pointer may be assumed to always convert to true",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wundefined\\-bool\\-conversion[^\\]]*\\]",
[b]={x,1237025389,w},
[e]=cb,
[k]={{E,95,"void Sema::ActOnForEachDeclStmt(DeclGroupPtrTy dg) {\n  if (!var) {\n    Diag(decl->getLocation(), diag::err_non_variable_decl_in_for);"},{E,1887,"StmtResult Sema::ActOnForStmt(SourceLocation ForLoc, SourceLocation LParenLoc, Stmt *First, ConditionResult Second, FullExprArg third, SourceLocation RParenLoc, Stmt *Body) {\n  if (!getLangOpts().CPlusPlus) {\n    if (DeclStmt *DS = dyn_cast_or_null<DeclStmt>(First)) {\n      // Diagnose if we saw a non-variable declaration but no variable\n      // declarations.\n      if (NonVarSeen && !VarDeclSeen)\n        Diag(NonVarSeen->getLocation(), diag::err_non_variable_decl_in_for);"}}
[i]={"f7432755d0c0",1402090766,"Add -Wtautological-undefined-compare and -Wundefined-bool-conversion warnings"}
},
},
["warn_address_of_reference_null_compare"]={
["err_non_virtual_pure"]={
[c]="reference cannot be bound to dereferenced null pointer in well-defined C++ code; comparison may be assumed to always evaluate to ... [-Wtautological-undefined-compare]",
[j]="A is not virtual and cannot be declared pure",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={v,x,A,rc,"tautological-undefined-compare"},
[e]="%0 is not virtual and cannot be declared pure",
[m]="tautological-undefined-compare",
[f]=n,
[h]="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",
[g]="(.*?) is not virtual and cannot be declared pure",
[b]=j,
[h]=a,
[a]="reference cannot be bound to dereferenced null pointer in well\\-defined C\\+\\+ code; comparison may be assumed to always evaluate to (?:true|false)",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wtautological\\-undefined\\-compare[^\\]]*\\]",
[b]={z,1236199783,A},
[e]=o,
[k]={{r,15496,"/// Mark the given method pure.\n///\n/// \\param Method the method to be marked pure.\n///\n/// \\param InitRange the source range that covers the \"0\" initializer.\nbool Sema::CheckPureMethod(CXXMethodDecl *Method, SourceRange InitRange) {\n  if (!Method->isInvalidDecl())\n    Diag(Method->getLocation(), diag::err_non_virtual_pure) << Method->getDeclName() << InitRange;"}}
[i]={"f7432755d0c0",1402090766,"Add -Wtautological-undefined-compare and -Wundefined-bool-conversion warnings"}
},
},
["warn_alias_to_weak_alias"]={
["err_nonfunction_block_type"]={
[c]="... will always resolve to A even if weak definition of B is overridden [-Wignored-attributes]",
[j]="block pointer to non-function type is invalid",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={H,z},
[e]="block pointer to non-function type is invalid",
[m]=z,
[f]=n,
[h]="%select{alias|ifunc}2 will always resolve to %0 even if weak definition of %1 is overridden",
[g]="block pointer to non\\-function type is invalid",
[b]=j,
[h]=a,
[a]="(?:alias|ifunc) will always resolve to (.*?) even if weak definition of (.*?) is overridden",
[i]=o,
[g]=I,
[b]={x,1237025389,w},
[e]=p,
[k]={{F,2741,"/// Build a block pointer type.\n///\n/// \\param T The type to which we\'ll be building a block pointer.\n///\n/// \\param Loc The source location, used for diagnostics.\n///\n/// \\param Entity The name of the entity that involves the block pointer\n/// type, if known.\n///\n/// \\returns A suitable block pointer type, if there are no\n/// errors. Otherwise, returns a NULL type.\nQualType Sema::BuildBlockPointerType(QualType T, SourceLocation Loc, DeclarationName Entity) {\n  if (!T->isFunctionType()) {\n    Diag(Loc, diag::err_nonfunction_block_type);"}}
[i]={"a39fc6dd2afa",1395934040,"Handle and warn on aliases to weak aliases."}
},
},
["warn_alias_with_section"]={
["err_nonstatic_member_out_of_line"]={
[c]="... will not be in section \'A\' but in the same section as the ... [-Wignored-attributes]",
[j]="non-static data member defined out-of-line",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={H,z},
[e]="non-static data member defined out-of-line",
[m]=z,
[f]=n,
[h]="%select{alias|ifunc}1 will not be in section \'%0\' but in the same section as the %select{aliasee|resolver}2",
[g]="non\\-static data member defined out\\-of\\-line",
[b]=j,
[h]=a,
[a]="(?:alias|ifunc) will not be in section \'(.*?)\' but in the same section as the (?:aliasee|resolver)",
[i]=o,
[g]=I,
[b]={x,1237025389,w},
[e]=p,
[k]={{p,7091,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n  if (!getLangOpts().CPlusPlus) {\n  } else {\n    // Merge the decl with the existing one if appropriate.\n    if (!Previous.empty()) {\n      if (Previous.isSingleResult() && isa<FieldDecl>(Previous.getFoundDecl()) && D.getCXXScopeSpec().isSet()) {\n        Diag(NewVD->getLocation(), diag::err_nonstatic_member_out_of_line) << D.getCXXScopeSpec().getRange();"}}
[i]={"502f65ae54d0",1399321263,"Fix pr19653."}
},
},
["warn_aligned_attr_underaligned"]={
["err_nontemporal_builtin_must_be_pointer"]={
[c]="requested alignment is less than minimum alignment of A for type B [-Wignored-attributes]",
[j]="address argument to nontemporal builtin must be a pointer (A invalid)",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={H,z},
[e]="address argument to nontemporal builtin must be a pointer (%0 invalid)",
[m]=z,
[f]=n,
[h]="requested alignment is less than minimum alignment of %1 for type %0",
[g]="address argument to nontemporal builtin must be a pointer \\((.*?) invalid\\)",
[b]=j,
[h]=a,
[a]="requested alignment is less than minimum alignment of (.*?) for type (.*?)",
[i]=o,
[g]=I,
[b]={"84df12375cde",1441756353,"Introduce __builtin_nontemporal_store and __builtin_nontemporal_load."},
[e]=o,
[k]={{y,4946,"bool Sema::CheckRISCVBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n  case RISCV::BI__builtin_riscv_ntl_store:\n    if (!PtrType) {\n      Diag(DRE->getBeginLoc(), diag::err_nontemporal_builtin_must_be_pointer) << PointerArg->getType() << PointerArg->getSourceRange();"},{y,7468,"/// SemaBuiltinNontemporalOverloaded - We have a call to\n/// __builtin_nontemporal_store or __builtin_nontemporal_load, which is an\n/// overloaded function based on the pointer type of its last argument.\n///\n/// This function goes through and does final semantic checking for these\n/// builtins.\nExprResult Sema::SemaBuiltinNontemporalOverloaded(ExprResult TheCallResult) {\n  if (!pointerType) {\n    Diag(DRE->getBeginLoc(), diag::err_nontemporal_builtin_must_be_pointer) << PointerArg->getType() << PointerArg->getSourceRange();"}}
[i]={Ib,1615397021,Hb}
},
},
["warn_alignment_builtin_useless"]={
["err_nontemporal_builtin_must_be_pointer_intfltptr_or_vector"]={
[c]="... to 1 byte is ... [-Wtautological-compare]",
[j]="address argument to nontemporal builtin must be a pointer to integer, float, pointer, or a vector of such types (A invalid)",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={v,x,A,rc},
[e]="address argument to nontemporal builtin must be a pointer to integer, float, pointer, or a vector of such types (%0 invalid)",
[m]=rc,
[f]=n,
[h]="%select{aligning a value|the result of checking whether a value is aligned}0 to 1 byte is %select{a no-op|always true}0",
[g]="address argument to nontemporal builtin must be a pointer to integer, float, pointer, or a vector of such types \\((.*?) invalid\\)",
[b]=j,
[h]=a,
[a]="(?:aligning a value|the result of checking whether a value is aligned) to 1 byte is (?:a no\\-op|always true)",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wtautological\\-compare[^\\]]*\\]",
[b]={"84df12375cde",1441756353,"Introduce __builtin_nontemporal_store and __builtin_nontemporal_load."},
[e]=o,
[k]={{y,4953,"bool Sema::CheckRISCVBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n  case RISCV::BI__builtin_riscv_ntl_store:\n    if (!ValType->isIntegerType() && !ValType->isAnyPointerType() && !ValType->isBlockPointerType() && !ValType->isFloatingType() && !ValType->isVectorType() && !ValType->isRVVType()) {\n      Diag(DRE->getBeginLoc(), diag::err_nontemporal_builtin_must_be_pointer_intfltptr_or_vector) << PointerArg->getType() << PointerArg->getSourceRange();"},{y,7477,"/// SemaBuiltinNontemporalOverloaded - We have a call to\n/// __builtin_nontemporal_store or __builtin_nontemporal_load, which is an\n/// overloaded function based on the pointer type of its last argument.\n///\n/// This function goes through and does final semantic checking for these\n/// builtins.\nExprResult Sema::SemaBuiltinNontemporalOverloaded(ExprResult TheCallResult) {\n  if (!ValType->isIntegerType() && !ValType->isAnyPointerType() && !ValType->isBlockPointerType() && !ValType->isFloatingType() && !ValType->isVectorType()) {\n    Diag(DRE->getBeginLoc(), diag::err_nontemporal_builtin_must_be_pointer_intfltptr_or_vector) << PointerArg->getType() << PointerArg->getSourceRange();"}}
[i]={"349636d2bfc3",1575555459,"Implement VectorType conditional operator GNU extension."}
},
},
["warn_alignment_not_power_of_two"]={
["err_noreturn_block_has_return_expr"]={
[c]="requested alignment is not a power of 2 [-Wnon-power-of-two-alignment]",
[j]="block declared \'noreturn\' should not return",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"non-power-of-two-alignment"},
[e]="block declared \'noreturn\' should not return",
[m]="non-power-of-two-alignment",
[f]=n,
[h]="requested alignment is not a power of 2",
[g]="block declared \'noreturn\' should not return",
[b]=j,
[h]=a,
[a]="requested alignment is not a power of 2",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wnon\\-power\\-of\\-two\\-alignment[^\\]]*\\]",
[b]={"88788feddd21",1241031793,"Sema and CodeGen support for attributes on blocks.  Radar 6441502"},
[e]=o,
[k]={{Kb,545,"struct CheckFallThroughDiagnostics {\n  static CheckFallThroughDiagnostics MakeForBlock() {\n    D.diag_MaybeFallThrough_HasNoReturn = diag::err_noreturn_block_has_return_expr;"},{Kb,547,"struct CheckFallThroughDiagnostics {\n  static CheckFallThroughDiagnostics MakeForBlock() {\n    D.diag_AlwaysFallThrough_HasNoReturn = diag::err_noreturn_block_has_return_expr;"},{E,3145,"/// ActOnCapScopeReturnStmt - Utility routine to type-check return statements\n/// for capturing scopes.\n///\nStmtResult Sema::ActOnCapScopeReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp, NamedReturnInfo &NRInfo, bool SupressSimplerImplicitMoves) {\n  if (auto *CurBlock = dyn_cast<BlockScopeInfo>(CurCap)) {\n    if (CurBlock->FunctionType->castAs<FunctionType>()->getNoReturnAttr()) {\n      Diag(ReturnLoc, diag::err_noreturn_block_has_return_expr);"}}
[i]={wb,1576908663,vb}
},
},
["warn_alloca"]={
["err_noreturn_lambda_has_return_expr"]={
[c]="use of function A is discouraged; there is no way to check for failure but failure may still occur, resulting in a possibly exploitable security vulnerability [-Walloca]",
[j]="lambda declared \'noreturn\' should not return",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[t]=false,
[e]="lambda declared \'noreturn\' should not return",
[n]={"alloca"},
[f]=n,
[m]="alloca",
[g]="lambda declared \'noreturn\' should not return",
[h]="use of function %0 is discouraged; there is no way to check for failure but failure may still occur, resulting in a possibly exploitable security vulnerability",
[h]=a,
[b]=j,
[i]=S,
[a]="use of function (.*?) is discouraged; there is no way to check for failure but failure may still occur, resulting in a possibly exploitable security vulnerability",
[b]={"cf11eb76ed8d",1329322815,"Specialize noreturn diagnostics for lambda expressions."},
[g]=" \\[(?:\\-Werror,)?\\-Walloca[^\\]]*\\]",
[k]={{Kb,556,"struct CheckFallThroughDiagnostics {\n  static CheckFallThroughDiagnostics MakeForLambda() {\n    D.diag_MaybeFallThrough_HasNoReturn = diag::err_noreturn_lambda_has_return_expr;"},{Kb,558,"struct CheckFallThroughDiagnostics {\n  static CheckFallThroughDiagnostics MakeForLambda() {\n    D.diag_AlwaysFallThrough_HasNoReturn = diag::err_noreturn_lambda_has_return_expr;"},{E,3154,"/// ActOnCapScopeReturnStmt - Utility routine to type-check return statements\n/// for capturing scopes.\n///\nStmtResult Sema::ActOnCapScopeReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp, NamedReturnInfo &NRInfo, bool SupressSimplerImplicitMoves) {\n  if (auto *CurBlock = dyn_cast<BlockScopeInfo>(CurCap)) {\n  } else if (auto *CurRegion = dyn_cast<CapturedRegionScopeInfo>(CurCap)) {\n  } else {\n    if (CurLambda->CallOperator->getType()->castAs<FunctionType>()->getNoReturnAttr()) {\n      Diag(ReturnLoc, diag::err_noreturn_lambda_has_return_expr);"}}
[e]=o,
[i]={"9d045a5c1e6b",1564093420,"[Sema] add -Walloca to flag uses of `alloca`"}
},
},
["warn_alloca_align_alignof"]={
["err_noreturn_non_function"]={
[c]="second argument to __builtin_alloca_with_align is supposed to be in bits [-Walloca-with-align-alignof]",
[j]="\'_Noreturn\' can only appear on functions",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"alloca-with-align-alignof"},
[e]="\'_Noreturn\' can only appear on functions",
[m]="alloca-with-align-alignof",
[f]=n,
[h]="second argument to __builtin_alloca_with_align is supposed to be in bits",
[g]="\'_Noreturn\' can only appear on functions",
[b]=j,
[h]=a,
[a]="second argument to __builtin_alloca_with_align is supposed to be in bits",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Walloca\\-with\\-align\\-alignof[^\\]]*\\]",
[b]={"0015f0987792",1358460971,"Parsing support for C11\'s _Noreturn keyword. No semantics yet."},
[e]=o,
[k]={{p,5906,"/// Diagnose function specifiers on a declaration of an identifier that\n/// does not identify a function.\nvoid Sema::DiagnoseFunctionSpecifiers(const DeclSpec &DS) {\n  if (DS.isNoreturnSpecified())\n    Diag(DS.getNoreturnSpecLoc(), diag::err_noreturn_non_function);"}}
[i]={"86b1bfad0509",1477937277,"[Sema] Warn when alignof is used with __builtin_alloca_with_align"}
},
},
["warn_always_inline_coroutine"]={
["err_nosetter_property_assignment"]={
[c]="this coroutine may be split into pieces; not every piece is guaranteed to be inlined [-Walways-inline-coroutine]",
[j]="...",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"always-inline-coroutine","coroutine"},
[e]="%select{assignment to readonly property|no setter method %1 for assignment to property}0",
[m]="always-inline-coroutine",
[f]=n,
[h]="this coroutine may be split into pieces; not every piece is guaranteed to be inlined",
[g]="(?:assignment to readonly property|no setter method (.*?) for assignment to property)",
[b]=j,
[h]=a,
[a]="this coroutine may be split into pieces; not every piece is guaranteed to be inlined",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Walways\\-inline\\-coroutine[^\\]]*\\]",
[b]={"c4a2d3259f9e",1319527676,"Introduce a placeholder type for \"pseudo object\""},
[e]="Coroutines Issue",
[k]={{pb,757,"/// @property-specific behavior for doing assignments.\nExprResult ObjCPropertyOpBuilder::buildAssignmentOperation(Scope *Sc, SourceLocation opcLoc, BinaryOperatorKind opcode, Expr *LHS, Expr *RHS) {\n  // If there\'s no setter, we have no choice but to try to assign to\n  // the result of the getter.\n  if (!findSetter()) {\n    S.Diag(opcLoc, diag::err_nosetter_property_assignment) << unsigned(RefExpr->isImplicitProperty()) << SetterSelector << LHS->getSourceRange() << RHS->getSourceRange();"}}
[i]={wd,1616787805,rd}
},
},
["warn_ambiguous_suitable_delete_function_found"]={
["err_nosetter_property_incdec"]={
[c]="multiple suitable A functions for B; no \'operator delete\' function will be invoked if initialization throws an exception [-Wambiguous-delete]",
[j]="...",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"ambiguous-delete"},
[e]="%select{%select{increment|decrement}1 of readonly property|no setter method %2 for %select{increment|decrement}1 of property}0",
[m]="ambiguous-delete",
[f]=n,
[h]="multiple suitable %0 functions for %1; no \'operator delete\' function will be invoked if initialization throws an exception",
[g]="(?:(?:increment|decrement) of readonly property|no setter method (.*?) for (?:increment|decrement) of property)",
[b]=j,
[h]=a,
[a]="multiple suitable (.*?) functions for (.*?); no \'operator delete\' function will be invoked if initialization throws an exception",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wambiguous\\-delete[^\\]]*\\]",
[b]={"c4a2d3259f9e",1319527676,"Introduce a placeholder type for \"pseudo object\""},
[e]=o,
[k]={{pb,795,"/// @property-specific behavior for doing increments and decrements.\nExprResult ObjCPropertyOpBuilder::buildIncDecOperation(Scope *Sc, SourceLocation opcLoc, UnaryOperatorKind opcode, Expr *op) {\n  // If there\'s no setter, we have no choice but to try to assign to\n  // the result of the getter.\n  if (!findSetter()) {\n    S.Diag(opcLoc, diag::err_nosetter_property_incdec) << unsigned(RefExpr->isImplicitProperty()) << unsigned(UnaryOperator::isDecrementOp(opcode)) << SetterSelector << op->getSourceRange();"}}
[i]={"189e52fcdfc3",1476081751,"P0035R4: Semantic analysis and code generation for C++17 overaligned"}
},
},
["warn_analyzer_deprecated_option"]={
["err_not_class_template_specialization"]={
[c]="analyzer option \'A\' is deprecated. This flag will be removed in B, and passing this option will be an error. [-Wdeprecated-static-analyzer-flag]",
[j]="cannot specialize a ...",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"deprecated-static-analyzer-flag"},
[e]="cannot specialize a %select{dependent template|template template parameter}0",
[m]="deprecated-static-analyzer-flag",
[f]=n,
[h]="analyzer option \'%0\' is deprecated. This flag will be removed in %1, and passing this option will be an error.",
[g]="cannot specialize a (?:dependent template|template template parameter)",
[b]=j,
[h]=a,
[a]="analyzer option \'(.*?)\' is deprecated\\. This flag will be removed in (.*?), and passing this option will be an error\\.",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wdeprecated\\-static\\-analyzer\\-flag[^\\]]*\\]",
[b]={"dd6c0356bae5",1257986780,"Improve recovery in a wonky case where one tries to specialize a"},
[e]=p,
[k]={{K,7084,"DeclResult Sema::ActOnClassTemplateSpecialization(Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, SourceLocation ModulePrivateLoc, CXXScopeSpec &SS, TemplateIdAnnotation &TemplateId, const ParsedAttributesView &Attr, MultiTemplateParamsArg TemplateParameterLists, SkipBodyInfo *SkipBody) {\n  if (!ClassTemplate) {\n    Diag(TemplateNameLoc, diag::err_not_class_template_specialization) << (Name.getAsTemplateDecl() && isa<TemplateTemplateParmDecl>(Name.getAsTemplateDecl()));"}}
[i]={"aef03c9b3bed",1651866463,"[clang][auto-init] Deprecate -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clan..."}
},
},
["warn_analyzer_deprecated_option_with_alternative"]={
["err_not_direct_base_or_virtual"]={
[c]="analyzer option \'A\' is deprecated. This flag will be removed in B, and passing this option will be an error. Use \'C\' instead. [-Wdeprecated-static-analyzer-flag]",
[j]="type A is not a direct or virtual base of B",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"deprecated-static-analyzer-flag"},
[e]="type %0 is not a direct or virtual base of %1",
[m]="deprecated-static-analyzer-flag",
[f]=n,
[h]="analyzer option \'%0\' is deprecated. This flag will be removed in %1, and passing this option will be an error. Use \'%2\' instead.",
[g]="type (.*?) is not a direct or virtual base of (.*?)",
[b]=j,
[h]=a,
[a]="analyzer option \'(.*?)\' is deprecated\\. This flag will be removed in (.*?), and passing this option will be an error\\. Use \'(.*?)\' instead\\.",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wdeprecated\\-static\\-analyzer\\-flag[^\\]]*\\]",
[b]={"7baa71e2dd9c",1246383292,"More diagnostics related to initialization of direct bases"},
[e]=p,
[k]={{r,4031,"MemInitResult Sema::BuildBaseInitializer(QualType BaseType, TypeSourceInfo *BaseTInfo, Expr *Init, CXXRecordDecl *ClassDecl, SourceLocation EllipsisLoc) {\n  if (!Dependent) {\n    // C++ [base.class.init]p2:\n    // Unless the mem-initializer-id names a nonstatic data member of the\n    // constructor\'s class or a direct or virtual base of that class, the\n    // mem-initializer is ill-formed.\n    if (!DirectBaseSpec && !VirtualBaseSpec) {\n      // If the class has any dependent bases, then it\'s possible that\n      // one of those types will resolve to the same type as\n      // BaseType. Therefore, just treat this as a dependent base\n      // class initialization.  FIXME: Should we try to check the\n      // initialization anyway? It seems odd.\n      if (ClassDecl->hasAnyDependentBases())\n      else\n        return Diag(BaseLoc, diag::err_not_direct_base_or_virtual) << BaseType << Context.getTypeDeclType(ClassDecl) << BaseTInfo->getTypeLoc().getSourceRange();"}}
[i]={"3738ce05a70c",1668637223,"Add support for a backdoor driver option that enables emitting header"}
},
},
["warn_anyx86_interrupt_regsave"]={
["err_not_found_by_two_phase_lookup"]={
[c]="interrupt service routine should only call a function with attribute \'no_caller_saved_registers\' [-Winterrupt-service-routine]",
[j]="call to function A that is neither visible in the template definition nor found by argument-dependent lookup",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"interrupt-service-routine"},
[e]="call to function %0 that is neither visible in the template definition nor found by argument-dependent lookup",
[m]="interrupt-service-routine",
[f]=n,
[h]="interrupt service routine should only call a function with attribute \'no_caller_saved_registers\'",
[g]="call to function (.*?) that is neither visible in the template definition nor found by argument\\-dependent lookup",
[b]=j,
[h]=a,
[a]="interrupt service routine should only call a function with attribute \'no_caller_saved_registers\'",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Winterrupt\\-service\\-routine[^\\]]*\\]",
[b]={"998a591e3261",1307313768,"Fix PR10053: Improve diagnostics and error recovery for code which some compilers incorrectly accept..."},
[e]=o,
[k]={{Ab,11251,"/// Attempt to recover from an ill-formed use of a non-dependent name in a\n/// template, where the non-dependent name was declared after the template\n/// was defined. This is common in code written for a compilers which do not\n/// correctly implement two-stage name lookup.\n///\n/// Returns true if a viable candidate was found and a diagnostic was issued.\nstatic bool DiagnoseTwoPhaseLookup(Sema &SemaRef, SourceLocation FnLoc, const CXXScopeSpec &SS, LookupResult &R, OverloadCandidateSet::CandidateSetKind CSK, TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef<Expr *> Args, CXXRecordDecl **FoundInClass = nullptr) {\n  for (DeclContext *DC = SemaRef.CurContext; DC; DC = DC->getParent()) {\n    if (!R.empty()) {\n      SemaRef.Diag(R.getNameLoc(), diag::err_not_found_by_two_phase_lookup) << R.getLookupName();"}}
[i]={Lc,1607502387,Mc}
},
},
["warn_arc_bridge_cast_nonarc"]={
["err_not_integral_type_anon_bitfield"]={
[c]="\'A\' casts have no effect when not using ARC [-Warc-bridge-casts-disallowed-in-nonarc]",
[j]="anonymous bit-field has non-integral type A",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"arc-bridge-casts-disallowed-in-nonarc"},
[e]="anonymous bit-field has non-integral type %0",
[m]="arc-bridge-casts-disallowed-in-nonarc",
[f]=n,
[h]="\'%0\' casts have no effect when not using ARC",
[g]="anonymous bit\\-field has non\\-integral type (.*?)",
[b]=j,
[h]=a,
[a]="\'(.*?)\' casts have no effect when not using ARC",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Warc\\-bridge\\-casts\\-disallowed\\-in\\-nonarc[^\\]]*\\]",
[b]={"f9b00eb7dc88",1240248578,"clean up anonymous bitfield diagnostics, PR4017"},
[e]="ARC Parse Issue",
[k]={{p,15667,"// Note that FieldName may be null for anonymous bitfields.\nExprResult Sema::VerifyBitField(SourceLocation FieldLoc, IdentifierInfo *FieldName, QualType FieldTy, bool IsMsStruct, Expr *BitWidth) {\n  // C99 6.7.2.1p4 - verify the field type.\n  // C++ 9.6p3: A bit-field shall have integral or enumeration type.\n  if (!FieldTy->isDependentType() && !FieldTy->isIntegralOrEnumerationType()) {\n    return Diag(FieldLoc, diag::err_not_integral_type_anon_bitfield) << FieldTy << BitWidth->getSourceRange();"}}
[i]={"084e1b48a176",1329540158,"Change wording of warning about using __bridge casts in non-ARC."}
},
},
["warn_arc_lifetime_result_type"]={
["err_not_integral_type_bitfield"]={
[c]="ARC ... lifetime qualifier on return type is ignored [-Wignored-qualifiers]",
[j]="bit-field A has non-integral type B",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={p,v,Ub,xd},
[e]="bit-field %0 has non-integral type %1",
[m]=xd,
[f]=n,
[h]="ARC %select{unused|__unsafe_unretained|__strong|__weak|__autoreleasing}0 lifetime qualifier on return type is ignored",
[g]="bit\\-field (.*?) has non\\-integral type (.*?)",
[b]=j,
[h]=a,
[a]="ARC (?:unused|__unsafe_unretained|__strong|__weak|__autoreleasing) lifetime qualifier on return type is ignored",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Wignored\\-qualifiers[^\\]]*\\]",
[b]={z,1236199783,A},
[e]="ARC Semantic Issue",
[k]={{p,15666,"// Note that FieldName may be null for anonymous bitfields.\nExprResult Sema::VerifyBitField(SourceLocation FieldLoc, IdentifierInfo *FieldName, QualType FieldTy, bool IsMsStruct, Expr *BitWidth) {\n  // C99 6.7.2.1p4 - verify the field type.\n  // C++ 9.6p3: A bit-field shall have integral or enumeration type.\n  if (!FieldTy->isDependentType() && !FieldTy->isIntegralOrEnumerationType()) {\n    if (FieldName)\n      return Diag(FieldLoc, diag::err_not_integral_type_bitfield) << FieldName << FieldTy << BitWidth->getSourceRange();"},{r,3092,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n  if (isInstField) {\n  } else {\n    // Non-instance-fields can\'t have a bitfield.\n    if (BitWidth) {\n      if (Member->isInvalidDecl()) {\n      } else if (isa<VarDecl>(Member) || isa<VarTemplateDecl>(Member)) {\n      } else if (isa<TypedefDecl>(Member)) {\n      } else {\n        Diag(Loc, diag::err_not_integral_type_bitfield) << Name << cast<ValueDecl>(Member)->getType() << BitWidth->getSourceRange();"}}
[i]={"cd78037ad117",1358465805,"In Objective-C ARC, completely ignore ownership qualifiers on the"}
},
},
["warn_arc_literal_assign"]={
["err_not_tag_in_scope"]={
[c]="assigning ... to a weak ...; object will be released after assignment [-Warc-unsafe-retained-assign]",
[j]="no ... named A in B",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"arc","arc-unsafe-retained-assign"},
[e]="no %select{struct|interface|union|class|enum}0 named %1 in %2",
[m]="arc-unsafe-retained-assign",
[f]=n,
[h]="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",
[g]="no (?:struct|interface|union|class|enum) named (.*?) in (.*?)",
[b]=j,
[h]=a,
[a]="assigning (?:array literal|dictionary literal|numeric literal|boxed expression|block literal) to a weak (?:property|variable); object will be released after assignment",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Warc\\-unsafe\\-retained\\-assign[^\\]]*\\]",
[b]={x,1237025389,w},
[e]="ARC Semantic Issue",
[k]={{p,14825,"/// This is invoked when we see \'struct foo\' or \'struct {\'.  In the\n/// former case, Name will be non-null.  In the later case, Name will be null.\n/// TagSpec indicates what kind of tag this is. TUK indicates whether this is a\n/// reference/declaration/definition of a tag.\n///\n/// \\param IsTypeSpecifier \\c true if this is a type-specifier (or\n/// trailing-type-specifier) other than one in an alias-declaration.\n///\n/// \\param SkipBody If non-null, will be set to indicate if the caller should\n/// skip the definition of this tag and treat it as if it were a declaration.\nDeclResult Sema::ActOnTag(Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, const ParsedAttributesView &Attrs, AccessSpecifier AS, SourceLocation ModulePrivateLoc, MultiTemplateParamsArg TemplateParameterLists, bool &OwnedDecl, bool &IsDependent, SourceLocation ScopedEnumKWLoc, bool ScopedEnumUsesClassTag, TypeResult UnderlyingType, bool IsTypeSpecifier, bool IsTemplateParamOrArg, OffsetOfKind OOK, SkipBodyInfo *SkipBody) {\n  if (Name && SS.isNotEmpty()) {\n    if (Previous.empty()) {\n      Diag(NameLoc, diag::err_not_tag_in_scope) << Kind << Name << DC << SS.getRange();"},{"clang/lib/Sema/SemaTemplateInstantiateDecl.cpp",1396,"Decl *TemplateDeclInstantiator::VisitClassTemplateDecl(ClassTemplateDecl *D) {\n  if (isFriend) {\n    if (!PrevClassTemplate && QualifierLoc) {\n      SemaRef.Diag(Pattern->getLocation(), diag::err_not_tag_in_scope) << D->getTemplatedDecl()->getTagKind() << Pattern->getDeclName() << DC << QualifierLoc.getSourceRange();"}}
[i]={"9304da95784c",1356077068,"Extend checkUnsafeAssigns() to also handle assigning an object literal to a weak reference."}
},
},
["warn_arc_object_memaccess"]={
["err_ns_attribute_wrong_parameter_type"]={
[c]="... this A call is a pointer to ownership-qualified type B [-Warc-non-pod-memaccess]",
[j]="A attribute only applies to ... parameters",
[d]=k,
[c]=l,
[f]=l,
[d]=m,
[n]={"arc","arc-non-pod-memaccess"},
[e]="%0 attribute only applies to %select{Objective-C object|pointer|pointer-to-CF-pointer}1 parameters",
[m]="arc-non-pod-memaccess",
[f]=n,
[h]="%select{destination for|source of}0 this %1 call is a pointer to ownership-qualified type %2",
[g]="(.*?) attribute only applies to (?:Objective\\-C object|pointer|pointer\\-to\\-CF\\-pointer) parameters",
[b]=j,
[h]=a,
[a]="(?:destination for|source of) this (.*?) call is a pointer to ownership\\-qualified type (.*?)",
[i]=o,
[g]=" \\[(?:\\-Werror,)?\\-Warc\\-non\\-pod\\-memaccess[^\\]]*\\]",
[b]={"3b5a8f5ffc83",1456963803,"Improve some infrastructure for extended parameter infos and"},
[e]="ARC Semantic Issue",
[k]={{v,5191,"void Sema::AddXConsumedAttr(Decl *D, const AttributeCommonInfo &CI, RetainOwnershipKind K, bool IsTemplateInstantiation) {\n  case RetainOwnershipKind::NS:\n    handleSimpleAttributeOrDiagnose<NSConsumedAttr>(*this, VD, CI, isValidSubjectOfNSAttribute(VD->getType()),\n                                                    ((IsTemplateInstantiation && getLangOpts().ObjCAutoRefCount) ? diag::err_ns_attribute_wrong_parameter_type : diag::warn_ns_attribute_wrong_parameter_type),"}}
[i]={"31168b077c36",1308178962,"Automatic Reference Counting."}
},
},
["warn_arc_perform_selector_leaks"]={
["err_nsconsumed_attribute_mismatch"]={
[c]="performSelector may cause a leak because its selector is unknown [-Warc-performSelector-leaks]",
[
[d]=k,
[f]=l,
[n]={"arc-performSelector-leaks"},
[m]="arc-performSelector-leaks",
[h]="performSelector may cause a leak because its selector is unknown",
[b]=j,
[a]="performSelector may cause a leak because its selector is unknown",
[g]=" \\[(?:\\-Werror,)?\\-Warc\\-performSelector\\-leaks[^\\]]*\\]",
[e]=o,
[i]={"b7a773626fea",1309905539,"objc-arc: enforce performSelector rules in rejecting retaining selectors"}
},
["warn_arc_possible_repeated_use_of_weak"]={
[c]="weak ... A may be accessed multiple times in this ... and may be unpredictably set to nil; assign to a strong variable to keep the object alive [-Warc-maybe-repeated-use-of-weak]",
[d]=k,
[f]=l,
[t]=false,
[n]={"arc-maybe-repeated-use-of-weak","arc-repeated-use-of-weak"},
[m]="arc-maybe-repeated-use-of-weak",
[h]="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",
[b]=j,
[a]="weak (?:variable|property|implicit property|instance variable) (.*?) may be accessed multiple times in this (?:function|method|block|lambda) and may be unpredictably set to nil; assign to a strong variable to keep the object alive",
[g]=" \\[(?:\\-Werror,)?\\-Warc\\-maybe\\-repeated\\-use\\-of\\-weak[^\\]]*\\]",
[e]=o,
[i]={"d393458c3316",1348870890,"Add a warning (off by default) for repeated use of the same weak property."}
},
["warn_arc_repeated_use_of_weak"]={
[c]="weak ... A is accessed multiple times in this ... but may be unpredictably set to nil; assign to a strong variable to keep the object alive [-Warc-repeated-use-of-weak]",
[d]=k,
[f]=l,
[t]=false,
[n]={"arc-repeated-use-of-weak"},
[m]="arc-repeated-use-of-weak",
[h]="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",
[b]=j,
[a]="weak (?:variable|property|implicit property|instance variable) (.*?) is accessed multiple times in this (?:function|method|block|lambda) but may be unpredictably set to nil; assign to a strong variable to keep the object alive",
[g]=" \\[(?:\\-Werror,)?\\-Warc\\-repeated\\-use\\-of\\-weak[^\\]]*\\]",
[e]=o,
[i]={"d393458c3316",1348870890,"Add a warning (off by default) for repeated use of the same weak property."}
},
["warn_arc_retain_cycle"]={
[c]="capturing A strongly in this block is likely to lead to a retain cycle [-Warc-retain-cycles]",
[d]=k,
[f]=l,
[n]={"arc","arc-retain-cycles"},
[m]="arc-retain-cycles",
[h]="capturing %0 strongly in this block is likely to lead to a retain cycle",
[b]=j,
[a]="capturing (.*?) strongly in this block is likely to lead to a retain cycle",
[g]=" \\[(?:\\-Werror,)?\\-Warc\\-retain\\-cycles[^\\]]*\\]",
[e]="ARC Retain Cycle",
[i]={"31168b077c36",1308178962,"Automatic Reference Counting."}
},
["warn_arc_retained_assign"]={
[c]="assigning retained object to ... ...; object will be released after assignment [-Warc-unsafe-retained-assign]",
[d]=k,
[f]=l,
[n]={"arc","arc-unsafe-retained-assign"},
[m]="arc-unsafe-retained-assign",
[h]="assigning retained object to %select{weak|unsafe_unretained}0 %select{property|variable}1; object will be released after assignment",
[b]=j,
[a]="assigning retained object to (?:weak|unsafe_unretained) (?:property|variable); object will be released after assignment",
[g]=" \\[(?:\\-Werror,)?\\-Warc\\-unsafe\\-retained\\-assign[^\\]]*\\]",
[e]="ARC Semantic Issue",
[i]={"31168b077c36",1308178962,"Automatic Reference Counting."}
},
["warn_arc_retained_property_assign"]={
[c]="assigning retained object to unsafe property; object will be released after assignment [-Warc-unsafe-retained-assign]",
[d]=k,
[f]=l,
[n]={"arc","arc-unsafe-retained-assign"},
[m]="arc-unsafe-retained-assign",
[h]="assigning retained object to unsafe property; object will be released after assignment",
[b]=j,
[a]="assigning retained object to unsafe property; object will be released after assignment",
[g]=" \\[(?:\\-Werror,)?\\-Warc\\-unsafe\\-retained\\-assign[^\\]]*\\]",
[e]="ARC Semantic Issue",
[i]={"5f98da0ea2bb",1308939934,"objc-arc: Check on a variety of unsafe assignment of retained "}
},
["warn_arc_strong_pointer_objc_pointer"]={
[c]="method parameter of type A with no explicit ownership [-Wexplicit-ownership-type]",
[d]=k,
[f]=l,
[t]=false,
[n]={"explicit-ownership-type"},
[m]="explicit-ownership-type",
[h]="method parameter of type %0 with no explicit ownership",
[b]=j,
[a]="method parameter of type (.*?) with no explicit ownership",
[g]=" \\[(?:\\-Werror,)?\\-Wexplicit\\-ownership\\-type[^\\]]*\\]",
[e]="ARC Restrictions",
[i]={"cd278ffa2856",1346370962,"objective-C ARC: under -Wexplicit-ownership-type diagnose those"}
},
["warn_arcmt_nsalloc_realloc"]={
[c]="[rewriter] call returns pointer to GC managed memory; it will become unmanaged in ARC",
[d]=k,
[f]=l,
[h]="[rewriter] call returns pointer to GC managed memory; it will become unmanaged in ARC",
[b]=j,
[a]="\\[rewriter\\] call returns pointer to GC managed memory; it will become unmanaged in ARC",
[g]=P,
[e]=p,
[i]={"403a4f9b826d",1400539871,"Get ARCMT/GC-check-warn-nsalloc.m working"}
},
["warn_argument_invalid_range"]={
[c]="argument value A is outside the valid range [B, C] [-Wargument-outside-range]",
[d]=Bb,
[f]=Yb,
[n]={"argument-outside-range"},
[m]="argument-outside-range",
[h]="argument value %0 is outside the valid range [%1, %2]",
[b]=ac,
[a]="argument value (.*?) is outside the valid range \\[(.*?), (.*?)\\]",
[g]=" \\[[^\\]]*\\-Wargument\\-outside\\-range[^\\]]*\\]",
[e]=o,
[i]={"16e6bc23a12e",1529624769,"[x86] Teach the builtin argument range check to allow invalid ranges in"}
},
["warn_argument_undefined_behaviour"]={
[c]="argument value A will result in undefined behaviour [-Wargument-undefined-behaviour]",
[d]=k,
[f]=l,
[n]={"argument-undefined-behaviour"},
[m]="argument-undefined-behaviour",
[h]="argument value %0 will result in undefined behaviour",
[b]=j,
[a]="argument value (.*?) will result in undefined behaviour",
[g]=" \\[(?:\\-Werror,)?\\-Wargument\\-undefined\\-behaviour[^\\]]*\\]",
[e]=o,
[i]={Ib,1615397021,Hb}
},
["warn_arith_conv_enum_float"]={
[c]="... ... type A with ... type B [-Wenum-float-conversion]",
[d]=k,
[f]=l,
[t]=false,
[n]={V,"enum-conversion","enum-float-conversion",W},
[m]="enum-float-conversion",
[h]="%select{arithmetic between|bitwise operation between|comparison of|conditional expression between|compound assignment of}0 %select{floating-point|enumeration}1 type %2 %plural{2:with|4:from|:and}0 %select{enumeration|floating-point}1 type %3",
[b]=j,
[a]="(?:arithmetic between|bitwise operation between|comparison of|conditional expression between|compound assignment of) (?:floating\\-point|enumeration) type (.*?) (?:with|from|and) (?:enumeration|floating\\-point) type (.*?)",
[g]=" \\[(?:\\-Werror,)?\\-Wenum\\-float\\-conversion[^\\]]*\\]",
[e]=cb,
[i]={"fe17b30a7957",1575504770,"[attributes][analyzer] Add annotations for handles."}
},
["warn_arith_conv_enum_float_cxx20"]={
[c]="... ... type A with ... type B is deprecated [-Wdeprecated-enum-float-conversion]",
[d]=k,
[f]=l,
[n]={V,X,"deprecated-enum-float-conversion","enum-conversion","enum-float-conversion",W},
[m]="deprecated-enum-float-conversion",
[h]="%select{arithmetic between|bitwise operation between|comparison of|conditional expression between|compound assignment of}0 %select{floating-point|enumeration}1 type %2 %plural{2:with|4:from|:and}0 %select{enumeration|floating-point}1 type %3 is deprecated",
[b]=j,
[a]="(?:arithmetic between|bitwise operation between|comparison of|conditional expression between|compound assignment of) (?:floating\\-point|enumeration) type (.*?) (?:with|from|and) (?:enumeration|floating\\-point) type (.*?) is deprecated",
[g]=" \\[(?:\\-Werror,)?\\-Wdeprecated\\-enum\\-float\\-conversion[^\\]]*\\]",
[e]=fb,
[i]={wb,1576908663,vb}
},
["warn_arith_conv_mixed_anon_enum_types"]={
[c]="... different enumeration types (A and B) [-Wanon-enum-enum-conversion]",
[d]=k,
[f]=l,
[t]=false,
[n]={"anon-enum-enum-conversion"},
[m]="anon-enum-enum-conversion",
[h]="%select{arithmetic between|bitwise operation between|comparison of|conditional expression between|compound assignment of}0 different enumeration types%diff{ ($ and $)|}1,2",
[b]=j,
[a]="(?:arithmetic between|bitwise operation between|comparison of|conditional expression between|compound assignment of) different enumeration types(?: \\((.*?) and (.*?)\\)|)",
[g]=" \\[(?:\\-Werror,)?\\-Wanon\\-enum\\-enum\\-conversion[^\\]]*\\]",
[e]=o,
[i]={"fe17b30a7957",1575504770,"[attributes][analyzer] Add annotations for handles."}
},
["warn_arith_conv_mixed_anon_enum_types_cxx20"]={
[c]="... different enumeration types (A and B) is deprecated [-Wdeprecated-anon-enum-enum-conversion]",
[d]=k,
[f]=l,
[n]={"anon-enum-enum-conversion",X,"deprecated-anon-enum-enum-conversion"},
[m]="deprecated-anon-enum-enum-conversion",
[h]="%select{arithmetic between|bitwise operation between|comparison of|conditional expression between|compound assignment of}0 different enumeration types%diff{ ($ and $)|}1,2 is deprecated",
[b]=j,
[a]="(?:arithmetic between|bitwise operation between|comparison of|conditional expression between|compound assignment of) different enumeration types(?: \\((.*?) and (.*?)\\)|) is deprecated",
[g]=" \\[(?:\\-Werror,)?\\-Wdeprecated\\-anon\\-enum\\-enum\\-conversion[^\\]]*\\]",
[e]=fb,
[i]={wb,1576908663,vb}
},
["warn_arith_conv_mixed_enum_types"]={
[c]="... different enumeration types (A and B) [-Wenum-enum-conversion]",
[d]=k,
[f]=l,
[t]=false,
[n]={V,"enum-conversion","enum-enum-conversion",W},
[m]="enum-enum-conversion",
[h]="%select{arithmetic between|bitwise operation between|comparison of|conditional expression between|compound assignment of}0 different enumeration types%diff{ ($ and $)|}1,2",
[b]=j,
[a]="(?:arithmetic between|bitwise operation between|comparison of|conditional expression between|compound assignment of) different enumeration types(?: \\((.*?) and (.*?)\\)|)",
[g]=" \\[(?:\\-Werror,)?\\-Wenum\\-enum\\-conversion[^\\]]*\\]",
[e]=cb,
[i]={"fe17b30a7957",1575504770,"[attributes][analyzer] Add annotations for handles."}
},
["warn_arith_conv_mixed_enum_types_cxx20"]={
[c]="... different enumeration types (A and B) is deprecated [-Wdeprecated-enum-enum-conversion]",
[d]=k,
[f]=l,
[n]={V,X,"deprecated-enum-enum-conversion","enum-conversion","enum-enum-conversion",W},
[m]="deprecated-enum-enum-conversion",
[h]="%select{arithmetic between|bitwise operation between|comparison of|conditional expression between|compound assignment of}0 different enumeration types%diff{ ($ and $)|}1,2 is deprecated",
[b]=j,
[a]="(?:arithmetic between|bitwise operation between|comparison of|conditional expression between|compound assignment of) different enumeration types(?: \\((.*?) and (.*?)\\)|) is deprecated",
[g]=" \\[(?:\\-Werror,)?\\-Wdeprecated\\-enum\\-enum\\-conversion[^\\]]*\\]",
[e]=fb,
[i]={wb,1576908663,vb}
},
["warn_arm_interrupt_calling_convention"]={
[c]="call to function without interrupt attribute could clobber interruptee\'s VFP registers [-Wextra]",
[d]=k,
[f]=l,
[n]={p,v,Ub},
[m]=Ub,
[h]="call to function without interrupt attribute could clobber interruptee\'s VFP registers",
[b]=j,
[a]="call to function without interrupt attribute could clobber interruptee\'s VFP registers",
[g]=" \\[(?:\\-Werror,)?\\-Wextra[^\\]]*\\]",
[e]=o,
[i]={"8277c41a899b",1484753471,"Warn when calling a non interrupt function from an interrupt on ARM"}
},
["warn_array_index_exceeds_bounds"]={
[c]="array index A is past the end of the array (that has type B...) [-Warray-bounds]",
[d]=k,
[f]=l,
[n]={gd},
[m]=gd,
[h]="array index %0 is past the end of the array (that has type %1%select{|, cast to %3}2)",
[b]=j,
[a]="array index (.*?) is past the end of the array \\(that has type (.*?)(?:|, cast to (.*?))\\)",
[g]=" \\[(?:\\-Werror,)?\\-Warray\\-bounds[^\\]]*\\]",
[e]=o,
[i]={"108b2d56bf41",1297828904,"Tweak -Warray-bounds diagnostics based on feedback from Chandler."}
},
["warn_array_index_exceeds_max_addressable_bounds"]={
[c]="array index A refers past the last possible element for an array in B-bit address space containing C-bit (D-byte) elements (max possible E elementF) [-Warray-bounds]",
[d]=k,
[f]=l,
[n]={gd},
[m]=gd,
[h]="array index %0 refers past the last possible element for an array in %1-bit address space containing %2-bit (%3-byte) elements (max possible %4 element%s5)",
[b]=j,
[a]="array index (.*?) refers past the last possible element for an array in (.*?)\\-bit address space containing (.*?)\\-bit \\((.*?)\\-byte\\) elements \\(max possible (.*?) element(.*?)\\)",
[g]=" \\[(?:\\-Werror,)?\\-Warray\\-bounds[^\\]]*\\]",
[e]=o,
[i]={"da55e9ba1273",1600125132,"[Sema] Address-space sensitive index check for unbounded arrays"}
},
["warn_array_index_precedes_bounds"]={
[c]="array index A is before the beginning of the array [-Warray-bounds]",
[d]=k,
[f]=l,
[n]={gd},
[m]=gd,
[h]="array index %0 is before the beginning of the array",
[b]=j,
[a]="array index (.*?) is before the beginning of the array",
[g]=" \\[(?:\\-Werror,)?\\-Warray\\-bounds[^\\]]*\\]",
[e]=o,
[i]={"108b2d56bf41",1297828904,"Tweak -Warray-bounds diagnostics based on feedback from Chandler."}
},
["warn_asm_label_on_auto_decl"]={
[c]="ignored asm label \'A\' on automatic variable",
[d]=k,
[f]=l,
[h]="ignored asm label \'%0\' on automatic variable",
[b]=j,
[a]="ignored asm label \'(.*?)\' on automatic variable",
[g]=P,
[e]="Inline Assembly Issue",
[i]={"133922318641",1294759012,"Added warning about invalid register specification for local variables."}
},
["warn_asm_mismatched_size_modifier"]={
[c]="value size does not match register size specified by the constraint and modifier [-Wasm-operand-widths]",
[d]=k,
[f]=l,
[n]={"asm","asm-operand-widths"},
[m]="asm-operand-widths",
[h]="value size does not match register size specified by the constraint and modifier",
[b]=j,
[a]="value size does not match register size specified by the constraint and modifier",
[g]=" \\[(?:\\-Werror,)?\\-Wasm\\-operand\\-widths[^\\]]*\\]",
[e]="Inline Assembly Issue",
[i]={"9d1ee1175de3",1351207728,"Recommit Eric\'s code to validate ASM string\'s constraints and modifiers."}
},
["warn_assume_aligned_too_great"]={
[c]="requested alignment must be A bytes or smaller; maximum alignment assumed [-Wbuiltin-assume-aligned-alignment]",
[d]=k,
[f]=l,
[n]={"builtin-assume-aligned-alignment"},
[m]="builtin-assume-aligned-alignment",
[h]="requested alignment must be %0 bytes or smaller; maximum alignment assumed",
[b]=j,
[a]="requested alignment must be (.*?) bytes or smaller; maximum alignment assumed",
[g]=" \\[(?:\\-Werror,)?\\-Wbuiltin\\-assume\\-aligned\\-alignment[^\\]]*\\]",
[e]=o,
[i]={kb,1567434909,mb}
},
["warn_assume_attribute_string_unknown"]={
[c]="unknown assumption string \'A\'; attribute is potentially ignored [-Wunknown-assumption]",
[d]=k,
[f]=l,
[n]={"unknown-assumption"},
[m]="unknown-assumption",
[h]="unknown assumption string \'%0\'; attribute is potentially ignored",
[b]=j,
[a]="unknown assumption string \'(.*?)\'; attribute is potentially ignored",
[g]=" \\[(?:\\-Werror,)?\\-Wunknown\\-assumption[^\\]]*\\]",
[e]=o,
[i]={Mb,1590001902,Nb}
},
["warn_assume_attribute_string_unknown_suggested"]={
[c]="unknown assumption string \'A\' may be misspelled; attribute is potentially ignored, did you mean \'B\'? [-Wmisspelled-assumption]",
[d]=k,
[f]=l,
[n]={"misspelled-assumption"},
[m]="misspelled-assumption",
[h]="unknown assumption string \'%0\' may be misspelled; attribute is potentially ignored, did you mean \'%1\'?",
[b]=j,
[a]="unknown assumption string \'(.*?)\' may be misspelled; attribute is potentially ignored, did you mean \'(.*?)\'\\?",
[g]=" \\[(?:\\-Werror,)?\\-Wmisspelled\\-assumption[^\\]]*\\]",
[e]=o,
[i]={Mb,1590001902,Nb}
},
["warn_assume_side_effects"]={
[c]="the argument to A has side effects that will be discarded [-Wassume]",
[d]=k,
[f]=l,
[n]={"assume"},
[m]="assume",
[h]="the argument to %0 has side effects that will be discarded",
[b]=j,
[a]="the argument to (.*?) has side effects that will be discarded",
[g]=" \\[(?:\\-Werror,)?\\-Wassume[^\\]]*\\]",
[e]=o,
[i]={"f04173358502",1405607155,"Add an __assume side-effects warning"}
},
["warn_at_available_unchecked_use"]={
[c]="... does not guard availability here; use if (...) instead [-Wunsupported-availability-guard]",
[d]=k,
[f]=l,
[n]={"unsupported-availability-guard"},
[m]="unsupported-availability-guard",
[h]="%select{@available|__builtin_available}0 does not guard availability here; use if (%select{@available|__builtin_available}0) instead",
[b]=j,
[a]="(?:@available|__builtin_available) does not guard availability here; use if \\((?:@available|__builtin_available)\\) instead",
[g]=" \\[(?:\\-Werror,)?\\-Wunsupported\\-availability\\-guard[^\\]]*\\]",
[e]=o,
[i]={"0a484baa8516",1495638929,"Warn about uses of `@available` that can\'t suppress the"}
},
["warn_atimport_in_framework_header"]={
[c]="use of \'@import\' in framework header is discouraged, including this header requires -fmodules [-Watimport-in-framework-header]",
[d]=k,
[f]=l,
[n]={"atimport-in-framework-header"},
[m]="atimport-in-framework-header",
[h]="use of \'@import\' in framework header is discouraged, including this header requires -fmodules",
[b]=j,
[a]="use of \'@import\' in framework header is discouraged, including this header requires \\-fmodules",
[g]=" \\[(?:\\-Werror,)?\\-Watimport\\-in\\-framework\\-header[^\\]]*\\]",
[e]=y,
[i]={"03e0d2d82be7",1530131376,"[Modules][ObjC] Warn on the use of \'@import\' in framework headers"}
},
["warn_atl_uuid_deprecated"]={
[c]="specifying \'uuid\' as an ATL attribute is deprecated; use __declspec instead [-Wdeprecated-declarations]",
[d]=k,
[f]=l,
[n]={X,Vc},
[m]=Vc,
[h]="specifying \'uuid\' as an ATL attribute is deprecated; use __declspec instead",
[b]=j,
[a]="specifying \'uuid\' as an ATL attribute is deprecated; use __declspec instead",
[g]=" \\[(?:\\-Werror,)?\\-Wdeprecated\\-declarations[^\\]]*\\]",
[e]=fb,
[i]={"469891e7a293",1494003956,"Warn that the [] spelling of uuid(...) is deprecated."}
},
["warn_atomic_implicit_seq_cst"]={
[c]="implicit use of sequentially-consistent atomic may incur stronger memory barriers than necessary [-Watomic-implicit-seq-cst]",
[d]=k,
[f]=l,
[t]=false,
[n]={"atomic-implicit-seq-cst"},
[m]="atomic-implicit-seq-cst",
[h]="implicit use of sequentially-consistent atomic may incur stronger memory barriers than necessary",
[b]=j,
[a]="implicit use of sequentially\\-consistent atomic may incur stronger memory barriers than necessary",
[g]=" \\[(?:\\-Werror,)?\\-Watomic\\-implicit\\-seq\\-cst[^\\]]*\\]",
[e]=o,
[i]={"e77b48b07840",1536612176,"Implement -Watomic-implicit-seq-cst"}
},
["warn_atomic_member_access"]={
[c]="accessing a member of an atomic structure or union is undefined behavior [-Watomic-access]",
[d]=Bb,
[f]=Yb,
[n]={"atomic-access"},
[m]="atomic-access",
[h]="accessing a member of an atomic structure or union is undefined behavior",
[b]=ac,
[a]="accessing a member of an atomic structure or union is undefined behavior",
[g]=" \\[[^\\]]*\\-Watomic\\-access[^\\]]*\\]",
[e]=o,
[i]={pd,1620118562,od}
},
["warn_atomic_op_has_invalid_memory_order"]={
[c]="memory order argument to atomic operation is invalid [-Watomic-memory-ordering]",
[d]=k,
[f]=l,
[n]={"atomic-memory-ordering"},
[m]="atomic-memory-ordering",
[h]="memory order argument to atomic operation is invalid",
[b]=j,
[a]="memory order argument to atomic operation is invalid",
[g]=" \\[(?:\\-Werror,)?\\-Watomic\\-memory\\-ordering[^\\]]*\\]",
[e]=o,
[i]={"c83472e0ff4c",1394537710,"Sema: demote invalid atomic ordering message to warning."}
},
["warn_atomic_op_misaligned"]={
[c]="misaligned atomic operation may incur significant performance penalty; the expected alignment (A bytes) exceeds the actual alignment (B bytes) [-Watomic-alignment]",
[d]=k,
[f]=l,
[n]={"atomic-alignment"},
[m]="atomic-alignment",
[h]="misaligned atomic operation may incur significant performance penalty; the expected alignment (%0 bytes) exceeds the actual alignment (%1 bytes)",
[b]=j,
[a]="misaligned atomic operation may incur significant performance penalty; the expected alignment \\((.*?) bytes\\) exceeds the actual alignment \\((.*?) bytes\\)",
[g]=" \\[(?:\\-Werror,)?\\-Watomic\\-alignment[^\\]]*\\]",
[e]=p,
[i]={"9dc1d0c74eb1",1524471384,"[Atomics] warn about atomic accesses using libcalls"}
},
["warn_atomic_op_oversized"]={
[c]="large atomic operation may incur significant performance penalty; the access size (A bytes) exceeds the max lock-free size (B  bytes) [-Watomic-alignment]",
[d]=k,
[f]=l,
[n]={"atomic-alignment"},
[m]="atomic-alignment",
[h]="large atomic operation may incur significant performance penalty; the access size (%0 bytes) exceeds the max lock-free size (%1  bytes)",
[b]=j,
[a]="large atomic operation may incur significant performance penalty; the access size \\((.*?) bytes\\) exceeds the max lock\\-free size \\((.*?)  bytes\\)",
[g]=" \\[(?:\\-Werror,)?\\-Watomic\\-alignment[^\\]]*\\]",
[e]=p,
[i]={"e18c6ef6b41a",1596564601,"[clang] improve diagnostics for misaligned and large atomics"}
},
["warn_atomic_property_rule"]={
[c]="writable atomic property A cannot pair a synthesized ... with a user defined ... [-Watomic-property-with-user-defined-accessor]",
[d]=k,
[f]=l,
[n]={"atomic-property-with-user-defined-accessor"},
[m]="atomic-property-with-user-defined-accessor",
[h]="writable atomic property %0 cannot pair a synthesized %select{getter|setter}1 with a user defined %select{getter|setter}2",
[b]=j,
[a]="writable atomic property (.*?) cannot pair a synthesized (?:getter|setter) with a user defined (?:getter|setter)",
[g]=" \\[(?:\\-Werror,)?\\-Watomic\\-property\\-with\\-user\\-defined\\-accessor[^\\]]*\\]",
[e]=o,
[i]={"13e0c90fc1a9",1257979211,"writable atomic property\'s setter/getter must be in \'lock\' step of"}
},
["warn_attr_abi_tag_namespace"]={
[c]="\'abi_tag\' attribute on ... namespace ignored [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="\'abi_tag\' attribute on %select{non-inline|anonymous}0 namespace ignored",
[b]=j,
[a]="\'abi_tag\' attribute on (?:non\\-inline|anonymous) namespace ignored",
[g]=I,
[e]=o,
[i]={"bf17ecf59a9b",1457537453,"[GCC] PR23529 Sema part of attrbute abi_tag support"}
},
["warn_attr_on_unconsumable_class"]={
[c]="consumed analysis attribute is attached to member of class A which isn\'t marked as consumable [-Wconsumed]",
[d]=k,
[f]=l,
[t]=false,
[n]={oc},
[m]=oc,
[h]="consumed analysis attribute is attached to member of class %0 which isn\'t marked as consumable",
[b]=j,
[a]="consumed analysis attribute is attached to member of class (.*?) which isn\'t marked as consumable",
[g]=" \\[(?:\\-Werror,)?\\-Wconsumed[^\\]]*\\]",
[e]=o,
[i]={"5a715c4f00ac",1377903394,"Consumed analysis: add \'consumable\' class attribute."}
},
["warn_attr_swift_name_decl_kind"]={
[c]="A attribute cannot be applied to this declaration [-Wswift-name-attribute]",
[d]=k,
[f]=l,
[n]={Gb},
[m]=Gb,
[h]="%0 attribute cannot be applied to this declaration",
[b]=j,
[a]="(.*?) attribute cannot be applied to this declaration",
[g]=Jc,
[e]=o,
[i]={ob,1582847864,nb}
},
["warn_attr_swift_name_decl_missing_params"]={
[c]="A attribute cannot be applied to a ... with no parameters [-Wswift-name-attribute]",
[d]=k,
[f]=l,
[n]={Gb},
[m]=Gb,
[h]="%0 attribute cannot be applied to a %select{function|method}1 with no parameters",
[b]=j,
[a]="(.*?) attribute cannot be applied to a (?:function|method) with no parameters",
[g]=Jc,
[e]=o,
[i]={Mb,1590001902,Nb}
},
["warn_attr_swift_name_function"]={
[c]="A attribute argument must be a string literal specifying a Swift function name [-Wswift-name-attribute]",
[d]=k,
[f]=l,
[n]={Gb},
[m]=Gb,
[h]="%0 attribute argument must be a string literal specifying a Swift function name",
[b]=j,
[a]="(.*?) attribute argument must be a string literal specifying a Swift function name",
[g]=Jc,
[e]=o,
[i]={ob,1582847864,nb}
},
["warn_attr_swift_name_getter_parameters"]={
[c]="A attribute for getter must not have any parameters besides \'self:\' [-Wswift-name-attribute]",
[d]=k,
[f]=l,
[n]={Gb},
[m]=Gb,
[h]="%0 attribute for getter must not have any parameters besides \'self:\'",
[b]=j,
[a]="(.*?) attribute for getter must not have any parameters besides \'self\\:\'",
[g]=Jc,
[e]=o,
[i]={ob,1582847864,nb}
},
["warn_attr_swift_name_invalid_identifier"]={
[c]="A attribute has invalid identifier for the ... name [-Wswift-name-attribute]",
[d]=k,
[f]=l,
[n]={Gb},
[m]=Gb,
[h]="%0 attribute has invalid identifier for the %select{base|context|parameter}1 name",
[b]=j,
[a]="(.*?) attribute has invalid identifier for the (?:base|context|parameter) name",
[g]=Jc,
[e]=o,
[i]={ob,1582847864,nb}
},
["warn_attr_swift_name_missing_parameters"]={
[c]="A attribute is missing parameter label clause [-Wswift-name-attribute]",
[d]=k,
[f]=l,
[n]={Gb},
[m]=Gb,
[h]="%0 attribute is missing parameter label clause",
[b]=j,
[a]="(.*?) attribute is missing parameter label clause",
[g]=Jc,
[e]=o,
[i]={ob,1582847864,nb}
},
["warn_attr_swift_name_multiple_selfs"]={
[c]="A attribute cannot specify more than one \'self:\' parameter [-Wswift-name-attribute]",
[d]=k,
[f]=l,
[n]={Gb},
[m]=Gb,
[h]="%0 attribute cannot specify more than one \'self:\' parameter",
[b]=j,
[a]="(.*?) attribute cannot specify more than one \'self\\:\' parameter",
[g]=Jc,
[e]=o,
[i]={ob,1582847864,nb}
},
["warn_attr_swift_name_num_params"]={
[c]="too ... parameters in the signature specified by the A attribute (expected B; got C) [-Wswift-name-attribute]",
[d]=k,
[f]=l,
[n]={Gb},
[m]=Gb,
[h]="too %select{few|many}0 parameters in the signature specified by the %1 attribute (expected %2; got %3)",
[b]=j,
[a]="too (?:few|many) parameters in the signature specified by the (.*?) attribute \\(expected (.*?); got (.*?)\\)",
[g]=Jc,
[e]=o,
[i]={ob,1582847864,nb}
},
["warn_attr_swift_name_setter_parameters"]={
[c]="A attribute for setter must have one parameter for new value [-Wswift-name-attribute]",
[d]=k,
[f]=l,
[n]={Gb},
[m]=Gb,
[h]="%0 attribute for setter must have one parameter for new value",
[b]=j,
[a]="(.*?) attribute for setter must have one parameter for new value",
[g]=Jc,
[e]=o,
[i]={ob,1582847864,nb}
},
["warn_attr_swift_name_subscript_getter_newValue"]={
[c]="A attribute for \'subscript\' getter cannot have a \'newValue:\' parameter [-Wswift-name-attribute]",
[d]=k,
[f]=l,
[n]={Gb},
[m]=Gb,
[h]="%0 attribute for \'subscript\' getter cannot have a \'newValue:\' parameter",
[b]=j,
[a]="(.*?) attribute for \'subscript\' getter cannot have a \'newValue\\:\' parameter",
[g]=Jc,
[e]=o,
[i]={ob,1582847864,nb}
},
["warn_attr_swift_name_subscript_invalid_parameter"]={
[c]="A attribute for \'subscript\' must ... [-Wswift-name-attribute]",
[d]=k,
[f]=l,
[n]={Gb},
[m]=Gb,
[h]="%0 attribute for \'subscript\' must %select{be a getter or setter|have at least one parameter|have a \'self:\' parameter}1",
[b]=j,
[a]="(.*?) attribute for \'subscript\' must (?:be a getter or setter|have at least one parameter|have a \'self\\:\' parameter)",
[g]=Jc,
[e]=o,
[i]={ob,1582847864,nb}
},
["warn_attr_swift_name_subscript_setter_multiple_newValues"]={
[c]="A attribute for \'subscript\' setter cannot have multiple \'newValue:\' parameters [-Wswift-name-attribute]",
[d]=k,
[f]=l,
[n]={Gb},
[m]=Gb,
[h]="%0 attribute for \'subscript\' setter cannot have multiple \'newValue:\' parameters",
[b]=j,
[a]="(.*?) attribute for \'subscript\' setter cannot have multiple \'newValue\\:\' parameters",
[g]=Jc,
[e]=o,
[i]={ob,1582847864,nb}
},
["warn_attr_swift_name_subscript_setter_no_newValue"]={
[c]="A attribute for \'subscript\' setter must have a \'newValue:\' parameter [-Wswift-name-attribute]",
[d]=k,
[f]=l,
[n]={Gb},
[m]=Gb,
[h]="%0 attribute for \'subscript\' setter must have a \'newValue:\' parameter",
[b]=j,
[a]="(.*?) attribute for \'subscript\' setter must have a \'newValue\\:\' parameter",
[g]=Jc,
[e]=o,
[i]={ob,1582847864,nb}
},
["warn_attribute_address_multiple_identical_qualifiers"]={
[c]="multiple identical address spaces specified for type [-Wduplicate-decl-specifier]",
[d]=k,
[f]=l,
[n]={"duplicate-decl-specifier"},
[m]="duplicate-decl-specifier",
[h]="multiple identical address spaces specified for type",
[b]=j,
[a]="multiple identical address spaces specified for type",
[g]=" \\[(?:\\-Werror,)?\\-Wduplicate\\-decl\\-specifier[^\\]]*\\]",
[e]=o,
[i]={"f29d777f847b",1529483484,"[Sema] Allow creating types with multiple of the same addrspace."}
},
["warn_attribute_after_definition_ignored"]={
[c]="attribute A after definition is ignored [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="attribute %0 after definition is ignored",
[b]=j,
[a]="attribute (.*?) after definition is ignored",
[g]=I,
[e]=o,
[i]={"06e1b13209a8",1342067550,"Ignore visibility attributes after definitions. This matches newer (4.7) gcc\'s"}
},
["warn_attribute_argument_n_negative"]={
[c]="A attribute parameter B is negative and will be ignored [-Wcuda-compat]",
[d]=k,
[f]=l,
[n]={hd},
[m]=hd,
[h]="%0 attribute parameter %1 is negative and will be ignored",
[b]=j,
[a]="(.*?) attribute parameter (.*?) is negative and will be ignored",
[g]=" \\[(?:\\-Werror,)?\\-Wcuda\\-compat[^\\]]*\\]",
[e]=o,
[i]={"7093e4064116",1429656954,"[cuda] Allow using integral non-type template parameters as launch_bounds attribute arguments."}
},
["warn_attribute_cmse_entry_static"]={
[c]="\'cmse_nonsecure_entry\' cannot be applied to functions with internal linkage [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="\'cmse_nonsecure_entry\' cannot be applied to functions with internal linkage",
[b]=j,
[a]="\'cmse_nonsecure_entry\' cannot be applied to functions with internal linkage",
[g]=I,
[e]=o,
[i]={wb,1576908663,vb}
},
["warn_attribute_dll_instantiated_base_class"]={
[c]="propagating dll attribute to ... base class template without dll attribute is not supported [-Wunsupported-dll-base-class-template]",
[d]=k,
[f]=l,
[t]=false,
[n]={"unsupported-dll-base-class-template"},
[m]="unsupported-dll-base-class-template",
[h]="propagating dll attribute to %select{already instantiated|explicitly specialized}0 base class template without dll attribute is not supported",
[b]=j,
[a]="propagating dll attribute to (?:already instantiated|explicitly specialized) base class template without dll attribute is not supported",
[g]=" \\[(?:\\-Werror,)?\\-Wunsupported\\-dll\\-base\\-class\\-template[^\\]]*\\]",
[e]=o,
[i]={"9bea9cc73bd0",1403720757,"MS ABI: Propagate class-level DLL attributes to class template specialization bases (PR11170)"}
},
["warn_attribute_dll_redeclaration"]={
[c]="redeclaration of A should not add B attribute [-Wdll-attribute-on-redeclaration]",
[d]=k,
[f]=l,
[n]={"dll-attribute-on-redeclaration"},
[m]="dll-attribute-on-redeclaration",
[h]="redeclaration of %q0 should not add %q1 attribute",
[b]=j,
[a]="redeclaration of (.*?) should not add (.*?) attribute",
[g]=" \\[(?:\\-Werror,)?\\-Wdll\\-attribute\\-on\\-redeclaration[^\\]]*\\]",
[e]=o,
[i]={"dd96db2c034c",1409174860,"Allow adding dll attributes on certain redecls with a warning if the decl hasn\'t been used yet (PR20..."}
},
["warn_attribute_dllexport_explicit_instantiation_decl"]={
[c]="explicit instantiation declaration should not be \'dllexport\' [-Wdllexport-explicit-instantiation-decl]",
[d]=k,
[f]=l,
[n]={"dllexport-explicit-instantiation-decl"},
[m]="dllexport-explicit-instantiation-decl",
[h]="explicit instantiation declaration should not be \'dllexport\'",
[b]=j,
[a]="explicit instantiation declaration should not be \'dllexport\'",
[g]=" \\[(?:\\-Werror,)?\\-Wdllexport\\-explicit\\-instantiation\\-decl[^\\]]*\\]",
[e]=o,
[i]={"fd76d9136601",1421356710,"Warn about dllexported explicit class template instantiation declarations (PR22035)"}
},
["warn_attribute_dllexport_explicit_instantiation_def"]={
[c]="\'dllexport\' attribute ignored on explicit instantiation definition [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="\'dllexport\' attribute ignored on explicit instantiation definition",
[b]=j,
[a]="\'dllexport\' attribute ignored on explicit instantiation definition",
[g]=I,
[e]=o,
[i]={"5be69bc68a65",1556266191,"[MinGW] Fix dllexport of explicit template instantiation"}
},
["warn_attribute_dllimport_static_field_definition"]={
[c]="definition of dllimport static field [-Wdllimport-static-field-def]",
[d]=k,
[f]=l,
[n]={"dllimport-static-field-def"},
[m]="dllimport-static-field-def",
[h]="definition of dllimport static field",
[b]=j,
[a]="definition of dllimport static field",
[g]=" \\[(?:\\-Werror,)?\\-Wdllimport\\-static\\-field\\-def[^\\]]*\\]",
[e]=o,
[i]={"e9af3164237f",1401841121,"Downgrade \"definition of dllimport static field\" error to warning for class templates (PR19902)"}
},
["warn_attribute_has_no_effect_on_compile_time_if"]={
[c]="attribute A has no effect when annotating an \'if ...\' statement [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="attribute %0 has no effect when annotating an \'if %select{constexpr|consteval}1\' statement",
[b]=j,
[a]="attribute (.*?) has no effect when annotating an \'if (?:constexpr|consteval)\' statement",
[g]=I,
[e]=o,
[i]={Ib,1615397021,Hb}
},
["warn_attribute_has_no_effect_on_infinite_loop"]={
[c]="attribute A has no effect when annotating an infinite loop [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="attribute %0 has no effect when annotating an infinite loop",
[b]=j,
[a]="attribute (.*?) has no effect when annotating an infinite loop",
[g]=I,
[e]=o,
[i]={Mb,1590001902,Nb}
},
["warn_attribute_iboutlet"]={
[c]="A attribute can only be applied to instance variables or properties [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute can only be applied to instance variables or properties",
[b]=j,
[a]="(.*?) attribute can only be applied to instance variables or properties",
[g]=I,
[e]=o,
[i]={"d68ec818c351",1296802456,"Downgrade error about attribute \'iboutlet\' and \'ibaction\' being applied to anything but a instance m..."}
},
["warn_attribute_ignored"]={
[c]="A attribute ignored [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute ignored",
[b]=j,
[a]="(.*?) attribute ignored",
[g]=I,
[e]=p,
[i]={M,1236199783,L}
},
["warn_attribute_ignored_for_field_of_type"]={
[c]="A attribute ignored for field of type B [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute ignored for field of type %1",
[b]=j,
[a]="(.*?) attribute ignored for field of type (.*?)",
[g]=I,
[e]=o,
[i]={M,1236199783,L}
},
["warn_attribute_ignored_no_calls_in_stmt"]={
[c]="A attribute is ignored because there exists no call expression inside the statement [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute is ignored because there exists no call expression inside the statement",
[b]=j,
[a]="(.*?) attribute is ignored because there exists no call expression inside the statement",
[g]=I,
[e]=o,
[i]={pd,1620118562,od}
},
["warn_attribute_ignored_non_function_pointer"]={
[c]="A attribute is ignored because B is not a function pointer [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute is ignored because %1 is not a function pointer",
[b]=j,
[a]="(.*?) attribute is ignored because (.*?) is not a function pointer",
[g]=I,
[e]=o,
[i]={N,1625925174,O}
},
["warn_attribute_ignored_on_inline"]={
[c]="A attribute ignored on inline function [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute ignored on inline function",
[b]=j,
[a]="(.*?) attribute ignored on inline function",
[g]=I,
[e]=o,
[i]={"606bd6dcc547",1415024685,"Don\'t dllimport inline functions when targeting MinGW (PR21366)"}
},
["warn_attribute_ignored_on_non_definition"]={
[c]="A attribute ignored on a non-definition declaration [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute ignored on a non-definition declaration",
[b]=j,
[a]="(.*?) attribute ignored on a non\\-definition declaration",
[g]=I,
[e]=o,
[i]={Mb,1590001902,Nb}
},
["warn_attribute_invalid_on_definition"]={
[c]="\'A\' attribute cannot be specified on a definition [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="\'%0\' attribute cannot be specified on a definition",
[b]=j,
[a]="\'(.*?)\' attribute cannot be specified on a definition",
[g]=I,
[e]=o,
[i]={"52d598e24269",1369086809,"Warn on and drop dllimport attrs from variable definitions"}
},
["warn_attribute_no_builtin_invalid_builtin_name"]={
[c]="\'A\' is not a valid builtin name for B [-Winvalid-no-builtin-names]",
[d]=k,
[f]=l,
[n]={"invalid-no-builtin-names"},
[m]="invalid-no-builtin-names",
[h]="\'%0\' is not a valid builtin name for %1",
[b]=j,
[a]="\'(.*?)\' is not a valid builtin name for (.*?)",
[g]=" \\[(?:\\-Werror,)?\\-Winvalid\\-no\\-builtin\\-names[^\\]]*\\]",
[e]=o,
[i]={"bd8791610948",1569403888,"[clang] Add no_builtin attribute"}
},
["warn_attribute_no_decl"]={
[c]="attribute A ignored, because it is not attached to a declaration [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="attribute %0 ignored, because it is not attached to a declaration",
[b]=j,
[a]="attribute (.*?) ignored, because it is not attached to a declaration",
[g]=I,
[e]=y,
[i]={"71d610329554",1330727390,"Issue warning when late-parsed attributes have no declaration."}
},
["warn_attribute_nonnull_no_pointers"]={
[c]="\'nonnull\' attribute applied to function with no pointer arguments [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="\'nonnull\' attribute applied to function with no pointer arguments",
[b]=j,
[a]="\'nonnull\' attribute applied to function with no pointer arguments",
[g]=I,
[e]=o,
[i]={M,1236199783,L}
},
["warn_attribute_nonnull_parm_no_args"]={
[c]="\'nonnull\' attribute when used on parameters takes no arguments [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="\'nonnull\' attribute when used on parameters takes no arguments",
[b]=j,
[a]="\'nonnull\' attribute when used on parameters takes no arguments",
[g]=I,
[e]=o,
[i]={"9aedc159ef4c",1389939896,"Enhance attribute \'nonnull\' to be applicable to parameters directly (infix)."}
},
["warn_attribute_not_on_decl"]={
[c]="A attribute ignored when parsing type [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute ignored when parsing type",
[b]=j,
[a]="(.*?) attribute ignored when parsing type",
[g]=I,
[e]=o,
[i]={"42856de54283",1317446223,"Hey, maybe we shouldn\'t silently ignore decl attributes"}
},
["warn_attribute_on_function_definition"]={
[c]="GCC does not allow A attribute in this position on a function definition [-Wgcc-compat]",
[d]=k,
[f]=l,
[n]={vc},
[m]=vc,
[h]="GCC does not allow %0 attribute in this position on a function definition",
[b]=j,
[a]="GCC does not allow (.*?) attribute in this position on a function definition",
[g]=" \\[(?:\\-Werror,)?\\-Wgcc\\-compat[^\\]]*\\]",
[e]=y,
[i]={"3fc6e4a7cda9",1329411043,"Allow thread safety attributes on function definitions."}
},
["warn_attribute_packed_for_bitfield"]={
[c]="\'packed\' attribute was ignored on bit-fields with single-byte alignment in older versions of GCC and Clang [-Wattribute-packed-for-bitfield]",
[d]=k,
[f]=l,
[n]={"attribute-packed-for-bitfield"},
[m]="attribute-packed-for-bitfield",
[h]="\'packed\' attribute was ignored on bit-fields with single-byte alignment in older versions of GCC and Clang",
[b]=j,
[a]="\'packed\' attribute was ignored on bit\\-fields with single\\-byte alignment in older versions of GCC and Clang",
[g]=" \\[(?:\\-Werror,)?\\-Wattribute\\-packed\\-for\\-bitfield[^\\]]*\\]",
[e]=o,
[i]={"830dfccfb2c0",1449135289,"PR25575: Make GCC 4.4+ comatible layout for packed bit-fileds of char type, patch by D. Polukhin"}
},
["warn_attribute_pointer_or_reference_only"]={
[c]="A attribute only applies to a pointer or reference (B is invalid) [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute only applies to a pointer or reference (%1 is invalid)",
[b]=j,
[a]="(.*?) attribute only applies to a pointer or reference \\((.*?) is invalid\\)",
[g]=I,
[e]=o,
[i]={"1b0d24e03abf",1412284885,"Initial support for the align_value attribute"}
},
["warn_attribute_pointers_only"]={
[c]="A attribute only applies to... pointer arguments [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute only applies to%select{| constant}1 pointer arguments",
[b]=j,
[a]="(.*?) attribute only applies to(?:| constant) pointer arguments",
[g]=I,
[e]=o,
[i]={"cedaaea69127",1388077669,"This diagnostic did not accept arguments, and did not have any test coverage. Parameterized the diag..."}
},
["warn_attribute_precede_definition"]={
[c]="attribute declaration must precede definition [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="attribute declaration must precede definition",
[b]=j,
[a]="attribute declaration must precede definition",
[g]=I,
[e]=o,
[i]={"e5dc8594ea99",1248560984,"PR3575 - warn on declared variable or function attributes after a definition, which are currently ig..."}
},
["warn_attribute_protected_visibility"]={
[c]="target does not support \'protected\' visibility; using \'default\' [-Wunsupported-visibility]",
[d]=k,
[f]=l,
[n]={"unsupported-visibility"},
[m]="unsupported-visibility",
[h]="target does not support \'protected\' visibility; using \'default\'",
[b]=j,
[a]="target does not support \'protected\' visibility; using \'default\'",
[g]=" \\[(?:\\-Werror,)?\\-Wunsupported\\-visibility[^\\]]*\\]",
[e]=o,
[i]={"eed64c77d27f",1327800030,"Complain about attempts to use \'protected\' visibility on targets"}
},
["warn_attribute_return_pointers_only"]={
[c]="A attribute only applies to return values that are pointers [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute only applies to return values that are pointers",
[b]=j,
[a]="(.*?) attribute only applies to return values that are pointers",
[g]=I,
[e]=o,
[i]={"dbf62e3eee51",1390197047,"Wire up basic parser/sema support for attribute \'returns_nonnull\'."}
},
["warn_attribute_return_pointers_refs_only"]={
[c]="A attribute only applies to return values that are pointers or references [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute only applies to return values that are pointers or references",
[b]=j,
[a]="(.*?) attribute only applies to return values that are pointers or references",
[g]=I,
[e]=o,
[i]={"ee90a223ead9",1411707870,"Support the assume_aligned function attribute"}
},
["warn_attribute_section_drectve"]={
[c]="#pragma A(\".drectve\") has undefined behavior, use #pragma comment(linker, ...) instead [-Wmicrosoft-drectve-section]",
[d]=k,
[f]=l,
[n]={"microsoft","microsoft-drectve-section"},
[m]="microsoft-drectve-section",
[h]="#pragma %0(\".drectve\") has undefined behavior, use #pragma comment(linker, ...) instead",
[b]=j,
[a]="\\#pragma (.*?)\\(\"\\.drectve\"\\) has undefined behavior, use \\#pragma comment\\(linker, \\.\\.\\.\\) instead",
[g]=" \\[(?:\\-Werror,)?\\-Wmicrosoft\\-drectve\\-section[^\\]]*\\]",
[e]=o,
[i]={"9801621616b2",1562630543,"clang-cl: Port cl.exe\'s C4659 to clang-cl"}
},
["warn_attribute_section_on_redeclaration"]={
[c]="section attribute is specified on redeclared variable [-Wsection]",
[d]=k,
[f]=l,
[n]={"section"},
[m]="section",
[h]="section attribute is specified on redeclared variable",
[b]=j,
[a]="section attribute is specified on redeclared variable",
[g]=" \\[(?:\\-Werror,)?\\-Wsection[^\\]]*\\]",
[e]=o,
[i]={"99fdfb6a4644",1506469354,"Emit section information for extern variables. "}
},
["warn_attribute_sentinel_named_arguments"]={
[c]="\'sentinel\' attribute requires named arguments [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="\'sentinel\' attribute requires named arguments",
[b]=j,
[a]="\'sentinel\' attribute requires named arguments",
[g]=I,
[e]=o,
[i]={"9363e3106edc",1237331027,"don\'t crash when sentinel attribute is used on function without a prototype,"}
},
["warn_attribute_sentinel_not_variadic"]={
[c]="\'sentinel\' attribute only supported for variadic ... [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="\'sentinel\' attribute only supported for variadic %select{functions|blocks}0",
[b]=j,
[a]="\'sentinel\' attribute only supported for variadic (?:functions|blocks)",
[g]=I,
[e]=o,
[i]={M,1236199783,L}
},
["warn_attribute_type_not_supported"]={
[c]="A attribute argument not supported: B [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute argument not supported: %1",
[b]=j,
[a]="(.*?) attribute argument not supported\\: (.*?)",
[g]=I,
[e]=o,
[i]={M,1236199783,L}
},
["warn_attribute_type_not_supported_global"]={
[c]="A attribute argument \'B\' not supported on a global variable [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="%0 attribute argument \'%1\' not supported on a global variable",
[b]=j,
[a]="(.*?) attribute argument \'(.*?)\' not supported on a global variable",
[g]=I,
[e]=o,
[i]={N,1625925174,O}
},
["warn_attribute_unknown_visibility"]={
[c]="unknown visibility A [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="unknown visibility %0",
[b]=j,
[a]="unknown visibility (.*?)",
[g]=I,
[e]=o,
[i]={M,1236199783,L}
},
["warn_attribute_void_function_method"]={
[c]="attribute A cannot be applied to ... without return value [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="attribute %0 cannot be applied to %select{functions|Objective-C method}1 without return value",
[b]=j,
[a]="attribute (.*?) cannot be applied to (?:functions|Objective\\-C method) without return value",
[g]=I,
[e]=o,
[i]={"5cab26d058d3",1269973335,"Add Support for \'warn_unused_result\" attribute on"}
},
["warn_attribute_weak_on_field"]={
[c]="__weak attribute cannot be specified on a field declaration [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="__weak attribute cannot be specified on a field declaration",
[b]=j,
[a]="__weak attribute cannot be specified on a field declaration",
[g]=I,
[e]=o,
[i]={M,1236199783,L}
},
["warn_attribute_weak_on_local"]={
[c]="__weak attribute cannot be specified on an automatic variable when ARC is not enabled [-Wignored-attributes]",
[d]=k,
[f]=l,
[n]={H,z},
[m]=z,
[h]="__weak attribute cannot be specified on an automatic variable when ARC is not enabled",
[b]=j,
[a]="__weak attribute cannot be specified on an automatic variable when ARC is not enabled",
[g]=I,
}
}
};
};
Bots, Bureaucrats, Interface administrators, smwadministrator, smwcurator, smweditor, Administrators
2,557

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.

Navigation menu