Bots, Bureaucrats, Interface administrators, smwadministrator, smwcurator, smweditor, Administrators
2,557
edits
Timo.stripf (talk | contribs) No edit summary |
Timo.stripf (talk | contribs) No edit summary |
||
Line 191: | Line 191: | ||
[h]=y, | [h]=y, | ||
[i]={"95dc57a611ad",1445037619,"[modules] Allow the error when explicitly loading an incompatible module file","[modules] Allow the error when explicitly loading an incompatible module file"}, | [i]={"95dc57a611ad",1445037619,"[modules] Allow the error when explicitly loading an incompatible module file","[modules] Allow the error when explicitly loading an incompatible module file"}, | ||
[j]={{jd,1729,"bool CompilerInstance::loadModuleFile(StringRef FileName) {\n bool ConfigMismatchIsRecoverable = getDiagnostics().getDiagnosticLevel(diag::warn_module_config_mismatch, SourceLocation()) <= DiagnosticsEngine::Warning;"},{jd,1750,"bool CompilerInstance::loadModuleFile(StringRef FileName) {\n case ASTReader::ConfigurationMismatch:\n getDiagnostics().Report(SourceLocation(), diag::warn_module_config_mismatch) << FileName;"},{jd,1895,"ModuleLoadResult CompilerInstance::findOrCompileModuleAndReadAST(StringRef ModuleName, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, bool IsInclusionDirective) {\n case ASTReader::ConfigurationMismatch:\n if (Source == MS_PrebuiltModulePath)\n getDiagnostics().Report(SourceLocation(), diag::warn_module_config_mismatch) << ModuleFilename;"}}, | [j]={{jd,1729,"bool CompilerInstance::loadModuleFile(StringRef FileName) {\n // ...\n bool ConfigMismatchIsRecoverable = getDiagnostics().getDiagnosticLevel(diag::warn_module_config_mismatch, SourceLocation()) <= DiagnosticsEngine::Warning;"},{jd,1750,"bool CompilerInstance::loadModuleFile(StringRef FileName) {\n // ...\n case ASTReader::ConfigurationMismatch:\n // ...\n getDiagnostics().Report(SourceLocation(), diag::warn_module_config_mismatch) << FileName;"},{jd,1895,"ModuleLoadResult CompilerInstance::findOrCompileModuleAndReadAST(StringRef ModuleName, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, bool IsInclusionDirective) {\n // ...\n case ASTReader::ConfigurationMismatch:\n if (Source == MS_PrebuiltModulePath)\n // ...\n getDiagnostics().Report(SourceLocation(), diag::warn_module_config_mismatch) << ModuleFilename;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Modules/prebuilt-implicit-modules.m"]={"error: module file /var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/build/tools/clang/test/Modules/Output/prebuilt-implicit-modules.m.tmp/module_a.pcm cannot be loaded due to a configuration mismatch with the current compilation [-Wmodule-file-config-mismatch]"} | ["clang/test/Modules/prebuilt-implicit-modules.m"]={"error: module file /var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/build/tools/clang/test/Modules/Output/prebuilt-implicit-modules.m.tmp/module_a.pcm cannot be loaded due to a configuration mismatch with the current compilation [-Wmodule-file-config-mismatch]"} | ||
Line 208: | Line 208: | ||
[h]=D, | [h]=D, | ||
[i]={"fb9126578ec3",1363813835,"<rdar://problem/12368093> Extend module maps with a \'conflict\' declaration, and warn when a newly-im...","<rdar://problem/12368093> Extend module maps with a \'conflict\' declaration, and warn when a newly-imported module conflicts with an already-imported module."}, | [i]={"fb9126578ec3",1363813835,"<rdar://problem/12368093> Extend module maps with a \'conflict\' declaration, and warn when a newly-im...","<rdar://problem/12368093> Extend module maps with a \'conflict\' declaration, and warn when a newly-imported module conflicts with an already-imported module."}, | ||
[j]={{Jc,1348,"void Preprocessor::makeModuleVisible(Module *M, SourceLocation Loc) {\n CurSubmoduleState->VisibleModules.setVisible(\n [&](ArrayRef<Module *> Path, Module *Conflict, StringRef Message) {\n Diag(ModuleImportLoc, diag::warn_module_conflict) << Path[0]->getFullModuleName() << Conflict->getFullModuleName() << Message;"}}, | [j]={{Jc,1348,"void Preprocessor::makeModuleVisible(Module *M, SourceLocation Loc) {\n CurSubmoduleState->VisibleModules.setVisible(\n // ...\n [&](ArrayRef<Module *> Path, Module *Conflict, StringRef Message) {\n // ...\n Diag(ModuleImportLoc, diag::warn_module_conflict) << Path[0]->getFullModuleName() << Conflict->getFullModuleName() << Message;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Modules/conflicts.m"]={"clang/test/Modules/conflicts.m:6:2: warning: module \'Conflicts.A\' conflicts with already-imported module \'Conflicts.B\': we just don\'t like B [-Wmodule-conflict]"} | ["clang/test/Modules/conflicts.m"]={"clang/test/Modules/conflicts.m:6:2: warning: module \'Conflicts.A\' conflicts with already-imported module \'Conflicts.B\': we just don\'t like B [-Wmodule-conflict]"} | ||
Line 225: | Line 225: | ||
[h]="AST Deserialization Issue", | [h]="AST Deserialization Issue", | ||
[i]={"079c40e8860c",1489791313,"Modules: Cache PCMs in memory and avoid a use-after-free","Modules: Cache PCMs in memory and avoid a use-after-free"}, | [i]={"079c40e8860c",1489791313,"Modules: Cache PCMs in memory and avoid a use-after-free","Modules: Cache PCMs in memory and avoid a use-after-free"}, | ||
[j]={{"clang/lib/Serialization/ASTReader.cpp",4773,"ASTReader::ASTReadResult ASTReader::readUnhashedControlBlock(ModuleFile &F, bool WasImportedBy, unsigned ClientLoadCapabilities) {\n if (Result == OutOfDate && F.Kind == MK_ImplicitModule) {\n // If this module has already been finalized in the ModuleCache, we\'re stuck\n // with it; we can only load a single version of each module.\n //\n // This can happen when a module is imported in two contexts: in one, as a\n // user module; in another, as a system module (due to an import from\n // another module marked with the [system] flag). It usually indicates a\n // bug in the module map: this module should also be marked with [system].\n //\n // If -Wno-system-headers (the default), and the first import is as a\n // system module, then validation will fail during the as-user import,\n // since -Werror flags won\'t have been validated. However, it\'s reasonable\n // to treat this consistently as a system module.\n //\n // If -Wsystem-headers, the PCM on disk was built with\n // -Wno-system-headers, and the first import is as a user module, then\n // validation will fail during the as-system import since the PCM on disk\n // doesn\'t guarantee that -Werror was respected. However, the -Werror\n // flags were checked during the initial as-user import.\n if (getModuleManager().getModuleCache().isPCMFinal(F.FileName)) {\n Diag(diag::warn_module_system_bit_conflict) << F.FileName;"}} | [j]={{"clang/lib/Serialization/ASTReader.cpp",4773,"ASTReader::ASTReadResult ASTReader::readUnhashedControlBlock(ModuleFile &F, bool WasImportedBy, unsigned ClientLoadCapabilities) {\n // ...\n if (Result == OutOfDate && F.Kind == MK_ImplicitModule) {\n // If this module has already been finalized in the ModuleCache, we\'re stuck\n // with it; we can only load a single version of each module.\n //\n // This can happen when a module is imported in two contexts: in one, as a\n // user module; in another, as a system module (due to an import from\n // another module marked with the [system] flag). It usually indicates a\n // bug in the module map: this module should also be marked with [system].\n //\n // If -Wno-system-headers (the default), and the first import is as a\n // system module, then validation will fail during the as-user import,\n // since -Werror flags won\'t have been validated. However, it\'s reasonable\n // to treat this consistently as a system module.\n //\n // If -Wsystem-headers, the PCM on disk was built with\n // -Wno-system-headers, and the first import is as a user module, then\n // validation will fail during the as-system import since the PCM on disk\n // doesn\'t guarantee that -Werror was respected. However, the -Werror\n // flags were checked during the initial as-user import.\n if (getModuleManager().getModuleCache().isPCMFinal(F.FileName)) {\n Diag(diag::warn_module_system_bit_conflict) << F.FileName;"}} | ||
}, | }, | ||
["warn_module_uses_date_time"]={ | ["warn_module_uses_date_time"]={ | ||
Line 239: | Line 239: | ||
[h]="AST Serialization Issue", | [h]="AST Serialization Issue", | ||
[i]={"b5aaf5a57a46",1441074958,"Don\'t use fprintf to emit this diagnostic!","Don\'t use fprintf to emit this diagnostic!"}, | [i]={"b5aaf5a57a46",1441074958,"Don\'t use fprintf to emit this diagnostic!","Don\'t use fprintf to emit this diagnostic!"}, | ||
[j]={{"clang/lib/Serialization/ASTWriter.cpp",2336,"/// Writes the block containing the serialized form of the\n/// preprocessor.\nvoid ASTWriter::WritePreprocessor(const Preprocessor &PP, bool IsModule) {\n // If the AST file contains __DATE__ or __TIME__ emit a warning about this.\n // FIXME: Include a location for the use, and say which one was used.\n if (PP.SawDateOrTime())\n PP.Diag(SourceLocation(), diag::warn_module_uses_date_time) << IsModule;"}}, | [j]={{"clang/lib/Serialization/ASTWriter.cpp",2336,"/// Writes the block containing the serialized form of the\n/// preprocessor.\nvoid ASTWriter::WritePreprocessor(const Preprocessor &PP, bool IsModule) {\n // ...\n // If the AST file contains __DATE__ or __TIME__ emit a warning about this.\n // FIXME: Include a location for the use, and say which one was used.\n if (PP.SawDateOrTime())\n PP.Diag(SourceLocation(), diag::warn_module_uses_date_time) << IsModule;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/PCH/datetime.c"]={"warning: precompiled header uses __DATE__ or __TIME__ [-Wpch-date-time]"} | ["clang/test/PCH/datetime.c"]={"warning: precompiled header uses __DATE__ or __TIME__ [-Wpch-date-time]"} | ||
Line 254: | Line 254: | ||
[h]=y, | [h]=y, | ||
[i]={"42aa21222d37",1390712852,"ARCMigrate: Introduce proper diagnostics for TransformActions","ARCMigrate: Introduce proper diagnostics for TransformActions"}, | [i]={"42aa21222d37",1390712852,"ARCMigrate: Introduce proper diagnostics for TransformActions","ARCMigrate: Introduce proper diagnostics for TransformActions"}, | ||
[j]={{"clang/lib/ARCMigrate/TransformActions.cpp",695,"void TransformActions::reportWarning(StringRef message, SourceLocation loc, SourceRange range) { report(loc, diag::warn_mt_message, range) << message; }"},{"clang/unittests/Basic/DiagnosticTest.cpp",49,"// Check that DiagnosticErrorTrap works with SuppressAllDiagnostics.\nTEST(DiagnosticTest, suppressAndTrap) {\n {\n Diags.Report(diag::warn_mt_message) << \"warning\";"},{"clang/unittests/Basic/DiagnosticTest.cpp",74,"// Check that FatalsAsError works as intended\nTEST(DiagnosticTest, fatalsAsError) {\n for (unsigned FatalsAsError = 0; FatalsAsError != 2; ++FatalsAsError) {\n Diags.Report(diag::warn_mt_message) << \"warning\";"}} | [j]={{"clang/lib/ARCMigrate/TransformActions.cpp",695,"void TransformActions::reportWarning(StringRef message, SourceLocation loc, SourceRange range) { report(loc, diag::warn_mt_message, range) << message; }"},{"clang/unittests/Basic/DiagnosticTest.cpp",49,"// Check that DiagnosticErrorTrap works with SuppressAllDiagnostics.\nTEST(DiagnosticTest, suppressAndTrap) {\n // ...\n {\n // ...\n Diags.Report(diag::warn_mt_message) << \"warning\";"},{"clang/unittests/Basic/DiagnosticTest.cpp",74,"// Check that FatalsAsError works as intended\nTEST(DiagnosticTest, fatalsAsError) {\n for (unsigned FatalsAsError = 0; FatalsAsError != 2; ++FatalsAsError) {\n // ...\n Diags.Report(diag::warn_mt_message) << \"warning\";"}} | ||
}, | }, | ||
["warn_multichar_character_literal"]={ | ["warn_multichar_character_literal"]={ | ||
Line 268: | Line 268: | ||
[h]=D, | [h]=D, | ||
[i]={"8fa45e1fd527",1601988326,"Convert diagnostics about multi-character literals from extension to warning","Convert diagnostics about multi-character literals from extension to warning"}, | [i]={"8fa45e1fd527",1601988326,"Convert diagnostics about multi-character literals from extension to warning","Convert diagnostics about multi-character literals from extension to warning"}, | ||
[j]={{"clang/lib/Lex/LiteralSupport.cpp",1798,"/// \\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 PP.Diag(Loc, diag::warn_multichar_character_literal);"}}, | [j]={{"clang/lib/Lex/LiteralSupport.cpp",1798,"/// \\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 // ...\n if (NumCharsSoFar > 1) {\n if (isOrdinary() && NumCharsSoFar == 4)\n // ...\n else if (isOrdinary())\n PP.Diag(Loc, diag::warn_multichar_character_literal);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/if_warning.c"]={"clang/test/Preprocessor/if_warning.c:32:5: warning: multi-character character constant [-Wmultichar]"} | ["clang/test/Preprocessor/if_warning.c"]={"clang/test/Preprocessor/if_warning.c:32:5: warning: multi-character character constant [-Wmultichar]"} | ||
Line 285: | Line 285: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{P,3639,"void Sema::DiagnoseMultipleMethodInGlobalPool(SmallVectorImpl<ObjCMethodDecl *> &Methods, Selector Sel, SourceRange R, bool receiverIdOrClass) {\n if (issueDiagnostic) {\n if (issueError)\n else if (strictSelectorMatch)\n else\n Diag(R.getBegin(), diag::warn_multiple_method_decl) << Sel << R;"}}, | [j]={{P,3639,"void Sema::DiagnoseMultipleMethodInGlobalPool(SmallVectorImpl<ObjCMethodDecl *> &Methods, Selector Sel, SourceRange R, bool receiverIdOrClass) {\n // ...\n if (issueDiagnostic) {\n if (issueError)\n // ...\n else if (strictSelectorMatch)\n // ...\n else\n Diag(R.getBegin(), diag::warn_multiple_method_decl) << Sel << R;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/selector-overload.m"]={"clang/test/SemaObjC/selector-overload.m:47:3: warning: multiple methods named \'method:\' found [-Wobjc-multiple-method-names]"} | ["clang/test/SemaObjC/selector-overload.m"]={"clang/test/SemaObjC/selector-overload.m:47:3: warning: multiple methods named \'method:\' found [-Wobjc-multiple-method-names]"} | ||
Line 303: | Line 303: | ||
[h]=q, | [h]=q, | ||
[i]={"01d96986d843",1480719628,"More diagnostic name fixups: w_ -> warn_, warning_ -> warn_, not_ -> note_.","More diagnostic name fixups: w_ -> warn_, warning_ -> warn_, not_ -> note_."}, | [i]={"01d96986d843",1480719628,"More diagnostic name fixups: w_ -> warn_, warning_ -> warn_, not_ -> note_.","More diagnostic name fixups: w_ -> warn_, warning_ -> warn_, not_ -> note_."}, | ||
[j]={{cb,1192,"static bool HelperToDiagnoseMismatchedMethodsInGlobalPool(Sema &S, SourceLocation AtLoc, SourceLocation LParenLoc, SourceLocation RParenLoc, ObjCMethodDecl *Method, ObjCMethodList &MethList) {\n for (M = M->getNext(); M; M = M->getNext()) {\n if (!S.MatchTwoMethodDeclarations(Method, MatchingMethodDecl, Sema::MMS_loose)) {\n if (!Warned) {\n S.Diag(AtLoc, diag::warn_multiple_selectors) << Method->getSelector() << FixItHint::CreateInsertion(LParenLoc, \"(\") << FixItHint::CreateInsertion(RParenLoc, \")\");"},{cb,1211,"static void DiagnoseMismatchedSelectors(Sema &S, SourceLocation AtLoc, ObjCMethodDecl *Method, SourceLocation LParenLoc, SourceLocation RParenLoc, bool WarnMultipleSelectors) {\n if (!WarnMultipleSelectors || S.Diags.isIgnored(diag::warn_multiple_selectors, SourceLocation()))"}}, | [j]={{cb,1192,"static bool HelperToDiagnoseMismatchedMethodsInGlobalPool(Sema &S, SourceLocation AtLoc, SourceLocation LParenLoc, SourceLocation RParenLoc, ObjCMethodDecl *Method, ObjCMethodList &MethList) {\n // ...\n for (M = M->getNext(); M; M = M->getNext()) {\n // ...\n if (!S.MatchTwoMethodDeclarations(Method, MatchingMethodDecl, Sema::MMS_loose)) {\n if (!Warned) {\n // ...\n S.Diag(AtLoc, diag::warn_multiple_selectors) << Method->getSelector() << FixItHint::CreateInsertion(LParenLoc, \"(\") << FixItHint::CreateInsertion(RParenLoc, \")\");"},{cb,1211,"static void DiagnoseMismatchedSelectors(Sema &S, SourceLocation AtLoc, ObjCMethodDecl *Method, SourceLocation LParenLoc, SourceLocation RParenLoc, bool WarnMultipleSelectors) {\n if (!WarnMultipleSelectors || S.Diags.isIgnored(diag::warn_multiple_selectors, SourceLocation()))"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/method-direct.m"]={"clang/test/SemaObjC/method-direct.m:168:10: warning: several methods with selector \'directMismatch2\' of mismatched types are found for the @selector expression [-Wselector-type-mismatch]"} | ["clang/test/SemaObjC/method-direct.m"]={"clang/test/SemaObjC/method-direct.m:168:10: warning: several methods with selector \'directMismatch2\' of mismatched types are found for the @selector expression [-Wselector-type-mismatch]"} | ||
Line 320: | Line 320: | ||
[h]=y, | [h]=y, | ||
[i]={"3efe00206f0f",1532096008,"Implement cpu_dispatch/cpu_specific Multiversioning","Implement cpu_dispatch/cpu_specific Multiversioning"}, | [i]={"3efe00206f0f",1532096008,"Implement cpu_dispatch/cpu_specific Multiversioning","Implement cpu_dispatch/cpu_specific Multiversioning"}, | ||
[j]={{C,2119,"static void handleCPUSpecificAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n for (unsigned ArgNo = 0; ArgNo < getNumAttributeArgs(AL); ++ArgNo) {\n if (llvm::any_of(CPUs, [CPUName, &Target](const IdentifierInfo *Cur) { return Target.CPUSpecificManglingCharacter(CPUName) == Target.CPUSpecificManglingCharacter(Cur->getName()); })) {\n S.Diag(AL.getLoc(), diag::warn_multiversion_duplicate_entries);"}}, | [j]={{C,2119,"static void handleCPUSpecificAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n for (unsigned ArgNo = 0; ArgNo < getNumAttributeArgs(AL); ++ArgNo) {\n // ...\n if (llvm::any_of(CPUs, [CPUName, &Target](const IdentifierInfo *Cur) { return Target.CPUSpecificManglingCharacter(CPUName) == Target.CPUSpecificManglingCharacter(Cur->getName()); })) {\n S.Diag(AL.getLoc(), diag::warn_multiversion_duplicate_entries);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-cpuspecific.c"]={"clang/test/Sema/attr-cpuspecific.c:56:20: warning: CPU list contains duplicate entries; attribute ignored [-Wfunction-multiversion]","clang/test/Sema/attr-cpuspecific.c:118:20: warning: CPU list contains duplicate entries; attribute ignored [-Wfunction-multiversion]"} | ["clang/test/Sema/attr-cpuspecific.c"]={"clang/test/Sema/attr-cpuspecific.c:56:20: warning: CPU list contains duplicate entries; attribute ignored [-Wfunction-multiversion]","clang/test/Sema/attr-cpuspecific.c:118:20: warning: CPU list contains duplicate entries; attribute ignored [-Wfunction-multiversion]"} | ||
Line 337: | Line 337: | ||
[h]=q, | [h]=q, | ||
[i]={"a230224be492",1386229862,"Implement DR482: namespace members can be redeclared with a qualified name","Implement DR482: namespace members can be redeclared with a qualified name"}, | [i]={"a230224be492",1386229862,"Implement DR482: namespace members can be redeclared with a qualified name","Implement DR482: namespace members can be redeclared with a qualified name"}, | ||
[j]={{H,6181,"/// 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 } else {\n Diag(Loc, diag::warn_namespace_member_extra_qualification) << Name;"}}, | [j]={{H,6181,"/// 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 // ...\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 // ...\n } else {\n Diag(Loc, diag::warn_namespace_member_extra_qualification) << Name;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp"]={"clang/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp:118:26: warning: extra qualification on member \'f_in_inline\' [-Wextra-qualification]","clang/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp:123:26: warning: extra qualification on member \'v_in_inline\' [-Wextra-qualification]"} | ["clang/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp"]={"clang/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp:118:26: warning: extra qualification on member \'f_in_inline\' [-Wextra-qualification]","clang/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp:123:26: warning: extra qualification on member \'v_in_inline\' [-Wextra-qualification]"} | ||
Line 354: | Line 354: | ||
[h]=q, | [h]=q, | ||
[i]={"9eef2659bf60",1403274913,"The ability to use vector initializer lists is a GNU vector extension","The ability to use vector initializer lists is a GNU vector extension"}, | [i]={"9eef2659bf60",1403274913,"The ability to use vector initializer lists is a GNU vector extension","The ability to use vector initializer lists is a GNU vector extension"}, | ||
[j]={{Bb,1848,"void InitListChecker::CheckVectorType(const InitializedEntity &Entity, InitListExpr *IList, QualType DeclType, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex) {\n if (!SemaRef.getLangOpts().OpenCL && !SemaRef.getLangOpts().HLSL) {\n if (isBigEndian && (T->getVectorKind() == VectorType::NeonVector || T->getVectorKind() == VectorType::NeonPolyVector)) {\n SemaRef.Diag(IList->getBeginLoc(), diag::warn_neon_vector_initializer_non_portable);"}}, | [j]={{Bb,1848,"void InitListChecker::CheckVectorType(const InitializedEntity &Entity, InitListExpr *IList, QualType DeclType, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex) {\n // ...\n if (!SemaRef.getLangOpts().OpenCL && !SemaRef.getLangOpts().HLSL) {\n // ...\n if (isBigEndian && (T->getVectorKind() == VectorType::NeonVector || T->getVectorKind() == VectorType::NeonPolyVector)) {\n // ...\n SemaRef.Diag(IList->getBeginLoc(), diag::warn_neon_vector_initializer_non_portable);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/big-endian-neon-initializers.c"]={"clang/test/Sema/big-endian-neon-initializers.c:8:15: warning: vector initializers are not compatible with NEON intrinsics in big endian mode [-Wnonportable-vector-initialization]","clang/test/Sema/big-endian-neon-initializers.c:9:15: warning: vector initializers are not compatible with NEON intrinsics in big endian mode [-Wnonportable-vector-initialization]","clang/test/Sema/big-endian-neon-initializers.c:10:15: warning: vector initializers are not compatible with NEON intrinsics in big endian mode [-Wnonportable-vector-initialization]","clang/test/Sema/big-endian-neon-initializers.c:11:17: warning: vector initializers are not compatible with NEON intrinsics in big endian mode [-Wnonportable-vector-initialization]"} | ["clang/test/Sema/big-endian-neon-initializers.c"]={"clang/test/Sema/big-endian-neon-initializers.c:8:15: warning: vector initializers are not compatible with NEON intrinsics in big endian mode [-Wnonportable-vector-initialization]","clang/test/Sema/big-endian-neon-initializers.c:9:15: warning: vector initializers are not compatible with NEON intrinsics in big endian mode [-Wnonportable-vector-initialization]","clang/test/Sema/big-endian-neon-initializers.c:10:15: warning: vector initializers are not compatible with NEON intrinsics in big endian mode [-Wnonportable-vector-initialization]","clang/test/Sema/big-endian-neon-initializers.c:11:17: warning: vector initializers are not compatible with NEON intrinsics in big endian mode [-Wnonportable-vector-initialization]"} | ||
Line 371: | Line 371: | ||
[h]=D, | [h]=D, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{Vb,2877,"#endif\n FoundSlash:\n if (CurPtr[0] == \'*\' && CurPtr[1] != \'/\') {\n // If this is a /* inside of the comment, emit a warning. Don\'t do this\n // if this is a /*/, which will end the comment. This misses cases with\n // embedded escaped newlines, but oh well.\n if (!isLexingRawMode())\n Diag(CurPtr - 1, diag::warn_nested_block_comment);"}}, | [j]={{Vb,2877,"#endif\n // ...\n FoundSlash:\n // ...\n if (CurPtr[0] == \'*\' && CurPtr[1] != \'/\') {\n // If this is a /* inside of the comment, emit a warning. Don\'t do this\n // if this is a /*/, which will end the comment. This misses cases with\n // embedded escaped newlines, but oh well.\n if (!isLexingRawMode())\n Diag(CurPtr - 1, diag::warn_nested_block_comment);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/traditional-cpp.c"]={"clang/test/Preprocessor/traditional-cpp.c:12:15: warning: \'/*\' within block comment [-Wcomment]","clang/test/Preprocessor/traditional-cpp.c:13:25: warning: \'/*\' within block comment [-Wcomment]","clang/test/Preprocessor/traditional-cpp.c:87:20: warning: \'/*\' within block comment [-Wcomment]"} | ["clang/test/Preprocessor/traditional-cpp.c"]={"clang/test/Preprocessor/traditional-cpp.c:12:15: warning: \'/*\' within block comment [-Wcomment]","clang/test/Preprocessor/traditional-cpp.c:13:25: warning: \'/*\' within block comment [-Wcomment]","clang/test/Preprocessor/traditional-cpp.c:87:20: warning: \'/*\' within block comment [-Wcomment]"} | ||
Line 388: | Line 388: | ||
[h]=q, | [h]=q, | ||
[i]={"0a9969b36b16",1531786301,"Restructure checking for, and warning on, lifetime extension.","Restructure checking for, and warning on, lifetime extension."}, | [i]={"0a9969b36b16",1531786301,"Restructure checking for, and warning on, lifetime extension.","Restructure checking for, and warning on, lifetime extension."}, | ||
[j]={{Bb,8243,"void Sema::checkInitializerLifetime(const InitializedEntity &Entity, Expr *Init) {\n auto TemporaryVisitor = [&](IndirectLocalPath &Path, Local L, ReferenceKind RK) -> bool {\n case LK_New:\n if (isa<MaterializeTemporaryExpr>(L)) {\n if (IsGslPtrInitWithGslTempOwner)\n else\n Diag(DiagLoc, RK == RK_ReferenceBinding ? diag::warn_new_dangling_reference : diag::warn_new_dangling_initializer_list) << !Entity.getParent() << DiagRange;"}}, | [j]={{Bb,8243,"void Sema::checkInitializerLifetime(const InitializedEntity &Entity, Expr *Init) {\n // ...\n auto TemporaryVisitor = [&](IndirectLocalPath &Path, Local L, ReferenceKind RK) -> bool {\n // ...\n case LK_New:\n if (isa<MaterializeTemporaryExpr>(L)) {\n if (IsGslPtrInitWithGslTempOwner)\n // ...\n else\n Diag(DiagLoc, RK == RK_ReferenceBinding ? diag::warn_new_dangling_reference : diag::warn_new_dangling_initializer_list) << !Entity.getParent() << DiagRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp"]={"clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp:152:33: warning: array backing the allocated initializer list will be destroyed at the end of the full-expression [-Wdangling-initializer-list]"} | ["clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp"]={"clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp:152:33: warning: array backing the allocated initializer list will be destroyed at the end of the full-expression [-Wdangling-initializer-list]"} | ||
Line 405: | Line 405: | ||
[h]=q, | [h]=q, | ||
[i]={"0a9969b36b16",1531786301,"Restructure checking for, and warning on, lifetime extension.","Restructure checking for, and warning on, lifetime extension."}, | [i]={"0a9969b36b16",1531786301,"Restructure checking for, and warning on, lifetime extension.","Restructure checking for, and warning on, lifetime extension."}, | ||
[j]={{Bb,8242,"void Sema::checkInitializerLifetime(const InitializedEntity &Entity, Expr *Init) {\n auto TemporaryVisitor = [&](IndirectLocalPath &Path, Local L, ReferenceKind RK) -> bool {\n case LK_New:\n if (isa<MaterializeTemporaryExpr>(L)) {\n if (IsGslPtrInitWithGslTempOwner)\n else\n Diag(DiagLoc, RK == RK_ReferenceBinding ? diag::warn_new_dangling_reference : diag::warn_new_dangling_initializer_list) << !Entity.getParent() << DiagRange;"}} | [j]={{Bb,8242,"void Sema::checkInitializerLifetime(const InitializedEntity &Entity, Expr *Init) {\n // ...\n auto TemporaryVisitor = [&](IndirectLocalPath &Path, Local L, ReferenceKind RK) -> bool {\n // ...\n case LK_New:\n if (isa<MaterializeTemporaryExpr>(L)) {\n if (IsGslPtrInitWithGslTempOwner)\n // ...\n else\n Diag(DiagLoc, RK == RK_ReferenceBinding ? diag::warn_new_dangling_reference : diag::warn_new_dangling_initializer_list) << !Entity.getParent() << DiagRange;"}} | ||
}, | }, | ||
["warn_no_autosynthesis_property"]={ | ["warn_no_autosynthesis_property"]={ | ||
Line 419: | Line 419: | ||
[h]=q, | [h]=q, | ||
[i]={"9d25a48b4131",1363117577,"Objective-C: Issue warning in couple of obscure cases","Objective-C: Issue warning in couple of obscure cases"}, | [i]={"9d25a48b4131",1363117577,"Objective-C: Issue warning in couple of obscure cases","Objective-C: Issue warning in couple of obscure cases"}, | ||
[j]={{V,1953,"/// Default synthesizes all properties which must be synthesized\n/// in class\'s \\@implementation.\nvoid Sema::DefaultSynthesizeProperties(Scope *S, ObjCImplDecl *IMPDecl, ObjCInterfaceDecl *IDecl, SourceLocation AtEnd) {\n for (const auto &PropEntry : PropMap) {\n // If property to be implemented in the super class, ignore.\n if (PropInSuperClass) {\n if ((Prop->getPropertyAttributes() & ObjCPropertyAttribute::kind_readwrite) && (PropInSuperClass->getPropertyAttributes() & ObjCPropertyAttribute::kind_readonly) && !IMPDecl->getInstanceMethod(Prop->getSetterName()) && !IDecl->HasUserDeclaredSetterMethod(Prop)) {\n Diag(Prop->getLocation(), diag::warn_no_autosynthesis_property) << Prop->getIdentifier();"}}, | [j]={{V,1953,"/// Default synthesizes all properties which must be synthesized\n/// in class\'s \\@implementation.\nvoid Sema::DefaultSynthesizeProperties(Scope *S, ObjCImplDecl *IMPDecl, ObjCInterfaceDecl *IDecl, SourceLocation AtEnd) {\n // ...\n for (const auto &PropEntry : PropMap) {\n // ...\n // If property to be implemented in the super class, ignore.\n if (PropInSuperClass) {\n if ((Prop->getPropertyAttributes() & ObjCPropertyAttribute::kind_readwrite) && (PropInSuperClass->getPropertyAttributes() & ObjCPropertyAttribute::kind_readonly) && !IMPDecl->getInstanceMethod(Prop->getSetterName()) && !IDecl->HasUserDeclaredSetterMethod(Prop)) {\n Diag(Prop->getLocation(), diag::warn_no_autosynthesis_property) << Prop->getIdentifier();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/default-synthesize-3.m"]={"clang/test/SemaObjC/default-synthesize-3.m:66:28: warning: auto property synthesis will not synthesize property \'isFoo\' because it is \'readwrite\' but it will be synthesized \'readonly\' via another property [-Wobjc-property-synthesis]"} | ["clang/test/SemaObjC/default-synthesize-3.m"]={"clang/test/SemaObjC/default-synthesize-3.m:66:28: warning: auto property synthesis will not synthesize property \'isFoo\' because it is \'readwrite\' but it will be synthesized \'readonly\' via another property [-Wobjc-property-synthesis]"} | ||
Line 436: | Line 436: | ||
[h]=q, | [h]=q, | ||
[i]={"9d25a48b4131",1363117577,"Objective-C: Issue warning in couple of obscure cases","Objective-C: Issue warning in couple of obscure cases"}, | [i]={"9d25a48b4131",1363117577,"Objective-C: Issue warning in couple of obscure cases","Objective-C: Issue warning in couple of obscure cases"}, | ||
[j]={{V,1918,"/// Default synthesizes all properties which must be synthesized\n/// in class\'s \\@implementation.\nvoid Sema::DefaultSynthesizeProperties(Scope *S, ObjCImplDecl *IMPDecl, ObjCInterfaceDecl *IDecl, SourceLocation AtEnd) {\n for (const auto &PropEntry : PropMap) {\n if (ObjCPropertyImplDecl *PID = IMPDecl->FindPropertyImplIvarDecl(Prop->getIdentifier())) {\n Diag(Prop->getLocation(), diag::warn_no_autosynthesis_shared_ivar_property) << Prop->getIdentifier();"}}, | [j]={{V,1918,"/// Default synthesizes all properties which must be synthesized\n/// in class\'s \\@implementation.\nvoid Sema::DefaultSynthesizeProperties(Scope *S, ObjCImplDecl *IMPDecl, ObjCInterfaceDecl *IDecl, SourceLocation AtEnd) {\n // ...\n for (const auto &PropEntry : PropMap) {\n // ...\n if (ObjCPropertyImplDecl *PID = IMPDecl->FindPropertyImplIvarDecl(Prop->getIdentifier())) {\n Diag(Prop->getLocation(), diag::warn_no_autosynthesis_shared_ivar_property) << Prop->getIdentifier();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/default-synthesize-3.m"]={"clang/test/SemaObjC/default-synthesize-3.m:67:16: warning: auto property synthesis will not synthesize property \'Property1\' because it cannot share an ivar with another synthesized property [-Wobjc-property-synthesis]"} | ["clang/test/SemaObjC/default-synthesize-3.m"]={"clang/test/SemaObjC/default-synthesize-3.m:67:16: warning: auto property synthesis will not synthesize property \'Property1\' because it cannot share an ivar with another synthesized property [-Wobjc-property-synthesis]"} | ||
Line 451: | Line 451: | ||
[h]=q, | [h]=q, | ||
[i]={"454a5b65d402",1271289653,"Warn about non-aggregate classes with no user-declared constructors","Warn about non-aggregate classes with no user-declared constructors"}, | [i]={"454a5b65d402",1271289653,"Warn about non-aggregate classes with no user-declared constructors","Warn about non-aggregate classes with no user-declared constructors"}, | ||
[j]={{db,6928,"/// 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 this is not an aggregate type and has no user-declared constructor,\n // complain about any non-static data members of reference or const scalar\n // type, since they will never get initializers.\n if (!Record->isInvalidDecl() && !Record->isDependentType() && !Record->isAggregate() && !Record->hasUserDeclaredConstructor() && !Record->isLambda()) {\n for (const auto *F : Record->fields()) {\n if (F->getType()->isReferenceType() || (F->getType().isConstQualified() && F->getType()->isScalarType())) {\n if (!Complained) {\n Diag(Record->getLocation(), diag::warn_no_constructor_for_refconst) << Record->getTagKind() << Record;"}}, | [j]={{db,6928,"/// 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 // ...\n // If this is not an aggregate type and has no user-declared constructor,\n // complain about any non-static data members of reference or const scalar\n // type, since they will never get initializers.\n if (!Record->isInvalidDecl() && !Record->isDependentType() && !Record->isAggregate() && !Record->hasUserDeclaredConstructor() && !Record->isLambda()) {\n // ...\n for (const auto *F : Record->fields()) {\n // ...\n if (F->getType()->isReferenceType() || (F->getType().isConstQualified() && F->getType()->isScalarType())) {\n if (!Complained) {\n Diag(Record->getLocation(), diag::warn_no_constructor_for_refconst) << Record->getTagKind() << Record;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaTemplate/instantiation-backtrace.cpp"]={"clang/test/SemaTemplate/instantiation-backtrace.cpp:35:28: warning: class \'ResultTy<int &>\' does not declare any constructor to initialize its non-modifiable members"} | ["clang/test/SemaTemplate/instantiation-backtrace.cpp"]={"clang/test/SemaTemplate/instantiation-backtrace.cpp:35:28: warning: class \'ResultTy<int &>\' does not declare any constructor to initialize its non-modifiable members"} | ||
Line 468: | Line 468: | ||
[h]=q, | [h]=q, | ||
[i]={Yb,1582847864,tb,tb}, | [i]={Yb,1582847864,tb,tb}, | ||
[j]={{Ob,935,"/// 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 // Warns when dynamic_cast is used with RTTI data disabled.\n if (!Self.getLangOpts().RTTIData) {\n if (MicrosoftABI || !DestPointee->isVoidType())\n Self.Diag(OpRange.getBegin(), diag::warn_no_dynamic_cast_with_rtti_disabled) << isClangCL;"}}, | [j]={{Ob,935,"/// 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 // ...\n // Warns when dynamic_cast is used with RTTI data disabled.\n if (!Self.getLangOpts().RTTIData) {\n // ...\n if (MicrosoftABI || !DestPointee->isVoidType())\n Self.Diag(OpRange.getBegin(), diag::warn_no_dynamic_cast_with_rtti_disabled) << isClangCL;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp"]={"clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp:21:14: warning: dynamic_cast will not work since RTTI data is disabled by -fno-rtti-data [-Wrtti]"} | ["clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp"]={"clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp:21:14: warning: dynamic_cast will not work since RTTI data is disabled by -fno-rtti-data [-Wrtti]"} | ||
Line 486: | Line 486: | ||
[h]=D, | [h]=D, | ||
[i]={"4c55d45b13e9",1377272521,"Respect -Wnewline-eof even in C++11 mode.","Respect -Wnewline-eof even in C++11 mode."}, | [i]={"4c55d45b13e9",1377272521,"Respect -Wnewline-eof even in C++11 mode.","Respect -Wnewline-eof even in C++11 mode."}, | ||
[j]={{Vb,3055,"/// LexEndOfFile - CurPtr points to the end of this file. Handle this\n/// condition, reporting diagnostics and handling other edge cases as required.\n/// This returns true if Result contains a token, false if PP.Lex should be\n/// called again.\nbool Lexer::LexEndOfFile(Token &Result, const char *CurPtr) {\n // C99 5.1.1.2p2: If the file is non-empty and didn\'t end in a newline, issue\n // a pedwarn.\n if (CurPtr != BufferStart && (CurPtr[-1] != \'\\n\' && CurPtr[-1] != \'\\r\')) {\n if (LangOpts.CPlusPlus11) {\n // C++11 [lex.phases] 2.2 p2\n // Prefer the C++98 pedantic compatibility warning over the generic,\n // non-extension, user-requested \"missing newline at EOF\" warning.\n if (!Diags.isIgnored(diag::warn_cxx98_compat_no_newline_eof, EndLoc)) {\n } else {\n DiagID = diag::warn_no_newline_eof;"}}, | [j]={{Vb,3055,"/// LexEndOfFile - CurPtr points to the end of this file. Handle this\n/// condition, reporting diagnostics and handling other edge cases as required.\n/// This returns true if Result contains a token, false if PP.Lex should be\n/// called again.\nbool Lexer::LexEndOfFile(Token &Result, const char *CurPtr) {\n // ...\n // C99 5.1.1.2p2: If the file is non-empty and didn\'t end in a newline, issue\n // a pedwarn.\n if (CurPtr != BufferStart && (CurPtr[-1] != \'\\n\' && CurPtr[-1] != \'\\r\')) {\n // ...\n if (LangOpts.CPlusPlus11) {\n // C++11 [lex.phases] 2.2 p2\n // Prefer the C++98 pedantic compatibility warning over the generic,\n // non-extension, user-requested \"missing newline at EOF\" warning.\n if (!Diags.isIgnored(diag::warn_cxx98_compat_no_newline_eof, EndLoc)) {\n // ...\n } else {\n DiagID = diag::warn_no_newline_eof;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Lexer/eof-number.c"]={"clang/test/Lexer/eof-number.c:9:6: warning: no newline at end of file [-Wnewline-eof]"} | ["clang/test/Lexer/eof-number.c"]={"clang/test/Lexer/eof-number.c:9:6: warning: no newline at end of file [-Wnewline-eof]"} | ||
Line 503: | Line 503: | ||
[h]=y, | [h]=y, | ||
[i]={"84bc0a271dcd",1513919083,"[Modules] Map missing private submodules from Foo.Private to Foo_Private","[Modules] Map missing private submodules from Foo.Private to Foo_Private"}, | [i]={"84bc0a271dcd",1513919083,"[Modules] Map missing private submodules from Foo.Private to Foo_Private","[Modules] Map missing private submodules from Foo.Private to Foo_Private"}, | ||
[j]={{jd,2046,"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 the user is requesting Foo.Private and it doesn\'t exist, try to\n // match Foo_Private and emit a warning asking for the user to write\n // @import Foo_Private instead. FIXME: remove this when existing clients\n // migrate off of Foo.Private syntax.\n if (!Sub && Name == \"Private\" && Module == Module->getTopLevelModule()) {\n if (Sub) {\n if (!getDiagnostics().isIgnored(diag::warn_no_priv_submodule_use_toplevel, ImportLoc)) {"},{jd,2048,"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 the user is requesting Foo.Private and it doesn\'t exist, try to\n // match Foo_Private and emit a warning asking for the user to write\n // @import Foo_Private instead. FIXME: remove this when existing clients\n // migrate off of Foo.Private syntax.\n if (!Sub && Name == \"Private\" && Module == Module->getTopLevelModule()) {\n if (Sub) {\n if (!getDiagnostics().isIgnored(diag::warn_no_priv_submodule_use_toplevel, ImportLoc)) {\n getDiagnostics().Report(Path[I].second, diag::warn_no_priv_submodule_use_toplevel) << Path[I].first << Module->getFullModuleName() << PrivateModule << SourceRange(Path[0].second, Path[I].second) << FixItHint::CreateReplacement(SourceRange(Path[0].second), PrivateModule);"}}, | [j]={{jd,2046,"ModuleLoadResult CompilerInstance::loadModule(SourceLocation ImportLoc, ModuleIdPath Path, Module::NameVisibilityKind Visibility, bool IsInclusionDirective) {\n // ...\n for (unsigned I = 1, N = Path.size(); I != N; ++I) {\n // ...\n // If the user is requesting Foo.Private and it doesn\'t exist, try to\n // match Foo_Private and emit a warning asking for the user to write\n // @import Foo_Private instead. FIXME: remove this when existing clients\n // migrate off of Foo.Private syntax.\n if (!Sub && Name == \"Private\" && Module == Module->getTopLevelModule()) {\n // ...\n if (Sub) {\n // ...\n if (!getDiagnostics().isIgnored(diag::warn_no_priv_submodule_use_toplevel, ImportLoc)) {"},{jd,2048,"ModuleLoadResult CompilerInstance::loadModule(SourceLocation ImportLoc, ModuleIdPath Path, Module::NameVisibilityKind Visibility, bool IsInclusionDirective) {\n // ...\n for (unsigned I = 1, N = Path.size(); I != N; ++I) {\n // ...\n // If the user is requesting Foo.Private and it doesn\'t exist, try to\n // match Foo_Private and emit a warning asking for the user to write\n // @import Foo_Private instead. FIXME: remove this when existing clients\n // migrate off of Foo.Private syntax.\n if (!Sub && Name == \"Private\" && Module == Module->getTopLevelModule()) {\n // ...\n if (Sub) {\n // ...\n if (!getDiagnostics().isIgnored(diag::warn_no_priv_submodule_use_toplevel, ImportLoc)) {\n getDiagnostics().Report(Path[I].second, diag::warn_no_priv_submodule_use_toplevel) << Path[I].first << Module->getFullModuleName() << PrivateModule << SourceRange(Path[0].second, Path[I].second) << FixItHint::CreateReplacement(SourceRange(Path[0].second), PrivateModule);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Modules/implicit-map-dot-private.m"]={"clang/test/Modules/implicit-map-dot-private.m:19:11: warning: no submodule named \'Private\' in module \'A\'; using top level \'A_Private\' [-Wprivate-module]"} | ["clang/test/Modules/implicit-map-dot-private.m"]={"clang/test/Modules/implicit-map-dot-private.m:19:11: warning: no submodule named \'Private\' in module \'A\'; using top level \'A_Private\' [-Wprivate-module]"} | ||
Line 520: | Line 520: | ||
[h]=B, | [h]=B, | ||
[i]={"69350e569dc4",1612659633,bc,bc}, | [i]={"69350e569dc4",1612659633,bc,bc}, | ||
[j]={{"clang/lib/Parse/ParseStmt.cpp",1260,"/// ParseCompoundStatementBody - Parse a sequence of statements optionally\n/// followed by a label and invoke the ActOnCompoundStmt action. This expects\n/// the \'{\' to be the current token, and consume the \'}\' at the end of the\n/// block. It does not manipulate the scope stack.\nStmtResult Parser::ParseCompoundStatementBody(bool isStmtExpr) {\n // Warn the user that using option `-ffp-eval-method=source` on a\n // 32-bit target and feature `sse` disabled, or using\n // `pragma clang fp eval_method=source` and feature `sse` disabled, is not\n // supported.\n if (!PP.getTargetInfo().supportSourceEvalMethod() && (PP.getLastFPEvalPragmaLocation().isValid() || PP.getCurrentFPEvalMethod() == LangOptions::FPEvalMethodKind::FEM_Source))\n Diag(Tok.getLocation(), diag::warn_no_support_for_eval_method_source_on_m32);"}}, | [j]={{"clang/lib/Parse/ParseStmt.cpp",1260,"/// ParseCompoundStatementBody - Parse a sequence of statements optionally\n/// followed by a label and invoke the ActOnCompoundStmt action. This expects\n/// the \'{\' to be the current token, and consume the \'}\' at the end of the\n/// block. It does not manipulate the scope stack.\nStmtResult Parser::ParseCompoundStatementBody(bool isStmtExpr) {\n // ...\n // Warn the user that using option `-ffp-eval-method=source` on a\n // 32-bit target and feature `sse` disabled, or using\n // `pragma clang fp eval_method=source` and feature `sse` disabled, is not\n // supported.\n if (!PP.getTargetInfo().supportSourceEvalMethod() && (PP.getLastFPEvalPragmaLocation().isValid() || PP.getCurrentFPEvalMethod() == LangOptions::FPEvalMethodKind::FEM_Source))\n Diag(Tok.getLocation(), diag::warn_no_support_for_eval_method_source_on_m32);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/x86_64-eval-method.c"]={"clang/test/Sema/x86_64-eval-method.c:13:1: warning: Setting the floating point evaluation method to `source` on a target without SSE is not supported. [-Wpragmas]"} | ["clang/test/Sema/x86_64-eval-method.c"]={"clang/test/Sema/x86_64-eval-method.c:13:1: warning: Setting the floating point evaluation method to `source` on a target without SSE is not supported. [-Wpragmas]"} | ||
Line 537: | Line 537: | ||
[h]=q, | [h]=q, | ||
[i]={Yb,1582847864,tb,tb}, | [i]={Yb,1582847864,tb,tb}, | ||
[j]={{kc,705,"/// ActOnCXXTypeidOfType - Parse typeid( type-id ) or typeid (expression);\nExprResult Sema::ActOnCXXTypeid(SourceLocation OpLoc, SourceLocation LParenLoc, bool isType, void *TyOrExpr, SourceLocation RParenLoc) {\n if (!getLangOpts().RTTIData && !Result.isInvalid())\n if (auto *CTE = dyn_cast<CXXTypeidExpr>(Result.get()))\n if (CTE->isPotentiallyEvaluated() && !CTE->isMostDerived(Context))\n Diag(OpLoc, diag::warn_no_typeid_with_rtti_disabled) << (getDiagnostics().getDiagnosticOptions().getFormat() == DiagnosticOptions::MSVC);"}}, | [j]={{kc,705,"/// ActOnCXXTypeidOfType - Parse typeid( type-id ) or typeid (expression);\nExprResult Sema::ActOnCXXTypeid(SourceLocation OpLoc, SourceLocation LParenLoc, bool isType, void *TyOrExpr, SourceLocation RParenLoc) {\n // ...\n if (!getLangOpts().RTTIData && !Result.isInvalid())\n if (auto *CTE = dyn_cast<CXXTypeidExpr>(Result.get()))\n if (CTE->isPotentiallyEvaluated() && !CTE->isMostDerived(Context))\n Diag(OpLoc, diag::warn_no_typeid_with_rtti_disabled) << (getDiagnostics().getDiagnosticOptions().getFormat() == DiagnosticOptions::MSVC);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp"]={"clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp:20:28: warning: typeid will not work since RTTI data is disabled by -fno-rtti-data [-Wrtti]"} | ["clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp"]={"clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp:20:28: warning: typeid will not work since RTTI data is disabled by -fno-rtti-data [-Wrtti]"} | ||
Line 555: | Line 555: | ||
[h]=q, | [h]=q, | ||
[i]={"ad425626d237",1479339600,"Add warning when assigning enums to bitfields without an explicit unsigned underlying type","Add warning when assigning enums to bitfields without an explicit unsigned underlying type"}, | [i]={"ad425626d237",1479339600,"Add warning when assigning enums to bitfields without an explicit unsigned underlying type","Add warning when assigning enums to bitfields without an explicit unsigned underlying type"}, | ||
[j]={{x,14047,"/// Analyzes an attempt to assign the given value to a bitfield.\n///\n/// Returns true if there was something fishy about the attempt.\nstatic bool AnalyzeBitFieldAssignment(Sema &S, FieldDecl *Bitfield, Expr *Init, SourceLocation InitLoc) {\n if (BitfieldType->isEnumeralType()) {\n // If the underlying enum type was not explicitly specified as an unsigned\n // type and the enum contain only positive values, MSVC++ will cause an\n // inconsistency by storing this as a signed type.\n if (S.getLangOpts().CPlusPlus11 && !BitfieldEnumDecl->getIntegerTypeSourceInfo() && BitfieldEnumDecl->getNumPositiveBits() > 0 && BitfieldEnumDecl->getNumNegativeBits() == 0) {\n S.Diag(InitLoc, diag::warn_no_underlying_type_specified_for_enum_bitfield) << BitfieldEnumDecl;"}}, | [j]={{x,14047,"/// Analyzes an attempt to assign the given value to a bitfield.\n///\n/// Returns true if there was something fishy about the attempt.\nstatic bool AnalyzeBitFieldAssignment(Sema &S, FieldDecl *Bitfield, Expr *Init, SourceLocation InitLoc) {\n // ...\n if (BitfieldType->isEnumeralType()) {\n // ...\n // If the underlying enum type was not explicitly specified as an unsigned\n // type and the enum contain only positive values, MSVC++ will cause an\n // inconsistency by storing this as a signed type.\n if (S.getLangOpts().CPlusPlus11 && !BitfieldEnumDecl->getIntegerTypeSourceInfo() && BitfieldEnumDecl->getNumPositiveBits() > 0 && BitfieldEnumDecl->getNumNegativeBits() == 0) {\n S.Diag(InitLoc, diag::warn_no_underlying_type_specified_for_enum_bitfield) << BitfieldEnumDecl;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-msvc-enum-bitfield.cpp"]={"clang/test/SemaCXX/warn-msvc-enum-bitfield.cpp:9:8: warning: enums in the Microsoft ABI are signed integers by default; consider giving the enum \'E\' an unsigned underlying type to make this code portable [-Wsigned-enum-bitfield]","clang/test/SemaCXX/warn-msvc-enum-bitfield.cpp:10:8: warning: enums in the Microsoft ABI are signed integers by default; consider giving the enum \'F\' an unsigned underlying type to make this code portable [-Wsigned-enum-bitfield]"} | ["clang/test/SemaCXX/warn-msvc-enum-bitfield.cpp"]={"clang/test/SemaCXX/warn-msvc-enum-bitfield.cpp:9:8: warning: enums in the Microsoft ABI are signed integers by default; consider giving the enum \'E\' an unsigned underlying type to make this code portable [-Wsigned-enum-bitfield]","clang/test/SemaCXX/warn-msvc-enum-bitfield.cpp:10:8: warning: enums in the Microsoft ABI are signed integers by default; consider giving the enum \'F\' an unsigned underlying type to make this code portable [-Wsigned-enum-bitfield]"} | ||
Line 573: | Line 573: | ||
[h]=q, | [h]=q, | ||
[i]={"ee5db8b5c4ab",1315518770,"Thread Safety: In C++0x Mutexes are the objects that control access to shared variables, while Lock...","Thread Safety: In C++0x Mutexes are the objects that control access to shared variables, while Locks are the objects that acquire and release Mutexes. We switch to this new terminology."}, | [i]={"ee5db8b5c4ab",1315518770,"Thread Safety: In C++0x Mutexes are the objects that control access to shared variables, while Lock...","Thread Safety: In C++0x Mutexes are the objects that control access to shared variables, while Locks are the objects that acquire and release Mutexes. We switch to this new terminology."}, | ||
[j]={{E,1915,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n void handleMutexHeldEndOfScope(StringRef Kind, Name LockName, SourceLocation LocLocked, SourceLocation LocEndOfScope, LockErrorKind LEK) override {\n case LEK_LockedAtEndOfFunction:\n DiagID = diag::warn_no_unlock;"}}, | [j]={{E,1915,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n // ...\n void handleMutexHeldEndOfScope(StringRef Kind, Name LockName, SourceLocation LocLocked, SourceLocation LocEndOfScope, LockErrorKind LEK) override {\n // ...\n case LEK_LockedAtEndOfFunction:\n DiagID = diag::warn_no_unlock;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjCXX/warn-thread-safety-analysis.mm"]={"clang/test/SemaObjCXX/warn-thread-safety-analysis.mm:26:1: warning: mutex \'self->lock_\' is still held at the end of function [-Wthread-safety-analysis]"} | ["clang/test/SemaObjCXX/warn-thread-safety-analysis.mm"]={"clang/test/SemaObjCXX/warn-thread-safety-analysis.mm:26:1: warning: mutex \'self->lock_\' is still held at the end of function [-Wthread-safety-analysis]"} | ||
Line 590: | Line 590: | ||
[h]=q, | [h]=q, | ||
[i]={"220671a08064",1521293495,"Adding nocf_check attribute for cf-protection fine tuning","Adding nocf_check attribute for cf-protection fine tuning"}, | [i]={"220671a08064",1521293495,"Adding nocf_check attribute for cf-protection fine tuning","Adding nocf_check attribute for cf-protection fine tuning"}, | ||
[j]={{C,2212,"static void handleNoCfCheckAttr(Sema &S, Decl *D, const ParsedAttr &Attrs) {\n if (!S.getLangOpts().CFProtectionBranch)\n S.Diag(Attrs.getLoc(), diag::warn_nocf_check_attribute_ignored);"},{T,7860,"/// Process an individual function attribute. Returns true to\n/// indicate that the attribute was handled, false if it wasn\'t.\nstatic bool handleFunctionTypeAttr(TypeProcessingState &state, ParsedAttr &attr, QualType &type) {\n if (attr.getKind() == ParsedAttr::AT_AnyX86NoCfCheck) {\n if (!S.getLangOpts().CFProtectionBranch) {\n S.Diag(attr.getLoc(), diag::warn_nocf_check_attribute_ignored);"}}, | [j]={{C,2212,"static void handleNoCfCheckAttr(Sema &S, Decl *D, const ParsedAttr &Attrs) {\n if (!S.getLangOpts().CFProtectionBranch)\n S.Diag(Attrs.getLoc(), diag::warn_nocf_check_attribute_ignored);"},{T,7860,"/// Process an individual function attribute. Returns true to\n/// indicate that the attribute was handled, false if it wasn\'t.\nstatic bool handleFunctionTypeAttr(TypeProcessingState &state, ParsedAttr &attr, QualType &type) {\n // ...\n if (attr.getKind() == ParsedAttr::AT_AnyX86NoCfCheck) {\n if (!S.getLangOpts().CFProtectionBranch) {\n S.Diag(attr.getLoc(), diag::warn_nocf_check_attribute_ignored);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/nocf_check_attr_not_allowed.c"]={"clang/test/Sema/nocf_check_attr_not_allowed.c:5:21: warning: \'nocf_check\' attribute ignored; use -fcf-protection to enable the attribute [-Wignored-attributes]"} | ["clang/test/Sema/nocf_check_attr_not_allowed.c"]={"clang/test/Sema/nocf_check_attr_not_allowed.c:5:21: warning: \'nocf_check\' attribute ignored; use -fcf-protection to enable the attribute [-Wignored-attributes]"} | ||
Line 607: | Line 607: | ||
[h]=y, | [h]=y, | ||
[i]={"ad7ac964e5cf",1544058354,"[Sema/Attribute] Check for noderef attribute","[Sema/Attribute] Check for noderef attribute"}, | [i]={"ad7ac964e5cf",1544058354,"[Sema/Attribute] Check for noderef attribute","[Sema/Attribute] Check for noderef attribute"}, | ||
[j]={{T,5732,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n for (unsigned i = 0, e = D.getNumTypeObjects(); i != e; ++i) {\n if (DeclType.Kind != DeclaratorChunk::Paren) {\n if (ExpectNoDerefChunk && !IsNoDerefableChunk(DeclType))\n S.Diag(DeclType.Loc, diag::warn_noderef_on_non_pointer_or_array);"},{T,5740,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n if (ExpectNoDerefChunk)\n S.Diag(state.getDeclarator().getBeginLoc(), diag::warn_noderef_on_non_pointer_or_array);"}}, | [j]={{T,5732,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n // ...\n for (unsigned i = 0, e = D.getNumTypeObjects(); i != e; ++i) {\n // ...\n if (DeclType.Kind != DeclaratorChunk::Paren) {\n if (ExpectNoDerefChunk && !IsNoDerefableChunk(DeclType))\n S.Diag(DeclType.Loc, diag::warn_noderef_on_non_pointer_or_array);"},{T,5740,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n // ...\n if (ExpectNoDerefChunk)\n S.Diag(state.getDeclarator().getBeginLoc(), diag::warn_noderef_on_non_pointer_or_array);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Frontend/noderef.cpp"]={"clang/test/Frontend/noderef.cpp:15:3: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:18:3: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:22:3: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:46:17: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:49:29: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:67:12: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:73:15: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:76:16: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:80:34: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:87:3: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:99:15: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:125:3: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]"} | ["clang/test/Frontend/noderef.cpp"]={"clang/test/Frontend/noderef.cpp:15:3: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:18:3: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:22:3: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:46:17: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:49:29: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:67:12: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:73:15: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:76:16: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:80:34: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:87:3: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:99:15: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]","clang/test/Frontend/noderef.cpp:125:3: warning: \'noderef\' can only be used on an array or pointer type [-Wignored-attributes]"} | ||
Line 624: | Line 624: | ||
[h]=y, | [h]=y, | ||
[i]={"ad7ac964e5cf",1544058354,"[Sema/Attribute] Check for noderef attribute","[Sema/Attribute] Check for noderef attribute"}, | [i]={"ad7ac964e5cf",1544058354,"[Sema/Attribute] Check for noderef attribute","[Sema/Attribute] Check for noderef attribute"}, | ||
[j]={{Ob,187,"void CheckNoDeref(Sema &S, const QualType FromType, const QualType ToType, SourceLocation OpLoc) {\n if (const auto *PtrType = dyn_cast<PointerType>(FromType)) {\n if (PtrType->getPointeeType()->hasAttr(attr::NoDeref)) {\n if (const auto *DestType = dyn_cast<PointerType>(ToType)) {\n if (!DestType->getPointeeType()->hasAttr(attr::NoDeref)) {\n S.Diag(OpLoc, diag::warn_noderef_to_dereferenceable_pointer);"},{A,10624,"Sema::AssignConvertType Sema::CheckSingleAssignmentConstraints(QualType LHSType, ExprResult &CallerRHS, bool Diagnose, bool DiagnoseCFAudited, bool ConvertRHS) {\n if (const auto *LHSPtrType = LHSType->getAs<PointerType>()) {\n if (const auto *RHSPtrType = RHS.get()->getType()->getAs<PointerType>()) {\n if (RHSPtrType->getPointeeType()->hasAttr(attr::NoDeref) && !LHSPtrType->getPointeeType()->hasAttr(attr::NoDeref)) {\n Diag(RHS.get()->getExprLoc(), diag::warn_noderef_to_dereferenceable_pointer) << RHS.get()->getSourceRange();"},{Bb,8976,"ExprResult InitializationSequence::Perform(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, MultiExprArg Args, QualType *ResultType) {\n for (step_iterator Step = step_begin(), StepEnd = step_end(); Step != StepEnd; ++Step) {\n case SK_ConversionSequenceNoNarrowing: {\n if (const auto *FromPtrType = CurInit.get()->getType()->getAs<PointerType>()) {\n if (const auto *ToPtrType = Step->Type->getAs<PointerType>()) {\n if (FromPtrType->getPointeeType()->hasAttr(attr::NoDeref) && !ToPtrType->getPointeeType()->hasAttr(attr::NoDeref)) {\n // Do not check static casts here because they are checked earlier\n // in Sema::ActOnCXXNamedCast()\n if (!Kind.isStaticCast()) {\n S.Diag(CurInit.get()->getExprLoc(), diag::warn_noderef_to_dereferenceable_pointer) << CurInit.get()->getSourceRange();"}}, | [j]={{Ob,187,"void CheckNoDeref(Sema &S, const QualType FromType, const QualType ToType, SourceLocation OpLoc) {\n if (const auto *PtrType = dyn_cast<PointerType>(FromType)) {\n if (PtrType->getPointeeType()->hasAttr(attr::NoDeref)) {\n if (const auto *DestType = dyn_cast<PointerType>(ToType)) {\n if (!DestType->getPointeeType()->hasAttr(attr::NoDeref)) {\n S.Diag(OpLoc, diag::warn_noderef_to_dereferenceable_pointer);"},{A,10624,"Sema::AssignConvertType Sema::CheckSingleAssignmentConstraints(QualType LHSType, ExprResult &CallerRHS, bool Diagnose, bool DiagnoseCFAudited, bool ConvertRHS) {\n // ...\n if (const auto *LHSPtrType = LHSType->getAs<PointerType>()) {\n if (const auto *RHSPtrType = RHS.get()->getType()->getAs<PointerType>()) {\n if (RHSPtrType->getPointeeType()->hasAttr(attr::NoDeref) && !LHSPtrType->getPointeeType()->hasAttr(attr::NoDeref)) {\n Diag(RHS.get()->getExprLoc(), diag::warn_noderef_to_dereferenceable_pointer) << RHS.get()->getSourceRange();"},{Bb,8976,"ExprResult InitializationSequence::Perform(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, MultiExprArg Args, QualType *ResultType) {\n // ...\n for (step_iterator Step = step_begin(), StepEnd = step_end(); Step != StepEnd; ++Step) {\n // ...\n case SK_ConversionSequence:\n case SK_ConversionSequenceNoNarrowing: {\n if (const auto *FromPtrType = CurInit.get()->getType()->getAs<PointerType>()) {\n if (const auto *ToPtrType = Step->Type->getAs<PointerType>()) {\n if (FromPtrType->getPointeeType()->hasAttr(attr::NoDeref) && !ToPtrType->getPointeeType()->hasAttr(attr::NoDeref)) {\n // Do not check static casts here because they are checked earlier\n // in Sema::ActOnCXXNamedCast()\n if (!Kind.isStaticCast()) {\n S.Diag(CurInit.get()->getExprLoc(), diag::warn_noderef_to_dereferenceable_pointer) << CurInit.get()->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Frontend/noderef.cpp"]={"clang/test/Frontend/noderef.cpp:33:17: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:34:15: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:93:31: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:138:12: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:147:13: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:148:13: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:156:19: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:160:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:164:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:168:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:172:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:176:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:180:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:184:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]"} | ["clang/test/Frontend/noderef.cpp"]={"clang/test/Frontend/noderef.cpp:33:17: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:34:15: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:93:31: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:138:12: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:147:13: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:148:13: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:156:19: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:160:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:164:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:168:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:172:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:176:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:180:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]","clang/test/Frontend/noderef.cpp:184:10: warning: casting to dereferenceable pointer removes \'noderef\' attribute [-Wnoderef]"} | ||
Line 641: | Line 641: | ||
[h]="Coroutines Issue", | [h]="Coroutines Issue", | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{"clang/lib/Sema/SemaCoroutine.cpp",1479,"bool CoroutineStmtBuilder::makeNewAndDeleteExpr() {\n // If we found a non-aligned allocation function in the promise_type,\n // it indicates the user forgot to update the allocation function. Let\'s emit\n // a warning here.\n if (FoundNonAlignedInPromise) {\n S.Diag(OperatorNew->getLocation(), diag::warn_non_aligned_allocation_function) << &FD;"}}, | [j]={{"clang/lib/Sema/SemaCoroutine.cpp",1479,"bool CoroutineStmtBuilder::makeNewAndDeleteExpr() {\n // ...\n // If we found a non-aligned allocation function in the promise_type,\n // it indicates the user forgot to update the allocation function. Let\'s emit\n // a warning here.\n if (FoundNonAlignedInPromise) {\n S.Diag(OperatorNew->getLocation(), diag::warn_non_aligned_allocation_function) << &FD;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/coroutine-alloc-4.cpp"]={"clang/test/SemaCXX/coroutine-alloc-4.cpp:18:11: warning: under -fcoro-aligned-allocation, the non-aligned allocation function for the promise type \'f\' has higher precedence than the global aligned allocation function [-Wcoro-non-aligned-allocation-function]","clang/test/SemaCXX/coroutine-alloc-4.cpp:18:11: warning: under -fcoro-aligned-allocation, the non-aligned allocation function for the promise type \'f\' has higher precedence than the global aligned allocation function [-Wcoro-non-aligned-allocation-function]"} | ["clang/test/SemaCXX/coroutine-alloc-4.cpp"]={"clang/test/SemaCXX/coroutine-alloc-4.cpp:18:11: warning: under -fcoro-aligned-allocation, the non-aligned allocation function for the promise type \'f\' has higher precedence than the global aligned allocation function [-Wcoro-non-aligned-allocation-function]","clang/test/SemaCXX/coroutine-alloc-4.cpp:18:11: warning: under -fcoro-aligned-allocation, the non-aligned allocation function for the promise type \'f\' has higher precedence than the global aligned allocation function [-Wcoro-non-aligned-allocation-function]"} | ||
Line 659: | Line 659: | ||
[h]=q, | [h]=q, | ||
[i]={"3c12dd7675cd",1312996590,"objective-c: Using existing infrastructure for finding ","objective-c: Using existing infrastructure for finding "}, | [i]={"3c12dd7675cd",1312996590,"objective-c: Using existing infrastructure for finding ","objective-c: Using existing infrastructure for finding "}, | ||
[j]={{P,2492,"static bool CheckMethodOverrideParam(Sema &S, ObjCMethodDecl *MethodImpl, ObjCMethodDecl *MethodDecl, ParmVarDecl *ImplVar, ParmVarDecl *IfaceVar, bool IsProtocolMethodDecl, bool IsOverridingMode, bool Warn) {\n // Mismatches between ObjC pointers go into a different warning\n // category, and sometimes they\'re even completely explicitly allowed..\n if (const ObjCObjectPointerType *ImplPtrTy = ImplTy->getAs<ObjCObjectPointerType>()) {\n if (const ObjCObjectPointerType *IfacePtrTy = IfaceTy->getAs<ObjCObjectPointerType>()) {\n DiagID = IsOverridingMode ? diag::warn_non_contravariant_overriding_param_types : diag::warn_non_contravariant_param_types;"}} | [j]={{P,2492,"static bool CheckMethodOverrideParam(Sema &S, ObjCMethodDecl *MethodImpl, ObjCMethodDecl *MethodDecl, ParmVarDecl *ImplVar, ParmVarDecl *IfaceVar, bool IsProtocolMethodDecl, bool IsOverridingMode, bool Warn) {\n // ...\n // Mismatches between ObjC pointers go into a different warning\n // category, and sometimes they\'re even completely explicitly allowed..\n if (const ObjCObjectPointerType *ImplPtrTy = ImplTy->getAs<ObjCObjectPointerType>()) {\n if (const ObjCObjectPointerType *IfacePtrTy = IfaceTy->getAs<ObjCObjectPointerType>()) {\n // ...\n DiagID = IsOverridingMode ? diag::warn_non_contravariant_overriding_param_types : diag::warn_non_contravariant_param_types;"}} | ||
}, | }, | ||
["warn_non_contravariant_param_types"]={ | ["warn_non_contravariant_param_types"]={ | ||
Line 674: | Line 674: | ||
[h]=q, | [h]=q, | ||
[i]={"071df46743b9",1288233278,"Implement the newest status quo for method override checking. The idea now","Implement the newest status quo for method override checking. The idea now"}, | [i]={"071df46743b9",1288233278,"Implement the newest status quo for method override checking. The idea now","Implement the newest status quo for method override checking. The idea now"}, | ||
[j]={{P,2493,"static bool CheckMethodOverrideParam(Sema &S, ObjCMethodDecl *MethodImpl, ObjCMethodDecl *MethodDecl, ParmVarDecl *ImplVar, ParmVarDecl *IfaceVar, bool IsProtocolMethodDecl, bool IsOverridingMode, bool Warn) {\n // Mismatches between ObjC pointers go into a different warning\n // category, and sometimes they\'re even completely explicitly allowed..\n if (const ObjCObjectPointerType *ImplPtrTy = ImplTy->getAs<ObjCObjectPointerType>()) {\n if (const ObjCObjectPointerType *IfacePtrTy = IfaceTy->getAs<ObjCObjectPointerType>()) {\n DiagID = IsOverridingMode ? diag::warn_non_contravariant_overriding_param_types : diag::warn_non_contravariant_param_types;"}}, | [j]={{P,2493,"static bool CheckMethodOverrideParam(Sema &S, ObjCMethodDecl *MethodImpl, ObjCMethodDecl *MethodDecl, ParmVarDecl *ImplVar, ParmVarDecl *IfaceVar, bool IsProtocolMethodDecl, bool IsOverridingMode, bool Warn) {\n // ...\n // Mismatches between ObjC pointers go into a different warning\n // category, and sometimes they\'re even completely explicitly allowed..\n if (const ObjCObjectPointerType *ImplPtrTy = ImplTy->getAs<ObjCObjectPointerType>()) {\n if (const ObjCObjectPointerType *IfacePtrTy = IfaceTy->getAs<ObjCObjectPointerType>()) {\n // ...\n DiagID = IsOverridingMode ? diag::warn_non_contravariant_overriding_param_types : diag::warn_non_contravariant_param_types;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/method-def-1.m"]={"clang/test/SemaObjC/method-def-1.m:37:3: warning: conflicting parameter types in implementation of \'myMethod1:\': \'id<proto>\' vs \'id<NSObject>\' [-Wmethod-signatures]"} | ["clang/test/SemaObjC/method-def-1.m"]={"clang/test/SemaObjC/method-def-1.m:37:3: warning: conflicting parameter types in implementation of \'myMethod1:\': \'id<proto>\' vs \'id<NSObject>\' [-Wmethod-signatures]"} | ||
Line 692: | Line 692: | ||
[h]=q, | [h]=q, | ||
[i]={"3c12dd7675cd",1312996590,"objective-c: Using existing infrastructure for finding ","objective-c: Using existing infrastructure for finding "}, | [i]={"3c12dd7675cd",1312996590,"objective-c: Using existing infrastructure for finding ","objective-c: Using existing infrastructure for finding "}, | ||
[j]={{P,2410,"static bool CheckMethodOverrideReturn(Sema &S, ObjCMethodDecl *MethodImpl, ObjCMethodDecl *MethodDecl, bool IsProtocolMethodDecl, bool IsOverridingMode, bool Warn) {\n // Mismatches between ObjC pointers go into a different warning\n // category, and sometimes they\'re even completely explicitly allowed.\n if (const ObjCObjectPointerType *ImplPtrTy = MethodImpl->getReturnType()->getAs<ObjCObjectPointerType>()) {\n if (const ObjCObjectPointerType *IfacePtrTy = MethodDecl->getReturnType()->getAs<ObjCObjectPointerType>()) {\n DiagID = IsOverridingMode ? diag::warn_non_covariant_overriding_ret_types : diag::warn_non_covariant_ret_types;"}} | [j]={{P,2410,"static bool CheckMethodOverrideReturn(Sema &S, ObjCMethodDecl *MethodImpl, ObjCMethodDecl *MethodDecl, bool IsProtocolMethodDecl, bool IsOverridingMode, bool Warn) {\n // ...\n // Mismatches between ObjC pointers go into a different warning\n // category, and sometimes they\'re even completely explicitly allowed.\n if (const ObjCObjectPointerType *ImplPtrTy = MethodImpl->getReturnType()->getAs<ObjCObjectPointerType>()) {\n if (const ObjCObjectPointerType *IfacePtrTy = MethodDecl->getReturnType()->getAs<ObjCObjectPointerType>()) {\n // ...\n DiagID = IsOverridingMode ? diag::warn_non_covariant_overriding_ret_types : diag::warn_non_covariant_ret_types;"}} | ||
}, | }, | ||
["warn_non_covariant_ret_types"]={ | ["warn_non_covariant_ret_types"]={ | ||
Line 707: | Line 707: | ||
[h]=q, | [h]=q, | ||
[i]={"071df46743b9",1288233278,"Implement the newest status quo for method override checking. The idea now","Implement the newest status quo for method override checking. The idea now"}, | [i]={"071df46743b9",1288233278,"Implement the newest status quo for method override checking. The idea now","Implement the newest status quo for method override checking. The idea now"}, | ||
[j]={{P,2411,"static bool CheckMethodOverrideReturn(Sema &S, ObjCMethodDecl *MethodImpl, ObjCMethodDecl *MethodDecl, bool IsProtocolMethodDecl, bool IsOverridingMode, bool Warn) {\n // Mismatches between ObjC pointers go into a different warning\n // category, and sometimes they\'re even completely explicitly allowed.\n if (const ObjCObjectPointerType *ImplPtrTy = MethodImpl->getReturnType()->getAs<ObjCObjectPointerType>()) {\n if (const ObjCObjectPointerType *IfacePtrTy = MethodDecl->getReturnType()->getAs<ObjCObjectPointerType>()) {\n DiagID = IsOverridingMode ? diag::warn_non_covariant_overriding_ret_types : diag::warn_non_covariant_ret_types;"}}, | [j]={{P,2411,"static bool CheckMethodOverrideReturn(Sema &S, ObjCMethodDecl *MethodImpl, ObjCMethodDecl *MethodDecl, bool IsProtocolMethodDecl, bool IsOverridingMode, bool Warn) {\n // ...\n // Mismatches between ObjC pointers go into a different warning\n // category, and sometimes they\'re even completely explicitly allowed.\n if (const ObjCObjectPointerType *ImplPtrTy = MethodImpl->getReturnType()->getAs<ObjCObjectPointerType>()) {\n if (const ObjCObjectPointerType *IfacePtrTy = MethodDecl->getReturnType()->getAs<ObjCObjectPointerType>()) {\n // ...\n DiagID = IsOverridingMode ? diag::warn_non_covariant_overriding_ret_types : diag::warn_non_covariant_ret_types;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/method-typecheck-3.m"]={"clang/test/SemaObjC/method-typecheck-3.m:17:1: warning: conflicting return type in implementation of \'a\': \'B *\' vs \'A *\' [-Wmethod-signatures]"} | ["clang/test/SemaObjC/method-typecheck-3.m"]={"clang/test/SemaObjC/method-typecheck-3.m:17:1: warning: conflicting return type in implementation of \'a\': \'B *\' vs \'A *\' [-Wmethod-signatures]"} | ||
Line 724: | Line 724: | ||
[h]=Zb, | [h]=Zb, | ||
[i]={"1c7c8f763769",1344447211,"Implement warning for integral null pointer constants other than the literal 0.","Implement warning for integral null pointer constants other than the literal 0."}, | [i]={"1c7c8f763769",1344447211,"Implement warning for integral null pointer constants other than the literal 0.","Implement warning for integral null pointer constants other than the literal 0."}, | ||
[j]={{"clang/lib/Sema/SemaOverload.cpp",3131,"/// CheckPointerConversion - Check the pointer conversion from the\n/// expression From to the type ToType. This routine checks for\n/// ambiguous or inaccessible derived-to-base pointer\n/// conversions for which IsPointerConversion has already returned\n/// true. It returns true and produces a diagnostic if there was an\n/// error, or returns false otherwise.\nbool Sema::CheckPointerConversion(Expr *From, QualType ToType, CastKind &Kind, CXXCastPath &BasePath, bool IgnoreBaseAccess, bool Diagnose) {\n if (Diagnose && !IsCStyleOrFunctionalCast && !FromType->isAnyPointerType() && From->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull) == Expr::NPCK_ZeroExpression) {\n if (Context.hasSameUnqualifiedType(From->getType(), Context.BoolTy))\n else if (!isUnevaluatedContext())\n Diag(From->getExprLoc(), diag::warn_non_literal_null_pointer) << ToType << From->getSourceRange();"}}, | [j]={{"clang/lib/Sema/SemaOverload.cpp",3131,"/// CheckPointerConversion - Check the pointer conversion from the\n/// expression From to the type ToType. This routine checks for\n/// ambiguous or inaccessible derived-to-base pointer\n/// conversions for which IsPointerConversion has already returned\n/// true. It returns true and produces a diagnostic if there was an\n/// error, or returns false otherwise.\nbool Sema::CheckPointerConversion(Expr *From, QualType ToType, CastKind &Kind, CXXCastPath &BasePath, bool IgnoreBaseAccess, bool Diagnose) {\n // ...\n if (Diagnose && !IsCStyleOrFunctionalCast && !FromType->isAnyPointerType() && From->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull) == Expr::NPCK_ZeroExpression) {\n if (Context.hasSameUnqualifiedType(From->getType(), Context.BoolTy))\n // ...\n else if (!isUnevaluatedContext())\n Diag(From->getExprLoc(), diag::warn_non_literal_null_pointer) << ToType << From->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-null.c"]={"clang/test/Sema/warn-null.c:7:10: warning: expression which evaluates to zero treated as a null pointer constant of type \'int *\' [-Wnon-literal-null-conversion]","clang/test/Sema/warn-null.c:8:10: warning: expression which evaluates to zero treated as a null pointer constant of type \'int *\' [-Wnon-literal-null-conversion]","clang/test/Sema/warn-null.c:11:7: warning: expression which evaluates to zero treated as a null pointer constant of type \'int *\' [-Wnon-literal-null-conversion]","clang/test/Sema/warn-null.c:12:9: warning: expression which evaluates to zero treated as a null pointer constant of type \'int *\' [-Wnon-literal-null-conversion]","clang/test/Sema/warn-null.c:13:7: warning: expression which evaluates to zero treated as a null pointer constant of type \'int *\' [-Wnon-literal-null-conversion]"} | ["clang/test/Sema/warn-null.c"]={"clang/test/Sema/warn-null.c:7:10: warning: expression which evaluates to zero treated as a null pointer constant of type \'int *\' [-Wnon-literal-null-conversion]","clang/test/Sema/warn-null.c:8:10: warning: expression which evaluates to zero treated as a null pointer constant of type \'int *\' [-Wnon-literal-null-conversion]","clang/test/Sema/warn-null.c:11:7: warning: expression which evaluates to zero treated as a null pointer constant of type \'int *\' [-Wnon-literal-null-conversion]","clang/test/Sema/warn-null.c:12:9: warning: expression which evaluates to zero treated as a null pointer constant of type \'int *\' [-Wnon-literal-null-conversion]","clang/test/Sema/warn-null.c:13:7: warning: expression which evaluates to zero treated as a null pointer constant of type \'int *\' [-Wnon-literal-null-conversion]"} | ||
Line 742: | Line 742: | ||
[h]=D, | [h]=D, | ||
[i]={"71e1a64f916e",1399326253,"Add -Wnon-modular-include* options","Add -Wnon-modular-include* options"}, | [i]={"71e1a64f916e",1399326253,"Add -Wnon-modular-include* options","Add -Wnon-modular-include* options"}, | ||
[j]={{"clang/lib/Lex/ModuleMap.cpp",546,"void ModuleMap::diagnoseHeaderInclusion(Module *RequestingModule, bool RequestingModuleIsModuleInterface, SourceLocation FilenameLoc, StringRef Filename, FileEntryRef File) {\n if (RequestingModule && LangOpts.ModulesStrictDeclUse) {\n } else if (RequestingModule && RequestingModuleIsModuleInterface && LangOpts.isCompilingModule()) {\n diag::kind DiagID = RequestingModule->getTopLevelModule()->IsFramework ? diag::warn_non_modular_include_in_framework_module : diag::warn_non_modular_include_in_module;"}} | [j]={{"clang/lib/Lex/ModuleMap.cpp",546,"void ModuleMap::diagnoseHeaderInclusion(Module *RequestingModule, bool RequestingModuleIsModuleInterface, SourceLocation FilenameLoc, StringRef Filename, FileEntryRef File) {\n // ...\n if (RequestingModule && LangOpts.ModulesStrictDeclUse) {\n // ...\n } else if (RequestingModule && RequestingModuleIsModuleInterface && LangOpts.isCompilingModule()) {\n // ...\n diag::kind DiagID = RequestingModule->getTopLevelModule()->IsFramework ? diag::warn_non_modular_include_in_framework_module : diag::warn_non_modular_include_in_module;"}} | ||
}, | }, | ||
["warn_non_modular_include_in_module"]={ | ["warn_non_modular_include_in_module"]={ | ||
Line 757: | Line 757: | ||
[h]=D, | [h]=D, | ||
[i]={"71e1a64f916e",1399326253,"Add -Wnon-modular-include* options","Add -Wnon-modular-include* options"}, | [i]={"71e1a64f916e",1399326253,"Add -Wnon-modular-include* options","Add -Wnon-modular-include* options"}, | ||
[j]={{"clang/lib/Lex/ModuleMap.cpp",547,"void ModuleMap::diagnoseHeaderInclusion(Module *RequestingModule, bool RequestingModuleIsModuleInterface, SourceLocation FilenameLoc, StringRef Filename, FileEntryRef File) {\n if (RequestingModule && LangOpts.ModulesStrictDeclUse) {\n } else if (RequestingModule && RequestingModuleIsModuleInterface && LangOpts.isCompilingModule()) {\n diag::kind DiagID = RequestingModule->getTopLevelModule()->IsFramework ? diag::warn_non_modular_include_in_framework_module : diag::warn_non_modular_include_in_module;"}}, | [j]={{"clang/lib/Lex/ModuleMap.cpp",547,"void ModuleMap::diagnoseHeaderInclusion(Module *RequestingModule, bool RequestingModuleIsModuleInterface, SourceLocation FilenameLoc, StringRef Filename, FileEntryRef File) {\n // ...\n if (RequestingModule && LangOpts.ModulesStrictDeclUse) {\n // ...\n } else if (RequestingModule && RequestingModuleIsModuleInterface && LangOpts.isCompilingModule()) {\n // ...\n diag::kind DiagID = RequestingModule->getTopLevelModule()->IsFramework ? diag::warn_non_modular_include_in_framework_module : diag::warn_non_modular_include_in_module;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Modules/incomplete-module.m"]={"clang/test/Modules/Inputs/incomplete_mod.h:1:10: warning: include of non-modular header inside module \'incomplete_mod\': \'clang/test/Modules/Inputs/incomplete_mod_missing.h\' [-Wnon-modular-include-in-module]"} | ["clang/test/Modules/incomplete-module.m"]={"clang/test/Modules/Inputs/incomplete_mod.h:1:10: warning: include of non-modular header inside module \'incomplete_mod\': \'clang/test/Modules/Inputs/incomplete_mod_missing.h\' [-Wnon-modular-include-in-module]"} | ||
Line 774: | Line 774: | ||
[h]=q, | [h]=q, | ||
[i]={"c7b0bdffe75c",1340240915,"If an object (such as a std::string) with an appropriate c_str() member function","If an object (such as a std::string) with an appropriate c_str() member function"}, | [i]={"c7b0bdffe75c",1340240915,"If an object (such as a std::string) with an appropriate c_str() member function","If an object (such as a std::string) with an appropriate c_str() member function"}, | ||
[j]={{x,11385,"bool CheckPrintfHandler::checkFormatExpr(const analyze_printf::PrintfSpecifier &FS, const char *StartSpecifier, unsigned SpecifierLen, const Expr *E) {\n if (Success) {\n } else {\n case Sema::VAK_MSVCUndefined:\n if (CallType == Sema::VariadicDoesNotApply) {\n } else {\n EmitFormatDiagnostic(S.PDiag(diag::warn_non_pod_vararg_with_format_string) << S.getLangOpts().CPlusPlus11 << ExprTy << CallType << AT.getRepresentativeTypeName(S.Context) << CSR << E->getSourceRange(), E->getBeginLoc(), /*IsStringLocation*/ false, CSR);"}}, | [j]={{x,11385,"bool CheckPrintfHandler::checkFormatExpr(const analyze_printf::PrintfSpecifier &FS, const char *StartSpecifier, unsigned SpecifierLen, const Expr *E) {\n // ...\n if (Success) {\n // ...\n } else {\n // ...\n case Sema::VAK_Undefined:\n case Sema::VAK_MSVCUndefined:\n if (CallType == Sema::VariadicDoesNotApply) {\n // ...\n } else {\n EmitFormatDiagnostic(S.PDiag(diag::warn_non_pod_vararg_with_format_string) << S.getLangOpts().CPlusPlus11 << ExprTy << CallType << AT.getRepresentativeTypeName(S.Context) << CSR << E->getSourceRange(), E->getBeginLoc(), /*IsStringLocation*/ false, CSR);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/vararg-class.cpp"]={"clang/test/SemaCXX/vararg-class.cpp:35:11: error: cannot pass non-trivial object of type \'B\' to variadic function; expected type from format string was \'char *\' [-Wnon-pod-varargs]"} | ["clang/test/SemaCXX/vararg-class.cpp"]={"clang/test/SemaCXX/vararg-class.cpp:35:11: error: cannot pass non-trivial object of type \'B\' to variadic function; expected type from format string was \'char *\' [-Wnon-pod-varargs]"} | ||
Line 791: | Line 791: | ||
[h]=q, | [h]=q, | ||
[i]={pd,1620530452,Rb,Rb}, | [i]={pd,1620530452,Rb,Rb}, | ||
[j]={{H,4166,"/// 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 // C: Function types need to be compatible, not identical. This handles\n // duplicate function decls like \"void f(int); void f(enum X);\" properly.\n if (!getLangOpts().CPlusPlus) {\n // If we are merging two functions where only one of them has a prototype,\n // we may have enough information to decide to issue a diagnostic that the\n // function without a protoype will change behavior in C2x. This handles\n // cases like:\n // void i(); void i(int j);\n // void i(int j); void i();\n // void i(); void i(int j) {}\n // See ActOnFinishFunctionBody() for other cases of the behavior change\n // diagnostic. See GetFullTypeForDeclarator() for handling of a function\n // type without a prototype.\n if (New->hasWrittenPrototype() != Old->hasWrittenPrototype() && !New->isImplicit() && !Old->isImplicit()) {\n if (WithProto->getNumParams() != 0) {\n if (WithoutProto->getBuiltinID() == 0 && !WithoutProto->isImplicit()) {\n Diag(WithoutProto->getLocation(), diag::warn_non_prototype_changes_behavior) << IsWithoutProtoADef << (WithoutProto->getNumParams() ? 0 : 1) << (WithoutProto == Old) << IsWithProtoADef;"},{H,15766,"Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation) {\n {\n if (FD) {\n // If the function being defined does not have a prototype, then we may\n // need to diagnose it as changing behavior in C2x because we now know\n // whether the function accepts arguments or not. This only handles the\n // case where the definition has no prototype but does have parameters\n // and either there is no previous potential prototype, or the previous\n // potential prototype also has no actual prototype. This handles cases\n // like:\n // void f(); void f(a) int a; {}\n // void g(a) int a; {}\n // See MergeFunctionDecl() for other cases of the behavior change\n // diagnostic. See GetFullTypeForDeclarator() for handling of a function\n // type without a prototype.\n if (!FD->hasWrittenPrototype() && FD->getNumParams() != 0 && (!PossiblePrototype || (!PossiblePrototype->hasWrittenPrototype() && !PossiblePrototype->isImplicit()))) {\n Diag(FD->getLocation(), diag::warn_non_prototype_changes_behavior) << /*definition*/ 1 << /* not supported in C2x */ 0;"},{H,15776,"Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation) {\n {\n if (FD) {\n // If the function being defined does not have a prototype, then we may\n // need to diagnose it as changing behavior in C2x because we now know\n // whether the function accepts arguments or not. This only handles the\n // case where the definition has no prototype but does have parameters\n // and either there is no previous potential prototype, or the previous\n // potential prototype also has no actual prototype. This handles cases\n // like:\n // void f(); void f(a) int a; {}\n // void g(a) int a; {}\n // See MergeFunctionDecl() for other cases of the behavior change\n // diagnostic. See GetFullTypeForDeclarator() for handling of a function\n // type without a prototype.\n if (!FD->hasWrittenPrototype() && FD->getNumParams() != 0 && (!PossiblePrototype || (!PossiblePrototype->hasWrittenPrototype() && !PossiblePrototype->isImplicit()))) {\n // If we have a possible prototype for the function which is a user-\n // visible declaration, we already tested that it has no prototype.\n // This will change behavior in C2x. This gets a warning rather than a\n // note because it\'s the same behavior-changing problem as with the\n // definition.\n if (PossiblePrototype)\n Diag(PossiblePrototype->getLocation(), diag::warn_non_prototype_changes_behavior) << /*declaration*/ 0 << /* conflicting */ 1 << /*subsequent*/ 1 << /*definition*/ 1;"}}, | [j]={{H,4166,"/// 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 // ...\n // C: Function types need to be compatible, not identical. This handles\n // duplicate function decls like \"void f(int); void f(enum X);\" properly.\n if (!getLangOpts().CPlusPlus) {\n // ...\n // If we are merging two functions where only one of them has a prototype,\n // we may have enough information to decide to issue a diagnostic that the\n // function without a protoype will change behavior in C2x. This handles\n // cases like:\n // void i(); void i(int j);\n // void i(int j); void i();\n // void i(); void i(int j) {}\n // See ActOnFinishFunctionBody() for other cases of the behavior change\n // diagnostic. See GetFullTypeForDeclarator() for handling of a function\n // type without a prototype.\n if (New->hasWrittenPrototype() != Old->hasWrittenPrototype() && !New->isImplicit() && !Old->isImplicit()) {\n // ...\n if (WithProto->getNumParams() != 0) {\n if (WithoutProto->getBuiltinID() == 0 && !WithoutProto->isImplicit()) {\n // ...\n Diag(WithoutProto->getLocation(), diag::warn_non_prototype_changes_behavior) << IsWithoutProtoADef << (WithoutProto->getNumParams() ? 0 : 1) << (WithoutProto == Old) << IsWithProtoADef;"},{H,15766,"Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation) {\n // ...\n {\n // ...\n if (FD) {\n // ...\n // If the function being defined does not have a prototype, then we may\n // need to diagnose it as changing behavior in C2x because we now know\n // whether the function accepts arguments or not. This only handles the\n // case where the definition has no prototype but does have parameters\n // and either there is no previous potential prototype, or the previous\n // potential prototype also has no actual prototype. This handles cases\n // like:\n // void f(); void f(a) int a; {}\n // void g(a) int a; {}\n // See MergeFunctionDecl() for other cases of the behavior change\n // diagnostic. See GetFullTypeForDeclarator() for handling of a function\n // type without a prototype.\n if (!FD->hasWrittenPrototype() && FD->getNumParams() != 0 && (!PossiblePrototype || (!PossiblePrototype->hasWrittenPrototype() && !PossiblePrototype->isImplicit()))) {\n // ...\n Diag(FD->getLocation(), diag::warn_non_prototype_changes_behavior) << /*definition*/ 1 << /* not supported in C2x */ 0;"},{H,15776,"Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation) {\n // ...\n {\n // ...\n if (FD) {\n // ...\n // If the function being defined does not have a prototype, then we may\n // need to diagnose it as changing behavior in C2x because we now know\n // whether the function accepts arguments or not. This only handles the\n // case where the definition has no prototype but does have parameters\n // and either there is no previous potential prototype, or the previous\n // potential prototype also has no actual prototype. This handles cases\n // like:\n // void f(); void f(a) int a; {}\n // void g(a) int a; {}\n // See MergeFunctionDecl() for other cases of the behavior change\n // diagnostic. See GetFullTypeForDeclarator() for handling of a function\n // type without a prototype.\n if (!FD->hasWrittenPrototype() && FD->getNumParams() != 0 && (!PossiblePrototype || (!PossiblePrototype->hasWrittenPrototype() && !PossiblePrototype->isImplicit()))) {\n // ...\n // If we have a possible prototype for the function which is a user-\n // visible declaration, we already tested that it has no prototype.\n // This will change behavior in C2x. This gets a warning rather than a\n // note because it\'s the same behavior-changing problem as with the\n // definition.\n if (PossiblePrototype)\n Diag(PossiblePrototype->getLocation(), diag::warn_non_prototype_changes_behavior) << /*declaration*/ 0 << /* conflicting */ 1 << /*subsequent*/ 1 << /*definition*/ 1;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/declarators.c"]={"clang/test/Parser/declarators.c:30:6: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]","clang/test/Parser/declarators.c:34:6: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]","clang/test/Parser/declarators.c:101:6: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]","clang/test/Parser/declarators.c:103:6: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]","clang/test/Parser/declarators.c:105:6: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]"} | ["clang/test/Parser/declarators.c"]={"clang/test/Parser/declarators.c:30:6: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]","clang/test/Parser/declarators.c:34:6: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]","clang/test/Parser/declarators.c:101:6: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]","clang/test/Parser/declarators.c:103:6: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]","clang/test/Parser/declarators.c:105:6: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]"} | ||
Line 809: | Line 809: | ||
[h]=q, | [h]=q, | ||
[i]={"7f3986dc64fd",1296457500,"Warn if the class has virtual methods but non-virtual destructor. Addresses rdar://8756445.","Warn if the class has virtual methods but non-virtual destructor. Addresses rdar://8756445."}, | [i]={"7f3986dc64fd",1296457500,"Warn if the class has virtual methods but non-virtual destructor. Addresses rdar://8756445.","Warn if the class has virtual methods but non-virtual destructor. Addresses rdar://8756445."}, | ||
[j]={{db,6969,"/// 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 // Warn if the class has virtual methods but non-virtual public destructor.\n if (Record->isPolymorphic() && !Record->isDependentType()) {\n if ((!dtor || (!dtor->isVirtual() && dtor->getAccess() == AS_public)) && !Record->hasAttr<FinalAttr>())\n Diag(dtor ? dtor->getLocation() : Record->getLocation(), diag::warn_non_virtual_dtor) << Context.getRecordType(Record);"}} | [j]={{db,6969,"/// 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 // ...\n // Warn if the class has virtual methods but non-virtual public destructor.\n if (Record->isPolymorphic() && !Record->isDependentType()) {\n // ...\n if ((!dtor || (!dtor->isVirtual() && dtor->getAccess() == AS_public)) && !Record->hasAttr<FinalAttr>())\n Diag(dtor ? dtor->getLocation() : Record->getLocation(), diag::warn_non_virtual_dtor) << Context.getRecordType(Record);"}} | ||
}, | }, | ||
["warn_nonnull_expr_compare"]={ | ["warn_nonnull_expr_compare"]={ | ||
Line 823: | Line 823: | ||
[h]=q, | [h]=q, | ||
[i]={"850269a47eed",1449612120,"[Sema] Add warning when comparing nonnull and null","[Sema] Add warning when comparing nonnull and null"}, | [i]={"850269a47eed",1449612120,"[Sema] Add warning when comparing nonnull and null","[Sema] Add warning when comparing nonnull and null"}, | ||
[j]={{x,15489,"/// Diagnose pointers that are always non-null.\n/// \\param E the expression containing the pointer\n/// \\param NullKind NPCK_NotNull if E is a cast to bool, otherwise, E is\n/// compared to a null pointer\n/// \\param IsEqual True when the comparison is equal to a null pointer\n/// \\param Range Extra SourceRange to highlight in the diagnostic\nvoid Sema::DiagnoseAlwaysNonNullPointer(Expr *E, Expr::NullPointerConstantKind NullKind, bool IsEqual, SourceRange Range) {\n auto ComplainAboutNonnullParamOrCall = [&](const Attr *NonnullAttr) {\n unsigned DiagID = IsCompare ? diag::warn_nonnull_expr_compare : diag::warn_cast_nonnull_to_bool;"}}, | [j]={{x,15489,"/// Diagnose pointers that are always non-null.\n/// \\param E the expression containing the pointer\n/// \\param NullKind NPCK_NotNull if E is a cast to bool, otherwise, E is\n/// compared to a null pointer\n/// \\param IsEqual True when the comparison is equal to a null pointer\n/// \\param Range Extra SourceRange to highlight in the diagnostic\nvoid Sema::DiagnoseAlwaysNonNullPointer(Expr *E, Expr::NullPointerConstantKind NullKind, bool IsEqual, SourceRange Range) {\n // ...\n auto ComplainAboutNonnullParamOrCall = [&](const Attr *NonnullAttr) {\n // ...\n unsigned DiagID = IsCompare ? diag::warn_nonnull_expr_compare : diag::warn_cast_nonnull_to_bool;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/nonnull.c"]={"clang/test/Sema/nonnull.c:96:8: warning: comparison of nonnull parameter \'pointer\' equal to a null pointer is \'false\' on first encounter [-Wtautological-pointer-compare]","clang/test/Sema/nonnull.c:108:8: warning: comparison of nonnull parameter \'pv\' equal to a null pointer is \'false\' on first encounter [-Wtautological-pointer-compare]","clang/test/Sema/nonnull.c:114:8: warning: comparison of nonnull parameter \'pointer\' equal to a null pointer is \'false\' on first encounter [-Wtautological-pointer-compare]","clang/test/Sema/nonnull.c:126:8: warning: comparison of nonnull parameter \'pv\' equal to a null pointer is \'false\' on first encounter [-Wtautological-pointer-compare]","clang/test/Sema/nonnull.c:164:7: warning: comparison of nonnull function call \'returns_nonnull_whee()\' equal to a null pointer is \'false\' on first encounter [-Wtautological-pointer-compare]","clang/test/Sema/nonnull.c:166:7: warning: comparison of nonnull function call \'returns_nonnull_whee()\' not equal to a null pointer is \'true\' on first encounter [-Wtautological-pointer-compare]"} | ["clang/test/Sema/nonnull.c"]={"clang/test/Sema/nonnull.c:96:8: warning: comparison of nonnull parameter \'pointer\' equal to a null pointer is \'false\' on first encounter [-Wtautological-pointer-compare]","clang/test/Sema/nonnull.c:108:8: warning: comparison of nonnull parameter \'pv\' equal to a null pointer is \'false\' on first encounter [-Wtautological-pointer-compare]","clang/test/Sema/nonnull.c:114:8: warning: comparison of nonnull parameter \'pointer\' equal to a null pointer is \'false\' on first encounter [-Wtautological-pointer-compare]","clang/test/Sema/nonnull.c:126:8: warning: comparison of nonnull parameter \'pv\' equal to a null pointer is \'false\' on first encounter [-Wtautological-pointer-compare]","clang/test/Sema/nonnull.c:164:7: warning: comparison of nonnull function call \'returns_nonnull_whee()\' equal to a null pointer is \'false\' on first encounter [-Wtautological-pointer-compare]","clang/test/Sema/nonnull.c:166:7: warning: comparison of nonnull function call \'returns_nonnull_whee()\' not equal to a null pointer is \'true\' on first encounter [-Wtautological-pointer-compare]"} | ||
Line 840: | Line 840: | ||
[h]=q, | [h]=q, | ||
[i]={"6e127a6d8642",1243798333,"Downgrade an error about \"return in a no-return function\" from being ","Downgrade an error about \"return in a no-return function\" from being "}, | [i]={"6e127a6d8642",1243798333,"Downgrade an error about \"return in a no-return function\" from being ","Downgrade an error about \"return in a no-return function\" from being "}, | ||
[j]={{E,631,"struct CheckFallThroughDiagnostics {\n bool checkDiagnostics(DiagnosticsEngine &D, bool ReturnsVoid, bool HasNoReturn) const {\n if (funMode == Function) {\n return (ReturnsVoid || D.isIgnored(diag::warn_maybe_falloff_nonvoid_function, FuncLoc)) && (!HasNoReturn || D.isIgnored(diag::warn_noreturn_function_has_return_expr, FuncLoc)) && (!ReturnsVoid || D.isIgnored(diag::warn_suggest_noreturn_block, FuncLoc));"},{U,3962,"StmtResult Sema::BuildReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp, bool AllowRecovery) {\n if (const FunctionDecl *FD = getCurFunctionDecl()) {\n if (FD->isNoReturn())\n Diag(ReturnLoc, diag::warn_noreturn_function_has_return_expr) << FD;"}}, | [j]={{E,631,"struct CheckFallThroughDiagnostics {\n // ...\n bool checkDiagnostics(DiagnosticsEngine &D, bool ReturnsVoid, bool HasNoReturn) const {\n if (funMode == Function) {\n return (ReturnsVoid || D.isIgnored(diag::warn_maybe_falloff_nonvoid_function, FuncLoc)) && (!HasNoReturn || D.isIgnored(diag::warn_noreturn_function_has_return_expr, FuncLoc)) && (!ReturnsVoid || D.isIgnored(diag::warn_suggest_noreturn_block, FuncLoc));"},{U,3962,"StmtResult Sema::BuildReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp, bool AllowRecovery) {\n // ...\n if (const FunctionDecl *FD = getCurFunctionDecl()) {\n // ...\n if (FD->isNoReturn())\n Diag(ReturnLoc, diag::warn_noreturn_function_has_return_expr) << FD;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-noreturn.c"]={"clang/test/Sema/attr-noreturn.c:20:3: warning: function \'f3\' declared \'noreturn\' should not return [-Winvalid-noreturn]","clang/test/Sema/attr-noreturn.c:27:3: error: function \'f4\' declared \'noreturn\' should not return [-Werror,-Winvalid-noreturn]"} | ["clang/test/Sema/attr-noreturn.c"]={"clang/test/Sema/attr-noreturn.c:20:3: warning: function \'f3\' declared \'noreturn\' should not return [-Winvalid-noreturn]","clang/test/Sema/attr-noreturn.c:27:3: error: function \'f4\' declared \'noreturn\' should not return [-Werror,-Winvalid-noreturn]"} | ||
Line 858: | Line 858: | ||
[h]="Documentation Issue", | [h]="Documentation Issue", | ||
[i]={"052f60d3846f",1340380975,"Add a warning about almost-Doxygen trailing comments: //< and /*< ... */","Add a warning about almost-Doxygen trailing comments: //< and /*< ... */"}, | [i]={"052f60d3846f",1340380975,"Add a warning about almost-Doxygen trailing comments: //< and /*< ... */","Add a warning about almost-Doxygen trailing comments: //< and /*< ... */"}, | ||
[j]={{Z,2421,"void Sema::ActOnComment(SourceRange Comment) {\n if (RC.isAlmostTrailingComment() || RC.hasUnsupportedSplice(SourceMgr)) {\n Diag(Comment.getBegin(), diag::warn_not_a_doxygen_trailing_member_comment) << FixItHint::CreateReplacement(MagicMarkerRange, MagicMarkerText);"}}, | [j]={{Z,2421,"void Sema::ActOnComment(SourceRange Comment) {\n // ...\n if (RC.isAlmostTrailingComment() || RC.hasUnsupportedSplice(SourceMgr)) {\n // ...\n Diag(Comment.getBegin(), diag::warn_not_a_doxygen_trailing_member_comment) << FixItHint::CreateReplacement(MagicMarkerRange, MagicMarkerText);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-documentation-almost-trailing.c"]={"clang/test/Sema/warn-documentation-almost-trailing.c:8:10: warning: not a Doxygen trailing comment [-Wdocumentation]","clang/test/Sema/warn-documentation-almost-trailing.c:9:10: warning: not a Doxygen trailing comment [-Wdocumentation]"} | ["clang/test/Sema/warn-documentation-almost-trailing.c"]={"clang/test/Sema/warn-documentation-almost-trailing.c:8:10: warning: not a Doxygen trailing comment [-Wdocumentation]","clang/test/Sema/warn-documentation-almost-trailing.c:9:10: warning: not a Doxygen trailing comment [-Wdocumentation]"} | ||
Line 873: | Line 873: | ||
[h]=q, | [h]=q, | ||
[i]={Fc,1237025389,Fb,Fb}, | [i]={Fc,1237025389,Fb,Fb}, | ||
[j]={{A,14527,"// C99 6.5.16.1\nQualType Sema::CheckAssignmentOperands(Expr *LHSExpr, ExprResult &RHS, SourceLocation Loc, QualType CompoundType, BinaryOperatorKind Opc) {\n if (CompoundType.isNull()) {\n if (UnaryOperator *UO = dyn_cast<UnaryOperator>(RHSCheck)) {\n if ((UO->getOpcode() == UO_Plus || UO->getOpcode() == UO_Minus) && Loc.isFileID() && UO->getOperatorLoc().isFileID() &&\n Diag(Loc, diag::warn_not_compound_assign) << (UO->getOpcode() == UO_Plus ? \"+\" : \"-\") << SourceRange(UO->getOperatorLoc(), UO->getOperatorLoc());"}}, | [j]={{A,14527,"// C99 6.5.16.1\nQualType Sema::CheckAssignmentOperands(Expr *LHSExpr, ExprResult &RHS, SourceLocation Loc, QualType CompoundType, BinaryOperatorKind Opc) {\n // ...\n if (CompoundType.isNull()) {\n // ...\n if (UnaryOperator *UO = dyn_cast<UnaryOperator>(RHSCheck)) {\n if ((UO->getOpcode() == UO_Plus || UO->getOpcode() == UO_Minus) && Loc.isFileID() && UO->getOperatorLoc().isFileID() &&\n // ...\n Diag(Loc, diag::warn_not_compound_assign) << (UO->getOpcode() == UO_Plus ? \"+\" : \"-\") << SourceRange(UO->getOperatorLoc(), UO->getOperatorLoc());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/exprs.c"]={"clang/test/Sema/exprs.c:55:11: warning: use of unary operator that may be intended as compound assignment (+=)","clang/test/Sema/exprs.c:56:11: warning: use of unary operator that may be intended as compound assignment (-=)"} | ["clang/test/Sema/exprs.c"]={"clang/test/Sema/exprs.c:55:11: warning: use of unary operator that may be intended as compound assignment (+=)","clang/test/Sema/exprs.c:56:11: warning: use of unary operator that may be intended as compound assignment (-=)"} | ||
Line 890: | Line 890: | ||
[h]=q, | [h]=q, | ||
[i]={"9e87721d47fd",1242256850,"Look for and diagnose missing sentinel argument on message","Look for and diagnose missing sentinel argument on message"}, | [i]={"9e87721d47fd",1242256850,"Look for and diagnose missing sentinel argument on message","Look for and diagnose missing sentinel argument on message"}, | ||
[j]={{A,473,"/// DiagnoseSentinelCalls - This routine checks whether a call or\n/// message-send is to a declaration with the sentinel attribute, and\n/// if so, it checks that the requirements of the sentinel are\n/// satisfied.\nvoid Sema::DiagnoseSentinelCalls(NamedDecl *D, SourceLocation Loc, ArrayRef<Expr *> Args) {\n // If there aren\'t enough arguments for all the formal parameters,\n // the sentinel, and the args after the sentinel, complain.\n if (Args.size() < numFormalParams + numArgsAfterSentinel + 1) {\n Diag(Loc, diag::warn_not_enough_argument) << D->getDeclName();"}}, | [j]={{A,473,"/// DiagnoseSentinelCalls - This routine checks whether a call or\n/// message-send is to a declaration with the sentinel attribute, and\n/// if so, it checks that the requirements of the sentinel are\n/// satisfied.\nvoid Sema::DiagnoseSentinelCalls(NamedDecl *D, SourceLocation Loc, ArrayRef<Expr *> Args) {\n // ...\n // If there aren\'t enough arguments for all the formal parameters,\n // the sentinel, and the args after the sentinel, complain.\n if (Args.size() < numFormalParams + numArgsAfterSentinel + 1) {\n Diag(Loc, diag::warn_not_enough_argument) << D->getDeclName();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/method-sentinel-attr.m"]={"clang/test/SemaObjC/method-sentinel-attr.m:38:6: warning: not enough variable arguments in \'foo7:\' declaration to fit a sentinel [-Wsentinel]","clang/test/SemaObjC/method-sentinel-attr.m:41:6: warning: not enough variable arguments in \'foo12:\' declaration to fit a sentinel [-Wsentinel]"} | ["clang/test/SemaObjC/method-sentinel-attr.m"]={"clang/test/SemaObjC/method-sentinel-attr.m:38:6: warning: not enough variable arguments in \'foo7:\' declaration to fit a sentinel [-Wsentinel]","clang/test/SemaObjC/method-sentinel-attr.m:41:6: warning: not enough variable arguments in \'foo12:\' declaration to fit a sentinel [-Wsentinel]"} | ||
Line 907: | Line 907: | ||
[h]=q, | [h]=q, | ||
[i]={"d3dfbd6f4fd7",1274152761,"If a switch condition is constant, don\'t warn about missing enum cases.","If a switch condition is constant, don\'t warn about missing enum cases."}, | [i]={"d3dfbd6f4fd7",1274152761,"If a switch condition is constant, don\'t warn about missing enum cases.","If a switch condition is constant, don\'t warn about missing enum cases."}, | ||
[j]={{U,1526,"StmtResult Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, Stmt *BodyStmt) {\n if (!HasDependentValue) {\n // If switch has default case, then ignore it.\n if (!CaseListIsErroneous && !CaseListIsIncomplete && !HasConstantCond && ET && ET->getDecl()->isCompleteDefinition() && !ET->getDecl()->enumerators().empty()) {\n // See which case values aren\'t in enum.\n for (CaseValsTy::const_iterator CI = CaseVals.begin(); CI != CaseVals.end(); CI++) {\n if (ShouldDiagnoseSwitchCaseNotInEnum(*this, ED, CaseExpr, EI, EIEnd, CI->first))\n Diag(CaseExpr->getExprLoc(), diag::warn_not_in_enum) << CondTypeBeforePromotion;"},{U,1537,"StmtResult Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, Stmt *BodyStmt) {\n if (!HasDependentValue) {\n // If switch has default case, then ignore it.\n if (!CaseListIsErroneous && !CaseListIsIncomplete && !HasConstantCond && ET && ET->getDecl()->isCompleteDefinition() && !ET->getDecl()->enumerators().empty()) {\n for (CaseRangesTy::const_iterator RI = CaseRanges.begin(); RI != CaseRanges.end(); RI++) {\n if (ShouldDiagnoseSwitchCaseNotInEnum(*this, ED, CaseExpr, EI, EIEnd, RI->first))\n Diag(CaseExpr->getExprLoc(), diag::warn_not_in_enum) << CondTypeBeforePromotion;"},{U,1547,"StmtResult Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, Stmt *BodyStmt) {\n if (!HasDependentValue) {\n // If switch has default case, then ignore it.\n if (!CaseListIsErroneous && !CaseListIsIncomplete && !HasConstantCond && ET && ET->getDecl()->isCompleteDefinition() && !ET->getDecl()->enumerators().empty()) {\n for (CaseRangesTy::const_iterator RI = CaseRanges.begin(); RI != CaseRanges.end(); RI++) {\n if (ShouldDiagnoseSwitchCaseNotInEnum(*this, ED, CaseExpr, EI, EIEnd, Hi))\n Diag(CaseExpr->getExprLoc(), diag::warn_not_in_enum) << CondTypeBeforePromotion;"}}, | [j]={{U,1526,"StmtResult Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, Stmt *BodyStmt) {\n // ...\n if (!HasDependentValue) {\n // ...\n // If switch has default case, then ignore it.\n if (!CaseListIsErroneous && !CaseListIsIncomplete && !HasConstantCond && ET && ET->getDecl()->isCompleteDefinition() && !ET->getDecl()->enumerators().empty()) {\n // ...\n // See which case values aren\'t in enum.\n for (CaseValsTy::const_iterator CI = CaseVals.begin(); CI != CaseVals.end(); CI++) {\n // ...\n if (ShouldDiagnoseSwitchCaseNotInEnum(*this, ED, CaseExpr, EI, EIEnd, CI->first))\n Diag(CaseExpr->getExprLoc(), diag::warn_not_in_enum) << CondTypeBeforePromotion;"},{U,1537,"StmtResult Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, Stmt *BodyStmt) {\n // ...\n if (!HasDependentValue) {\n // ...\n // If switch has default case, then ignore it.\n if (!CaseListIsErroneous && !CaseListIsIncomplete && !HasConstantCond && ET && ET->getDecl()->isCompleteDefinition() && !ET->getDecl()->enumerators().empty()) {\n // ...\n for (CaseRangesTy::const_iterator RI = CaseRanges.begin(); RI != CaseRanges.end(); RI++) {\n // ...\n if (ShouldDiagnoseSwitchCaseNotInEnum(*this, ED, CaseExpr, EI, EIEnd, RI->first))\n Diag(CaseExpr->getExprLoc(), diag::warn_not_in_enum) << CondTypeBeforePromotion;"},{U,1547,"StmtResult Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, Stmt *BodyStmt) {\n // ...\n if (!HasDependentValue) {\n // ...\n // If switch has default case, then ignore it.\n if (!CaseListIsErroneous && !CaseListIsIncomplete && !HasConstantCond && ET && ET->getDecl()->isCompleteDefinition() && !ET->getDecl()->enumerators().empty()) {\n // ...\n for (CaseRangesTy::const_iterator RI = CaseRanges.begin(); RI != CaseRanges.end(); RI++) {\n // ...\n if (ShouldDiagnoseSwitchCaseNotInEnum(*this, ED, CaseExpr, EI, EIEnd, Hi))\n Diag(CaseExpr->getExprLoc(), diag::warn_not_in_enum) << CondTypeBeforePromotion;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/enum-attr.cpp"]={"clang/test/SemaCXX/enum-attr.cpp:32:8: warning: case value not in enumerated type \'enum Enum\' [-Wswitch]","clang/test/SemaCXX/enum-attr.cpp:45:8: warning: case value not in enumerated type \'enum EnumClosed\' [-Wswitch]","clang/test/SemaCXX/enum-attr.cpp:72:8: warning: case value not in enumerated type \'enum EnumFlag\' [-Wswitch]","clang/test/SemaCXX/enum-attr.cpp:86:8: warning: case value not in enumerated type \'enum EnumFlagClosed\' [-Wswitch]"} | ["clang/test/SemaCXX/enum-attr.cpp"]={"clang/test/SemaCXX/enum-attr.cpp:32:8: warning: case value not in enumerated type \'enum Enum\' [-Wswitch]","clang/test/SemaCXX/enum-attr.cpp:45:8: warning: case value not in enumerated type \'enum EnumClosed\' [-Wswitch]","clang/test/SemaCXX/enum-attr.cpp:72:8: warning: case value not in enumerated type \'enum EnumFlag\' [-Wswitch]","clang/test/SemaCXX/enum-attr.cpp:86:8: warning: case value not in enumerated type \'enum EnumFlagClosed\' [-Wswitch]"} | ||
Line 925: | Line 925: | ||
[h]=q, | [h]=q, | ||
[i]={"1ba2733e2cde",1370526480,"Fix a crash with -Wassign-enum, where we didn\'t adjust the APInt type of the","Fix a crash with -Wassign-enum, where we didn\'t adjust the APInt type of the"}, | [i]={"1ba2733e2cde",1370526480,"Fix a crash with -Wassign-enum, where we didn\'t adjust the APInt type of the","Fix a crash with -Wassign-enum, where we didn\'t adjust the APInt type of the"}, | ||
[j]={{U,1633,"void Sema::DiagnoseAssignmentEnum(QualType DstType, QualType SrcType, Expr *SrcExpr) {\n if (Diags.isIgnored(diag::warn_not_in_enum_assignment, SrcExpr->getExprLoc()))"},{U,1654,"void Sema::DiagnoseAssignmentEnum(QualType DstType, QualType SrcType, Expr *SrcExpr) {\n if (const EnumType *ET = DstType->getAs<EnumType>())\n if (!Context.hasSameUnqualifiedType(SrcType, DstType) && SrcType->isIntegerType()) {\n if (!SrcExpr->isTypeDependent() && !SrcExpr->isValueDependent() && SrcExpr->isIntegerConstantExpr(Context)) {\n if (ED->hasAttr<FlagEnumAttr>()) {\n if (!IsValueInFlagEnum(ED, RhsVal, true))\n Diag(SrcExpr->getExprLoc(), diag::warn_not_in_enum_assignment) << DstType.getUnqualifiedType();"},{U,1679,"void Sema::DiagnoseAssignmentEnum(QualType DstType, QualType SrcType, Expr *SrcExpr) {\n if (const EnumType *ET = DstType->getAs<EnumType>())\n if (!Context.hasSameUnqualifiedType(SrcType, DstType) && SrcType->isIntegerType()) {\n if (!SrcExpr->isTypeDependent() && !SrcExpr->isValueDependent() && SrcExpr->isIntegerConstantExpr(Context)) {\n if (ED->hasAttr<FlagEnumAttr>()) {\n } else {\n if (EI == EIend || EI->first != RhsVal) {\n Diag(SrcExpr->getExprLoc(), diag::warn_not_in_enum_assignment) << DstType.getUnqualifiedType();"}}, | [j]={{U,1633,"void Sema::DiagnoseAssignmentEnum(QualType DstType, QualType SrcType, Expr *SrcExpr) {\n if (Diags.isIgnored(diag::warn_not_in_enum_assignment, SrcExpr->getExprLoc()))"},{U,1654,"void Sema::DiagnoseAssignmentEnum(QualType DstType, QualType SrcType, Expr *SrcExpr) {\n // ...\n if (const EnumType *ET = DstType->getAs<EnumType>())\n if (!Context.hasSameUnqualifiedType(SrcType, DstType) && SrcType->isIntegerType()) {\n if (!SrcExpr->isTypeDependent() && !SrcExpr->isValueDependent() && SrcExpr->isIntegerConstantExpr(Context)) {\n // ...\n if (ED->hasAttr<FlagEnumAttr>()) {\n if (!IsValueInFlagEnum(ED, RhsVal, true))\n Diag(SrcExpr->getExprLoc(), diag::warn_not_in_enum_assignment) << DstType.getUnqualifiedType();"},{U,1679,"void Sema::DiagnoseAssignmentEnum(QualType DstType, QualType SrcType, Expr *SrcExpr) {\n // ...\n if (const EnumType *ET = DstType->getAs<EnumType>())\n if (!Context.hasSameUnqualifiedType(SrcType, DstType) && SrcType->isIntegerType()) {\n if (!SrcExpr->isTypeDependent() && !SrcExpr->isValueDependent() && SrcExpr->isIntegerConstantExpr(Context)) {\n // ...\n if (ED->hasAttr<FlagEnumAttr>()) {\n // ...\n } else {\n // ...\n if (EI == EIend || EI->first != RhsVal) {\n Diag(SrcExpr->getExprLoc(), diag::warn_not_in_enum_assignment) << DstType.getUnqualifiedType();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-flag-enum.c"]={"clang/test/Sema/attr-flag-enum.c:49:7: warning: integer constant not in range of enumerated type \'enum flag\' [-Wassign-enum]","clang/test/Sema/attr-flag-enum.c:50:7: warning: integer constant not in range of enumerated type \'enum flag\' [-Wassign-enum]","clang/test/Sema/attr-flag-enum.c:55:7: warning: integer constant not in range of enumerated type \'enum flag\' [-Wassign-enum]","clang/test/Sema/attr-flag-enum.c:76:7: warning: integer constant not in range of enumerated type \'enum flag4\' [-Wassign-enum]"} | ["clang/test/Sema/attr-flag-enum.c"]={"clang/test/Sema/attr-flag-enum.c:49:7: warning: integer constant not in range of enumerated type \'enum flag\' [-Wassign-enum]","clang/test/Sema/attr-flag-enum.c:50:7: warning: integer constant not in range of enumerated type \'enum flag\' [-Wassign-enum]","clang/test/Sema/attr-flag-enum.c:55:7: warning: integer constant not in range of enumerated type \'enum flag\' [-Wassign-enum]","clang/test/Sema/attr-flag-enum.c:76:7: warning: integer constant not in range of enumerated type \'enum flag4\' [-Wassign-enum]"} | ||
Line 942: | Line 942: | ||
[h]=q, | [h]=q, | ||
[i]={Xb,1615397021,qb,qb}, | [i]={Xb,1615397021,qb,qb}, | ||
[j]={{x,6602,"// 16 byte ByVal alignment not due to a vector member is not honoured by XL\n// on AIX. Emit a warning here that users are generating binary incompatible\n// code to be safe.\n// Here we try to get information about the alignment of the struct member\n// from the struct passed to the caller function. We only warn when the struct\n// is passed byval, hence the series of checks and early returns if we are a not\n// passing a struct byval.\nvoid Sema::checkAIXMemberAlignment(SourceLocation Loc, const Expr *Arg) {\n for (const FieldDecl *FD : ArgType->castAs<RecordType>()->getDecl()->fields()) {\n if (const auto *AA = FD->getAttr<AlignedAttr>()) {\n if (Alignment.getQuantity() == 16) {\n Diag(FD->getLocation(), diag::warn_not_xl_compatible) << FD;"}}, | [j]={{x,6602,"// 16 byte ByVal alignment not due to a vector member is not honoured by XL\n// on AIX. Emit a warning here that users are generating binary incompatible\n// code to be safe.\n// Here we try to get information about the alignment of the struct member\n// from the struct passed to the caller function. We only warn when the struct\n// is passed byval, hence the series of checks and early returns if we are a not\n// passing a struct byval.\nvoid Sema::checkAIXMemberAlignment(SourceLocation Loc, const Expr *Arg) {\n // ...\n for (const FieldDecl *FD : ArgType->castAs<RecordType>()->getDecl()->fields()) {\n if (const auto *AA = FD->getAttr<AlignedAttr>()) {\n // ...\n if (Alignment.getQuantity() == 16) {\n Diag(FD->getLocation(), diag::warn_not_xl_compatible) << FD;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/aix-attr-align.c"]={"clang/test/Sema/aix-attr-align.c:15:7: warning: alignment of 16 bytes for a struct member is not binary compatible with IBM XL C/C++ for AIX 16.1.0 or older [-Waix-compat]"} | ["clang/test/Sema/aix-attr-align.c"]={"clang/test/Sema/aix-attr-align.c:15:7: warning: alignment of 16 bytes for a struct member is not binary compatible with IBM XL C/C++ for AIX 16.1.0 or older [-Waix-compat]"} | ||
Line 959: | Line 959: | ||
[h]=q, | [h]=q, | ||
[i]={"d02f4a1043c0",1559237514,"Add Attribute NoThrow as an Exception Specifier Type","Add Attribute NoThrow as an Exception Specifier Type"}, | [i]={"d02f4a1043c0",1559237514,"Add Attribute NoThrow as an Exception Specifier Type","Add Attribute NoThrow as an Exception Specifier Type"}, | ||
[j]={{T,7941,"/// Process an individual function attribute. Returns true to\n/// indicate that the attribute was handled, false if it wasn\'t.\nstatic bool handleFunctionTypeAttr(TypeProcessingState &state, ParsedAttr &attr, QualType &type) {\n if (attr.getKind() == ParsedAttr::AT_NoThrow) {\n // MSVC ignores nothrow if it is in conflict with an explicit exception\n // specification.\n if (Proto->hasExceptionSpec()) {\n case EST_NoexceptFalse:\n S.Diag(attr.getLoc(), diag::warn_nothrow_attribute_ignored);"}}, | [j]={{T,7941,"/// Process an individual function attribute. Returns true to\n/// indicate that the attribute was handled, false if it wasn\'t.\nstatic bool handleFunctionTypeAttr(TypeProcessingState &state, ParsedAttr &attr, QualType &type) {\n // ...\n if (attr.getKind() == ParsedAttr::AT_NoThrow) {\n // ...\n // MSVC ignores nothrow if it is in conflict with an explicit exception\n // specification.\n if (Proto->hasExceptionSpec()) {\n // ...\n case EST_Dynamic:\n case EST_MSAny:\n case EST_NoexceptFalse:\n S.Diag(attr.getLoc(), diag::warn_nothrow_attribute_ignored);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/nothrow-vs-exception-specs.cpp"]={"clang/test/SemaCXX/nothrow-vs-exception-specs.cpp:45:16: warning: \'nothrow\' attribute conflicts with exception specification; attribute ignored [-Wignored-attributes]","clang/test/SemaCXX/nothrow-vs-exception-specs.cpp:51:12: warning: \'nothrow\' attribute conflicts with exception specification; attribute ignored [-Wignored-attributes]","clang/test/SemaCXX/nothrow-vs-exception-specs.cpp:55:12: warning: \'nothrow\' attribute conflicts with exception specification; attribute ignored [-Wignored-attributes]"} | ["clang/test/SemaCXX/nothrow-vs-exception-specs.cpp"]={"clang/test/SemaCXX/nothrow-vs-exception-specs.cpp:45:16: warning: \'nothrow\' attribute conflicts with exception specification; attribute ignored [-Wignored-attributes]","clang/test/SemaCXX/nothrow-vs-exception-specs.cpp:51:12: warning: \'nothrow\' attribute conflicts with exception specification; attribute ignored [-Wignored-attributes]","clang/test/SemaCXX/nothrow-vs-exception-specs.cpp:55:12: warning: \'nothrow\' attribute conflicts with exception specification; attribute ignored [-Wignored-attributes]"} | ||
Line 976: | Line 976: | ||
[h]=y, | [h]=y, | ||
[i]={"87c2ad29ee4e",1519935777,"[RecordLayout] Only assert that fundamental type sizes are power of two on MSVC","[RecordLayout] Only assert that fundamental type sizes are power of two on MSVC"}, | [i]={"87c2ad29ee4e",1519935777,"[RecordLayout] Only assert that fundamental type sizes are power of two on MSVC","[RecordLayout] Only assert that fundamental type sizes are power of two on MSVC"}, | ||
[j]={{oc,1958,"void ItaniumRecordLayoutBuilder::LayoutField(const FieldDecl *D, bool InsertExtraPadding) {\n if (D->getType()->isIncompleteArrayType()) {\n } else {\n if (IsMsStruct) {\n if (const BuiltinType *BTy = T->getAs<BuiltinType>()) {\n if (!llvm::isPowerOf2_64(TypeSize.getQuantity())) {\n // Since the combination of -mms-bitfields together with structs\n // like max_align_t (which contains a long double) for mingw is\n // quite common (and GCC handles it silently), just handle it\n // silently there. For other targets that have ms_struct enabled\n // (most probably via a pragma or attribute), trigger a diagnostic\n // that defaults to an error.\n if (!Context.getTargetInfo().getTriple().isWindowsGNUEnvironment())\n Diag(D->getLocation(), diag::warn_npot_ms_struct);"}} | [j]={{oc,1958,"void ItaniumRecordLayoutBuilder::LayoutField(const FieldDecl *D, bool InsertExtraPadding) {\n // ...\n if (D->getType()->isIncompleteArrayType()) {\n // ...\n } else {\n // ...\n if (IsMsStruct) {\n // ...\n if (const BuiltinType *BTy = T->getAs<BuiltinType>()) {\n // ...\n if (!llvm::isPowerOf2_64(TypeSize.getQuantity())) {\n // ...\n // Since the combination of -mms-bitfields together with structs\n // like max_align_t (which contains a long double) for mingw is\n // quite common (and GCC handles it silently), just handle it\n // silently there. For other targets that have ms_struct enabled\n // (most probably via a pragma or attribute), trigger a diagnostic\n // that defaults to an error.\n if (!Context.getTargetInfo().getTriple().isWindowsGNUEnvironment())\n Diag(D->getLocation(), diag::warn_npot_ms_struct);"}} | ||
}, | }, | ||
["warn_ns_attribute_wrong_parameter_type"]={ | ["warn_ns_attribute_wrong_parameter_type"]={ | ||
Line 990: | Line 990: | ||
[h]=q, | [h]=q, | ||
[i]={"ed433937c2b8",1295926318,"Add the ns_consumes_self, ns_consumed, cf_consumed, and ns_returns_autoreleased","Add the ns_consumes_self, ns_consumed, cf_consumed, and ns_returns_autoreleased"}, | [i]={"ed433937c2b8",1295926318,"Add the ns_consumes_self, ns_consumed, cf_consumed, and ns_returns_autoreleased","Add the ns_consumes_self, ns_consumed, cf_consumed, and ns_returns_autoreleased"}, | ||
[j]={{C,5898,"void Sema::AddXConsumedAttr(Decl *D, const AttributeCommonInfo &CI, RetainOwnershipKind K, bool IsTemplateInstantiation) {\n case RetainOwnershipKind::OS:\n handleSimpleAttributeOrDiagnose<OSConsumedAttr>(*this, VD, CI, isValidSubjectOfOSAttribute(VD->getType()), diag::warn_ns_attribute_wrong_parameter_type,"},{C,5911,"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),"},{C,5917,"void Sema::AddXConsumedAttr(Decl *D, const AttributeCommonInfo &CI, RetainOwnershipKind K, bool IsTemplateInstantiation) {\n case RetainOwnershipKind::CF:\n handleSimpleAttributeOrDiagnose<CFConsumedAttr>(*this, VD, CI, isValidSubjectOfCFAttribute(VD->getType()), diag::warn_ns_attribute_wrong_parameter_type,"},{C,5989,"static void handleXReturnsXRetainedAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (const auto *MD = dyn_cast<ObjCMethodDecl>(D)) {\n } else if (S.getLangOpts().ObjCAutoRefCount && hasDeclarator(D) && (AL.getKind() == ParsedAttr::AT_NSReturnsRetained)) {\n } else if (const auto *PD = dyn_cast<ObjCPropertyDecl>(D)) {\n } else if (const auto *FD = dyn_cast<FunctionDecl>(D)) {\n } else if (const auto *Param = dyn_cast<ParmVarDecl>(D)) {\n if (ReturnType.isNull()) {\n S.Diag(D->getBeginLoc(), diag::warn_ns_attribute_wrong_parameter_type) << AL << DiagID << AL.getRange();"},{C,6053,"static void handleXReturnsXRetainedAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (!TypeOK) {\n if (isa<ParmVarDecl>(D)) {\n S.Diag(D->getBeginLoc(), diag::warn_ns_attribute_wrong_parameter_type) << AL << ParmDiagID << AL.getRange();"},{C,9091,"/// 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 case ParsedAttr::AT_OSReturnsRetainedOnZero:\n handleSimpleAttributeOrDiagnose<OSReturnsRetainedOnZeroAttr>(S, D, AL, isValidOSObjectOutParameter(D), diag::warn_ns_attribute_wrong_parameter_type,"},{C,9097,"/// 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 case ParsedAttr::AT_OSReturnsRetainedOnNonZero:\n handleSimpleAttributeOrDiagnose<OSReturnsRetainedOnNonZeroAttr>(S, D, AL, isValidOSObjectOutParameter(D), diag::warn_ns_attribute_wrong_parameter_type,"}}, | [j]={{C,5898,"void Sema::AddXConsumedAttr(Decl *D, const AttributeCommonInfo &CI, RetainOwnershipKind K, bool IsTemplateInstantiation) {\n // ...\n case RetainOwnershipKind::OS:\n handleSimpleAttributeOrDiagnose<OSConsumedAttr>(*this, VD, CI, isValidSubjectOfOSAttribute(VD->getType()), diag::warn_ns_attribute_wrong_parameter_type,"},{C,5911,"void Sema::AddXConsumedAttr(Decl *D, const AttributeCommonInfo &CI, RetainOwnershipKind K, bool IsTemplateInstantiation) {\n // ...\n case RetainOwnershipKind::NS:\n handleSimpleAttributeOrDiagnose<NSConsumedAttr>(*this, VD, CI, isValidSubjectOfNSAttribute(VD->getType()),\n // ...\n ((IsTemplateInstantiation && getLangOpts().ObjCAutoRefCount) ? diag::err_ns_attribute_wrong_parameter_type : diag::warn_ns_attribute_wrong_parameter_type),"},{C,5917,"void Sema::AddXConsumedAttr(Decl *D, const AttributeCommonInfo &CI, RetainOwnershipKind K, bool IsTemplateInstantiation) {\n // ...\n case RetainOwnershipKind::CF:\n handleSimpleAttributeOrDiagnose<CFConsumedAttr>(*this, VD, CI, isValidSubjectOfCFAttribute(VD->getType()), diag::warn_ns_attribute_wrong_parameter_type,"},{C,5989,"static void handleXReturnsXRetainedAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n if (const auto *MD = dyn_cast<ObjCMethodDecl>(D)) {\n // ...\n } else if (S.getLangOpts().ObjCAutoRefCount && hasDeclarator(D) && (AL.getKind() == ParsedAttr::AT_NSReturnsRetained)) {\n // ...\n } else if (const auto *PD = dyn_cast<ObjCPropertyDecl>(D)) {\n // ...\n } else if (const auto *FD = dyn_cast<FunctionDecl>(D)) {\n // ...\n } else if (const auto *Param = dyn_cast<ParmVarDecl>(D)) {\n // ...\n if (ReturnType.isNull()) {\n S.Diag(D->getBeginLoc(), diag::warn_ns_attribute_wrong_parameter_type) << AL << DiagID << AL.getRange();"},{C,6053,"static void handleXReturnsXRetainedAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n if (!TypeOK) {\n // ...\n if (isa<ParmVarDecl>(D)) {\n S.Diag(D->getBeginLoc(), diag::warn_ns_attribute_wrong_parameter_type) << AL << ParmDiagID << AL.getRange();"},{C,9091,"/// 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 // ...\n case ParsedAttr::AT_OSReturnsRetainedOnZero:\n handleSimpleAttributeOrDiagnose<OSReturnsRetainedOnZeroAttr>(S, D, AL, isValidOSObjectOutParameter(D), diag::warn_ns_attribute_wrong_parameter_type,"},{C,9097,"/// 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 // ...\n case ParsedAttr::AT_OSReturnsRetainedOnNonZero:\n handleSimpleAttributeOrDiagnose<OSReturnsRetainedOnNonZeroAttr>(S, D, AL, isValidOSObjectOutParameter(D), diag::warn_ns_attribute_wrong_parameter_type,"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/attr-cf_returns.m"]={"clang/test/SemaObjC/attr-cf_returns.m:38:19: warning: \'cf_returns_retained\' attribute only applies to pointer-to-CF-pointer parameters [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:39:19: warning: \'cf_returns_retained\' attribute only applies to pointer-to-CF-pointer parameters [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:40:19: warning: \'cf_returns_retained\' attribute only applies to pointer-to-CF-pointer parameters [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:41:19: warning: \'cf_returns_retained\' attribute only applies to pointer-to-CF-pointer parameters [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:42:19: warning: \'cf_returns_retained\' attribute only applies to pointer-to-CF-pointer parameters [-Wignored-attributes]"} | ["clang/test/SemaObjC/attr-cf_returns.m"]={"clang/test/SemaObjC/attr-cf_returns.m:38:19: warning: \'cf_returns_retained\' attribute only applies to pointer-to-CF-pointer parameters [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:39:19: warning: \'cf_returns_retained\' attribute only applies to pointer-to-CF-pointer parameters [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:40:19: warning: \'cf_returns_retained\' attribute only applies to pointer-to-CF-pointer parameters [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:41:19: warning: \'cf_returns_retained\' attribute only applies to pointer-to-CF-pointer parameters [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:42:19: warning: \'cf_returns_retained\' attribute only applies to pointer-to-CF-pointer parameters [-Wignored-attributes]"} | ||
Line 1,007: | Line 1,007: | ||
[h]=q, | [h]=q, | ||
[i]={"3b204e4c2e06",1242248852,"Add some basic type checking for attributes ns_returns_retained and","Add some basic type checking for attributes ns_returns_retained and"}, | [i]={"3b204e4c2e06",1242248852,"Add some basic type checking for attributes ns_returns_retained and","Add some basic type checking for attributes ns_returns_retained and"}, | ||
[j]={{C,5952,"bool Sema::checkNSReturnsRetainedReturnType(SourceLocation Loc, QualType QT) {\n Diag(Loc, diag::warn_ns_attribute_wrong_return_type) << \"\'ns_returns_retained\'\" << 0 << 0;"},{C,6066,"static void handleXReturnsXRetainedAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (!TypeOK) {\n if (isa<ParmVarDecl>(D)) {\n } else {\n S.Diag(D->getBeginLoc(), diag::warn_ns_attribute_wrong_return_type) << AL << SubjectKind << Cf << AL.getRange();"},{C,6113,"static void handleObjCReturnsInnerPointerAttr(Sema &S, Decl *D, const ParsedAttr &Attrs) {\n if (!resultType->isReferenceType() && (!resultType->isPointerType() || resultType->isObjCRetainableType())) {\n S.Diag(D->getBeginLoc(), diag::warn_ns_attribute_wrong_return_type) << SourceRange(loc) << Attrs << (isa<ObjCMethodDecl>(D) ? EP_ObjCMethod : EP_ObjCProperty) << /*non-retainable pointer*/ 2;"}}, | [j]={{C,5952,"bool Sema::checkNSReturnsRetainedReturnType(SourceLocation Loc, QualType QT) {\n // ...\n Diag(Loc, diag::warn_ns_attribute_wrong_return_type) << \"\'ns_returns_retained\'\" << 0 << 0;"},{C,6066,"static void handleXReturnsXRetainedAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n if (!TypeOK) {\n // ...\n if (isa<ParmVarDecl>(D)) {\n // ...\n } else {\n // ...\n S.Diag(D->getBeginLoc(), diag::warn_ns_attribute_wrong_return_type) << AL << SubjectKind << Cf << AL.getRange();"},{C,6113,"static void handleObjCReturnsInnerPointerAttr(Sema &S, Decl *D, const ParsedAttr &Attrs) {\n // ...\n if (!resultType->isReferenceType() && (!resultType->isPointerType() || resultType->isObjCRetainableType())) {\n S.Diag(D->getBeginLoc(), diag::warn_ns_attribute_wrong_return_type) << SourceRange(loc) << Attrs << (isa<ObjCMethodDecl>(D) ? EP_ObjCMethod : EP_ObjCProperty) << /*non-retainable pointer*/ 2;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/attr-cf_returns.m"]={"clang/test/SemaObjC/attr-cf_returns.m:18:1: warning: \'cf_returns_retained\' attribute only applies to functions that return a pointer [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:19:1: warning: \'cf_returns_retained\' attribute only applies to functions that return a pointer [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:25:1: warning: \'cf_returns_retained\' attribute only applies to methods that return a pointer [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:26:1: warning: \'cf_returns_retained\' attribute only applies to methods that return a pointer [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:31:1: warning: \'cf_returns_retained\' attribute only applies to properties that return a pointer [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:32:1: warning: \'cf_returns_retained\' attribute only applies to properties that return a pointer [-Wignored-attributes]"} | ["clang/test/SemaObjC/attr-cf_returns.m"]={"clang/test/SemaObjC/attr-cf_returns.m:18:1: warning: \'cf_returns_retained\' attribute only applies to functions that return a pointer [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:19:1: warning: \'cf_returns_retained\' attribute only applies to functions that return a pointer [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:25:1: warning: \'cf_returns_retained\' attribute only applies to methods that return a pointer [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:26:1: warning: \'cf_returns_retained\' attribute only applies to methods that return a pointer [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:31:1: warning: \'cf_returns_retained\' attribute only applies to properties that return a pointer [-Wignored-attributes]","clang/test/SemaObjC/attr-cf_returns.m:32:1: warning: \'cf_returns_retained\' attribute only applies to properties that return a pointer [-Wignored-attributes]"} | ||
Line 1,024: | Line 1,024: | ||
[h]=q, | [h]=q, | ||
[i]={"7d85b8f6f651",1505885958,"[Sema][ObjC] Warn about mismatches in attributes between overriding and","[Sema][ObjC] Warn about mismatches in attributes between overriding and"}, | [i]={"7d85b8f6f651",1505885958,"[Sema][ObjC] Warn about mismatches in attributes between overriding and","[Sema][ObjC] Warn about mismatches in attributes between overriding and"}, | ||
[j]={{P,216,"void Sema::CheckObjCMethodOverride(ObjCMethodDecl *NewMethod, const ObjCMethodDecl *Overridden) {\n for (ObjCMethodDecl::param_iterator ni = NewMethod->param_begin(), ne = NewMethod->param_end(); ni != ne && oi != oe; ++ni, ++oi) {\n if (newDecl->hasAttr<NSConsumedAttr>() != oldDecl->hasAttr<NSConsumedAttr>()) {\n Diag(newDecl->getLocation(), getLangOpts().ObjCAutoRefCount ? diag::err_nsconsumed_attribute_mismatch : diag::warn_nsconsumed_attribute_mismatch);"}}, | [j]={{P,216,"void Sema::CheckObjCMethodOverride(ObjCMethodDecl *NewMethod, const ObjCMethodDecl *Overridden) {\n // ...\n for (ObjCMethodDecl::param_iterator ni = NewMethod->param_begin(), ne = NewMethod->param_end(); ni != ne && oi != oe; ++ni, ++oi) {\n // ...\n if (newDecl->hasAttr<NSConsumedAttr>() != oldDecl->hasAttr<NSConsumedAttr>()) {\n Diag(newDecl->getLocation(), getLangOpts().ObjCAutoRefCount ? diag::err_nsconsumed_attribute_mismatch : diag::warn_nsconsumed_attribute_mismatch);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/arc-nsconsumed-errors.m"]={"clang/test/SemaObjC/arc-nsconsumed-errors.m:29:44: warning: overriding method has mismatched ns_consumed attribute on its parameter [-Wnsconsumed-mismatch]"} | ["clang/test/SemaObjC/arc-nsconsumed-errors.m"]={"clang/test/SemaObjC/arc-nsconsumed-errors.m:29:44: warning: overriding method has mismatched ns_consumed attribute on its parameter [-Wnsconsumed-mismatch]"} | ||
Line 1,041: | Line 1,041: | ||
[h]=q, | [h]=q, | ||
[i]={rc,1576908663,xb,xb}, | [i]={rc,1576908663,xb,xb}, | ||
[j]={{cb,922,"/// Check for duplicate keys in an ObjC dictionary literal. For instance:\n/// NSDictionary *nd = @{ @\"foo\" : @\"bar\", @\"foo\" : @\"baz\" };\nstatic void CheckObjCDictionaryLiteralDuplicateKeys(Sema &S, ObjCDictionaryLiteral *Literal) {\n auto checkOneKey = [&](auto &Map, const auto &Key, SourceLocation Loc) {\n if (!Pair.second) {\n S.Diag(Loc, diag::warn_nsdictionary_duplicate_key);"}}, | [j]={{cb,922,"/// Check for duplicate keys in an ObjC dictionary literal. For instance:\n/// NSDictionary *nd = @{ @\"foo\" : @\"bar\", @\"foo\" : @\"baz\" };\nstatic void CheckObjCDictionaryLiteralDuplicateKeys(Sema &S, ObjCDictionaryLiteral *Literal) {\n // ...\n auto checkOneKey = [&](auto &Map, const auto &Key, SourceLocation Loc) {\n // ...\n if (!Pair.second) {\n S.Diag(Loc, diag::warn_nsdictionary_duplicate_key);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/dictionary-literal-duplicates.m"]={"clang/test/SemaObjC/dictionary-literal-duplicates.m:29:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:30:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:34:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:35:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:36:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:37:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:38:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:40:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:46:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:47:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:55:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:55:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]"} | ["clang/test/SemaObjC/dictionary-literal-duplicates.m"]={"clang/test/SemaObjC/dictionary-literal-duplicates.m:29:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:30:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:34:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:35:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:36:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:37:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:38:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:40:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:46:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:47:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:55:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]","clang/test/SemaObjC/dictionary-literal-duplicates.m:55:5: warning: duplicate key in dictionary literal [-Wobjc-dictionary-duplicate-keys]"} | ||
Line 1,058: | Line 1,058: | ||
[h]=q, | [h]=q, | ||
[i]={"a45495a9f224",1322531320,"objc: warn if NSObject attribute appears other than in a typedef.","objc: warn if NSObject attribute appears other than in a typedef."}, | [i]={"a45495a9f224",1322531320,"objc: warn if NSObject attribute appears other than in a typedef.","objc: warn if NSObject attribute appears other than in a typedef."}, | ||
[j]={{C,3012,"static void handleObjCNSObject(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (const auto *TD = dyn_cast<TypedefNameDecl>(D)) {\n } else if (const auto *PD = dyn_cast<ObjCPropertyDecl>(D)) {\n } else {\n S.Diag(D->getLocation(), diag::warn_nsobject_attribute);"}}, | [j]={{C,3012,"static void handleObjCNSObject(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (const auto *TD = dyn_cast<TypedefNameDecl>(D)) {\n // ...\n } else if (const auto *PD = dyn_cast<ObjCPropertyDecl>(D)) {\n // ...\n } else {\n // ...\n S.Diag(D->getLocation(), diag::warn_nsobject_attribute);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/nsobject-attribute.m"]={"clang/test/SemaObjC/nsobject-attribute.m:53:37: warning: \'NSObject\' attribute may be put on a typedef only; attribute is ignored [-WNSObject-attribute]","clang/test/SemaObjC/nsobject-attribute.m:59:37: warning: \'NSObject\' attribute may be put on a typedef only; attribute is ignored [-WNSObject-attribute]"} | ["clang/test/SemaObjC/nsobject-attribute.m"]={"clang/test/SemaObjC/nsobject-attribute.m:53:37: warning: \'NSObject\' attribute may be put on a typedef only; attribute is ignored [-WNSObject-attribute]","clang/test/SemaObjC/nsobject-attribute.m:59:37: warning: \'NSObject\' attribute may be put on a typedef only; attribute is ignored [-WNSObject-attribute]"} | ||
Line 1,075: | Line 1,075: | ||
[h]=q, | [h]=q, | ||
[i]={"7d85b8f6f651",1505885958,"[Sema][ObjC] Warn about mismatches in attributes between overriding and","[Sema][ObjC] Warn about mismatches in attributes between overriding and"}, | [i]={"7d85b8f6f651",1505885958,"[Sema][ObjC] Warn about mismatches in attributes between overriding and","[Sema][ObjC] Warn about mismatches in attributes between overriding and"}, | ||
[j]={{P,190,"void Sema::CheckObjCMethodOverride(ObjCMethodDecl *NewMethod, const ObjCMethodDecl *Overridden) {\n if ((NewMethod->hasAttr<NSReturnsRetainedAttr>() != Overridden->hasAttr<NSReturnsRetainedAttr>())) {\n Diag(NewMethod->getLocation(), getLangOpts().ObjCAutoRefCount ? diag::err_nsreturns_retained_attribute_mismatch : diag::warn_nsreturns_retained_attribute_mismatch) << 1;"},{P,199,"void Sema::CheckObjCMethodOverride(ObjCMethodDecl *NewMethod, const ObjCMethodDecl *Overridden) {\n if ((NewMethod->hasAttr<NSReturnsNotRetainedAttr>() != Overridden->hasAttr<NSReturnsNotRetainedAttr>())) {\n Diag(NewMethod->getLocation(), getLangOpts().ObjCAutoRefCount ? diag::err_nsreturns_retained_attribute_mismatch : diag::warn_nsreturns_retained_attribute_mismatch) << 0;"}}, | [j]={{P,190,"void Sema::CheckObjCMethodOverride(ObjCMethodDecl *NewMethod, const ObjCMethodDecl *Overridden) {\n // ...\n if ((NewMethod->hasAttr<NSReturnsRetainedAttr>() != Overridden->hasAttr<NSReturnsRetainedAttr>())) {\n Diag(NewMethod->getLocation(), getLangOpts().ObjCAutoRefCount ? diag::err_nsreturns_retained_attribute_mismatch : diag::warn_nsreturns_retained_attribute_mismatch) << 1;"},{P,199,"void Sema::CheckObjCMethodOverride(ObjCMethodDecl *NewMethod, const ObjCMethodDecl *Overridden) {\n // ...\n if ((NewMethod->hasAttr<NSReturnsNotRetainedAttr>() != Overridden->hasAttr<NSReturnsNotRetainedAttr>())) {\n Diag(NewMethod->getLocation(), getLangOpts().ObjCAutoRefCount ? diag::err_nsreturns_retained_attribute_mismatch : diag::warn_nsreturns_retained_attribute_mismatch) << 0;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ARCMT/objcmt-arc-cf-annotations.m"]={"clang/test/ARCMT/objcmt-arc-cf-annotations.m:1687:1: warning: overriding method has mismatched ns_returns_retained attributes [-Wnsreturns-mismatch]","clang/test/ARCMT/objcmt-arc-cf-annotations.m:1691:1: warning: overriding method has mismatched ns_returns_retained attributes [-Wnsreturns-mismatch]"} | ["clang/test/ARCMT/objcmt-arc-cf-annotations.m"]={"clang/test/ARCMT/objcmt-arc-cf-annotations.m:1687:1: warning: overriding method has mismatched ns_returns_retained attributes [-Wnsreturns-mismatch]","clang/test/ARCMT/objcmt-arc-cf-annotations.m:1691:1: warning: overriding method has mismatched ns_returns_retained attributes [-Wnsreturns-mismatch]"} | ||
Line 1,092: | Line 1,092: | ||
[h]=hb, | [h]=hb, | ||
[i]={"cd1a88da02c2",1242931731,"Check on null arguments in the presense of nonnull attribute.","Check on null arguments in the presense of nonnull attribute."}, | [i]={"cd1a88da02c2",1242931731,"Check on null arguments in the presense of nonnull attribute.","Check on null arguments in the presense of nonnull attribute."}, | ||
[j]={{x,6415,"static void CheckNonNullArgument(Sema &S, const Expr *ArgExpr, SourceLocation CallSiteLoc) {\n if (CheckNonNullExpr(S, ArgExpr))\n S.DiagRuntimeBehavior(CallSiteLoc, ArgExpr, S.PDiag(diag::warn_null_arg) << ArgExpr->getSourceRange());"},{A,6700,"/// CheckStaticArrayArgument - If the given argument corresponds to a static\n/// array parameter, check that it is non-null, and that if it is formed by\n/// array-to-pointer decay, the underlying array is sufficiently large.\n///\n/// C99 6.7.5.3p7: If the keyword static also appears within the [ and ] of the\n/// array type derivation, then for each call to the function, the value of the\n/// corresponding actual argument shall provide access to the first element of\n/// an array with at least as many elements as specified by the size expression.\nvoid Sema::CheckStaticArrayArgument(SourceLocation CallLoc, ParmVarDecl *Param, const Expr *ArgExpr) {\n if (ArgExpr->isNullPointerConstant(Context, Expr::NPC_NeverValueDependent)) {\n Diag(CallLoc, diag::warn_null_arg) << ArgExpr->getSourceRange();"}}, | [j]={{x,6415,"static void CheckNonNullArgument(Sema &S, const Expr *ArgExpr, SourceLocation CallSiteLoc) {\n if (CheckNonNullExpr(S, ArgExpr))\n S.DiagRuntimeBehavior(CallSiteLoc, ArgExpr, S.PDiag(diag::warn_null_arg) << ArgExpr->getSourceRange());"},{A,6700,"/// CheckStaticArrayArgument - If the given argument corresponds to a static\n/// array parameter, check that it is non-null, and that if it is formed by\n/// array-to-pointer decay, the underlying array is sufficiently large.\n///\n/// C99 6.7.5.3p7: If the keyword static also appears within the [ and ] of the\n/// array type derivation, then for each call to the function, the value of the\n/// corresponding actual argument shall provide access to the first element of\n/// an array with at least as many elements as specified by the size expression.\nvoid Sema::CheckStaticArrayArgument(SourceLocation CallLoc, ParmVarDecl *Param, const Expr *ArgExpr) {\n // ...\n if (ArgExpr->isNullPointerConstant(Context, Expr::NPC_NeverValueDependent)) {\n Diag(CallLoc, diag::warn_null_arg) << ArgExpr->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/kindof.m"]={"clang/test/SemaObjC/kindof.m:374:19: warning: null passed to a callee that requires a non-null argument [-Wnonnull]","clang/test/SemaObjC/kindof.m:455:35: warning: null passed to a callee that requires a non-null argument [-Wnonnull]"} | ["clang/test/SemaObjC/kindof.m"]={"clang/test/SemaObjC/kindof.m:374:19: warning: null passed to a callee that requires a non-null argument [-Wnonnull]","clang/test/SemaObjC/kindof.m:455:35: warning: null passed to a callee that requires a non-null argument [-Wnonnull]"} | ||
Line 1,109: | Line 1,109: | ||
[h]=q, | [h]=q, | ||
[i]={"701fb36b9515",1308260216,"Add a new warning when a NULL constant is used in arithmetic operations. The warning will fire on c...","Add a new warning when a NULL constant is used in arithmetic operations. The warning will fire on cases such as:"}, | [i]={"701fb36b9515",1308260216,"Add a new warning when a NULL constant is used in arithmetic operations. The warning will fire on c...","Add a new warning when a NULL constant is used in arithmetic operations. The warning will fire on cases such as:"}, | ||
[j]={{A,11284,"// checkArithmeticNull - Detect when a NULL constant is used improperly in an\n// expression. These are mainly cases where the null pointer is used as an\n// integer instead of a pointer.\nstatic void checkArithmeticNull(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, bool IsCompare) {\n // Comparison operations would not make sense with a null pointer no matter\n // what the other expression is.\n if (!IsCompare) {\n S.Diag(Loc, diag::warn_null_in_arithmetic_operation) << (LHSNull ? LHS.get()->getSourceRange() : SourceRange()) << (RHSNull ? RHS.get()->getSourceRange() : SourceRange());"}}, | [j]={{A,11284,"// checkArithmeticNull - Detect when a NULL constant is used improperly in an\n// expression. These are mainly cases where the null pointer is used as an\n// integer instead of a pointer.\nstatic void checkArithmeticNull(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, bool IsCompare) {\n // ...\n // Comparison operations would not make sense with a null pointer no matter\n // what the other expression is.\n if (!IsCompare) {\n S.Diag(Loc, diag::warn_null_in_arithmetic_operation) << (LHSNull ? LHS.get()->getSourceRange() : SourceRange()) << (RHSNull ? RHS.get()->getSourceRange() : SourceRange());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/null_in_arithmetic_ops.cpp"]={"clang/test/SemaCXX/null_in_arithmetic_ops.cpp:14:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:14:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:15:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:15:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:16:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:16:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:18:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:18:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:19:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:19:25: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:20:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:20:25: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:21:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:21:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:23:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:23:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:24:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:24:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:25:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:25:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:29:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:29:26: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:37:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:37:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:38:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:38:28: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:41:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:42:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:43:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:45:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:46:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:47:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:48:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:50:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:51:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:52:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:54:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:55:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:56:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:58:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:59:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:60:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:61:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:63:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:64:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:65:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]"} | ["clang/test/SemaCXX/null_in_arithmetic_ops.cpp"]={"clang/test/SemaCXX/null_in_arithmetic_ops.cpp:14:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:14:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:15:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:15:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:16:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:16:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:18:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:18:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:19:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:19:25: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:20:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:20:25: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:21:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:21:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:23:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:23:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:24:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:24:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:25:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:25:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:29:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:29:26: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:37:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:37:24: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:38:16: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:38:28: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:41:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:42:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:43:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:45:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:46:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:47:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:48:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:50:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:51:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:52:12: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:54:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:55:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:56:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:58:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:59:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:60:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:61:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:63:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:64:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:65:5: warning: use of NULL in arithmetic operation [-Wnull-arithmetic]"} | ||
Line 1,126: | Line 1,126: | ||
[h]=q, | [h]=q, | ||
[i]={"aee9e76722d0",1313102301,"The current warning in -Wnull-arithmetic for comparisons between NULL and non-pointers is not very h...","The current warning in -Wnull-arithmetic for comparisons between NULL and non-pointers is not very helpful. This patch will update the wording to be more helpful to users."}, | [i]={"aee9e76722d0",1313102301,"The current warning in -Wnull-arithmetic for comparisons between NULL and non-pointers is not very h...","The current warning in -Wnull-arithmetic for comparisons between NULL and non-pointers is not very helpful. This patch will update the wording to be more helpful to users."}, | ||
[j]={{A,11312,"// checkArithmeticNull - Detect when a NULL constant is used improperly in an\n// expression. These are mainly cases where the null pointer is used as an\n// integer instead of a pointer.\nstatic void checkArithmeticNull(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, bool IsCompare) {\n S.Diag(Loc, diag::warn_null_in_comparison_operation) << LHSNull /* LHS is NULL */ << NonNullType << LHS.get()->getSourceRange() << RHS.get()->getSourceRange();"}}, | [j]={{A,11312,"// checkArithmeticNull - Detect when a NULL constant is used improperly in an\n// expression. These are mainly cases where the null pointer is used as an\n// integer instead of a pointer.\nstatic void checkArithmeticNull(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, bool IsCompare) {\n // ...\n S.Diag(Loc, diag::warn_null_in_comparison_operation) << LHSNull /* LHS is NULL */ << NonNullType << LHS.get()->getSourceRange() << RHS.get()->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/null_in_arithmetic_ops.cpp"]={"clang/test/SemaCXX/null_in_arithmetic_ops.cpp:67:9: warning: comparison between NULL and non-pointer (\'int\' and NULL) [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:67:21: warning: comparison between NULL and non-pointer (\'int\' and NULL) [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:68:12: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:68:24: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:69:9: warning: comparison between NULL and non-pointer (\'int\' and NULL) [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:69:22: warning: comparison between NULL and non-pointer (\'int\' and NULL) [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:70:12: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:70:25: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:71:9: warning: comparison between NULL and non-pointer (\'int\' and NULL) [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:71:22: warning: comparison between NULL and non-pointer (\'int\' and NULL) [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:72:12: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:72:25: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:85:16: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]"} | ["clang/test/SemaCXX/null_in_arithmetic_ops.cpp"]={"clang/test/SemaCXX/null_in_arithmetic_ops.cpp:67:9: warning: comparison between NULL and non-pointer (\'int\' and NULL) [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:67:21: warning: comparison between NULL and non-pointer (\'int\' and NULL) [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:68:12: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:68:24: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:69:9: warning: comparison between NULL and non-pointer (\'int\' and NULL) [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:69:22: warning: comparison between NULL and non-pointer (\'int\' and NULL) [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:70:12: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:70:25: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:71:9: warning: comparison between NULL and non-pointer (\'int\' and NULL) [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:71:22: warning: comparison between NULL and non-pointer (\'int\' and NULL) [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:72:12: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:72:25: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]","clang/test/SemaCXX/null_in_arithmetic_ops.cpp:85:16: warning: comparison between NULL and non-pointer (NULL and \'int\') [-Wnull-arithmetic]"} | ||
Line 1,143: | Line 1,143: | ||
[h]=q, | [h]=q, | ||
[i]={"3bb8b56a5d90",1393382166,"PR16074, implement warnings to catch pointer to boolean true and pointer to","PR16074, implement warnings to catch pointer to boolean true and pointer to"}, | [i]={"3bb8b56a5d90",1393382166,"PR16074, implement warnings to catch pointer to boolean true and pointer to","PR16074, implement warnings to catch pointer to boolean true and pointer to"}, | ||
[j]={{x,15570,"/// Diagnose pointers that are always non-null.\n/// \\param E the expression containing the pointer\n/// \\param NullKind NPCK_NotNull if E is a cast to bool, otherwise, E is\n/// compared to a null pointer\n/// \\param IsEqual True when the comparison is equal to a null pointer\n/// \\param Range Extra SourceRange to highlight in the diagnostic\nvoid Sema::DiagnoseAlwaysNonNullPointer(Expr *E, Expr::NullPointerConstantKind NullKind, bool IsEqual, SourceRange Range) {\n unsigned DiagID = IsCompare ? diag::warn_null_pointer_compare : diag::warn_impcast_pointer_to_bool;"}}, | [j]={{x,15570,"/// Diagnose pointers that are always non-null.\n/// \\param E the expression containing the pointer\n/// \\param NullKind NPCK_NotNull if E is a cast to bool, otherwise, E is\n/// compared to a null pointer\n/// \\param IsEqual True when the comparison is equal to a null pointer\n/// \\param Range Extra SourceRange to highlight in the diagnostic\nvoid Sema::DiagnoseAlwaysNonNullPointer(Expr *E, Expr::NullPointerConstantKind NullKind, bool IsEqual, SourceRange Range) {\n // ...\n unsigned DiagID = IsCompare ? diag::warn_null_pointer_compare : diag::warn_impcast_pointer_to_bool;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/conditional-expr.c"]={"clang/test/Sema/conditional-expr.c:89:15: warning: comparison of address of \'x\' not equal to a null pointer is always true [-Wtautological-pointer-compare]"} | ["clang/test/Sema/conditional-expr.c"]={"clang/test/Sema/conditional-expr.c:89:15: warning: comparison of address of \'x\' not equal to a null pointer is always true [-Wtautological-pointer-compare]"} | ||
Line 1,160: | Line 1,160: | ||
[h]=Ub, | [h]=Ub, | ||
[i]={"849ebc269fe1",1434737686,"Implement the \'null_resettable\' attribute for Objective-C properties.","Implement the \'null_resettable\' attribute for Objective-C properties."}, | [i]={"849ebc269fe1",1434737686,"Implement the \'null_resettable\' attribute for Objective-C properties.","Implement the \'null_resettable\' attribute for Objective-C properties."}, | ||
[j]={{V,2155,"void Sema::diagnoseNullResettableSynthesizedSetters(const ObjCImplDecl *impDecl) {\n for (const auto *propertyImpl : impDecl->property_impls()) {\n // Warn about null_resettable properties with synthesized setters,\n // because the setter won\'t properly handle nil.\n if (propertyImpl->getPropertyImplementation() == ObjCPropertyImplDecl::Synthesize && (property->getPropertyAttributes() & ObjCPropertyAttribute::kind_null_resettable) && property->getGetterMethodDecl() && property->getSetterMethodDecl()) {\n if ((!getterImpl || getterImpl->isSynthesizedAccessorStub()) && (!setterImpl || setterImpl->isSynthesizedAccessorStub())) {\n Diag(loc, diag::warn_null_resettable_setter) << setterImpl->getSelector() << property->getDeclName();"}}, | [j]={{V,2155,"void Sema::diagnoseNullResettableSynthesizedSetters(const ObjCImplDecl *impDecl) {\n for (const auto *propertyImpl : impDecl->property_impls()) {\n // ...\n // Warn about null_resettable properties with synthesized setters,\n // because the setter won\'t properly handle nil.\n if (propertyImpl->getPropertyImplementation() == ObjCPropertyImplDecl::Synthesize && (property->getPropertyAttributes() & ObjCPropertyAttribute::kind_null_resettable) && property->getGetterMethodDecl() && property->getSetterMethodDecl()) {\n // ...\n if ((!getterImpl || getterImpl->isSynthesizedAccessorStub()) && (!setterImpl || setterImpl->isSynthesizedAccessorStub())) {\n // ...\n Diag(loc, diag::warn_null_resettable_setter) << setterImpl->getSelector() << property->getDeclName();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/nullability.m"]={"clang/test/SemaObjC/nullability.m:209:13: warning: synthesized setter \'setResettable3:\' for null_resettable property \'resettable3\' does not handle nil [-Wnullability]","clang/test/SemaObjC/nullability.m:199:1: warning: synthesized setter \'setResettable4:\' for null_resettable property \'resettable4\' does not handle nil [-Wnullability]"} | ["clang/test/SemaObjC/nullability.m"]={"clang/test/SemaObjC/nullability.m:209:13: warning: synthesized setter \'setResettable3:\' for null_resettable property \'resettable3\' does not handle nil [-Wnullability]","clang/test/SemaObjC/nullability.m:199:1: warning: synthesized setter \'setResettable4:\' for null_resettable property \'resettable4\' does not handle nil [-Wnullability]"} | ||
Line 1,195: | Line 1,195: | ||
[h]=B, | [h]=B, | ||
[i]={"377748fd7bbf",1542740345,"[clang][Parse] Diagnose useless null statements / empty init-statements","[clang][Parse] Diagnose useless null statements / empty init-statements"}, | [i]={"377748fd7bbf",1542740345,"[clang][Parse] Diagnose useless null statements / empty init-statements","[clang][Parse] Diagnose useless null statements / empty init-statements"}, | ||
[j]={{"clang/lib/Parse/ParseStmt.cpp",1109,"/// Consume any extra semi-colons resulting in null statements,\n/// returning true if any tok::semi were consumed.\nbool Parser::ConsumeNullStmt(StmtVector &Stmts) {\n Diag(StartLoc, diag::warn_null_statement) << FixItHint::CreateRemoval(SourceRange(StartLoc, EndLoc));"}}, | [j]={{"clang/lib/Parse/ParseStmt.cpp",1109,"/// Consume any extra semi-colons resulting in null statements,\n/// returning true if any tok::semi were consumed.\nbool Parser::ConsumeNullStmt(StmtVector &Stmts) {\n // ...\n Diag(StartLoc, diag::warn_null_statement) << FixItHint::CreateRemoval(SourceRange(StartLoc, EndLoc));"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp"]={"clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp:16:3: warning: empty expression statement has no effect; remove unnecessary \';\' to silence this warning [-Wextra-semi-stmt]","clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp:28:5: warning: empty expression statement has no effect; remove unnecessary \';\' to silence this warning [-Wextra-semi-stmt]","clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp:31:5: warning: empty expression statement has no effect; remove unnecessary \';\' to silence this warning [-Wextra-semi-stmt]","clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp:35:5: warning: empty expression statement has no effect; remove unnecessary \';\' to silence this warning [-Wextra-semi-stmt]","clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp:46:18: warning: empty expression statement has no effect; remove unnecessary \';\' to silence this warning [-Wextra-semi-stmt]","clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp:48:19: warning: empty expression statement has no effect; remove unnecessary \';\' to silence this warning [-Wextra-semi-stmt]"} | ["clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp"]={"clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp:16:3: warning: empty expression statement has no effect; remove unnecessary \';\' to silence this warning [-Wextra-semi-stmt]","clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp:28:5: warning: empty expression statement has no effect; remove unnecessary \';\' to silence this warning [-Wextra-semi-stmt]","clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp:31:5: warning: empty expression statement has no effect; remove unnecessary \';\' to silence this warning [-Wextra-semi-stmt]","clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp:35:5: warning: empty expression statement has no effect; remove unnecessary \';\' to silence this warning [-Wextra-semi-stmt]","clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp:46:18: warning: empty expression statement has no effect; remove unnecessary \';\' to silence this warning [-Wextra-semi-stmt]","clang/test/Parser/extra-semi-resulting-in-nullstmt.cpp:48:19: warning: empty expression statement has no effect; remove unnecessary \';\' to silence this warning [-Wextra-semi-stmt]"} | ||
Line 1,212: | Line 1,212: | ||
[h]=Ub, | [h]=Ub, | ||
[i]={"261a89b0f70b",1434736265,"Introduce type nullability specifiers for C/C++.","Introduce type nullability specifiers for C/C++."}, | [i]={"261a89b0f70b",1434736265,"Introduce type nullability specifiers for C/C++.","Introduce type nullability specifiers for C/C++."}, | ||
[j]={{T,7662,"/// Distribute a nullability type attribute that cannot be applied to\n/// the type specifier to a pointer, block pointer, or member pointer\n/// declarator, complaining if necessary.\n///\n/// \\returns true if the nullability annotation was distributed, false\n/// otherwise.\nstatic bool distributeNullabilityTypeAttr(TypeProcessingState &state, QualType type, ParsedAttr &attr) {\n /// Attempt to move the attribute to the specified chunk.\n auto moveToChunk = [&](DeclaratorChunk &chunk, bool inFunction) -> bool {\n auto diag = state.getSema().Diag(attr.getLoc(), diag::warn_nullability_declspec) << DiagNullabilityKind(mapNullabilityAttrKind(attr.getKind()), attr.isContextSensitiveKeywordAttribute()) << type << static_cast<unsigned>(pointerKind);"}}, | [j]={{T,7662,"/// Distribute a nullability type attribute that cannot be applied to\n/// the type specifier to a pointer, block pointer, or member pointer\n/// declarator, complaining if necessary.\n///\n/// \\returns true if the nullability annotation was distributed, false\n/// otherwise.\nstatic bool distributeNullabilityTypeAttr(TypeProcessingState &state, QualType type, ParsedAttr &attr) {\n // ...\n /// Attempt to move the attribute to the specified chunk.\n auto moveToChunk = [&](DeclaratorChunk &chunk, bool inFunction) -> bool {\n // ...\n auto diag = state.getSema().Diag(attr.getLoc(), diag::warn_nullability_declspec) << DiagNullabilityKind(mapNullabilityAttrKind(attr.getKind()), attr.isContextSensitiveKeywordAttribute()) << type << static_cast<unsigned>(pointerKind);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/nullability-declspec.cpp"]={"clang/test/SemaCXX/nullability-declspec.cpp:5:1: error: nullability specifier \'_Nullable\' cannot be applied to non-pointer type \'int\'; did you mean to apply the specifier to the pointer? [-Wnullability-declspec]","clang/test/SemaCXX/nullability-declspec.cpp:6:1: error: nullability specifier \'_Nullable\' cannot be applied to non-pointer type \'int\'; did you mean to apply the specifier to the function pointer? [-Wnullability-declspec]","clang/test/SemaCXX/nullability-declspec.cpp:7:1: error: nullability specifier \'_Nonnull\' cannot be applied to non-pointer type \'int\'; did you mean to apply the specifier to the block pointer? [-Wnullability-declspec]","clang/test/SemaCXX/nullability-declspec.cpp:8:1: error: nullability specifier \'_Nonnull\' cannot be applied to non-pointer type \'int\'; did you mean to apply the specifier to the member pointer? [-Wnullability-declspec]","clang/test/SemaCXX/nullability-declspec.cpp:9:1: error: nullability specifier \'_Nonnull\' cannot be applied to non-pointer type \'int\'; did you mean to apply the specifier to the member function pointer? [-Wnullability-declspec]"} | ["clang/test/SemaCXX/nullability-declspec.cpp"]={"clang/test/SemaCXX/nullability-declspec.cpp:5:1: error: nullability specifier \'_Nullable\' cannot be applied to non-pointer type \'int\'; did you mean to apply the specifier to the pointer? [-Wnullability-declspec]","clang/test/SemaCXX/nullability-declspec.cpp:6:1: error: nullability specifier \'_Nullable\' cannot be applied to non-pointer type \'int\'; did you mean to apply the specifier to the function pointer? [-Wnullability-declspec]","clang/test/SemaCXX/nullability-declspec.cpp:7:1: error: nullability specifier \'_Nonnull\' cannot be applied to non-pointer type \'int\'; did you mean to apply the specifier to the block pointer? [-Wnullability-declspec]","clang/test/SemaCXX/nullability-declspec.cpp:8:1: error: nullability specifier \'_Nonnull\' cannot be applied to non-pointer type \'int\'; did you mean to apply the specifier to the member pointer? [-Wnullability-declspec]","clang/test/SemaCXX/nullability-declspec.cpp:9:1: error: nullability specifier \'_Nonnull\' cannot be applied to non-pointer type \'int\'; did you mean to apply the specifier to the member function pointer? [-Wnullability-declspec]"} | ||
Line 1,229: | Line 1,229: | ||
[h]=Ub, | [h]=Ub, | ||
[i]={"813a066f16df",1434737678,"Extend type nullability qualifiers for Objective-C.","Extend type nullability qualifiers for Objective-C."}, | [i]={"813a066f16df",1434737678,"Extend type nullability qualifiers for Objective-C.","Extend type nullability qualifiers for Objective-C."}, | ||
[j]={{"clang/lib/Parse/ParseObjc.cpp",848,"/// Diagnose redundant or conflicting nullability information.\nstatic void diagnoseRedundantPropertyNullability(Parser &P, ObjCDeclSpec &DS, NullabilityKind nullability, SourceLocation nullabilityLoc) {\n if (DS.getNullability() == nullability) {\n P.Diag(nullabilityLoc, diag::warn_nullability_duplicate) << DiagNullabilityKind(nullability, true) << SourceRange(DS.getNullabilityLoc());"},{T,7493,"/// Applies a nullability type specifier to the given type, if possible.\n///\n/// \\param state The type processing state.\n///\n/// \\param type The type to which the nullability specifier will be\n/// added. On success, this type will be updated appropriately.\n///\n/// \\param attr The attribute as written on the type.\n///\n/// \\param allowOnArrayType Whether to accept nullability specifiers on an\n/// array type (e.g., because it will decay to a pointer).\n///\n/// \\returns true if a problem has been diagnosed, false on success.\nstatic bool checkNullabilityTypeSpecifier(TypeProcessingState &state, QualType &type, ParsedAttr &attr, bool allowOnArrayType) {\n while (auto attributed = dyn_cast<AttributedType>(desugared.getTypePtr())) {\n // Check whether there is already a null\n if (auto existingNullability = attributed->getImmediateNullability()) {\n // Duplicated nullability.\n if (nullability == *existingNullability) {\n S.Diag(nullabilityLoc, diag::warn_nullability_duplicate) << DiagNullabilityKind(nullability, isContextSensitive) << FixItHint::CreateRemoval(nullabilityLoc);"}}, | [j]={{"clang/lib/Parse/ParseObjc.cpp",848,"/// Diagnose redundant or conflicting nullability information.\nstatic void diagnoseRedundantPropertyNullability(Parser &P, ObjCDeclSpec &DS, NullabilityKind nullability, SourceLocation nullabilityLoc) {\n if (DS.getNullability() == nullability) {\n P.Diag(nullabilityLoc, diag::warn_nullability_duplicate) << DiagNullabilityKind(nullability, true) << SourceRange(DS.getNullabilityLoc());"},{T,7493,"/// Applies a nullability type specifier to the given type, if possible.\n///\n/// \\param state The type processing state.\n///\n/// \\param type The type to which the nullability specifier will be\n/// added. On success, this type will be updated appropriately.\n///\n/// \\param attr The attribute as written on the type.\n///\n/// \\param allowOnArrayType Whether to accept nullability specifiers on an\n/// array type (e.g., because it will decay to a pointer).\n///\n/// \\returns true if a problem has been diagnosed, false on success.\nstatic bool checkNullabilityTypeSpecifier(TypeProcessingState &state, QualType &type, ParsedAttr &attr, bool allowOnArrayType) {\n // ...\n while (auto attributed = dyn_cast<AttributedType>(desugared.getTypePtr())) {\n // Check whether there is already a null\n if (auto existingNullability = attributed->getImmediateNullability()) {\n // Duplicated nullability.\n if (nullability == *existingNullability) {\n S.Diag(nullabilityLoc, diag::warn_nullability_duplicate) << DiagNullabilityKind(nullability, isContextSensitive) << FixItHint::CreateRemoval(nullabilityLoc);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/nullability.m"]={"clang/test/SemaObjC/nullability.m:40:4: warning: duplicate nullability specifier \'nonnull\' [-Wnullability]","clang/test/SemaObjC/nullability.m:46:25: warning: duplicate nullability specifier \'nonnull\' [-Wnullability]","clang/test/SemaObjC/nullability.m:49:35: warning: duplicate nullability specifier \'nullable\' [-Wnullability]","clang/test/SemaObjC/nullability.m:57:25: warning: duplicate nullability specifier \'nonnull\' [-Wnullability]"} | ["clang/test/SemaObjC/nullability.m"]={"clang/test/SemaObjC/nullability.m:40:4: warning: duplicate nullability specifier \'nonnull\' [-Wnullability]","clang/test/SemaObjC/nullability.m:46:25: warning: duplicate nullability specifier \'nonnull\' [-Wnullability]","clang/test/SemaObjC/nullability.m:49:35: warning: duplicate nullability specifier \'nullable\' [-Wnullability]","clang/test/SemaObjC/nullability.m:57:25: warning: duplicate nullability specifier \'nonnull\' [-Wnullability]"} | ||
Line 1,246: | Line 1,246: | ||
[h]=Ub, | [h]=Ub, | ||
[i]={"3b917fe019ff",1478820510,"Warn when \'assume_nonnull\' infers nullability within an array.","Warn when \'assume_nonnull\' infers nullability within an array."}, | [i]={"3b917fe019ff",1478820510,"Warn when \'assume_nonnull\' infers nullability within an array.","Warn when \'assume_nonnull\' infers nullability within an array."}, | ||
[j]={{T,4946,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n // Local function that checks the nullability for a given pointer declarator.\n // Returns true if _Nonnull was inferred.\n auto inferPointerNullability = [&](SimplePointerKind pointerKind, SourceLocation pointerLoc, SourceLocation pointerEndLoc, ParsedAttributesView &attrs, AttributePool &Pool) -> ParsedAttr * {\n // If we\'re supposed to infer nullability, do so now.\n if (inferNullability && !inferNullabilityInnerOnlyComplete) {\n if (pointerLoc.isValid() && complainAboutInferringWithinChunk != PointerWrappingDeclaratorKind::None) {\n auto Diag = S.Diag(pointerLoc, diag::warn_nullability_inferred_on_nested_type);"}}, | [j]={{T,4946,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n // ...\n // Local function that checks the nullability for a given pointer declarator.\n // Returns true if _Nonnull was inferred.\n auto inferPointerNullability = [&](SimplePointerKind pointerKind, SourceLocation pointerLoc, SourceLocation pointerEndLoc, ParsedAttributesView &attrs, AttributePool &Pool) -> ParsedAttr * {\n // ...\n // If we\'re supposed to infer nullability, do so now.\n if (inferNullability && !inferNullabilityInnerOnlyComplete) {\n // ...\n if (pointerLoc.isValid() && complainAboutInferringWithinChunk != PointerWrappingDeclaratorKind::None) {\n auto Diag = S.Diag(pointerLoc, diag::warn_nullability_inferred_on_nested_type);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/FixIt/nullability.mm"]={"clang/test/FixIt/nullability.mm:12:13: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:15:12: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:18:13: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:25:8: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:30:8: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:34:13: warning: inferring \'_Nonnull\' for pointer type within reference is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:37:13: warning: inferring \'_Nonnull\' for pointer type within reference is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:40:13: warning: inferring \'_Nonnull\' for pointer type within reference is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:43:13: warning: inferring \'_Nonnull\' for pointer type within reference is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:46:13: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:49:13: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:52:8: warning: inferring \'_Nonnull\' for pointer type within reference is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:54:8: warning: inferring \'_Nonnull\' for pointer type within reference is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:58:25: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:61:26: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:64:27: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:67:28: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]"} | ["clang/test/FixIt/nullability.mm"]={"clang/test/FixIt/nullability.mm:12:13: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:15:12: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:18:13: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:25:8: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:30:8: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:34:13: warning: inferring \'_Nonnull\' for pointer type within reference is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:37:13: warning: inferring \'_Nonnull\' for pointer type within reference is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:40:13: warning: inferring \'_Nonnull\' for pointer type within reference is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:43:13: warning: inferring \'_Nonnull\' for pointer type within reference is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:46:13: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:49:13: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:52:8: warning: inferring \'_Nonnull\' for pointer type within reference is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:54:8: warning: inferring \'_Nonnull\' for pointer type within reference is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:58:25: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:61:26: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:64:27: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]","clang/test/FixIt/nullability.mm:67:28: warning: inferring \'_Nonnull\' for pointer type within array is deprecated [-Wnullability-inferred-on-nested-type]"} | ||
Line 1,264: | Line 1,264: | ||
[h]=Ub, | [h]=Ub, | ||
[i]={"b4866e85e5ff",1434737599,"Diagnose unsafe uses of nil and __nonnull pointers.","Diagnose unsafe uses of nil and __nonnull pointers."}, | [i]={"b4866e85e5ff",1434737599,"Diagnose unsafe uses of nil and __nonnull pointers.","Diagnose unsafe uses of nil and __nonnull pointers."}, | ||
[j]={{Z,585,"void Sema::diagnoseNullableToNonnullConversion(QualType DstType, QualType SrcType, SourceLocation Loc) {\n Diag(Loc, diag::warn_nullability_lost) << SrcType << DstType;"}}, | [j]={{Z,585,"void Sema::diagnoseNullableToNonnullConversion(QualType DstType, QualType SrcType, SourceLocation Loc) {\n // ...\n Diag(Loc, diag::warn_nullability_lost) << SrcType << DstType;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/nullability.m"]={"clang/test/SemaObjC/nullability.m:252:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:255:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:256:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:257:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:258:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:260:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:264:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:267:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:268:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:269:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:270:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable_result\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]"} | ["clang/test/SemaObjC/nullability.m"]={"clang/test/SemaObjC/nullability.m:252:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:255:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:256:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:257:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:258:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:260:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:264:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:267:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:268:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:269:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]","clang/test/SemaObjC/nullability.m:270:7: warning: implicit conversion from nullable pointer \'NSFoo * _Nullable_result\' to non-nullable pointer type \'NSFoo * _Nonnull\' [-Wnullable-to-nonnull-conversion]"} | ||
Line 1,281: | Line 1,281: | ||
[h]=Ub, | [h]=Ub, | ||
[i]={"bec595a64121",1434738465,"Check for consistent use of nullability type specifiers in a header.","Check for consistent use of nullability type specifiers in a header."}, | [i]={"bec595a64121",1434738465,"Check for consistent use of nullability type specifiers in a header.","Check for consistent use of nullability type specifiers in a header."}, | ||
[j]={{T,4467,"static void emitNullabilityConsistencyWarning(Sema &S, SimplePointerKind PointerKind, SourceLocation PointerLoc, SourceLocation PointerEndLoc) {\n if (PointerKind == SimplePointerKind::Array) {\n } else {\n S.Diag(PointerLoc, diag::warn_nullability_missing) << static_cast<unsigned>(PointerKind);"},{T,4510,"/// Complains about missing nullability if the file containing \\p pointerLoc\n/// has other uses of nullability (either the keywords or the \\c assume_nonnull\n/// pragma).\n///\n/// If the file has \\e not seen other uses of nullability, this particular\n/// pointer is saved for possible later diagnosis. See recordNullabilitySeen().\nstatic void checkNullabilityConsistency(Sema &S, SimplePointerKind pointerKind, SourceLocation pointerLoc, SourceLocation pointerEndLoc = SourceLocation()) {\n if (!fileNullability.SawTypeNullability) {\n if (pointerKind == SimplePointerKind::Array)\n else\n diagKind = diag::warn_nullability_missing;"}}, | [j]={{T,4467,"static void emitNullabilityConsistencyWarning(Sema &S, SimplePointerKind PointerKind, SourceLocation PointerLoc, SourceLocation PointerEndLoc) {\n // ...\n if (PointerKind == SimplePointerKind::Array) {\n // ...\n } else {\n S.Diag(PointerLoc, diag::warn_nullability_missing) << static_cast<unsigned>(PointerKind);"},{T,4510,"/// Complains about missing nullability if the file containing \\p pointerLoc\n/// has other uses of nullability (either the keywords or the \\c assume_nonnull\n/// pragma).\n///\n/// If the file has \\e not seen other uses of nullability, this particular\n/// pointer is saved for possible later diagnosis. See recordNullabilitySeen().\nstatic void checkNullabilityConsistency(Sema &S, SimplePointerKind pointerKind, SourceLocation pointerLoc, SourceLocation pointerEndLoc = SourceLocation()) {\n // ...\n if (!fileNullability.SawTypeNullability) {\n // ...\n if (pointerKind == SimplePointerKind::Array)\n // ...\n else\n diagKind = diag::warn_nullability_missing;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjCXX/nullability-pragmas.mm"]={"clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:11:13: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:43:12: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:43:13: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:46:10: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:51:14: warning: block pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:51:16: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:57:9: warning: block pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:57:19: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:64:14: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:64:15: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:74:18: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:80:19: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:80:20: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:90:13: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:114:12: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:117:10: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:120:10: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:125:10: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:130:4: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]"} | ["clang/test/SemaObjCXX/nullability-pragmas.mm"]={"clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:11:13: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:43:12: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:43:13: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:46:10: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:51:14: warning: block pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:51:16: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:57:9: warning: block pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:57:19: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:64:14: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:64:15: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:74:18: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:80:19: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:80:20: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:90:13: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:114:12: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:117:10: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:120:10: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:125:10: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]","clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h:130:4: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]"} | ||
Line 1,298: | Line 1,298: | ||
[h]=Ub, | [h]=Ub, | ||
[i]={"f85a9b06b826",1478820506,"Add -Wnullability-completeness-on-arrays.","Add -Wnullability-completeness-on-arrays."}, | [i]={"f85a9b06b826",1478820506,"Add -Wnullability-completeness-on-arrays.","Add -Wnullability-completeness-on-arrays."}, | ||
[j]={{T,4465,"static void emitNullabilityConsistencyWarning(Sema &S, SimplePointerKind PointerKind, SourceLocation PointerLoc, SourceLocation PointerEndLoc) {\n if (PointerKind == SimplePointerKind::Array) {\n S.Diag(PointerLoc, diag::warn_nullability_missing_array);"},{T,4508,"/// Complains about missing nullability if the file containing \\p pointerLoc\n/// has other uses of nullability (either the keywords or the \\c assume_nonnull\n/// pragma).\n///\n/// If the file has \\e not seen other uses of nullability, this particular\n/// pointer is saved for possible later diagnosis. See recordNullabilitySeen().\nstatic void checkNullabilityConsistency(Sema &S, SimplePointerKind pointerKind, SourceLocation pointerLoc, SourceLocation pointerEndLoc = SourceLocation()) {\n if (!fileNullability.SawTypeNullability) {\n if (pointerKind == SimplePointerKind::Array)\n diagKind = diag::warn_nullability_missing_array;"}}, | [j]={{T,4465,"static void emitNullabilityConsistencyWarning(Sema &S, SimplePointerKind PointerKind, SourceLocation PointerLoc, SourceLocation PointerEndLoc) {\n // ...\n if (PointerKind == SimplePointerKind::Array) {\n S.Diag(PointerLoc, diag::warn_nullability_missing_array);"},{T,4508,"/// Complains about missing nullability if the file containing \\p pointerLoc\n/// has other uses of nullability (either the keywords or the \\c assume_nonnull\n/// pragma).\n///\n/// If the file has \\e not seen other uses of nullability, this particular\n/// pointer is saved for possible later diagnosis. See recordNullabilitySeen().\nstatic void checkNullabilityConsistency(Sema &S, SimplePointerKind pointerKind, SourceLocation pointerLoc, SourceLocation pointerEndLoc = SourceLocation()) {\n // ...\n if (!fileNullability.SawTypeNullability) {\n // ...\n if (pointerKind == SimplePointerKind::Array)\n diagKind = diag::warn_nullability_missing_array;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/FixIt/nullability.mm"]={"clang/test/FixIt/Inputs/nullability.h:3:26: warning: array parameter is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness-on-arrays]","clang/test/FixIt/Inputs/nullability.h:9:34: warning: array parameter is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness-on-arrays]","clang/test/FixIt/Inputs/nullability.h:15:34: warning: array parameter is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness-on-arrays]"} | ["clang/test/FixIt/nullability.mm"]={"clang/test/FixIt/Inputs/nullability.h:3:26: warning: array parameter is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness-on-arrays]","clang/test/FixIt/Inputs/nullability.h:9:34: warning: array parameter is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness-on-arrays]","clang/test/FixIt/Inputs/nullability.h:15:34: warning: array parameter is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness-on-arrays]"} | ||
Line 1,315: | Line 1,315: | ||
[h]=q, | [h]=q, | ||
[i]={"1488ee4bd541",1552020337,"[ObjC] Emit a boxed expression as a compile-time constant if the","[ObjC] Emit a boxed expression as a compile-time constant if the"}, | [i]={"1488ee4bd541",1552020337,"[ObjC] Emit a boxed expression as a compile-time constant if the","[ObjC] Emit a boxed expression as a compile-time constant if the"}, | ||
[j]={{cb,552,"ExprResult Sema::BuildObjCBoxedExpr(SourceRange SR, Expr *ValueExpr) {\n if (const PointerType *PT = ValueType->getAs<PointerType>()) {\n if (Context.hasSameUnqualifiedType(PointeeType, Context.CharTy)) {\n // The boxed expression can be emitted as a compile time constant if it is\n // a string literal whose character encoding is compatible with UTF-8.\n if (auto *CE = dyn_cast<ImplicitCastExpr>(ValueExpr))\n if (CE->getCastKind() == CK_ArrayToPointerDecay)\n if (auto *SL = dyn_cast<StringLiteral>(CE->getSubExpr()->IgnoreParens())) {\n Diag(SL->getBeginLoc(), diag::warn_objc_boxing_invalid_utf8_string) << NSStringPointer << SL->getSourceRange();"}}, | [j]={{cb,552,"ExprResult Sema::BuildObjCBoxedExpr(SourceRange SR, Expr *ValueExpr) {\n // ...\n if (const PointerType *PT = ValueType->getAs<PointerType>()) {\n // ...\n if (Context.hasSameUnqualifiedType(PointeeType, Context.CharTy)) {\n // ...\n // The boxed expression can be emitted as a compile time constant if it is\n // a string literal whose character encoding is compatible with UTF-8.\n if (auto *CE = dyn_cast<ImplicitCastExpr>(ValueExpr))\n if (CE->getCastKind() == CK_ArrayToPointerDecay)\n if (auto *SL = dyn_cast<StringLiteral>(CE->getSubExpr()->IgnoreParens())) {\n // ...\n Diag(SL->getBeginLoc(), diag::warn_objc_boxing_invalid_utf8_string) << NSStringPointer << SL->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/transfer-boxed-string-nullability.m"]={"clang/test/SemaObjC/transfer-boxed-string-nullability.m:26:18: warning: string is ill-formed as UTF-8 and will become a null \'NSString *\' when boxed [-Wobjc-boxing]","clang/test/SemaObjC/transfer-boxed-string-nullability.m:27:18: warning: string is ill-formed as UTF-8 and will become a null \'NSString *\' when boxed [-Wobjc-boxing]"} | ["clang/test/SemaObjC/transfer-boxed-string-nullability.m"]={"clang/test/SemaObjC/transfer-boxed-string-nullability.m:26:18: warning: string is ill-formed as UTF-8 and will become a null \'NSString *\' when boxed [-Wobjc-boxing]","clang/test/SemaObjC/transfer-boxed-string-nullability.m:27:18: warning: string is ill-formed as UTF-8 and will become a null \'NSString *\' when boxed [-Wobjc-boxing]"} | ||
Line 1,333: | Line 1,333: | ||
[h]=q, | [h]=q, | ||
[i]={"6485fe4b07b0",1410304254,"Objective-C. Under a special flag, -Wcstring-format-directive,","Objective-C. Under a special flag, -Wcstring-format-directive,"}, | [i]={"6485fe4b07b0",1410304254,"Objective-C. Under a special flag, -Wcstring-format-directive,","Objective-C. Under a special flag, -Wcstring-format-directive,"}, | ||
[j]={{x,6464,"/// Diagnose use of %s directive in an NSString which is being passed\n/// as formatting string to formatting method.\nstatic void DiagnoseCStringFormatDirectiveInCFAPI(Sema &S, const NamedDecl *FDecl, Expr **Args, unsigned NumArgs) {\n if (S.FormatStringHasSArg(FormatString)) {\n S.Diag(FormatExpr->getExprLoc(), diag::warn_objc_cdirective_format_string) << \"%s\" << 1 << 1;"},{cb,2571,"/// Diagnose use of %s directive in an NSString which is being passed\n/// as formatting string to formatting method.\nstatic void DiagnoseCStringFormatDirectiveInObjCAPI(Sema &S, ObjCMethodDecl *Method, Selector Sel, Expr **Args, unsigned NumArgs) {\n if (ObjCStringLiteral *OSL = dyn_cast<ObjCStringLiteral>(FormatExpr->IgnoreParenImpCasts())) {\n if (S.FormatStringHasSArg(FormatString)) {\n S.Diag(FormatExpr->getExprLoc(), diag::warn_objc_cdirective_format_string) << \"%s\" << 0 << 0;"}}, | [j]={{x,6464,"/// Diagnose use of %s directive in an NSString which is being passed\n/// as formatting string to formatting method.\nstatic void DiagnoseCStringFormatDirectiveInCFAPI(Sema &S, const NamedDecl *FDecl, Expr **Args, unsigned NumArgs) {\n // ...\n if (S.FormatStringHasSArg(FormatString)) {\n S.Diag(FormatExpr->getExprLoc(), diag::warn_objc_cdirective_format_string) << \"%s\" << 1 << 1;"},{cb,2571,"/// Diagnose use of %s directive in an NSString which is being passed\n/// as formatting string to formatting method.\nstatic void DiagnoseCStringFormatDirectiveInObjCAPI(Sema &S, ObjCMethodDecl *Method, Selector Sel, Expr **Args, unsigned NumArgs) {\n // ...\n if (ObjCStringLiteral *OSL = dyn_cast<ObjCStringLiteral>(FormatExpr->IgnoreParenImpCasts())) {\n // ...\n if (S.FormatStringHasSArg(FormatString)) {\n S.Diag(FormatExpr->getExprLoc(), diag::warn_objc_cdirective_format_string) << \"%s\" << 0 << 0;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/format-cstrings-warning.m"]={"clang/test/SemaObjC/format-cstrings-warning.m:33:24: warning: using %s directive in NSString which is being passed as a formatting argument to the formatting method [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:34:41: warning: using %s directive in NSString which is being passed as a formatting argument to the formatting method [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:35:25: warning: using %s directive in NSString which is being passed as a formatting argument to the formatting method [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:36:25: warning: using %s directive in NSString which is being passed as a formatting argument to the formatting method [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:37:39: warning: using %s directive in NSString which is being passed as a formatting argument to the formatting method [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:63:64: warning: using %s directive in CFString which is being passed as a formatting argument to the formatting CFfunction [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:64:82: warning: using %s directive in CFString which is being passed as a formatting argument to the formatting CFfunction [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:74:11: warning: using %s directive in CFString which is being passed as a formatting argument to the formatting CFfunction [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:76:43: warning: using %s directive in CFString which is being passed as a formatting argument to the formatting CFfunction [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:77:15: warning: using %s directive in CFString which is being passed as a formatting argument to the formatting CFfunction [-Wcstring-format-directive]"} | ["clang/test/SemaObjC/format-cstrings-warning.m"]={"clang/test/SemaObjC/format-cstrings-warning.m:33:24: warning: using %s directive in NSString which is being passed as a formatting argument to the formatting method [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:34:41: warning: using %s directive in NSString which is being passed as a formatting argument to the formatting method [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:35:25: warning: using %s directive in NSString which is being passed as a formatting argument to the formatting method [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:36:25: warning: using %s directive in NSString which is being passed as a formatting argument to the formatting method [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:37:39: warning: using %s directive in NSString which is being passed as a formatting argument to the formatting method [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:63:64: warning: using %s directive in CFString which is being passed as a formatting argument to the formatting CFfunction [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:64:82: warning: using %s directive in CFString which is being passed as a formatting argument to the formatting CFfunction [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:74:11: warning: using %s directive in CFString which is being passed as a formatting argument to the formatting CFfunction [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:76:43: warning: using %s directive in CFString which is being passed as a formatting argument to the formatting CFfunction [-Wcstring-format-directive]","clang/test/SemaObjC/format-cstrings-warning.m:77:15: warning: using %s directive in CFString which is being passed as a formatting argument to the formatting CFfunction [-Wcstring-format-directive]"} | ||
Line 1,350: | Line 1,350: | ||
[h]=q, | [h]=q, | ||
[i]={"e1d882c726b5",1425491752,"New ObjC warning: circular containers.","New ObjC warning: circular containers."}, | [i]={"e1d882c726b5",1425491752,"New ObjC warning: circular containers.","New ObjC warning: circular containers."}, | ||
[j]={{x,17627,"void Sema::CheckObjCCircularContainer(ObjCMessageExpr *Message) {\n if (Message->getReceiverKind() == ObjCMessageExpr::SuperInstance) {\n if (DeclRefExpr *ArgRE = dyn_cast<DeclRefExpr>(Arg)) {\n if (ArgRE->isObjCSelfExpr()) {\n Diag(Message->getSourceRange().getBegin(), diag::warn_objc_circular_container) << ArgRE->getDecl() << StringRef(\"\'super\'\");"},{x,17643,"void Sema::CheckObjCCircularContainer(ObjCMessageExpr *Message) {\n if (Message->getReceiverKind() == ObjCMessageExpr::SuperInstance) {\n } else {\n if (DeclRefExpr *ReceiverRE = dyn_cast<DeclRefExpr>(Receiver)) {\n if (DeclRefExpr *ArgRE = dyn_cast<DeclRefExpr>(Arg)) {\n if (ReceiverRE->getDecl() == ArgRE->getDecl()) {\n Diag(Message->getSourceRange().getBegin(), diag::warn_objc_circular_container) << Decl << Decl;"},{x,17657,"void Sema::CheckObjCCircularContainer(ObjCMessageExpr *Message) {\n if (Message->getReceiverKind() == ObjCMessageExpr::SuperInstance) {\n } else {\n if (DeclRefExpr *ReceiverRE = dyn_cast<DeclRefExpr>(Receiver)) {\n } else if (ObjCIvarRefExpr *IvarRE = dyn_cast<ObjCIvarRefExpr>(Receiver)) {\n if (ObjCIvarRefExpr *IvarArgRE = dyn_cast<ObjCIvarRefExpr>(Arg)) {\n if (IvarRE->getDecl() == IvarArgRE->getDecl()) {\n Diag(Message->getSourceRange().getBegin(), diag::warn_objc_circular_container) << Decl << Decl;"}}, | [j]={{x,17627,"void Sema::CheckObjCCircularContainer(ObjCMessageExpr *Message) {\n // ...\n if (Message->getReceiverKind() == ObjCMessageExpr::SuperInstance) {\n if (DeclRefExpr *ArgRE = dyn_cast<DeclRefExpr>(Arg)) {\n if (ArgRE->isObjCSelfExpr()) {\n Diag(Message->getSourceRange().getBegin(), diag::warn_objc_circular_container) << ArgRE->getDecl() << StringRef(\"\'super\'\");"},{x,17643,"void Sema::CheckObjCCircularContainer(ObjCMessageExpr *Message) {\n // ...\n if (Message->getReceiverKind() == ObjCMessageExpr::SuperInstance) {\n // ...\n } else {\n // ...\n if (DeclRefExpr *ReceiverRE = dyn_cast<DeclRefExpr>(Receiver)) {\n if (DeclRefExpr *ArgRE = dyn_cast<DeclRefExpr>(Arg)) {\n if (ReceiverRE->getDecl() == ArgRE->getDecl()) {\n // ...\n Diag(Message->getSourceRange().getBegin(), diag::warn_objc_circular_container) << Decl << Decl;"},{x,17657,"void Sema::CheckObjCCircularContainer(ObjCMessageExpr *Message) {\n // ...\n if (Message->getReceiverKind() == ObjCMessageExpr::SuperInstance) {\n // ...\n } else {\n // ...\n if (DeclRefExpr *ReceiverRE = dyn_cast<DeclRefExpr>(Receiver)) {\n // ...\n } else if (ObjCIvarRefExpr *IvarRE = dyn_cast<ObjCIvarRefExpr>(Receiver)) {\n if (ObjCIvarRefExpr *IvarArgRE = dyn_cast<ObjCIvarRefExpr>(Arg)) {\n if (IvarRE->getDecl() == IvarArgRE->getDecl()) {\n // ...\n Diag(Message->getSourceRange().getBegin(), diag::warn_objc_circular_container) << Decl << Decl;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/circular-container.m"]={"clang/test/SemaObjC/circular-container.m:57:3: warning: adding \'_array\' to \'_array\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:58:3: warning: adding \'_dictionary\' to \'_dictionary\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:59:3: warning: adding \'_set\' to \'_set\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:60:3: warning: adding \'_countedSet\' to \'_countedSet\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:61:3: warning: adding \'_orderedSet\' to \'_orderedSet\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:65:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:69:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:73:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:77:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:81:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:87:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:91:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:95:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:99:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:103:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:109:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:110:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:111:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:112:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:113:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:119:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:120:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:121:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:122:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:128:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:134:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:140:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:141:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:142:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:143:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:144:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:154:3: warning: adding \'self\' to \'super\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:156:3: warning: adding \'self\' to \'self\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:165:3: warning: adding \'self\' to \'super\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:167:3: warning: adding \'self\' to \'self\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:176:3: warning: adding \'self\' to \'super\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:178:3: warning: adding \'self\' to \'self\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:186:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:187:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:188:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:189:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:190:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:196:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:197:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:198:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:199:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:205:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]"} | ["clang/test/SemaObjC/circular-container.m"]={"clang/test/SemaObjC/circular-container.m:57:3: warning: adding \'_array\' to \'_array\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:58:3: warning: adding \'_dictionary\' to \'_dictionary\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:59:3: warning: adding \'_set\' to \'_set\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:60:3: warning: adding \'_countedSet\' to \'_countedSet\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:61:3: warning: adding \'_orderedSet\' to \'_orderedSet\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:65:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:69:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:73:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:77:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:81:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:87:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:91:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:95:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:99:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:103:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:109:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:110:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:111:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:112:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:113:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:119:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:120:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:121:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:122:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:128:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:134:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:140:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:141:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:142:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:143:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:144:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:154:3: warning: adding \'self\' to \'super\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:156:3: warning: adding \'self\' to \'self\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:165:3: warning: adding \'self\' to \'super\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:167:3: warning: adding \'self\' to \'self\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:176:3: warning: adding \'self\' to \'super\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:178:3: warning: adding \'self\' to \'self\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:186:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:187:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:188:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:189:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:190:3: warning: adding \'a\' to \'a\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:196:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:197:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:198:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:199:3: warning: adding \'d\' to \'d\' might cause circular dependency in container [-Wobjc-circular-container]","clang/test/SemaObjC/circular-container.m:205:3: warning: adding \'s\' to \'s\' might cause circular dependency in container [-Wobjc-circular-container]"} | ||
Line 1,367: | Line 1,367: | ||
[h]=Zb, | [h]=Zb, | ||
[i]={"5054cb04673f",1436241502,"Warn when an Objective-C collection literal element is converted to an incompatible type.","Warn when an Objective-C collection literal element is converted to an incompatible type."}, | [i]={"5054cb04673f",1436241502,"Warn when an Objective-C collection literal element is converted to an incompatible type.","Warn when an Objective-C collection literal element is converted to an incompatible type."}, | ||
[j]={{x,14509,"/// Check a single element within a collection literal against the\n/// target element type.\nstatic void checkObjCCollectionLiteralElement(Sema &S, QualType TargetElementType, Expr *Element, unsigned ElementKind) {\n if (ElementType->getAs<ObjCObjectPointerType>() && S.CheckSingleAssignmentConstraints(TargetElementType, ElementResult, false, false) != Sema::Compatible) {\n S.Diag(Element->getBeginLoc(), diag::warn_objc_collection_literal_element) << ElementType << ElementKind << TargetElementType << Element->getSourceRange();"}}, | [j]={{x,14509,"/// Check a single element within a collection literal against the\n/// target element type.\nstatic void checkObjCCollectionLiteralElement(Sema &S, QualType TargetElementType, Expr *Element, unsigned ElementKind) {\n // ...\n if (ElementType->getAs<ObjCObjectPointerType>() && S.CheckSingleAssignmentConstraints(TargetElementType, ElementResult, false, false) != Sema::Compatible) {\n S.Diag(Element->getBeginLoc(), diag::warn_objc_collection_literal_element) << ElementType << ElementKind << TargetElementType << Element->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/parameterized_classes_collection_literal.m"]={"clang/test/SemaObjC/parameterized_classes_collection_literal.m:39:36: warning: object of type \'NSNumber *\' is not compatible with array element type \'NSString *\' [-Wobjc-literal-conversion]","clang/test/SemaObjC/parameterized_classes_collection_literal.m:41:35: warning: object of type \'NSArray *\' is not compatible with array element type \'NSString *\' [-Wobjc-literal-conversion]","clang/test/SemaObjC/parameterized_classes_collection_literal.m:44:47: warning: object of type \'NSString *\' is not compatible with array element type \'NSArray<NSString *> *\' [-Wobjc-literal-conversion]","clang/test/SemaObjC/parameterized_classes_collection_literal.m:45:48: warning: object of type \'NSNumber *\' is not compatible with array element type \'NSString *\' [-Wobjc-literal-conversion]","clang/test/SemaObjC/parameterized_classes_collection_literal.m:51:5: warning: object of type \'NSNumber *\' is not compatible with dictionary key type \'NSString *\' [-Wobjc-literal-conversion]","clang/test/SemaObjC/parameterized_classes_collection_literal.m:52:16: warning: object of type \'NSString *\' is not compatible with dictionary value type \'NSNumber *\' [-Wobjc-literal-conversion]"} | ["clang/test/SemaObjC/parameterized_classes_collection_literal.m"]={"clang/test/SemaObjC/parameterized_classes_collection_literal.m:39:36: warning: object of type \'NSNumber *\' is not compatible with array element type \'NSString *\' [-Wobjc-literal-conversion]","clang/test/SemaObjC/parameterized_classes_collection_literal.m:41:35: warning: object of type \'NSArray *\' is not compatible with array element type \'NSString *\' [-Wobjc-literal-conversion]","clang/test/SemaObjC/parameterized_classes_collection_literal.m:44:47: warning: object of type \'NSString *\' is not compatible with array element type \'NSArray<NSString *> *\' [-Wobjc-literal-conversion]","clang/test/SemaObjC/parameterized_classes_collection_literal.m:45:48: warning: object of type \'NSNumber *\' is not compatible with array element type \'NSString *\' [-Wobjc-literal-conversion]","clang/test/SemaObjC/parameterized_classes_collection_literal.m:51:5: warning: object of type \'NSNumber *\' is not compatible with dictionary key type \'NSString *\' [-Wobjc-literal-conversion]","clang/test/SemaObjC/parameterized_classes_collection_literal.m:52:16: warning: object of type \'NSString *\' is not compatible with dictionary value type \'NSNumber *\' [-Wobjc-literal-conversion]"} | ||
Line 1,384: | Line 1,384: | ||
[h]=q, | [h]=q, | ||
[i]={"22bfa2c28bdb",1386105096,"[objc] Emit a warning when the implementation of a designated initializer does not chain to","[objc] Emit a warning when the implementation of a designated initializer does not chain to"}, | [i]={"22bfa2c28bdb",1386105096,"[objc] Emit a warning when the implementation of a designated initializer does not chain to","[objc] Emit a warning when the implementation of a designated initializer does not chain to"}, | ||
[j]={{H,15851,"Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation) {\n {\n if (FD) {\n } else if (ObjCMethodDecl *MD = dyn_cast_or_null<ObjCMethodDecl>(dcl)) {\n if (FSI->ObjCWarnForNoDesignatedInitChain) {\n // Don\'t issue this warning for unavailable inits or direct subclasses\n // of NSObject.\n if (!MD->isUnavailable() && !superIsNSObject(MD)) {\n Diag(MD->getLocation(), diag::warn_objc_designated_init_missing_super_call);"}}, | [j]={{H,15851,"Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation) {\n // ...\n {\n // ...\n if (FD) {\n // ...\n } else if (ObjCMethodDecl *MD = dyn_cast_or_null<ObjCMethodDecl>(dcl)) {\n // ...\n if (FSI->ObjCWarnForNoDesignatedInitChain) {\n // ...\n // Don\'t issue this warning for unavailable inits or direct subclasses\n // of NSObject.\n if (!MD->isUnavailable() && !superIsNSObject(MD)) {\n Diag(MD->getLocation(), diag::warn_objc_designated_init_missing_super_call);"}}, | ||
[p]={ | [p]={ | ||
[ed]={"clang/test/SemaObjC/attr-designated-init.m:64:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:70:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:73:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:108:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:119:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:132:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:187:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:238:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:294:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:303:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:410:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]"} | [ed]={"clang/test/SemaObjC/attr-designated-init.m:64:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:70:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:73:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:108:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:119:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:132:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:187:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:238:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:294:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:303:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:410:1: warning: designated initializer missing a \'super\' call to a designated initializer of the super class [-Wobjc-designated-initializers]"} | ||
Line 1,401: | Line 1,401: | ||
[h]=q, | [h]=q, | ||
[i]={"fcded9b93a96",1386105103,"[objc] Emit warnings when the implementation of a designated initializer calls on","[objc] Emit warnings when the implementation of a designated initializer calls on"}, | [i]={"fcded9b93a96",1386105103,"[objc] Emit warnings when the implementation of a designated initializer calls on","[objc] Emit warnings when the implementation of a designated initializer calls on"}, | ||
[j]={{cb,3208,"/// 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 (DIFunctionScopeInfo && DIFunctionScopeInfo->ObjCIsDesignatedInit && (SuperLoc.isValid() || isSelfExpr(Receiver))) {\n if (!isDesignatedInitChain) {\n Diag(SelLoc, SuperLoc.isValid() ? diag::warn_objc_designated_init_non_designated_init_call : diag::warn_objc_designated_init_non_super_designated_init_call);"}}, | [j]={{cb,3208,"/// 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 // ...\n if (DIFunctionScopeInfo && DIFunctionScopeInfo->ObjCIsDesignatedInit && (SuperLoc.isValid() || isSelfExpr(Receiver))) {\n // ...\n if (!isDesignatedInitChain) {\n // ...\n Diag(SelLoc, SuperLoc.isValid() ? diag::warn_objc_designated_init_non_designated_init_call : diag::warn_objc_designated_init_non_super_designated_init_call);"}}, | ||
[p]={ | [p]={ | ||
[ed]={"clang/test/SemaObjC/attr-designated-init.m:71:17: warning: designated initializer invoked a non-designated initializer [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:109:17: warning: designated initializer invoked a non-designated initializer [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:295:18: warning: designated initializer invoked a non-designated initializer [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:304:18: warning: designated initializer invoked a non-designated initializer [-Wobjc-designated-initializers]"} | [ed]={"clang/test/SemaObjC/attr-designated-init.m:71:17: warning: designated initializer invoked a non-designated initializer [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:109:17: warning: designated initializer invoked a non-designated initializer [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:295:18: warning: designated initializer invoked a non-designated initializer [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:304:18: warning: designated initializer invoked a non-designated initializer [-Wobjc-designated-initializers]"} | ||
Line 1,418: | Line 1,418: | ||
[h]=q, | [h]=q, | ||
[i]={"fcded9b93a96",1386105103,"[objc] Emit warnings when the implementation of a designated initializer calls on","[objc] Emit warnings when the implementation of a designated initializer calls on"}, | [i]={"fcded9b93a96",1386105103,"[objc] Emit warnings when the implementation of a designated initializer calls on","[objc] Emit warnings when the implementation of a designated initializer calls on"}, | ||
[j]={{cb,3209,"/// 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 (DIFunctionScopeInfo && DIFunctionScopeInfo->ObjCIsDesignatedInit && (SuperLoc.isValid() || isSelfExpr(Receiver))) {\n if (!isDesignatedInitChain) {\n Diag(SelLoc, SuperLoc.isValid() ? diag::warn_objc_designated_init_non_designated_init_call : diag::warn_objc_designated_init_non_super_designated_init_call);"}}, | [j]={{cb,3209,"/// 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 // ...\n if (DIFunctionScopeInfo && DIFunctionScopeInfo->ObjCIsDesignatedInit && (SuperLoc.isValid() || isSelfExpr(Receiver))) {\n // ...\n if (!isDesignatedInitChain) {\n // ...\n Diag(SelLoc, SuperLoc.isValid() ? diag::warn_objc_designated_init_non_designated_init_call : diag::warn_objc_designated_init_non_super_designated_init_call);"}}, | ||
[p]={ | [p]={ | ||
[ed]={"clang/test/SemaObjC/attr-designated-init.m:74:16: warning: designated initializer should only invoke a designated initializer on \'super\' [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:136:9: warning: designated initializer should only invoke a designated initializer on \'super\' [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:141:11: warning: designated initializer should only invoke a designated initializer on \'super\' [-Wobjc-designated-initializers]"} | [ed]={"clang/test/SemaObjC/attr-designated-init.m:74:16: warning: designated initializer should only invoke a designated initializer on \'super\' [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:136:9: warning: designated initializer should only invoke a designated initializer on \'super\' [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:141:11: warning: designated initializer should only invoke a designated initializer on \'super\' [-Wobjc-designated-initializers]"} | ||
Line 1,435: | Line 1,435: | ||
[h]=q, | [h]=q, | ||
[i]={Kc,1573050950,Hb,Hb}, | [i]={Kc,1573050950,Hb,Hb}, | ||
[j]={{C,2951,"static void handleObjCDirectAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (S.getLangOpts().ObjCRuntime.allowsDirectDispatch()) {\n } else {\n S.Diag(AL.getLoc(), diag::warn_objc_direct_ignored) << AL;"},{C,2960,"static void handleObjCDirectMembersAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (S.getLangOpts().ObjCRuntime.allowsDirectDispatch()) {\n } else {\n S.Diag(AL.getLoc(), diag::warn_objc_direct_ignored) << AL;"}} | [j]={{C,2951,"static void handleObjCDirectAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n if (S.getLangOpts().ObjCRuntime.allowsDirectDispatch()) {\n // ...\n } else {\n S.Diag(AL.getLoc(), diag::warn_objc_direct_ignored) << AL;"},{C,2960,"static void handleObjCDirectMembersAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (S.getLangOpts().ObjCRuntime.allowsDirectDispatch()) {\n // ...\n } else {\n S.Diag(AL.getLoc(), diag::warn_objc_direct_ignored) << AL;"}} | ||
}, | }, | ||
["warn_objc_direct_property_ignored"]={ | ["warn_objc_direct_property_ignored"]={ | ||
Line 1,449: | Line 1,449: | ||
[h]=q, | [h]=q, | ||
[i]={Kc,1573050950,Hb,Hb}, | [i]={Kc,1573050950,Hb,Hb}, | ||
[j]={{V,714,"ObjCPropertyDecl *Sema::CreatePropertyDecl(Scope *S, ObjCContainerDecl *CDecl, SourceLocation AtLoc, SourceLocation LParenLoc, FieldDeclarator &FD, Selector GetterSel, SourceLocation GetterNameLoc, Selector SetterSel, SourceLocation SetterNameLoc, const bool isReadWrite, const unsigned Attributes, const unsigned AttributesAsWritten, QualType T, TypeSourceInfo *TInfo, tok::ObjCKeywordKind MethodImplKind, DeclContext *lexicalDC) {\n if ((Attributes & ObjCPropertyAttribute::kind_direct) || CDecl->hasAttr<ObjCDirectMembersAttr>()) {\n if (isa<ObjCProtocolDecl>(CDecl)) {\n } else if (getLangOpts().ObjCRuntime.allowsDirectDispatch()) {\n } else {\n Diag(PDecl->getLocation(), diag::warn_objc_direct_property_ignored) << PDecl->getDeclName();"}} | [j]={{V,714,"ObjCPropertyDecl *Sema::CreatePropertyDecl(Scope *S, ObjCContainerDecl *CDecl, SourceLocation AtLoc, SourceLocation LParenLoc, FieldDeclarator &FD, Selector GetterSel, SourceLocation GetterNameLoc, Selector SetterSel, SourceLocation SetterNameLoc, const bool isReadWrite, const unsigned Attributes, const unsigned AttributesAsWritten, QualType T, TypeSourceInfo *TInfo, tok::ObjCKeywordKind MethodImplKind, DeclContext *lexicalDC) {\n // ...\n if ((Attributes & ObjCPropertyAttribute::kind_direct) || CDecl->hasAttr<ObjCDirectMembersAttr>()) {\n if (isa<ObjCProtocolDecl>(CDecl)) {\n // ...\n } else if (getLangOpts().ObjCRuntime.allowsDirectDispatch()) {\n // ...\n } else {\n Diag(PDecl->getLocation(), diag::warn_objc_direct_property_ignored) << PDecl->getDeclName();"}} | ||
}, | }, | ||
["warn_objc_implementation_missing_designated_init_override"]={ | ["warn_objc_implementation_missing_designated_init_override"]={ | ||
Line 1,463: | Line 1,463: | ||
[h]=q, | [h]=q, | ||
[i]={"db5ce0f71ec9",1386105114,"[objc] Add a warning when a class that provides a designated initializer, does not","[objc] Add a warning when a class that provides a designated initializer, does not"}, | [i]={"db5ce0f71ec9",1386105114,"[objc] Add a warning when a class that provides a designated initializer, does not","[objc] Add a warning when a class that provides a designated initializer, does not"}, | ||
[j]={{V,2350,"void Sema::DiagnoseMissingDesignatedInitOverrides(const ObjCImplementationDecl *ImplD, const ObjCInterfaceDecl *IFD) {\n for (SmallVector<const ObjCMethodDecl *, 8>::iterator I = DesignatedInits.begin(), E = DesignatedInits.end(); I != E; ++I) {\n if (!InitSelSet.count(MD->getSelector())) {\n if (!Ignore) {\n Diag(ImplD->getLocation(), diag::warn_objc_implementation_missing_designated_init_override) << MD->getSelector();"}}, | [j]={{V,2350,"void Sema::DiagnoseMissingDesignatedInitOverrides(const ObjCImplementationDecl *ImplD, const ObjCInterfaceDecl *IFD) {\n // ...\n for (SmallVector<const ObjCMethodDecl *, 8>::iterator I = DesignatedInits.begin(), E = DesignatedInits.end(); I != E; ++I) {\n // ...\n if (!InitSelSet.count(MD->getSelector())) {\n // ...\n if (!Ignore) {\n Diag(ImplD->getLocation(), diag::warn_objc_implementation_missing_designated_init_override) << MD->getSelector();"}}, | ||
[p]={ | [p]={ | ||
[ed]={"clang/test/SemaObjC/attr-designated-init.m:92:17: warning: method override for the designated initializer of the superclass \'-initB1\' not found [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:92:17: warning: method override for the designated initializer of the superclass \'-initB3\' not found [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:107:17: warning: method override for the designated initializer of the superclass \'-initS1\' not found [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:155:17: warning: method override for the designated initializer of the superclass \'-initB1\' not found [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:155:17: warning: method override for the designated initializer of the superclass \'-initB3\' not found [-Wobjc-designated-initializers]"} | [ed]={"clang/test/SemaObjC/attr-designated-init.m:92:17: warning: method override for the designated initializer of the superclass \'-initB1\' not found [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:92:17: warning: method override for the designated initializer of the superclass \'-initB3\' not found [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:107:17: warning: method override for the designated initializer of the superclass \'-initS1\' not found [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:155:17: warning: method override for the designated initializer of the superclass \'-initB1\' not found [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:155:17: warning: method override for the designated initializer of the superclass \'-initB3\' not found [-Wobjc-designated-initializers]"} | ||
Line 1,480: | Line 1,480: | ||
[h]=q, | [h]=q, | ||
[i]={"f07183ce9402",1384566325,"ObjetiveC ARC. Start diagnosing invalid toll free bridging.","ObjetiveC ARC. Start diagnosing invalid toll free bridging."}, | [i]={"f07183ce9402",1384566325,"ObjetiveC ARC. Start diagnosing invalid toll free bridging.","ObjetiveC ARC. Start diagnosing invalid toll free bridging."}, | ||
[j]={{cb,4031,"template <typename TB> static bool CheckObjCBridgeNSCast(Sema &S, QualType castType, Expr *castExpr, bool &HadTheAttribute, bool warn) {\n while (const auto *TD = T->getAs<TypedefType>()) {\n if (TB *ObjCBAttr = getObjCBridgeAttr<TB>(TD)) {\n if (IdentifierInfo *Parm = ObjCBAttr->getBridgedType()) {\n if (S.LookupName(R, S.TUScope)) {\n if (Target && isa<ObjCInterfaceDecl>(Target)) {\n if (const ObjCObjectPointerType *InterfacePointerType = castType->getAsObjCInterfacePointerType()) {\n if (warn)\n S.Diag(castExpr->getBeginLoc(), diag::warn_objc_invalid_bridge) << T << Target->getName() << castType->getPointeeType();"},{cb,4043,"template <typename TB> static bool CheckObjCBridgeNSCast(Sema &S, QualType castType, Expr *castExpr, bool &HadTheAttribute, bool warn) {\n while (const auto *TD = T->getAs<TypedefType>()) {\n if (TB *ObjCBAttr = getObjCBridgeAttr<TB>(TD)) {\n if (IdentifierInfo *Parm = ObjCBAttr->getBridgedType()) {\n if (S.LookupName(R, S.TUScope)) {\n if (Target && isa<ObjCInterfaceDecl>(Target)) {\n if (const ObjCObjectPointerType *InterfacePointerType = castType->getAsObjCInterfacePointerType()) {\n } else if (castType->isObjCIdType() || (S.Context.ObjCObjectAdoptsQTypeProtocols(castType, ExprClass)))\n else {\n if (warn) {\n S.Diag(castExpr->getBeginLoc(), diag::warn_objc_invalid_bridge) << T << Target->getName() << castType;"}}, | [j]={{cb,4031,"template <typename TB> static bool CheckObjCBridgeNSCast(Sema &S, QualType castType, Expr *castExpr, bool &HadTheAttribute, bool warn) {\n // ...\n while (const auto *TD = T->getAs<TypedefType>()) {\n // ...\n if (TB *ObjCBAttr = getObjCBridgeAttr<TB>(TD)) {\n if (IdentifierInfo *Parm = ObjCBAttr->getBridgedType()) {\n // ...\n if (S.LookupName(R, S.TUScope)) {\n // ...\n if (Target && isa<ObjCInterfaceDecl>(Target)) {\n // ...\n if (const ObjCObjectPointerType *InterfacePointerType = castType->getAsObjCInterfacePointerType()) {\n // ...\n if (warn)\n S.Diag(castExpr->getBeginLoc(), diag::warn_objc_invalid_bridge) << T << Target->getName() << castType->getPointeeType();"},{cb,4043,"template <typename TB> static bool CheckObjCBridgeNSCast(Sema &S, QualType castType, Expr *castExpr, bool &HadTheAttribute, bool warn) {\n // ...\n while (const auto *TD = T->getAs<TypedefType>()) {\n // ...\n if (TB *ObjCBAttr = getObjCBridgeAttr<TB>(TD)) {\n if (IdentifierInfo *Parm = ObjCBAttr->getBridgedType()) {\n // ...\n if (S.LookupName(R, S.TUScope)) {\n // ...\n if (Target && isa<ObjCInterfaceDecl>(Target)) {\n // ...\n if (const ObjCObjectPointerType *InterfacePointerType = castType->getAsObjCInterfacePointerType()) {\n // ...\n } else if (castType->isObjCIdType() || (S.Context.ObjCObjectAdoptsQTypeProtocols(castType, ExprClass)))\n // ...\n else {\n if (warn) {\n S.Diag(castExpr->getBeginLoc(), diag::warn_objc_invalid_bridge) << T << Target->getName() << castType;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjCXX/objcbridge-static-cast.mm"]={"clang/test/SemaObjCXX/objcbridge-static-cast.mm:56:33: warning: \'CFErrorRef2\' (aka \'__CFErrorRef *\') bridges to NSError, not \'NSString\' [-Wbridge-cast]","clang/test/SemaObjCXX/objcbridge-static-cast.mm:63:31: warning: \'CFErrorRef2\' (aka \'__CFErrorRef *\') bridges to NSError, not \'MyError\' [-Wbridge-cast]","clang/test/SemaObjCXX/objcbridge-static-cast.mm:77:28: warning: \'CFErrorRef2\' (aka \'__CFErrorRef *\') bridges to NSError, not \'Class\' [-Wbridge-cast]","clang/test/SemaObjCXX/objcbridge-static-cast.mm:95:38: warning: \'CFErrorRef\' (aka \'__CFErrorRef *\') bridges to NSError, not \'id<P1,P2,P4>\' [-Wbridge-cast]","clang/test/SemaObjCXX/objcbridge-static-cast.mm:114:38: warning: \'CFMyErrorRef\' (aka \'__CFMyErrorRef *\') bridges to MyError, not \'id<P1,P2,P4>\' [-Wbridge-cast]"} | ["clang/test/SemaObjCXX/objcbridge-static-cast.mm"]={"clang/test/SemaObjCXX/objcbridge-static-cast.mm:56:33: warning: \'CFErrorRef2\' (aka \'__CFErrorRef *\') bridges to NSError, not \'NSString\' [-Wbridge-cast]","clang/test/SemaObjCXX/objcbridge-static-cast.mm:63:31: warning: \'CFErrorRef2\' (aka \'__CFErrorRef *\') bridges to NSError, not \'MyError\' [-Wbridge-cast]","clang/test/SemaObjCXX/objcbridge-static-cast.mm:77:28: warning: \'CFErrorRef2\' (aka \'__CFErrorRef *\') bridges to NSError, not \'Class\' [-Wbridge-cast]","clang/test/SemaObjCXX/objcbridge-static-cast.mm:95:38: warning: \'CFErrorRef\' (aka \'__CFErrorRef *\') bridges to NSError, not \'id<P1,P2,P4>\' [-Wbridge-cast]","clang/test/SemaObjCXX/objcbridge-static-cast.mm:114:38: warning: \'CFMyErrorRef\' (aka \'__CFMyErrorRef *\') bridges to MyError, not \'id<P1,P2,P4>\' [-Wbridge-cast]"} | ||
Line 1,497: | Line 1,497: | ||
[h]=q, | [h]=q, | ||
[i]={"8a0210e535c5",1384629392,"ObjectiveC ARC. Validate toll free bridge casting","ObjectiveC ARC. Validate toll free bridge casting"}, | [i]={"8a0210e535c5",1384629392,"ObjectiveC ARC. Validate toll free bridge casting","ObjectiveC ARC. Validate toll free bridge casting"}, | ||
[j]={{cb,4096,"template <typename TB> static bool CheckObjCBridgeCFCast(Sema &S, QualType castType, Expr *castExpr, bool &HadTheAttribute, bool warn) {\n while (const auto *TD = T->getAs<TypedefType>()) {\n if (TB *ObjCBAttr = getObjCBridgeAttr<TB>(TD)) {\n if (IdentifierInfo *Parm = ObjCBAttr->getBridgedType()) {\n if (S.LookupName(R, S.TUScope)) {\n if (Target && isa<ObjCInterfaceDecl>(Target)) {\n if (const ObjCObjectPointerType *InterfacePointerType = castExpr->getType()->getAsObjCInterfacePointerType()) {\n if (warn) {\n S.Diag(castExpr->getBeginLoc(), diag::warn_objc_invalid_bridge_to_cf) << castExpr->getType()->getPointeeType() << T;"},{cb,4111,"template <typename TB> static bool CheckObjCBridgeCFCast(Sema &S, QualType castType, Expr *castExpr, bool &HadTheAttribute, bool warn) {\n while (const auto *TD = T->getAs<TypedefType>()) {\n if (TB *ObjCBAttr = getObjCBridgeAttr<TB>(TD)) {\n if (IdentifierInfo *Parm = ObjCBAttr->getBridgedType()) {\n if (S.LookupName(R, S.TUScope)) {\n if (Target && isa<ObjCInterfaceDecl>(Target)) {\n if (const ObjCObjectPointerType *InterfacePointerType = castExpr->getType()->getAsObjCInterfacePointerType()) {\n } else if (castExpr->getType()->isObjCIdType() || (S.Context.QIdProtocolsAdoptObjCObjectProtocols(castExpr->getType(), CastClass)))\n else {\n if (warn) {\n S.Diag(castExpr->getBeginLoc(), diag::warn_objc_invalid_bridge_to_cf) << castExpr->getType() << castType;"}}, | [j]={{cb,4096,"template <typename TB> static bool CheckObjCBridgeCFCast(Sema &S, QualType castType, Expr *castExpr, bool &HadTheAttribute, bool warn) {\n // ...\n while (const auto *TD = T->getAs<TypedefType>()) {\n // ...\n if (TB *ObjCBAttr = getObjCBridgeAttr<TB>(TD)) {\n if (IdentifierInfo *Parm = ObjCBAttr->getBridgedType()) {\n // ...\n if (S.LookupName(R, S.TUScope)) {\n // ...\n if (Target && isa<ObjCInterfaceDecl>(Target)) {\n // ...\n if (const ObjCObjectPointerType *InterfacePointerType = castExpr->getType()->getAsObjCInterfacePointerType()) {\n // ...\n if (warn) {\n S.Diag(castExpr->getBeginLoc(), diag::warn_objc_invalid_bridge_to_cf) << castExpr->getType()->getPointeeType() << T;"},{cb,4111,"template <typename TB> static bool CheckObjCBridgeCFCast(Sema &S, QualType castType, Expr *castExpr, bool &HadTheAttribute, bool warn) {\n // ...\n while (const auto *TD = T->getAs<TypedefType>()) {\n // ...\n if (TB *ObjCBAttr = getObjCBridgeAttr<TB>(TD)) {\n if (IdentifierInfo *Parm = ObjCBAttr->getBridgedType()) {\n // ...\n if (S.LookupName(R, S.TUScope)) {\n // ...\n if (Target && isa<ObjCInterfaceDecl>(Target)) {\n // ...\n if (const ObjCObjectPointerType *InterfacePointerType = castExpr->getType()->getAsObjCInterfacePointerType()) {\n // ...\n } else if (castExpr->getType()->isObjCIdType() || (S.Context.QIdProtocolsAdoptObjCObjectProtocols(castExpr->getType(), CastClass)))\n // ...\n else {\n if (warn) {\n S.Diag(castExpr->getBeginLoc(), diag::warn_objc_invalid_bridge_to_cf) << castExpr->getType() << castType;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjCXX/objcbridge-static-cast.mm"]={"clang/test/SemaObjCXX/objcbridge-static-cast.mm:73:33: warning: \'NSString\' cannot bridge to \'CFErrorRef\' (aka \'__CFErrorRef *\') [-Wbridge-cast]","clang/test/SemaObjCXX/objcbridge-static-cast.mm:81:33: warning: \'Class\' cannot bridge to \'CFErrorRef\' (aka \'__CFErrorRef *\') [-Wbridge-cast]"} | ["clang/test/SemaObjCXX/objcbridge-static-cast.mm"]={"clang/test/SemaObjCXX/objcbridge-static-cast.mm:73:33: warning: \'NSString\' cannot bridge to \'CFErrorRef\' (aka \'__CFErrorRef *\') [-Wbridge-cast]","clang/test/SemaObjCXX/objcbridge-static-cast.mm:81:33: warning: \'Class\' cannot bridge to \'CFErrorRef\' (aka \'__CFErrorRef *\') [-Wbridge-cast]"} | ||
Line 1,514: | Line 1,514: | ||
[h]=q, | [h]=q, | ||
[i]={"84510744d965",1364419165,"Objective-C: Issue more precise warning when user","Objective-C: Issue more precise warning when user"}, | [i]={"84510744d965",1364419165,"Objective-C: Issue more precise warning when user","Objective-C: Issue more precise warning when user"}, | ||
[j]={{A,613,"static void DiagnoseDirectIsaAccess(Sema &S, const ObjCIvarRefExpr *OIRE, SourceLocation AssignLoc, const Expr *RHS) {\n if (const ObjCObjectType *OTy = BaseType->getAs<ObjCObjectType>())\n if (ObjCInterfaceDecl *IDecl = OTy->getInterface()) {\n if (!ClassDeclared->getSuperClass() && (*ClassDeclared->ivar_begin()) == IV) {\n if (RHS) {\n if (ObjectSetClass) {\n S.Diag(OIRE->getExprLoc(), diag::warn_objc_isa_assign) << FixItHint::CreateInsertion(OIRE->getBeginLoc(), \"object_setClass(\") << FixItHint::CreateReplacement(SourceRange(OIRE->getOpLoc(), AssignLoc), \",\") << FixItHint::CreateInsertion(RHSLocEnd, \")\");"},{A,621,"static void DiagnoseDirectIsaAccess(Sema &S, const ObjCIvarRefExpr *OIRE, SourceLocation AssignLoc, const Expr *RHS) {\n if (const ObjCObjectType *OTy = BaseType->getAs<ObjCObjectType>())\n if (ObjCInterfaceDecl *IDecl = OTy->getInterface()) {\n if (!ClassDeclared->getSuperClass() && (*ClassDeclared->ivar_begin()) == IV) {\n if (RHS) {\n if (ObjectSetClass) {\n } else\n S.Diag(OIRE->getLocation(), diag::warn_objc_isa_assign);"},{A,15691,"/// CreateBuiltinBinOp - Creates a new built-in binary operation with\n/// operator @p Opc at location @c TokLoc. This routine only supports\n/// built-in operations; ActOnBinOp handles overloaded operators.\nExprResult Sema::CreateBuiltinBinOp(SourceLocation OpLoc, BinaryOperatorKind Opc, Expr *LHSExpr, Expr *RHSExpr) {\n if (const ObjCIsaExpr *OISA = dyn_cast<ObjCIsaExpr>(LHS.get()->IgnoreParenCasts())) {\n if (ObjectSetClass && isa<ObjCIsaExpr>(LHS.get())) {\n Diag(LHS.get()->getExprLoc(), diag::warn_objc_isa_assign) << FixItHint::CreateInsertion(LHS.get()->getBeginLoc(), \"object_setClass(\") << FixItHint::CreateReplacement(SourceRange(OISA->getOpLoc(), OpLoc), \",\") << FixItHint::CreateInsertion(RHSLocEnd, \")\");"},{A,15760,"/// CreateBuiltinBinOp - Creates a new built-in binary operation with\n/// operator @p Opc at location @c TokLoc. This routine only supports\n/// built-in operations; ActOnBinOp handles overloaded operators.\nExprResult Sema::CreateBuiltinBinOp(SourceLocation OpLoc, BinaryOperatorKind Opc, Expr *LHSExpr, Expr *RHSExpr) {\n if (const ObjCIsaExpr *OISA = dyn_cast<ObjCIsaExpr>(LHS.get()->IgnoreParenCasts())) {\n if (ObjectSetClass && isa<ObjCIsaExpr>(LHS.get())) {\n } else\n Diag(LHS.get()->getExprLoc(), diag::warn_objc_isa_assign);"}}, | [j]={{A,613,"static void DiagnoseDirectIsaAccess(Sema &S, const ObjCIvarRefExpr *OIRE, SourceLocation AssignLoc, const Expr *RHS) {\n // ...\n if (const ObjCObjectType *OTy = BaseType->getAs<ObjCObjectType>())\n if (ObjCInterfaceDecl *IDecl = OTy->getInterface()) {\n // ...\n if (!ClassDeclared->getSuperClass() && (*ClassDeclared->ivar_begin()) == IV) {\n if (RHS) {\n // ...\n if (ObjectSetClass) {\n // ...\n S.Diag(OIRE->getExprLoc(), diag::warn_objc_isa_assign) << FixItHint::CreateInsertion(OIRE->getBeginLoc(), \"object_setClass(\") << FixItHint::CreateReplacement(SourceRange(OIRE->getOpLoc(), AssignLoc), \",\") << FixItHint::CreateInsertion(RHSLocEnd, \")\");"},{A,621,"static void DiagnoseDirectIsaAccess(Sema &S, const ObjCIvarRefExpr *OIRE, SourceLocation AssignLoc, const Expr *RHS) {\n // ...\n if (const ObjCObjectType *OTy = BaseType->getAs<ObjCObjectType>())\n if (ObjCInterfaceDecl *IDecl = OTy->getInterface()) {\n // ...\n if (!ClassDeclared->getSuperClass() && (*ClassDeclared->ivar_begin()) == IV) {\n if (RHS) {\n // ...\n if (ObjectSetClass) {\n // ...\n } else\n S.Diag(OIRE->getLocation(), diag::warn_objc_isa_assign);"},{A,15691,"/// CreateBuiltinBinOp - Creates a new built-in binary operation with\n/// operator @p Opc at location @c TokLoc. This routine only supports\n/// built-in operations; ActOnBinOp handles overloaded operators.\nExprResult Sema::CreateBuiltinBinOp(SourceLocation OpLoc, BinaryOperatorKind Opc, Expr *LHSExpr, Expr *RHSExpr) {\n // ...\n if (const ObjCIsaExpr *OISA = dyn_cast<ObjCIsaExpr>(LHS.get()->IgnoreParenCasts())) {\n // ...\n if (ObjectSetClass && isa<ObjCIsaExpr>(LHS.get())) {\n // ...\n Diag(LHS.get()->getExprLoc(), diag::warn_objc_isa_assign) << FixItHint::CreateInsertion(LHS.get()->getBeginLoc(), \"object_setClass(\") << FixItHint::CreateReplacement(SourceRange(OISA->getOpLoc(), OpLoc), \",\") << FixItHint::CreateInsertion(RHSLocEnd, \")\");"},{A,15760,"/// CreateBuiltinBinOp - Creates a new built-in binary operation with\n/// operator @p Opc at location @c TokLoc. This routine only supports\n/// built-in operations; ActOnBinOp handles overloaded operators.\nExprResult Sema::CreateBuiltinBinOp(SourceLocation OpLoc, BinaryOperatorKind Opc, Expr *LHSExpr, Expr *RHSExpr) {\n // ...\n if (const ObjCIsaExpr *OISA = dyn_cast<ObjCIsaExpr>(LHS.get()->IgnoreParenCasts())) {\n // ...\n if (ObjectSetClass && isa<ObjCIsaExpr>(LHS.get())) {\n // ...\n } else\n Diag(LHS.get()->getExprLoc(), diag::warn_objc_isa_assign);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/deprecated-objc-introspection.m"]={"clang/test/SemaObjC/deprecated-objc-introspection.m:88:8: warning: assignment to Objective-C\'s isa is deprecated in favor of object_setClass() [-Wdeprecated-objc-isa-usage]"} | ["clang/test/SemaObjC/deprecated-objc-introspection.m"]={"clang/test/SemaObjC/deprecated-objc-introspection.m:88:8: warning: assignment to Objective-C\'s isa is deprecated in favor of object_setClass() [-Wdeprecated-objc-isa-usage]"} | ||
Line 1,531: | Line 1,531: | ||
[h]=q, | [h]=q, | ||
[i]={"28324b00666b",1326913736,"objc: deprecate direct usage of \'isa\' of objc objects","objc: deprecate direct usage of \'isa\' of objc objects"}, | [i]={"28324b00666b",1326913736,"objc: deprecate direct usage of \'isa\' of objc objects","objc: deprecate direct usage of \'isa\' of objc objects"}, | ||
[j]={{A,628,"static void DiagnoseDirectIsaAccess(Sema &S, const ObjCIvarRefExpr *OIRE, SourceLocation AssignLoc, const Expr *RHS) {\n if (const ObjCObjectType *OTy = BaseType->getAs<ObjCObjectType>())\n if (ObjCInterfaceDecl *IDecl = OTy->getInterface()) {\n if (!ClassDeclared->getSuperClass() && (*ClassDeclared->ivar_begin()) == IV) {\n if (RHS) {\n } else {\n if (ObjectGetClass)\n S.Diag(OIRE->getExprLoc(), diag::warn_objc_isa_use) << FixItHint::CreateInsertion(OIRE->getBeginLoc(), \"object_getClass(\") << FixItHint::CreateReplacement(SourceRange(OIRE->getOpLoc(), OIRE->getEndLoc()), \")\");"},{A,634,"static void DiagnoseDirectIsaAccess(Sema &S, const ObjCIvarRefExpr *OIRE, SourceLocation AssignLoc, const Expr *RHS) {\n if (const ObjCObjectType *OTy = BaseType->getAs<ObjCObjectType>())\n if (ObjCInterfaceDecl *IDecl = OTy->getInterface()) {\n if (!ClassDeclared->getSuperClass() && (*ClassDeclared->ivar_begin()) == IV) {\n if (RHS) {\n } else {\n if (ObjectGetClass)\n else\n S.Diag(OIRE->getLocation(), diag::warn_objc_isa_use);"},{A,692,"ExprResult Sema::DefaultLvalueConversion(Expr *E) {\n if (const ObjCIsaExpr *OISA = dyn_cast<ObjCIsaExpr>(E->IgnoreParenCasts())) {\n if (ObjectGetClass)\n Diag(E->getExprLoc(), diag::warn_objc_isa_use) << FixItHint::CreateInsertion(OISA->getBeginLoc(), \"object_getClass(\") << FixItHint::CreateReplacement(SourceRange(OISA->getOpLoc(), OISA->getIsaMemberLoc()), \")\");"},{A,697,"ExprResult Sema::DefaultLvalueConversion(Expr *E) {\n if (const ObjCIsaExpr *OISA = dyn_cast<ObjCIsaExpr>(E->IgnoreParenCasts())) {\n if (ObjectGetClass)\n else\n Diag(E->getExprLoc(), diag::warn_objc_isa_use);"}}, | [j]={{A,628,"static void DiagnoseDirectIsaAccess(Sema &S, const ObjCIvarRefExpr *OIRE, SourceLocation AssignLoc, const Expr *RHS) {\n // ...\n if (const ObjCObjectType *OTy = BaseType->getAs<ObjCObjectType>())\n if (ObjCInterfaceDecl *IDecl = OTy->getInterface()) {\n // ...\n if (!ClassDeclared->getSuperClass() && (*ClassDeclared->ivar_begin()) == IV) {\n if (RHS) {\n // ...\n } else {\n // ...\n if (ObjectGetClass)\n S.Diag(OIRE->getExprLoc(), diag::warn_objc_isa_use) << FixItHint::CreateInsertion(OIRE->getBeginLoc(), \"object_getClass(\") << FixItHint::CreateReplacement(SourceRange(OIRE->getOpLoc(), OIRE->getEndLoc()), \")\");"},{A,634,"static void DiagnoseDirectIsaAccess(Sema &S, const ObjCIvarRefExpr *OIRE, SourceLocation AssignLoc, const Expr *RHS) {\n // ...\n if (const ObjCObjectType *OTy = BaseType->getAs<ObjCObjectType>())\n if (ObjCInterfaceDecl *IDecl = OTy->getInterface()) {\n // ...\n if (!ClassDeclared->getSuperClass() && (*ClassDeclared->ivar_begin()) == IV) {\n if (RHS) {\n // ...\n } else {\n // ...\n if (ObjectGetClass)\n // ...\n else\n S.Diag(OIRE->getLocation(), diag::warn_objc_isa_use);"},{A,692,"ExprResult Sema::DefaultLvalueConversion(Expr *E) {\n // ...\n if (const ObjCIsaExpr *OISA = dyn_cast<ObjCIsaExpr>(E->IgnoreParenCasts())) {\n // ...\n if (ObjectGetClass)\n Diag(E->getExprLoc(), diag::warn_objc_isa_use) << FixItHint::CreateInsertion(OISA->getBeginLoc(), \"object_getClass(\") << FixItHint::CreateReplacement(SourceRange(OISA->getOpLoc(), OISA->getIsaMemberLoc()), \")\");"},{A,697,"ExprResult Sema::DefaultLvalueConversion(Expr *E) {\n // ...\n if (const ObjCIsaExpr *OISA = dyn_cast<ObjCIsaExpr>(E->IgnoreParenCasts())) {\n // ...\n if (ObjectGetClass)\n // ...\n else\n Diag(E->getExprLoc(), diag::warn_objc_isa_use);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/deprecated-objc-introspection.m"]={"clang/test/SemaObjC/deprecated-objc-introspection.m:29:9: warning: direct access to Objective-C\'s isa is deprecated in favor of object_getClass() [-Wdeprecated-objc-isa-usage]","clang/test/SemaObjC/deprecated-objc-introspection.m:30:7: warning: direct access to Objective-C\'s isa is deprecated in favor of object_getClass() [-Wdeprecated-objc-isa-usage]","clang/test/SemaObjC/deprecated-objc-introspection.m:81:14: warning: direct access to Objective-C\'s isa is deprecated in favor of object_getClass() [-Wdeprecated-objc-isa-usage]","clang/test/SemaObjC/deprecated-objc-introspection.m:82:14: warning: direct access to Objective-C\'s isa is deprecated in favor of object_getClass() [-Wdeprecated-objc-isa-usage]","clang/test/SemaObjC/deprecated-objc-introspection.m:83:14: warning: direct access to Objective-C\'s isa is deprecated in favor of object_getClass() [-Wdeprecated-objc-isa-usage]","clang/test/SemaObjC/deprecated-objc-introspection.m:84:14: warning: direct access to Objective-C\'s isa is deprecated in favor of object_getClass() [-Wdeprecated-objc-isa-usage]"} | ["clang/test/SemaObjC/deprecated-objc-introspection.m"]={"clang/test/SemaObjC/deprecated-objc-introspection.m:29:9: warning: direct access to Objective-C\'s isa is deprecated in favor of object_getClass() [-Wdeprecated-objc-isa-usage]","clang/test/SemaObjC/deprecated-objc-introspection.m:30:7: warning: direct access to Objective-C\'s isa is deprecated in favor of object_getClass() [-Wdeprecated-objc-isa-usage]","clang/test/SemaObjC/deprecated-objc-introspection.m:81:14: warning: direct access to Objective-C\'s isa is deprecated in favor of object_getClass() [-Wdeprecated-objc-isa-usage]","clang/test/SemaObjC/deprecated-objc-introspection.m:82:14: warning: direct access to Objective-C\'s isa is deprecated in favor of object_getClass() [-Wdeprecated-objc-isa-usage]","clang/test/SemaObjC/deprecated-objc-introspection.m:83:14: warning: direct access to Objective-C\'s isa is deprecated in favor of object_getClass() [-Wdeprecated-objc-isa-usage]","clang/test/SemaObjC/deprecated-objc-introspection.m:84:14: warning: direct access to Objective-C\'s isa is deprecated in favor of object_getClass() [-Wdeprecated-objc-isa-usage]"} | ||
Line 1,548: | Line 1,548: | ||
[h]=q, | [h]=q, | ||
[i]={"f9198030015f",1341852884,"Downgrade the \"direct comparison\" error for ObjC literals to a warning.","Downgrade the \"direct comparison\" error for ObjC literals to a warning."}, | [i]={"f9198030015f",1341852884,"Downgrade the \"direct comparison\" error for ObjC literals to a warning.","Downgrade the \"direct comparison\" error for ObjC literals to a warning."}, | ||
[j]={{A,12513,"static void diagnoseObjCLiteralComparison(Sema &S, SourceLocation Loc, ExprResult &LHS, ExprResult &RHS, BinaryOperator::Opcode Opc) {\n if (LiteralKind == Sema::LK_String)\n else\n S.Diag(Loc, diag::warn_objc_literal_comparison) << LiteralKind << Literal->getSourceRange();"}}, | [j]={{A,12513,"static void diagnoseObjCLiteralComparison(Sema &S, SourceLocation Loc, ExprResult &LHS, ExprResult &RHS, BinaryOperator::Opcode Opc) {\n // ...\n if (LiteralKind == Sema::LK_String)\n // ...\n else\n S.Diag(Loc, diag::warn_objc_literal_comparison) << LiteralKind << Literal->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/objc-literal-comparison.m"]={"clang/test/SemaObjC/objc-literal-comparison.m:44:11: warning: direct comparison of an array literal has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:45:11: warning: direct comparison of a dictionary literal has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:46:11: warning: direct comparison of a numeric literal has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:47:12: warning: direct comparison of a numeric literal has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:48:19: warning: direct comparison of a numeric literal has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:49:14: warning: direct comparison of a boxed expression has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:82:11: warning: direct comparison of a numeric literal has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:83:10: warning: direct comparison of a numeric literal has undefined behavior [-Wobjc-literal-compare]"} | ["clang/test/SemaObjC/objc-literal-comparison.m"]={"clang/test/SemaObjC/objc-literal-comparison.m:44:11: warning: direct comparison of an array literal has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:45:11: warning: direct comparison of a dictionary literal has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:46:11: warning: direct comparison of a numeric literal has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:47:12: warning: direct comparison of a numeric literal has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:48:19: warning: direct comparison of a numeric literal has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:49:14: warning: direct comparison of a boxed expression has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:82:11: warning: direct comparison of a numeric literal has undefined behavior [-Wobjc-literal-compare]","clang/test/SemaObjC/objc-literal-comparison.m:83:10: warning: direct comparison of a numeric literal has undefined behavior [-Wobjc-literal-compare]"} | ||
Line 1,565: | Line 1,565: | ||
[h]=q, | [h]=q, | ||
[i]={"b05417e1e136",1347295869,"objective-C: Improving diagnostocs for missing call to","objective-C: Improving diagnostocs for missing call to"}, | [i]={"b05417e1e136",1347295869,"objective-C: Improving diagnostocs for missing call to","objective-C: Improving diagnostocs for missing call to"}, | ||
[j]={{H,15826,"Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation) {\n {\n if (FD) {\n } else if (ObjCMethodDecl *MD = dyn_cast_or_null<ObjCMethodDecl>(dcl)) {\n if (FSI->ObjCShouldCallSuper) {\n Diag(MD->getEndLoc(), diag::warn_objc_missing_super_call) << MD->getSelector().getAsString();"}}, | [j]={{H,15826,"Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation) {\n // ...\n {\n // ...\n if (FD) {\n // ...\n } else if (ObjCMethodDecl *MD = dyn_cast_or_null<ObjCMethodDecl>(dcl)) {\n // ...\n if (FSI->ObjCShouldCallSuper) {\n Diag(MD->getEndLoc(), diag::warn_objc_missing_super_call) << MD->getSelector().getAsString();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjCXX/warn-missing-super.mm"]={"clang/test/SemaObjCXX/warn-missing-super.mm:18:1: warning: method possibly missing a [super dealloc] call [-Wobjc-missing-super-calls]"} | ["clang/test/SemaObjCXX/warn-missing-super.mm"]={"clang/test/SemaObjCXX/warn-missing-super.mm:18:1: warning: method possibly missing a [super dealloc] call [-Wobjc-missing-super-calls]"} | ||
Line 1,582: | Line 1,582: | ||
[h]=q, | [h]=q, | ||
[i]={"0a3cfcc87f07",1308774111,"Alloa catching Objective-C id\'s being thrown with C++ throw","Alloa catching Objective-C id\'s being thrown with C++ throw"}, | [i]={"0a3cfcc87f07",1308774111,"Alloa catching Objective-C id\'s being thrown with C++ throw","Alloa catching Objective-C id\'s being thrown with C++ throw"}, | ||
[j]={{db,16678,"/// Perform semantic analysis for the variable declaration that\n/// occurs within a C++ catch clause, returning the newly-created\n/// variable.\nVarDecl *Sema::BuildExceptionDeclaration(Scope *S, TypeSourceInfo *TInfo, SourceLocation StartLoc, SourceLocation Loc, IdentifierInfo *Name) {\n // Only the non-fragile NeXT runtime currently supports C++ catches\n // of ObjC types, and no runtime supports catching ObjC types by value.\n if (!Invalid && getLangOpts().ObjC) {\n if (T->isObjCObjectType()) {\n } else if (T->isObjCObjectPointerType()) {\n // FIXME: should this be a test for macosx-fragile specifically?\n if (getLangOpts().ObjCRuntime.isFragile())\n Diag(Loc, diag::warn_objc_pointer_cxx_catch_fragile);"}}, | [j]={{db,16678,"/// Perform semantic analysis for the variable declaration that\n/// occurs within a C++ catch clause, returning the newly-created\n/// variable.\nVarDecl *Sema::BuildExceptionDeclaration(Scope *S, TypeSourceInfo *TInfo, SourceLocation StartLoc, SourceLocation Loc, IdentifierInfo *Name) {\n // ...\n // Only the non-fragile NeXT runtime currently supports C++ catches\n // of ObjC types, and no runtime supports catching ObjC types by value.\n if (!Invalid && getLangOpts().ObjC) {\n // ...\n if (T->isObjCObjectType()) {\n // ...\n } else if (T->isObjCObjectPointerType()) {\n // FIXME: should this be a test for macosx-fragile specifically?\n if (getLangOpts().ObjCRuntime.isFragile())\n Diag(Loc, diag::warn_objc_pointer_cxx_catch_fragile);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjCXX/exceptions-fragile.mm"]={"clang/test/SemaObjCXX/exceptions-fragile.mm:9:27: warning: cannot catch an exception thrown with @throw in C++ in the non-unified exception model [-Wobjc-nonunified-exceptions]"} | ["clang/test/SemaObjCXX/exceptions-fragile.mm"]={"clang/test/SemaObjCXX/exceptions-fragile.mm:9:27: warning: cannot catch an exception thrown with @throw in C++ in the non-unified exception model [-Wobjc-nonunified-exceptions]"} | ||
Line 1,599: | Line 1,599: | ||
[h]=q, | [h]=q, | ||
[i]={"ebeabab9a9b6",1366670812,"Add a warning for Objective-C pointer introspection, which is solely the job of the Objective-C runt...","Add a warning for Objective-C pointer introspection, which is solely the job of the Objective-C runtime."}, | [i]={"ebeabab9a9b6",1366670812,"Add a warning for Objective-C pointer introspection, which is solely the job of the Objective-C runt...","Add a warning for Objective-C pointer introspection, which is solely the job of the Objective-C runtime."}, | ||
[j]={{A,15341,"/// Check if a bitwise-& is performed on an Objective-C pointer. This\n/// is usually indicative of introspection within the Objective-C pointer.\nstatic void checkObjCPointerIntrospection(Sema &S, ExprResult &L, ExprResult &R, SourceLocation OpLoc) {\n // This warning is deliberately made very specific to reduce false\n // positives with logic that uses \'&\' for hashing. This logic mainly\n // looks for code trying to introspect into tagged pointers, which\n // code should generally never do.\n if (ObjCPointerExpr && isa<IntegerLiteral>(OtherExpr->IgnoreParenCasts())) {\n unsigned Diag = diag::warn_objc_pointer_masking;"}}, | [j]={{A,15341,"/// Check if a bitwise-& is performed on an Objective-C pointer. This\n/// is usually indicative of introspection within the Objective-C pointer.\nstatic void checkObjCPointerIntrospection(Sema &S, ExprResult &L, ExprResult &R, SourceLocation OpLoc) {\n // ...\n // This warning is deliberately made very specific to reduce false\n // positives with logic that uses \'&\' for hashing. This logic mainly\n // looks for code trying to introspect into tagged pointers, which\n // code should generally never do.\n if (ObjCPointerExpr && isa<IntegerLiteral>(OtherExpr->IgnoreParenCasts())) {\n unsigned Diag = diag::warn_objc_pointer_masking;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/deprecated-objc-introspection.m"]={"clang/test/SemaObjC/deprecated-objc-introspection.m:95:28: warning: bitmasking for introspection of Objective-C object pointers is strongly discouraged [-Wdeprecated-objc-pointer-introspection]","clang/test/SemaObjC/deprecated-objc-introspection.m:96:15: warning: bitmasking for introspection of Objective-C object pointers is strongly discouraged [-Wdeprecated-objc-pointer-introspection]","clang/test/SemaObjC/deprecated-objc-introspection.m:99:15: warning: bitmasking for introspection of Objective-C object pointers is strongly discouraged [-Wdeprecated-objc-pointer-introspection-performSelector]"} | ["clang/test/SemaObjC/deprecated-objc-introspection.m"]={"clang/test/SemaObjC/deprecated-objc-introspection.m:95:28: warning: bitmasking for introspection of Objective-C object pointers is strongly discouraged [-Wdeprecated-objc-pointer-introspection]","clang/test/SemaObjC/deprecated-objc-introspection.m:96:15: warning: bitmasking for introspection of Objective-C object pointers is strongly discouraged [-Wdeprecated-objc-pointer-introspection]","clang/test/SemaObjC/deprecated-objc-introspection.m:99:15: warning: bitmasking for introspection of Objective-C object pointers is strongly discouraged [-Wdeprecated-objc-pointer-introspection-performSelector]"} | ||
Line 1,616: | Line 1,616: | ||
[h]=q, | [h]=q, | ||
[i]={"009d61dd16b4",1372109739,"Tweak -Wdeprecated-objc-pointer-introspection to have a subgroup for results of using -performSelect...","Tweak -Wdeprecated-objc-pointer-introspection to have a subgroup for results of using -performSelectorXXX."}, | [i]={"009d61dd16b4",1372109739,"Tweak -Wdeprecated-objc-pointer-introspection to have a subgroup for results of using -performSelect...","Tweak -Wdeprecated-objc-pointer-introspection to have a subgroup for results of using -performSelectorXXX."}, | ||
[j]={{A,15489,"/// Check if a bitwise-& is performed on an Objective-C pointer. This\n/// is usually indicative of introspection within the Objective-C pointer.\nstatic void checkObjCPointerIntrospection(Sema &S, ExprResult &L, ExprResult &R, SourceLocation OpLoc) {\n // This warning is deliberately made very specific to reduce false\n // positives with logic that uses \'&\' for hashing. This logic mainly\n // looks for code trying to introspect into tagged pointers, which\n // code should generally never do.\n if (ObjCPointerExpr && isa<IntegerLiteral>(OtherExpr->IgnoreParenCasts())) {\n // Special case messages to -performSelector and friends, which\n // can return non-pointer values boxed in a pointer value.\n // Some clients may wish to silence warnings in this subcase.\n if (const ObjCMessageExpr *ME = dyn_cast<ObjCMessageExpr>(Ex)) {\n if (SelArg0.startswith(\"performSelector\"))\n Diag = diag::warn_objc_pointer_masking_performSelector;"}} | [j]={{A,15489,"/// Check if a bitwise-& is performed on an Objective-C pointer. This\n/// is usually indicative of introspection within the Objective-C pointer.\nstatic void checkObjCPointerIntrospection(Sema &S, ExprResult &L, ExprResult &R, SourceLocation OpLoc) {\n // ...\n // This warning is deliberately made very specific to reduce false\n // positives with logic that uses \'&\' for hashing. This logic mainly\n // looks for code trying to introspect into tagged pointers, which\n // code should generally never do.\n if (ObjCPointerExpr && isa<IntegerLiteral>(OtherExpr->IgnoreParenCasts())) {\n // ...\n // Special case messages to -performSelector and friends, which\n // can return non-pointer values boxed in a pointer value.\n // Some clients may wish to silence warnings in this subcase.\n if (const ObjCMessageExpr *ME = dyn_cast<ObjCMessageExpr>(Ex)) {\n // ...\n if (SelArg0.startswith(\"performSelector\"))\n Diag = diag::warn_objc_pointer_masking_performSelector;"}} | ||
}, | }, | ||
["warn_objc_precise_lifetime_meaningless"]={ | ["warn_objc_precise_lifetime_meaningless"]={ | ||
Line 1,628: | Line 1,628: | ||
[h]=q, | [h]=q, | ||
[i]={"31168b077c36",1308178962,"Automatic Reference Counting.","Automatic Reference Counting."}, | [i]={"31168b077c36",1308178962,"Automatic Reference Counting.","Automatic Reference Counting."}, | ||
[j]={{C,6325,"static void handleObjCPreciseLifetimeAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n case Qualifiers::OCL_Autoreleasing:\n S.Diag(AL.getLoc(), diag::warn_objc_precise_lifetime_meaningless) << (Lifetime == Qualifiers::OCL_Autoreleasing);"}} | [j]={{C,6325,"static void handleObjCPreciseLifetimeAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n case Qualifiers::OCL_ExplicitNone:\n case Qualifiers::OCL_Autoreleasing:\n S.Diag(AL.getLoc(), diag::warn_objc_precise_lifetime_meaningless) << (Lifetime == Qualifiers::OCL_Autoreleasing);"}} | ||
}, | }, | ||
["warn_objc_property_assign_on_object"]={ | ["warn_objc_property_assign_on_object"]={ | ||
Line 1,643: | Line 1,643: | ||
[h]=q, | [h]=q, | ||
[i]={"52a503d4f333",1536174120,"Add -Wobjc-property-assign-on-object-type.","Add -Wobjc-property-assign-on-object-type."}, | [i]={"52a503d4f333",1536174120,"Add -Wobjc-property-assign-on-object-type.","Add -Wobjc-property-assign-on-object-type."}, | ||
[j]={{V,2675,"void Sema::CheckObjCPropertyAttributes(Decl *PDecl, SourceLocation Loc, unsigned &Attributes, bool propertyInPrimaryClass) {\n // Check for assign on object types.\n if ((Attributes & ObjCPropertyAttribute::kind_assign) && !(Attributes & ObjCPropertyAttribute::kind_unsafe_unretained) && PropertyTy->isObjCRetainableType() && !PropertyTy->isObjCARCImplicitlyUnretainedType()) {\n Diag(Loc, diag::warn_objc_property_assign_on_object);"}}, | [j]={{V,2675,"void Sema::CheckObjCPropertyAttributes(Decl *PDecl, SourceLocation Loc, unsigned &Attributes, bool propertyInPrimaryClass) {\n // ...\n // Check for assign on object types.\n if ((Attributes & ObjCPropertyAttribute::kind_assign) && !(Attributes & ObjCPropertyAttribute::kind_unsafe_unretained) && PropertyTy->isObjCRetainableType() && !PropertyTy->isObjCARCImplicitlyUnretainedType()) {\n Diag(Loc, diag::warn_objc_property_assign_on_object);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property-assign-on-object-type.m"]={"clang/test/SemaObjC/property-assign-on-object-type.m:7:1: warning: \'assign\' property of object type may become a dangling reference; consider using \'unsafe_unretained\' [-Wobjc-property-assign-on-object-type]"} | ["clang/test/SemaObjC/property-assign-on-object-type.m"]={"clang/test/SemaObjC/property-assign-on-object-type.m:7:1: warning: \'assign\' property of object type may become a dangling reference; consider using \'unsafe_unretained\' [-Wobjc-property-assign-on-object-type]"} | ||
Line 1,658: | Line 1,658: | ||
[h]=q, | [h]=q, | ||
[i]={"5580bdcaa2d4",1241737610,"Add a warning for a missing copy attribute on a property that is a","Add a warning for a missing copy attribute on a property that is a"}, | [i]={"5580bdcaa2d4",1241737610,"Add a warning for a missing copy attribute on a property that is a","Add a warning for a missing copy attribute on a property that is a"}, | ||
[j]={{V,2808,"void Sema::CheckObjCPropertyAttributes(Decl *PDecl, SourceLocation Loc, unsigned &Attributes, bool propertyInPrimaryClass) {\n if (!(Attributes & ObjCPropertyAttribute::kind_copy) && !(Attributes & ObjCPropertyAttribute::kind_readonly) && getLangOpts().getGC() == LangOptions::GCOnly && PropertyTy->isBlockPointerType())\n Diag(Loc, diag::warn_objc_property_copy_missing_on_block);"}}, | [j]={{V,2808,"void Sema::CheckObjCPropertyAttributes(Decl *PDecl, SourceLocation Loc, unsigned &Attributes, bool propertyInPrimaryClass) {\n // ...\n if (!(Attributes & ObjCPropertyAttribute::kind_copy) && !(Attributes & ObjCPropertyAttribute::kind_readonly) && getLangOpts().getGC() == LangOptions::GCOnly && PropertyTy->isBlockPointerType())\n Diag(Loc, diag::warn_objc_property_copy_missing_on_block);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/block-attr.m"]={"clang/test/SemaObjC/block-attr.m:6:1: warning: \'copy\' attribute must be specified for the block property when -fobjc-gc-only is specified"} | ["clang/test/SemaObjC/block-attr.m"]={"clang/test/SemaObjC/block-attr.m:6:1: warning: \'copy\' attribute must be specified for the block property when -fobjc-gc-only is specified"} | ||
Line 1,675: | Line 1,675: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{V,2794,"void Sema::CheckObjCPropertyAttributes(Decl *PDecl, SourceLocation Loc, unsigned &Attributes, bool propertyInPrimaryClass) {\n // Warn if user supplied no assignment attribute, property is\n // readwrite, and this is an object type.\n if (!getOwnershipRule(Attributes) && PropertyTy->isObjCRetainableType()) {\n if (Attributes & ObjCPropertyAttribute::kind_readonly) {\n } else if (getLangOpts().ObjCAutoRefCount) {\n } else if (PropertyTy->isObjCObjectPointerType()) {\n // In non-gc, non-arc mode, \'Class\' is treated as a \'void *\' no need to\n // issue any warning.\n if (isAnyClassTy && getLangOpts().getGC() == LangOptions::NonGC)\n else if (propertyInPrimaryClass) {\n // If non-gc code warn that this is likely inappropriate.\n if (getLangOpts().getGC() == LangOptions::NonGC)\n Diag(Loc, diag::warn_objc_property_default_assign_on_object);"}}, | [j]={{V,2794,"void Sema::CheckObjCPropertyAttributes(Decl *PDecl, SourceLocation Loc, unsigned &Attributes, bool propertyInPrimaryClass) {\n // ...\n // Warn if user supplied no assignment attribute, property is\n // readwrite, and this is an object type.\n if (!getOwnershipRule(Attributes) && PropertyTy->isObjCRetainableType()) {\n if (Attributes & ObjCPropertyAttribute::kind_readonly) {\n // ...\n } else if (getLangOpts().ObjCAutoRefCount) {\n // ...\n } else if (PropertyTy->isObjCObjectPointerType()) {\n // ...\n // In non-gc, non-arc mode, \'Class\' is treated as a \'void *\' no need to\n // issue any warning.\n if (isAnyClassTy && getLangOpts().getGC() == LangOptions::NonGC)\n // ...\n else if (propertyInPrimaryClass) {\n // ...\n // If non-gc code warn that this is likely inappropriate.\n if (getLangOpts().getGC() == LangOptions::NonGC)\n Diag(Loc, diag::warn_objc_property_default_assign_on_object);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property.m"]={"clang/test/SemaObjC/property.m:9:1: warning: default property attribute \'assign\' not appropriate for object [-Wobjc-property-no-attribute]"} | ["clang/test/SemaObjC/property.m"]={"clang/test/SemaObjC/property.m:9:1: warning: default property attribute \'assign\' not appropriate for object [-Wobjc-property-no-attribute]"} | ||
Line 1,692: | Line 1,692: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{V,2790,"void Sema::CheckObjCPropertyAttributes(Decl *PDecl, SourceLocation Loc, unsigned &Attributes, bool propertyInPrimaryClass) {\n // Warn if user supplied no assignment attribute, property is\n // readwrite, and this is an object type.\n if (!getOwnershipRule(Attributes) && PropertyTy->isObjCRetainableType()) {\n if (Attributes & ObjCPropertyAttribute::kind_readonly) {\n } else if (getLangOpts().ObjCAutoRefCount) {\n } else if (PropertyTy->isObjCObjectPointerType()) {\n // In non-gc, non-arc mode, \'Class\' is treated as a \'void *\' no need to\n // issue any warning.\n if (isAnyClassTy && getLangOpts().getGC() == LangOptions::NonGC)\n else if (propertyInPrimaryClass) {\n // Don\'t issue warning on property with no life time in class\n // extension as it is inherited from property in primary class.\n // Skip this warning in gc-only mode.\n if (getLangOpts().getGC() != LangOptions::GCOnly)\n Diag(Loc, diag::warn_objc_property_no_assignment_attribute);"}}, | [j]={{V,2790,"void Sema::CheckObjCPropertyAttributes(Decl *PDecl, SourceLocation Loc, unsigned &Attributes, bool propertyInPrimaryClass) {\n // ...\n // Warn if user supplied no assignment attribute, property is\n // readwrite, and this is an object type.\n if (!getOwnershipRule(Attributes) && PropertyTy->isObjCRetainableType()) {\n if (Attributes & ObjCPropertyAttribute::kind_readonly) {\n // ...\n } else if (getLangOpts().ObjCAutoRefCount) {\n // ...\n } else if (PropertyTy->isObjCObjectPointerType()) {\n // ...\n // In non-gc, non-arc mode, \'Class\' is treated as a \'void *\' no need to\n // issue any warning.\n if (isAnyClassTy && getLangOpts().getGC() == LangOptions::NonGC)\n // ...\n else if (propertyInPrimaryClass) {\n // Don\'t issue warning on property with no life time in class\n // extension as it is inherited from property in primary class.\n // Skip this warning in gc-only mode.\n if (getLangOpts().getGC() != LangOptions::GCOnly)\n Diag(Loc, diag::warn_objc_property_no_assignment_attribute);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property.m"]={"clang/test/SemaObjC/property.m:9:1: warning: no \'assign\', \'retain\', or \'copy\' attribute is specified - \'assign\' is assumed [-Wobjc-property-no-attribute]"} | ["clang/test/SemaObjC/property.m"]={"clang/test/SemaObjC/property.m:9:1: warning: no \'assign\', \'retain\', or \'copy\' attribute is specified - \'assign\' is assumed [-Wobjc-property-no-attribute]"} | ||
Line 1,709: | Line 1,709: | ||
[h]=q, | [h]=q, | ||
[i]={"1723e17b78f8",1316023426,"objc-arc: warn when a \'retain\' block property is","objc-arc: warn when a \'retain\' block property is"}, | [i]={"1723e17b78f8",1316023426,"objc-arc: warn when a \'retain\' block property is","objc-arc: warn when a \'retain\' block property is"}, | ||
[j]={{V,2813,"void Sema::CheckObjCPropertyAttributes(Decl *PDecl, SourceLocation Loc, unsigned &Attributes, bool propertyInPrimaryClass) {\n if (!(Attributes & ObjCPropertyAttribute::kind_copy) && !(Attributes & ObjCPropertyAttribute::kind_readonly) && getLangOpts().getGC() == LangOptions::GCOnly && PropertyTy->isBlockPointerType())\n else if ((Attributes & ObjCPropertyAttribute::kind_retain) && !(Attributes & ObjCPropertyAttribute::kind_readonly) && !(Attributes & ObjCPropertyAttribute::kind_strong) && PropertyTy->isBlockPointerType())\n Diag(Loc, diag::warn_objc_property_retain_of_block);"}}, | [j]={{V,2813,"void Sema::CheckObjCPropertyAttributes(Decl *PDecl, SourceLocation Loc, unsigned &Attributes, bool propertyInPrimaryClass) {\n // ...\n if (!(Attributes & ObjCPropertyAttribute::kind_copy) && !(Attributes & ObjCPropertyAttribute::kind_readonly) && getLangOpts().getGC() == LangOptions::GCOnly && PropertyTy->isBlockPointerType())\n // ...\n else if ((Attributes & ObjCPropertyAttribute::kind_retain) && !(Attributes & ObjCPropertyAttribute::kind_readonly) && !(Attributes & ObjCPropertyAttribute::kind_strong) && PropertyTy->isBlockPointerType())\n Diag(Loc, diag::warn_objc_property_retain_of_block);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/warn-retain-cycle.m"]={"clang/test/SemaObjC/warn-retain-cycle.m:36:1: warning: retain\'ed block property does not copy the block - use copy attribute instead [-Wobjc-noncopy-retain-block-property]"} | ["clang/test/SemaObjC/warn-retain-cycle.m"]={"clang/test/SemaObjC/warn-retain-cycle.m:36:1: warning: retain\'ed block property does not copy the block - use copy attribute instead [-Wobjc-noncopy-retain-block-property]"} | ||
Line 1,724: | Line 1,724: | ||
[h]=B, | [h]=B, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{"clang/lib/Parse/ParseObjc.cpp",1625,"TypeResult Parser::parseObjCProtocolQualifierType(SourceLocation &rAngleLoc) {\n if (result.isUsable()) {\n Diag(lAngleLoc, diag::warn_objc_protocol_qualifier_missing_id) << FixItHint::CreateInsertion(lAngleLoc, \"id\") << SourceRange(lAngleLoc, rAngleLoc);"}}, | [j]={{"clang/lib/Parse/ParseObjc.cpp",1625,"TypeResult Parser::parseObjCProtocolQualifierType(SourceLocation &rAngleLoc) {\n // ...\n if (result.isUsable()) {\n Diag(lAngleLoc, diag::warn_objc_protocol_qualifier_missing_id) << FixItHint::CreateInsertion(lAngleLoc, \"id\") << SourceRange(lAngleLoc, rAngleLoc);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/protocol-archane.m"]={"clang/test/SemaObjC/protocol-archane.m:11:8: warning: protocol has no object type specified; defaults to qualified \'id\'","clang/test/SemaObjC/protocol-archane.m:13:5: warning: protocol has no object type specified; defaults to qualified \'id\'","clang/test/SemaObjC/protocol-archane.m:40:20: warning: protocol has no object type specified; defaults to qualified \'id\'","clang/test/SemaObjC/protocol-archane.m:44:9: warning: protocol has no object type specified; defaults to qualified \'id\'"} | ["clang/test/SemaObjC/protocol-archane.m"]={"clang/test/SemaObjC/protocol-archane.m:11:8: warning: protocol has no object type specified; defaults to qualified \'id\'","clang/test/SemaObjC/protocol-archane.m:13:5: warning: protocol has no object type specified; defaults to qualified \'id\'","clang/test/SemaObjC/protocol-archane.m:40:20: warning: protocol has no object type specified; defaults to qualified \'id\'","clang/test/SemaObjC/protocol-archane.m:44:9: warning: protocol has no object type specified; defaults to qualified \'id\'"} | ||
Line 1,741: | Line 1,741: | ||
[h]=q, | [h]=q, | ||
[i]={"3018b950936a",1320188536,"objc: warn if a readonly property has a setter attribute too.","objc: warn if a readonly property has a setter attribute too."}, | [i]={"3018b950936a",1320188536,"objc: warn if a readonly property has a setter attribute too.","objc: warn if a readonly property has a setter attribute too."}, | ||
[j]={{V,2817,"void Sema::CheckObjCPropertyAttributes(Decl *PDecl, SourceLocation Loc, unsigned &Attributes, bool propertyInPrimaryClass) {\n if ((Attributes & ObjCPropertyAttribute::kind_readonly) && (Attributes & ObjCPropertyAttribute::kind_setter))\n Diag(Loc, diag::warn_objc_readonly_property_has_setter);"}}, | [j]={{V,2817,"void Sema::CheckObjCPropertyAttributes(Decl *PDecl, SourceLocation Loc, unsigned &Attributes, bool propertyInPrimaryClass) {\n // ...\n if ((Attributes & ObjCPropertyAttribute::kind_readonly) && (Attributes & ObjCPropertyAttribute::kind_setter))\n Diag(Loc, diag::warn_objc_readonly_property_has_setter);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property-10.m"]={"clang/test/SemaObjC/property-10.m:46:1: warning: setter cannot be specified for a readonly property [-Wobjc-readonly-with-setter-property]"} | ["clang/test/SemaObjC/property-10.m"]={"clang/test/SemaObjC/property-10.m:46:1: warning: setter cannot be specified for a readonly property [-Wobjc-readonly-with-setter-property]"} | ||
Line 1,775: | Line 1,775: | ||
[h]=y, | [h]=y, | ||
[i]={"10dc9d80cbb4",1436241508,"Warn when an intended Objective-C specialization was actually a useless protocol qualification.","Warn when an intended Objective-C specialization was actually a useless protocol qualification."}, | [i]={"10dc9d80cbb4",1436241508,"Warn when an intended Objective-C specialization was actually a useless protocol qualification.","Warn when an intended Objective-C specialization was actually a useless protocol qualification."}, | ||
[j]={{P,1528,"void Sema::actOnObjCTypeArgsOrProtocolQualifiers(Scope *S, ParsedType baseType, SourceLocation lAngleLoc, ArrayRef<IdentifierInfo *> identifiers, ArrayRef<SourceLocation> identifierLocs, SourceLocation rAngleLoc, SourceLocation &typeArgsLAngleLoc, SmallVectorImpl<ParsedType> &typeArgs, SourceLocation &typeArgsRAngleLoc, SourceLocation &protocolLAngleLoc, SmallVectorImpl<Decl *> &protocols, SourceLocation &protocolRAngleLoc, bool warnOnIncompleteProtocols) {\n auto resolvedAsProtocols = [&] {\n // All of the protocols listed also have type names, and at least\n // one is an Objective-C class name. Check whether all of the\n // protocol conformances are declared by the base class itself, in\n // which case we warn.\n if (allAreTypeNames && firstClassNameLoc.isValid()) {\n if (allProtocolsDeclared) {\n Diag(firstClassNameLoc, diag::warn_objc_redundant_qualified_class_type) << baseClass->getDeclName() << SourceRange(lAngleLoc, rAngleLoc) << FixItHint::CreateInsertion(getLocForEndOfToken(firstClassNameLoc), \" *\");"}}, | [j]={{P,1528,"void Sema::actOnObjCTypeArgsOrProtocolQualifiers(Scope *S, ParsedType baseType, SourceLocation lAngleLoc, ArrayRef<IdentifierInfo *> identifiers, ArrayRef<SourceLocation> identifierLocs, SourceLocation rAngleLoc, SourceLocation &typeArgsLAngleLoc, SmallVectorImpl<ParsedType> &typeArgs, SourceLocation &typeArgsRAngleLoc, SourceLocation &protocolLAngleLoc, SmallVectorImpl<Decl *> &protocols, SourceLocation &protocolRAngleLoc, bool warnOnIncompleteProtocols) {\n // ...\n auto resolvedAsProtocols = [&] {\n // ...\n // All of the protocols listed also have type names, and at least\n // one is an Objective-C class name. Check whether all of the\n // protocol conformances are declared by the base class itself, in\n // which case we warn.\n if (allAreTypeNames && firstClassNameLoc.isValid()) {\n // ...\n if (allProtocolsDeclared) {\n Diag(firstClassNameLoc, diag::warn_objc_redundant_qualified_class_type) << baseClass->getDeclName() << SourceRange(lAngleLoc, rAngleLoc) << FixItHint::CreateInsertion(getLocForEndOfToken(firstClassNameLoc), \" *\");"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/parameterized_classes_subst.m"]={"clang/test/SemaObjC/parameterized_classes_subst.m:436:17: warning: parameterized class \'NSArray\' already conforms to the protocols listed; did you forget a \'*\'? [-Wobjc-protocol-qualifiers]"} | ["clang/test/SemaObjC/parameterized_classes_subst.m"]={"clang/test/SemaObjC/parameterized_classes_subst.m:436:17: warning: parameterized class \'NSArray\' already conforms to the protocols listed; did you forget a \'*\'? [-Wobjc-protocol-qualifiers]"} | ||
Line 1,792: | Line 1,792: | ||
[h]=q, | [h]=q, | ||
[i]={"566fff0dac54",1347061583,"objective-C: introduce __attribute((objc_requires_super)) on method","objective-C: introduce __attribute((objc_requires_super)) on method"}, | [i]={"566fff0dac54",1347061583,"objective-C: introduce __attribute((objc_requires_super)) on method","objective-C: introduce __attribute((objc_requires_super)) on method"}, | ||
[j]={{C,6131,"static void handleObjCRequiresSuperAttr(Sema &S, Decl *D, const ParsedAttr &Attrs) {\n if (const auto *PDecl = dyn_cast_or_null<ObjCProtocolDecl>(DC)) {\n S.Diag(D->getBeginLoc(), diag::warn_objc_requires_super_protocol) << Attrs << 0;"},{C,6137,"static void handleObjCRequiresSuperAttr(Sema &S, Decl *D, const ParsedAttr &Attrs) {\n if (Method->getMethodFamily() == OMF_dealloc) {\n S.Diag(D->getBeginLoc(), diag::warn_objc_requires_super_protocol) << Attrs << 1;"}}, | [j]={{C,6131,"static void handleObjCRequiresSuperAttr(Sema &S, Decl *D, const ParsedAttr &Attrs) {\n // ...\n if (const auto *PDecl = dyn_cast_or_null<ObjCProtocolDecl>(DC)) {\n S.Diag(D->getBeginLoc(), diag::warn_objc_requires_super_protocol) << Attrs << 0;"},{C,6137,"static void handleObjCRequiresSuperAttr(Sema &S, Decl *D, const ParsedAttr &Attrs) {\n // ...\n if (Method->getMethodFamily() == OMF_dealloc) {\n S.Diag(D->getBeginLoc(), diag::warn_objc_requires_super_protocol) << Attrs << 1;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/super-dealloc-attribute.m"]={"clang/test/SemaObjC/super-dealloc-attribute.m:12:1: warning: \'objc_requires_super\' attribute cannot be applied to methods in protocols [-Wrequires-super-attribute]","clang/test/SemaObjC/super-dealloc-attribute.m:18:1: warning: \'objc_requires_super\' attribute cannot be applied to dealloc [-Wrequires-super-attribute]"} | ["clang/test/SemaObjC/super-dealloc-attribute.m"]={"clang/test/SemaObjC/super-dealloc-attribute.m:12:1: warning: \'objc_requires_super\' attribute cannot be applied to methods in protocols [-Wrequires-super-attribute]","clang/test/SemaObjC/super-dealloc-attribute.m:18:1: warning: \'objc_requires_super\' attribute cannot be applied to dealloc [-Wrequires-super-attribute]"} | ||
Line 1,809: | Line 1,809: | ||
[h]=q, | [h]=q, | ||
[i]={"acfbe9e1f228",1333735942,"Added a new attribute, objc_root_class, which informs the compiler when a root class is intentionall...","Added a new attribute, objc_root_class, which informs the compiler when a root class is intentionally declared."}, | [i]={"acfbe9e1f228",1333735942,"Added a new attribute, objc_root_class, which informs the compiler when a root class is intentionall...","Added a new attribute, objc_root_class, which informs the compiler when a root class is intentionally declared."}, | ||
[j]={{P,4138,"// 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->getSuperClass() == nullptr) {\n // This class has no superclass, so check that it has been marked with\n // __attribute((objc_root_class)).\n if (!HasRootClassAttr) {\n Diag(DeclLoc, diag::warn_objc_root_class_missing) << IDecl->getIdentifier();"}}, | [j]={{P,4138,"// Note: For class/category implementations, allMethods is always null.\nDecl *Sema::ActOnAtEnd(Scope *S, SourceRange AtEnd, ArrayRef<Decl *> allMethods, ArrayRef<DeclGroupPtrTy> allTUVars) {\n // ...\n if (ObjCImplementationDecl *IC = dyn_cast<ObjCImplementationDecl>(ClassDecl)) {\n // ...\n if (ObjCInterfaceDecl *IDecl = IC->getClassInterface()) {\n // ...\n if (IDecl->getSuperClass() == nullptr) {\n // This class has no superclass, so check that it has been marked with\n // __attribute((objc_root_class)).\n if (!HasRootClassAttr) {\n // ...\n Diag(DeclLoc, diag::warn_objc_root_class_missing) << IDecl->getIdentifier();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/method-encoding-2.m"]={"clang/test/SemaObjC/method-encoding-2.m:4:12: warning: class \'Intf\' defined without specifying a base class [-Wobjc-root-class]"} | ["clang/test/SemaObjC/method-encoding-2.m"]={"clang/test/SemaObjC/method-encoding-2.m:4:12: warning: class \'Intf\' defined without specifying a base class [-Wobjc-root-class]"} | ||
Line 1,826: | Line 1,826: | ||
[h]=q, | [h]=q, | ||
[i]={"b66d3cf5cf84",1386105109,"[objc] Emit warning when the implementation of a secondary initializer calls on","[objc] Emit warning when the implementation of a secondary initializer calls on"}, | [i]={"b66d3cf5cf84",1386105109,"[objc] Emit warning when the implementation of a secondary initializer calls on","[objc] Emit warning when the implementation of a secondary initializer calls on"}, | ||
[j]={{H,15861,"Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation) {\n {\n if (FD) {\n } else if (ObjCMethodDecl *MD = dyn_cast_or_null<ObjCMethodDecl>(dcl)) {\n if (FSI->ObjCWarnForNoInitDelegation) {\n // Don\'t issue this warning for unavaialable inits.\n if (!MD->isUnavailable())\n Diag(MD->getLocation(), diag::warn_objc_secondary_init_missing_init_call);"}}, | [j]={{H,15861,"Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation) {\n // ...\n {\n // ...\n if (FD) {\n // ...\n } else if (ObjCMethodDecl *MD = dyn_cast_or_null<ObjCMethodDecl>(dcl)) {\n // ...\n if (FSI->ObjCWarnForNoInitDelegation) {\n // Don\'t issue this warning for unavaialable inits.\n if (!MD->isUnavailable())\n Diag(MD->getLocation(), diag::warn_objc_secondary_init_missing_init_call);"}}, | ||
[p]={ | [p]={ | ||
[ed]={"clang/test/SemaObjC/attr-designated-init.m:32:1: warning: convenience initializer missing a \'self\' call to another initializer [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:48:1: warning: convenience initializer missing a \'self\' call to another initializer [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:160:1: warning: convenience initializer missing a \'self\' call to another initializer [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:176:1: warning: convenience initializer missing a \'self\' call to another initializer [-Wobjc-designated-initializers]"} | [ed]={"clang/test/SemaObjC/attr-designated-init.m:32:1: warning: convenience initializer missing a \'self\' call to another initializer [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:48:1: warning: convenience initializer missing a \'self\' call to another initializer [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:160:1: warning: convenience initializer missing a \'self\' call to another initializer [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:176:1: warning: convenience initializer missing a \'self\' call to another initializer [-Wobjc-designated-initializers]"} | ||
Line 1,843: | Line 1,843: | ||
[h]=q, | [h]=q, | ||
[i]={"b66d3cf5cf84",1386105109,"[objc] Emit warning when the implementation of a secondary initializer calls on","[objc] Emit warning when the implementation of a secondary initializer calls on"}, | [i]={"b66d3cf5cf84",1386105109,"[objc] Emit warning when the implementation of a secondary initializer calls on","[objc] Emit warning when the implementation of a secondary initializer calls on"}, | ||
[j]={{cb,3219,"/// 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 (DIFunctionScopeInfo && DIFunctionScopeInfo->ObjCIsSecondaryInit && (SuperLoc.isValid() || isSelfExpr(Receiver))) {\n if (SuperLoc.isValid()) {\n Diag(SelLoc, diag::warn_objc_secondary_init_super_init_call);"}}, | [j]={{cb,3219,"/// 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 // ...\n if (DIFunctionScopeInfo && DIFunctionScopeInfo->ObjCIsSecondaryInit && (SuperLoc.isValid() || isSelfExpr(Receiver))) {\n if (SuperLoc.isValid()) {\n Diag(SelLoc, diag::warn_objc_secondary_init_super_init_call);"}}, | ||
[p]={ | [p]={ | ||
[ed]={"clang/test/SemaObjC/attr-designated-init.m:161:17: warning: convenience initializer should not invoke an initializer on \'super\' [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:170:10: warning: convenience initializer should not invoke an initializer on \'super\' [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:172:12: warning: convenience initializer should not invoke an initializer on \'super\' [-Wobjc-designated-initializers]"} | [ed]={"clang/test/SemaObjC/attr-designated-init.m:161:17: warning: convenience initializer should not invoke an initializer on \'super\' [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:170:10: warning: convenience initializer should not invoke an initializer on \'super\' [-Wobjc-designated-initializers]","clang/test/SemaObjC/attr-designated-init.m:172:12: warning: convenience initializer should not invoke an initializer on \'super\' [-Wobjc-designated-initializers]"} | ||
Line 1,860: | Line 1,860: | ||
[h]=q, | [h]=q, | ||
[i]={"ea70bf71547b",1342547204,"Add -Wobjc-string-compare under -Wobjc-literal-compare.","Add -Wobjc-string-compare under -Wobjc-literal-compare."}, | [i]={"ea70bf71547b",1342547204,"Add -Wobjc-string-compare under -Wobjc-literal-compare.","Add -Wobjc-string-compare under -Wobjc-literal-compare."}, | ||
[j]={{A,12503,"static void diagnoseObjCLiteralComparison(Sema &S, SourceLocation Loc, ExprResult &LHS, ExprResult &RHS, BinaryOperator::Opcode Opc) {\n if (LiteralKind == Sema::LK_String)\n S.Diag(Loc, diag::warn_objc_string_literal_comparison) << Literal->getSourceRange();"}}, | [j]={{A,12503,"static void diagnoseObjCLiteralComparison(Sema &S, SourceLocation Loc, ExprResult &LHS, ExprResult &RHS, BinaryOperator::Opcode Opc) {\n // ...\n if (LiteralKind == Sema::LK_String)\n S.Diag(Loc, diag::warn_objc_string_literal_comparison) << Literal->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/FixIt/fixit-nsstring-compare.m"]={"clang/test/FixIt/fixit-nsstring-compare.m:16:28: warning: direct comparison of a string literal has undefined behavior [-Wobjc-string-compare]"} | ["clang/test/FixIt/fixit-nsstring-compare.m"]={"clang/test/FixIt/fixit-nsstring-compare.m:16:28: warning: direct comparison of a string literal has undefined behavior [-Wobjc-string-compare]"} | ||
Line 1,877: | Line 1,877: | ||
[h]=q, | [h]=q, | ||
[i]={"0e23c61c8755",1488815914,"[Sema][ObjC] Warn about \'performSelector\' calls with selectors","[Sema][ObjC] Warn about \'performSelector\' calls with selectors"}, | [i]={"0e23c61c8755",1488815914,"[Sema][ObjC] Warn about \'performSelector\' calls with selectors","[Sema][ObjC] Warn about \'performSelector\' calls with selectors"}, | ||
[j]={{cb,2530,"static void checkFoundationAPI(Sema &S, SourceLocation Loc, const ObjCMethodDecl *Method, ArrayRef<Expr *> Args, QualType ReceiverType, bool IsClassObjectCall) {\n if (Ret->isRecordType() || Ret->isVectorType() || Ret->isExtVectorType()) {\n S.Diag(Loc, diag::warn_objc_unsafe_perform_selector) << Method->getSelector() << (!Ret->isRecordType() ? /*Vector*/ 2 : Ret->isUnionType() ? /*Union*/ 1 : /*Struct*/ 0);"}}, | [j]={{cb,2530,"static void checkFoundationAPI(Sema &S, SourceLocation Loc, const ObjCMethodDecl *Method, ArrayRef<Expr *> Args, QualType ReceiverType, bool IsClassObjectCall) {\n // ...\n if (Ret->isRecordType() || Ret->isVectorType() || Ret->isExtVectorType()) {\n S.Diag(Loc, diag::warn_objc_unsafe_perform_selector) << Method->getSelector() << (!Ret->isRecordType() ? /*Vector*/ 2 : Ret->isUnionType() ? /*Union*/ 1 : /*Struct*/ 0);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/unsafe-perform-selector.m"]={"clang/test/SemaObjC/unsafe-perform-selector.m:58:6: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:59:6: warning: \'performSelectorInBackground:withObject:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:60:6: warning: \'performSelector:\' is incompatible with selectors that return a union type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:61:6: warning: \'performSelectorOnMainThread:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:62:6: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:90:9: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:91:9: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:95:10: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:96:10: warning: \'performSelectorInBackground:withObject:\' is incompatible with selectors that return a union type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:106:9: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:110:10: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:119:9: warning: \'performSelectorOnMainThread:onThread:withObject:waitUntilDone:modes:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:123:9: warning: \'performSelector:\' is incompatible with selectors that return a vector type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:124:9: warning: \'performSelector:\' is incompatible with selectors that return a vector type [-Wobjc-unsafe-perform-selector]"} | ["clang/test/SemaObjC/unsafe-perform-selector.m"]={"clang/test/SemaObjC/unsafe-perform-selector.m:58:6: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:59:6: warning: \'performSelectorInBackground:withObject:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:60:6: warning: \'performSelector:\' is incompatible with selectors that return a union type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:61:6: warning: \'performSelectorOnMainThread:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:62:6: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:90:9: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:91:9: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:95:10: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:96:10: warning: \'performSelectorInBackground:withObject:\' is incompatible with selectors that return a union type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:106:9: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:110:10: warning: \'performSelector:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:119:9: warning: \'performSelectorOnMainThread:onThread:withObject:waitUntilDone:modes:\' is incompatible with selectors that return a struct type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:123:9: warning: \'performSelector:\' is incompatible with selectors that return a vector type [-Wobjc-unsafe-perform-selector]","clang/test/SemaObjC/unsafe-perform-selector.m:124:9: warning: \'performSelector:\' is incompatible with selectors that return a vector type [-Wobjc-unsafe-perform-selector]"} | ||
Line 1,894: | Line 1,894: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{lb,2240,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_different_num_template_parameters:\n return diag::warn_odr_different_num_template_parameters;"}} | [j]={{lb,2240,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_different_num_template_parameters:\n return diag::warn_odr_different_num_template_parameters;"}} | ||
}, | }, | ||
["warn_odr_different_template_parameter_kind"]={ | ["warn_odr_different_template_parameter_kind"]={ | ||
Line 1,908: | Line 1,908: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{lb,2242,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_different_template_parameter_kind:\n return diag::warn_odr_different_template_parameter_kind;"}}, | [j]={{lb,2242,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_different_template_parameter_kind:\n return diag::warn_odr_different_template_parameter_kind;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ASTMerge/class-template/test.cpp"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/class-template/Inputs/class-template1.cpp:12:14: warning: template parameter has different kinds in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/class-template/Inputs/class-template1.cpp:21:18: warning: template parameter has different kinds in different translation units [-Wodr]"} | ["clang/test/ASTMerge/class-template/test.cpp"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/class-template/Inputs/class-template1.cpp:12:14: warning: template parameter has different kinds in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/class-template/Inputs/class-template1.cpp:21:18: warning: template parameter has different kinds in different translation units [-Wodr]"} | ||
Line 1,925: | Line 1,925: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{yb,3915,"ExpectedDecl ASTNodeImporter::VisitFieldDecl(FieldDecl *D) {\n for (auto *FoundDecl : FoundDecls) {\n if (FieldDecl *FoundField = dyn_cast<FieldDecl>(FoundDecl)) {\n Importer.ToDiag(Loc, diag::warn_odr_field_type_inconsistent) << Name << D->getType() << FoundField->getType();"},{yb,3994,"ExpectedDecl ASTNodeImporter::VisitIndirectFieldDecl(IndirectFieldDecl *D) {\n for (unsigned I = 0, N = FoundDecls.size(); I != N; ++I) {\n if (auto *FoundField = dyn_cast<IndirectFieldDecl>(FoundDecls[I])) {\n Importer.ToDiag(Loc, diag::warn_odr_field_type_inconsistent) << Name << D->getType() << FoundField->getType();"},{lb,2220,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_field_type_inconsistent:\n return diag::warn_odr_field_type_inconsistent;"}} | [j]={{yb,3915,"ExpectedDecl ASTNodeImporter::VisitFieldDecl(FieldDecl *D) {\n // ...\n for (auto *FoundDecl : FoundDecls) {\n if (FieldDecl *FoundField = dyn_cast<FieldDecl>(FoundDecl)) {\n // ...\n Importer.ToDiag(Loc, diag::warn_odr_field_type_inconsistent) << Name << D->getType() << FoundField->getType();"},{yb,3994,"ExpectedDecl ASTNodeImporter::VisitIndirectFieldDecl(IndirectFieldDecl *D) {\n // ...\n for (unsigned I = 0, N = FoundDecls.size(); I != N; ++I) {\n if (auto *FoundField = dyn_cast<IndirectFieldDecl>(FoundDecls[I])) {\n // ...\n Importer.ToDiag(Loc, diag::warn_odr_field_type_inconsistent) << Name << D->getType() << FoundField->getType();"},{lb,2220,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_field_type_inconsistent:\n return diag::warn_odr_field_type_inconsistent;"}} | ||
}, | }, | ||
["warn_odr_function_type_inconsistent"]={ | ["warn_odr_function_type_inconsistent"]={ | ||
Line 1,939: | Line 1,939: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{yb,3543,"ExpectedDecl ASTNodeImporter::VisitFunctionDecl(FunctionDecl *D) {\n }\n // Try to find a function in our own (\"to\") context with the same name, same\n // type, and in the same context as the function we\'re importing.\n else if (!LexicalDC->isFunctionOrMethod()) {\n for (auto *FoundDecl : FoundDecls) {\n if (auto *FoundFunction = dyn_cast<FunctionDecl>(FoundDecl)) {\n Importer.ToDiag(Loc, diag::warn_odr_function_type_inconsistent) << Name << D->getType() << FoundFunction->getType();"},{lb,2216,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_function_type_inconsistent:\n return diag::warn_odr_function_type_inconsistent;"}}, | [j]={{yb,3543,"ExpectedDecl ASTNodeImporter::VisitFunctionDecl(FunctionDecl *D) {\n // ...\n }\n // Try to find a function in our own (\"to\") context with the same name, same\n // type, and in the same context as the function we\'re importing.\n else if (!LexicalDC->isFunctionOrMethod()) {\n // ...\n for (auto *FoundDecl : FoundDecls) {\n // ...\n if (auto *FoundFunction = dyn_cast<FunctionDecl>(FoundDecl)) {\n // ...\n Importer.ToDiag(Loc, diag::warn_odr_function_type_inconsistent) << Name << D->getType() << FoundFunction->getType();"},{lb,2216,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_function_type_inconsistent:\n return diag::warn_odr_function_type_inconsistent;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ASTMerge/function/test.c"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/function/Inputs/function2.c:3:6: warning: external function \'f1\' declared with incompatible types in different translation units (\'void (Int, double)\' (aka \'void (int, double)\') vs. \'void (int, float)\') [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/function/Inputs/function2.c:5:6: warning: external function \'f3\' declared with incompatible types in different translation units (\'void (int)\' vs. \'void (void)\') [-Wodr]"} | ["clang/test/ASTMerge/function/test.c"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/function/Inputs/function2.c:3:6: warning: external function \'f1\' declared with incompatible types in different translation units (\'void (Int, double)\' (aka \'void (int, double)\') vs. \'void (int, float)\') [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/function/Inputs/function2.c:5:6: warning: external function \'f3\' declared with incompatible types in different translation units (\'void (int)\' vs. \'void (void)\') [-Wodr]"} | ||
Line 1,956: | Line 1,956: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{yb,4185,"ExpectedDecl ASTNodeImporter::VisitObjCIvarDecl(ObjCIvarDecl *D) {\n for (auto *FoundDecl : FoundDecls) {\n if (ObjCIvarDecl *FoundIvar = dyn_cast<ObjCIvarDecl>(FoundDecl)) {\n Importer.ToDiag(Loc, diag::warn_odr_ivar_type_inconsistent) << Name << D->getType() << FoundIvar->getType();"},{lb,2222,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_ivar_type_inconsistent:\n return diag::warn_odr_ivar_type_inconsistent;"}}, | [j]={{yb,4185,"ExpectedDecl ASTNodeImporter::VisitObjCIvarDecl(ObjCIvarDecl *D) {\n // ...\n for (auto *FoundDecl : FoundDecls) {\n if (ObjCIvarDecl *FoundIvar = dyn_cast<ObjCIvarDecl>(FoundDecl)) {\n // ...\n Importer.ToDiag(Loc, diag::warn_odr_ivar_type_inconsistent) << Name << D->getType() << FoundIvar->getType();"},{lb,2222,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_ivar_type_inconsistent:\n return diag::warn_odr_ivar_type_inconsistent;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ASTMerge/interface/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface2.m:16:9: warning: instance variable \'ivar2\' declared with incompatible types in different translation units (\'float\' vs. \'int\') [-Wodr]"} | ["clang/test/ASTMerge/interface/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface2.m:16:9: warning: instance variable \'ivar2\' declared with incompatible types in different translation units (\'float\' vs. \'int\') [-Wodr]"} | ||
Line 1,973: | Line 1,973: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{lb,2246,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_non_type_parameter_type_inconsistent:\n return diag::warn_odr_non_type_parameter_type_inconsistent;"}}, | [j]={{lb,2246,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_non_type_parameter_type_inconsistent:\n return diag::warn_odr_non_type_parameter_type_inconsistent;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ASTMerge/class-template/test.cpp"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/class-template/Inputs/class-template1.cpp:9:14: warning: non-type template parameter declared with incompatible types in different translation units (\'int\' vs. \'long\') [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/class-template/Inputs/class-template1.cpp:18:23: warning: non-type template parameter declared with incompatible types in different translation units (\'long\' vs. \'int\') [-Wodr]"} | ["clang/test/ASTMerge/class-template/test.cpp"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/class-template/Inputs/class-template1.cpp:9:14: warning: non-type template parameter declared with incompatible types in different translation units (\'int\' vs. \'long\') [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/class-template/Inputs/class-template1.cpp:18:23: warning: non-type template parameter declared with incompatible types in different translation units (\'long\' vs. \'int\') [-Wodr]"} | ||
Line 1,990: | Line 1,990: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{yb,4503,"ExpectedDecl ASTNodeImporter::VisitObjCMethodDecl(ObjCMethodDecl *D) {\n for (auto *FoundDecl : FoundDecls) {\n if (auto *FoundMethod = dyn_cast<ObjCMethodDecl>(FoundDecl)) {\n // Check the number of parameters.\n if (D->param_size() != FoundMethod->param_size()) {\n Importer.ToDiag(Loc, diag::warn_odr_objc_method_num_params_inconsistent) << D->isInstanceMethod() << Name << D->param_size() << FoundMethod->param_size();"},{lb,2228,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_objc_method_num_params_inconsistent:\n return diag::warn_odr_objc_method_num_params_inconsistent;"}} | [j]={{yb,4503,"ExpectedDecl ASTNodeImporter::VisitObjCMethodDecl(ObjCMethodDecl *D) {\n // ...\n for (auto *FoundDecl : FoundDecls) {\n if (auto *FoundMethod = dyn_cast<ObjCMethodDecl>(FoundDecl)) {\n // ...\n // Check the number of parameters.\n if (D->param_size() != FoundMethod->param_size()) {\n Importer.ToDiag(Loc, diag::warn_odr_objc_method_num_params_inconsistent) << D->isInstanceMethod() << Name << D->param_size() << FoundMethod->param_size();"},{lb,2228,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_objc_method_num_params_inconsistent:\n return diag::warn_odr_objc_method_num_params_inconsistent;"}} | ||
}, | }, | ||
["warn_odr_objc_method_param_type_inconsistent"]={ | ["warn_odr_objc_method_param_type_inconsistent"]={ | ||
Line 2,004: | Line 2,004: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{yb,4520,"ExpectedDecl ASTNodeImporter::VisitObjCMethodDecl(ObjCMethodDecl *D) {\n for (auto *FoundDecl : FoundDecls) {\n if (auto *FoundMethod = dyn_cast<ObjCMethodDecl>(FoundDecl)) {\n // Check parameter types.\n for (ObjCMethodDecl::param_iterator P = D->param_begin(), PEnd = D->param_end(), FoundP = FoundMethod->param_begin(); P != PEnd; ++P, ++FoundP) {\n if (!Importer.IsStructurallyEquivalent((*P)->getType(), (*FoundP)->getType())) {\n Importer.FromDiag((*P)->getLocation(), diag::warn_odr_objc_method_param_type_inconsistent) << D->isInstanceMethod() << Name << (*P)->getType() << (*FoundP)->getType();"},{lb,2230,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_objc_method_param_type_inconsistent:\n return diag::warn_odr_objc_method_param_type_inconsistent;"}}, | [j]={{yb,4520,"ExpectedDecl ASTNodeImporter::VisitObjCMethodDecl(ObjCMethodDecl *D) {\n // ...\n for (auto *FoundDecl : FoundDecls) {\n if (auto *FoundMethod = dyn_cast<ObjCMethodDecl>(FoundDecl)) {\n // ...\n // Check parameter types.\n for (ObjCMethodDecl::param_iterator P = D->param_begin(), PEnd = D->param_end(), FoundP = FoundMethod->param_begin(); P != PEnd; ++P, ++FoundP) {\n if (!Importer.IsStructurallyEquivalent((*P)->getType(), (*FoundP)->getType())) {\n Importer.FromDiag((*P)->getLocation(), diag::warn_odr_objc_method_param_type_inconsistent) << D->isInstanceMethod() << Name << (*P)->getType() << (*FoundP)->getType();"},{lb,2230,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_objc_method_param_type_inconsistent:\n return diag::warn_odr_objc_method_param_type_inconsistent;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ASTMerge/interface/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface2.m:39:19: warning: class method \'bar:\' has a parameter with a different types in different translation units (\'float\' vs. \'int\') [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface2.m:57:20: warning: instance method \'bar:\' has a parameter with a different types in different translation units (\'double\' vs. \'float\') [-Wodr]"} | ["clang/test/ASTMerge/interface/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface2.m:39:19: warning: class method \'bar:\' has a parameter with a different types in different translation units (\'float\' vs. \'int\') [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface2.m:57:20: warning: instance method \'bar:\' has a parameter with a different types in different translation units (\'double\' vs. \'float\') [-Wodr]"} | ||
Line 2,021: | Line 2,021: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{yb,4491,"ExpectedDecl ASTNodeImporter::VisitObjCMethodDecl(ObjCMethodDecl *D) {\n for (auto *FoundDecl : FoundDecls) {\n if (auto *FoundMethod = dyn_cast<ObjCMethodDecl>(FoundDecl)) {\n // Check return types.\n if (!Importer.IsStructurallyEquivalent(D->getReturnType(), FoundMethod->getReturnType())) {\n Importer.ToDiag(Loc, diag::warn_odr_objc_method_result_type_inconsistent) << D->isInstanceMethod() << Name << D->getReturnType() << FoundMethod->getReturnType();"},{lb,2226,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_objc_method_result_type_inconsistent:\n return diag::warn_odr_objc_method_result_type_inconsistent;"}}, | [j]={{yb,4491,"ExpectedDecl ASTNodeImporter::VisitObjCMethodDecl(ObjCMethodDecl *D) {\n // ...\n for (auto *FoundDecl : FoundDecls) {\n if (auto *FoundMethod = dyn_cast<ObjCMethodDecl>(FoundDecl)) {\n // ...\n // Check return types.\n if (!Importer.IsStructurallyEquivalent(D->getReturnType(), FoundMethod->getReturnType())) {\n Importer.ToDiag(Loc, diag::warn_odr_objc_method_result_type_inconsistent) << D->isInstanceMethod() << Name << D->getReturnType() << FoundMethod->getReturnType();"},{lb,2226,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_objc_method_result_type_inconsistent:\n return diag::warn_odr_objc_method_result_type_inconsistent;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ASTMerge/property/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/property/Inputs/property2.m:12:26: warning: instance method \'Prop1\' has incompatible result types in different translation units (\'int\' vs. \'float\') [-Wodr]"} | ["clang/test/ASTMerge/property/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/property/Inputs/property2.m:12:26: warning: instance method \'Prop1\' has incompatible result types in different translation units (\'int\' vs. \'float\') [-Wodr]"} | ||
Line 2,038: | Line 2,038: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{yb,4533,"ExpectedDecl ASTNodeImporter::VisitObjCMethodDecl(ObjCMethodDecl *D) {\n for (auto *FoundDecl : FoundDecls) {\n if (auto *FoundMethod = dyn_cast<ObjCMethodDecl>(FoundDecl)) {\n // Check variadic/non-variadic.\n // Check the number of parameters.\n if (D->isVariadic() != FoundMethod->isVariadic()) {\n Importer.ToDiag(Loc, diag::warn_odr_objc_method_variadic_inconsistent) << D->isInstanceMethod() << Name;"},{lb,2232,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_objc_method_variadic_inconsistent:\n return diag::warn_odr_objc_method_variadic_inconsistent;"}}, | [j]={{yb,4533,"ExpectedDecl ASTNodeImporter::VisitObjCMethodDecl(ObjCMethodDecl *D) {\n // ...\n for (auto *FoundDecl : FoundDecls) {\n if (auto *FoundMethod = dyn_cast<ObjCMethodDecl>(FoundDecl)) {\n // ...\n // Check variadic/non-variadic.\n // Check the number of parameters.\n if (D->isVariadic() != FoundMethod->isVariadic()) {\n Importer.ToDiag(Loc, diag::warn_odr_objc_method_variadic_inconsistent) << D->isInstanceMethod() << Name;"},{lb,2232,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_objc_method_variadic_inconsistent:\n return diag::warn_odr_objc_method_variadic_inconsistent;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ASTMerge/interface/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface2.m:45:1: warning: class method \'bar:\' is variadic in one translation unit and not variadic in another [-Wodr]"} | ["clang/test/ASTMerge/interface/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface2.m:45:1: warning: class method \'bar:\' is variadic in one translation unit and not variadic in another [-Wodr]"} | ||
Line 2,055: | Line 2,055: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{yb,5602,"ExpectedDecl ASTNodeImporter::VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D) {\n if (!ToImpl) {\n } else {\n // Check that we have the same kind of property implementation (@synthesize\n // vs. @dynamic).\n if (D->getPropertyImplementation() != ToImpl->getPropertyImplementation()) {\n Importer.ToDiag(ToImpl->getLocation(), diag::warn_odr_objc_property_impl_kind_inconsistent) << Property->getDeclName() << (ToImpl->getPropertyImplementation() == ObjCPropertyImplDecl::Dynamic);"},{lb,2236,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_objc_property_impl_kind_inconsistent:\n return diag::warn_odr_objc_property_impl_kind_inconsistent;"}}, | [j]={{yb,5602,"ExpectedDecl ASTNodeImporter::VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D) {\n // ...\n if (!ToImpl) {\n // ...\n } else {\n // Check that we have the same kind of property implementation (@synthesize\n // vs. @dynamic).\n if (D->getPropertyImplementation() != ToImpl->getPropertyImplementation()) {\n Importer.ToDiag(ToImpl->getLocation(), diag::warn_odr_objc_property_impl_kind_inconsistent) << Property->getDeclName() << (ToImpl->getPropertyImplementation() == ObjCPropertyImplDecl::Dynamic);"},{lb,2236,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_objc_property_impl_kind_inconsistent:\n return diag::warn_odr_objc_property_impl_kind_inconsistent;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ASTMerge/property/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/property/Inputs/property1.m:29:10: warning: property \'Prop3\' is implemented with @dynamic in one translation but @synthesize in another translation unit [-Wodr]"} | ["clang/test/ASTMerge/property/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/property/Inputs/property1.m:29:10: warning: property \'Prop3\' is implemented with @dynamic in one translation but @synthesize in another translation unit [-Wodr]"} | ||
Line 2,072: | Line 2,072: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{yb,5501,"ExpectedDecl ASTNodeImporter::VisitObjCPropertyDecl(ObjCPropertyDecl *D) {\n for (auto *FoundDecl : FoundDecls) {\n if (auto *FoundProp = dyn_cast<ObjCPropertyDecl>(FoundDecl)) {\n // Check property types.\n if (!Importer.IsStructurallyEquivalent(D->getType(), FoundProp->getType())) {\n Importer.ToDiag(Loc, diag::warn_odr_objc_property_type_inconsistent) << Name << D->getType() << FoundProp->getType();"},{lb,2234,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_objc_property_type_inconsistent:\n return diag::warn_odr_objc_property_type_inconsistent;"}}, | [j]={{yb,5501,"ExpectedDecl ASTNodeImporter::VisitObjCPropertyDecl(ObjCPropertyDecl *D) {\n // ...\n for (auto *FoundDecl : FoundDecls) {\n if (auto *FoundProp = dyn_cast<ObjCPropertyDecl>(FoundDecl)) {\n // ...\n // Check property types.\n if (!Importer.IsStructurallyEquivalent(D->getType(), FoundProp->getType())) {\n Importer.ToDiag(Loc, diag::warn_odr_objc_property_type_inconsistent) << Name << D->getType() << FoundProp->getType();"},{lb,2234,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_objc_property_type_inconsistent:\n return diag::warn_odr_objc_property_type_inconsistent;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ASTMerge/property/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/property/Inputs/property2.m:12:26: warning: property \'Prop1\' declared with incompatible types in different translation units (\'int\' vs. \'float\') [-Wodr]"} | ["clang/test/ASTMerge/property/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/property/Inputs/property2.m:12:26: warning: property \'Prop1\' declared with incompatible types in different translation units (\'int\' vs. \'float\') [-Wodr]"} | ||
Line 2,089: | Line 2,089: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{yb,5182,"Error ASTNodeImporter::ImportDefinition(ObjCInterfaceDecl *From, ObjCInterfaceDecl *To, ImportDefinitionKind Kind) {\n if (To->getDefinition()) {\n if ((bool)FromSuper != (bool)ToSuper || (FromSuper && !declaresSameEntity(FromSuper, ToSuper))) {\n Importer.ToDiag(To->getLocation(), diag::warn_odr_objc_superclass_inconsistent) << To->getDeclName();"},{yb,5448,"ExpectedDecl ASTNodeImporter::VisitObjCImplementationDecl(ObjCImplementationDecl *D) {\n if (!Impl) {\n } else {\n // Verify that the existing @implementation has the same superclass.\n if ((Super && !Impl->getSuperClass()) || (!Super && Impl->getSuperClass()) || (Super && Impl->getSuperClass() && !declaresSameEntity(Super->getCanonicalDecl(), Impl->getSuperClass()))) {\n Importer.ToDiag(Impl->getLocation(), diag::warn_odr_objc_superclass_inconsistent) << Iface->getDeclName();"},{lb,2224,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_objc_superclass_inconsistent:\n return diag::warn_odr_objc_superclass_inconsistent;"}}, | [j]={{yb,5182,"Error ASTNodeImporter::ImportDefinition(ObjCInterfaceDecl *From, ObjCInterfaceDecl *To, ImportDefinitionKind Kind) {\n if (To->getDefinition()) {\n // ...\n if ((bool)FromSuper != (bool)ToSuper || (FromSuper && !declaresSameEntity(FromSuper, ToSuper))) {\n Importer.ToDiag(To->getLocation(), diag::warn_odr_objc_superclass_inconsistent) << To->getDeclName();"},{yb,5448,"ExpectedDecl ASTNodeImporter::VisitObjCImplementationDecl(ObjCImplementationDecl *D) {\n // ...\n if (!Impl) {\n // ...\n } else {\n // ...\n // Verify that the existing @implementation has the same superclass.\n if ((Super && !Impl->getSuperClass()) || (!Super && Impl->getSuperClass()) || (Super && Impl->getSuperClass() && !declaresSameEntity(Super->getCanonicalDecl(), Impl->getSuperClass()))) {\n Importer.ToDiag(Impl->getLocation(), diag::warn_odr_objc_superclass_inconsistent) << Iface->getDeclName();"},{lb,2224,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_objc_superclass_inconsistent:\n return diag::warn_odr_objc_superclass_inconsistent;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ASTMerge/interface/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface1.m:21:12: warning: class \'I4\' has incompatible superclasses [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface1.m:100:17: warning: class \'I15\' has incompatible superclasses [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface1.m:100:17: warning: class \'I15\' has incompatible superclasses [-Wodr]"} | ["clang/test/ASTMerge/interface/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface1.m:21:12: warning: class \'I4\' has incompatible superclasses [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface1.m:100:17: warning: class \'I15\' has incompatible superclasses [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/interface/Inputs/interface1.m:100:17: warning: class \'I15\' has incompatible superclasses [-Wodr]"} | ||
Line 2,106: | Line 2,106: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{yb,5618,"ExpectedDecl ASTNodeImporter::VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D) {\n if (!ToImpl) {\n } else {\n // For @synthesize, check that we have the same\n if (D->getPropertyImplementation() == ObjCPropertyImplDecl::Synthesize && Ivar != ToImpl->getPropertyIvarDecl()) {\n Importer.ToDiag(ToImpl->getPropertyIvarDeclLoc(), diag::warn_odr_objc_synthesize_ivar_inconsistent) << Property->getDeclName() << ToImpl->getPropertyIvarDecl()->getDeclName() << Ivar->getDeclName();"},{lb,2238,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_objc_synthesize_ivar_inconsistent:\n return diag::warn_odr_objc_synthesize_ivar_inconsistent;"}}, | [j]={{yb,5618,"ExpectedDecl ASTNodeImporter::VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D) {\n // ...\n if (!ToImpl) {\n // ...\n } else {\n // ...\n // For @synthesize, check that we have the same\n if (D->getPropertyImplementation() == ObjCPropertyImplDecl::Synthesize && Ivar != ToImpl->getPropertyIvarDecl()) {\n Importer.ToDiag(ToImpl->getPropertyIvarDeclLoc(), diag::warn_odr_objc_synthesize_ivar_inconsistent) << Property->getDeclName() << ToImpl->getPropertyIvarDecl()->getDeclName() << Ivar->getDeclName();"},{lb,2238,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_objc_synthesize_ivar_inconsistent:\n return diag::warn_odr_objc_synthesize_ivar_inconsistent;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ASTMerge/property/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/property/Inputs/property1.m:28:21: warning: property \'Prop2\' is synthesized to different ivars in different translation units (\'ivar3\' vs. \'ivar2\') [-Wodr]"} | ["clang/test/ASTMerge/property/test.m"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/property/Inputs/property1.m:28:21: warning: property \'Prop2\' is synthesized to different ivars in different translation units (\'ivar3\' vs. \'ivar2\') [-Wodr]"} | ||
Line 2,123: | Line 2,123: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{lb,2244,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_parameter_pack_non_pack:\n return diag::warn_odr_parameter_pack_non_pack;"}} | [j]={{lb,2244,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_parameter_pack_non_pack:\n return diag::warn_odr_parameter_pack_non_pack;"}} | ||
}, | }, | ||
["warn_odr_tag_type_inconsistent"]={ | ["warn_odr_tag_type_inconsistent"]={ | ||
Line 2,137: | Line 2,137: | ||
[h]=y, | [h]=y, | ||
[i]={"98c101833744",1266013059,"Implement AST importing and merging for enumeration types and","Implement AST importing and merging for enumeration types and"}, | [i]={"98c101833744",1266013059,"Implement AST importing and merging for enumeration types and","Implement AST importing and merging for enumeration types and"}, | ||
[j]={{lb,2218,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_tag_type_inconsistent:\n return diag::warn_odr_tag_type_inconsistent;"}}, | [j]={{lb,2218,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_tag_type_inconsistent:\n return diag::warn_odr_tag_type_inconsistent;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ASTMerge/struct/test.c"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:13:8: warning: type \'struct S1\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:21:8: warning: type \'struct S2\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:24:8: warning: type \'struct S3\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:27:8: warning: type \'struct S4\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:56:10: warning: type \'struct DeeperError\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:54:8: warning: type \'struct DeepError\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:74:9: warning: type \'S13\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:130:7: warning: type \'struct DeepUnnamedError::(unnamed at /var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:130:7)\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:129:5: warning: type \'union DeepUnnamedError::(unnamed at /var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:129:5)\' has incompatible definitions in different translation units [-Wodr]"} | ["clang/test/ASTMerge/struct/test.c"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:13:8: warning: type \'struct S1\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:21:8: warning: type \'struct S2\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:24:8: warning: type \'struct S3\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:27:8: warning: type \'struct S4\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:56:10: warning: type \'struct DeeperError\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:54:8: warning: type \'struct DeepError\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:74:9: warning: type \'S13\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:130:7: warning: type \'struct DeepUnnamedError::(unnamed at /var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:130:7)\' has incompatible definitions in different translation units [-Wodr]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:129:5: warning: type \'union DeepUnnamedError::(unnamed at /var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/struct/Inputs/struct1.c:129:5)\' has incompatible definitions in different translation units [-Wodr]"} | ||
Line 2,154: | Line 2,154: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{lb,2214,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_variable_multiple_def:\n return diag::warn_odr_variable_multiple_def;"}} | [j]={{lb,2214,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_variable_multiple_def:\n return diag::warn_odr_variable_multiple_def;"}} | ||
}, | }, | ||
["warn_odr_variable_type_inconsistent"]={ | ["warn_odr_variable_type_inconsistent"]={ | ||
Line 2,168: | Line 2,168: | ||
[h]=y, | [h]=y, | ||
[i]={nb,1554130013,L,L}, | [i]={nb,1554130013,L,L}, | ||
[j]={{yb,4296,"ExpectedDecl ASTNodeImporter::VisitVarDecl(VarDecl *D) {\n if (D->isFileVarDecl()) {\n for (auto *FoundDecl : FoundDecls) {\n if (auto *FoundVar = dyn_cast<VarDecl>(FoundDecl)) {\n Importer.ToDiag(Loc, diag::warn_odr_variable_type_inconsistent) << Name << D->getType() << FoundVar->getType();"},{lb,2212,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n case diag::err_odr_variable_type_inconsistent:\n return diag::warn_odr_variable_type_inconsistent;"}}, | [j]={{yb,4296,"ExpectedDecl ASTNodeImporter::VisitVarDecl(VarDecl *D) {\n // ...\n if (D->isFileVarDecl()) {\n // ...\n for (auto *FoundDecl : FoundDecls) {\n // ...\n if (auto *FoundVar = dyn_cast<VarDecl>(FoundDecl)) {\n // ...\n Importer.ToDiag(Loc, diag::warn_odr_variable_type_inconsistent) << Name << D->getType() << FoundVar->getType();"},{lb,2212,"unsigned StructuralEquivalenceContext::getApplicableDiagnostic(unsigned ErrorDiagnostic) {\n // ...\n case diag::err_odr_variable_type_inconsistent:\n return diag::warn_odr_variable_type_inconsistent;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/ASTMerge/namespace/test.cpp"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/namespace/Inputs/namespace2.cpp:16:17: warning: external variable \'z\' declared with incompatible types in different translation units (\'double\' vs. \'float\') [-Wodr]"} | ["clang/test/ASTMerge/namespace/test.cpp"]={"/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/ASTMerge/namespace/Inputs/namespace2.cpp:16:17: warning: external variable \'z\' declared with incompatible types in different translation units (\'double\' vs. \'float\') [-Wodr]"} | ||
Line 2,185: | Line 2,185: | ||
[h]=y, | [h]=y, | ||
[i]={"13234ae40db3",1433800799,"Consider unsigned long for non-u/U decimal literals (C90/C++03)","Consider unsigned long for non-u/U decimal literals (C90/C++03)"}, | [i]={"13234ae40db3",1433800799,"Consider unsigned long for non-u/U decimal literals (C90/C++03)","Consider unsigned long for non-u/U decimal literals (C90/C++03)"}, | ||
[j]={{A,4225,"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 // Are long/unsigned long possibilities?\n if (Ty.isNull() && !Literal.isLongLong && !Literal.isSizeT) {\n // Does it fit in a unsigned long?\n if (ResultVal.isIntN(LongSize)) {\n // Does it fit in a signed long?\n if (!Literal.isUnsigned && ResultVal[LongSize - 1] == 0)\n else if (AllowUnsigned)\n // Check according to the rules of C90 6.1.3.2p5. C++03 [lex.icon]p2\n // is compatible.\n else if (!getLangOpts().C99 && !getLangOpts().CPlusPlus11) {\n Diag(Tok.getLocation(), getLangOpts().CPlusPlus ? Literal.isLong ? diag::warn_old_implicitly_unsigned_long_cxx : /*C++98 UB*/ diag::ext_old_implicitly_unsigned_long_cxx : diag::warn_old_implicitly_unsigned_long) << (LongLongSize > LongSize ? /*will have type \'long long\'*/ 0 : /*will be ill-formed*/ 1);"}}, | [j]={{A,4225,"ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {\n // ...\n if (Literal.isFixedPointLiteral()) {\n // ...\n } else if (Literal.isFloatingLiteral()) {\n // ...\n } else if (!Literal.isIntegerLiteral()) {\n // ...\n } else {\n // ...\n if (Literal.GetIntegerValue(ResultVal)) {\n // ...\n } else {\n // ...\n // Are long/unsigned long possibilities?\n if (Ty.isNull() && !Literal.isLongLong && !Literal.isSizeT) {\n // ...\n // Does it fit in a unsigned long?\n if (ResultVal.isIntN(LongSize)) {\n // Does it fit in a signed long?\n if (!Literal.isUnsigned && ResultVal[LongSize - 1] == 0)\n // ...\n else if (AllowUnsigned)\n // ...\n // Check according to the rules of C90 6.1.3.2p5. C++03 [lex.icon]p2\n // is compatible.\n else if (!getLangOpts().C99 && !getLangOpts().CPlusPlus11) {\n // ...\n Diag(Tok.getLocation(), getLangOpts().CPlusPlus ? Literal.isLong ? diag::warn_old_implicitly_unsigned_long_cxx : /*C++98 UB*/ diag::ext_old_implicitly_unsigned_long_cxx : diag::warn_old_implicitly_unsigned_long) << (LongLongSize > LongSize ? /*will have type \'long long\'*/ 0 : /*will be ill-formed*/ 1);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/PR16678.c"]={"clang/test/Sema/PR16678.c:74:19: warning: integer literal is too large to be represented in type \'long\', interpreting as \'unsigned long\' per C89; this literal will be ill-formed in C99 onwards [-Wc99-compat]","clang/test/Sema/PR16678.c:75:19: warning: integer literal is too large to be represented in type \'long\', interpreting as \'unsigned long\' per C89; this literal will be ill-formed in C99 onwards [-Wc99-compat]","clang/test/Sema/PR16678.c:76:19: warning: integer literal is too large to be represented in type \'long\', interpreting as \'unsigned long\' per C89; this literal will be ill-formed in C99 onwards [-Wc99-compat]"} | ["clang/test/Sema/PR16678.c"]={"clang/test/Sema/PR16678.c:74:19: warning: integer literal is too large to be represented in type \'long\', interpreting as \'unsigned long\' per C89; this literal will be ill-formed in C99 onwards [-Wc99-compat]","clang/test/Sema/PR16678.c:75:19: warning: integer literal is too large to be represented in type \'long\', interpreting as \'unsigned long\' per C89; this literal will be ill-formed in C99 onwards [-Wc99-compat]","clang/test/Sema/PR16678.c:76:19: warning: integer literal is too large to be represented in type \'long\', interpreting as \'unsigned long\' per C89; this literal will be ill-formed in C99 onwards [-Wc99-compat]"} | ||
Line 2,202: | Line 2,202: | ||
[h]=y, | [h]=y, | ||
[i]={"13234ae40db3",1433800799,"Consider unsigned long for non-u/U decimal literals (C90/C++03)","Consider unsigned long for non-u/U decimal literals (C90/C++03)"}, | [i]={"13234ae40db3",1433800799,"Consider unsigned long for non-u/U decimal literals (C90/C++03)","Consider unsigned long for non-u/U decimal literals (C90/C++03)"}, | ||
[j]={{A,4193,"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 // Are long/unsigned long possibilities?\n if (Ty.isNull() && !Literal.isLongLong && !Literal.isSizeT) {\n // Does it fit in a unsigned long?\n if (ResultVal.isIntN(LongSize)) {\n // Does it fit in a signed long?\n if (!Literal.isUnsigned && ResultVal[LongSize - 1] == 0)\n else if (AllowUnsigned)\n // Check according to the rules of C90 6.1.3.2p5. C++03 [lex.icon]p2\n // is compatible.\n else if (!getLangOpts().C99 && !getLangOpts().CPlusPlus11) {\n Diag(Tok.getLocation(), getLangOpts().CPlusPlus ? Literal.isLong ? diag::warn_old_implicitly_unsigned_long_cxx : /*C++98 UB*/ diag::ext_old_implicitly_unsigned_long_cxx : diag::warn_old_implicitly_unsigned_long) << (LongLongSize > LongSize ? /*will have type \'long long\'*/ 0 : /*will be ill-formed*/ 1);"}}, | [j]={{A,4193,"ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {\n // ...\n if (Literal.isFixedPointLiteral()) {\n // ...\n } else if (Literal.isFloatingLiteral()) {\n // ...\n } else if (!Literal.isIntegerLiteral()) {\n // ...\n } else {\n // ...\n if (Literal.GetIntegerValue(ResultVal)) {\n // ...\n } else {\n // ...\n // Are long/unsigned long possibilities?\n if (Ty.isNull() && !Literal.isLongLong && !Literal.isSizeT) {\n // ...\n // Does it fit in a unsigned long?\n if (ResultVal.isIntN(LongSize)) {\n // Does it fit in a signed long?\n if (!Literal.isUnsigned && ResultVal[LongSize - 1] == 0)\n // ...\n else if (AllowUnsigned)\n // ...\n // Check according to the rules of C90 6.1.3.2p5. C++03 [lex.icon]p2\n // is compatible.\n else if (!getLangOpts().C99 && !getLangOpts().CPlusPlus11) {\n // ...\n Diag(Tok.getLocation(), getLangOpts().CPlusPlus ? Literal.isLong ? diag::warn_old_implicitly_unsigned_long_cxx : /*C++98 UB*/ diag::ext_old_implicitly_unsigned_long_cxx : diag::warn_old_implicitly_unsigned_long) << (LongLongSize > LongSize ? /*will have type \'long long\'*/ 0 : /*will be ill-formed*/ 1);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/PR16678.c"]={"clang/test/Sema/PR16678.c:75:19: warning: integer literal is too large to be represented in type \'long\', interpreting as \'unsigned long\' per C++98; this literal will be ill-formed in C++11 onwards [-Wc++11-compat]","clang/test/Sema/PR16678.c:76:19: warning: integer literal is too large to be represented in type \'long\', interpreting as \'unsigned long\' per C++98; this literal will be ill-formed in C++11 onwards [-Wc++11-compat]"} | ["clang/test/Sema/PR16678.c"]={"clang/test/Sema/PR16678.c:75:19: warning: integer literal is too large to be represented in type \'long\', interpreting as \'unsigned long\' per C++98; this literal will be ill-formed in C++11 onwards [-Wc++11-compat]","clang/test/Sema/PR16678.c:76:19: warning: integer literal is too large to be represented in type \'long\', interpreting as \'unsigned long\' per C++98; this literal will be ill-formed in C++11 onwards [-Wc++11-compat]"} | ||
Line 2,220: | Line 2,220: | ||
[h]=q, | [h]=q, | ||
[i]={"c7c1ebe66049",1385522297,"Implement -Wold-style-cast","Implement -Wold-style-cast"}, | [i]={"c7c1ebe66049",1385522297,"Implement -Wold-style-cast","Implement -Wold-style-cast"}, | ||
[j]={{A,8508,"ExprResult Sema::ActOnCastExpr(Scope *S, SourceLocation LParenLoc, Declarator &D, ParsedType &Ty, SourceLocation RParenLoc, Expr *CastExpr) {\n if (getLangOpts().CPlusPlus && !castType->isVoidType())\n Diag(LParenLoc, diag::warn_old_style_cast) << CastExpr->getSourceRange();"}}, | [j]={{A,8508,"ExprResult Sema::ActOnCastExpr(Scope *S, SourceLocation LParenLoc, Declarator &D, ParsedType &Ty, SourceLocation RParenLoc, Expr *CastExpr) {\n // ...\n if (getLangOpts().CPlusPlus && !castType->isVoidType())\n Diag(LParenLoc, diag::warn_old_style_cast) << CastExpr->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/old-style-cast.cpp"]={"clang/test/SemaCXX/old-style-cast.cpp:4:12: warning: use of old-style cast [-Wold-style-cast]","clang/test/SemaCXX/old-style-cast.cpp:5:3: warning: use of old-style cast [-Wold-style-cast]","clang/test/SemaCXX/old-style-cast.cpp:6:3: warning: use of old-style cast [-Wold-style-cast]"} | ["clang/test/SemaCXX/old-style-cast.cpp"]={"clang/test/SemaCXX/old-style-cast.cpp:4:12: warning: use of old-style cast [-Wold-style-cast]","clang/test/SemaCXX/old-style-cast.cpp:5:3: warning: use of old-style cast [-Wold-style-cast]","clang/test/SemaCXX/old-style-cast.cpp:6:3: warning: use of old-style cast [-Wold-style-cast]"} | ||
Line 2,238: | Line 2,238: | ||
[h]=B, | [h]=B, | ||
[i]={"69350e569dc4",1612659633,bc,bc}, | [i]={"69350e569dc4",1612659633,bc,bc}, | ||
[j]={{"clang/lib/Parse/ParseDeclCXX.cpp",4431,"/// ParseCXX11AttributeArgs -- Parse a C++11 attribute-argument-clause.\n///\n/// [C++11] attribute-argument-clause:\n/// \'(\' balanced-token-seq \')\'\n///\n/// [C++11] balanced-token-seq:\n/// balanced-token\n/// balanced-token-seq balanced-token\n///\n/// [C++11] balanced-token:\n/// \'(\' balanced-token-seq \')\'\n/// \'[\' balanced-token-seq \']\'\n/// \'{\' balanced-token-seq \'}\'\n/// any token but \'(\', \')\', \'[\', \']\', \'{\', or \'}\'\nbool Parser::ParseCXX11AttributeArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs, SourceLocation *EndLoc, IdentifierInfo *ScopeName, SourceLocation ScopeLoc, CachedTokens &OpenMPTokens) {\n if (ScopeName && ScopeName->isStr(\"omp\")) {\n Diag(AttrNameLoc, getLangOpts().OpenMP >= 51 ? diag::warn_omp51_compat_attributes : diag::ext_omp_attributes);"}}, | [j]={{"clang/lib/Parse/ParseDeclCXX.cpp",4431,"/// ParseCXX11AttributeArgs -- Parse a C++11 attribute-argument-clause.\n///\n/// [C++11] attribute-argument-clause:\n/// \'(\' balanced-token-seq \')\'\n///\n/// [C++11] balanced-token-seq:\n/// balanced-token\n/// balanced-token-seq balanced-token\n///\n/// [C++11] balanced-token:\n/// \'(\' balanced-token-seq \')\'\n/// \'[\' balanced-token-seq \']\'\n/// \'{\' balanced-token-seq \'}\'\n/// any token but \'(\', \')\', \'[\', \']\', \'{\', or \'}\'\nbool Parser::ParseCXX11AttributeArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs, SourceLocation *EndLoc, IdentifierInfo *ScopeName, SourceLocation ScopeLoc, CachedTokens &OpenMPTokens) {\n // ...\n if (ScopeName && ScopeName->isStr(\"omp\")) {\n Diag(AttrNameLoc, getLangOpts().OpenMP >= 51 ? diag::warn_omp51_compat_attributes : diag::ext_omp_attributes);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/openmp_attribute_compat.cpp"]={"clang/test/OpenMP/openmp_attribute_compat.cpp:17:8: warning: specifying OpenMP directives with [[]] is incompatible with OpenMP standards before OpenMP 5.1 [-Wpre-openmp-51-compat]"} | ["clang/test/OpenMP/openmp_attribute_compat.cpp"]={"clang/test/OpenMP/openmp_attribute_compat.cpp:17:8: warning: specifying OpenMP directives with [[]] is incompatible with OpenMP standards before OpenMP 5.1 [-Wpre-openmp-51-compat]"} | ||
Line 2,255: | Line 2,255: | ||
[h]=vb, | [h]=vb, | ||
[i]={"09184fedc049",1412054968,"[OPENMP] Codegen of the ‘aligned’ clause for the ‘omp simd’ directive.","[OPENMP] Codegen of the ‘aligned’ clause for the ‘omp simd’ directive."}, | [i]={"09184fedc049",1412054968,"[OPENMP] Codegen of the ‘aligned’ clause for the ‘omp simd’ directive.","[OPENMP] Codegen of the ‘aligned’ clause for the ‘omp simd’ directive."}, | ||
[j]={{rb,16532,"ExprResult Sema::VerifyPositiveIntegerConstantInClause(Expr *E, OpenMPClauseKind CKind, bool StrictlyPositive, bool SuppressExprDiags) {\n if ((CKind == OMPC_aligned || CKind == OMPC_align) && !Result.isPowerOf2()) {\n Diag(E->getExprLoc(), diag::warn_omp_alignment_not_power_of_two) << E->getSourceRange();"}}, | [j]={{rb,16532,"ExprResult Sema::VerifyPositiveIntegerConstantInClause(Expr *E, OpenMPClauseKind CKind, bool StrictlyPositive, bool SuppressExprDiags) {\n // ...\n if ((CKind == OMPC_aligned || CKind == OMPC_align) && !Result.isPowerOf2()) {\n Diag(E->getExprLoc(), diag::warn_omp_alignment_not_power_of_two) << E->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/align_clause_messages.cpp"]={"clang/test/OpenMP/align_clause_messages.cpp:41:31: warning: aligned clause will be ignored because the requested alignment is not a power of 2 [-Wopenmp-clauses]","clang/test/OpenMP/align_clause_messages.cpp:51:33: warning: aligned clause will be ignored because the requested alignment is not a power of 2 [-Wopenmp-clauses]"} | ["clang/test/OpenMP/align_clause_messages.cpp"]={"clang/test/OpenMP/align_clause_messages.cpp:41:31: warning: aligned clause will be ignored because the requested alignment is not a power of 2 [-Wopenmp-clauses]","clang/test/OpenMP/align_clause_messages.cpp:51:33: warning: aligned clause will be ignored because the requested alignment is not a power of 2 [-Wopenmp-clauses]"} | ||
Line 2,272: | Line 2,272: | ||
[h]=vb, | [h]=vb, | ||
[i]={"471171c4c94c",1553800536,"[OPENMP]Add check for undefined behavior with thread allocators on","[OPENMP]Add check for undefined behavior with thread allocators on"}, | [i]={"471171c4c94c",1553800536,"[OPENMP]Add check for undefined behavior with thread allocators on","[OPENMP]Add check for undefined behavior with thread allocators on"}, | ||
[j]={{rb,5511,"static void checkAllocateClauses(Sema &S, DSAStackTy *Stack, ArrayRef<OMPClause *> Clauses) {\n for (OMPClause *C : AllocateRange) {\n // OpenMP, 2.11.4 allocate Clause, Restrictions.\n // For task, taskloop or target directives, allocation requests to memory\n // allocators with the trait access set to thread result in unspecified\n // behavior.\n if (AllocatorKind == OMPAllocateDeclAttr::OMPThreadMemAlloc && (isOpenMPTaskingDirective(Stack->getCurrentDirective()) || isOpenMPTargetExecutionDirective(Stack->getCurrentDirective()))) {\n S.Diag(AC->getAllocator()->getExprLoc(), diag::warn_omp_allocate_thread_on_task_target_directive) << getOpenMPDirectiveName(Stack->getCurrentDirective());"}}, | [j]={{rb,5511,"static void checkAllocateClauses(Sema &S, DSAStackTy *Stack, ArrayRef<OMPClause *> Clauses) {\n // ...\n for (OMPClause *C : AllocateRange) {\n // ...\n // OpenMP, 2.11.4 allocate Clause, Restrictions.\n // For task, taskloop or target directives, allocation requests to memory\n // allocators with the trait access set to thread result in unspecified\n // behavior.\n if (AllocatorKind == OMPAllocateDeclAttr::OMPThreadMemAlloc && (isOpenMPTaskingDirective(Stack->getCurrentDirective()) || isOpenMPTargetExecutionDirective(Stack->getCurrentDirective()))) {\n S.Diag(AC->getAllocator()->getExprLoc(), diag::warn_omp_allocate_thread_on_task_target_directive) << getOpenMPDirectiveName(Stack->getCurrentDirective());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/target_teams_private_messages.cpp"]={"clang/test/OpenMP/target_teams_private_messages.cpp:112:89: warning: allocator with the \'thread\' trait access has unspecified behavior on \'target teams\' directive [-Wopenmp-clauses]"} | ["clang/test/OpenMP/target_teams_private_messages.cpp"]={"clang/test/OpenMP/target_teams_private_messages.cpp:112:89: warning: allocator with the \'thread\' trait access has unspecified behavior on \'target teams\' directive [-Wopenmp-clauses]"} | ||
Line 2,289: | Line 2,289: | ||
[h]=B, | [h]=B, | ||
[i]={Nb,1576809732,bb,bb}, | [i]={Nb,1576809732,bb,bb}, | ||
[j]={{O,1027,"void Parser::parseOMPContextProperty(OMPTraitSelector &TISelector, llvm::omp::TraitSet Set, llvm::StringMap<SourceLocation> &Seen) {\n Diag(PropertyLoc, diag::warn_omp_ctx_incompatible_property_for_selector) << getOpenMPContextTraitPropertyName(TIProperty.Kind, TIProperty.RawString) << getOpenMPContextTraitSelectorName(TISelector.Kind) << getOpenMPContextTraitSetName(Set);"}} | [j]={{O,1027,"void Parser::parseOMPContextProperty(OMPTraitSelector &TISelector, llvm::omp::TraitSet Set, llvm::StringMap<SourceLocation> &Seen) {\n // ...\n Diag(PropertyLoc, diag::warn_omp_ctx_incompatible_property_for_selector) << getOpenMPContextTraitPropertyName(TIProperty.Kind, TIProperty.RawString) << getOpenMPContextTraitSelectorName(TISelector.Kind) << getOpenMPContextTraitSetName(Set);"}} | ||
}, | }, | ||
["warn_omp_ctx_incompatible_score_for_property"]={ | ["warn_omp_ctx_incompatible_score_for_property"]={ | ||
Line 2,303: | Line 2,303: | ||
[h]=B, | [h]=B, | ||
[i]={Nb,1576809732,bb,bb}, | [i]={Nb,1576809732,bb,bb}, | ||
[j]={{O,1207,"/// Parses an OpenMP context selector.\n///\n/// <trait-selector-name> [\'(\'[<trait-score>] <trait-property> [, <t-p>]* \')\']\nvoid Parser::parseOMPContextSelector(OMPTraitSelector &TISelector, llvm::omp::TraitSet Set, llvm::StringMap<SourceLocation> &SeenSelectors) {\n if (!AllowsTraitScore && !Score.isUnset()) {\n if (Score.isUsable()) {\n Diag(ScoreLoc, diag::warn_omp_ctx_incompatible_score_for_property) << getOpenMPContextTraitSelectorName(TISelector.Kind) << getOpenMPContextTraitSetName(Set) << Score.get();"},{O,1211,"/// Parses an OpenMP context selector.\n///\n/// <trait-selector-name> [\'(\'[<trait-score>] <trait-property> [, <t-p>]* \')\']\nvoid Parser::parseOMPContextSelector(OMPTraitSelector &TISelector, llvm::omp::TraitSet Set, llvm::StringMap<SourceLocation> &SeenSelectors) {\n if (!AllowsTraitScore && !Score.isUnset()) {\n if (Score.isUsable()) {\n } else {\n Diag(ScoreLoc, diag::warn_omp_ctx_incompatible_score_for_property) << getOpenMPContextTraitSelectorName(TISelector.Kind) << getOpenMPContextTraitSetName(Set) << \"<invalid>\";"}}, | [j]={{O,1207,"/// Parses an OpenMP context selector.\n///\n/// <trait-selector-name> [\'(\'[<trait-score>] <trait-property> [, <t-p>]* \')\']\nvoid Parser::parseOMPContextSelector(OMPTraitSelector &TISelector, llvm::omp::TraitSet Set, llvm::StringMap<SourceLocation> &SeenSelectors) {\n // ...\n if (!AllowsTraitScore && !Score.isUnset()) {\n if (Score.isUsable()) {\n Diag(ScoreLoc, diag::warn_omp_ctx_incompatible_score_for_property) << getOpenMPContextTraitSelectorName(TISelector.Kind) << getOpenMPContextTraitSetName(Set) << Score.get();"},{O,1211,"/// Parses an OpenMP context selector.\n///\n/// <trait-selector-name> [\'(\'[<trait-score>] <trait-property> [, <t-p>]* \')\']\nvoid Parser::parseOMPContextSelector(OMPTraitSelector &TISelector, llvm::omp::TraitSet Set, llvm::StringMap<SourceLocation> &SeenSelectors) {\n // ...\n if (!AllowsTraitScore && !Score.isUnset()) {\n if (Score.isUsable()) {\n // ...\n } else {\n Diag(ScoreLoc, diag::warn_omp_ctx_incompatible_score_for_property) << getOpenMPContextTraitSelectorName(TISelector.Kind) << getOpenMPContextTraitSetName(Set) << \"<invalid>\";"}}, | ||
[p]={ | [p]={ | ||
[Qb]={"clang/test/OpenMP/declare_variant_messages.c:49:53: warning: the context selector \'kind\' in the context set \'device\' cannot have a score (\'5\'); score ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:48:53: warning: the context selector \'kind\' in the context set \'device\' cannot have a score (\'5\'); score ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:47:53: warning: the context selector \'kind\' in the context set \'device\' cannot have a score (\'foo()\'); score ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:46:53: warning: the context selector \'kind\' in the context set \'device\' cannot have a score (\'2\'); score ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:45:55: warning: the context selector \'kind\' in the context set \'device\' cannot have a score (\'<recovery-expr>()\'); score ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:44:53: warning: the context selector \'kind\' in the context set \'device\' cannot have a score (\'<invalid>\'); score ignored [-Wopenmp-clauses]"} | [Qb]={"clang/test/OpenMP/declare_variant_messages.c:49:53: warning: the context selector \'kind\' in the context set \'device\' cannot have a score (\'5\'); score ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:48:53: warning: the context selector \'kind\' in the context set \'device\' cannot have a score (\'5\'); score ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:47:53: warning: the context selector \'kind\' in the context set \'device\' cannot have a score (\'foo()\'); score ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:46:53: warning: the context selector \'kind\' in the context set \'device\' cannot have a score (\'2\'); score ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:45:55: warning: the context selector \'kind\' in the context set \'device\' cannot have a score (\'<recovery-expr>()\'); score ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:44:53: warning: the context selector \'kind\' in the context set \'device\' cannot have a score (\'<invalid>\'); score ignored [-Wopenmp-clauses]"} | ||
Line 2,320: | Line 2,320: | ||
[h]=B, | [h]=B, | ||
[i]={Nb,1576809732,bb,bb}, | [i]={Nb,1576809732,bb,bb}, | ||
[j]={{O,1161,"/// Parses an OpenMP context selector.\n///\n/// <trait-selector-name> [\'(\'[<trait-score>] <trait-property> [, <t-p>]* \')\']\nvoid Parser::parseOMPContextSelector(OMPTraitSelector &TISelector, llvm::omp::TraitSet Set, llvm::StringMap<SourceLocation> &SeenSelectors) {\n if (!isValidTraitSelectorForTraitSet(TISelector.Kind, Set, AllowsTraitScore, RequiresProperty)) {\n Diag(SelectorLoc, diag::warn_omp_ctx_incompatible_selector_for_set) << getOpenMPContextTraitSelectorName(TISelector.Kind) << getOpenMPContextTraitSetName(Set);"}}, | [j]={{O,1161,"/// Parses an OpenMP context selector.\n///\n/// <trait-selector-name> [\'(\'[<trait-score>] <trait-property> [, <t-p>]* \')\']\nvoid Parser::parseOMPContextSelector(OMPTraitSelector &TISelector, llvm::omp::TraitSet Set, llvm::StringMap<SourceLocation> &SeenSelectors) {\n // ...\n if (!isValidTraitSelectorForTraitSet(TISelector.Kind, Set, AllowsTraitScore, RequiresProperty)) {\n Diag(SelectorLoc, diag::warn_omp_ctx_incompatible_selector_for_set) << getOpenMPContextTraitSelectorName(TISelector.Kind) << getOpenMPContextTraitSetName(Set);"}}, | ||
[p]={ | [p]={ | ||
[Qb]={"clang/test/OpenMP/declare_variant_messages.c:49:72: warning: the context selector \'vendor\' is not valid for the context set \'device\'; selector ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:39:79: warning: the context selector \'kind\' is not valid for the context set \'implementation\'; selector ignored [-Wopenmp-clauses]"} | [Qb]={"clang/test/OpenMP/declare_variant_messages.c:49:72: warning: the context selector \'vendor\' is not valid for the context set \'device\'; selector ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:39:79: warning: the context selector \'kind\' is not valid for the context set \'implementation\'; selector ignored [-Wopenmp-clauses]"} | ||
Line 2,337: | Line 2,337: | ||
[h]=B, | [h]=B, | ||
[i]={Nb,1576809732,bb,bb}, | [i]={Nb,1576809732,bb,bb}, | ||
[j]={{O,1180,"/// Parses an OpenMP context selector.\n///\n/// <trait-selector-name> [\'(\'[<trait-score>] <trait-property> [, <t-p>]* \')\']\nvoid Parser::parseOMPContextSelector(OMPTraitSelector &TISelector, llvm::omp::TraitSet Set, llvm::StringMap<SourceLocation> &SeenSelectors) {\n if (!Tok.is(tok::l_paren)) {\n Diag(SelectorLoc, diag::warn_omp_ctx_selector_without_properties) << getOpenMPContextTraitSelectorName(TISelector.Kind) << getOpenMPContextTraitSetName(Set);"}}, | [j]={{O,1180,"/// Parses an OpenMP context selector.\n///\n/// <trait-selector-name> [\'(\'[<trait-score>] <trait-property> [, <t-p>]* \')\']\nvoid Parser::parseOMPContextSelector(OMPTraitSelector &TISelector, llvm::omp::TraitSet Set, llvm::StringMap<SourceLocation> &SeenSelectors) {\n // ...\n if (!Tok.is(tok::l_paren)) {\n Diag(SelectorLoc, diag::warn_omp_ctx_selector_without_properties) << getOpenMPContextTraitSelectorName(TISelector.Kind) << getOpenMPContextTraitSetName(Set);"}}, | ||
[p]={ | [p]={ | ||
[Qb]={"clang/test/OpenMP/declare_variant_messages.c:41:48: warning: the context selector \'kind\' in context set \'device\' requires a context property defined in parentheses; selector ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:31:56: warning: the context selector \'vendor\' in context set \'implementation\' requires a context property defined in parentheses; selector ignored [-Wopenmp-clauses]"} | [Qb]={"clang/test/OpenMP/declare_variant_messages.c:41:48: warning: the context selector \'kind\' in context set \'device\' requires a context property defined in parentheses; selector ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:31:56: warning: the context selector \'vendor\' in context set \'implementation\' requires a context property defined in parentheses; selector ignored [-Wopenmp-clauses]"} | ||
Line 2,354: | Line 2,354: | ||
[h]=vb, | [h]=vb, | ||
[i]={"729e242a7972",1566576674,"[OPENMP5.0]Add support for device_type clause in declare target","[OPENMP5.0]Add support for device_type clause in declare target"}, | [i]={"729e242a7972",1566576674,"[OPENMP5.0]Add support for device_type clause in declare target","[OPENMP5.0]Add support for device_type clause in declare target"}, | ||
[j]={{rb,23061,"void Sema::ActOnOpenMPDeclareTargetName(NamedDecl *ND, SourceLocation Loc, OMPDeclareTargetDeclAttr::MapTypeTy MT, DeclareTargetContextInfo &DTCI) {\n // Diagnose marking after use as it may lead to incorrect diagnosis and\n // codegen.\n if (LangOpts.OpenMP >= 50 && (ND->isUsed(/*CheckUsedAttr=*/false) || ND->isReferenced()))\n Diag(Loc, diag::warn_omp_declare_target_after_first_use);"}}, | [j]={{rb,23061,"void Sema::ActOnOpenMPDeclareTargetName(NamedDecl *ND, SourceLocation Loc, OMPDeclareTargetDeclAttr::MapTypeTy MT, DeclareTargetContextInfo &DTCI) {\n // ...\n // Diagnose marking after use as it may lead to incorrect diagnosis and\n // codegen.\n if (LangOpts.OpenMP >= 50 && (ND->isUsed(/*CheckUsedAttr=*/false) || ND->isReferenced()))\n Diag(Loc, diag::warn_omp_declare_target_after_first_use);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/declare_target_messages.cpp"]={"clang/test/OpenMP/declare_target_messages.cpp:76:28: warning: declaration marked as declare target after first use, it may lead to incorrect results [-Wopenmp-target]"} | ["clang/test/OpenMP/declare_target_messages.cpp"]={"clang/test/OpenMP/declare_target_messages.cpp:76:28: warning: declaration marked as declare target after first use, it may lead to incorrect results [-Wopenmp-target]"} | ||
Line 2,371: | Line 2,371: | ||
[h]=vb, | [h]=vb, | ||
[i]={wc,1567434909,Eb,Eb}, | [i]={wc,1567434909,Eb,Eb}, | ||
[j]={{rb,7396,"std::optional<std::pair<FunctionDecl *, Expr *>> Sema::checkOpenMPDeclareVariantFunction(Sema::DeclGroupPtrTy DG, Expr *VariantRef, OMPTraitInfo &TI, unsigned NumAppendArgs, SourceRange SR) {\n if (!FD->isThisDeclarationADefinition() && FD->isDefined(Definition) && (LangOpts.EmitAllDecls || Context.DeclMustBeEmitted(Definition)))\n Diag(SR.getBegin(), diag::warn_omp_declare_variant_after_emitted) << FD->getLocation();"}}, | [j]={{rb,7396,"std::optional<std::pair<FunctionDecl *, Expr *>> Sema::checkOpenMPDeclareVariantFunction(Sema::DeclGroupPtrTy DG, Expr *VariantRef, OMPTraitInfo &TI, unsigned NumAppendArgs, SourceRange SR) {\n // ...\n if (!FD->isThisDeclarationADefinition() && FD->isDefined(Definition) && (LangOpts.EmitAllDecls || Context.DeclMustBeEmitted(Definition)))\n Diag(SR.getBegin(), diag::warn_omp_declare_variant_after_emitted) << FD->getLocation();"}}, | ||
[p]={ | [p]={ | ||
[Qb]={"clang/test/OpenMP/declare_variant_messages.c:133:1: warning: \'#pragma omp declare variant\' cannot be applied to the function that was defined already; the original function might be used [-Wsource-uses-openmp]"} | [Qb]={"clang/test/OpenMP/declare_variant_messages.c:133:1: warning: \'#pragma omp declare variant\' cannot be applied to the function that was defined already; the original function might be used [-Wsource-uses-openmp]"} | ||
Line 2,388: | Line 2,388: | ||
[h]=vb, | [h]=vb, | ||
[i]={wc,1567434909,Eb,Eb}, | [i]={wc,1567434909,Eb,Eb}, | ||
[j]={{rb,7389,"std::optional<std::pair<FunctionDecl *, Expr *>> Sema::checkOpenMPDeclareVariantFunction(Sema::DeclGroupPtrTy DG, Expr *VariantRef, OMPTraitInfo &TI, unsigned NumAppendArgs, SourceRange SR) {\n // Allow #pragma omp declare variant only if the function is not used.\n if (FD->isUsed(false))\n Diag(SR.getBegin(), diag::warn_omp_declare_variant_after_used) << FD->getLocation();"}}, | [j]={{rb,7389,"std::optional<std::pair<FunctionDecl *, Expr *>> Sema::checkOpenMPDeclareVariantFunction(Sema::DeclGroupPtrTy DG, Expr *VariantRef, OMPTraitInfo &TI, unsigned NumAppendArgs, SourceRange SR) {\n // ...\n // Allow #pragma omp declare variant only if the function is not used.\n if (FD->isUsed(false))\n Diag(SR.getBegin(), diag::warn_omp_declare_variant_after_used) << FD->getLocation();"}}, | ||
[p]={ | [p]={ | ||
[Qb]={"clang/test/OpenMP/declare_variant_messages.c:127:1: warning: \'#pragma omp declare variant\' cannot be applied for function after first usage; the original function might be used [-Wsource-uses-openmp]"} | [Qb]={"clang/test/OpenMP/declare_variant_messages.c:127:1: warning: \'#pragma omp declare variant\' cannot be applied for function after first usage; the original function might be used [-Wsource-uses-openmp]"} | ||
Line 2,405: | Line 2,405: | ||
[h]=B, | [h]=B, | ||
[i]={Nb,1576809732,bb,bb}, | [i]={Nb,1576809732,bb,bb}, | ||
[j]={{O,867,"static bool checkForDuplicates(Parser &P, StringRef Name, SourceLocation NameLoc, llvm::StringMap<SourceLocation> &Seen, OMPContextLvl Lvl) {\n P.Diag(NameLoc, diag::warn_omp_declare_variant_ctx_mutiple_use) << Lvl << Name;"}}, | [j]={{O,867,"static bool checkForDuplicates(Parser &P, StringRef Name, SourceLocation NameLoc, llvm::StringMap<SourceLocation> &Seen, OMPContextLvl Lvl) {\n // ...\n P.Diag(NameLoc, diag::warn_omp_declare_variant_ctx_mutiple_use) << Lvl << Name;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/AST/ast-dump-openmp-declare-variant-extensions-messages.c"]={"clang/test/AST/ast-dump-openmp-declare-variant-extensions-messages.c:9:79: warning: the context property \'match_none\' was used already in the same \'omp declare variant\' directive; property ignored [-Wopenmp-clauses]"} | ["clang/test/AST/ast-dump-openmp-declare-variant-extensions-messages.c"]={"clang/test/AST/ast-dump-openmp-declare-variant-extensions-messages.c:9:79: warning: the context property \'match_none\' was used already in the same \'omp declare variant\' directive; property ignored [-Wopenmp-clauses]"} | ||
Line 2,422: | Line 2,422: | ||
[h]=B, | [h]=B, | ||
[i]={Nb,1576809732,bb,bb}, | [i]={Nb,1576809732,bb,bb}, | ||
[j]={{O,899,"void Parser::parseOMPTraitPropertyKind(OMPTraitProperty &TIProperty, llvm::omp::TraitSet Set, llvm::omp::TraitSelector Selector, llvm::StringMap<SourceLocation> &Seen) {\n Diag(NameLoc, diag::warn_omp_declare_variant_ctx_not_a_property) << Name << getOpenMPContextTraitSelectorName(Selector) << getOpenMPContextTraitSetName(Set);"}}, | [j]={{O,899,"void Parser::parseOMPTraitPropertyKind(OMPTraitProperty &TIProperty, llvm::omp::TraitSet Set, llvm::omp::TraitSelector Selector, llvm::StringMap<SourceLocation> &Seen) {\n // ...\n Diag(NameLoc, diag::warn_omp_declare_variant_ctx_not_a_property) << Name << getOpenMPContextTraitSelectorName(Selector) << getOpenMPContextTraitSetName(Set);"}}, | ||
[p]={ | [p]={ | ||
[Qb]={"clang/test/OpenMP/declare_variant_messages.c:50:66: warning: \'aaa\' is not a valid context property for the context selector \'extension\' and the context set \'implementation\'; property ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:47:66: warning: \'ibm\' is not a valid context property for the context selector \'kind\' and the context set \'device\'; property ignored [-Wopenmp-clauses]"} | [Qb]={"clang/test/OpenMP/declare_variant_messages.c:50:66: warning: \'aaa\' is not a valid context property for the context selector \'extension\' and the context set \'implementation\'; property ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:47:66: warning: \'ibm\' is not a valid context property for the context selector \'kind\' and the context set \'device\'; property ignored [-Wopenmp-clauses]"} | ||
Line 2,439: | Line 2,439: | ||
[h]=B, | [h]=B, | ||
[i]={Nb,1576809732,bb,bb}, | [i]={Nb,1576809732,bb,bb}, | ||
[j]={{O,1064,"void Parser::parseOMPTraitSelectorKind(OMPTraitSelector &TISelector, llvm::omp::TraitSet Set, llvm::StringMap<SourceLocation> &Seen) {\n Diag(NameLoc, diag::warn_omp_declare_variant_ctx_not_a_selector) << Name << getOpenMPContextTraitSetName(Set);"}}, | [j]={{O,1064,"void Parser::parseOMPTraitSelectorKind(OMPTraitSelector &TISelector, llvm::omp::TraitSet Set, llvm::StringMap<SourceLocation> &Seen) {\n // ...\n Diag(NameLoc, diag::warn_omp_declare_variant_ctx_not_a_selector) << Name << getOpenMPContextTraitSetName(Set);"}}, | ||
[p]={ | [p]={ | ||
[Qb]={"clang/test/OpenMP/declare_variant_messages.c:40:48: warning: \'xxx\' is not a valid context selector for the context set \'device\'; selector ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:30:56: warning: \'xxx\' is not a valid context selector for the context set \'implementation\'; selector ignored [-Wopenmp-clauses]"} | [Qb]={"clang/test/OpenMP/declare_variant_messages.c:40:48: warning: \'xxx\' is not a valid context selector for the context set \'device\'; selector ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:30:56: warning: \'xxx\' is not a valid context selector for the context set \'implementation\'; selector ignored [-Wopenmp-clauses]"} | ||
Line 2,456: | Line 2,456: | ||
[h]=B, | [h]=B, | ||
[i]={Nb,1576809732,bb,bb}, | [i]={Nb,1576809732,bb,bb}, | ||
[j]={{O,1251,"void Parser::parseOMPTraitSetKind(OMPTraitSet &TISet, llvm::StringMap<SourceLocation> &Seen) {\n Diag(NameLoc, diag::warn_omp_declare_variant_ctx_not_a_set) << Name;"}}, | [j]={{O,1251,"void Parser::parseOMPTraitSetKind(OMPTraitSet &TISet, llvm::StringMap<SourceLocation> &Seen) {\n // ...\n Diag(NameLoc, diag::warn_omp_declare_variant_ctx_not_a_set) << Name;"}}, | ||
[p]={ | [p]={ | ||
[Qb]={"clang/test/OpenMP/declare_variant_messages.c:29:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:28:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:27:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:26:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:25:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:24:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:23:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:22:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:21:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:67:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:70:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:94:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:98:45: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:103:43: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:108:45: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:127:54: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:129:54: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:133:54: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:139:52: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:144:53: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:176:51: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]"} | [Qb]={"clang/test/OpenMP/declare_variant_messages.c:29:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:28:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:27:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:26:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:25:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:24:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:23:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:22:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:21:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:67:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:70:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:94:40: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:98:45: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:103:43: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:108:45: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:127:54: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:129:54: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:133:54: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:139:52: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:144:53: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]","clang/test/OpenMP/declare_variant_messages.c:176:51: warning: \'xxx\' is not a valid context set in a `declare variant`; set ignored [-Wopenmp-clauses]"} | ||
Line 2,473: | Line 2,473: | ||
[h]=B, | [h]=B, | ||
[i]={Nb,1576809732,bb,bb}, | [i]={Nb,1576809732,bb,bb}, | ||
[j]={{O,1112,"/// Parse optional \'score\' \'(\' <expr> \')\' \':\'.\nstatic ExprResult parseContextScore(Parser &P) {\n // Parse \':\'\n if (P.getCurToken().is(tok::colon))\n else\n P.Diag(P.getCurToken(), diag::warn_omp_declare_variant_expected) << \"\':\'\""},{O,1328,"/// Parses an OpenMP context selector set.\n///\n/// <trait-set-selector-name> \'=\' \'{\' <trait-selector> [, <trait-selector>]* \'}\'\nvoid Parser::parseOMPContextSelectorSet(OMPTraitSet &TISet, llvm::StringMap<SourceLocation> &SeenSets) {\n // Parse \'=\'.\n if (!TryConsumeToken(tok::equal))\n Diag(Tok.getLocation(), diag::warn_omp_declare_variant_expected) << \"=\" << (\"context set name \\\"\" + getOpenMPContextTraitSetName(TISet.Kind) + \"\\\"\").str();"},{O,1338,"/// Parses an OpenMP context selector set.\n///\n/// <trait-set-selector-name> \'=\' \'{\' <trait-selector> [, <trait-selector>]* \'}\'\nvoid Parser::parseOMPContextSelectorSet(OMPTraitSet &TISet, llvm::StringMap<SourceLocation> &SeenSets) {\n // Parse \'{\'.\n if (Tok.is(tok::l_brace)) {\n } else {\n Diag(Tok.getLocation(), diag::warn_omp_declare_variant_expected) << \"{\" << (\"\'=\' that follows the context set name \\\"\" + getOpenMPContextTraitSetName(TISet.Kind) + \"\\\"\").str();"},{O,1358,"/// Parses an OpenMP context selector set.\n///\n/// <trait-set-selector-name> \'=\' \'{\' <trait-selector> [, <trait-selector>]* \'}\'\nvoid Parser::parseOMPContextSelectorSet(OMPTraitSet &TISet, llvm::StringMap<SourceLocation> &SeenSets) {\n // Parse \'}\'.\n if (Tok.is(tok::r_brace)) {\n } else {\n Diag(Tok.getLocation(), diag::warn_omp_declare_variant_expected) << \"}\" << (\"context selectors for the context set \\\"\" + getOpenMPContextTraitSetName(TISet.Kind) + \"\\\"\").str();"}}, | [j]={{O,1112,"/// Parse optional \'score\' \'(\' <expr> \')\' \':\'.\nstatic ExprResult parseContextScore(Parser &P) {\n // ...\n // Parse \':\'\n if (P.getCurToken().is(tok::colon))\n // ...\n else\n P.Diag(P.getCurToken(), diag::warn_omp_declare_variant_expected) << \"\':\'\""},{O,1328,"/// Parses an OpenMP context selector set.\n///\n/// <trait-set-selector-name> \'=\' \'{\' <trait-selector> [, <trait-selector>]* \'}\'\nvoid Parser::parseOMPContextSelectorSet(OMPTraitSet &TISet, llvm::StringMap<SourceLocation> &SeenSets) {\n // ...\n // Parse \'=\'.\n if (!TryConsumeToken(tok::equal))\n Diag(Tok.getLocation(), diag::warn_omp_declare_variant_expected) << \"=\" << (\"context set name \\\"\" + getOpenMPContextTraitSetName(TISet.Kind) + \"\\\"\").str();"},{O,1338,"/// Parses an OpenMP context selector set.\n///\n/// <trait-set-selector-name> \'=\' \'{\' <trait-selector> [, <trait-selector>]* \'}\'\nvoid Parser::parseOMPContextSelectorSet(OMPTraitSet &TISet, llvm::StringMap<SourceLocation> &SeenSets) {\n // ...\n // Parse \'{\'.\n if (Tok.is(tok::l_brace)) {\n // ...\n } else {\n Diag(Tok.getLocation(), diag::warn_omp_declare_variant_expected) << \"{\" << (\"\'=\' that follows the context set name \\\"\" + getOpenMPContextTraitSetName(TISet.Kind) + \"\\\"\").str();"},{O,1358,"/// Parses an OpenMP context selector set.\n///\n/// <trait-set-selector-name> \'=\' \'{\' <trait-selector> [, <trait-selector>]* \'}\'\nvoid Parser::parseOMPContextSelectorSet(OMPTraitSet &TISet, llvm::StringMap<SourceLocation> &SeenSets) {\n // ...\n // Parse \'}\'.\n if (Tok.is(tok::r_brace)) {\n // ...\n } else {\n Diag(Tok.getLocation(), diag::warn_omp_declare_variant_expected) << \"}\" << (\"context selectors for the context set \\\"\" + getOpenMPContextTraitSetName(TISet.Kind) + \"\\\"\").str();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/metadirective_messages.cpp"]={"clang/test/OpenMP/metadirective_messages.cpp:10:38: warning: expected \'=\' after the context set name \"device\"; \'=\' assumed [-Wopenmp-clauses]","clang/test/OpenMP/metadirective_messages.cpp:12:38: warning: expected \'=\' after the context set name \"device\"; \'=\' assumed [-Wopenmp-clauses]","clang/test/OpenMP/metadirective_messages.cpp:14:38: warning: expected \'=\' after the context set name \"device\"; \'=\' assumed [-Wopenmp-clauses]"} | ["clang/test/OpenMP/metadirective_messages.cpp"]={"clang/test/OpenMP/metadirective_messages.cpp:10:38: warning: expected \'=\' after the context set name \"device\"; \'=\' assumed [-Wopenmp-clauses]","clang/test/OpenMP/metadirective_messages.cpp:12:38: warning: expected \'=\' after the context set name \"device\"; \'=\' assumed [-Wopenmp-clauses]","clang/test/OpenMP/metadirective_messages.cpp:14:38: warning: expected \'=\' after the context set name \"device\"; \'=\' assumed [-Wopenmp-clauses]"} | ||
Line 2,490: | Line 2,490: | ||
[h]=vb, | [h]=vb, | ||
[i]={wc,1567434909,Eb,Eb}, | [i]={wc,1567434909,Eb,Eb}, | ||
[j]={{rb,7580,"std::optional<std::pair<FunctionDecl *, Expr *>> Sema::checkOpenMPDeclareVariantFunction(Sema::DeclGroupPtrTy DG, Expr *VariantRef, OMPTraitInfo &TI, unsigned NumAppendArgs, SourceRange SR) {\n // Check if variant function is not marked with declare variant directive.\n if (NewFD->hasAttrs() && NewFD->hasAttr<OMPDeclareVariantAttr>()) {\n Diag(VariantRef->getExprLoc(), diag::warn_omp_declare_variant_marked_as_declare_variant) << VariantRef->getSourceRange();"}}, | [j]={{rb,7580,"std::optional<std::pair<FunctionDecl *, Expr *>> Sema::checkOpenMPDeclareVariantFunction(Sema::DeclGroupPtrTy DG, Expr *VariantRef, OMPTraitInfo &TI, unsigned NumAppendArgs, SourceRange SR) {\n // ...\n // Check if variant function is not marked with declare variant directive.\n if (NewFD->hasAttrs() && NewFD->hasAttr<OMPDeclareVariantAttr>()) {\n Diag(VariantRef->getExprLoc(), diag::warn_omp_declare_variant_marked_as_declare_variant) << VariantRef->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
[Qb]={"clang/test/OpenMP/declare_variant_messages.c:176:29: warning: variant function in \'#pragma omp declare variant\' is itself marked as \'#pragma omp declare variant\' [-Wsource-uses-openmp]"} | [Qb]={"clang/test/OpenMP/declare_variant_messages.c:176:29: warning: variant function in \'#pragma omp declare variant\' is itself marked as \'#pragma omp declare variant\' [-Wsource-uses-openmp]"} | ||
Line 2,507: | Line 2,507: | ||
[h]=vb, | [h]=vb, | ||
[i]={Nb,1576809732,bb,bb}, | [i]={Nb,1576809732,bb,bb}, | ||
[j]={{rb,7423,"std::optional<std::pair<FunctionDecl *, Expr *>> Sema::checkOpenMPDeclareVariantFunction(Sema::DeclGroupPtrTy DG, Expr *VariantRef, OMPTraitInfo &TI, unsigned NumAppendArgs, SourceRange SR) {\n // Deal with non-constant score and user condition expressions.\n auto HandleNonConstantScoresAndConditions = [this](Expr *&E, bool IsScore) -> bool {\n if (IsScore) {\n Diag(E->getExprLoc(), diag::warn_omp_declare_variant_score_not_constant) << E;"}}, | [j]={{rb,7423,"std::optional<std::pair<FunctionDecl *, Expr *>> Sema::checkOpenMPDeclareVariantFunction(Sema::DeclGroupPtrTy DG, Expr *VariantRef, OMPTraitInfo &TI, unsigned NumAppendArgs, SourceRange SR) {\n // ...\n // Deal with non-constant score and user condition expressions.\n auto HandleNonConstantScoresAndConditions = [this](Expr *&E, bool IsScore) -> bool {\n // ...\n if (IsScore) {\n // ...\n Diag(E->getExprLoc(), diag::warn_omp_declare_variant_score_not_constant) << E;"}}, | ||
[p]={ | [p]={ | ||
[Qb]={"clang/test/OpenMP/declare_variant_messages.c:37:69: warning: score expressions in the OpenMP context selector need to be constant; foo() is not and will be ignored [-Wsource-uses-openmp]","clang/test/OpenMP/declare_variant_messages.c:54:71: warning: score expressions in the OpenMP context selector need to be constant; foo() is not and will be ignored [-Wsource-uses-openmp]","clang/test/OpenMP/declare_variant_messages.c:53:71: warning: score expressions in the OpenMP context selector need to be constant; foo is not and will be ignored [-Wsource-uses-openmp]"} | [Qb]={"clang/test/OpenMP/declare_variant_messages.c:37:69: warning: score expressions in the OpenMP context selector need to be constant; foo() is not and will be ignored [-Wsource-uses-openmp]","clang/test/OpenMP/declare_variant_messages.c:54:71: warning: score expressions in the OpenMP context selector need to be constant; foo() is not and will be ignored [-Wsource-uses-openmp]","clang/test/OpenMP/declare_variant_messages.c:53:71: warning: score expressions in the OpenMP context selector need to be constant; foo is not and will be ignored [-Wsource-uses-openmp]"} | ||
Line 2,524: | Line 2,524: | ||
[h]=B, | [h]=B, | ||
[i]={Nb,1576809732,bb,bb}, | [i]={Nb,1576809732,bb,bb}, | ||
[j]={{O,852,"static StringRef getNameFromIdOrString(Parser &P, Token &Tok, OMPContextLvl Lvl) {\n P.Diag(Tok.getLocation(), diag::warn_omp_declare_variant_string_literal_or_identifier) << Lvl;"}}, | [j]={{O,852,"static StringRef getNameFromIdOrString(Parser &P, Token &Tok, OMPContextLvl Lvl) {\n // ...\n P.Diag(Tok.getLocation(), diag::warn_omp_declare_variant_string_literal_or_identifier) << Lvl;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/metadirective_messages.cpp"]={"clang/test/OpenMP/metadirective_messages.cpp:8:32: warning: expected identifier or string literal describing a context set; set skipped [-Wopenmp-clauses]","clang/test/OpenMP/metadirective_messages.cpp:10:39: warning: expected identifier or string literal describing a context selector; selector skipped [-Wopenmp-clauses]"} | ["clang/test/OpenMP/metadirective_messages.cpp"]={"clang/test/OpenMP/metadirective_messages.cpp:8:32: warning: expected identifier or string literal describing a context set; set skipped [-Wopenmp-clauses]","clang/test/OpenMP/metadirective_messages.cpp:10:39: warning: expected identifier or string literal describing a context selector; selector skipped [-Wopenmp-clauses]"} | ||
Line 2,541: | Line 2,541: | ||
[h]=ac, | [h]=ac, | ||
[i]={"ef9ec4bbcca2",1677810915,bd,bd}, | [i]={"ef9ec4bbcca2",1677810915,bd,bd}, | ||
[j]={{O,3373,"/// Parsing of OpenMP clauses.\n///\n/// clause:\n/// if-clause | final-clause | num_threads-clause | safelen-clause |\n/// default-clause | private-clause | firstprivate-clause | shared-clause\n/// | linear-clause | aligned-clause | collapse-clause | bind-clause |\n/// lastprivate-clause | reduction-clause | proc_bind-clause |\n/// schedule-clause | copyin-clause | copyprivate-clause | untied-clause |\n/// mergeable-clause | flush-clause | read-clause | write-clause |\n/// update-clause | capture-clause | seq_cst-clause | device-clause |\n/// simdlen-clause | threads-clause | simd-clause | num_teams-clause |\n/// thread_limit-clause | priority-clause | grainsize-clause |\n/// nogroup-clause | num_tasks-clause | hint-clause | to-clause |\n/// from-clause | is_device_ptr-clause | task_reduction-clause |\n/// in_reduction-clause | allocator-clause | allocate-clause |\n/// acq_rel-clause | acquire-clause | release-clause | relaxed-clause |\n/// depobj-clause | destroy-clause | detach-clause | inclusive-clause |\n/// exclusive-clause | uses_allocators-clause | use_device_addr-clause |\n/// has_device_addr\n///\nOMPClause *Parser::ParseOpenMPClause(OpenMPDirectiveKind DKind, OpenMPClauseKind CKind, bool FirstClause) {\n case OMPC_doacross:\n if (getLangOpts().OpenMP >= 52 && DKind == OMPD_ordered && CKind == OMPC_depend)\n Diag(Tok, diag::warn_omp_depend_in_ordered_deprecated);"}}, | [j]={{O,3373,"/// Parsing of OpenMP clauses.\n///\n/// clause:\n/// if-clause | final-clause | num_threads-clause | safelen-clause |\n/// default-clause | private-clause | firstprivate-clause | shared-clause\n/// | linear-clause | aligned-clause | collapse-clause | bind-clause |\n/// lastprivate-clause | reduction-clause | proc_bind-clause |\n/// schedule-clause | copyin-clause | copyprivate-clause | untied-clause |\n/// mergeable-clause | flush-clause | read-clause | write-clause |\n/// update-clause | capture-clause | seq_cst-clause | device-clause |\n/// simdlen-clause | threads-clause | simd-clause | num_teams-clause |\n/// thread_limit-clause | priority-clause | grainsize-clause |\n/// nogroup-clause | num_tasks-clause | hint-clause | to-clause |\n/// from-clause | is_device_ptr-clause | task_reduction-clause |\n/// in_reduction-clause | allocator-clause | allocate-clause |\n/// acq_rel-clause | acquire-clause | release-clause | relaxed-clause |\n/// depobj-clause | destroy-clause | detach-clause | inclusive-clause |\n/// exclusive-clause | uses_allocators-clause | use_device_addr-clause |\n/// has_device_addr\n///\nOMPClause *Parser::ParseOpenMPClause(OpenMPDirectiveKind DKind, OpenMPClauseKind CKind, bool FirstClause) {\n // ...\n case OMPC_private:\n case OMPC_firstprivate:\n case OMPC_lastprivate:\n case OMPC_shared:\n case OMPC_reduction:\n case OMPC_task_reduction:\n case OMPC_in_reduction:\n case OMPC_linear:\n case OMPC_aligned:\n case OMPC_copyin:\n case OMPC_copyprivate:\n case OMPC_flush:\n case OMPC_depend:\n case OMPC_map:\n case OMPC_to:\n case OMPC_from:\n case OMPC_use_device_ptr:\n case OMPC_use_device_addr:\n case OMPC_is_device_ptr:\n case OMPC_has_device_addr:\n case OMPC_allocate:\n case OMPC_nontemporal:\n case OMPC_inclusive:\n case OMPC_exclusive:\n case OMPC_affinity:\n case OMPC_doacross:\n if (getLangOpts().OpenMP >= 52 && DKind == OMPD_ordered && CKind == OMPC_depend)\n Diag(Tok, diag::warn_omp_depend_in_ordered_deprecated);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/ordered_messages.cpp"]={"clang/test/OpenMP/ordered_messages.cpp:405:21: warning: \'depend\' clause for \'ordered\' is deprecated; use \'doacross\' instead [-Wdeprecated]"} | ["clang/test/OpenMP/ordered_messages.cpp"]={"clang/test/OpenMP/ordered_messages.cpp:405:21: warning: \'depend\' clause for \'ordered\' is deprecated; use \'doacross\' instead [-Wdeprecated]"} | ||
Line 2,558: | Line 2,558: | ||
[h]=B, | [h]=B, | ||
[i]={"a769e07232d2",1363934075,"OpenMP threadprivate directive parsing and semantic analysis","OpenMP threadprivate directive parsing and semantic analysis"}, | [i]={"a769e07232d2",1363934075,"OpenMP threadprivate directive parsing and semantic analysis","OpenMP threadprivate directive parsing and semantic analysis"}, | ||
[j]={{O,1968,"void Parser::skipUntilPragmaOpenMPEnd(OpenMPDirectiveKind DKind) {\n Diag(Tok, diag::warn_omp_extra_tokens_at_eol) << getOpenMPDirectiveName(DKind);"}}, | [j]={{O,1968,"void Parser::skipUntilPragmaOpenMPEnd(OpenMPDirectiveKind DKind) {\n // ...\n Diag(Tok, diag::warn_omp_extra_tokens_at_eol) << getOpenMPDirectiveName(DKind);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/unroll_messages.cpp"]={"clang/test/OpenMP/unroll_messages.cpp:21:22: warning: extra tokens at the end of \'#pragma omp unroll\' are ignored [-Wextra-tokens]"} | ["clang/test/OpenMP/unroll_messages.cpp"]={"clang/test/OpenMP/unroll_messages.cpp:21:22: warning: extra tokens at the end of \'#pragma omp unroll\' are ignored [-Wextra-tokens]"} | ||
Line 2,575: | Line 2,575: | ||
[h]=vb, | [h]=vb, | ||
[i]={"8dba66412b0a",1398172182,"[OPENMP] parsing \'linear\' clause (for directive \'omp simd\')","[OPENMP] parsing \'linear\' clause (for directive \'omp simd\')"}, | [i]={"8dba66412b0a",1398172182,"[OPENMP] parsing \'linear\' clause (for directive \'omp simd\')","[OPENMP] parsing \'linear\' clause (for directive \'omp simd\')"}, | ||
[j]={{rb,20138,"OMPClause *Sema::ActOnOpenMPLinearClause(ArrayRef<Expr *> VarList, Expr *Step, SourceLocation StartLoc, SourceLocation LParenLoc, OpenMPLinearClauseKind LinKind, SourceLocation LinLoc, SourceLocation ColonLoc, SourceLocation EndLoc) {\n if (Step && !Step->isValueDependent() && !Step->isTypeDependent() && !Step->isInstantiationDependent() && !Step->containsUnexpandedParameterPack()) {\n // Warn about zero linear step (it would be probably better specified as\n // making corresponding variables \'const\').\n if (std::optional<llvm::APSInt> Result = StepExpr->getIntegerConstantExpr(Context)) {\n if (!Result->isNegative() && !Result->isStrictlyPositive())\n Diag(StepLoc, diag::warn_omp_linear_step_zero) << Vars[0] << (Vars.size() > 1);"}}, | [j]={{rb,20138,"OMPClause *Sema::ActOnOpenMPLinearClause(ArrayRef<Expr *> VarList, Expr *Step, SourceLocation StartLoc, SourceLocation LParenLoc, OpenMPLinearClauseKind LinKind, SourceLocation LinLoc, SourceLocation ColonLoc, SourceLocation EndLoc) {\n // ...\n if (Step && !Step->isValueDependent() && !Step->isTypeDependent() && !Step->isInstantiationDependent() && !Step->containsUnexpandedParameterPack()) {\n // ...\n // Warn about zero linear step (it would be probably better specified as\n // making corresponding variables \'const\').\n if (std::optional<llvm::APSInt> Result = StepExpr->getIntegerConstantExpr(Context)) {\n if (!Result->isNegative() && !Result->isStrictlyPositive())\n Diag(StepLoc, diag::warn_omp_linear_step_zero) << Vars[0] << (Vars.size() > 1);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/for_simd_linear_messages.cpp"]={"clang/test/OpenMP/for_simd_linear_messages.cpp:74:36: warning: zero linear step (ind2 should probably be const) [-Wopenmp-clauses]"} | ["clang/test/OpenMP/for_simd_linear_messages.cpp"]={"clang/test/OpenMP/for_simd_linear_messages.cpp:74:36: warning: zero linear step (ind2 should probably be const) [-Wopenmp-clauses]"} | ||
Line 2,592: | Line 2,592: | ||
[h]=vb, | [h]=vb, | ||
[i]={"174b3ca6820b",1412594189,"[OPENMP] Limit the loop counters to 64 bits for the worksharing loops","[OPENMP] Limit the loop counters to 64 bits for the worksharing loops"}, | [i]={"174b3ca6820b",1412594189,"[OPENMP] Limit the loop counters to 64 bits for the worksharing loops","[OPENMP] Limit the loop counters to 64 bits for the worksharing loops"}, | ||
[j]={{rb,8834,"/// Build the expression to calculate the number of iterations.\nExpr *OpenMPIterationSpaceChecker::buildNumIterations(Scope *S, ArrayRef<LoopIterationSpace> ResultIterSpaces, bool LimitedType, llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) const {\n if (LimitedType) {\n if (NewSize != C.getTypeSize(Type)) {\n if (NewSize < C.getTypeSize(Type)) {\n SemaRef.Diag(DefaultLoc, diag::warn_omp_loop_64_bit_var) << InitSrcRange << ConditionSrcRange;"}}, | [j]={{rb,8834,"/// Build the expression to calculate the number of iterations.\nExpr *OpenMPIterationSpaceChecker::buildNumIterations(Scope *S, ArrayRef<LoopIterationSpace> ResultIterSpaces, bool LimitedType, llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) const {\n // ...\n if (LimitedType) {\n // ...\n if (NewSize != C.getTypeSize(Type)) {\n if (NewSize < C.getTypeSize(Type)) {\n // ...\n SemaRef.Diag(DefaultLoc, diag::warn_omp_loop_64_bit_var) << InitSrcRange << ConditionSrcRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/taskloop_misc_messages.c"]={"clang/test/OpenMP/taskloop_misc_messages.c:378:3: warning: OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed [-Wopenmp-loop-form]"} | ["clang/test/OpenMP/taskloop_misc_messages.c"]={"clang/test/OpenMP/taskloop_misc_messages.c:378:3: warning: OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed [-Wopenmp-loop-form]"} | ||
Line 2,609: | Line 2,609: | ||
[h]=ac, | [h]=ac, | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{rb,19254,"static bool actOnOMPReductionKindClause(Sema &S, DSAStackTy *Stack, OpenMPClauseKind ClauseKind, ArrayRef<Expr *> VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, ArrayRef<Expr *> UnresolvedReductions, ReductionData &RD) {\n // OpenMP 5.2, 5.5.5 (see page 627, line 18) reduction Clause, Restrictions\n // A reduction clause with the minus (-) operator was deprecated\n if (OOK == OO_Minus && S.LangOpts.OpenMP == 52)\n S.Diag(ReductionId.getLoc(), diag::warn_omp_minus_in_reduction_deprecated);"}}, | [j]={{rb,19254,"static bool actOnOMPReductionKindClause(Sema &S, DSAStackTy *Stack, OpenMPClauseKind ClauseKind, ArrayRef<Expr *> VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, ArrayRef<Expr *> UnresolvedReductions, ReductionData &RD) {\n // ...\n // OpenMP 5.2, 5.5.5 (see page 627, line 18) reduction Clause, Restrictions\n // A reduction clause with the minus (-) operator was deprecated\n if (OOK == OO_Minus && S.LangOpts.OpenMP == 52)\n S.Diag(ReductionId.getLoc(), diag::warn_omp_minus_in_reduction_deprecated);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/taskloop_reduction_messages_attr.cpp"]={"clang/test/OpenMP/taskloop_reduction_messages_attr.cpp:158:39: warning: minus(-) operator for reductions is deprecated; use + or user defined reduction instead [-Wdeprecated]","clang/test/OpenMP/taskloop_reduction_messages_attr.cpp:260:39: warning: minus(-) operator for reductions is deprecated; use + or user defined reduction instead [-Wdeprecated]","clang/test/OpenMP/taskloop_reduction_messages_attr.cpp:158:39: warning: minus(-) operator for reductions is deprecated; use + or user defined reduction instead [-Wdeprecated]","clang/test/OpenMP/taskloop_reduction_messages_attr.cpp:158:39: warning: minus(-) operator for reductions is deprecated; use + or user defined reduction instead [-Wdeprecated]"} | ["clang/test/OpenMP/taskloop_reduction_messages_attr.cpp"]={"clang/test/OpenMP/taskloop_reduction_messages_attr.cpp:158:39: warning: minus(-) operator for reductions is deprecated; use + or user defined reduction instead [-Wdeprecated]","clang/test/OpenMP/taskloop_reduction_messages_attr.cpp:260:39: warning: minus(-) operator for reductions is deprecated; use + or user defined reduction instead [-Wdeprecated]","clang/test/OpenMP/taskloop_reduction_messages_attr.cpp:158:39: warning: minus(-) operator for reductions is deprecated; use + or user defined reduction instead [-Wdeprecated]","clang/test/OpenMP/taskloop_reduction_messages_attr.cpp:158:39: warning: minus(-) operator for reductions is deprecated; use + or user defined reduction instead [-Wdeprecated]"} | ||
Line 2,626: | Line 2,626: | ||
[h]=B, | [h]=B, | ||
[i]={"729e242a7972",1566576674,"[OPENMP5.0]Add support for device_type clause in declare target","[OPENMP5.0]Add support for device_type clause in declare target"}, | [i]={"729e242a7972",1566576674,"[OPENMP5.0]Add support for device_type clause in declare target","[OPENMP5.0]Add support for device_type clause in declare target"}, | ||
[j]={{O,1888,"void Parser::ParseOMPDeclareTargetClauses(Sema::DeclareTargetContextInfo &DTCI) {\n while (Tok.isNot(tok::annot_pragma_openmp_end)) {\n if (HasIdentifier) {\n // Parse \'device_type\' clause and go to next clause if any.\n if (IsDeviceTypeClause) {\n if (DevTypeData) {\n if (DeviceTypeLoc.isValid()) {\n Diag(DevTypeData->Loc, diag::warn_omp_more_one_device_type_clause);"}}, | [j]={{O,1888,"void Parser::ParseOMPDeclareTargetClauses(Sema::DeclareTargetContextInfo &DTCI) {\n // ...\n while (Tok.isNot(tok::annot_pragma_openmp_end)) {\n // ...\n if (HasIdentifier) {\n // ...\n // Parse \'device_type\' clause and go to next clause if any.\n if (IsDeviceTypeClause) {\n // ...\n if (DevTypeData) {\n if (DeviceTypeLoc.isValid()) {\n // ...\n Diag(DevTypeData->Loc, diag::warn_omp_more_one_device_type_clause);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/declare_target_messages.cpp"]={"clang/test/OpenMP/declare_target_messages.cpp:37:51: warning: more than one \'device_type\' clause is specified [-Wopenmp-clauses]"} | ["clang/test/OpenMP/declare_target_messages.cpp"]={"clang/test/OpenMP/declare_target_messages.cpp:37:51: warning: more than one \'device_type\' clause is specified [-Wopenmp-clauses]"} | ||
Line 2,643: | Line 2,643: | ||
[h]=B, | [h]=B, | ||
[i]={"69350e569dc4",1612659633,bc,bc}, | [i]={"69350e569dc4",1612659633,bc,bc}, | ||
[j]={{O,3562,"/// Parses a comma-separated list of interop-types and a prefer_type list.\n///\nbool Parser::ParseOMPInteropInfo(OMPInteropInfo &InteropInfo, OpenMPClauseKind Kind) {\n while (Tok.is(tok::identifier)) {\n if (Tok.getIdentifierInfo()->isStr(\"target\")) {\n // OpenMP 5.1 [2.15.1, interop Construct, Restrictions]\n // Each interop-type may be specified on an action-clause at most\n // once.\n if (IsTarget)\n Diag(Tok, diag::warn_omp_more_one_interop_type) << \"target\";"},{O,3567,"/// Parses a comma-separated list of interop-types and a prefer_type list.\n///\nbool Parser::ParseOMPInteropInfo(OMPInteropInfo &InteropInfo, OpenMPClauseKind Kind) {\n while (Tok.is(tok::identifier)) {\n if (Tok.getIdentifierInfo()->isStr(\"target\")) {\n } else if (Tok.getIdentifierInfo()->isStr(\"targetsync\")) {\n if (IsTargetSync)\n Diag(Tok, diag::warn_omp_more_one_interop_type) << \"targetsync\";"}}, | [j]={{O,3562,"/// Parses a comma-separated list of interop-types and a prefer_type list.\n///\nbool Parser::ParseOMPInteropInfo(OMPInteropInfo &InteropInfo, OpenMPClauseKind Kind) {\n // ...\n while (Tok.is(tok::identifier)) {\n // ...\n if (Tok.getIdentifierInfo()->isStr(\"target\")) {\n // OpenMP 5.1 [2.15.1, interop Construct, Restrictions]\n // Each interop-type may be specified on an action-clause at most\n // once.\n if (IsTarget)\n Diag(Tok, diag::warn_omp_more_one_interop_type) << \"target\";"},{O,3567,"/// Parses a comma-separated list of interop-types and a prefer_type list.\n///\nbool Parser::ParseOMPInteropInfo(OMPInteropInfo &InteropInfo, OpenMPClauseKind Kind) {\n // ...\n while (Tok.is(tok::identifier)) {\n // ...\n if (Tok.getIdentifierInfo()->isStr(\"target\")) {\n // ...\n } else if (Tok.getIdentifierInfo()->isStr(\"targetsync\")) {\n if (IsTargetSync)\n Diag(Tok, diag::warn_omp_more_one_interop_type) << \"targetsync\";"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/interop_messages.cpp"]={"clang/test/OpenMP/interop_messages.cpp:87:46: warning: interop type \'target\' cannot be specified more than once [-Wopenmp-clauses]"} | ["clang/test/OpenMP/interop_messages.cpp"]={"clang/test/OpenMP/interop_messages.cpp:87:46: warning: interop type \'target\' cannot be specified more than once [-Wopenmp-clauses]"} | ||
Line 2,660: | Line 2,660: | ||
[h]=B, | [h]=B, | ||
[i]={"9ba937112fa6",1652807460,"[OpenMP] Add parsing/sema support for omp_all_memory reserved locator","[OpenMP] Add parsing/sema support for omp_all_memory reserved locator"}, | [i]={"9ba937112fa6",1652807460,"[OpenMP] Add parsing/sema support for omp_all_memory reserved locator","[OpenMP] Add parsing/sema support for omp_all_memory reserved locator"}, | ||
[j]={{O,4309,"bool Parser::ParseOpenMPReservedLocator(OpenMPClauseKind Kind, Sema::OpenMPVarListDataTy &Data, const LangOptions &LangOpts) {\n if (Tok.is(tok::identifier) && Tok.getIdentifierInfo()->isStr(\"omp_all_memory\")) {\n if (Data.ExtraModifier == OMPC_DEPEND_outallmemory || Data.ExtraModifier == OMPC_DEPEND_inoutallmemory)\n Diag(Tok, diag::warn_omp_more_one_omp_all_memory);"}}, | [j]={{O,4309,"bool Parser::ParseOpenMPReservedLocator(OpenMPClauseKind Kind, Sema::OpenMPVarListDataTy &Data, const LangOptions &LangOpts) {\n // ...\n if (Tok.is(tok::identifier) && Tok.getIdentifierInfo()->isStr(\"omp_all_memory\")) {\n if (Data.ExtraModifier == OMPC_DEPEND_outallmemory || Data.ExtraModifier == OMPC_DEPEND_inoutallmemory)\n Diag(Tok, diag::warn_omp_more_one_omp_all_memory);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/task_depend_messages.cpp"]={"clang/test/OpenMP/task_depend_messages.cpp:89:52: warning: reserved locator \'omp_all_memory\' cannot be specified more than once [-Wopenmp-clauses]"} | ["clang/test/OpenMP/task_depend_messages.cpp"]={"clang/test/OpenMP/task_depend_messages.cpp:89:52: warning: reserved locator \'omp_all_memory\' cannot be specified more than once [-Wopenmp-clauses]"} | ||
Line 2,677: | Line 2,677: | ||
[h]=vb, | [h]=vb, | ||
[i]={"fd8b5748f113",1467383425,"[OpenMP] Issue warning if a simd construct nested inside another simd","[OpenMP] Issue warning if a simd construct nested inside another simd"}, | [i]={"fd8b5748f113",1467383425,"[OpenMP] Issue warning if a simd construct nested inside another simd","[OpenMP] Issue warning if a simd construct nested inside another simd"}, | ||
[j]={{rb,5011,"static bool checkNestingOfRegions(Sema &SemaRef, const DSAStackTy *Stack, OpenMPDirectiveKind CurrentRegion, const DeclarationNameInfo &CurrentName, OpenMPDirectiveKind CancelRegion, OpenMPBindClauseKind BindKind, SourceLocation StartLoc) {\n if (Stack->getCurScope()) {\n if (isOpenMPSimdDirective(ParentRegion) && ((SemaRef.LangOpts.OpenMP <= 45 && CurrentRegion != OMPD_ordered) || (SemaRef.LangOpts.OpenMP >= 50 && CurrentRegion != OMPD_ordered && CurrentRegion != OMPD_simd && CurrentRegion != OMPD_atomic && CurrentRegion != OMPD_scan))) {\n SemaRef.Diag(StartLoc, (CurrentRegion != OMPD_simd) ? diag::err_omp_prohibited_region_simd : diag::warn_omp_nesting_simd) << (SemaRef.LangOpts.OpenMP >= 50 ? 1 : 0);"}}, | [j]={{rb,5011,"static bool checkNestingOfRegions(Sema &SemaRef, const DSAStackTy *Stack, OpenMPDirectiveKind CurrentRegion, const DeclarationNameInfo &CurrentName, OpenMPDirectiveKind CancelRegion, OpenMPBindClauseKind BindKind, SourceLocation StartLoc) {\n if (Stack->getCurScope()) {\n // ...\n if (isOpenMPSimdDirective(ParentRegion) && ((SemaRef.LangOpts.OpenMP <= 45 && CurrentRegion != OMPD_ordered) || (SemaRef.LangOpts.OpenMP >= 50 && CurrentRegion != OMPD_ordered && CurrentRegion != OMPD_simd && CurrentRegion != OMPD_atomic && CurrentRegion != OMPD_scan))) {\n // ...\n SemaRef.Diag(StartLoc, (CurrentRegion != OMPD_simd) ? diag::err_omp_prohibited_region_simd : diag::warn_omp_nesting_simd) << (SemaRef.LangOpts.OpenMP >= 50 ? 1 : 0);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/nesting_of_regions.cpp"]={"clang/test/OpenMP/nesting_of_regions.cpp:250:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:803:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:2841:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:6735:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:7054:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:7847:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:8136:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:9432:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:9680:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:10135:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:10635:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:12554:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:15561:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:15880:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:16191:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:16726:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:17015:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:18311:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:18559:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]"} | ["clang/test/OpenMP/nesting_of_regions.cpp"]={"clang/test/OpenMP/nesting_of_regions.cpp:250:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:803:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:2841:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:6735:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:7054:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:7847:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:8136:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:9432:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:9680:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:10135:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:10635:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:12554:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:15561:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:15880:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:16191:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:16726:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:17015:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:18311:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]","clang/test/OpenMP/nesting_of_regions.cpp:18559:1: warning: OpenMP only allows an ordered construct with the simd clause nested in a simd construct [-Wsource-uses-openmp]"} | ||
Line 2,694: | Line 2,694: | ||
[h]=vb, | [h]=vb, | ||
[i]={"95c23e72da98",1519767071,"[OPENMP] Emit warning for non-trivial types in map clauses.","[OPENMP] Emit warning for non-trivial types in map clauses."}, | [i]={"95c23e72da98",1519767071,"[OPENMP] Emit warning for non-trivial types in map clauses.","[OPENMP] Emit warning for non-trivial types in map clauses."}, | ||
[j]={{rb,20969,"static bool checkTypeMappable(SourceLocation SL, SourceRange SR, Sema &SemaRef, DSAStackTy *Stack, QualType QTy, bool FullCheck = true) {\n if (FullCheck && !SemaRef.CurContext->isDependentContext() && !QTy.isTriviallyCopyableType(SemaRef.Context))\n SemaRef.Diag(SL, diag::warn_omp_non_trivial_type_mapped) << QTy << SR;"}}, | [j]={{rb,20969,"static bool checkTypeMappable(SourceLocation SL, SourceRange SR, Sema &SemaRef, DSAStackTy *Stack, QualType QTy, bool FullCheck = true) {\n // ...\n if (FullCheck && !SemaRef.CurContext->isDependentContext() && !QTy.isTriviallyCopyableType(SemaRef.Context))\n SemaRef.Diag(SL, diag::warn_omp_non_trivial_type_mapped) << QTy << SR;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/target_teams_distribute_firstprivate_messages.cpp"]={"clang/test/OpenMP/target_teams_distribute_firstprivate_messages.cpp:122:43: warning: Type \'const S3[5]\' is not trivially copyable and not guaranteed to be mapped correctly [-Wopenmp-mapping]"} | ["clang/test/OpenMP/target_teams_distribute_firstprivate_messages.cpp"]={"clang/test/OpenMP/target_teams_distribute_firstprivate_messages.cpp:122:43: warning: Type \'const S3[5]\' is not trivially copyable and not guaranteed to be mapped correctly [-Wopenmp-mapping]"} | ||
Line 2,711: | Line 2,711: | ||
[h]=vb, | [h]=vb, | ||
[i]={"0b0da296e6de",1459942739,"[OPENMP] Parsing and Sema support for \'omp declare target\' directive","[OPENMP] Parsing and Sema support for \'omp declare target\' directive"}, | [i]={"0b0da296e6de",1459942739,"[OPENMP] Parsing and Sema support for \'omp declare target\' directive","[OPENMP] Parsing and Sema support for \'omp declare target\' directive"}, | ||
[j]={{rb,23133,"static void checkDeclInTargetContext(SourceLocation SL, SourceRange SR, Sema &SemaRef, Decl *D) {\n SemaRef.Diag(VD->getLocation(), diag::warn_omp_not_in_target_context);"}}, | [j]={{rb,23133,"static void checkDeclInTargetContext(SourceLocation SL, SourceRange SR, Sema &SemaRef, Decl *D) {\n // ...\n SemaRef.Diag(VD->getLocation(), diag::warn_omp_not_in_target_context);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/nvptx_target_exceptions_messages.cpp"]={"clang/test/OpenMP/nvptx_target_exceptions_messages.cpp:92:7: warning: declaration is not declared in any declare target region [-Wopenmp-target]"} | ["clang/test/OpenMP/nvptx_target_exceptions_messages.cpp"]={"clang/test/OpenMP/nvptx_target_exceptions_messages.cpp:92:7: warning: declaration is not declared in any declare target region [-Wopenmp-target]"} | ||
Line 2,729: | Line 2,729: | ||
[h]=vb, | [h]=vb, | ||
[i]={"1a3320e4639c",1440512644,"[OPENMP 4.0] Initial support for array sections.","[OPENMP 4.0] Initial support for array sections."}, | [i]={"1a3320e4639c",1440512644,"[OPENMP 4.0] Initial support for array sections.","[OPENMP 4.0] Initial support for array sections."}, | ||
[j]={{A,5326,"ExprResult Sema::ActOnOMPArraySectionExpr(Expr *Base, SourceLocation LBLoc, Expr *LowerBound, SourceLocation ColonLocFirst, SourceLocation ColonLocSecond, Expr *Length, Expr *Stride, SourceLocation RBLoc) {\n // C99 6.5.2.1p1\n if (LowerBound) {\n if (LowerBound->getType()->isSpecificBuiltinType(BuiltinType::Char_S) || LowerBound->getType()->isSpecificBuiltinType(BuiltinType::Char_U))\n Diag(LowerBound->getExprLoc(), diag::warn_omp_section_is_char) << 0 << LowerBound->getSourceRange();"},{A,5340,"ExprResult Sema::ActOnOMPArraySectionExpr(Expr *Base, SourceLocation LBLoc, Expr *LowerBound, SourceLocation ColonLocFirst, SourceLocation ColonLocSecond, Expr *Length, Expr *Stride, SourceLocation RBLoc) {\n if (Length) {\n if (Length->getType()->isSpecificBuiltinType(BuiltinType::Char_S) || Length->getType()->isSpecificBuiltinType(BuiltinType::Char_U))\n Diag(Length->getExprLoc(), diag::warn_omp_section_is_char) << 1 << Length->getSourceRange();"},{A,5355,"ExprResult Sema::ActOnOMPArraySectionExpr(Expr *Base, SourceLocation LBLoc, Expr *LowerBound, SourceLocation ColonLocFirst, SourceLocation ColonLocSecond, Expr *Length, Expr *Stride, SourceLocation RBLoc) {\n if (Stride) {\n if (Stride->getType()->isSpecificBuiltinType(BuiltinType::Char_S) || Stride->getType()->isSpecificBuiltinType(BuiltinType::Char_U))\n Diag(Stride->getExprLoc(), diag::warn_omp_section_is_char) << 1 << Stride->getSourceRange();"}} | [j]={{A,5326,"ExprResult Sema::ActOnOMPArraySectionExpr(Expr *Base, SourceLocation LBLoc, Expr *LowerBound, SourceLocation ColonLocFirst, SourceLocation ColonLocSecond, Expr *Length, Expr *Stride, SourceLocation RBLoc) {\n // ...\n // C99 6.5.2.1p1\n if (LowerBound) {\n // ...\n if (LowerBound->getType()->isSpecificBuiltinType(BuiltinType::Char_S) || LowerBound->getType()->isSpecificBuiltinType(BuiltinType::Char_U))\n Diag(LowerBound->getExprLoc(), diag::warn_omp_section_is_char) << 0 << LowerBound->getSourceRange();"},{A,5340,"ExprResult Sema::ActOnOMPArraySectionExpr(Expr *Base, SourceLocation LBLoc, Expr *LowerBound, SourceLocation ColonLocFirst, SourceLocation ColonLocSecond, Expr *Length, Expr *Stride, SourceLocation RBLoc) {\n // ...\n if (Length) {\n // ...\n if (Length->getType()->isSpecificBuiltinType(BuiltinType::Char_S) || Length->getType()->isSpecificBuiltinType(BuiltinType::Char_U))\n Diag(Length->getExprLoc(), diag::warn_omp_section_is_char) << 1 << Length->getSourceRange();"},{A,5355,"ExprResult Sema::ActOnOMPArraySectionExpr(Expr *Base, SourceLocation LBLoc, Expr *LowerBound, SourceLocation ColonLocFirst, SourceLocation ColonLocSecond, Expr *Length, Expr *Stride, SourceLocation RBLoc) {\n // ...\n if (Stride) {\n // ...\n if (Stride->getType()->isSpecificBuiltinType(BuiltinType::Char_S) || Stride->getType()->isSpecificBuiltinType(BuiltinType::Char_U))\n Diag(Stride->getExprLoc(), diag::warn_omp_section_is_char) << 1 << Stride->getSourceRange();"}} | ||
}, | }, | ||
["warn_omp_unknown_assumption_clause_missing_id"]={ | ["warn_omp_unknown_assumption_clause_missing_id"]={ | ||
Line 2,743: | Line 2,743: | ||
[h]=B, | [h]=B, | ||
[i]={"38d18d93534d",1601621202,fd,fd}, | [i]={"38d18d93534d",1601621202,fd,fd}, | ||
[j]={{O,1721,"/// `omp assumes` or `omp begin/end assumes` <clause> [[,]<clause>]...\n/// where\n///\n/// clause:\n/// \'ext_IMPL_DEFINED\'\n/// \'absent\' \'(\' directive-name [, directive-name]* \')\'\n/// \'contains\' \'(\' directive-name [, directive-name]* \')\'\n/// \'holds\' \'(\' scalar-expression \')\'\n/// \'no_openmp\'\n/// \'no_openmp_routines\'\n/// \'no_parallelism\'\n///\nvoid Parser::ParseOpenMPAssumesDirective(OpenMPDirectiveKind DKind, SourceLocation Loc) {\n while (Tok.isNot(tok::annot_pragma_openmp_end)) {\n // Handle unknown clauses by skipping them.\n if (Idx == -1) {\n Diag(StartLoc, diag::warn_omp_unknown_assumption_clause_missing_id) << llvm::omp::getOpenMPDirectiveName(DKind) << llvm::omp::getAllAssumeClauseOptions() << NextIsLPar;"}}, | [j]={{O,1721,"/// `omp assumes` or `omp begin/end assumes` <clause> [[,]<clause>]...\n/// where\n///\n/// clause:\n/// \'ext_IMPL_DEFINED\'\n/// \'absent\' \'(\' directive-name [, directive-name]* \')\'\n/// \'contains\' \'(\' directive-name [, directive-name]* \')\'\n/// \'holds\' \'(\' scalar-expression \')\'\n/// \'no_openmp\'\n/// \'no_openmp_routines\'\n/// \'no_parallelism\'\n///\nvoid Parser::ParseOpenMPAssumesDirective(OpenMPDirectiveKind DKind, SourceLocation Loc) {\n // ...\n while (Tok.isNot(tok::annot_pragma_openmp_end)) {\n // ...\n // Handle unknown clauses by skipping them.\n if (Idx == -1) {\n Diag(StartLoc, diag::warn_omp_unknown_assumption_clause_missing_id) << llvm::omp::getOpenMPDirectiveName(DKind) << llvm::omp::getAllAssumeClauseOptions() << NextIsLPar;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/assumes_messages_attr.c"]={"clang/test/OpenMP/assumes_messages_attr.c:9:26: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:10:32: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:13:32: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:14:26: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:21:26: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:21:43: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:22:32: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:22:49: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:25:32: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:25:60: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:26:26: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:26:54: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:29:36: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:30:42: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:45:26: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:46:32: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]"} | ["clang/test/OpenMP/assumes_messages_attr.c"]={"clang/test/OpenMP/assumes_messages_attr.c:9:26: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:10:32: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:13:32: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:14:26: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:21:26: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:21:43: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:22:32: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:22:49: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:25:32: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:25:60: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:26:26: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:26:54: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:29:36: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:30:42: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:45:26: warning: valid assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:46:32: warning: valid begin assumes clauses start with \'ext_\', \'absent\', \'contains\', \'holds\', \'no_openmp\', \'no_openmp_routines\', \'no_parallelism\'; token will be ignored [-Wopenmp-clauses]"} | ||
Line 2,760: | Line 2,760: | ||
[h]=B, | [h]=B, | ||
[i]={"38d18d93534d",1601621202,fd,fd}, | [i]={"38d18d93534d",1601621202,fd,fd}, | ||
[j]={{O,1740,"/// `omp assumes` or `omp begin/end assumes` <clause> [[,]<clause>]...\n/// where\n///\n/// clause:\n/// \'ext_IMPL_DEFINED\'\n/// \'absent\' \'(\' directive-name [, directive-name]* \')\'\n/// \'contains\' \'(\' directive-name [, directive-name]* \')\'\n/// \'holds\' \'(\' scalar-expression \')\'\n/// \'no_openmp\'\n/// \'no_openmp_routines\'\n/// \'no_parallelism\'\n///\nvoid Parser::ParseOpenMPAssumesDirective(OpenMPDirectiveKind DKind, SourceLocation Loc) {\n while (Tok.isNot(tok::annot_pragma_openmp_end)) {\n if (NextIsLPar) {\n Diag(Tok.getLocation(), diag::warn_omp_unknown_assumption_clause_without_args) << II;"}}, | [j]={{O,1740,"/// `omp assumes` or `omp begin/end assumes` <clause> [[,]<clause>]...\n/// where\n///\n/// clause:\n/// \'ext_IMPL_DEFINED\'\n/// \'absent\' \'(\' directive-name [, directive-name]* \')\'\n/// \'contains\' \'(\' directive-name [, directive-name]* \')\'\n/// \'holds\' \'(\' scalar-expression \')\'\n/// \'no_openmp\'\n/// \'no_openmp_routines\'\n/// \'no_parallelism\'\n///\nvoid Parser::ParseOpenMPAssumesDirective(OpenMPDirectiveKind DKind, SourceLocation Loc) {\n // ...\n while (Tok.isNot(tok::annot_pragma_openmp_end)) {\n // ...\n if (NextIsLPar) {\n Diag(Tok.getLocation(), diag::warn_omp_unknown_assumption_clause_without_args) << II;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/assumes_messages_attr.c"]={"clang/test/OpenMP/assumes_messages_attr.c:17:35: warning: \'no_openmp\' clause should not be followed by arguments; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:18:41: warning: \'no_openmp\' clause should not be followed by arguments; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:49:33: warning: \'ext_123\' clause should not be followed by arguments; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:50:39: warning: \'ext_123\' clause should not be followed by arguments; tokens will be ignored [-Wopenmp-clauses]"} | ["clang/test/OpenMP/assumes_messages_attr.c"]={"clang/test/OpenMP/assumes_messages_attr.c:17:35: warning: \'no_openmp\' clause should not be followed by arguments; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:18:41: warning: \'no_openmp\' clause should not be followed by arguments; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:49:33: warning: \'ext_123\' clause should not be followed by arguments; tokens will be ignored [-Wopenmp-clauses]","clang/test/OpenMP/assumes_messages_attr.c:50:39: warning: \'ext_123\' clause should not be followed by arguments; tokens will be ignored [-Wopenmp-clauses]"} | ||
Line 2,777: | Line 2,777: | ||
[h]=vb, | [h]=vb, | ||
[i]={pd,1620530452,Rb,Rb}, | [i]={pd,1620530452,Rb,Rb}, | ||
[j]={{rb,23012,"void Sema::DiagnoseUnterminatedOpenMPDeclareTarget() {\n Diag(DTCI.Loc, diag::warn_omp_unterminated_declare_target) << getOpenMPDirectiveName(DTCI.Kind);"}}, | [j]={{rb,23012,"void Sema::DiagnoseUnterminatedOpenMPDeclareTarget() {\n // ...\n Diag(DTCI.Loc, diag::warn_omp_unterminated_declare_target) << getOpenMPDirectiveName(DTCI.Kind);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/declare_target_messages.cpp"]={"clang/test/OpenMP/declare_target_messages.cpp:279:27: warning: expected \'#pragma omp end declare target\' at end of file to match \'#pragma omp begin declare target\' [-Wsource-uses-openmp]"} | ["clang/test/OpenMP/declare_target_messages.cpp"]={"clang/test/OpenMP/declare_target_messages.cpp:279:27: warning: expected \'#pragma omp end declare target\' at end of file to match \'#pragma omp begin declare target\' [-Wsource-uses-openmp]"} | ||
Line 2,794: | Line 2,794: | ||
[h]=vb, | [h]=vb, | ||
[i]={"282555ad8268",1553027624,"[OPENMP]Warn if the different allocator is used for the variable.","[OPENMP]Warn if the different allocator is used for the variable."}, | [i]={"282555ad8268",1553027624,"[OPENMP]Warn if the different allocator is used for the variable.","[OPENMP]Warn if the different allocator is used for the variable."}, | ||
[j]={{rb,3343,"static bool checkPreviousOMPAllocateAttribute(Sema &S, DSAStackTy *Stack, Expr *RefExpr, VarDecl *VD, OMPAllocateDeclAttr::AllocatorTypeTy AllocatorKind, Expr *Allocator) {\n if (!AllocatorsMatch) {\n S.Diag(AllocatorLoc, diag::warn_omp_used_different_allocator) << (Allocator ? 1 : 0) << AllocatorStream.str() << (PrevAllocator ? 1 : 0) << PrevAllocatorStream.str() << AllocatorRange;"}}, | [j]={{rb,3343,"static bool checkPreviousOMPAllocateAttribute(Sema &S, DSAStackTy *Stack, Expr *RefExpr, VarDecl *VD, OMPAllocateDeclAttr::AllocatorTypeTy AllocatorKind, Expr *Allocator) {\n // ...\n if (!AllocatorsMatch) {\n // ...\n S.Diag(AllocatorLoc, diag::warn_omp_used_different_allocator) << (Allocator ? 1 : 0) << AllocatorStream.str() << (PrevAllocator ? 1 : 0) << PrevAllocatorStream.str() << AllocatorRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/allocate_allocator_messages.cpp"]={"clang/test/OpenMP/allocate_allocator_messages.cpp:34:35: warning: allocate directive specifies \'omp_thread_mem_alloc\' allocator while previously used default [-Wopenmp-clauses]","clang/test/OpenMP/allocate_allocator_messages.cpp:43:22: warning: allocate directive specifies default allocator while previously used \'omp_thread_mem_alloc\' [-Wopenmp-clauses]","clang/test/OpenMP/allocate_allocator_messages.cpp:47:35: warning: allocate directive specifies \'omp_high_bw_mem_alloc\' allocator while previously used \'omp_thread_mem_alloc\' [-Wopenmp-clauses]"} | ["clang/test/OpenMP/allocate_allocator_messages.cpp"]={"clang/test/OpenMP/allocate_allocator_messages.cpp:34:35: warning: allocate directive specifies \'omp_thread_mem_alloc\' allocator while previously used default [-Wopenmp-clauses]","clang/test/OpenMP/allocate_allocator_messages.cpp:43:22: warning: allocate directive specifies default allocator while previously used \'omp_thread_mem_alloc\' [-Wopenmp-clauses]","clang/test/OpenMP/allocate_allocator_messages.cpp:47:35: warning: allocate directive specifies \'omp_high_bw_mem_alloc\' allocator while previously used \'omp_thread_mem_alloc\' [-Wopenmp-clauses]"} | ||
Line 2,809: | Line 2,809: | ||
[h]=q, | [h]=q, | ||
[i]={"34e3cef4836d",1266613134,"Start supporting declaration of ivars in @implementation","Start supporting declaration of ivars in @implementation"}, | [i]={"34e3cef4836d",1266613134,"Start supporting declaration of ivars in @implementation","Start supporting declaration of ivars in @implementation"}, | ||
[j]={{P,2168,"void Sema::CheckImplementationIvars(ObjCImplementationDecl *ImpDecl, ObjCIvarDecl **ivars, unsigned numIvars, SourceLocation RBrace) {\n if (LangOpts.ObjCRuntime.isNonFragile()) {\n if (ImpDecl->getSuperClass())\n Diag(ImpDecl->getLocation(), diag::warn_on_superclass_use);"}}, | [j]={{P,2168,"void Sema::CheckImplementationIvars(ObjCImplementationDecl *ImpDecl, ObjCIvarDecl **ivars, unsigned numIvars, SourceLocation RBrace) {\n // ...\n if (LangOpts.ObjCRuntime.isNonFragile()) {\n if (ImpDecl->getSuperClass())\n Diag(ImpDecl->getLocation(), diag::warn_on_superclass_use);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/ivar-in-implementations.m"]={"clang/test/SemaObjC/ivar-in-implementations.m:12:17: warning: class implementation may not have super class"} | ["clang/test/SemaObjC/ivar-in-implementations.m"]={"clang/test/SemaObjC/ivar-in-implementations.m:12:17: warning: class implementation may not have super class"} | ||
Line 2,826: | Line 2,826: | ||
[h]=q, | [h]=q, | ||
[i]={"c4bb5df4ab28",1459422442,"[OpenCL] Added nosvm attribute for OpenCL v2.0.","[OpenCL] Added nosvm attribute for OpenCL v2.0."}, | [i]={"c4bb5df4ab28",1459422442,"[OpenCL] Added nosvm attribute for OpenCL v2.0.","[OpenCL] Added nosvm attribute for OpenCL v2.0."}, | ||
[j]={{C,8284,"static void handleOpenCLNoSVMAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (S.LangOpts.getOpenCLCompatibleVersion() < 200)\n else\n S.Diag(AL.getLoc(), diag::warn_opencl_attr_deprecated_ignored) << AL << S.LangOpts.getOpenCLVersionString();"}}, | [j]={{C,8284,"static void handleOpenCLNoSVMAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (S.LangOpts.getOpenCLCompatibleVersion() < 200)\n // ...\n else\n S.Diag(AL.getLoc(), diag::warn_opencl_attr_deprecated_ignored) << AL << S.LangOpts.getOpenCLVersionString();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaOpenCL/nosvm.cl"]={"clang/test/SemaOpenCL/nosvm.cl:7:30: warning: \'nosvm\' attribute is deprecated and ignored in C++ for OpenCL version 1.0 [-Wignored-attributes]"} | ["clang/test/SemaOpenCL/nosvm.cl"]={"clang/test/SemaOpenCL/nosvm.cl:7:30: warning: \'nosvm\' attribute is deprecated and ignored in C++ for OpenCL version 1.0 [-Wignored-attributes]"} | ||
Line 2,844: | Line 2,844: | ||
[h]=Zb, | [h]=Zb, | ||
[i]={"1076cc2ffae3",1537438047,"[OpenCL] Diagnose redundant address space conversion","[OpenCL] Diagnose redundant address space conversion"}, | [i]={"1076cc2ffae3",1537438047,"[OpenCL] Diagnose redundant address space conversion","[OpenCL] Diagnose redundant address space conversion"}, | ||
[j]={{x,1868,"// OpenCL v2.0 s6.13.9 - Address space qualifier functions.\n// Performs semantic analysis for the to_global/local/private call.\n// \\param S Reference to the semantic analyzer.\n// \\param BuiltinID ID of the builtin function.\n// \\param Call A pointer to the builtin call.\n// \\return True if a semantic error has been found, false otherwise.\nstatic bool SemaOpenCLBuiltinToAddr(Sema &S, unsigned BuiltinID, CallExpr *Call) {\n if (RT->getPointeeType().getAddressSpace() != LangAS::opencl_generic) {\n S.Diag(Call->getArg(0)->getBeginLoc(), diag::warn_opencl_generic_address_space_arg) << Call->getDirectCallee()->getNameInfo().getAsString() << Call->getArg(0)->getSourceRange();"}}, | [j]={{x,1868,"// OpenCL v2.0 s6.13.9 - Address space qualifier functions.\n// Performs semantic analysis for the to_global/local/private call.\n// \\param S Reference to the semantic analyzer.\n// \\param BuiltinID ID of the builtin function.\n// \\param Call A pointer to the builtin call.\n// \\return True if a semantic error has been found, false otherwise.\nstatic bool SemaOpenCLBuiltinToAddr(Sema &S, unsigned BuiltinID, CallExpr *Call) {\n // ...\n if (RT->getPointeeType().getAddressSpace() != LangAS::opencl_generic) {\n S.Diag(Call->getArg(0)->getBeginLoc(), diag::warn_opencl_generic_address_space_arg) << Call->getDirectCallee()->getNameInfo().getAsString() << Call->getArg(0)->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaOpenCL/to_addr_builtin.cl"]={"clang/test/SemaOpenCL/to_addr_builtin.cl:44:19: warning: passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:52:20: warning: passing non-generic address space pointer to to_private may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:60:18: warning: passing non-generic address space pointer to to_local may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:67:20: warning: passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:75:21: warning: passing non-generic address space pointer to to_private may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:83:19: warning: passing non-generic address space pointer to to_local may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:91:20: warning: passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:98:21: warning: passing non-generic address space pointer to to_private may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:106:19: warning: passing non-generic address space pointer to to_local may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:114:35: warning: passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:122:29: warning: passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance [-Wconversion]"} | ["clang/test/SemaOpenCL/to_addr_builtin.cl"]={"clang/test/SemaOpenCL/to_addr_builtin.cl:44:19: warning: passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:52:20: warning: passing non-generic address space pointer to to_private may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:60:18: warning: passing non-generic address space pointer to to_local may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:67:20: warning: passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:75:21: warning: passing non-generic address space pointer to to_private may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:83:19: warning: passing non-generic address space pointer to to_local may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:91:20: warning: passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:98:21: warning: passing non-generic address space pointer to to_private may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:106:19: warning: passing non-generic address space pointer to to_local may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:114:35: warning: passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance [-Wconversion]","clang/test/SemaOpenCL/to_addr_builtin.cl:122:29: warning: passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance [-Wconversion]"} | ||
Line 2,862: | Line 2,862: | ||
[h]=y, | [h]=y, | ||
[i]={"f0efc0075131",1619110439,"[OpenCL] Introduce new method for validating OpenCL target","[OpenCL] Introduce new method for validating OpenCL target"}, | [i]={"f0efc0075131",1619110439,"[OpenCL] Introduce new method for validating OpenCL target","[OpenCL] Introduce new method for validating OpenCL target"}, | ||
[j]={{"clang/lib/Basic/Targets.cpp",867,"/// validateOpenCLTarget - Check that OpenCL target has valid\n/// options setting based on OpenCL version.\nbool TargetInfo::validateOpenCLTarget(const LangOptions &Opts, DiagnosticsEngine &Diags) const {\n auto diagnoseNotSupportedCore = [&](llvm::StringRef Name, auto... OptArgs) {\n if (OpenCLOptions::isOpenCLOptionCoreIn(Opts, OptArgs...) && !hasFeatureEnabled(OpenCLFeaturesMap, Name))\n Diags.Report(diag::warn_opencl_unsupported_core_feature) << Name << Opts.OpenCLCPlusPlus << Opts.getOpenCLVersionTuple().getAsString();"}}, | [j]={{"clang/lib/Basic/Targets.cpp",867,"/// validateOpenCLTarget - Check that OpenCL target has valid\n/// options setting based on OpenCL version.\nbool TargetInfo::validateOpenCLTarget(const LangOptions &Opts, DiagnosticsEngine &Diags) const {\n // ...\n auto diagnoseNotSupportedCore = [&](llvm::StringRef Name, auto... OptArgs) {\n if (OpenCLOptions::isOpenCLOptionCoreIn(Opts, OptArgs...) && !hasFeatureEnabled(OpenCLFeaturesMap, Name))\n Diags.Report(diag::warn_opencl_unsupported_core_feature) << Name << Opts.OpenCLCPlusPlus << Opts.getOpenCLVersionTuple().getAsString();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Misc/r600.unsupported_core.cl"]={"warning: cl_khr_byte_addressable_store is a core feature in OpenCL C version 2.0 but not supported on this target [-Wpedantic-core-features]","warning: cl_khr_global_int32_base_atomics is a core feature in OpenCL C version 2.0 but not supported on this target [-Wpedantic-core-features]","warning: cl_khr_global_int32_extended_atomics is a core feature in OpenCL C version 2.0 but not supported on this target [-Wpedantic-core-features]","warning: cl_khr_local_int32_base_atomics is a core feature in OpenCL C version 2.0 but not supported on this target [-Wpedantic-core-features]","warning: cl_khr_local_int32_extended_atomics is a core feature in OpenCL C version 2.0 but not supported on this target [-Wpedantic-core-features]","warning: cl_khr_3d_image_writes is a core feature in OpenCL C version 2.0 but not supported on this target [-Wpedantic-core-features]"} | ["clang/test/Misc/r600.unsupported_core.cl"]={"warning: cl_khr_byte_addressable_store is a core feature in OpenCL C version 2.0 but not supported on this target [-Wpedantic-core-features]","warning: cl_khr_global_int32_base_atomics is a core feature in OpenCL C version 2.0 but not supported on this target [-Wpedantic-core-features]","warning: cl_khr_global_int32_extended_atomics is a core feature in OpenCL C version 2.0 but not supported on this target [-Wpedantic-core-features]","warning: cl_khr_local_int32_base_atomics is a core feature in OpenCL C version 2.0 but not supported on this target [-Wpedantic-core-features]","warning: cl_khr_local_int32_extended_atomics is a core feature in OpenCL C version 2.0 but not supported on this target [-Wpedantic-core-features]","warning: cl_khr_3d_image_writes is a core feature in OpenCL C version 2.0 but not supported on this target [-Wpedantic-core-features]"} | ||
Line 2,879: | Line 2,879: | ||
[h]=q, | [h]=q, | ||
[i]={"2c6b449098dc",1389924573,"Issue a warning if a throwing operator new or operator new[] returns a null","Issue a warning if a throwing operator new or operator new[] returns a null"}, | [i]={"2c6b449098dc",1389924573,"Issue a warning if a throwing operator new or operator new[] returns a null","Issue a warning if a throwing operator new or operator new[] returns a null"}, | ||
[j]={{x,12959,"void Sema::CheckReturnValExpr(Expr *RetValExp, QualType lhsType, SourceLocation ReturnLoc, bool isObjCMethod, const AttrVec *Attrs, const FunctionDecl *FD) {\n // C++11 [basic.stc.dynamic.allocation]p4:\n // If an allocation function declared with a non-throwing\n // exception-specification fails to allocate storage, it shall return\n // a null pointer. Any other allocation function that fails to allocate\n // storage shall indicate failure only by throwing an exception [...]\n if (FD) {\n if (Op == OO_New || Op == OO_Array_New) {\n if (!Proto->isNothrow(/*ResultIfDependent*/ true) && CheckNonNullExpr(*this, RetValExp))\n Diag(ReturnLoc, diag::warn_operator_new_returns_null) << FD << getLangOpts().CPlusPlus11;"}}, | [j]={{x,12959,"void Sema::CheckReturnValExpr(Expr *RetValExp, QualType lhsType, SourceLocation ReturnLoc, bool isObjCMethod, const AttrVec *Attrs, const FunctionDecl *FD) {\n // ...\n // C++11 [basic.stc.dynamic.allocation]p4:\n // If an allocation function declared with a non-throwing\n // exception-specification fails to allocate storage, it shall return\n // a null pointer. Any other allocation function that fails to allocate\n // storage shall indicate failure only by throwing an exception [...]\n if (FD) {\n // ...\n if (Op == OO_New || Op == OO_Array_New) {\n // ...\n if (!Proto->isNothrow(/*ResultIfDependent*/ true) && CheckNonNullExpr(*this, RetValExp))\n Diag(ReturnLoc, diag::warn_operator_new_returns_null) << FD << getLangOpts().CPlusPlus11;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-new-overaligned.cpp"]={"clang/test/SemaCXX/warn-new-overaligned.cpp:46:5: warning: \'operator new\' should not return a null pointer unless it is declared \'throw()\' or \'noexcept\' [-Wnew-returns-null]","clang/test/SemaCXX/warn-new-overaligned.cpp:68:5: warning: \'operator new[]\' should not return a null pointer unless it is declared \'throw()\' or \'noexcept\' [-Wnew-returns-null]"} | ["clang/test/SemaCXX/warn-new-overaligned.cpp"]={"clang/test/SemaCXX/warn-new-overaligned.cpp:46:5: warning: \'operator new\' should not return a null pointer unless it is declared \'throw()\' or \'noexcept\' [-Wnew-returns-null]","clang/test/SemaCXX/warn-new-overaligned.cpp:68:5: warning: \'operator new[]\' should not return a null pointer unless it is declared \'throw()\' or \'noexcept\' [-Wnew-returns-null]"} | ||
Line 2,896: | Line 2,896: | ||
[h]=ac, | [h]=ac, | ||
[i]={"b5f176e9bdbd",1467229172,"[OpenCL] Allow -cl-std and other standard -cl- options in driver","[OpenCL] Allow -cl-std and other standard -cl- options in driver"}, | [i]={"b5f176e9bdbd",1467229172,"[OpenCL] Allow -cl-std and other standard -cl- options in driver","[OpenCL] Allow -cl-std and other standard -cl- options in driver"}, | ||
[j]={{"clang/lib/Frontend/CompilerInvocation.cpp",550,"static bool FixupInvocation(CompilerInvocation &Invocation, DiagnosticsEngine &Diags, const ArgList &Args, InputKind IK) {\n // -cl-strict-aliasing needs to emit diagnostic in the case where CL > 1.0.\n // This option should be deprecated for CL > 1.0 because\n // this option was added for compatibility with OpenCL 1.0.\n if (Args.getLastArg(OPT_cl_strict_aliasing) && (LangOpts.getOpenCLCompatibleVersion() > 100))\n Diags.Report(diag::warn_option_invalid_ocl_version) << LangOpts.getOpenCLVersionString() << Args.getLastArg(OPT_cl_strict_aliasing)->getAsString(Args);"}}, | [j]={{"clang/lib/Frontend/CompilerInvocation.cpp",550,"static bool FixupInvocation(CompilerInvocation &Invocation, DiagnosticsEngine &Diags, const ArgList &Args, InputKind IK) {\n // ...\n // -cl-strict-aliasing needs to emit diagnostic in the case where CL > 1.0.\n // This option should be deprecated for CL > 1.0 because\n // this option was added for compatibility with OpenCL 1.0.\n if (Args.getLastArg(OPT_cl_strict_aliasing) && (LangOpts.getOpenCLCompatibleVersion() > 100))\n Diags.Report(diag::warn_option_invalid_ocl_version) << LangOpts.getOpenCLVersionString() << Args.getLastArg(OPT_cl_strict_aliasing)->getAsString(Args);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGenOpenCL/cl-strict-aliasing.cl"]={"warning: OpenCL C version 1.2 does not support the option \'-cl-strict-aliasing\'"} | ["clang/test/CodeGenOpenCL/cl-strict-aliasing.cl"]={"warning: OpenCL C version 1.2 does not support the option \'-cl-strict-aliasing\'"} | ||
Line 2,911: | Line 2,911: | ||
[h]=q, | [h]=q, | ||
[i]={"29034362ae87",1477328183,"Add support for __builtin_os_log_format[_buffer_size]","Add support for __builtin_os_log_format[_buffer_size]"}, | [i]={"29034362ae87",1477328183,"Add support for __builtin_os_log_format[_buffer_size]","Add support for __builtin_os_log_format[_buffer_size]"}, | ||
[j]={{x,10838,"bool CheckPrintfHandler::HandlePrintfSpecifier(const analyze_printf::PrintfSpecifier &FS, const char *startSpecifier, unsigned specifierLen, const TargetInfo &Target) {\n // %n is not allowed with os_log.\n if (FSType == Sema::FST_OSLog && CS.getKind() == ConversionSpecifier::nArg) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_os_log_format_narg), getLocationOfByte(CS.getStart()),"}}, | [j]={{x,10838,"bool CheckPrintfHandler::HandlePrintfSpecifier(const analyze_printf::PrintfSpecifier &FS, const char *startSpecifier, unsigned specifierLen, const TargetInfo &Target) {\n // ...\n // %n is not allowed with os_log.\n if (FSType == Sema::FST_OSLog && CS.getKind() == ConversionSpecifier::nArg) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_os_log_format_narg), getLocationOfByte(CS.getStart()),"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/format-strings-oslog.m"]={"clang/test/SemaObjC/format-strings-oslog.m:22:34: error: os_log() \'%n\' format specifier is not allowed"} | ["clang/test/SemaObjC/format-strings-oslog.m"]={"clang/test/SemaObjC/format-strings-oslog.m:22:34: error: os_log() \'%n\' format specifier is not allowed"} | ||
Line 2,928: | Line 2,928: | ||
[h]=q, | [h]=q, | ||
[i]={"2f4e33aba231",1348169801,"Improvements to my patch in r164143 per","Improvements to my patch in r164143 per"}, | [i]={"2f4e33aba231",1348169801,"Improvements to my patch in r164143 per","Improvements to my patch in r164143 per"}, | ||
[j]={{x,13737,"static int classifyConstantValue(Expr *Constant) {\n // diag::warn_out_of_range_compare and diag::warn_tautological_bool_compare."},{x,13878,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // FIXME: We use a somewhat different formatting for the in-range cases and\n // cases involving boolean values for historical reasons. We should pick a\n // consistent way of presenting these diagnostics.\n if (!InRange || Other->isKnownToHaveBooleanValue()) {\n S.DiagRuntimeBehavior(E->getOperatorLoc(), E, S.PDiag(!InRange ? diag::warn_out_of_range_compare : diag::warn_tautological_bool_compare) << OS.str() << classifyConstantValue(Constant) << OtherT << OtherIsBooleanDespiteType << *Result << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange());"}}, | [j]={{x,13737,"static int classifyConstantValue(Expr *Constant) {\n // ...\n // diag::warn_out_of_range_compare and diag::warn_tautological_bool_compare."},{x,13878,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // ...\n // FIXME: We use a somewhat different formatting for the in-range cases and\n // cases involving boolean values for historical reasons. We should pick a\n // consistent way of presenting these diagnostics.\n if (!InRange || Other->isKnownToHaveBooleanValue()) {\n S.DiagRuntimeBehavior(E->getOperatorLoc(), E, S.PDiag(!InRange ? diag::warn_out_of_range_compare : diag::warn_tautological_bool_compare) << OS.str() << classifyConstantValue(Constant) << OtherT << OtherIsBooleanDespiteType << *Result << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/outof-range-constant-compare.c"]={"clang/test/Sema/outof-range-constant-compare.c:10:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:12:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:14:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:16:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:18:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:20:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:23:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:25:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:27:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:29:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:31:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:33:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:35:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:37:11: warning: result of comparison of constant -1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:39:11: warning: result of comparison of constant -1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:41:11: warning: result of comparison of constant -1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:43:11: warning: result of comparison of constant -1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:45:11: warning: result of comparison of constant -1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:53:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:55:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:57:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:59:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:61:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:63:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:66:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:68:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:70:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:72:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:74:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:76:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:113:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'enum E\' is always false [-Wtautological-constant-out-of-range-compare]"} | ["clang/test/Sema/outof-range-constant-compare.c"]={"clang/test/Sema/outof-range-constant-compare.c:10:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:12:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:14:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:16:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:18:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:20:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:23:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:25:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:27:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:29:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:31:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:33:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:35:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:37:11: warning: result of comparison of constant -1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:39:11: warning: result of comparison of constant -1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:41:11: warning: result of comparison of constant -1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:43:11: warning: result of comparison of constant -1311768465173141112 with expression of type \'int\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:45:11: warning: result of comparison of constant -1311768465173141112 with expression of type \'int\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:53:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:55:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:57:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:59:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:61:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:63:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:66:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:68:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:70:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:72:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always false [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:74:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:76:29: warning: result of comparison of constant 1311768465173141112 with expression of type \'short\' is always true [-Wtautological-constant-out-of-range-compare]","clang/test/Sema/outof-range-constant-compare.c:113:11: warning: result of comparison of constant 1311768465173141112 with expression of type \'enum E\' is always false [-Wtautological-constant-out-of-range-compare]"} | ||
Line 2,946: | Line 2,946: | ||
[h]=q, | [h]=q, | ||
[i]={"411fc65b4566",1327439741,"Add a new warning, -Wover-aligned, which detects attempts to use the default","Add a new warning, -Wover-aligned, which detects attempts to use the default"}, | [i]={"411fc65b4566",1327439741,"Add a new warning, -Wover-aligned, which detects attempts to use the default","Add a new warning, -Wover-aligned, which detects attempts to use the default"}, | ||
[j]={{kc,2364,"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 (OperatorNew) {\n // Warn if the type is over-aligned and is being allocated by (unaligned)\n // global operator new.\n if (PlacementArgs.empty() && !PassAlignment && (OperatorNew->isImplicit() || (OperatorNew->getBeginLoc().isValid() && getSourceManager().isInSystemHeader(OperatorNew->getBeginLoc())))) {\n if (Alignment > NewAlignment)\n Diag(StartLoc, diag::warn_overaligned_type) << AllocType << unsigned(Alignment / Context.getCharWidth()) << unsigned(NewAlignment / Context.getCharWidth());"}}, | [j]={{kc,2364,"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 // ...\n if (OperatorNew) {\n // ...\n // Warn if the type is over-aligned and is being allocated by (unaligned)\n // global operator new.\n if (PlacementArgs.empty() && !PassAlignment && (OperatorNew->isImplicit() || (OperatorNew->getBeginLoc().isValid() && getSourceManager().isInSystemHeader(OperatorNew->getBeginLoc())))) {\n if (Alignment > NewAlignment)\n Diag(StartLoc, diag::warn_overaligned_type) << AllocType << unsigned(Alignment / Context.getCharWidth()) << unsigned(NewAlignment / Context.getCharWidth());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-new-overaligned.cpp"]={"clang/test/SemaCXX/warn-new-overaligned.cpp:16:3: warning: type \'Test\' requires 256 bytes of alignment and the default allocator only guarantees 16 bytes [-Wover-aligned]","clang/test/SemaCXX/warn-new-overaligned.cpp:17:3: warning: type \'Test\' requires 256 bytes of alignment and the default allocator only guarantees 16 bytes [-Wover-aligned]","clang/test/SemaCXX/warn-new-overaligned.cpp:33:3: warning: type \'Test\' requires 256 bytes of alignment and the default allocator only guarantees 16 bytes [-Wover-aligned]","clang/test/SemaCXX/warn-new-overaligned.cpp:34:3: warning: type \'Test\' requires 256 bytes of alignment and the default allocator only guarantees 16 bytes [-Wover-aligned]","clang/test/SemaCXX/warn-new-overaligned.cpp:56:3: warning: type \'Test\' requires 256 bytes of alignment and the default allocator only guarantees 16 bytes [-Wover-aligned]","clang/test/SemaCXX/warn-new-overaligned.cpp:77:3: warning: type \'Test\' requires 256 bytes of alignment and the default allocator only guarantees 16 bytes [-Wover-aligned]"} | ["clang/test/SemaCXX/warn-new-overaligned.cpp"]={"clang/test/SemaCXX/warn-new-overaligned.cpp:16:3: warning: type \'Test\' requires 256 bytes of alignment and the default allocator only guarantees 16 bytes [-Wover-aligned]","clang/test/SemaCXX/warn-new-overaligned.cpp:17:3: warning: type \'Test\' requires 256 bytes of alignment and the default allocator only guarantees 16 bytes [-Wover-aligned]","clang/test/SemaCXX/warn-new-overaligned.cpp:33:3: warning: type \'Test\' requires 256 bytes of alignment and the default allocator only guarantees 16 bytes [-Wover-aligned]","clang/test/SemaCXX/warn-new-overaligned.cpp:34:3: warning: type \'Test\' requires 256 bytes of alignment and the default allocator only guarantees 16 bytes [-Wover-aligned]","clang/test/SemaCXX/warn-new-overaligned.cpp:56:3: warning: type \'Test\' requires 256 bytes of alignment and the default allocator only guarantees 16 bytes [-Wover-aligned]","clang/test/SemaCXX/warn-new-overaligned.cpp:77:3: warning: type \'Test\' requires 256 bytes of alignment and the default allocator only guarantees 16 bytes [-Wover-aligned]"} | ||
Line 2,963: | Line 2,963: | ||
[h]=q, | [h]=q, | ||
[i]={"fe042e6aab26",1366164765,"Add warning group -Woverloaded-shift-op-parentheses to -Wparentheses. This","Add warning group -Woverloaded-shift-op-parentheses to -Wparentheses. This"}, | [i]={"fe042e6aab26",1366164765,"Add warning group -Woverloaded-shift-op-parentheses to -Wparentheses. This","Add warning group -Woverloaded-shift-op-parentheses to -Wparentheses. This"}, | ||
[j]={{A,15870,"static void DiagnoseShiftCompare(Sema &S, SourceLocation OpLoc, Expr *LHSExpr, Expr *RHSExpr) {\n S.Diag(OpLoc, diag::warn_overloaded_shift_in_comparison) << LHSExpr->getSourceRange() << RHSExpr->getSourceRange() << (Kind == OO_LessLess);"}}, | [j]={{A,15870,"static void DiagnoseShiftCompare(Sema &S, SourceLocation OpLoc, Expr *LHSExpr, Expr *RHSExpr) {\n // ...\n S.Diag(OpLoc, diag::warn_overloaded_shift_in_comparison) << LHSExpr->getSourceRange() << RHSExpr->getSourceRange() << (Kind == OO_LessLess);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/cxx2a-spaceship.cpp"]={"clang/test/Parser/cxx2a-spaceship.cpp:13:21: warning: overloaded operator << has higher precedence than comparison operator [-Woverloaded-shift-op-parentheses]","clang/test/Parser/cxx2a-spaceship.cpp:17:21: warning: overloaded operator << has higher precedence than comparison operator [-Woverloaded-shift-op-parentheses]"} | ["clang/test/Parser/cxx2a-spaceship.cpp"]={"clang/test/Parser/cxx2a-spaceship.cpp:13:21: warning: overloaded operator << has higher precedence than comparison operator [-Woverloaded-shift-op-parentheses]","clang/test/Parser/cxx2a-spaceship.cpp:17:21: warning: overloaded operator << has higher precedence than comparison operator [-Woverloaded-shift-op-parentheses]"} | ||
Line 2,981: | Line 2,981: | ||
[h]=q, | [h]=q, | ||
[i]={"7272d9cf36cd",1296756075,"Implement -Woverloaded-virtual.","Implement -Woverloaded-virtual."}, | [i]={"7272d9cf36cd",1296756075,"Implement -Woverloaded-virtual.","Implement -Woverloaded-virtual."}, | ||
[j]={{db,10284,"/// Diagnose methods which overload virtual methods in a base class\n/// without overriding any.\nvoid Sema::DiagnoseHiddenVirtualMethods(CXXMethodDecl *MD) {\n if (Diags.isIgnored(diag::warn_overloaded_virtual, MD->getLocation()))"},{db,10290,"/// Diagnose methods which overload virtual methods in a base class\n/// without overriding any.\nvoid Sema::DiagnoseHiddenVirtualMethods(CXXMethodDecl *MD) {\n if (!OverloadedMethods.empty()) {\n Diag(MD->getLocation(), diag::warn_overloaded_virtual) << MD << (OverloadedMethods.size() > 1);"}}, | [j]={{db,10284,"/// Diagnose methods which overload virtual methods in a base class\n/// without overriding any.\nvoid Sema::DiagnoseHiddenVirtualMethods(CXXMethodDecl *MD) {\n // ...\n if (Diags.isIgnored(diag::warn_overloaded_virtual, MD->getLocation()))"},{db,10290,"/// Diagnose methods which overload virtual methods in a base class\n/// without overriding any.\nvoid Sema::DiagnoseHiddenVirtualMethods(CXXMethodDecl *MD) {\n // ...\n if (!OverloadedMethods.empty()) {\n Diag(MD->getLocation(), diag::warn_overloaded_virtual) << MD << (OverloadedMethods.size() > 1);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-overloaded-virtual.cpp"]={"clang/test/SemaCXX/warn-overloaded-virtual.cpp:9:8: warning: \'S1::foo\' hides overloaded virtual functions [-Woverloaded-virtual]","clang/test/SemaCXX/warn-overloaded-virtual.cpp:21:17: warning: \'MS1::foo\' hides overloaded virtual functions [-Woverloaded-virtual]","clang/test/SemaCXX/warn-overloaded-virtual.cpp:137:17: warning: \'(anonymous namespace)::B::foo\' hides overloaded virtual functions [-Woverloaded-virtual]"} | ["clang/test/SemaCXX/warn-overloaded-virtual.cpp"]={"clang/test/SemaCXX/warn-overloaded-virtual.cpp:9:8: warning: \'S1::foo\' hides overloaded virtual functions [-Woverloaded-virtual]","clang/test/SemaCXX/warn-overloaded-virtual.cpp:21:17: warning: \'MS1::foo\' hides overloaded virtual functions [-Woverloaded-virtual]","clang/test/SemaCXX/warn-overloaded-virtual.cpp:137:17: warning: \'(anonymous namespace)::B::foo\' hides overloaded virtual functions [-Woverloaded-virtual]"} | ||
Line 2,998: | Line 2,998: | ||
[h]=q, | [h]=q, | ||
[i]={"fc587e6a5707",1505888571,"Add support for attribute \'noescape\'.","Add support for attribute \'noescape\'."}, | [i]={"fc587e6a5707",1505888571,"Add support for attribute \'noescape\'.","Add support for attribute \'noescape\'."}, | ||
[j]={{db,17983,"bool Sema::CheckOverridingFunctionAttributes(const CXXMethodDecl *New, const CXXMethodDecl *Old) {\n if (OldFT->hasExtParameterInfos()) {\n for (unsigned I = 0, E = OldFT->getNumParams(); I != E; ++I)\n // A parameter of the overriding method should be annotated with noescape\n // if the corresponding parameter of the overridden method is annotated.\n if (OldFT->getExtParameterInfo(I).isNoEscape() && !NewFT->getExtParameterInfo(I).isNoEscape()) {\n Diag(New->getParamDecl(I)->getLocation(), diag::warn_overriding_method_missing_noescape);"},{P,118,"/// Issue a warning if the parameter of the overridden method is non-escaping\n/// but the parameter of the overriding method is not.\nstatic bool diagnoseNoescape(const ParmVarDecl *NewD, const ParmVarDecl *OldD, Sema &S) {\n if (OldD->hasAttr<NoEscapeAttr>() && !NewD->hasAttr<NoEscapeAttr>()) {\n S.Diag(NewD->getLocation(), diag::warn_overriding_method_missing_noescape);"}}, | [j]={{db,17983,"bool Sema::CheckOverridingFunctionAttributes(const CXXMethodDecl *New, const CXXMethodDecl *Old) {\n // ...\n if (OldFT->hasExtParameterInfos()) {\n for (unsigned I = 0, E = OldFT->getNumParams(); I != E; ++I)\n // A parameter of the overriding method should be annotated with noescape\n // if the corresponding parameter of the overridden method is annotated.\n if (OldFT->getExtParameterInfo(I).isNoEscape() && !NewFT->getExtParameterInfo(I).isNoEscape()) {\n Diag(New->getParamDecl(I)->getLocation(), diag::warn_overriding_method_missing_noescape);"},{P,118,"/// Issue a warning if the parameter of the overridden method is non-escaping\n/// but the parameter of the overriding method is not.\nstatic bool diagnoseNoescape(const ParmVarDecl *NewD, const ParmVarDecl *OldD, Sema &S) {\n if (OldD->hasAttr<NoEscapeAttr>() && !NewD->hasAttr<NoEscapeAttr>()) {\n S.Diag(NewD->getLocation(), diag::warn_overriding_method_missing_noescape);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjCXX/noescape.mm"]={"clang/test/SemaObjCXX/noescape.mm:42:16: warning: parameter of overriding method should be annotated with __attribute__((noescape)) [-Wmissing-noescape]","clang/test/SemaObjCXX/noescape.mm:69:19: warning: parameter of overriding method should be annotated with __attribute__((noescape)) [-Wmissing-noescape]","clang/test/SemaObjCXX/noescape.mm:123:19: warning: parameter of overriding method should be annotated with __attribute__((noescape)) [-Wmissing-noescape]","clang/test/SemaObjCXX/noescape.mm:133:19: warning: parameter of overriding method should be annotated with __attribute__((noescape)) [-Wmissing-noescape]"} | ["clang/test/SemaObjCXX/noescape.mm"]={"clang/test/SemaObjCXX/noescape.mm:42:16: warning: parameter of overriding method should be annotated with __attribute__((noescape)) [-Wmissing-noescape]","clang/test/SemaObjCXX/noescape.mm:69:19: warning: parameter of overriding method should be annotated with __attribute__((noescape)) [-Wmissing-noescape]","clang/test/SemaObjCXX/noescape.mm:123:19: warning: parameter of overriding method should be annotated with __attribute__((noescape)) [-Wmissing-noescape]","clang/test/SemaObjCXX/noescape.mm:133:19: warning: parameter of overriding method should be annotated with __attribute__((noescape)) [-Wmissing-noescape]"} | ||
Line 3,016: | Line 3,016: | ||
[h]=y, | [h]=y, | ||
[i]={"ca0d0cd3b993",1285165944,jc,jc}, | [i]={"ca0d0cd3b993",1285165944,jc,jc}, | ||
[j]={{oc,2309,"void ItaniumRecordLayoutBuilder::CheckFieldPadding(uint64_t Offset, uint64_t UnpaddedOffset, uint64_t UnpackedOffset, unsigned UnpackedAlign, bool isPacked, const FieldDecl *D) {\n // Warn if padding was introduced to the struct/class.\n if (!IsUnion && Offset > UnpaddedOffset) {\n if (D->getIdentifier())\n else\n Diag(D->getLocation(), diag::warn_padded_struct_anon_field) << getPaddingDiagFromTagKind(D->getParent()->getTagKind()) << Context.getTypeDeclType(D->getParent()) << PadSize << (InBits ? 1 : 0); // (byte|bit)"}} | [j]={{oc,2309,"void ItaniumRecordLayoutBuilder::CheckFieldPadding(uint64_t Offset, uint64_t UnpaddedOffset, uint64_t UnpackedOffset, unsigned UnpackedAlign, bool isPacked, const FieldDecl *D) {\n // ...\n // Warn if padding was introduced to the struct/class.\n if (!IsUnion && Offset > UnpaddedOffset) {\n // ...\n if (D->getIdentifier())\n // ...\n else\n Diag(D->getLocation(), diag::warn_padded_struct_anon_field) << getPaddingDiagFromTagKind(D->getParent()->getTagKind()) << Context.getTypeDeclType(D->getParent()) << PadSize << (InBits ? 1 : 0); // (byte|bit)"}} | ||
}, | }, | ||
["warn_padded_struct_field"]={ | ["warn_padded_struct_field"]={ | ||
Line 3,031: | Line 3,031: | ||
[h]=y, | [h]=y, | ||
[i]={"ca0d0cd3b993",1285165944,jc,jc}, | [i]={"ca0d0cd3b993",1285165944,jc,jc}, | ||
[j]={{oc,2302,"void ItaniumRecordLayoutBuilder::CheckFieldPadding(uint64_t Offset, uint64_t UnpaddedOffset, uint64_t UnpackedOffset, unsigned UnpackedAlign, bool isPacked, const FieldDecl *D) {\n // Warn if padding was introduced to the struct/class.\n if (!IsUnion && Offset > UnpaddedOffset) {\n if (D->getIdentifier())\n Diag(D->getLocation(), diag::warn_padded_struct_field) << getPaddingDiagFromTagKind(D->getParent()->getTagKind()) << Context.getTypeDeclType(D->getParent()) << PadSize << (InBits ? 1 : 0) // (byte|bit)"}}, | [j]={{oc,2302,"void ItaniumRecordLayoutBuilder::CheckFieldPadding(uint64_t Offset, uint64_t UnpaddedOffset, uint64_t UnpackedOffset, unsigned UnpackedAlign, bool isPacked, const FieldDecl *D) {\n // ...\n // Warn if padding was introduced to the struct/class.\n if (!IsUnion && Offset > UnpaddedOffset) {\n // ...\n if (D->getIdentifier())\n Diag(D->getLocation(), diag::warn_padded_struct_field) << getPaddingDiagFromTagKind(D->getParent()->getTagKind()) << Context.getTypeDeclType(D->getParent()) << PadSize << (InBits ? 1 : 0) // (byte|bit)"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp"]={"clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:11:9: warning: padding struct \'S1\' with 1 byte to align \'s\' [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:12:8: warning: padding struct \'S1\' with 4 bytes to align \'l\' [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:35:5: warning: padding struct \'S5\' with 3 bytes to align \'u\' [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:52:7: warning: padding struct \'S8\' with 3 bytes to align \'i\' [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:73:8: warning: padding struct \'S12\' with 7 bits to align \'c\' [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:147:17: warning: padding struct \'S26\' with 7 bits to align \'b\' [-Wpadded]"} | ["clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp"]={"clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:11:9: warning: padding struct \'S1\' with 1 byte to align \'s\' [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:12:8: warning: padding struct \'S1\' with 4 bytes to align \'l\' [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:35:5: warning: padding struct \'S5\' with 3 bytes to align \'u\' [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:52:7: warning: padding struct \'S8\' with 3 bytes to align \'i\' [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:73:8: warning: padding struct \'S12\' with 7 bits to align \'c\' [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:147:17: warning: padding struct \'S26\' with 7 bits to align \'b\' [-Wpadded]"} | ||
Line 3,049: | Line 3,049: | ||
[h]=y, | [h]=y, | ||
[i]={"ca0d0cd3b993",1285165944,jc,jc}, | [i]={"ca0d0cd3b993",1285165944,jc,jc}, | ||
[j]={{oc,2196,"void ItaniumRecordLayoutBuilder::FinishLayout(const NamedDecl *D) {\n if (const RecordDecl *RD = dyn_cast<RecordDecl>(D)) {\n // Warn if padding was introduced to the struct/class/union.\n if (getSizeInBits() > UnpaddedSize) {\n Diag(RD->getLocation(), diag::warn_padded_struct_size) << Context.getTypeDeclType(RD) << PadSize << (InBits ? 1 : 0); // (byte|bit)"}}, | [j]={{oc,2196,"void ItaniumRecordLayoutBuilder::FinishLayout(const NamedDecl *D) {\n // ...\n if (const RecordDecl *RD = dyn_cast<RecordDecl>(D)) {\n // Warn if padding was introduced to the struct/class/union.\n if (getSizeInBits() > UnpaddedSize) {\n // ...\n Diag(RD->getLocation(), diag::warn_padded_struct_size) << Context.getTypeDeclType(RD) << PadSize << (InBits ? 1 : 0); // (byte|bit)"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp"]={"clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:15:8: warning: padding size of \'S2\' with 3 bytes to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:38:8: warning: padding size of \'S6\' with 30 bits to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:42:8: warning: padding size of \'S7\' with 7 bytes to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:76:8: warning: padding size of \'S13\' with 6 bits to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:90:8: warning: padding size of \'S16\' with 2 bytes to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:99:8: warning: padding size of \'S18\' with 2 bytes to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:114:8: warning: padding size of \'S21\' with 4 bits to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:124:8: warning: padding size of \'S23\' with 4 bits to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:140:8: warning: padding size of \'S25\' with 7 bits to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:150:8: warning: padding size of \'S27\' with 7 bits to alignment boundary [-Wpadded]"} | ["clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp"]={"clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:15:8: warning: padding size of \'S2\' with 3 bytes to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:38:8: warning: padding size of \'S6\' with 30 bits to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:42:8: warning: padding size of \'S7\' with 7 bytes to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:76:8: warning: padding size of \'S13\' with 6 bits to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:90:8: warning: padding size of \'S16\' with 2 bytes to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:99:8: warning: padding size of \'S18\' with 2 bytes to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:114:8: warning: padding size of \'S21\' with 4 bits to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:124:8: warning: padding size of \'S23\' with 4 bits to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:140:8: warning: padding size of \'S25\' with 7 bits to alignment boundary [-Wpadded]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:150:8: warning: padding size of \'S27\' with 7 bits to alignment boundary [-Wpadded]"} | ||
Line 3,066: | Line 3,066: | ||
[h]=q, | [h]=q, | ||
[i]={"61d065e21ff3",1590001902,Wc,Wc}, | [i]={"61d065e21ff3",1590001902,Wc,Wc}, | ||
[j]={{x,6643,"/// Warn if a pointer or reference argument passed to a function points to an\n/// object that is less aligned than the parameter. This can happen when\n/// creating a typedef with a lower alignment than the original type and then\n/// calling functions defined in terms of the original type.\nvoid Sema::CheckArgAlignment(SourceLocation Loc, NamedDecl *FDecl, StringRef ParamName, QualType ArgTy, QualType ParamTy) {\n // If the argument is less aligned than the parameter, there is a\n // potential alignment issue.\n if (ArgAlign < ParamAlign)\n Diag(Loc, diag::warn_param_mismatched_alignment) << (int)ArgAlign.getQuantity() << (int)ParamAlign.getQuantity() << ParamName << (FDecl != nullptr) << FDecl;"}}, | [j]={{x,6643,"/// Warn if a pointer or reference argument passed to a function points to an\n/// object that is less aligned than the parameter. This can happen when\n/// creating a typedef with a lower alignment than the original type and then\n/// calling functions defined in terms of the original type.\nvoid Sema::CheckArgAlignment(SourceLocation Loc, NamedDecl *FDecl, StringRef ParamName, QualType ArgTy, QualType ParamTy) {\n // ...\n // If the argument is less aligned than the parameter, there is a\n // potential alignment issue.\n if (ArgAlign < ParamAlign)\n Diag(Loc, diag::warn_param_mismatched_alignment) << (int)ArgAlign.getQuantity() << (int)ParamAlign.getQuantity() << ParamName << (FDecl != nullptr) << FDecl;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/aix-attr-aligned-vector-warn.c"]={"clang/test/Sema/aix-attr-aligned-vector-warn.c:14:17: warning: passing 8-byte aligned argument to 16-byte aligned parameter 1 of \'escape\' may result in an unaligned pointer access [-Walign-mismatch]"} | ["clang/test/Sema/aix-attr-aligned-vector-warn.c"]={"clang/test/Sema/aix-attr-aligned-vector-warn.c:14:17: warning: passing 8-byte aligned argument to 16-byte aligned parameter 1 of \'escape\' may result in an unaligned pointer access [-Walign-mismatch]"} | ||
Line 3,084: | Line 3,084: | ||
[h]=q, | [h]=q, | ||
[i]={"36ea1dd4fc5e",1382050384,"Consumed Analysis: Allow parameters that are passed by non-const reference","Consumed Analysis: Allow parameters that are passed by non-const reference"}, | [i]={"36ea1dd4fc5e",1382050384,"Consumed Analysis: Allow parameters that are passed by non-const reference","Consumed Analysis: Allow parameters that are passed by non-const reference"}, | ||
[j]={{E,2104,"class ConsumedWarningsHandler : public ConsumedWarningsHandlerBase {\n void warnParamReturnTypestateMismatch(SourceLocation Loc, StringRef VariableName, StringRef ExpectedState, StringRef ObservedState) override {\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_param_return_typestate_mismatch) << VariableName << ExpectedState << ObservedState);"}}, | [j]={{E,2104,"class ConsumedWarningsHandler : public ConsumedWarningsHandlerBase {\n // ...\n void warnParamReturnTypestateMismatch(SourceLocation Loc, StringRef VariableName, StringRef ExpectedState, StringRef ObservedState) override {\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_param_return_typestate_mismatch) << VariableName << ExpectedState << ObservedState);"}}, | ||
[p]={ | [p]={ | ||
[qd]={"clang/test/SemaCXX/warn-consumed-analysis.cpp:425:6: warning: parameter \'Param\' not in expected state when the function returns: expected \'unconsumed\', observed \'consumed\' [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:429:5: warning: parameter \'Param\' not in expected state when the function returns: expected \'unconsumed\', observed \'consumed\' [-Wconsumed]"} | [qd]={"clang/test/SemaCXX/warn-consumed-analysis.cpp:425:6: warning: parameter \'Param\' not in expected state when the function returns: expected \'unconsumed\', observed \'consumed\' [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:429:5: warning: parameter \'Param\' not in expected state when the function returns: expected \'unconsumed\', observed \'consumed\' [-Wconsumed]"} | ||
Line 3,102: | Line 3,102: | ||
[h]=q, | [h]=q, | ||
[i]={"6939177ceab8",1382052233,"Consumed analysis: Add param_typestate attribute, which specifies that","Consumed analysis: Add param_typestate attribute, which specifies that"}, | [i]={"6939177ceab8",1382052233,"Consumed analysis: Add param_typestate attribute, which specifies that","Consumed analysis: Add param_typestate attribute, which specifies that"}, | ||
[j]={{E,2114,"class ConsumedWarningsHandler : public ConsumedWarningsHandlerBase {\n void warnParamTypestateMismatch(SourceLocation Loc, StringRef ExpectedState, StringRef ObservedState) override {\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_param_typestate_mismatch) << ExpectedState << ObservedState);"}}, | [j]={{E,2114,"class ConsumedWarningsHandler : public ConsumedWarningsHandlerBase {\n // ...\n void warnParamTypestateMismatch(SourceLocation Loc, StringRef ExpectedState, StringRef ObservedState) override {\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_param_typestate_mismatch) << ExpectedState << ObservedState);"}}, | ||
[p]={ | [p]={ | ||
[qd]={"clang/test/SemaCXX/warn-consumed-analysis.cpp:458:34: warning: argument not in expected state; expected \'consumed\', observed \'unconsumed\' [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:476:15: warning: argument not in expected state; expected \'unconsumed\', observed \'consumed\' [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:477:32: warning: argument not in expected state; expected \'unconsumed\', observed \'consumed\' [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:479:22: warning: argument not in expected state; expected \'unconsumed\', observed \'consumed\' [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:480:9: warning: argument not in expected state; expected \'unconsumed\', observed \'consumed\' [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:481:9: warning: argument not in expected state; expected \'unconsumed\', observed \'consumed\' [-Wconsumed]"} | [qd]={"clang/test/SemaCXX/warn-consumed-analysis.cpp:458:34: warning: argument not in expected state; expected \'consumed\', observed \'unconsumed\' [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:476:15: warning: argument not in expected state; expected \'unconsumed\', observed \'consumed\' [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:477:32: warning: argument not in expected state; expected \'unconsumed\', observed \'consumed\' [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:479:22: warning: argument not in expected state; expected \'unconsumed\', observed \'consumed\' [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:480:9: warning: argument not in expected state; expected \'unconsumed\', observed \'consumed\' [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:481:9: warning: argument not in expected state; expected \'unconsumed\', observed \'consumed\' [-Wconsumed]"} | ||
Line 3,119: | Line 3,119: | ||
[h]=q, | [h]=q, | ||
[i]={"af84ec0a9612",1290035514,"Introduce option -Wargument-larger-than[=N] which warns about function definitions if they take by-v...","Introduce option -Wargument-larger-than[=N] which warns about function definitions if they take by-value"}, | [i]={"af84ec0a9612",1290035514,"Introduce option -Wargument-larger-than[=N] which warns about function definitions if they take by-v...","Introduce option -Wargument-larger-than[=N] which warns about function definitions if they take by-value"}, | ||
[j]={{H,14881,"void Sema::DiagnoseSizeOfParametersAndReturnValue(ArrayRef<ParmVarDecl *> Parameters, QualType ReturnTy, NamedDecl *D) {\n // Warn if any parameter is pass-by-value and larger than the specified\n // threshold.\n for (const ParmVarDecl *Parameter : Parameters) {\n if (Size > LangOpts.NumLargeByValueCopy)\n Diag(Parameter->getLocation(), diag::warn_parameter_size) << Parameter << Size;"}}, | [j]={{H,14881,"void Sema::DiagnoseSizeOfParametersAndReturnValue(ArrayRef<ParmVarDecl *> Parameters, QualType ReturnTy, NamedDecl *D) {\n // ...\n // Warn if any parameter is pass-by-value and larger than the specified\n // threshold.\n for (const ParmVarDecl *Parameter : Parameters) {\n // ...\n if (Size > LangOpts.NumLargeByValueCopy)\n Diag(Parameter->getLocation(), diag::warn_parameter_size) << Parameter << Size;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-large-by-value-copy.cpp"]={"clang/test/SemaCXX/warn-large-by-value-copy.cpp:16:16: warning: \'s\' is a large (101 bytes) pass-by-value argument; pass it by reference instead ? [-Wlarge-by-value-copy]","clang/test/SemaCXX/warn-large-by-value-copy.cpp:19:29: warning: \'\' is a large (101 bytes) pass-by-value argument; pass it by reference instead ? [-Wlarge-by-value-copy]","clang/test/SemaCXX/warn-large-by-value-copy.cpp:24:35: warning: \'\' is a large (101 bytes) pass-by-value argument; pass it by reference instead ? [-Wlarge-by-value-copy]","clang/test/SemaCXX/warn-large-by-value-copy.cpp:43:18: warning: \'ts\' is a large (300 bytes) pass-by-value argument; pass it by reference instead ? [-Wlarge-by-value-copy]"} | ["clang/test/SemaCXX/warn-large-by-value-copy.cpp"]={"clang/test/SemaCXX/warn-large-by-value-copy.cpp:16:16: warning: \'s\' is a large (101 bytes) pass-by-value argument; pass it by reference instead ? [-Wlarge-by-value-copy]","clang/test/SemaCXX/warn-large-by-value-copy.cpp:19:29: warning: \'\' is a large (101 bytes) pass-by-value argument; pass it by reference instead ? [-Wlarge-by-value-copy]","clang/test/SemaCXX/warn-large-by-value-copy.cpp:24:35: warning: \'\' is a large (101 bytes) pass-by-value argument; pass it by reference instead ? [-Wlarge-by-value-copy]","clang/test/SemaCXX/warn-large-by-value-copy.cpp:43:18: warning: \'ts\' is a large (300 bytes) pass-by-value argument; pass it by reference instead ? [-Wlarge-by-value-copy]"} | ||
Line 3,136: | Line 3,136: | ||
[h]=q, | [h]=q, | ||
[i]={"943c44045551",1343683852,"Improvements to vexing-parse warnings. Make the no-parameters case more","Improvements to vexing-parse warnings. Make the no-parameters case more"}, | [i]={"943c44045551",1343683852,"Improvements to vexing-parse warnings. Make the no-parameters case more","Improvements to vexing-parse warnings. Make the no-parameters case more"}, | ||
[j]={{T,3860,"/// Produce an appropriate diagnostic for an ambiguity between a function\n/// declarator and a C++ direct-initializer.\nstatic void warnAboutAmbiguousFunction(Sema &S, Declarator &D, DeclaratorChunk &DeclType, QualType RT) {\n S.Diag(DeclType.Loc, FTI.NumParams ? diag::warn_parens_disambiguated_as_function_declaration : diag::warn_empty_parens_are_function_decl) << ParenRange;"}}, | [j]={{T,3860,"/// Produce an appropriate diagnostic for an ambiguity between a function\n/// declarator and a C++ direct-initializer.\nstatic void warnAboutAmbiguousFunction(Sema &S, Declarator &D, DeclaratorChunk &DeclType, QualType RT) {\n // ...\n S.Diag(DeclType.Loc, FTI.NumParams ? diag::warn_parens_disambiguated_as_function_declaration : diag::warn_empty_parens_are_function_decl) << ParenRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/dcl_ambig_res.cpp"]={"clang/test/SemaCXX/dcl_ambig_res.cpp:16:6: warning: parentheses were disambiguated as a function declaration [-Wvexing-parse]","clang/test/SemaCXX/dcl_ambig_res.cpp:18:7: warning: parentheses were disambiguated as a function declaration [-Wvexing-parse]","clang/test/SemaCXX/dcl_ambig_res.cpp:73:8: warning: parentheses were disambiguated as a function declaration [-Wvexing-parse]"} | ["clang/test/SemaCXX/dcl_ambig_res.cpp"]={"clang/test/SemaCXX/dcl_ambig_res.cpp:16:6: warning: parentheses were disambiguated as a function declaration [-Wvexing-parse]","clang/test/SemaCXX/dcl_ambig_res.cpp:18:7: warning: parentheses were disambiguated as a function declaration [-Wvexing-parse]","clang/test/SemaCXX/dcl_ambig_res.cpp:73:8: warning: parentheses were disambiguated as a function declaration [-Wvexing-parse]"} | ||
Line 3,153: | Line 3,153: | ||
[h]=q, | [h]=q, | ||
[i]={"ac63d63543ca",1506729445,"Add a \"vexing parse\" warning for ambiguity between a variable declaration and a","Add a \"vexing parse\" warning for ambiguity between a variable declaration and a"}, | [i]={"ac63d63543ca",1506729445,"Add a \"vexing parse\" warning for ambiguity between a variable declaration and a","Add a \"vexing parse\" warning for ambiguity between a variable declaration and a"}, | ||
[j]={{T,4022,"/// Produce an appropriate diagnostic for a declarator with top-level\n/// parentheses.\nstatic void warnAboutRedundantParens(Sema &S, Declarator &D, QualType T) {\n S.Diag(Paren.Loc, diag::warn_parens_disambiguated_as_variable_declaration) << ParenRange << D.getIdentifier();"}}, | [j]={{T,4022,"/// Produce an appropriate diagnostic for a declarator with top-level\n/// parentheses.\nstatic void warnAboutRedundantParens(Sema &S, Declarator &D, QualType T) {\n // ...\n S.Diag(Paren.Loc, diag::warn_parens_disambiguated_as_variable_declaration) << ParenRange << D.getIdentifier();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/cxx0x-condition.cpp"]={"clang/test/Parser/cxx0x-condition.cpp:17:8: warning: parentheses were disambiguated as redundant parentheses around declaration of variable named \'a\' [-Wvexing-parse]","clang/test/Parser/cxx0x-condition.cpp:21:8: warning: parentheses were disambiguated as redundant parentheses around declaration of variable named \'n\' [-Wvexing-parse]"} | ["clang/test/Parser/cxx0x-condition.cpp"]={"clang/test/Parser/cxx0x-condition.cpp:17:8: warning: parentheses were disambiguated as redundant parentheses around declaration of variable named \'a\' [-Wvexing-parse]","clang/test/Parser/cxx0x-condition.cpp:21:8: warning: parentheses were disambiguated as redundant parentheses around declaration of variable named \'n\' [-Wvexing-parse]"} | ||
Line 3,171: | Line 3,171: | ||
[h]=q, | [h]=q, | ||
[i]={"2868a736f88e",1393551399,"Add a -Wclass-varargs to warn on objects of any class type being passed through an ellipsis. Since C...","Add a -Wclass-varargs to warn on objects of any class type being passed through an ellipsis. Since C++11 relaxed the rules on this, we allow a lot more bad code through silently, such as:"}, | [i]={"2868a736f88e",1393551399,"Add a -Wclass-varargs to warn on objects of any class type being passed through an ellipsis. Since C...","Add a -Wclass-varargs to warn on objects of any class type being passed through an ellipsis. Since C++11 relaxed the rules on this, we allow a lot more bad code through silently, such as:"}, | ||
[j]={{A,1005,"void Sema::checkVariadicArgument(const Expr *E, VariadicCallType CT) {\n case VAK_Valid:\n if (Ty->isRecordType()) {\n DiagRuntimeBehavior(E->getBeginLoc(), nullptr, PDiag(diag::warn_pass_class_arg_to_vararg) << Ty << CT << hasCStrMethod(E) << \".c_str()\");"}}, | [j]={{A,1005,"void Sema::checkVariadicArgument(const Expr *E, VariadicCallType CT) {\n // ...\n case VAK_Valid:\n if (Ty->isRecordType()) {\n // ...\n DiagRuntimeBehavior(E->getBeginLoc(), nullptr, PDiag(diag::warn_pass_class_arg_to_vararg) << Ty << CT << hasCStrMethod(E) << \".c_str()\");"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/vararg-class.cpp"]={"clang/test/SemaCXX/vararg-class.cpp:15:5: warning: passing object of class type \'A\' through variadic function [-Wclass-varargs]","clang/test/SemaCXX/vararg-class.cpp:17:5: warning: passing object of class type \'C\' through variadic function; did you mean to call \'.c_str()\'? [-Wclass-varargs]","clang/test/SemaCXX/vararg-class.cpp:18:5: warning: passing object of class type \'D\' through variadic function; did you mean to call \'.c_str()\'? [-Wclass-varargs]","clang/test/SemaCXX/vararg-class.cpp:19:5: warning: passing object of class type \'E\' through variadic function [-Wclass-varargs]","clang/test/SemaCXX/vararg-class.cpp:20:5: warning: passing object of class type \'F\' through variadic function; did you mean to call \'.c_str()\'? [-Wclass-varargs]"} | ["clang/test/SemaCXX/vararg-class.cpp"]={"clang/test/SemaCXX/vararg-class.cpp:15:5: warning: passing object of class type \'A\' through variadic function [-Wclass-varargs]","clang/test/SemaCXX/vararg-class.cpp:17:5: warning: passing object of class type \'C\' through variadic function; did you mean to call \'.c_str()\'? [-Wclass-varargs]","clang/test/SemaCXX/vararg-class.cpp:18:5: warning: passing object of class type \'D\' through variadic function; did you mean to call \'.c_str()\'? [-Wclass-varargs]","clang/test/SemaCXX/vararg-class.cpp:19:5: warning: passing object of class type \'E\' through variadic function [-Wclass-varargs]","clang/test/SemaCXX/vararg-class.cpp:20:5: warning: passing object of class type \'F\' through variadic function; did you mean to call \'.c_str()\'? [-Wclass-varargs]"} | ||
Line 3,189: | Line 3,189: | ||
[h]=q, | [h]=q, | ||
[i]={"ac3eca536d3d",1430272337,Dc,Dc}, | [i]={"ac3eca536d3d",1430272337,Dc,Dc}, | ||
[j]={{Bb,8407,"/// Provide warnings when std::move is used on construction.\nstatic void CheckMoveOnConstruction(Sema &S, const Expr *InitExpr, bool IsReturnStmt) {\n if (IsReturnStmt) {\n } else {\n DiagID = diag::warn_pessimizing_move_on_initialization;"}}, | [j]={{Bb,8407,"/// Provide warnings when std::move is used on construction.\nstatic void CheckMoveOnConstruction(Sema &S, const Expr *InitExpr, bool IsReturnStmt) {\n // ...\n if (IsReturnStmt) {\n // ...\n } else {\n DiagID = diag::warn_pessimizing_move_on_initialization;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-pessmizing-move.cpp"]={"clang/test/SemaCXX/warn-pessmizing-move.cpp:62:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:67:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:89:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:94:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:105:9: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:110:9: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:121:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:127:8: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:133:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:139:8: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:147:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:152:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:157:11: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:162:11: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]"} | ["clang/test/SemaCXX/warn-pessmizing-move.cpp"]={"clang/test/SemaCXX/warn-pessmizing-move.cpp:62:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:67:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:89:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:94:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:105:9: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:110:9: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:121:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:127:8: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:133:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:139:8: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:147:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:152:10: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:157:11: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:162:11: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]"} | ||
Line 3,207: | Line 3,207: | ||
[h]=q, | [h]=q, | ||
[i]={"ac3eca536d3d",1430272337,Dc,Dc}, | [i]={"ac3eca536d3d",1430272337,Dc,Dc}, | ||
[j]={{Bb,8405,"/// Provide warnings when std::move is used on construction.\nstatic void CheckMoveOnConstruction(Sema &S, const Expr *InitExpr, bool IsReturnStmt) {\n if (IsReturnStmt) {\n // If we\'re returning a function parameter, copy elision\n // is not possible.\n if (isa<ParmVarDecl>(VD))\n else\n DiagID = diag::warn_pessimizing_move_on_return;"}}, | [j]={{Bb,8405,"/// Provide warnings when std::move is used on construction.\nstatic void CheckMoveOnConstruction(Sema &S, const Expr *InitExpr, bool IsReturnStmt) {\n // ...\n if (IsReturnStmt) {\n // ...\n // If we\'re returning a function parameter, copy elision\n // is not possible.\n if (isa<ParmVarDecl>(VD))\n // ...\n else\n DiagID = diag::warn_pessimizing_move_on_return;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-pessmizing-move.cpp"]={"clang/test/SemaCXX/warn-pessmizing-move.cpp:35:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:54:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:168:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:173:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:178:11: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:183:11: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:197:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:202:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:207:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:221:1: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:230:3: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:243:12: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]"} | ["clang/test/SemaCXX/warn-pessmizing-move.cpp"]={"clang/test/SemaCXX/warn-pessmizing-move.cpp:35:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:54:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:168:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:173:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:178:11: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:183:11: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:197:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:202:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:207:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:221:1: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:230:3: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]","clang/test/SemaCXX/warn-pessmizing-move.cpp:243:12: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]"} | ||
Line 3,224: | Line 3,224: | ||
[h]=q, | [h]=q, | ||
[i]={"7f77eb90a54c",1447556674,"[Sema] Don\'t crash trying to diagnose abs called on a pointer type","[Sema] Don\'t crash trying to diagnose abs called on a pointer type"}, | [i]={"7f77eb90a54c",1447556674,"[Sema] Don\'t crash trying to diagnose abs called on a pointer type","[Sema] Don\'t crash trying to diagnose abs called on a pointer type"}, | ||
[j]={{x,12041,"// Warn when using the wrong abs() function.\nvoid Sema::CheckAbsoluteValueFunction(const CallExpr *Call, const FunctionDecl *FDecl) {\n // Taking the absolute value of a pointer is very suspicious, they probably\n // wanted to index into an array, dereference a pointer, call a function, etc.\n if (ArgType->isPointerType() || ArgType->canDecayToPointerType()) {\n Diag(Call->getExprLoc(), diag::warn_pointer_abs) << DiagType << ArgType;"}}, | [j]={{x,12041,"// Warn when using the wrong abs() function.\nvoid Sema::CheckAbsoluteValueFunction(const CallExpr *Call, const FunctionDecl *FDecl) {\n // ...\n // Taking the absolute value of a pointer is very suspicious, they probably\n // wanted to index into an array, dereference a pointer, call a function, etc.\n if (ArgType->isPointerType() || ArgType->canDecayToPointerType()) {\n // ...\n Diag(Call->getExprLoc(), diag::warn_pointer_abs) << DiagType << ArgType;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-absolute-value.c"]={"clang/test/Sema/warn-absolute-value.c:784:10: warning: taking the absolute value of array type \'long long[1]\' is suspicious [-Wabsolute-value]","clang/test/Sema/warn-absolute-value.c:788:10: warning: taking the absolute value of pointer type \'long long (*)(void)\' is suspicious [-Wabsolute-value]","clang/test/Sema/warn-absolute-value.c:792:10: warning: taking the absolute value of pointer type \'void *\' is suspicious [-Wabsolute-value]","clang/test/Sema/warn-absolute-value.c:796:10: warning: taking the absolute value of function type \'long long (void)\' is suspicious [-Wabsolute-value]"} | ["clang/test/Sema/warn-absolute-value.c"]={"clang/test/Sema/warn-absolute-value.c:784:10: warning: taking the absolute value of array type \'long long[1]\' is suspicious [-Wabsolute-value]","clang/test/Sema/warn-absolute-value.c:788:10: warning: taking the absolute value of pointer type \'long long (*)(void)\' is suspicious [-Wabsolute-value]","clang/test/Sema/warn-absolute-value.c:792:10: warning: taking the absolute value of pointer type \'void *\' is suspicious [-Wabsolute-value]","clang/test/Sema/warn-absolute-value.c:796:10: warning: taking the absolute value of function type \'long long (void)\' is suspicious [-Wabsolute-value]"} | ||
Line 3,242: | Line 3,242: | ||
[h]=q, | [h]=q, | ||
[i]={"3d0a540857ed",1505852800,"Teach clang to tolerate the \'p = nullptr + n\' idiom used by glibc","Teach clang to tolerate the \'p = nullptr + n\' idiom used by glibc"}, | [i]={"3d0a540857ed",1505852800,"Teach clang to tolerate the \'p = nullptr + n\' idiom used by glibc","Teach clang to tolerate the \'p = nullptr + n\' idiom used by glibc"}, | ||
[j]={{A,11473,"/// Diagnose invalid arithmetic on a null pointer.\n///\n/// If \\p IsGNUIdiom is true, the operation is using the \'p = (i8*)nullptr + n\'\n/// idiom, which we recognize as a GNU extension.\n///\nstatic void diagnoseArithmeticOnNullPointer(Sema &S, SourceLocation Loc, Expr *Pointer, bool IsGNUIdiom) {\n if (IsGNUIdiom)\n else\n S.Diag(Loc, diag::warn_pointer_arith_null_ptr) << S.getLangOpts().CPlusPlus << Pointer->getSourceRange();"}}, | [j]={{A,11473,"/// Diagnose invalid arithmetic on a null pointer.\n///\n/// If \\p IsGNUIdiom is true, the operation is using the \'p = (i8*)nullptr + n\'\n/// idiom, which we recognize as a GNU extension.\n///\nstatic void diagnoseArithmeticOnNullPointer(Sema &S, SourceLocation Loc, Expr *Pointer, bool IsGNUIdiom) {\n if (IsGNUIdiom)\n // ...\n else\n S.Diag(Loc, diag::warn_pointer_arith_null_ptr) << S.getLangOpts().CPlusPlus << Pointer->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/nullptr-arithmetic.cpp"]={"clang/test/SemaCXX/nullptr-arithmetic.cpp:16:16: warning: performing pointer arithmetic on a null pointer has undefined behavior if the offset is nonzero [-Wnull-pointer-arithmetic]","clang/test/SemaCXX/nullptr-arithmetic.cpp:17:15: warning: performing pointer arithmetic on a null pointer has undefined behavior if the offset is nonzero [-Wnull-pointer-arithmetic]"} | ["clang/test/SemaCXX/nullptr-arithmetic.cpp"]={"clang/test/SemaCXX/nullptr-arithmetic.cpp:16:16: warning: performing pointer arithmetic on a null pointer has undefined behavior if the offset is nonzero [-Wnull-pointer-arithmetic]","clang/test/SemaCXX/nullptr-arithmetic.cpp:17:15: warning: performing pointer arithmetic on a null pointer has undefined behavior if the offset is nonzero [-Wnull-pointer-arithmetic]"} | ||
Line 3,259: | Line 3,259: | ||
[h]=q, | [h]=q, | ||
[i]={"f708f0a2430f",1565043340,"[Sema] Add -Wpointer-compare","[Sema] Add -Wpointer-compare"}, | [i]={"f708f0a2430f",1565043340,"[Sema] Add -Wpointer-compare","[Sema] Add -Wpointer-compare"}, | ||
[j]={{A,12916,"void Sema::CheckPtrComparisonWithNullChar(ExprResult &E, ExprResult &NullE) {\n if (!E.get()->getType()->isAnyPointerType() && E.get()->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull) == Expr::NPCK_ZeroExpression) {\n if (const auto *CL = dyn_cast<CharacterLiteral>(E.get())) {\n if (CL->getValue() == 0)\n Diag(E.get()->getExprLoc(), diag::warn_pointer_compare) << NullValue << FixItHint::CreateReplacement(E.get()->getExprLoc(), NullValue ? \"NULL\" : \"(void *)0\");"},{A,13012,"void Sema::CheckPtrComparisonWithNullChar(ExprResult &E, ExprResult &NullE) {\n if (!E.get()->getType()->isAnyPointerType() && E.get()->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull) == Expr::NPCK_ZeroExpression) {\n if (const auto *CL = dyn_cast<CharacterLiteral>(E.get())) {\n } else if (const auto *CE = dyn_cast<CStyleCastExpr>(E.get())) {\n if (T == Context.CharTy)\n Diag(E.get()->getExprLoc(), diag::warn_pointer_compare) << NullValue << FixItHint::CreateReplacement(E.get()->getExprLoc(), NullValue ? \"NULL\" : \"(void *)0\");"}}, | [j]={{A,12916,"void Sema::CheckPtrComparisonWithNullChar(ExprResult &E, ExprResult &NullE) {\n // ...\n if (!E.get()->getType()->isAnyPointerType() && E.get()->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull) == Expr::NPCK_ZeroExpression) {\n if (const auto *CL = dyn_cast<CharacterLiteral>(E.get())) {\n if (CL->getValue() == 0)\n Diag(E.get()->getExprLoc(), diag::warn_pointer_compare) << NullValue << FixItHint::CreateReplacement(E.get()->getExprLoc(), NullValue ? \"NULL\" : \"(void *)0\");"},{A,13012,"void Sema::CheckPtrComparisonWithNullChar(ExprResult &E, ExprResult &NullE) {\n // ...\n if (!E.get()->getType()->isAnyPointerType() && E.get()->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull) == Expr::NPCK_ZeroExpression) {\n if (const auto *CL = dyn_cast<CharacterLiteral>(E.get())) {\n // ...\n } else if (const auto *CE = dyn_cast<CStyleCastExpr>(E.get())) {\n // ...\n if (T == Context.CharTy)\n Diag(E.get()->getExprLoc(), diag::warn_pointer_compare) << NullValue << FixItHint::CreateReplacement(E.get()->getExprLoc(), NullValue ? \"NULL\" : \"(void *)0\");"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-nullchar-nullptr.c"]={"clang/test/Sema/warn-nullchar-nullptr.c:4:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:8:10: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:12:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:16:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:20:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:24:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:29:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:34:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:39:15: warning: comparing a pointer to a null character constant; did you mean to compare to NULL? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:44:15: warning: comparing a pointer to a null character constant; did you mean to compare to NULL? [-Wpointer-compare]"} | ["clang/test/Sema/warn-nullchar-nullptr.c"]={"clang/test/Sema/warn-nullchar-nullptr.c:4:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:8:10: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:12:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:16:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:20:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:24:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:29:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:34:15: warning: comparing a pointer to a null character constant; did you mean to compare to (void *)0? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:39:15: warning: comparing a pointer to a null character constant; did you mean to compare to NULL? [-Wpointer-compare]","clang/test/Sema/warn-nullchar-nullptr.c:44:15: warning: comparing a pointer to a null character constant; did you mean to compare to NULL? [-Wpointer-compare]"} | ||
Line 3,295: | Line 3,295: | ||
[h]=q, | [h]=q, | ||
[i]={Xb,1615397021,qb,qb}, | [i]={Xb,1615397021,qb,qb}, | ||
[j]={{A,11484,"/// Diagnose invalid subraction on a null pointer.\n///\nstatic void diagnoseSubtractionOnNullPointer(Sema &S, SourceLocation Loc, Expr *Pointer, bool BothNull) {\n S.DiagRuntimeBehavior(Loc, Pointer, S.PDiag(diag::warn_pointer_sub_null_ptr) << S.getLangOpts().CPlusPlus << Pointer->getSourceRange());"}}, | [j]={{A,11484,"/// Diagnose invalid subraction on a null pointer.\n///\nstatic void diagnoseSubtractionOnNullPointer(Sema &S, SourceLocation Loc, Expr *Pointer, bool BothNull) {\n // ...\n S.DiagRuntimeBehavior(Loc, Pointer, S.PDiag(diag::warn_pointer_sub_null_ptr) << S.getLangOpts().CPlusPlus << Pointer->getSourceRange());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/pointer-subtraction.c"]={"clang/test/Sema/pointer-subtraction.c:10:26: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]","clang/test/Sema/pointer-subtraction.c:11:18: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]","clang/test/Sema/pointer-subtraction.c:12:26: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]","clang/test/Sema/pointer-subtraction.c:12:26: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]","clang/test/Sema/pointer-subtraction.c:15:28: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]","clang/test/Sema/pointer-subtraction.c:22:28: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]","clang/test/Sema/pointer-subtraction.c:27:3: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]"} | ["clang/test/Sema/pointer-subtraction.c"]={"clang/test/Sema/pointer-subtraction.c:10:26: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]","clang/test/Sema/pointer-subtraction.c:11:18: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]","clang/test/Sema/pointer-subtraction.c:12:26: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]","clang/test/Sema/pointer-subtraction.c:12:26: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]","clang/test/Sema/pointer-subtraction.c:15:28: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]","clang/test/Sema/pointer-subtraction.c:22:28: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]","clang/test/Sema/pointer-subtraction.c:27:3: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]"} | ||
Line 3,312: | Line 3,312: | ||
[h]=q, | [h]=q, | ||
[i]={rc,1576908663,xb,xb}, | [i]={rc,1576908663,xb,xb}, | ||
[j]={{Ob,3174,"/// Check the semantics of a C-style cast operation, in C.\nvoid CastOperation::CheckCStyleCast() {\n // If either type is a pointer, the other type has to be either an\n // integer or a pointer.\n if (!DestType->isArithmeticType()) {\n } else if (!SrcType->isArithmeticType()) {\n if ((Self.Context.getTypeSize(SrcType) > Self.Context.getTypeSize(DestType)) && !DestType->isBooleanType()) {\n if (SrcType->isVoidPointerType())\n else if (DestType->isEnumeralType())\n Diag = diag::warn_pointer_to_enum_cast;"}}, | [j]={{Ob,3174,"/// Check the semantics of a C-style cast operation, in C.\nvoid CastOperation::CheckCStyleCast() {\n // ...\n // If either type is a pointer, the other type has to be either an\n // integer or a pointer.\n if (!DestType->isArithmeticType()) {\n // ...\n } else if (!SrcType->isArithmeticType()) {\n // ...\n if ((Self.Context.getTypeSize(SrcType) > Self.Context.getTypeSize(DestType)) && !DestType->isBooleanType()) {\n // ...\n if (SrcType->isVoidPointerType())\n // ...\n else if (DestType->isEnumeralType())\n Diag = diag::warn_pointer_to_enum_cast;"}}, | ||
[p]={ | [p]={ | ||
[vd]={"clang/test/Sema/cast.c:205:9: warning: cast to smaller integer type \'X\' from \'CharPtr\' (aka \'char *\') [-Wpointer-to-enum-cast]","clang/test/Sema/cast.c:210:9: warning: cast to smaller integer type \'X\' from \'CharPtr\' (aka \'char *\') [-Wpointer-to-enum-cast]"} | [vd]={"clang/test/Sema/cast.c:205:9: warning: cast to smaller integer type \'X\' from \'CharPtr\' (aka \'char *\') [-Wpointer-to-enum-cast]","clang/test/Sema/cast.c:210:9: warning: cast to smaller integer type \'X\' from \'CharPtr\' (aka \'char *\') [-Wpointer-to-enum-cast]"} | ||
Line 3,329: | Line 3,329: | ||
[h]=q, | [h]=q, | ||
[i]={rc,1576908663,xb,xb}, | [i]={rc,1576908663,xb,xb}, | ||
[j]={{Ob,2468,"static TryCastResult TryReinterpretCast(Sema &Self, ExprResult &SrcExpr, QualType DestType, bool CStyle, SourceRange OpRange, unsigned &msg, CastKind &Kind) {\n if (DestType->isIntegralType(Self.Context)) {\n // C++ 5.2.10p4: A pointer can be explicitly converted to any integral\n // type large enough to hold it; except in Microsoft mode, where the\n // integral type size doesn\'t matter (except we don\'t allow bool).\n if ((Self.Context.getTypeSize(SrcType) > Self.Context.getTypeSize(DestType))) {\n if (MicrosoftException) {\n unsigned Diag = SrcType->isVoidPointerType() ? diag::warn_void_pointer_to_int_cast : diag::warn_pointer_to_int_cast;"},{Ob,3176,"/// Check the semantics of a C-style cast operation, in C.\nvoid CastOperation::CheckCStyleCast() {\n // If either type is a pointer, the other type has to be either an\n // integer or a pointer.\n if (!DestType->isArithmeticType()) {\n } else if (!SrcType->isArithmeticType()) {\n if ((Self.Context.getTypeSize(SrcType) > Self.Context.getTypeSize(DestType)) && !DestType->isBooleanType()) {\n if (SrcType->isVoidPointerType())\n else if (DestType->isEnumeralType())\n else\n Diag = diag::warn_pointer_to_int_cast;"}}, | [j]={{Ob,2468,"static TryCastResult TryReinterpretCast(Sema &Self, ExprResult &SrcExpr, QualType DestType, bool CStyle, SourceRange OpRange, unsigned &msg, CastKind &Kind) {\n // ...\n if (DestType->isIntegralType(Self.Context)) {\n // ...\n // C++ 5.2.10p4: A pointer can be explicitly converted to any integral\n // type large enough to hold it; except in Microsoft mode, where the\n // integral type size doesn\'t matter (except we don\'t allow bool).\n if ((Self.Context.getTypeSize(SrcType) > Self.Context.getTypeSize(DestType))) {\n // ...\n if (MicrosoftException) {\n unsigned Diag = SrcType->isVoidPointerType() ? diag::warn_void_pointer_to_int_cast : diag::warn_pointer_to_int_cast;"},{Ob,3176,"/// Check the semantics of a C-style cast operation, in C.\nvoid CastOperation::CheckCStyleCast() {\n // ...\n // If either type is a pointer, the other type has to be either an\n // integer or a pointer.\n if (!DestType->isArithmeticType()) {\n // ...\n } else if (!SrcType->isArithmeticType()) {\n // ...\n if ((Self.Context.getTypeSize(SrcType) > Self.Context.getTypeSize(DestType)) && !DestType->isBooleanType()) {\n // ...\n if (SrcType->isVoidPointerType())\n // ...\n else if (DestType->isEnumeralType())\n // ...\n else\n Diag = diag::warn_pointer_to_int_cast;"}}, | ||
[p]={ | [p]={ | ||
[vd]={"clang/test/Sema/cast.c:173:10: warning: cast to smaller integer type \'Int\' (aka \'int\') from \'CharPtr\' (aka \'char *\') [-Wpointer-to-int-cast]","clang/test/Sema/cast.c:181:9: warning: cast to smaller integer type \'Int\' (aka \'int\') from \'CharPtr\' (aka \'char *\') [-Wpointer-to-int-cast]"} | [vd]={"clang/test/Sema/cast.c:173:10: warning: cast to smaller integer type \'Int\' (aka \'int\') from \'CharPtr\' (aka \'char *\') [-Wpointer-to-int-cast]","clang/test/Sema/cast.c:181:9: warning: cast to smaller integer type \'Int\' (aka \'int\') from \'CharPtr\' (aka \'char *\') [-Wpointer-to-int-cast]"} | ||
Line 3,347: | Line 3,347: | ||
[h]=y, | [h]=y, | ||
[i]={"39f50da2a357",1568041174,"Support -fstack-clash-protection for x86","Support -fstack-clash-protection for x86"}, | [i]={"39f50da2a357",1568041174,"Support -fstack-clash-protection for x86","Support -fstack-clash-protection for x86"}, | ||
[j]={{"clang/lib/Lex/InitHeaderSearch.cpp",153,"bool InitHeaderSearch::AddUnmappedPath(const Twine &Path, IncludeDirGroup Group, bool isFramework, std::optional<unsigned> UserEntryIdx) {\n // If use system headers while cross-compiling, emit the warning.\n if (HasSysroot && (MappedPathStr.startswith(\"/usr/include\") || MappedPathStr.startswith(\"/usr/local/include\"))) {\n Headers.getDiags().Report(diag::warn_poison_system_directories) << MappedPathStr;"}}, | [j]={{"clang/lib/Lex/InitHeaderSearch.cpp",153,"bool InitHeaderSearch::AddUnmappedPath(const Twine &Path, IncludeDirGroup Group, bool isFramework, std::optional<unsigned> UserEntryIdx) {\n // ...\n // If use system headers while cross-compiling, emit the warning.\n if (HasSysroot && (MappedPathStr.startswith(\"/usr/include\") || MappedPathStr.startswith(\"/usr/local/include\"))) {\n Headers.getDiags().Report(diag::warn_poison_system_directories) << MappedPathStr;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Frontend/warning-poison-system-directories.c"]={"warning: include location \'/usr/include\' is unsafe for cross-compilation [-Wpoison-system-directories]"} | ["clang/test/Frontend/warning-poison-system-directories.c"]={"warning: include location \'/usr/include\' is unsafe for cross-compilation [-Wpoison-system-directories]"} | ||
Line 3,364: | Line 3,364: | ||
[h]=q, | [h]=q, | ||
[i]={Yb,1582847864,tb,tb}, | [i]={Yb,1582847864,tb,tb}, | ||
[j]={{cb,1334,"ExprResult Sema::ParseObjCSelectorExpression(Selector Sel, SourceLocation AtLoc, SourceLocation SelLoc, SourceLocation LParenLoc, SourceLocation RParenLoc, bool WarnMultipleSelectors) {\n if (!Method) {\n } else {\n if (onlyDirect) {\n } else if (anyDirect) {\n if (LikelyTargetMethod && LikelyTargetMethod->isDirectMethod()) {\n Diag(AtLoc, diag::warn_potentially_direct_selector_expression) << Sel;"}}, | [j]={{cb,1334,"ExprResult Sema::ParseObjCSelectorExpression(Selector Sel, SourceLocation AtLoc, SourceLocation SelLoc, SourceLocation LParenLoc, SourceLocation RParenLoc, bool WarnMultipleSelectors) {\n // ...\n if (!Method) {\n // ...\n } else {\n // ...\n if (onlyDirect) {\n // ...\n } else if (anyDirect) {\n // ...\n if (LikelyTargetMethod && LikelyTargetMethod->isDirectMethod()) {\n Diag(AtLoc, diag::warn_potentially_direct_selector_expression) << Sel;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/potentially-direct-selector.m"]={"clang/test/SemaObjC/potentially-direct-selector.m:68:9: warning: @selector expression formed with potentially direct selector \'inBase\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:69:9: warning: @selector expression formed with potentially direct selector \'inBaseImpl\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:70:9: warning: @selector expression formed with potentially direct selector \'inBaseCat\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:71:9: warning: @selector expression formed with potentially direct selector \'inBaseCatImpl\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:72:9: warning: @selector expression formed with potentially direct selector \'inDerived\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:73:9: warning: @selector expression formed with potentially direct selector \'inDerivedImpl\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:74:9: warning: @selector expression formed with potentially direct selector \'inDerivedCat\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:75:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatImpl\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:76:9: warning: @selector expression formed with potentially direct selector \'inDerivedClass\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:77:9: warning: @selector expression formed with potentially direct selector \'inBaseClass\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:78:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatClass\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:99:9: warning: @selector expression formed with potentially direct selector \'inBase\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:100:9: warning: @selector expression formed with potentially direct selector \'inBaseImpl\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:101:9: warning: @selector expression formed with potentially direct selector \'inBaseCat\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:102:9: warning: @selector expression formed with potentially direct selector \'inBaseCatImpl\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:108:9: warning: @selector expression formed with potentially direct selector \'inBaseClass\' [-Wpotentially-direct-selector]"} | ["clang/test/SemaObjC/potentially-direct-selector.m"]={"clang/test/SemaObjC/potentially-direct-selector.m:68:9: warning: @selector expression formed with potentially direct selector \'inBase\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:69:9: warning: @selector expression formed with potentially direct selector \'inBaseImpl\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:70:9: warning: @selector expression formed with potentially direct selector \'inBaseCat\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:71:9: warning: @selector expression formed with potentially direct selector \'inBaseCatImpl\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:72:9: warning: @selector expression formed with potentially direct selector \'inDerived\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:73:9: warning: @selector expression formed with potentially direct selector \'inDerivedImpl\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:74:9: warning: @selector expression formed with potentially direct selector \'inDerivedCat\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:75:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatImpl\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:76:9: warning: @selector expression formed with potentially direct selector \'inDerivedClass\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:77:9: warning: @selector expression formed with potentially direct selector \'inBaseClass\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:78:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatClass\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:99:9: warning: @selector expression formed with potentially direct selector \'inBase\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:100:9: warning: @selector expression formed with potentially direct selector \'inBaseImpl\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:101:9: warning: @selector expression formed with potentially direct selector \'inBaseCat\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:102:9: warning: @selector expression formed with potentially direct selector \'inBaseCatImpl\' [-Wpotentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:108:9: warning: @selector expression formed with potentially direct selector \'inBaseClass\' [-Wpotentially-direct-selector]"} | ||
Line 3,381: | Line 3,381: | ||
[h]=D, | [h]=D, | ||
[i]={"5968b1b71f88",1349989659,"Diagnose the expansion of ambiguous macro definitions. This can happen","Diagnose the expansion of ambiguous macro definitions. This can happen"}, | [i]={"5968b1b71f88",1349989659,"Diagnose the expansion of ambiguous macro definitions. This can happen","Diagnose the expansion of ambiguous macro definitions. This can happen"}, | ||
[j]={{"clang/lib/Lex/PPMacroExpansion.cpp",559,"/// HandleMacroExpandedIdentifier - If an identifier token is read that is to be\n/// expanded as a macro, handle it and return the next token as \'Identifier\'.\nbool Preprocessor::HandleMacroExpandedIdentifier(Token &Identifier, const MacroDefinition &M) {\n // If the macro definition is ambiguous, complain.\n if (M.isAmbiguous()) {\n Diag(Identifier, diag::warn_pp_ambiguous_macro) << Identifier.getIdentifierInfo();"}}, | [j]={{"clang/lib/Lex/PPMacroExpansion.cpp",559,"/// HandleMacroExpandedIdentifier - If an identifier token is read that is to be\n/// expanded as a macro, handle it and return the next token as \'Identifier\'.\nbool Preprocessor::HandleMacroExpandedIdentifier(Token &Identifier, const MacroDefinition &M) {\n // ...\n // If the macro definition is ambiguous, complain.\n if (M.isAmbiguous()) {\n Diag(Identifier, diag::warn_pp_ambiguous_macro) << Identifier.getIdentifierInfo();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Modules/macros2.c"]={"clang/test/Modules/macros2.c:14:1: warning: ambiguous expansion of macro \'TOP_OTHER_DEF_RIGHT_UNDEF\' [-Wambiguous-macro]","clang/test/Modules/macros2.c:37:3: warning: ambiguous expansion of macro \'LEFT_RIGHT_DIFFERENT\' [-Wambiguous-macro]","clang/test/Modules/macros2.c:40:3: warning: ambiguous expansion of macro \'LEFT_RIGHT_DIFFERENT2\' [-Wambiguous-macro]","clang/test/Modules/macros2.c:71:10: warning: ambiguous expansion of macro \'TOP_OTHER_REDEF1\' [-Wambiguous-macro]"} | ["clang/test/Modules/macros2.c"]={"clang/test/Modules/macros2.c:14:1: warning: ambiguous expansion of macro \'TOP_OTHER_DEF_RIGHT_UNDEF\' [-Wambiguous-macro]","clang/test/Modules/macros2.c:37:3: warning: ambiguous expansion of macro \'LEFT_RIGHT_DIFFERENT\' [-Wambiguous-macro]","clang/test/Modules/macros2.c:40:3: warning: ambiguous expansion of macro \'LEFT_RIGHT_DIFFERENT2\' [-Wambiguous-macro]","clang/test/Modules/macros2.c:71:10: warning: ambiguous expansion of macro \'TOP_OTHER_REDEF1\' [-Wambiguous-macro]"} | ||
Line 3,396: | Line 3,396: | ||
[h]=D, | [h]=D, | ||
[i]={"7f5ff2175f68",1447466995,"Use %select to merge similar diagnostics. NFC","Use %select to merge similar diagnostics. NFC"}, | [i]={"7f5ff2175f68",1447466995,"Use %select to merge similar diagnostics. NFC","Use %select to merge similar diagnostics. NFC"}, | ||
[j]={{qc,688,"/// EvaluateDirectiveSubExpr - Evaluate the subexpression whose first token is\n/// PeekTok, and whose precedence is PeekPrec. This returns the result in LHS.\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, such as division by zero warnings.\nstatic bool EvaluateDirectiveSubExpr(PPValue &LHS, unsigned MinPrec, Token &PeekTok, bool ValueLive, bool &IncludedUndefinedIds, Preprocessor &PP) {\n while (true) {\n default:\n // If this just promoted something from signed to unsigned, and if the\n // value was negative, warn about it.\n if (ValueLive && Res.isUnsigned()) {\n if (!LHS.isUnsigned() && LHS.Val.isNegative())\n PP.Diag(OpLoc, diag::warn_pp_convert_to_positive) << 0 << toString(LHS.Val, 10, true) + \" to \" + toString(LHS.Val, 10, false) << LHS.getRange() << RHS.getRange();"},{qc,693,"/// EvaluateDirectiveSubExpr - Evaluate the subexpression whose first token is\n/// PeekTok, and whose precedence is PeekPrec. This returns the result in LHS.\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, such as division by zero warnings.\nstatic bool EvaluateDirectiveSubExpr(PPValue &LHS, unsigned MinPrec, Token &PeekTok, bool ValueLive, bool &IncludedUndefinedIds, Preprocessor &PP) {\n while (true) {\n default:\n // If this just promoted something from signed to unsigned, and if the\n // value was negative, warn about it.\n if (ValueLive && Res.isUnsigned()) {\n if (!RHS.isUnsigned() && RHS.Val.isNegative())\n PP.Diag(OpLoc, diag::warn_pp_convert_to_positive) << 1 << toString(RHS.Val, 10, true) + \" to \" + toString(RHS.Val, 10, false) << LHS.getRange() << RHS.getRange();"}}, | [j]={{qc,688,"/// EvaluateDirectiveSubExpr - Evaluate the subexpression whose first token is\n/// PeekTok, and whose precedence is PeekPrec. This returns the result in LHS.\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, such as division by zero warnings.\nstatic bool EvaluateDirectiveSubExpr(PPValue &LHS, unsigned MinPrec, Token &PeekTok, bool ValueLive, bool &IncludedUndefinedIds, Preprocessor &PP) {\n // ...\n while (true) {\n // ...\n default:\n // ...\n // If this just promoted something from signed to unsigned, and if the\n // value was negative, warn about it.\n if (ValueLive && Res.isUnsigned()) {\n if (!LHS.isUnsigned() && LHS.Val.isNegative())\n PP.Diag(OpLoc, diag::warn_pp_convert_to_positive) << 0 << toString(LHS.Val, 10, true) + \" to \" + toString(LHS.Val, 10, false) << LHS.getRange() << RHS.getRange();"},{qc,693,"/// EvaluateDirectiveSubExpr - Evaluate the subexpression whose first token is\n/// PeekTok, and whose precedence is PeekPrec. This returns the result in LHS.\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, such as division by zero warnings.\nstatic bool EvaluateDirectiveSubExpr(PPValue &LHS, unsigned MinPrec, Token &PeekTok, bool ValueLive, bool &IncludedUndefinedIds, Preprocessor &PP) {\n // ...\n while (true) {\n // ...\n default:\n // ...\n // If this just promoted something from signed to unsigned, and if the\n // value was negative, warn about it.\n if (ValueLive && Res.isUnsigned()) {\n // ...\n if (!RHS.isUnsigned() && RHS.Val.isNegative())\n PP.Diag(OpLoc, diag::warn_pp_convert_to_positive) << 1 << toString(RHS.Val, 10, true) + \" to \" + toString(RHS.Val, 10, false) << LHS.getRange() << RHS.getRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/overflow.c"]={"clang/test/Preprocessor/overflow.c:24:23: warning: right side of operator converted from negative value to unsigned: -1 to 18446744073709551615"} | ["clang/test/Preprocessor/overflow.c"]={"clang/test/Preprocessor/overflow.c:24:23: warning: right side of operator converted from negative value to unsigned: -1 to 18446744073709551615"} | ||
Line 3,414: | Line 3,414: | ||
[h]=D, | [h]=D, | ||
[i]={"4f43e554081e",1402380531,"Implement -Wdate-time preprocessor warning","Implement -Wdate-time preprocessor warning"}, | [i]={"4f43e554081e",1402380531,"Implement -Wdate-time preprocessor warning","Implement -Wdate-time preprocessor warning"}, | ||
[j]={{"clang/lib/Lex/PPMacroExpansion.cpp",1573,"/// 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 Diag(Tok.getLocation(), diag::warn_pp_date_time);"},{"clang/lib/Lex/PPMacroExpansion.cpp",1583,"/// 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 Diag(Tok.getLocation(), diag::warn_pp_date_time);"},{"clang/lib/Lex/PPMacroExpansion.cpp",1608,"/// 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 Diag(Tok.getLocation(), diag::warn_pp_date_time);"}}, | [j]={{"clang/lib/Lex/PPMacroExpansion.cpp",1573,"/// 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 // ...\n if (II == Ident__LINE__) {\n // ...\n } else if (II == Ident__FILE__ || II == Ident__BASE_FILE__ || II == Ident__FILE_NAME__) {\n // ...\n } else if (II == Ident__DATE__) {\n Diag(Tok.getLocation(), diag::warn_pp_date_time);"},{"clang/lib/Lex/PPMacroExpansion.cpp",1583,"/// 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 // ...\n if (II == Ident__LINE__) {\n // ...\n } else if (II == Ident__FILE__ || II == Ident__BASE_FILE__ || II == Ident__FILE_NAME__) {\n // ...\n } else if (II == Ident__DATE__) {\n // ...\n } else if (II == Ident__TIME__) {\n Diag(Tok.getLocation(), diag::warn_pp_date_time);"},{"clang/lib/Lex/PPMacroExpansion.cpp",1608,"/// 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 // ...\n if (II == Ident__LINE__) {\n // ...\n } else if (II == Ident__FILE__ || II == Ident__BASE_FILE__ || II == Ident__FILE_NAME__) {\n // ...\n } else if (II == Ident__DATE__) {\n // ...\n } else if (II == Ident__TIME__) {\n // ...\n } else if (II == Ident__INCLUDE_LEVEL__) {\n // ...\n } else if (II == Ident__TIMESTAMP__) {\n Diag(Tok.getLocation(), diag::warn_pp_date_time);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/SOURCE_DATE_EPOCH.c"]={"clang/test/Preprocessor/SOURCE_DATE_EPOCH.c:30:21: warning: expansion of date or time macro is not reproducible [-Wdate-time]","clang/test/Preprocessor/SOURCE_DATE_EPOCH.c:31:21: warning: expansion of date or time macro is not reproducible [-Wdate-time]","clang/test/Preprocessor/SOURCE_DATE_EPOCH.c:32:26: warning: expansion of date or time macro is not reproducible [-Wdate-time]"} | ["clang/test/Preprocessor/SOURCE_DATE_EPOCH.c"]={"clang/test/Preprocessor/SOURCE_DATE_EPOCH.c:30:21: warning: expansion of date or time macro is not reproducible [-Wdate-time]","clang/test/Preprocessor/SOURCE_DATE_EPOCH.c:31:21: warning: expansion of date or time macro is not reproducible [-Wdate-time]","clang/test/Preprocessor/SOURCE_DATE_EPOCH.c:32:26: warning: expansion of date or time macro is not reproducible [-Wdate-time]"} | ||
Line 3,429: | Line 3,429: | ||
[h]=D, | [h]=D, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{qc,493,"/// 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::minus: {\n // If this operator is live and overflowed, report the issue.\n if (Overflow && ValueLive)\n PP.Diag(Loc, diag::warn_pp_expr_overflow) << Result.getRange();"},{qc,858,"/// EvaluateDirectiveSubExpr - Evaluate the subexpression whose first token is\n/// PeekTok, and whose precedence is PeekPrec. This returns the result in LHS.\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, such as division by zero warnings.\nstatic bool EvaluateDirectiveSubExpr(PPValue &LHS, unsigned MinPrec, Token &PeekTok, bool ValueLive, bool &IncludedUndefinedIds, Preprocessor &PP) {\n while (true) {\n // If this operator is live and overflowed, report the issue.\n if (Overflow && ValueLive)\n PP.Diag(OpLoc, diag::warn_pp_expr_overflow) << LHS.getRange() << RHS.getRange();"}}, | [j]={{qc,493,"/// 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 // ...\n case tok::minus: {\n // ...\n // If this operator is live and overflowed, report the issue.\n if (Overflow && ValueLive)\n PP.Diag(Loc, diag::warn_pp_expr_overflow) << Result.getRange();"},{qc,858,"/// EvaluateDirectiveSubExpr - Evaluate the subexpression whose first token is\n/// PeekTok, and whose precedence is PeekPrec. This returns the result in LHS.\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, such as division by zero warnings.\nstatic bool EvaluateDirectiveSubExpr(PPValue &LHS, unsigned MinPrec, Token &PeekTok, bool ValueLive, bool &IncludedUndefinedIds, Preprocessor &PP) {\n // ...\n while (true) {\n // ...\n // If this operator is live and overflowed, report the issue.\n if (Overflow && ValueLive)\n PP.Diag(OpLoc, diag::warn_pp_expr_overflow) << LHS.getRange() << RHS.getRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/overflow.c"]={"clang/test/Preprocessor/overflow.c:4:23: warning: integer overflow in preprocessor expression","clang/test/Preprocessor/overflow.c:12:23: warning: integer overflow in preprocessor expression","clang/test/Preprocessor/overflow.c:20:23: warning: integer overflow in preprocessor expression"} | ["clang/test/Preprocessor/overflow.c"]={"clang/test/Preprocessor/overflow.c:4:23: warning: integer overflow in preprocessor expression","clang/test/Preprocessor/overflow.c:12:23: warning: integer overflow in preprocessor expression","clang/test/Preprocessor/overflow.c:20:23: warning: integer overflow in preprocessor expression"} | ||
Line 3,446: | Line 3,446: | ||
[h]=D, | [h]=D, | ||
[i]={"58df1affedc0",1536685844,"[clang-cl, PCH] Support for /Yc and /Yu without filename and #pragma hdrstop","[clang-cl, PCH] Support for /Yc and /Yu without filename and #pragma hdrstop"}, | [i]={"58df1affedc0",1536685844,"[clang-cl, PCH] Support for /Yc and /Yu without filename and #pragma hdrstop","[clang-cl, PCH] Support for /Yc and /Yu without filename and #pragma hdrstop"}, | ||
[j]={{I,885,"void Preprocessor::HandlePragmaHdrstop(Token &Tok) {\n if (Tok.is(tok::l_paren)) {\n Diag(Tok.getLocation(), diag::warn_pp_hdrstop_filename_ignored);"}}, | [j]={{I,885,"void Preprocessor::HandlePragmaHdrstop(Token &Tok) {\n // ...\n if (Tok.is(tok::l_paren)) {\n Diag(Tok.getLocation(), diag::warn_pp_hdrstop_filename_ignored);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/PCH/pch-hdrstop-warn.cpp"]={"clang/test/PCH/pch-hdrstop-warn.cpp:10:16: warning: #pragma hdrstop filename not supported, /Fp can be used to specify precompiled header filename [-Wclang-cl-pch]"} | ["clang/test/PCH/pch-hdrstop-warn.cpp"]={"clang/test/PCH/pch-hdrstop-warn.cpp:10:16: warning: #pragma hdrstop filename not supported, /Fp can be used to specify precompiled header filename [-Wclang-cl-pch]"} | ||
Line 3,463: | Line 3,463: | ||
[h]=D, | [h]=D, | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{Cc,465,"void Preprocessor::SuggestTypoedDirective(const Token &Tok, StringRef Directive) const {\n if (std::optional<StringRef> Sugg = findSimilarStr(Directive, Candidates)) {\n Diag(Tok, diag::warn_pp_invalid_directive) << 1 << SuggValue << Hint;"}}, | [j]={{Cc,465,"void Preprocessor::SuggestTypoedDirective(const Token &Tok, StringRef Directive) const {\n // ...\n if (std::optional<StringRef> Sugg = findSimilarStr(Directive, Candidates)) {\n // ...\n Diag(Tok, diag::warn_pp_invalid_directive) << 1 << SuggValue << Hint;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/suggest-typoed-directive.c"]={"clang/test/Preprocessor/suggest-typoed-directive.c:18:2: warning: invalid preprocessing directive, did you mean \'#if\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:19:2: warning: invalid preprocessing directive, did you mean \'#if\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:20:2: warning: invalid preprocessing directive, did you mean \'#ifdef\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:21:3: warning: invalid preprocessing directive, did you mean \'#elif\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:22:4: warning: invalid preprocessing directive, did you mean \'#elif\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:23:2: warning: invalid preprocessing directive, did you mean \'#elif\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:24:2: warning: invalid preprocessing directive, did you mean \'#elifdef\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:25:2: warning: invalid preprocessing directive, did you mean \'#elifdef\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:26:2: warning: invalid preprocessing directive, did you mean \'#elifndef\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:27:2: warning: invalid preprocessing directive, did you mean \'#else\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:28:2: warning: invalid preprocessing directive, did you mean \'#endif\'? [-Wunknown-directives]"} | ["clang/test/Preprocessor/suggest-typoed-directive.c"]={"clang/test/Preprocessor/suggest-typoed-directive.c:18:2: warning: invalid preprocessing directive, did you mean \'#if\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:19:2: warning: invalid preprocessing directive, did you mean \'#if\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:20:2: warning: invalid preprocessing directive, did you mean \'#ifdef\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:21:3: warning: invalid preprocessing directive, did you mean \'#elif\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:22:4: warning: invalid preprocessing directive, did you mean \'#elif\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:23:2: warning: invalid preprocessing directive, did you mean \'#elif\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:24:2: warning: invalid preprocessing directive, did you mean \'#elifdef\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:25:2: warning: invalid preprocessing directive, did you mean \'#elifdef\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:26:2: warning: invalid preprocessing directive, did you mean \'#elifndef\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:27:2: warning: invalid preprocessing directive, did you mean \'#else\'? [-Wunknown-directives]","clang/test/Preprocessor/suggest-typoed-directive.c:28:2: warning: invalid preprocessing directive, did you mean \'#endif\'? [-Wunknown-directives]"} | ||
Line 3,478: | Line 3,478: | ||
[h]=D, | [h]=D, | ||
[i]={"ca556cb3e365",1240011469,"implement PR3940: #line numbers not fully checked","implement PR3940: #line numbers not fully checked"}, | [i]={"ca556cb3e365",1240011469,"implement PR3940: #line numbers not fully checked","implement PR3940: #line numbers not fully checked"}, | ||
[j]={{Cc,1390,"/// GetLineValue - Convert a numeric token into an unsigned value, emitting\n/// Diagnostic DiagID if it is invalid, and returning the value in Val.\nstatic bool GetLineValue(Token &DigitTok, unsigned &Val, unsigned DiagID, Preprocessor &PP, bool IsGNULineDirective = false) {\n if (DigitTokBegin[0] == \'0\' && Val)\n PP.Diag(DigitTok.getLocation(), diag::warn_pp_line_decimal) << IsGNULineDirective;"}}, | [j]={{Cc,1390,"/// GetLineValue - Convert a numeric token into an unsigned value, emitting\n/// Diagnostic DiagID if it is invalid, and returning the value in Val.\nstatic bool GetLineValue(Token &DigitTok, unsigned &Val, unsigned DiagID, Preprocessor &PP, bool IsGNULineDirective = false) {\n // ...\n if (DigitTokBegin[0] == \'0\' && Val)\n PP.Diag(DigitTok.getLocation(), diag::warn_pp_line_decimal) << IsGNULineDirective;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/line-directive.c"]={"foo.c:10:7: warning: #line directive interprets number as decimal, not octal","foo.c:12:3: warning: GNU line marker directive interprets number as decimal, not octal"} | ["clang/test/Preprocessor/line-directive.c"]={"foo.c:10:7: warning: #line directive interprets number as decimal, not octal","foo.c:12:3: warning: GNU line marker directive interprets number as decimal, not octal"} | ||
Line 3,495: | Line 3,495: | ||
[h]=D, | [h]=D, | ||
[i]={"76675de15cfc",1530811333,"[clang-cl, PCH] Implement support for MS-style PCH through headers","[clang-cl, PCH] Implement support for MS-style PCH through headers"}, | [i]={"76675de15cfc",1530811333,"[clang-cl, PCH] Implement support for MS-style PCH through headers","[clang-cl, PCH] Implement support for MS-style PCH through headers"}, | ||
[j]={{Cc,3090,"/// HandleDefineDirective - Implements \\#define. This consumes the entire macro\n/// line then lets the caller lex the next real token.\nvoid Preprocessor::HandleDefineDirective(Token &DefineTok, const bool ImmediatelyAfterHeaderGuard) {\n // When skipping just warn about macros that do not match.\n if (SkippingUntilPCHThroughHeader) {\n if (!OtherMI || !MI->isIdenticalTo(*OtherMI, *this,\n Diag(MI->getDefinitionLoc(), diag::warn_pp_macro_def_mismatch_with_pch) << MacroNameTok.getIdentifierInfo();"}} | [j]={{Cc,3090,"/// HandleDefineDirective - Implements \\#define. This consumes the entire macro\n/// line then lets the caller lex the next real token.\nvoid Preprocessor::HandleDefineDirective(Token &DefineTok, const bool ImmediatelyAfterHeaderGuard) {\n // ...\n // When skipping just warn about macros that do not match.\n if (SkippingUntilPCHThroughHeader) {\n // ...\n if (!OtherMI || !MI->isIdenticalTo(*OtherMI, *this,\n // ...\n Diag(MI->getDefinitionLoc(), diag::warn_pp_macro_def_mismatch_with_pch) << MacroNameTok.getIdentifierInfo();"}} | ||
}, | }, | ||
["warn_pp_macro_hides_keyword"]={ | ["warn_pp_macro_hides_keyword"]={ | ||
Line 3,510: | Line 3,510: | ||
[h]=D, | [h]=D, | ||
[i]={"1ecb41c09b7d",1417518369,"Emit warning if define or undef reserved identifier or keyword.","Emit warning if define or undef reserved identifier or keyword."}, | [i]={"1ecb41c09b7d",1417518369,"Emit warning if define or undef reserved identifier or keyword.","Emit warning if define or undef reserved identifier or keyword."}, | ||
[j]={{Cc,3069,"/// HandleDefineDirective - Implements \\#define. This consumes the entire macro\n/// line then lets the caller lex the next real token.\nvoid Preprocessor::HandleDefineDirective(Token &DefineTok, const bool ImmediatelyAfterHeaderGuard) {\n if (MacroShadowsKeyword && !isConfigurationPattern(MacroNameTok, MI, getLangOpts())) {\n Diag(MacroNameTok, diag::warn_pp_macro_hides_keyword);"}}, | [j]={{Cc,3069,"/// HandleDefineDirective - Implements \\#define. This consumes the entire macro\n/// line then lets the caller lex the next real token.\nvoid Preprocessor::HandleDefineDirective(Token &DefineTok, const bool ImmediatelyAfterHeaderGuard) {\n // ...\n if (MacroShadowsKeyword && !isConfigurationPattern(MacroNameTok, MI, getLangOpts())) {\n Diag(MacroNameTok, diag::warn_pp_macro_hides_keyword);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/macro-reserved.c"]={"clang/test/Preprocessor/macro-reserved.c:3:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:44:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:46:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:48:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:50:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:53:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:55:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:60:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]"} | ["clang/test/Preprocessor/macro-reserved.c"]={"clang/test/Preprocessor/macro-reserved.c:3:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:44:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:46:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:48:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:50:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:53:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:55:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]","clang/test/Preprocessor/macro-reserved.c:60:9: warning: keyword is hidden by macro definition [-Wkeyword-macro]"} | ||
Line 3,528: | Line 3,528: | ||
[h]=D, | [h]=D, | ||
[i]={"1ecb41c09b7d",1417518369,"Emit warning if define or undef reserved identifier or keyword.","Emit warning if define or undef reserved identifier or keyword."}, | [i]={"1ecb41c09b7d",1417518369,"Emit warning if define or undef reserved identifier or keyword.","Emit warning if define or undef reserved identifier or keyword."}, | ||
[j]={{Cc,368,"bool Preprocessor::CheckMacroName(Token &MacroNameTok, MacroUse isDefineUndef, bool *ShadowFlag) {\n if (!SourceMgr.isInSystemHeader(MacroNameLoc) && (SourceMgr.getBufferName(MacroNameLoc) != \"<built-in>\")) {\n if (D == MD_ReservedMacro)\n Diag(MacroNameTok, diag::warn_pp_macro_is_reserved_id);"}}, | [j]={{Cc,368,"bool Preprocessor::CheckMacroName(Token &MacroNameTok, MacroUse isDefineUndef, bool *ShadowFlag) {\n // ...\n if (!SourceMgr.isInSystemHeader(MacroNameLoc) && (SourceMgr.getBufferName(MacroNameLoc) != \"<built-in>\")) {\n // ...\n if (D == MD_ReservedMacro)\n Diag(MacroNameTok, diag::warn_pp_macro_is_reserved_id);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/macro-reserved.c"]={"clang/test/Preprocessor/macro-reserved.c:62:9: warning: macro name is a reserved identifier [-Wreserved-macro-identifier]","clang/test/Preprocessor/macro-reserved.c:63:9: warning: macro name is a reserved identifier [-Wreserved-macro-identifier]","clang/test/Preprocessor/macro-reserved.c:64:9: warning: macro name is a reserved identifier [-Wreserved-macro-identifier]","clang/test/Preprocessor/macro-reserved.c:69:8: warning: macro name is a reserved identifier [-Wreserved-macro-identifier]","clang/test/Preprocessor/macro-reserved.c:70:8: warning: macro name is a reserved identifier [-Wreserved-macro-identifier]"} | ["clang/test/Preprocessor/macro-reserved.c"]={"clang/test/Preprocessor/macro-reserved.c:62:9: warning: macro name is a reserved identifier [-Wreserved-macro-identifier]","clang/test/Preprocessor/macro-reserved.c:63:9: warning: macro name is a reserved identifier [-Wreserved-macro-identifier]","clang/test/Preprocessor/macro-reserved.c:64:9: warning: macro name is a reserved identifier [-Wreserved-macro-identifier]","clang/test/Preprocessor/macro-reserved.c:69:8: warning: macro name is a reserved identifier [-Wreserved-macro-identifier]","clang/test/Preprocessor/macro-reserved.c:70:8: warning: macro name is a reserved identifier [-Wreserved-macro-identifier]"} | ||
Line 3,545: | Line 3,545: | ||
[h]=D, | [h]=D, | ||
[i]={"83760378617d",1449790261,"In Objective-C, ignore attempts to redefine the ARC/GC qualifier macros.","In Objective-C, ignore attempts to redefine the ARC/GC qualifier macros."}, | [i]={"83760378617d",1449790261,"In Objective-C, ignore attempts to redefine the ARC/GC qualifier macros.","In Objective-C, ignore attempts to redefine the ARC/GC qualifier macros."}, | ||
[j]={{Cc,3118,"/// HandleDefineDirective - Implements \\#define. This consumes the entire macro\n/// line then lets the caller lex the next real token.\nvoid Preprocessor::HandleDefineDirective(Token &DefineTok, const bool ImmediatelyAfterHeaderGuard) {\n // Finally, if this identifier already had a macro defined for it, verify that\n // the macro bodies are identical, and issue diagnostics if they are not.\n if (const MacroInfo *OtherMI = getMacroInfo(MacroNameTok.getIdentifierInfo())) {\n // In Objective-C, ignore attempts to directly redefine the builtin\n // definitions of the ownership qualifiers. It\'s still possible to\n // #undef them.\n if (getLangOpts().ObjC && SourceMgr.getFileID(OtherMI->getDefinitionLoc()) == getPredefinesFileID() && isObjCProtectedMacro(MacroNameTok.getIdentifierInfo())) {\n // Warn if it changes the tokens.\n if ((!getDiagnostics().getSuppressSystemWarnings() || !SourceMgr.isInSystemHeader(DefineTok.getLocation())) && !MI->isIdenticalTo(*OtherMI, *this,\n Diag(MI->getDefinitionLoc(), diag::warn_pp_objc_macro_redef_ignored);"}}, | [j]={{Cc,3118,"/// HandleDefineDirective - Implements \\#define. This consumes the entire macro\n/// line then lets the caller lex the next real token.\nvoid Preprocessor::HandleDefineDirective(Token &DefineTok, const bool ImmediatelyAfterHeaderGuard) {\n // ...\n // Finally, if this identifier already had a macro defined for it, verify that\n // the macro bodies are identical, and issue diagnostics if they are not.\n if (const MacroInfo *OtherMI = getMacroInfo(MacroNameTok.getIdentifierInfo())) {\n // ...\n // In Objective-C, ignore attempts to directly redefine the builtin\n // definitions of the ownership qualifiers. It\'s still possible to\n // #undef them.\n if (getLangOpts().ObjC && SourceMgr.getFileID(OtherMI->getDefinitionLoc()) == getPredefinesFileID() && isObjCProtectedMacro(MacroNameTok.getIdentifierInfo())) {\n // Warn if it changes the tokens.\n if ((!getDiagnostics().getSuppressSystemWarnings() || !SourceMgr.isInSystemHeader(DefineTok.getLocation())) && !MI->isIdenticalTo(*OtherMI, *this,\n // ...\n Diag(MI->getDefinitionLoc(), diag::warn_pp_objc_macro_redef_ignored);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Lexer/objc_macros.m"]={"clang/test/Lexer/objc_macros.m:3:9: warning: ignoring redefinition of Objective-C qualifier macro [-Wobjc-macro-redefinition]","clang/test/Lexer/objc_macros.m:5:9: warning: ignoring redefinition of Objective-C qualifier macro [-Wobjc-macro-redefinition]","clang/test/Lexer/objc_macros.m:7:9: warning: ignoring redefinition of Objective-C qualifier macro [-Wobjc-macro-redefinition]","clang/test/Lexer/objc_macros.m:3:9: warning: ignoring redefinition of Objective-C qualifier macro [-Wobjc-macro-redefinition]","clang/test/Lexer/objc_macros.m:5:9: warning: ignoring redefinition of Objective-C qualifier macro [-Wobjc-macro-redefinition]","clang/test/Lexer/objc_macros.m:7:9: warning: ignoring redefinition of Objective-C qualifier macro [-Wobjc-macro-redefinition]"} | ["clang/test/Lexer/objc_macros.m"]={"clang/test/Lexer/objc_macros.m:3:9: warning: ignoring redefinition of Objective-C qualifier macro [-Wobjc-macro-redefinition]","clang/test/Lexer/objc_macros.m:5:9: warning: ignoring redefinition of Objective-C qualifier macro [-Wobjc-macro-redefinition]","clang/test/Lexer/objc_macros.m:7:9: warning: ignoring redefinition of Objective-C qualifier macro [-Wobjc-macro-redefinition]","clang/test/Lexer/objc_macros.m:3:9: warning: ignoring redefinition of Objective-C qualifier macro [-Wobjc-macro-redefinition]","clang/test/Lexer/objc_macros.m:5:9: warning: ignoring redefinition of Objective-C qualifier macro [-Wobjc-macro-redefinition]","clang/test/Lexer/objc_macros.m:7:9: warning: ignoring redefinition of Objective-C qualifier macro [-Wobjc-macro-redefinition]"} | ||
Line 3,563: | Line 3,563: | ||
[h]=D, | [h]=D, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{qc,260,"/// 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 default:\n // If this token\'s spelling is a pp-identifier, check to see if it is\n // \'defined\' or if it is a macro. Note that we check here because many\n // keywords are pp-identifiers, so we can\'t check the kind.\n if (IdentifierInfo *II = PeekTok.getIdentifierInfo()) {\n if (!II->isCPlusPlusOperatorKeyword()) {\n // If this identifier isn\'t \'defined\' or one of the special\n // preprocessor keywords and it wasn\'t macro expanded, it turns\n // into a simple 0\n if (ValueLive) {\n PP.Diag(PeekTok, diag::warn_pp_undef_identifier) << II;"},{qc,264,"/// 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 default:\n // If this token\'s spelling is a pp-identifier, check to see if it is\n // \'defined\' or if it is a macro. Note that we check here because many\n // keywords are pp-identifiers, so we can\'t check the kind.\n if (IdentifierInfo *II = PeekTok.getIdentifierInfo()) {\n if (!II->isCPlusPlusOperatorKeyword()) {\n // If this identifier isn\'t \'defined\' or one of the special\n // preprocessor keywords and it wasn\'t macro expanded, it turns\n // into a simple 0\n if (ValueLive) {\n if (DiagEngine.isIgnored(diag::warn_pp_undef_identifier, PeekTok.getLocation())) {"}}, | [j]={{qc,260,"/// 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 // ...\n default:\n // If this token\'s spelling is a pp-identifier, check to see if it is\n // \'defined\' or if it is a macro. Note that we check here because many\n // keywords are pp-identifiers, so we can\'t check the kind.\n if (IdentifierInfo *II = PeekTok.getIdentifierInfo()) {\n // ...\n if (!II->isCPlusPlusOperatorKeyword()) {\n // If this identifier isn\'t \'defined\' or one of the special\n // preprocessor keywords and it wasn\'t macro expanded, it turns\n // into a simple 0\n if (ValueLive) {\n PP.Diag(PeekTok, diag::warn_pp_undef_identifier) << II;"},{qc,264,"/// 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 // ...\n default:\n // If this token\'s spelling is a pp-identifier, check to see if it is\n // \'defined\' or if it is a macro. Note that we check here because many\n // keywords are pp-identifiers, so we can\'t check the kind.\n if (IdentifierInfo *II = PeekTok.getIdentifierInfo()) {\n // ...\n if (!II->isCPlusPlusOperatorKeyword()) {\n // If this identifier isn\'t \'defined\' or one of the special\n // preprocessor keywords and it wasn\'t macro expanded, it turns\n // into a simple 0\n if (ValueLive) {\n // ...\n if (DiagEngine.isIgnored(diag::warn_pp_undef_identifier, PeekTok.getLocation())) {"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/if_warning.c"]={"clang/test/Preprocessor/if_warning.c:5:5: error: \'foo\' is not defined, evaluates to 0 [-Werror,-Wundef]"} | ["clang/test/Preprocessor/if_warning.c"]={"clang/test/Preprocessor/if_warning.c:5:5: error: \'foo\' is not defined, evaluates to 0 [-Werror,-Wundef]"} | ||
Line 3,581: | Line 3,581: | ||
[h]=D, | [h]=D, | ||
[i]={"89a0c4066b0e",1593534486,"[clang][diagnostics] Add \'-Wundef-prefix\' warning option","[clang][diagnostics] Add \'-Wundef-prefix\' warning option"}, | [i]={"89a0c4066b0e",1593534486,"[clang][diagnostics] Add \'-Wundef-prefix\' warning option","[clang][diagnostics] Add \'-Wundef-prefix\' warning option"}, | ||
[j]={{qc,273,"/// 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 default:\n // If this token\'s spelling is a pp-identifier, check to see if it is\n // \'defined\' or if it is a macro. Note that we check here because many\n // keywords are pp-identifiers, so we can\'t check the kind.\n if (IdentifierInfo *II = PeekTok.getIdentifierInfo()) {\n if (!II->isCPlusPlusOperatorKeyword()) {\n // If this identifier isn\'t \'defined\' or one of the special\n // preprocessor keywords and it wasn\'t macro expanded, it turns\n // into a simple 0\n if (ValueLive) {\n // If \'Wundef\' is enabled, do not emit \'undef-prefix\' diagnostics.\n if (DiagEngine.isIgnored(diag::warn_pp_undef_identifier, PeekTok.getLocation())) {\n if (llvm::any_of(UndefPrefixes, [&IdentifierName](const std::string &Prefix) { return IdentifierName.startswith(Prefix); }))\n PP.Diag(PeekTok, diag::warn_pp_undef_prefix) << AddFlagValue{llvm::join(UndefPrefixes, \",\")} << II;"}} | [j]={{qc,273,"/// 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 // ...\n default:\n // If this token\'s spelling is a pp-identifier, check to see if it is\n // \'defined\' or if it is a macro. Note that we check here because many\n // keywords are pp-identifiers, so we can\'t check the kind.\n if (IdentifierInfo *II = PeekTok.getIdentifierInfo()) {\n // ...\n if (!II->isCPlusPlusOperatorKeyword()) {\n // If this identifier isn\'t \'defined\' or one of the special\n // preprocessor keywords and it wasn\'t macro expanded, it turns\n // into a simple 0\n if (ValueLive) {\n // ...\n // If \'Wundef\' is enabled, do not emit \'undef-prefix\' diagnostics.\n if (DiagEngine.isIgnored(diag::warn_pp_undef_identifier, PeekTok.getLocation())) {\n // ...\n if (llvm::any_of(UndefPrefixes, [&IdentifierName](const std::string &Prefix) { return IdentifierName.startswith(Prefix); }))\n PP.Diag(PeekTok, diag::warn_pp_undef_prefix) << AddFlagValue{llvm::join(UndefPrefixes, \",\")} << II;"}} | ||
}, | }, | ||
["warn_pragma_align_expected_equal"]={ | ["warn_pragma_align_expected_equal"]={ | ||
Line 3,595: | Line 3,595: | ||
[h]=B, | [h]=B, | ||
[i]={"cb82acb884fb",1280603827,"Parser: Add support for #pragma align, which is just another spelling of #pragma","Parser: Add support for #pragma align, which is just another spelling of #pragma"}, | [i]={"cb82acb884fb",1280603827,"Parser: Add support for #pragma align, which is just another spelling of #pragma","Parser: Add support for #pragma align, which is just another spelling of #pragma"}, | ||
[j]={{s,2269,"// #pragma \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'options \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'align\' \'(\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'} \')\'\nstatic void ParseAlignPragma(Preprocessor &PP, Token &FirstTok, bool IsOptions) {\n if (PP.getLangOpts().XLPragmaPack) {\n } else if (Tok.isNot(tok::equal)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_align_expected_equal) << IsOptions;"}}, | [j]={{s,2269,"// #pragma \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'options \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'align\' \'(\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'} \')\'\nstatic void ParseAlignPragma(Preprocessor &PP, Token &FirstTok, bool IsOptions) {\n // ...\n if (PP.getLangOpts().XLPragmaPack) {\n // ...\n } else if (Tok.isNot(tok::equal)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_align_expected_equal) << IsOptions;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/pragma-options.c"]={"clang/test/Parser/pragma-options.c:4:96: warning: expected \'=\' following \'#pragma options align\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-options.c:14:80: warning: expected \'=\' following \'#pragma align\' - ignored [-Wignored-pragmas]"} | ["clang/test/Parser/pragma-options.c"]={"clang/test/Parser/pragma-options.c:4:96: warning: expected \'=\' following \'#pragma options align\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-options.c:14:80: warning: expected \'=\' following \'#pragma align\' - ignored [-Wignored-pragmas]"} | ||
Line 3,612: | Line 3,612: | ||
[h]=B, | [h]=B, | ||
[i]={"cb82acb884fb",1280603827,"Parser: Add support for #pragma align, which is just another spelling of #pragma","Parser: Add support for #pragma align, which is just another spelling of #pragma"}, | [i]={"cb82acb884fb",1280603827,"Parser: Add support for #pragma align, which is just another spelling of #pragma","Parser: Add support for #pragma align, which is just another spelling of #pragma"}, | ||
[j]={{s,2296,"// #pragma \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'options \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'align\' \'(\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'} \')\'\nstatic void ParseAlignPragma(Preprocessor &PP, Token &FirstTok, bool IsOptions) {\n if (II->isStr(\"native\"))\n else if (II->isStr(\"natural\"))\n else if (II->isStr(\"packed\"))\n else if (II->isStr(\"power\"))\n else if (II->isStr(\"mac68k\"))\n else if (II->isStr(\"reset\"))\n else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_align_invalid_option) << IsOptions;"}}, | [j]={{s,2296,"// #pragma \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'options \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'align\' \'(\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'} \')\'\nstatic void ParseAlignPragma(Preprocessor &PP, Token &FirstTok, bool IsOptions) {\n // ...\n if (II->isStr(\"native\"))\n // ...\n else if (II->isStr(\"natural\"))\n // ...\n else if (II->isStr(\"packed\"))\n // ...\n else if (II->isStr(\"power\"))\n // ...\n else if (II->isStr(\"mac68k\"))\n // ...\n else if (II->isStr(\"reset\"))\n // ...\n else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_align_invalid_option) << IsOptions;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/pragma-options.c"]={"clang/test/Parser/pragma-options.c:6:104: warning: invalid alignment option in \'#pragma options align\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-options.c:16:88: warning: invalid alignment option in \'#pragma align\' - ignored [-Wignored-pragmas]"} | ["clang/test/Parser/pragma-options.c"]={"clang/test/Parser/pragma-options.c:6:104: warning: invalid alignment option in \'#pragma options align\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-options.c:16:88: warning: invalid alignment option in \'#pragma align\' - ignored [-Wignored-pragmas]"} | ||
Line 3,629: | Line 3,629: | ||
[h]=q, | [h]=q, | ||
[i]={Xb,1615397021,qb,qb}, | [i]={Xb,1615397021,qb,qb}, | ||
[j]={{H,17845,"void Sema::ActOnTagFinishDefinition(Scope *S, Decl *TagD, SourceRange BraceRange) {\n // Clangs implementation of #pragma align(packed) differs in bitfield layout\n // from XLs and instead matches the XL #pragma pack(1) behavior.\n if (Context.getTargetInfo().getTriple().isOSAIX() && AlignPackStack.hasValue()) {\n // Only warn if there is at least 1 bitfield member.\n if (llvm::any_of(RD->fields(), [](const FieldDecl *FD) { return FD->isBitField(); }))\n Diag(BraceRange.getBegin(), diag::warn_pragma_align_not_xl_compatible);"}}, | [j]={{H,17845,"void Sema::ActOnTagFinishDefinition(Scope *S, Decl *TagD, SourceRange BraceRange) {\n // ...\n // Clangs implementation of #pragma align(packed) differs in bitfield layout\n // from XLs and instead matches the XL #pragma pack(1) behavior.\n if (Context.getTargetInfo().getTriple().isOSAIX() && AlignPackStack.hasValue()) {\n // ...\n // Only warn if there is at least 1 bitfield member.\n if (llvm::any_of(RD->fields(), [](const FieldDecl *FD) { return FD->isBitField(); }))\n Diag(BraceRange.getBegin(), diag::warn_pragma_align_not_xl_compatible);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/aix-pragma-align-packed-warn.c"]={"clang/test/Sema/aix-pragma-align-packed-warn.c:5:10: warning: #pragma align(packed) may not be compatible with objects generated with AIX XL C/C++ [-Waix-compat]","clang/test/Sema/aix-pragma-align-packed-warn.c:11:10: warning: #pragma align(packed) may not be compatible with objects generated with AIX XL C/C++ [-Waix-compat]"} | ["clang/test/Sema/aix-pragma-align-packed-warn.c"]={"clang/test/Sema/aix-pragma-align-packed-warn.c:5:10: warning: #pragma align(packed) may not be compatible with objects generated with AIX XL C/C++ [-Waix-compat]","clang/test/Sema/aix-pragma-align-packed-warn.c:11:10: warning: #pragma align(packed) may not be compatible with objects generated with AIX XL C/C++ [-Waix-compat]"} | ||
Line 3,646: | Line 3,646: | ||
[h]=q, | [h]=q, | ||
[i]={"0a849f47d2f7",1492508507,"Add #pragma clang attribute","Add #pragma clang attribute"}, | [i]={"0a849f47d2f7",1492508507,"Add #pragma clang attribute","Add #pragma clang attribute"}, | ||
[j]={{mb,1083,"void Sema::ActOnPragmaAttributePop(SourceLocation PragmaLoc, const IdentifierInfo *Namespace) {\n // Dig back through the stack trying to find the most recently pushed group\n // that in Namespace. Note that this works fine if no namespace is present,\n // think of push/pops without namespaces as having an implicit \"nullptr\"\n // namespace.\n for (size_t Index = PragmaAttributeStack.size(); Index;) {\n if (PragmaAttributeStack[Index].Namespace == Namespace) {\n for (const PragmaAttributeEntry &Entry : PragmaAttributeStack[Index].Entries) {\n if (!Entry.IsUsed) {\n Diag(Entry.Attribute->getLoc(), diag::warn_pragma_attribute_unused) << *Entry.Attribute;"}}, | [j]={{mb,1083,"void Sema::ActOnPragmaAttributePop(SourceLocation PragmaLoc, const IdentifierInfo *Namespace) {\n // ...\n // Dig back through the stack trying to find the most recently pushed group\n // that in Namespace. Note that this works fine if no namespace is present,\n // think of push/pops without namespaces as having an implicit \"nullptr\"\n // namespace.\n for (size_t Index = PragmaAttributeStack.size(); Index;) {\n // ...\n if (PragmaAttributeStack[Index].Namespace == Namespace) {\n for (const PragmaAttributeEntry &Entry : PragmaAttributeStack[Index].Entries) {\n if (!Entry.IsUsed) {\n // ...\n Diag(Entry.Attribute->getLoc(), diag::warn_pragma_attribute_unused) << *Entry.Attribute;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/pragma-attribute.c"]={"clang/test/Sema/pragma-attribute.c:6:46: warning: unused attribute \'annotate\' in \'#pragma clang attribute push\' region [-Wpragma-clang-attribute]"} | ["clang/test/Sema/pragma-attribute.c"]={"clang/test/Sema/pragma-attribute.c:6:46: warning: unused attribute \'annotate\' in \'#pragma clang attribute push\' region [-Wpragma-clang-attribute]"} | ||
Line 3,663: | Line 3,663: | ||
[h]=B, | [h]=B, | ||
[i]={"99efc0361b2d",1427143302,"Adds a warning for unrecognized argument to #pragma comment() on PS4.","Adds a warning for unrecognized argument to #pragma comment() on PS4."}, | [i]={"99efc0361b2d",1427143302,"Adds a warning for unrecognized argument to #pragma comment() on PS4.","Adds a warning for unrecognized argument to #pragma comment() on PS4."}, | ||
[j]={{s,3116,"/// Handle the microsoft \\#pragma comment extension.\n///\n/// The syntax is:\n/// \\code\n/// #pragma comment(linker, \"foo\")\n/// \\endcode\n/// \'linker\' is one of five identifiers: compiler, exestr, lib, linker, user.\n/// \"foo\" is a string, which is fully macro expanded, and permits string\n/// concatenation, embedded escape characters etc. See MSDN for more details.\nvoid PragmaCommentHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (PP.getTargetInfo().getTriple().isOSBinFormatELF() && Kind != PCK_Lib) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_comment_ignored) << II->getName();"}}, | [j]={{s,3116,"/// Handle the microsoft \\#pragma comment extension.\n///\n/// The syntax is:\n/// \\code\n/// #pragma comment(linker, \"foo\")\n/// \\endcode\n/// \'linker\' is one of five identifiers: compiler, exestr, lib, linker, user.\n/// \"foo\" is a string, which is fully macro expanded, and permits string\n/// concatenation, embedded escape characters etc. See MSDN for more details.\nvoid PragmaCommentHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (PP.getTargetInfo().getTriple().isOSBinFormatELF() && Kind != PCK_Lib) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_comment_ignored) << II->getName();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/pragma-comment-elf.c"]={"clang/test/Preprocessor/pragma-comment-elf.c:12:17: warning: \'#pragma comment linker\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:13:17: warning: \'#pragma comment linker\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:14:18: warning: \'#pragma comment linker\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:16:17: warning: \'#pragma comment user\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:17:17: warning: \'#pragma comment user\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:18:18: warning: \'#pragma comment user\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:20:17: warning: \'#pragma comment compiler\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:21:17: warning: \'#pragma comment compiler\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:22:18: warning: \'#pragma comment compiler\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:24:17: warning: \'#pragma comment exestr\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:25:17: warning: \'#pragma comment exestr\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:26:18: warning: \'#pragma comment exestr\' ignored [-Wignored-pragmas]"} | ["clang/test/Preprocessor/pragma-comment-elf.c"]={"clang/test/Preprocessor/pragma-comment-elf.c:12:17: warning: \'#pragma comment linker\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:13:17: warning: \'#pragma comment linker\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:14:18: warning: \'#pragma comment linker\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:16:17: warning: \'#pragma comment user\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:17:17: warning: \'#pragma comment user\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:18:18: warning: \'#pragma comment user\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:20:17: warning: \'#pragma comment compiler\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:21:17: warning: \'#pragma comment compiler\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:22:18: warning: \'#pragma comment compiler\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:24:17: warning: \'#pragma comment exestr\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:25:17: warning: \'#pragma comment exestr\' ignored [-Wignored-pragmas]","clang/test/Preprocessor/pragma-comment-elf.c:26:18: warning: \'#pragma comment exestr\' ignored [-Wignored-pragmas]"} | ||
Line 3,680: | Line 3,680: | ||
[h]=B, | [h]=B, | ||
[i]={"ef9ec4bbcca2",1677810915,bd,bd}, | [i]={"ef9ec4bbcca2",1677810915,bd,bd}, | ||
[j]={{s,732,"void Parser::HandlePragmaDump() {\n if (Tok.is(tok::eod)) {\n } else if (NextToken().is(tok::eod)) {\n } else {\n if (!E.isUsable() || E.get()->containsErrors()) {\n } else if (E.get()->getDependence() != ExprDependence::None) {\n PP.Diag(StartLoc, diag::warn_pragma_debug_dependent_argument) << E.get()->isTypeDependent() << SourceRange(StartLoc, Tok.getLocation());"}}, | [j]={{s,732,"void Parser::HandlePragmaDump() {\n // ...\n if (Tok.is(tok::eod)) {\n // ...\n } else if (NextToken().is(tok::eod)) {\n // ...\n } else {\n // ...\n if (!E.isUsable() || E.get()->containsErrors()) {\n // ...\n } else if (E.get()->getDependence() != ExprDependence::None) {\n PP.Diag(StartLoc, diag::warn_pragma_debug_dependent_argument) << E.get()->isTypeDependent() << SourceRange(StartLoc, Tok.getLocation());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/AST/ast-dump-lookups.cpp"]={"clang/test/AST/ast-dump-lookups.cpp:79:28: warning: type-dependent expression passed as an argument to debug command [-Wignored-pragmas]","clang/test/AST/ast-dump-lookups.cpp:80:28: warning: value-dependent expression passed as an argument to debug command [-Wignored-pragmas]"} | ["clang/test/AST/ast-dump-lookups.cpp"]={"clang/test/AST/ast-dump-lookups.cpp:79:28: warning: type-dependent expression passed as an argument to debug command [-Wignored-pragmas]","clang/test/AST/ast-dump-lookups.cpp:80:28: warning: value-dependent expression passed as an argument to debug command [-Wignored-pragmas]"} | ||
Line 3,697: | Line 3,697: | ||
[h]=D, | [h]=D, | ||
[i]={"ba3a4f917f2d",1452635966,"Improve AST dumping:","Improve AST dumping:"}, | [i]={"ba3a4f917f2d",1452635966,"Improve AST dumping:","Improve AST dumping:"}, | ||
[j]={{I,1098,"struct PragmaDebugHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n if (II->isStr(\"assert\")) {\n } else if (II->isStr(\"crash\")) {\n } else if (II->isStr(\"parser_crash\")) {\n } else if (II->isStr(\"dump\")) {\n } else if (II->isStr(\"diag_mapping\")) {\n if (DiagName.is(tok::eod))\n else if (DiagName.is(tok::string_literal) && !DiagName.hasUDSuffix()) {\n } else {\n PP.Diag(DiagName, diag::warn_pragma_debug_missing_argument) << II->getName();"},{I,1114,"struct PragmaDebugHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n if (II->isStr(\"assert\")) {\n } else if (II->isStr(\"crash\")) {\n } else if (II->isStr(\"parser_crash\")) {\n } else if (II->isStr(\"dump\")) {\n } else if (II->isStr(\"diag_mapping\")) {\n } else if (II->isStr(\"llvm_fatal_error\")) {\n } else if (II->isStr(\"llvm_unreachable\")) {\n } else if (II->isStr(\"macro\")) {\n if (MacroII)\n else\n PP.Diag(MacroName, diag::warn_pragma_debug_missing_argument) << II->getName();"},{I,1166,"struct PragmaDebugHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n if (II->isStr(\"assert\")) {\n } else if (II->isStr(\"crash\")) {\n } else if (II->isStr(\"parser_crash\")) {\n } else if (II->isStr(\"dump\")) {\n } else if (II->isStr(\"diag_mapping\")) {\n } else if (II->isStr(\"llvm_fatal_error\")) {\n } else if (II->isStr(\"llvm_unreachable\")) {\n } else if (II->isStr(\"macro\")) {\n } else if (II->isStr(\"module_map\")) {\n } else if (II->isStr(\"overflow_stack\")) {\n } else if (II->isStr(\"captured\")) {\n } else if (II->isStr(\"modules\")) {\n if (!DumpII) {\n PP.Diag(Kind, diag::warn_pragma_debug_missing_argument) << II->getName();"},{s,713,"void Parser::HandlePragmaDump() {\n if (Tok.is(tok::eod)) {\n PP.Diag(Tok, diag::warn_pragma_debug_missing_argument) << \"dump\";"}} | [j]={{I,1098,"struct PragmaDebugHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n // ...\n if (II->isStr(\"assert\")) {\n // ...\n } else if (II->isStr(\"crash\")) {\n // ...\n } else if (II->isStr(\"parser_crash\")) {\n // ...\n } else if (II->isStr(\"dump\")) {\n // ...\n } else if (II->isStr(\"diag_mapping\")) {\n // ...\n if (DiagName.is(tok::eod))\n // ...\n else if (DiagName.is(tok::string_literal) && !DiagName.hasUDSuffix()) {\n // ...\n } else {\n PP.Diag(DiagName, diag::warn_pragma_debug_missing_argument) << II->getName();"},{I,1114,"struct PragmaDebugHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n // ...\n if (II->isStr(\"assert\")) {\n // ...\n } else if (II->isStr(\"crash\")) {\n // ...\n } else if (II->isStr(\"parser_crash\")) {\n // ...\n } else if (II->isStr(\"dump\")) {\n // ...\n } else if (II->isStr(\"diag_mapping\")) {\n // ...\n } else if (II->isStr(\"llvm_fatal_error\")) {\n // ...\n } else if (II->isStr(\"llvm_unreachable\")) {\n // ...\n } else if (II->isStr(\"macro\")) {\n // ...\n if (MacroII)\n // ...\n else\n PP.Diag(MacroName, diag::warn_pragma_debug_missing_argument) << II->getName();"},{I,1166,"struct PragmaDebugHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n // ...\n if (II->isStr(\"assert\")) {\n // ...\n } else if (II->isStr(\"crash\")) {\n // ...\n } else if (II->isStr(\"parser_crash\")) {\n // ...\n } else if (II->isStr(\"dump\")) {\n // ...\n } else if (II->isStr(\"diag_mapping\")) {\n // ...\n } else if (II->isStr(\"llvm_fatal_error\")) {\n // ...\n } else if (II->isStr(\"llvm_unreachable\")) {\n // ...\n } else if (II->isStr(\"macro\")) {\n // ...\n } else if (II->isStr(\"module_map\")) {\n // ...\n } else if (II->isStr(\"overflow_stack\")) {\n // ...\n } else if (II->isStr(\"captured\")) {\n // ...\n } else if (II->isStr(\"modules\")) {\n // ...\n if (!DumpII) {\n PP.Diag(Kind, diag::warn_pragma_debug_missing_argument) << II->getName();"},{s,713,"void Parser::HandlePragmaDump() {\n // ...\n if (Tok.is(tok::eod)) {\n PP.Diag(Tok, diag::warn_pragma_debug_missing_argument) << \"dump\";"}} | ||
}, | }, | ||
["warn_pragma_debug_missing_command"]={ | ["warn_pragma_debug_missing_command"]={ | ||
Line 3,711: | Line 3,711: | ||
[h]=D, | [h]=D, | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{I,1059,"struct PragmaDebugHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok, diag::warn_pragma_debug_missing_command);"}} | [j]={{I,1059,"struct PragmaDebugHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n // ...\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok, diag::warn_pragma_debug_missing_command);"}} | ||
}, | }, | ||
["warn_pragma_debug_unexpected_argument"]={ | ["warn_pragma_debug_unexpected_argument"]={ | ||
Line 3,725: | Line 3,725: | ||
[h]=D, | [h]=D, | ||
[i]={"31f4859c3e4d",1667168400,"[Clang] Allow additional mathematical symbols in identifiers.","[Clang] Allow additional mathematical symbols in identifiers."}, | [i]={"31f4859c3e4d",1667168400,"[Clang] Allow additional mathematical symbols in identifiers.","[Clang] Allow additional mathematical symbols in identifiers."}, | ||
[j]={{I,1199,"struct PragmaDebugHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n if (II->isStr(\"assert\")) {\n } else if (II->isStr(\"crash\")) {\n } else if (II->isStr(\"parser_crash\")) {\n } else if (II->isStr(\"dump\")) {\n } else if (II->isStr(\"diag_mapping\")) {\n } else if (II->isStr(\"llvm_fatal_error\")) {\n } else if (II->isStr(\"llvm_unreachable\")) {\n } else if (II->isStr(\"macro\")) {\n } else if (II->isStr(\"module_map\")) {\n } else if (II->isStr(\"overflow_stack\")) {\n } else if (II->isStr(\"captured\")) {\n } else if (II->isStr(\"modules\")) {\n } else if (II->isStr(\"sloc_usage\")) {\n if (ArgToken.is(tok::numeric_constant) && PP.parseSimpleIntegerLiteral(ArgToken, Value)) {\n } else if (ArgToken.isNot(tok::eod)) {\n PP.Diag(ArgToken, diag::warn_pragma_debug_unexpected_argument);"},{s,716,"void Parser::HandlePragmaDump() {\n if (Tok.is(tok::eod)) {\n } else if (NextToken().is(tok::eod)) {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok, diag::warn_pragma_debug_unexpected_argument);"}} | [j]={{I,1199,"struct PragmaDebugHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n // ...\n if (II->isStr(\"assert\")) {\n // ...\n } else if (II->isStr(\"crash\")) {\n // ...\n } else if (II->isStr(\"parser_crash\")) {\n // ...\n } else if (II->isStr(\"dump\")) {\n // ...\n } else if (II->isStr(\"diag_mapping\")) {\n // ...\n } else if (II->isStr(\"llvm_fatal_error\")) {\n // ...\n } else if (II->isStr(\"llvm_unreachable\")) {\n // ...\n } else if (II->isStr(\"macro\")) {\n // ...\n } else if (II->isStr(\"module_map\")) {\n // ...\n } else if (II->isStr(\"overflow_stack\")) {\n // ...\n } else if (II->isStr(\"captured\")) {\n // ...\n } else if (II->isStr(\"modules\")) {\n // ...\n } else if (II->isStr(\"sloc_usage\")) {\n // ...\n if (ArgToken.is(tok::numeric_constant) && PP.parseSimpleIntegerLiteral(ArgToken, Value)) {\n // ...\n } else if (ArgToken.isNot(tok::eod)) {\n PP.Diag(ArgToken, diag::warn_pragma_debug_unexpected_argument);"},{s,716,"void Parser::HandlePragmaDump() {\n // ...\n if (Tok.is(tok::eod)) {\n // ...\n } else if (NextToken().is(tok::eod)) {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok, diag::warn_pragma_debug_unexpected_argument);"}} | ||
}, | }, | ||
["warn_pragma_debug_unexpected_command"]={ | ["warn_pragma_debug_unexpected_command"]={ | ||
Line 3,739: | Line 3,739: | ||
[h]=D, | [h]=D, | ||
[i]={"f2cf329ccd1b",1282084368,"Lex: Add #pragma clang __debug {llvm_fatal_error, llvm_unreachable}, for testing","Lex: Add #pragma clang __debug {llvm_fatal_error, llvm_unreachable}, for testing"}, | [i]={"f2cf329ccd1b",1282084368,"Lex: Add #pragma clang __debug {llvm_fatal_error, llvm_unreachable}, for testing","Lex: Add #pragma clang __debug {llvm_fatal_error, llvm_unreachable}, for testing"}, | ||
[j]={{I,1185,"struct PragmaDebugHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n if (II->isStr(\"assert\")) {\n } else if (II->isStr(\"crash\")) {\n } else if (II->isStr(\"parser_crash\")) {\n } else if (II->isStr(\"dump\")) {\n } else if (II->isStr(\"diag_mapping\")) {\n } else if (II->isStr(\"llvm_fatal_error\")) {\n } else if (II->isStr(\"llvm_unreachable\")) {\n } else if (II->isStr(\"macro\")) {\n } else if (II->isStr(\"module_map\")) {\n } else if (II->isStr(\"overflow_stack\")) {\n } else if (II->isStr(\"captured\")) {\n } else if (II->isStr(\"modules\")) {\n if (!DumpII) {\n } else if (DumpII->isStr(\"all\")) {\n } else if (DumpII->isStr(\"visible\")) {\n } else if (DumpII->isStr(\"building\")) {\n } else {\n PP.Diag(Tok, diag::warn_pragma_debug_unexpected_command) << DumpII->getName();"},{I,1206,"struct PragmaDebugHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n if (II->isStr(\"assert\")) {\n } else if (II->isStr(\"crash\")) {\n } else if (II->isStr(\"parser_crash\")) {\n } else if (II->isStr(\"dump\")) {\n } else if (II->isStr(\"diag_mapping\")) {\n } else if (II->isStr(\"llvm_fatal_error\")) {\n } else if (II->isStr(\"llvm_unreachable\")) {\n } else if (II->isStr(\"macro\")) {\n } else if (II->isStr(\"module_map\")) {\n } else if (II->isStr(\"overflow_stack\")) {\n } else if (II->isStr(\"captured\")) {\n } else if (II->isStr(\"modules\")) {\n } else if (II->isStr(\"sloc_usage\")) {\n } else {\n PP.Diag(Tok, diag::warn_pragma_debug_unexpected_command) << II->getName();"}} | [j]={{I,1185,"struct PragmaDebugHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n // ...\n if (II->isStr(\"assert\")) {\n // ...\n } else if (II->isStr(\"crash\")) {\n // ...\n } else if (II->isStr(\"parser_crash\")) {\n // ...\n } else if (II->isStr(\"dump\")) {\n // ...\n } else if (II->isStr(\"diag_mapping\")) {\n // ...\n } else if (II->isStr(\"llvm_fatal_error\")) {\n // ...\n } else if (II->isStr(\"llvm_unreachable\")) {\n // ...\n } else if (II->isStr(\"macro\")) {\n // ...\n } else if (II->isStr(\"module_map\")) {\n // ...\n } else if (II->isStr(\"overflow_stack\")) {\n // ...\n } else if (II->isStr(\"captured\")) {\n // ...\n } else if (II->isStr(\"modules\")) {\n // ...\n if (!DumpII) {\n // ...\n } else if (DumpII->isStr(\"all\")) {\n // ...\n } else if (DumpII->isStr(\"visible\")) {\n // ...\n } else if (DumpII->isStr(\"building\")) {\n // ...\n } else {\n PP.Diag(Tok, diag::warn_pragma_debug_unexpected_command) << DumpII->getName();"},{I,1206,"struct PragmaDebugHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n // ...\n if (II->isStr(\"assert\")) {\n // ...\n } else if (II->isStr(\"crash\")) {\n // ...\n } else if (II->isStr(\"parser_crash\")) {\n // ...\n } else if (II->isStr(\"dump\")) {\n // ...\n } else if (II->isStr(\"diag_mapping\")) {\n // ...\n } else if (II->isStr(\"llvm_fatal_error\")) {\n // ...\n } else if (II->isStr(\"llvm_unreachable\")) {\n // ...\n } else if (II->isStr(\"macro\")) {\n // ...\n } else if (II->isStr(\"module_map\")) {\n // ...\n } else if (II->isStr(\"overflow_stack\")) {\n // ...\n } else if (II->isStr(\"captured\")) {\n // ...\n } else if (II->isStr(\"modules\")) {\n // ...\n } else if (II->isStr(\"sloc_usage\")) {\n // ...\n } else {\n PP.Diag(Tok, diag::warn_pragma_debug_unexpected_command) << II->getName();"}} | ||
}, | }, | ||
["warn_pragma_debug_unknown_module"]={ | ["warn_pragma_debug_unknown_module"]={ | ||
Line 3,753: | Line 3,753: | ||
[h]=D, | [h]=D, | ||
[i]={"77e53cbe8473",1555549021,"Add \'#pragma clang __debug module_map module.name\' to dump the module","Add \'#pragma clang __debug module_map module.name\' to dump the module"}, | [i]={"77e53cbe8473",1555549021,"Add \'#pragma clang __debug module_map module.name\' to dump the module","Add \'#pragma clang __debug module_map module.name\' to dump the module"}, | ||
[j]={{I,1126,"struct PragmaDebugHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n if (II->isStr(\"assert\")) {\n } else if (II->isStr(\"crash\")) {\n } else if (II->isStr(\"parser_crash\")) {\n } else if (II->isStr(\"dump\")) {\n } else if (II->isStr(\"diag_mapping\")) {\n } else if (II->isStr(\"llvm_fatal_error\")) {\n } else if (II->isStr(\"llvm_unreachable\")) {\n } else if (II->isStr(\"macro\")) {\n } else if (II->isStr(\"module_map\")) {\n for (auto IIAndLoc : ModuleName) {\n if (!M) {\n PP.Diag(IIAndLoc.second, diag::warn_pragma_debug_unknown_module) << IIAndLoc.first;"}} | [j]={{I,1126,"struct PragmaDebugHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DebugToken) override {\n // ...\n if (II->isStr(\"assert\")) {\n // ...\n } else if (II->isStr(\"crash\")) {\n // ...\n } else if (II->isStr(\"parser_crash\")) {\n // ...\n } else if (II->isStr(\"dump\")) {\n // ...\n } else if (II->isStr(\"diag_mapping\")) {\n // ...\n } else if (II->isStr(\"llvm_fatal_error\")) {\n // ...\n } else if (II->isStr(\"llvm_unreachable\")) {\n // ...\n } else if (II->isStr(\"macro\")) {\n // ...\n } else if (II->isStr(\"module_map\")) {\n // ...\n for (auto IIAndLoc : ModuleName) {\n // ...\n if (!M) {\n PP.Diag(IIAndLoc.second, diag::warn_pragma_debug_unknown_module) << IIAndLoc.first;"}} | ||
}, | }, | ||
["warn_pragma_deprecated_macro_use"]={ | ["warn_pragma_deprecated_macro_use"]={ | ||
Line 3,767: | Line 3,767: | ||
[h]=ac, | [h]=ac, | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{Jc,1455,"void Preprocessor::emitMacroDeprecationWarning(const Token &Identifier) const {\n if (Info.Message.empty())\n Diag(Identifier, diag::warn_pragma_deprecated_macro_use) << Identifier.getIdentifierInfo() << 0;"},{Jc,1458,"void Preprocessor::emitMacroDeprecationWarning(const Token &Identifier) const {\n if (Info.Message.empty())\n else\n Diag(Identifier, diag::warn_pragma_deprecated_macro_use) << Identifier.getIdentifierInfo() << 1 << Info.Message;"}}, | [j]={{Jc,1455,"void Preprocessor::emitMacroDeprecationWarning(const Token &Identifier) const {\n // ...\n if (Info.Message.empty())\n Diag(Identifier, diag::warn_pragma_deprecated_macro_use) << Identifier.getIdentifierInfo() << 0;"},{Jc,1458,"void Preprocessor::emitMacroDeprecationWarning(const Token &Identifier) const {\n // ...\n if (Info.Message.empty())\n // ...\n else\n Diag(Identifier, diag::warn_pragma_deprecated_macro_use) << Identifier.getIdentifierInfo() << 1 << Info.Message;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Lexer/deprecate-macro.c"]={"clang/test/Lexer/deprecate-macro.c:17:5: warning: macro \'bar\' has been marked as deprecated: bar is deprecated use 1 [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:35:5: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:39:13: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:43:8: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:47:9: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:55:10: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:73:7: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:80:10: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:87:11: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]"} | ["clang/test/Lexer/deprecate-macro.c"]={"clang/test/Lexer/deprecate-macro.c:17:5: warning: macro \'bar\' has been marked as deprecated: bar is deprecated use 1 [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:35:5: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:39:13: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:43:8: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:47:9: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:55:10: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:73:7: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:80:10: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]","clang/test/Lexer/deprecate-macro.c:87:11: warning: macro \'foo\' has been marked as deprecated [-Wdeprecated-pragma]"} | ||
Line 3,784: | Line 3,784: | ||
[h]=D, | [h]=D, | ||
[i]={"3cc2648b476e",1283181334,"Now that GCC will have #pragma push/pop (in GCC 4.6), allow the","Now that GCC will have #pragma push/pop (in GCC 4.6), allow the"}, | [i]={"3cc2648b476e",1283181334,"Now that GCC will have #pragma push/pop (in GCC 4.6), allow the","Now that GCC will have #pragma push/pop (in GCC 4.6), allow the"}, | ||
[j]={{I,1302,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n if (II->isStr(\"pop\")) {\n if (!PP.getDiagnostics().popMappings(DiagLoc))\n PP.Diag(Tok, diag::warn_pragma_diagnostic_cannot_pop);"},{I,1424,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n if (II && II->isStr(\"push\")) {\n } else if (II && II->isStr(\"pop\")) {\n if (!PP.getDiagnostics().popMappings(DiagLoc))\n PP.Diag(Tok, diag::warn_pragma_diagnostic_cannot_pop);"}}, | [j]={{I,1302,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n // ...\n if (II->isStr(\"pop\")) {\n if (!PP.getDiagnostics().popMappings(DiagLoc))\n PP.Diag(Tok, diag::warn_pragma_diagnostic_cannot_pop);"},{I,1424,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n if (II && II->isStr(\"push\")) {\n // ...\n } else if (II && II->isStr(\"pop\")) {\n // ...\n if (!PP.getDiagnostics().popMappings(DiagLoc))\n PP.Diag(Tok, diag::warn_pragma_diagnostic_cannot_pop);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/pushable-diagnostics.c"]={"clang/test/Preprocessor/pushable-diagnostics.c:3:106: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]","clang/test/Preprocessor/pushable-diagnostics.c:17:106: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]"} | ["clang/test/Preprocessor/pushable-diagnostics.c"]={"clang/test/Preprocessor/pushable-diagnostics.c:3:106: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]","clang/test/Preprocessor/pushable-diagnostics.c:17:106: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]"} | ||
Line 3,801: | Line 3,801: | ||
[h]=D, | [h]=D, | ||
[i]={"504af1177d9c",1240183018,ec,ec}, | [i]={"504af1177d9c",1240183018,ec,ec}, | ||
[j]={{I,1290,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok, diag::warn_pragma_diagnostic_invalid);"},{I,1327,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n if (SV == diag::Severity()) {\n PP.Diag(Tok, diag::warn_pragma_diagnostic_invalid);"}}, | [j]={{I,1290,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n // ...\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok, diag::warn_pragma_diagnostic_invalid);"},{I,1327,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n // ...\n if (SV == diag::Severity()) {\n PP.Diag(Tok, diag::warn_pragma_diagnostic_invalid);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/pushable-diagnostics.c"]={"clang/test/Preprocessor/pushable-diagnostics.c:5:138: warning: pragma diagnostic expected \'error\', \'warning\', \'ignored\', \'fatal\', \'push\', or \'pop\' [-Wunknown-pragmas]"} | ["clang/test/Preprocessor/pushable-diagnostics.c"]={"clang/test/Preprocessor/pushable-diagnostics.c:5:138: warning: pragma diagnostic expected \'error\', \'warning\', \'ignored\', \'fatal\', \'push\', or \'pop\' [-Wunknown-pragmas]"} | ||
Line 3,818: | Line 3,818: | ||
[h]=D, | [h]=D, | ||
[i]={"504af1177d9c",1240183018,ec,ec}, | [i]={"504af1177d9c",1240183018,ec,ec}, | ||
[j]={{I,1345,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n if (WarningName.size() < 3 || WarningName[0] != \'-\' || (WarningName[1] != \'W\' && WarningName[1] != \'R\')) {\n PP.Diag(StringLoc, diag::warn_pragma_diagnostic_invalid_option);"}}, | [j]={{I,1345,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n // ...\n if (WarningName.size() < 3 || WarningName[0] != \'-\' || (WarningName[1] != \'W\' && WarningName[1] != \'R\')) {\n PP.Diag(StringLoc, diag::warn_pragma_diagnostic_invalid_option);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/pragma_diagnostic.c"]={"clang/test/Preprocessor/pragma_diagnostic.c:30:30: warning: pragma diagnostic expected option name (e.g. \"-Wundef\") [-Wunknown-pragmas]"} | ["clang/test/Preprocessor/pragma_diagnostic.c"]={"clang/test/Preprocessor/pragma_diagnostic.c:30:30: warning: pragma diagnostic expected option name (e.g. \"-Wundef\") [-Wunknown-pragmas]"} | ||
Line 3,835: | Line 3,835: | ||
[h]=D, | [h]=D, | ||
[i]={"504af1177d9c",1240183018,ec,ec}, | [i]={"504af1177d9c",1240183018,ec,ec}, | ||
[j]={{I,1307,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n if (II->isStr(\"pop\")) {\n if (Tok.isNot(tok::eod))\n PP.Diag(Tok.getLocation(), diag::warn_pragma_diagnostic_invalid_token);"},{I,1315,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n if (II->isStr(\"pop\")) {\n } else if (II->isStr(\"push\")) {\n if (Tok.isNot(tok::eod))\n PP.Diag(Tok.getLocation(), diag::warn_pragma_diagnostic_invalid_token);"},{I,1339,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_diagnostic_invalid_token);"}}, | [j]={{I,1307,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n // ...\n if (II->isStr(\"pop\")) {\n // ...\n if (Tok.isNot(tok::eod))\n PP.Diag(Tok.getLocation(), diag::warn_pragma_diagnostic_invalid_token);"},{I,1315,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n // ...\n if (II->isStr(\"pop\")) {\n // ...\n } else if (II->isStr(\"push\")) {\n // ...\n if (Tok.isNot(tok::eod))\n PP.Diag(Tok.getLocation(), diag::warn_pragma_diagnostic_invalid_token);"},{I,1339,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_diagnostic_invalid_token);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/pragma_diagnostic.c"]={"clang/test/Preprocessor/pragma_diagnostic.c:29:40: warning: unexpected token in pragma diagnostic [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_diagnostic.c:38:31: warning: unexpected token in pragma diagnostic [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_diagnostic.c:39:30: warning: unexpected token in pragma diagnostic [-Wunknown-pragmas]"} | ["clang/test/Preprocessor/pragma_diagnostic.c"]={"clang/test/Preprocessor/pragma_diagnostic.c:29:40: warning: unexpected token in pragma diagnostic [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_diagnostic.c:38:31: warning: unexpected token in pragma diagnostic [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_diagnostic.c:39:30: warning: unexpected token in pragma diagnostic [-Wunknown-pragmas]"} | ||
Line 3,852: | Line 3,852: | ||
[h]=D, | [h]=D, | ||
[i]={"504af1177d9c",1240183018,ec,ec}, | [i]={"504af1177d9c",1240183018,ec,ec}, | ||
[j]={{I,1362,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n if (unknownDiag)\n PP.Diag(StringLoc, diag::warn_pragma_diagnostic_unknown_warning) << WarningName;"}}, | [j]={{I,1362,"/// PragmaDiagnosticHandler - e.g. \'\\#pragma GCC diagnostic ignored \"-Wformat\"\'\nstruct PragmaDiagnosticHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &DiagToken) override {\n // ...\n if (unknownDiag)\n PP.Diag(StringLoc, diag::warn_pragma_diagnostic_unknown_warning) << WarningName;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/pragma_diagnostic.c"]={"clang/test/Preprocessor/pragma_diagnostic.c:32:30: warning: unknown warning group \'-Winvalid-name\', ignored [-Wunknown-warning-option]"} | ["clang/test/Preprocessor/pragma_diagnostic.c"]={"clang/test/Preprocessor/pragma_diagnostic.c:32:30: warning: unknown warning group \'-Winvalid-name\', ignored [-Wunknown-warning-option]"} | ||
Line 3,869: | Line 3,869: | ||
[h]=D, | [h]=D, | ||
[i]={"0f56b22614c8",1552587137,Ec,Ec}, | [i]={"0f56b22614c8",1552587137,Ec,Ec}, | ||
[j]={{I,1542,"/// \"\\#pragma execution_character_set(...)\". MSVC supports this pragma only\n/// for \"UTF-8\". We parse it and ignore it if UTF-8 is provided and warn\n/// otherwise to avoid -Wunknown-pragma warnings.\nstruct PragmaExecCharsetHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(Tok, diag::warn_pragma_exec_charset_expected) << \"(\";"},{I,1580,"/// \"\\#pragma execution_character_set(...)\". MSVC supports this pragma only\n/// for \"UTF-8\". We parse it and ignore it if UTF-8 is provided and warn\n/// otherwise to avoid -Wunknown-pragma warnings.\nstruct PragmaExecCharsetHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(Tok, diag::warn_pragma_exec_charset_expected) << \")\";"}}, | [j]={{I,1542,"/// \"\\#pragma execution_character_set(...)\". MSVC supports this pragma only\n/// for \"UTF-8\". We parse it and ignore it if UTF-8 is provided and warn\n/// otherwise to avoid -Wunknown-pragma warnings.\nstruct PragmaExecCharsetHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(Tok, diag::warn_pragma_exec_charset_expected) << \"(\";"},{I,1580,"/// \"\\#pragma execution_character_set(...)\". MSVC supports this pragma only\n/// for \"UTF-8\". We parse it and ignore it if UTF-8 is provided and warn\n/// otherwise to avoid -Wunknown-pragma warnings.\nstruct PragmaExecCharsetHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(Tok, diag::warn_pragma_exec_charset_expected) << \")\";"}}, | ||
[p]={ | [p]={ | ||
[Ab]={"clang/test/Preprocessor/pragma_microsoft.c:244:85: warning: #pragma execution_character_set expected \'(\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:249:85: warning: #pragma execution_character_set expected \')\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:250:36: warning: #pragma execution_character_set expected \')\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:251:36: warning: #pragma execution_character_set expected \')\' [-Wunknown-pragmas]"} | [Ab]={"clang/test/Preprocessor/pragma_microsoft.c:244:85: warning: #pragma execution_character_set expected \'(\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:249:85: warning: #pragma execution_character_set expected \')\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:250:36: warning: #pragma execution_character_set expected \')\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:251:36: warning: #pragma execution_character_set expected \')\' [-Wunknown-pragmas]"} | ||
Line 3,886: | Line 3,886: | ||
[h]=D, | [h]=D, | ||
[i]={"0f56b22614c8",1552587137,Ec,Ec}, | [i]={"0f56b22614c8",1552587137,Ec,Ec}, | ||
[j]={{I,1563,"/// \"\\#pragma execution_character_set(...)\". MSVC supports this pragma only\n/// for \"UTF-8\". We parse it and ignore it if UTF-8 is provided and warn\n/// otherwise to avoid -Wunknown-pragma warnings.\nstruct PragmaExecCharsetHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n if (II && II->isStr(\"push\")) {\n if (Tok.is(tok::comma)) {\n // MSVC supports either of these, but nothing else.\n if (ExecCharset != \"UTF-8\" && ExecCharset != \"utf-8\") {\n PP.Diag(Tok, diag::warn_pragma_exec_charset_push_invalid) << ExecCharset;"}}, | [j]={{I,1563,"/// \"\\#pragma execution_character_set(...)\". MSVC supports this pragma only\n/// for \"UTF-8\". We parse it and ignore it if UTF-8 is provided and warn\n/// otherwise to avoid -Wunknown-pragma warnings.\nstruct PragmaExecCharsetHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n if (II && II->isStr(\"push\")) {\n // ...\n if (Tok.is(tok::comma)) {\n // ...\n // MSVC supports either of these, but nothing else.\n if (ExecCharset != \"UTF-8\" && ExecCharset != \"utf-8\") {\n PP.Diag(Tok, diag::warn_pragma_exec_charset_push_invalid) << ExecCharset;"}}, | ||
[p]={ | [p]={ | ||
[Ab]={"clang/test/Preprocessor/pragma_microsoft.c:255:45: warning: #pragma execution_character_set invalid value \'asdf\', only \'UTF-8\' is supported [-Wunknown-pragmas]"} | [Ab]={"clang/test/Preprocessor/pragma_microsoft.c:255:45: warning: #pragma execution_character_set invalid value \'asdf\', only \'UTF-8\' is supported [-Wunknown-pragmas]"} | ||
Line 3,903: | Line 3,903: | ||
[h]=D, | [h]=D, | ||
[i]={"0f56b22614c8",1552587137,Ec,Ec}, | [i]={"0f56b22614c8",1552587137,Ec,Ec}, | ||
[j]={{I,1575,"/// \"\\#pragma execution_character_set(...)\". MSVC supports this pragma only\n/// for \"UTF-8\". We parse it and ignore it if UTF-8 is provided and warn\n/// otherwise to avoid -Wunknown-pragma warnings.\nstruct PragmaExecCharsetHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n if (II && II->isStr(\"push\")) {\n } else if (II && II->isStr(\"pop\")) {\n } else {\n PP.Diag(Tok, diag::warn_pragma_exec_charset_spec_invalid);"}}, | [j]={{I,1575,"/// \"\\#pragma execution_character_set(...)\". MSVC supports this pragma only\n/// for \"UTF-8\". We parse it and ignore it if UTF-8 is provided and warn\n/// otherwise to avoid -Wunknown-pragma warnings.\nstruct PragmaExecCharsetHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n if (II && II->isStr(\"push\")) {\n // ...\n } else if (II && II->isStr(\"pop\")) {\n // ...\n } else {\n PP.Diag(Tok, diag::warn_pragma_exec_charset_spec_invalid);"}}, | ||
[p]={ | [p]={ | ||
[Ab]={"clang/test/Preprocessor/pragma_microsoft.c:245:97: warning: #pragma execution_character_set expected \'push\' or \'pop\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:246:33: warning: #pragma execution_character_set expected \'push\' or \'pop\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:247:33: warning: #pragma execution_character_set expected \'push\' or \'pop\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:248:33: warning: #pragma execution_character_set expected \'push\' or \'pop\' [-Wunknown-pragmas]"} | [Ab]={"clang/test/Preprocessor/pragma_microsoft.c:245:97: warning: #pragma execution_character_set expected \'push\' or \'pop\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:246:33: warning: #pragma execution_character_set expected \'push\' or \'pop\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:247:33: warning: #pragma execution_character_set expected \'push\' or \'pop\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:248:33: warning: #pragma execution_character_set expected \'push\' or \'pop\' [-Wunknown-pragmas]"} | ||
Line 3,920: | Line 3,920: | ||
[h]=B, | [h]=B, | ||
[i]={Mc,1396996247,Ib,Ib}, | [i]={Mc,1396996247,Ib,Ib}, | ||
[j]={{s,1014,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n while (Tok.is(tok::comma)) {\n if (!Tok.isAnyIdentifier()) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_action_or_r_paren) << PragmaName;"}}, | [j]={{s,1014,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n while (Tok.is(tok::comma)) {\n // ...\n if (!Tok.isAnyIdentifier()) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_action_or_r_paren) << PragmaName;"}}, | ||
[p]={ | [p]={ | ||
[Hc]={"clang/test/Sema/pragma-section.c:39:9: warning: expected action or \')\' in \'#pragma section\' - ignored [-Wignored-pragmas]","clang/test/Sema/pragma-section.c:44:9: warning: expected action or \')\' in \'#pragma section\' - ignored [-Wignored-pragmas]"} | [Hc]={"clang/test/Sema/pragma-section.c:39:9: warning: expected action or \')\' in \'#pragma section\' - ignored [-Wignored-pragmas]","clang/test/Sema/pragma-section.c:44:9: warning: expected action or \')\' in \'#pragma section\' - ignored [-Wignored-pragmas]"} | ||
Line 3,937: | Line 3,937: | ||
[h]=B, | [h]=B, | ||
[i]={"7ce13fc940de",1297647773,"OpenCL: add support for __kernel, kernel keywords and EXTENSION,","OpenCL: add support for __kernel, kernel keywords and EXTENSION,"}, | [i]={"7ce13fc940de",1297647773,"OpenCL: add support for __kernel, kernel keywords and EXTENSION,","OpenCL: add support for __kernel, kernel keywords and EXTENSION,"}, | ||
[j]={{O,3614,"/// Parses a comma-separated list of interop-types and a prefer_type list.\n///\nbool Parser::ParseOMPInteropInfo(OMPInteropInfo &InteropInfo, OpenMPClauseKind Kind) {\n if (Kind == OMPC_init) {\n if (Tok.isNot(tok::colon) && (IsTarget || IsTargetSync))\n Diag(Tok, diag::warn_pragma_expected_colon) << \"interop types\";"},{O,3830,"/// 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 if (KindModifier > OMPC_SCHEDULE_unknown) {\n // Parse \':\'\n if (Tok.is(tok::colon))\n else\n Diag(Tok, diag::warn_pragma_expected_colon) << \"schedule modifier\";"},{O,3871,"/// 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 // | [j]={{O,3614,"/// Parses a comma-separated list of interop-types and a prefer_type list.\n///\nbool Parser::ParseOMPInteropInfo(OMPInteropInfo &InteropInfo, OpenMPClauseKind Kind) {\n // ...\n if (Kind == OMPC_init) {\n if (Tok.isNot(tok::colon) && (IsTarget || IsTargetSync))\n Diag(Tok, diag::warn_pragma_expected_colon) << \"interop types\";"},{O,3830,"/// 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 // ...\n if (Kind == OMPC_schedule) {\n // ...\n if (KindModifier > OMPC_SCHEDULE_unknown) {\n // ...\n // Parse \':\'\n if (Tok.is(tok::colon))\n // ...\n else\n Diag(Tok, diag::warn_pragma_expected_colon) << \"schedule modifier\";"},{O,3871,"/// 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 // ...\n if (Kind == OMPC_schedule) {\n // ...\n } else if (Kind == OMPC_dist_schedule) {\n // ...\n } else if (Kind == OMPC_defaultmap) {\n // ...\n // Parse \':\'\n if (Tok.is(tok::colon) || getLangOpts().OpenMP < 50) {\n if (Tok.is(tok::colon))\n // ...\n else if (Arg.back() != OMPC_DEFAULTMAP_MODIFIER_unknown)\n Diag(Tok, diag::warn_pragma_expected_colon) << \"defaultmap modifier\";"},{O,3902,"/// 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 // ...\n if (Kind == OMPC_schedule) {\n // ...\n } else if (Kind == OMPC_dist_schedule) {\n // ...\n } else if (Kind == OMPC_defaultmap) {\n // ...\n } else if (Kind == OMPC_order) {\n // ...\n if (KindModifier > OMPC_ORDER_unknown) {\n // ...\n // Parse \':\'\n if (Tok.is(tok::colon))\n // ...\n else\n Diag(Tok, diag::warn_pragma_expected_colon) << \"order modifier\";"},{O,4373,"/// Parses clauses with list.\nbool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind, OpenMPClauseKind Kind, SmallVectorImpl<Expr *> &Vars, Sema::OpenMPVarListDataTy &Data) {\n // ...\n // Handle reduction-identifier for reduction clause.\n if (Kind == OMPC_reduction || Kind == OMPC_task_reduction || Kind == OMPC_in_reduction) {\n // ...\n if (Tok.is(tok::colon))\n // ...\n else\n Diag(Tok, diag::warn_pragma_expected_colon) << \"reduction identifier\";"},{O,4419,"/// Parses clauses with list.\nbool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind, OpenMPClauseKind Kind, SmallVectorImpl<Expr *> &Vars, Sema::OpenMPVarListDataTy &Data) {\n // ...\n // Handle reduction-identifier for reduction clause.\n if (Kind == OMPC_reduction || Kind == OMPC_task_reduction || Kind == OMPC_in_reduction) {\n // ...\n } else if (Kind == OMPC_depend || Kind == OMPC_doacross) {\n // ...\n if (Tok.is(tok::colon)) {\n // ...\n } else if (Kind != OMPC_doacross || Tok.isNot(tok::r_paren)) {\n Diag(Tok, DKind == OMPD_ordered ? diag::warn_pragma_expected_colon_r_paren : diag::warn_pragma_expected_colon) << (Kind == OMPC_depend ? \"dependency type\" : \"dependence-type\");"},{O,4575,"/// Parses clauses with list.\nbool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind, OpenMPClauseKind Kind, SmallVectorImpl<Expr *> &Vars, Sema::OpenMPVarListDataTy &Data) {\n // ...\n // Handle reduction-identifier for reduction clause.\n if (Kind == OMPC_reduction || Kind == OMPC_task_reduction || Kind == OMPC_in_reduction) {\n // ...\n } else if (Kind == OMPC_depend || Kind == OMPC_doacross) {\n // ...\n } else if (Kind == OMPC_linear) {\n // ...\n } else if (Kind == OMPC_lastprivate) {\n // ...\n } else if (Kind == OMPC_map) {\n // ...\n } else if (Kind == OMPC_to || Kind == OMPC_from) {\n // ...\n if (!Data.MotionModifiers.empty() && Tok.isNot(tok::colon)) {\n if (!IsInvalidMapperModifier) {\n if (getLangOpts().OpenMP < 51)\n Diag(Tok, diag::warn_pragma_expected_colon) << \")\";"},{O,4577,"/// Parses clauses with list.\nbool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind, OpenMPClauseKind Kind, SmallVectorImpl<Expr *> &Vars, Sema::OpenMPVarListDataTy &Data) {\n // ...\n // Handle reduction-identifier for reduction clause.\n if (Kind == OMPC_reduction || Kind == OMPC_task_reduction || Kind == OMPC_in_reduction) {\n // ...\n } else if (Kind == OMPC_depend || Kind == OMPC_doacross) {\n // ...\n } else if (Kind == OMPC_linear) {\n // ...\n } else if (Kind == OMPC_lastprivate) {\n // ...\n } else if (Kind == OMPC_map) {\n // ...\n } else if (Kind == OMPC_to || Kind == OMPC_from) {\n // ...\n if (!Data.MotionModifiers.empty() && Tok.isNot(tok::colon)) {\n if (!IsInvalidMapperModifier) {\n if (getLangOpts().OpenMP < 51)\n // ...\n else\n Diag(Tok, diag::warn_pragma_expected_colon) << \"motion modifier\";"},{O,4637,"/// Parses clauses with list.\nbool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind, OpenMPClauseKind Kind, SmallVectorImpl<Expr *> &Vars, Sema::OpenMPVarListDataTy &Data) {\n // ...\n // Handle reduction-identifier for reduction clause.\n if (Kind == OMPC_reduction || Kind == OMPC_task_reduction || Kind == OMPC_in_reduction) {\n // ...\n } else if (Kind == OMPC_depend || Kind == OMPC_doacross) {\n // ...\n } else if (Kind == OMPC_linear) {\n // ...\n } else if (Kind == OMPC_lastprivate) {\n // ...\n } else if (Kind == OMPC_map) {\n // ...\n } else if (Kind == OMPC_to || Kind == OMPC_from) {\n // ...\n } else if (Kind == OMPC_allocate || (Kind == OMPC_affinity && Tok.is(tok::identifier) && PP.getSpelling(Tok) == \"iterator\")) {\n // ...\n } else if (Kind == OMPC_adjust_args) {\n // ...\n if (Data.ExtraModifier == OMPC_ADJUST_ARGS_unknown) {\n // ...\n } else {\n // ...\n ExpectAndConsume(tok::colon, diag::warn_pragma_expected_colon, \"adjust-op\");"},{s,2562,"void PragmaOpenCLExtensionHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::colon)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_colon) << Ext;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/parallel_reduction_messages.c"]={"clang/test/OpenMP/parallel_reduction_messages.c:7:213: warning: missing \':\' after reduction identifier - ignoring [-Wignored-pragmas]","clang/test/OpenMP/parallel_reduction_messages.c:9:220: warning: missing \':\' after reduction identifier - ignoring [-Wignored-pragmas]","clang/test/OpenMP/parallel_reduction_messages.c:11:221: warning: missing \':\' after reduction identifier - ignoring [-Wignored-pragmas]"} | ["clang/test/OpenMP/parallel_reduction_messages.c"]={"clang/test/OpenMP/parallel_reduction_messages.c:7:213: warning: missing \':\' after reduction identifier - ignoring [-Wignored-pragmas]","clang/test/OpenMP/parallel_reduction_messages.c:9:220: warning: missing \':\' after reduction identifier - ignoring [-Wignored-pragmas]","clang/test/OpenMP/parallel_reduction_messages.c:11:221: warning: missing \':\' after reduction identifier - ignoring [-Wignored-pragmas]"} | ||
Line 3,954: | Line 3,954: | ||
[h]=B, | [h]=B, | ||
[i]={"eb4823503331",1450415156,"[OPENMP 4.5] Parsing/sema analysis for \'depend(source)\' clause in \'ordered\' directive.","[OPENMP 4.5] Parsing/sema analysis for \'depend(source)\' clause in \'ordered\' directive."}, | [i]={"eb4823503331",1450415156,"[OPENMP 4.5] Parsing/sema analysis for \'depend(source)\' clause in \'ordered\' directive.","[OPENMP 4.5] Parsing/sema analysis for \'depend(source)\' clause in \'ordered\' directive."}, | ||
[j]={{O,4418,"/// Parses clauses with list.\nbool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind, OpenMPClauseKind Kind, SmallVectorImpl<Expr *> &Vars, Sema::OpenMPVarListDataTy &Data) {\n // Handle reduction-identifier for reduction clause.\n if (Kind == OMPC_reduction || Kind == OMPC_task_reduction || Kind == OMPC_in_reduction) {\n } else if (Kind == OMPC_depend || Kind == OMPC_doacross) {\n if (Tok.is(tok::colon)) {\n } else if (Kind != OMPC_doacross || Tok.isNot(tok::r_paren)) {\n Diag(Tok, DKind == OMPD_ordered ? diag::warn_pragma_expected_colon_r_paren : diag::warn_pragma_expected_colon) << (Kind == OMPC_depend ? \"dependency type\" : \"dependence-type\");"}}, | [j]={{O,4418,"/// Parses clauses with list.\nbool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind, OpenMPClauseKind Kind, SmallVectorImpl<Expr *> &Vars, Sema::OpenMPVarListDataTy &Data) {\n // ...\n // Handle reduction-identifier for reduction clause.\n if (Kind == OMPC_reduction || Kind == OMPC_task_reduction || Kind == OMPC_in_reduction) {\n // ...\n } else if (Kind == OMPC_depend || Kind == OMPC_doacross) {\n // ...\n if (Tok.is(tok::colon)) {\n // ...\n } else if (Kind != OMPC_doacross || Tok.isNot(tok::r_paren)) {\n Diag(Tok, DKind == OMPD_ordered ? diag::warn_pragma_expected_colon_r_paren : diag::warn_pragma_expected_colon) << (Kind == OMPC_depend ? \"dependency type\" : \"dependence-type\");"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/ordered_messages.cpp"]={"clang/test/OpenMP/ordered_messages.cpp:190:376: warning: missing \':\' or \')\' after dependency type - ignoring [-Wignored-pragmas]","clang/test/OpenMP/ordered_messages.cpp:192:271: warning: missing \':\' or \')\' after dependency type - ignoring [-Wignored-pragmas]","clang/test/OpenMP/ordered_messages.cpp:369:376: warning: missing \':\' or \')\' after dependency type - ignoring [-Wignored-pragmas]","clang/test/OpenMP/ordered_messages.cpp:371:271: warning: missing \':\' or \')\' after dependency type - ignoring [-Wignored-pragmas]"} | ["clang/test/OpenMP/ordered_messages.cpp"]={"clang/test/OpenMP/ordered_messages.cpp:190:376: warning: missing \':\' or \')\' after dependency type - ignoring [-Wignored-pragmas]","clang/test/OpenMP/ordered_messages.cpp:192:271: warning: missing \':\' or \')\' after dependency type - ignoring [-Wignored-pragmas]","clang/test/OpenMP/ordered_messages.cpp:369:376: warning: missing \':\' or \')\' after dependency type - ignoring [-Wignored-pragmas]","clang/test/OpenMP/ordered_messages.cpp:371:271: warning: missing \':\' or \')\' after dependency type - ignoring [-Wignored-pragmas]"} | ||
Line 3,971: | Line 3,971: | ||
[h]=B, | [h]=B, | ||
[i]={"1bbe00e0ca2d",1521535991,Wb,Wb}, | [i]={"1bbe00e0ca2d",1521535991,Wb,Wb}, | ||
[j]={{s,1286,"bool Parser::HandlePragmaMSAllocText(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (ExpectAndConsume(tok::comma, diag::warn_pragma_expected_comma, PragmaName))"},{s,3760,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (ExpectAndConsume(tok::comma, diag::warn_pragma_expected_comma, PragmaName))"}}, | [j]={{s,1286,"bool Parser::HandlePragmaMSAllocText(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::comma, diag::warn_pragma_expected_comma, PragmaName))"},{s,3760,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::comma, diag::warn_pragma_expected_comma, PragmaName))"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/pragma-ms-alloc-text.cpp"]={"clang/test/Sema/pragma-ms-alloc-text.cpp:4:20: warning: expected \',\' in \'#pragma alloc_text\' [-Wignored-pragmas]"} | ["clang/test/Sema/pragma-ms-alloc-text.cpp"]={"clang/test/Sema/pragma-ms-alloc-text.cpp:4:20: warning: expected \',\' in \'#pragma alloc_text\' [-Wignored-pragmas]"} | ||
Line 3,988: | Line 3,988: | ||
[h]=B, | [h]=B, | ||
[i]={"fd14fade2ffc",1237847305,fc,fc}, | [i]={"fd14fade2ffc",1237847305,fc,fc}, | ||
[j]={{s,1293,"bool Parser::HandlePragmaMSAllocText(StringRef PragmaName, SourceLocation PragmaLocation) {\n while (true) {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << PragmaName;"},{s,2001,"// #pragma GCC visibility comes in two variants:\n// \'push\' \'(\' [visibility] \')\'\n// \'pop\'\nvoid PragmaGCCVisibilityHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &VisTok) {\n if (PushPop && PushPop->isStr(\"pop\")) {\n } else if (PushPop && PushPop->isStr(\"push\")) {\n if (!VisType) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"visibility\";"},{s,2012,"// #pragma GCC visibility comes in two variants:\n// \'push\' \'(\' [visibility] \')\'\n// \'pop\'\nvoid PragmaGCCVisibilityHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &VisTok) {\n if (PushPop && PushPop->isStr(\"pop\")) {\n } else if (PushPop && PushPop->isStr(\"push\")) {\n } else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"visibility\";"},{s,2276,"// #pragma \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'options \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'align\' \'(\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'} \')\'\nstatic void ParseAlignPragma(Preprocessor &PP, Token &FirstTok, bool IsOptions) {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << (IsOptions ? \"options\" : \"align\");"},{s,2432,"// #pragma weak identifier\n// #pragma weak identifier \'=\' identifier\nvoid PragmaWeakHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &WeakTok) {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"weak\";"},{s,2445,"// #pragma weak identifier\n// #pragma weak identifier \'=\' identifier\nvoid PragmaWeakHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &WeakTok) {\n if (Tok.is(tok::equal)) {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"weak\";"},{s,2493,"// #pragma redefine_extname identifier identifier\nvoid PragmaRedefineExtnameHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &RedefToken) {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"redefine_extname\";"},{s,2502,"// #pragma redefine_extname identifier identifier\nvoid PragmaRedefineExtnameHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &RedefToken) {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"redefine_extname\";"},{s,2553,"void PragmaOpenCLExtensionHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"OPENCL\";"},{s,2688,"/// Handle \'#pragma pointers_to_members\'\n// The grammar for this pragma is as follows:\n//\n// <inheritance model> ::= (\'single\' | \'multiple\' | \'virtual\') \'_inheritance\'\n//\n// #pragma pointers_to_members \'(\' \'best_case\' \')\'\n// #pragma pointers_to_members \'(\' \'full_generality\' [\',\' inheritance-model] \')\'\n// #pragma pointers_to_members \'(\' inheritance-model \')\'\nvoid PragmaMSPointersToMembers::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (!Arg) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"pointers_to_members\";"},{s,3351,"void PragmaSTDC_FENV_ROUNDHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << PragmaName.getIdentifierInfo()->getName();"}}, | [j]={{s,1293,"bool Parser::HandlePragmaMSAllocText(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n while (true) {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << PragmaName;"},{s,2001,"// #pragma GCC visibility comes in two variants:\n// \'push\' \'(\' [visibility] \')\'\n// \'pop\'\nvoid PragmaGCCVisibilityHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &VisTok) {\n // ...\n if (PushPop && PushPop->isStr(\"pop\")) {\n // ...\n } else if (PushPop && PushPop->isStr(\"push\")) {\n // ...\n if (!VisType) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"visibility\";"},{s,2012,"// #pragma GCC visibility comes in two variants:\n// \'push\' \'(\' [visibility] \')\'\n// \'pop\'\nvoid PragmaGCCVisibilityHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &VisTok) {\n // ...\n if (PushPop && PushPop->isStr(\"pop\")) {\n // ...\n } else if (PushPop && PushPop->isStr(\"push\")) {\n // ...\n } else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"visibility\";"},{s,2276,"// #pragma \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'options \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'align\' \'(\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'} \')\'\nstatic void ParseAlignPragma(Preprocessor &PP, Token &FirstTok, bool IsOptions) {\n // ...\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << (IsOptions ? \"options\" : \"align\");"},{s,2432,"// #pragma weak identifier\n// #pragma weak identifier \'=\' identifier\nvoid PragmaWeakHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &WeakTok) {\n // ...\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"weak\";"},{s,2445,"// #pragma weak identifier\n// #pragma weak identifier \'=\' identifier\nvoid PragmaWeakHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &WeakTok) {\n // ...\n if (Tok.is(tok::equal)) {\n // ...\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"weak\";"},{s,2493,"// #pragma redefine_extname identifier identifier\nvoid PragmaRedefineExtnameHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &RedefToken) {\n // ...\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"redefine_extname\";"},{s,2502,"// #pragma redefine_extname identifier identifier\nvoid PragmaRedefineExtnameHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &RedefToken) {\n // ...\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"redefine_extname\";"},{s,2553,"void PragmaOpenCLExtensionHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"OPENCL\";"},{s,2688,"/// Handle \'#pragma pointers_to_members\'\n// The grammar for this pragma is as follows:\n//\n// <inheritance model> ::= (\'single\' | \'multiple\' | \'virtual\') \'_inheritance\'\n//\n// #pragma pointers_to_members \'(\' \'best_case\' \')\'\n// #pragma pointers_to_members \'(\' \'full_generality\' [\',\' inheritance-model] \')\'\n// #pragma pointers_to_members \'(\' inheritance-model \')\'\nvoid PragmaMSPointersToMembers::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (!Arg) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << \"pointers_to_members\";"},{s,3351,"void PragmaSTDC_FENV_ROUNDHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << PragmaName.getIdentifierInfo()->getName();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/pragma-weak.c"]={"clang/test/Parser/pragma-weak.c:7:77: warning: expected identifier in \'#pragma weak\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-weak.c:11:82: warning: expected identifier in \'#pragma weak\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-weak.c:12:81: warning: expected identifier in \'#pragma weak\' - ignored [-Wignored-pragmas]"} | ["clang/test/Parser/pragma-weak.c"]={"clang/test/Parser/pragma-weak.c:7:77: warning: expected identifier in \'#pragma weak\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-weak.c:11:82: warning: expected identifier in \'#pragma weak\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-weak.c:12:81: warning: expected identifier in \'#pragma weak\' - ignored [-Wignored-pragmas]"} | ||
Line 4,005: | Line 4,005: | ||
[h]=B, | [h]=B, | ||
[i]={"1a711b169619",1405990385,"-fms-extensions: Implement half of #pragma init_seg","-fms-extensions: Implement half of #pragma init_seg"}, | [i]={"1a711b169619",1405990385,"-fms-extensions: Implement half of #pragma init_seg","-fms-extensions: Implement half of #pragma init_seg"}, | ||
[j]={{s,1191,"// #pragma init_seg({ compiler | lib | user | \"section-name\" [, func-name]} )\nbool Parser::HandlePragmaMSInitSeg(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (!SegmentName) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_init_seg) << PragmaName;"}}, | [j]={{s,1191,"// #pragma init_seg({ compiler | lib | user | \"section-name\" [, func-name]} )\nbool Parser::HandlePragmaMSInitSeg(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (!SegmentName) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_init_seg) << PragmaName;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/pragma-init_seg.cpp"]={"clang/test/SemaCXX/pragma-init_seg.cpp:9:9: warning: expected \'compiler\', \'lib\', \'user\', or a string literal for the section name in \'#pragma init_seg\' - ignored [-Wignored-pragmas]","clang/test/SemaCXX/pragma-init_seg.cpp:10:9: warning: expected \'compiler\', \'lib\', \'user\', or a string literal for the section name in \'#pragma init_seg\' - ignored [-Wignored-pragmas]"} | ["clang/test/SemaCXX/pragma-init_seg.cpp"]={"clang/test/SemaCXX/pragma-init_seg.cpp:9:9: warning: expected \'compiler\', \'lib\', \'user\', or a string literal for the section name in \'#pragma init_seg\' - ignored [-Wignored-pragmas]","clang/test/SemaCXX/pragma-init_seg.cpp:10:9: warning: expected \'compiler\', \'lib\', \'user\', or a string literal for the section name in \'#pragma init_seg\' - ignored [-Wignored-pragmas]"} | ||
Line 4,022: | Line 4,022: | ||
[h]=B, | [h]=B, | ||
[i]={"c0dca6ded731",1392249026,Yc,Yc}, | [i]={"c0dca6ded731",1392249026,Yc,Yc}, | ||
[j]={{s,2822,"/// Handle \'#pragma vtordisp\'\n// The grammar for this pragma is as follows:\n//\n// <vtordisp-mode> ::= (\'off\' | \'on\' | \'0\' | \'1\' | \'2\' )\n//\n// #pragma vtordisp \'(\' [\'push\' \',\'] vtordisp-mode \')\'\n// #pragma vtordisp \'(\' \'pop\' \')\'\n// #pragma vtordisp \'(\' \')\'\nvoid PragmaMSVtorDisp::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Action & Sema::PSK_Push || Action & Sema::PSK_Set) {\n if (II && II->isStr(\"off\")) {\n } else if (II && II->isStr(\"on\")) {\n } else if (Tok.is(tok::numeric_constant) && PP.parseSimpleIntegerLiteral(Tok, Value)) {\n if (Value > 2) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_integer) << 0 << 2 << \"vtordisp\";"}}, | [j]={{s,2822,"/// Handle \'#pragma vtordisp\'\n// The grammar for this pragma is as follows:\n//\n// <vtordisp-mode> ::= (\'off\' | \'on\' | \'0\' | \'1\' | \'2\' )\n//\n// #pragma vtordisp \'(\' [\'push\' \',\'] vtordisp-mode \')\'\n// #pragma vtordisp \'(\' \'pop\' \')\'\n// #pragma vtordisp \'(\' \')\'\nvoid PragmaMSVtorDisp::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Action & Sema::PSK_Push || Action & Sema::PSK_Set) {\n // ...\n if (II && II->isStr(\"off\")) {\n // ...\n } else if (II && II->isStr(\"on\")) {\n // ...\n } else if (Tok.is(tok::numeric_constant) && PP.parseSimpleIntegerLiteral(Tok, Value)) {\n if (Value > 2) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_integer) << 0 << 2 << \"vtordisp\";"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/pragma-vtordisp.cpp"]={"clang/test/SemaCXX/pragma-vtordisp.cpp:15:25: warning: expected integer between 0 and 2 inclusive in \'#pragma vtordisp\' - ignored [-Wignored-pragmas]","clang/test/SemaCXX/pragma-vtordisp.cpp:32:19: warning: expected integer between 0 and 2 inclusive in \'#pragma vtordisp\' - ignored [-Wignored-pragmas]"} | ["clang/test/SemaCXX/pragma-vtordisp.cpp"]={"clang/test/SemaCXX/pragma-vtordisp.cpp:15:25: warning: expected integer between 0 and 2 inclusive in \'#pragma vtordisp\' - ignored [-Wignored-pragmas]","clang/test/SemaCXX/pragma-vtordisp.cpp:32:19: warning: expected integer between 0 and 2 inclusive in \'#pragma vtordisp\' - ignored [-Wignored-pragmas]"} | ||
Line 4,039: | Line 4,039: | ||
[h]=B, | [h]=B, | ||
[i]={"fd14fade2ffc",1237847305,fc,fc}, | [i]={"fd14fade2ffc",1237847305,fc,fc}, | ||
[j]={{s,276,"// \"\\#pragma fenv_access (on)\".\nstruct PragmaMSFenvAccessHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) override {\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << PragmaName;"},{s,982,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_lparen) << PragmaName;"},{s,1063,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_lparen) << PragmaName;"},{s,1151,"// #pragma init_seg({ compiler | lib | user | \"section-name\" [, func-name]} )\nbool Parser::HandlePragmaMSInitSeg(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (ExpectAndConsume(tok::l_paren, diag::warn_pragma_expected_lparen, PragmaName))"},{s,1210,"// #pragma strict_gs_check(pop)\n// #pragma strict_gs_check(push, \"on\" | \"off\")\n// #pragma strict_gs_check(\"on\" | \"off\")\nbool Parser::HandlePragmaMSStrictGuardStackCheck(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (ExpectAndConsume(tok::l_paren, diag::warn_pragma_expected_lparen, PragmaName))"},{s,1261,"bool Parser::HandlePragmaMSAllocText(StringRef PragmaName, SourceLocation PragmaLocation) {\n | [j]={{s,276,"// \"\\#pragma fenv_access (on)\".\nstruct PragmaMSFenvAccessHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) override {\n // ...\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << PragmaName;"},{s,982,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_lparen) << PragmaName;"},{s,1063,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_lparen) << PragmaName;"},{s,1151,"// #pragma init_seg({ compiler | lib | user | \"section-name\" [, func-name]} )\nbool Parser::HandlePragmaMSInitSeg(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::l_paren, diag::warn_pragma_expected_lparen, PragmaName))"},{s,1210,"// #pragma strict_gs_check(pop)\n// #pragma strict_gs_check(push, \"on\" | \"off\")\n// #pragma strict_gs_check(\"on\" | \"off\")\nbool Parser::HandlePragmaMSStrictGuardStackCheck(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (ExpectAndConsume(tok::l_paren, diag::warn_pragma_expected_lparen, PragmaName))"},{s,1261,"bool Parser::HandlePragmaMSAllocText(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::l_paren, diag::warn_pragma_expected_lparen, PragmaName))"},{s,1994,"// #pragma GCC visibility comes in two variants:\n// \'push\' \'(\' [visibility] \')\'\n// \'pop\'\nvoid PragmaGCCVisibilityHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &VisTok) {\n // ...\n if (PushPop && PushPop->isStr(\"pop\")) {\n // ...\n } else if (PushPop && PushPop->isStr(\"push\")) {\n // ...\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << \"visibility\";"},{s,2047,"// #pragma pack(...) comes in the following delicious flavors:\n// pack \'(\' [integer] \')\'\n// pack \'(\' \'show\' \')\'\n// pack \'(\' (\'push\' | \'pop\') [\',\' identifier] [, integer] \')\'\nvoid PragmaPackHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &PackTok) {\n // ...\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << \"pack\";"},{s,2265,"// #pragma \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'options \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'align\' \'(\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'} \')\'\nstatic void ParseAlignPragma(Preprocessor &PP, Token &FirstTok, bool IsOptions) {\n // ...\n if (PP.getLangOpts().XLPragmaPack) {\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << \"align\";"},{s,2352,"// #pragma unused(identifier)\nvoid PragmaUnusedHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &UnusedTok) {\n // ...\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << \"unused\";"},{s,2681,"/// Handle \'#pragma pointers_to_members\'\n// The grammar for this pragma is as follows:\n//\n// <inheritance model> ::= (\'single\' | \'multiple\' | \'virtual\') \'_inheritance\'\n//\n// #pragma pointers_to_members \'(\' \'best_case\' \')\'\n// #pragma pointers_to_members \'(\' \'full_generality\' [\',\' inheritance-model] \')\'\n// #pragma pointers_to_members \'(\' inheritance-model \')\'\nvoid PragmaMSPointersToMembers::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(PointersToMembersLoc, diag::warn_pragma_expected_lparen) << \"pointers_to_members\";"},{s,2778,"/// Handle \'#pragma vtordisp\'\n// The grammar for this pragma is as follows:\n//\n// <vtordisp-mode> ::= (\'off\' | \'on\' | \'0\' | \'1\' | \'2\' )\n//\n// #pragma vtordisp \'(\' [\'push\' \',\'] vtordisp-mode \')\'\n// #pragma vtordisp \'(\' \'pop\' \')\'\n// #pragma vtordisp \'(\' \')\'\nvoid PragmaMSVtorDisp::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(VtorDispLoc, diag::warn_pragma_expected_lparen) << \"vtordisp\";"},{s,3671,"/// Handle the Microsoft \\#pragma intrinsic extension.\n///\n/// The syntax is:\n/// \\code\n/// #pragma intrinsic(memset)\n/// #pragma intrinsic(strlen, memcpy)\n/// \\endcode\n///\n/// Pragma intrisic tells the compiler to use a builtin version of the\n/// function. Clang does it anyway, so the pragma doesn\'t really do anything.\n/// Anyway, we emit a warning if the function specified in \\#pragma intrinsic\n/// isn\'t an intrinsic in clang and suggest to include intrin.h.\nvoid PragmaMSIntrinsicHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << \"intrinsic\";"},{s,3707,"bool Parser::HandlePragmaMSFunction(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::l_paren, diag::warn_pragma_expected_lparen, PragmaName))"},{s,3742,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::l_paren, diag::warn_pragma_expected_lparen, PragmaName))"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/pragma-pack.c"]={"clang/test/Parser/pragma-pack.c:6:73: warning: missing \'(\' after \'#pragma pack\' - ignoring [-Wignored-pragmas]"} | ["clang/test/Parser/pragma-pack.c"]={"clang/test/Parser/pragma-pack.c:6:73: warning: missing \'(\' after \'#pragma pack\' - ignoring [-Wignored-pragmas]"} | ||
Line 4,056: | Line 4,056: | ||
[h]=B, | [h]=B, | ||
[i]={"722b1df86968",1405642396,"Fix parsing certain kinds of strings in the MS section pragmas","Fix parsing certain kinds of strings in the MS section pragmas"}, | [i]={"722b1df86968",1405642396,"Fix parsing certain kinds of strings in the MS section pragmas","Fix parsing certain kinds of strings in the MS section pragmas"}, | ||
[j]={{s,997,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (SegmentName->getCharByteWidth() != 1) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string) << PragmaName;"},{s,1119,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isNot(tok::r_paren)) {\n if (SegmentName->getCharByteWidth() != 1) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string) << PragmaName;"},{s,1183,"// #pragma init_seg({ compiler | lib | user | \"section-name\" [, func-name]} )\nbool Parser::HandlePragmaMSInitSeg(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isAnyIdentifier()) {\n } else if (Tok.is(tok::string_literal)) {\n if (SegmentName->getCharByteWidth() != 1) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string) << PragmaName;"},{s,1272,"bool Parser::HandlePragmaMSAllocText(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.is(tok::string_literal)) {\n if (SegmentName->getCharByteWidth() != 1) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string) << PragmaName;"},{s,3755,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (OptimizationList->getCharByteWidth() != 1) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string) << PragmaName;"}}, | [j]={{s,997,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (SegmentName->getCharByteWidth() != 1) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string) << PragmaName;"},{s,1119,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n // ...\n if (SegmentName->getCharByteWidth() != 1) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string) << PragmaName;"},{s,1183,"// #pragma init_seg({ compiler | lib | user | \"section-name\" [, func-name]} )\nbool Parser::HandlePragmaMSInitSeg(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.isAnyIdentifier()) {\n // ...\n } else if (Tok.is(tok::string_literal)) {\n // ...\n if (SegmentName->getCharByteWidth() != 1) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string) << PragmaName;"},{s,1272,"bool Parser::HandlePragmaMSAllocText(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.is(tok::string_literal)) {\n // ...\n if (SegmentName->getCharByteWidth() != 1) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string) << PragmaName;"},{s,3755,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (OptimizationList->getCharByteWidth() != 1) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string) << PragmaName;"}}, | ||
[p]={ | [p]={ | ||
[Hc]={"clang/test/Sema/pragma-section.c:12:9: warning: expected non-wide string literal in \'#pragma data_seg\' [-Wignored-pragmas]"} | [Hc]={"clang/test/Sema/pragma-section.c:12:9: warning: expected non-wide string literal in \'#pragma data_seg\' [-Wignored-pragmas]"} | ||
Line 4,073: | Line 4,073: | ||
[h]=B, | [h]=B, | ||
[i]={"2e8331cab616",1481916128,"[OpenCL] Allow disabling types and declarations associated with extensions","[OpenCL] Allow disabling types and declarations associated with extensions"}, | [i]={"2e8331cab616",1481916128,"[OpenCL] Allow disabling types and declarations associated with extensions","[OpenCL] Allow disabling types and declarations associated with extensions"}, | ||
[j]={{s,902,"void Parser::HandlePragmaOpenCLExtension() {\n // OpenCL 1.1 9.1: \"The all variant sets the behavior for all extensions,\n // overriding all previously issued extension directives, but only if the\n // behavior is set to disable.\"\n if (Name == \"all\") {\n if (State == Disable)\n else\n PP.Diag(NameLoc, diag::warn_pragma_expected_predicate) << 1;"},{s,2568,"void PragmaOpenCLExtensionHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_predicate) << 0;"},{s,2583,"void PragmaOpenCLExtensionHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Pred->isStr(\"enable\")) {\n } else if (Pred->isStr(\"disable\")) {\n } else if (Pred->isStr(\"begin\"))\n else if (Pred->isStr(\"end\"))\n else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_predicate) << Ext->isStr(\"all\");"}}, | [j]={{s,902,"void Parser::HandlePragmaOpenCLExtension() {\n // ...\n // OpenCL 1.1 9.1: \"The all variant sets the behavior for all extensions,\n // overriding all previously issued extension directives, but only if the\n // behavior is set to disable.\"\n if (Name == \"all\") {\n if (State == Disable)\n // ...\n else\n PP.Diag(NameLoc, diag::warn_pragma_expected_predicate) << 1;"},{s,2568,"void PragmaOpenCLExtensionHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_predicate) << 0;"},{s,2583,"void PragmaOpenCLExtensionHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Pred->isStr(\"enable\")) {\n // ...\n } else if (Pred->isStr(\"disable\")) {\n // ...\n } else if (Pred->isStr(\"begin\"))\n // ...\n else if (Pred->isStr(\"end\"))\n // ...\n else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_predicate) << Ext->isStr(\"all\");"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/opencl-pragma.cl"]={"clang/test/Parser/opencl-pragma.cl:10:40: warning: expected \'enable\', \'disable\', \'begin\' or \'end\' - ignoring [-Wignored-pragmas]","clang/test/Parser/opencl-pragma.cl:8:26: warning: expected \'disable\' - ignoring [-Wignored-pragmas]"} | ["clang/test/Parser/opencl-pragma.cl"]={"clang/test/Parser/opencl-pragma.cl:10:40: warning: expected \'enable\', \'disable\', \'begin\' or \'end\' - ignoring [-Wignored-pragmas]","clang/test/Parser/opencl-pragma.cl:8:26: warning: expected \'disable\' - ignoring [-Wignored-pragmas]"} | ||
Line 4,090: | Line 4,090: | ||
[h]=B, | [h]=B, | ||
[i]={"88969810565a",1392059197,"Basic: Clean up malformed pragma diagnostics","Basic: Clean up malformed pragma diagnostics"}, | [i]={"88969810565a",1392059197,"Basic: Clean up malformed pragma diagnostics","Basic: Clean up malformed pragma diagnostics"}, | ||
[j]={{s,1092,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isAnyIdentifier()) {\n if (Action != Sema::PSK_Reset) {\n if (Tok.is(tok::comma)) {\n // If we\'ve got a comma, we either need a label or a string.\n if (Tok.isAnyIdentifier()) {\n if (Tok.is(tok::comma))\n else if (Tok.isNot(tok::r_paren)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_punc) << PragmaName;"},{s,1098,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isAnyIdentifier()) {\n if (Action != Sema::PSK_Reset) {\n if (Tok.is(tok::comma)) {\n } else if (Tok.isNot(tok::r_paren)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_punc) << PragmaName;"},{s,1220,"// #pragma strict_gs_check(pop)\n// #pragma strict_gs_check(push, \"on\" | \"off\")\n// #pragma strict_gs_check(\"on\" | \"off\")\nbool Parser::HandlePragmaMSStrictGuardStackCheck(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.is(tok::identifier)) {\n if (PushPop == \"push\") {\n if (ExpectAndConsume(tok::comma, diag::warn_pragma_expected_punc, PragmaName))"},{s,2388,"// #pragma unused(identifier)\nvoid PragmaUnusedHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &UnusedTok) {\n while (true) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_punc) << \"unused\";"},{s,2790,"/// Handle \'#pragma vtordisp\'\n// The grammar for this pragma is as follows:\n//\n// <vtordisp-mode> ::= (\'off\' | \'on\' | \'0\' | \'1\' | \'2\' )\n//\n// #pragma vtordisp \'(\' [\'push\' \',\'] vtordisp-mode \')\'\n// #pragma vtordisp \'(\' \'pop\' \')\'\n// #pragma vtordisp \'(\' \')\'\nvoid PragmaMSVtorDisp::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (II) {\n if (II->isStr(\"push\")) {\n if (Tok.isNot(tok::comma)) {\n PP.Diag(VtorDispLoc, diag::warn_pragma_expected_punc) << \"vtordisp\";"}} | [j]={{s,1092,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.isAnyIdentifier()) {\n // ...\n if (Action != Sema::PSK_Reset) {\n // ...\n if (Tok.is(tok::comma)) {\n // ...\n // If we\'ve got a comma, we either need a label or a string.\n if (Tok.isAnyIdentifier()) {\n // ...\n if (Tok.is(tok::comma))\n // ...\n else if (Tok.isNot(tok::r_paren)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_punc) << PragmaName;"},{s,1098,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.isAnyIdentifier()) {\n // ...\n if (Action != Sema::PSK_Reset) {\n // ...\n if (Tok.is(tok::comma)) {\n // ...\n } else if (Tok.isNot(tok::r_paren)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_punc) << PragmaName;"},{s,1220,"// #pragma strict_gs_check(pop)\n// #pragma strict_gs_check(push, \"on\" | \"off\")\n// #pragma strict_gs_check(\"on\" | \"off\")\nbool Parser::HandlePragmaMSStrictGuardStackCheck(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.is(tok::identifier)) {\n // ...\n if (PushPop == \"push\") {\n // ...\n if (ExpectAndConsume(tok::comma, diag::warn_pragma_expected_punc, PragmaName))"},{s,2388,"// #pragma unused(identifier)\nvoid PragmaUnusedHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &UnusedTok) {\n // ...\n while (true) {\n // ...\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_punc) << \"unused\";"},{s,2790,"/// Handle \'#pragma vtordisp\'\n// The grammar for this pragma is as follows:\n//\n// <vtordisp-mode> ::= (\'off\' | \'on\' | \'0\' | \'1\' | \'2\' )\n//\n// #pragma vtordisp \'(\' [\'push\' \',\'] vtordisp-mode \')\'\n// #pragma vtordisp \'(\' \'pop\' \')\'\n// #pragma vtordisp \'(\' \')\'\nvoid PragmaMSVtorDisp::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (II) {\n if (II->isStr(\"push\")) {\n // ...\n if (Tok.isNot(tok::comma)) {\n PP.Diag(VtorDispLoc, diag::warn_pragma_expected_punc) << \"vtordisp\";"}} | ||
}, | }, | ||
["warn_pragma_expected_rparen"]={ | ["warn_pragma_expected_rparen"]={ | ||
Line 4,104: | Line 4,104: | ||
[h]=B, | [h]=B, | ||
[i]={"fd14fade2ffc",1237847305,fc,fc}, | [i]={"fd14fade2ffc",1237847305,fc,fc}, | ||
[j]={{s,298,"// \"\\#pragma fenv_access (on)\".\nstruct PragmaMSFenvAccessHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) override {\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << PragmaName;"},{s,1046,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_rparen) << PragmaName;"},{s,1128,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n | [j]={{s,298,"// \"\\#pragma fenv_access (on)\".\nstruct PragmaMSFenvAccessHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) override {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << PragmaName;"},{s,1046,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_rparen) << PragmaName;"},{s,1128,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_rparen) << PragmaName;"},{s,1195,"// #pragma init_seg({ compiler | lib | user | \"section-name\" [, func-name]} )\nbool Parser::HandlePragmaMSInitSeg(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::r_paren, diag::warn_pragma_expected_rparen, PragmaName) || ExpectAndConsume(tok::eof, diag::warn_pragma_extra_tokens_at_eol, PragmaName))"},{s,1246,"// #pragma strict_gs_check(pop)\n// #pragma strict_gs_check(push, \"on\" | \"off\")\n// #pragma strict_gs_check(\"on\" | \"off\")\nbool Parser::HandlePragmaMSStrictGuardStackCheck(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::r_paren, diag::warn_pragma_expected_rparen, PragmaName))"},{s,1307,"bool Parser::HandlePragmaMSAllocText(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::r_paren, diag::warn_pragma_expected_rparen, PragmaName) || ExpectAndConsume(tok::eof, diag::warn_pragma_extra_tokens_at_eol, PragmaName))"},{s,2007,"// #pragma GCC visibility comes in two variants:\n// \'push\' \'(\' [visibility] \')\'\n// \'pop\'\nvoid PragmaGCCVisibilityHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &VisTok) {\n // ...\n if (PushPop && PushPop->isStr(\"pop\")) {\n // ...\n } else if (PushPop && PushPop->isStr(\"push\")) {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << \"visibility\";"},{s,2124,"// #pragma pack(...) comes in the following delicious flavors:\n// pack \'(\' [integer] \')\'\n// pack \'(\' \'show\' \')\'\n// pack \'(\' (\'push\' | \'pop\') [\',\' identifier] [, integer] \')\'\nvoid PragmaPackHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &PackTok) {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << \"pack\";"},{s,2304,"// #pragma \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'options \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'align\' \'(\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'} \')\'\nstatic void ParseAlignPragma(Preprocessor &PP, Token &FirstTok, bool IsOptions) {\n // ...\n if (PP.getLangOpts().XLPragmaPack) {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << \"align\";"},{s,2835,"/// Handle \'#pragma vtordisp\'\n// The grammar for this pragma is as follows:\n//\n// <vtordisp-mode> ::= (\'off\' | \'on\' | \'0\' | \'1\' | \'2\' )\n//\n// #pragma vtordisp \'(\' [\'push\' \',\'] vtordisp-mode \')\'\n// #pragma vtordisp \'(\' \'pop\' \')\'\n// #pragma vtordisp \'(\' \')\'\nvoid PragmaMSVtorDisp::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n // Finish the pragma: \')\' $\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(VtorDispLoc, diag::warn_pragma_expected_rparen) << \"vtordisp\";"},{s,3692,"/// Handle the Microsoft \\#pragma intrinsic extension.\n///\n/// The syntax is:\n/// \\code\n/// #pragma intrinsic(memset)\n/// #pragma intrinsic(strlen, memcpy)\n/// \\endcode\n///\n/// Pragma intrisic tells the compiler to use a builtin version of the\n/// function. Clang does it anyway, so the pragma doesn\'t really do anything.\n/// Anyway, we emit a warning if the function specified in \\#pragma intrinsic\n/// isn\'t an intrinsic in clang and suggest to include intrin.h.\nvoid PragmaMSIntrinsicHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << \"intrinsic\";"},{s,3728,"bool Parser::HandlePragmaMSFunction(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::r_paren, diag::warn_pragma_expected_rparen, PragmaName) || ExpectAndConsume(tok::eof, diag::warn_pragma_extra_tokens_at_eol, PragmaName))"},{s,3779,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::r_paren, diag::warn_pragma_expected_rparen, PragmaName))"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/pragma-ms-alloc-text.cpp"]={"clang/test/Sema/pragma-ms-alloc-text.cpp:5:22: warning: missing \')\' after \'#pragma alloc_text\' - ignoring [-Wignored-pragmas]","clang/test/Sema/pragma-ms-alloc-text.cpp:15:22: warning: missing \')\' after \'#pragma alloc_text\' - ignoring [-Wignored-pragmas]"} | ["clang/test/Sema/pragma-ms-alloc-text.cpp"]={"clang/test/Sema/pragma-ms-alloc-text.cpp:5:22: warning: missing \')\' after \'#pragma alloc_text\' - ignoring [-Wignored-pragmas]","clang/test/Sema/pragma-ms-alloc-text.cpp:15:22: warning: missing \')\' after \'#pragma alloc_text\' - ignoring [-Wignored-pragmas]"} | ||
Line 4,121: | Line 4,121: | ||
[h]=B, | [h]=B, | ||
[i]={Mc,1396996247,Ib,Ib}, | [i]={Mc,1396996247,Ib,Ib}, | ||
[j]={{s,1109,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isNot(tok::r_paren)) {\n if (Tok.isNot(tok::string_literal)) {\n unsigned DiagID = Action != Sema::PSK_Reset ? !SlotLabel.empty() ? diag::warn_pragma_expected_section_name : diag::warn_pragma_expected_section_label_or_name : diag::warn_pragma_expected_section_push_pop_or_name;"}}, | [j]={{s,1109,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n if (Tok.isNot(tok::string_literal)) {\n unsigned DiagID = Action != Sema::PSK_Reset ? !SlotLabel.empty() ? diag::warn_pragma_expected_section_name : diag::warn_pragma_expected_section_label_or_name : diag::warn_pragma_expected_section_push_pop_or_name;"}}, | ||
[p]={ | [p]={ | ||
[Hc]={"clang/test/Sema/pragma-section.c:28:9: warning: expected a stack label or a string literal for the section name in \'#pragma bss_seg\' - ignored [-Wignored-pragmas]"} | [Hc]={"clang/test/Sema/pragma-section.c:28:9: warning: expected a stack label or a string literal for the section name in \'#pragma bss_seg\' - ignored [-Wignored-pragmas]"} | ||
Line 4,138: | Line 4,138: | ||
[h]=B, | [h]=B, | ||
[i]={Mc,1396996247,Ib,Ib}, | [i]={Mc,1396996247,Ib,Ib}, | ||
[j]={{s,988,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n // Parsing code for pragma section\n if (Tok.isNot(tok::string_literal)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_section_name) << PragmaName;"},{s,1108,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isNot(tok::r_paren)) {\n if (Tok.isNot(tok::string_literal)) {\n unsigned DiagID = Action != Sema::PSK_Reset ? !SlotLabel.empty() ? diag::warn_pragma_expected_section_name : diag::warn_pragma_expected_section_label_or_name : diag::warn_pragma_expected_section_push_pop_or_name;"},{s,1281,"bool Parser::HandlePragmaMSAllocText(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.is(tok::string_literal)) {\n } else if (Tok.is(tok::identifier)) {\n } else {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_section_name) << PragmaName;"}}, | [j]={{s,988,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n // Parsing code for pragma section\n if (Tok.isNot(tok::string_literal)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_section_name) << PragmaName;"},{s,1108,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n if (Tok.isNot(tok::string_literal)) {\n unsigned DiagID = Action != Sema::PSK_Reset ? !SlotLabel.empty() ? diag::warn_pragma_expected_section_name : diag::warn_pragma_expected_section_label_or_name : diag::warn_pragma_expected_section_push_pop_or_name;"},{s,1281,"bool Parser::HandlePragmaMSAllocText(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.is(tok::string_literal)) {\n // ...\n } else if (Tok.is(tok::identifier)) {\n // ...\n } else {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_section_name) << PragmaName;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/pragma-ms-alloc-text.cpp"]={"clang/test/Sema/pragma-ms-alloc-text.cpp:3:9: warning: expected a string literal for the section name in \'#pragma alloc_text\' - ignored [-Wignored-pragmas]","clang/test/Sema/pragma-ms-alloc-text.cpp:7:9: warning: expected a string literal for the section name in \'#pragma alloc_text\' - ignored [-Wignored-pragmas]"} | ["clang/test/Sema/pragma-ms-alloc-text.cpp"]={"clang/test/Sema/pragma-ms-alloc-text.cpp:3:9: warning: expected a string literal for the section name in \'#pragma alloc_text\' - ignored [-Wignored-pragmas]","clang/test/Sema/pragma-ms-alloc-text.cpp:7:9: warning: expected a string literal for the section name in \'#pragma alloc_text\' - ignored [-Wignored-pragmas]"} | ||
Line 4,155: | Line 4,155: | ||
[h]=B, | [h]=B, | ||
[i]={Mc,1396996247,Ib,Ib}, | [i]={Mc,1396996247,Ib,Ib}, | ||
[j]={{s,1077,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isAnyIdentifier()) {\n if (PushPop == \"push\")\n else if (PushPop == \"pop\")\n else {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_section_push_pop_or_name) << PragmaName;"},{s,1110,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isNot(tok::r_paren)) {\n if (Tok.isNot(tok::string_literal)) {\n unsigned DiagID = Action != Sema::PSK_Reset ? !SlotLabel.empty() ? diag::warn_pragma_expected_section_name : diag::warn_pragma_expected_section_label_or_name : diag::warn_pragma_expected_section_push_pop_or_name;"}}, | [j]={{s,1077,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.isAnyIdentifier()) {\n // ...\n if (PushPop == \"push\")\n // ...\n else if (PushPop == \"pop\")\n // ...\n else {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_section_push_pop_or_name) << PragmaName;"},{s,1110,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n if (Tok.isNot(tok::string_literal)) {\n unsigned DiagID = Action != Sema::PSK_Reset ? !SlotLabel.empty() ? diag::warn_pragma_expected_section_name : diag::warn_pragma_expected_section_label_or_name : diag::warn_pragma_expected_section_push_pop_or_name;"}}, | ||
[p]={ | [p]={ | ||
[Hc]={"clang/test/Sema/pragma-section.c:24:9: warning: expected push, pop or a string literal for the section name in \'#pragma bss_seg\' - ignored [-Wignored-pragmas]","clang/test/Sema/pragma-section.c:25:9: warning: expected push, pop or a string literal for the section name in \'#pragma bss_seg\' - ignored [-Wignored-pragmas]"} | [Hc]={"clang/test/Sema/pragma-section.c:24:9: warning: expected push, pop or a string literal for the section name in \'#pragma bss_seg\' - ignored [-Wignored-pragmas]","clang/test/Sema/pragma-section.c:25:9: warning: expected push, pop or a string literal for the section name in \'#pragma bss_seg\' - ignored [-Wignored-pragmas]"} | ||
Line 4,172: | Line 4,172: | ||
[h]=B, | [h]=B, | ||
[i]={"1bbe00e0ca2d",1521535991,Wb,Wb}, | [i]={"1bbe00e0ca2d",1521535991,Wb,Wb}, | ||
[j]={{s,3747,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isNot(tok::string_literal)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_string) << PragmaName;"}}, | [j]={{s,3747,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.isNot(tok::string_literal)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_expected_string) << PragmaName;"}}, | ||
[p]={ | [p]={ | ||
[Ab]={"clang/test/Preprocessor/pragma_microsoft.c:225:9: warning: expected string literal in \'#pragma optimize\' - ignoring [-Wignored-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:226:9: warning: expected string literal in \'#pragma optimize\' - ignoring [-Wignored-pragmas]"} | [Ab]={"clang/test/Preprocessor/pragma_microsoft.c:225:9: warning: expected string literal in \'#pragma optimize\' - ignoring [-Wignored-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:226:9: warning: expected string literal in \'#pragma optimize\' - ignoring [-Wignored-pragmas]"} | ||
Line 4,190: | Line 4,190: | ||
[h]=B, | [h]=B, | ||
[i]={"64936ce91dba",1463154277,"[OpenCL] Add supported OpenCL extensions to target info.","[OpenCL] Add supported OpenCL extensions to target info."}, | [i]={"64936ce91dba",1463154277,"[OpenCL] Add supported OpenCL extensions to target info.","[OpenCL] Add supported OpenCL extensions to target info."}, | ||
[j]={{s,918,"void Parser::HandlePragmaOpenCLExtension() {\n // OpenCL 1.1 9.1: \"The all variant sets the behavior for all extensions,\n // overriding all previously issued extension directives, but only if the\n // behavior is set to disable.\"\n if (Name == \"all\") {\n } else if (State == Begin) {\n } else if (State == End) {\n } else if (!Opt.isKnown(Name) || !Opt.isWithPragma(Name))\n else if (Opt.isSupportedExtension(Name, getLangOpts()))\n else if (Opt.isSupportedCoreOrOptionalCore(Name, getLangOpts()))\n PP.Diag(NameLoc, diag::warn_pragma_extension_is_core) << Ident;"}}, | [j]={{s,918,"void Parser::HandlePragmaOpenCLExtension() {\n // ...\n // OpenCL 1.1 9.1: \"The all variant sets the behavior for all extensions,\n // overriding all previously issued extension directives, but only if the\n // behavior is set to disable.\"\n if (Name == \"all\") {\n // ...\n } else if (State == Begin) {\n // ...\n } else if (State == End) {\n // ...\n } else if (!Opt.isKnown(Name) || !Opt.isWithPragma(Name))\n // ...\n else if (Opt.isSupportedExtension(Name, getLangOpts()))\n // ...\n else if (Opt.isSupportedCoreOrOptionalCore(Name, getLangOpts()))\n PP.Diag(NameLoc, diag::warn_pragma_extension_is_core) << Ident;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Misc/amdgcn.languageOptsOpenCL.cl"]={"clang/test/Misc/amdgcn.languageOptsOpenCL.cl:57:26: warning: OpenCL extension \'cl_khr_byte_addressable_store\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:65:26: warning: OpenCL extension \'cl_khr_global_int32_base_atomics\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:73:26: warning: OpenCL extension \'cl_khr_global_int32_extended_atomics\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:81:26: warning: OpenCL extension \'cl_khr_local_int32_base_atomics\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:89:26: warning: OpenCL extension \'cl_khr_local_int32_extended_atomics\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:98:26: warning: OpenCL extension \'cl_khr_fp64\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:107:26: warning: OpenCL extension \'cl_khr_3d_image_writes\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]"} | ["clang/test/Misc/amdgcn.languageOptsOpenCL.cl"]={"clang/test/Misc/amdgcn.languageOptsOpenCL.cl:57:26: warning: OpenCL extension \'cl_khr_byte_addressable_store\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:65:26: warning: OpenCL extension \'cl_khr_global_int32_base_atomics\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:73:26: warning: OpenCL extension \'cl_khr_global_int32_extended_atomics\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:81:26: warning: OpenCL extension \'cl_khr_local_int32_base_atomics\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:89:26: warning: OpenCL extension \'cl_khr_local_int32_extended_atomics\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:98:26: warning: OpenCL extension \'cl_khr_fp64\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:107:26: warning: OpenCL extension \'cl_khr_3d_image_writes\' is core feature or supported optional core feature - ignoring [-Wpedantic-core-features]"} | ||
Line 4,207: | Line 4,207: | ||
[h]=B, | [h]=B, | ||
[i]={"f5867dd51a83",1244162998,"Add parser support for #pragma weak.","Add parser support for #pragma weak."}, | [i]={"f5867dd51a83",1244162998,"Add parser support for #pragma weak.","Add parser support for #pragma weak."}, | ||
[j]={{s,305,"// \"\\#pragma fenv_access (on)\".\nstruct PragmaMSFenvAccessHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) override {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << PragmaName;"},{s,1051,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isNot(tok::eof)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_extra_tokens_at_eol) << PragmaName;"},{s,1133,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.isNot(tok::eof)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_extra_tokens_at_eol) << PragmaName;"},{s,1197,"// #pragma init_seg({ compiler | lib | user | \"section-name\" [, func-name]} )\nbool Parser::HandlePragmaMSInitSeg(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (ExpectAndConsume(tok::r_paren, diag::warn_pragma_expected_rparen, PragmaName) || ExpectAndConsume(tok::eof, diag::warn_pragma_extra_tokens_at_eol, PragmaName))"},{s,1250,"// #pragma strict_gs_check(pop)\n// #pragma strict_gs_check(push, \"on\" | \"off\")\n// #pragma strict_gs_check(\"on\" | \"off\")\nbool Parser::HandlePragmaMSStrictGuardStackCheck(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (ExpectAndConsume(tok::eof, diag::warn_pragma_extra_tokens_at_eol, PragmaName))"},{s,1309,"bool Parser::HandlePragmaMSAllocText(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (ExpectAndConsume(tok::r_paren, diag::warn_pragma_expected_rparen, PragmaName) || ExpectAndConsume(tok::eof, diag::warn_pragma_extra_tokens_at_eol, PragmaName))"},{s,1422,"bool Parser::HandlePragmaLoopHint(LoopHint &Hint) {\n // Validate the argument.\n if (StateOption) {\n if (Toks.size() > 2)\n Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << PragmaLoopHintString(Info->PragmaName, Info->Option);"},{s,1439,"bool Parser::HandlePragmaLoopHint(LoopHint &Hint) {\n // Validate the argument.\n if (StateOption) {\n } else if (OptionInfo && OptionInfo->getName() == \"vectorize_width\") {\n // Look for vectorize_width(fixed|scalable)\n if (IsScalableStr == \"scalable\" || IsScalableStr == \"fixed\") {\n if (Toks.size() > 2) {\n Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << PragmaLoopHintString(Info->PragmaName, Info->Option);"},{s,1478,"bool Parser::HandlePragmaLoopHint(LoopHint &Hint) {\n // Validate the argument.\n if (StateOption) {\n } else if (OptionInfo && OptionInfo->getName() == \"vectorize_width\") {\n // Look for vectorize_width(fixed|scalable)\n if (IsScalableStr == \"scalable\" || IsScalableStr == \"fixed\") {\n } else {\n // Tokens following an error in an ill-formed constant expression will\n // remain in the token stream and must be removed.\n if (Tok.isNot(tok::eof)) {\n Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << PragmaLoopHintString(Info->PragmaName, Info->Option);"},{s,1503,"bool Parser::HandlePragmaLoopHint(LoopHint &Hint) {\n // Validate the argument.\n if (StateOption) {\n } else if (OptionInfo && OptionInfo->getName() == \"vectorize_width\") {\n } else {\n // Tokens following an error in an ill-formed constant expression will\n // remain in the token stream and must be removed.\n if (Tok.isNot(tok::eof)) {\n Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << PragmaLoopHintString(Info->PragmaName, Info->Option);"},{s,2019,"// #pragma GCC visibility comes in two variants:\n// \'push\' \'(\' [visibility] \')\'\n// \'pop\'\nvoid PragmaGCCVisibilityHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &VisTok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"visibility\";"},{s,2131,"// #pragma pack(...) comes in the following delicious flavors:\n// pack \'(\' [integer] \')\'\n// pack \'(\' \'show\' \')\'\n// pack \'(\' (\'push\' | \'pop\') [\',\' identifier] [, integer] \')\'\nvoid PragmaPackHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &PackTok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"pack\";"},{s,2179,"// #pragma ms_struct on\n// #pragma ms_struct off\nvoid PragmaMSStructHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &MSStructTok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"ms_struct\";"},{s,2312,"// #pragma \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'options \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'align\' \'(\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'} \')\'\nstatic void ParseAlignPragma(Preprocessor &PP, Token &FirstTok, bool IsOptions) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << (IsOptions ? \"options\" : \"align\");"},{s,2394,"// #pragma unused(identifier)\nvoid PragmaUnusedHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &UnusedTok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"unused\";"},{s,2454,"// #pragma weak identifier\n// #pragma weak identifier \'=\' identifier\nvoid PragmaWeakHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &WeakTok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"weak\";"},{s,2511,"// #pragma redefine_extname identifier identifier\nvoid PragmaRedefineExtnameHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &RedefToken) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"redefine_extname\";"},{s,2591,"void PragmaOpenCLExtensionHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"OPENCL EXTENSION\";"},{s,2750,"/// Handle \'#pragma pointers_to_members\'\n// The grammar for this pragma is as follows:\n//\n// <inheritance model> ::= (\'single\' | \'multiple\' | \'virtual\') \'_inheritance\'\n//\n// #pragma pointers_to_members \'(\' \'best_case\' \')\'\n// #pragma pointers_to_members \'(\' \'full_generality\' [\',\' inheritance-model] \')\'\n// #pragma pointers_to_members \'(\' inheritance-model \')\'\nvoid PragmaMSPointersToMembers::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"pointers_to_members\";"},{s,2841,"/// Handle \'#pragma vtordisp\'\n// The grammar for this pragma is as follows:\n//\n// <vtordisp-mode> ::= (\'off\' | \'on\' | \'0\' | \'1\' | \'2\' )\n//\n// #pragma vtordisp \'(\' [\'push\' \',\'] vtordisp-mode \')\'\n// #pragma vtordisp \'(\' \'pop\' \')\'\n// #pragma vtordisp \'(\' \')\'\nvoid PragmaMSVtorDisp::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"vtordisp\";"},{s,2996,"/// Handle the \\#pragma float_control extension.\n///\n/// The syntax is:\n/// \\code\n/// #pragma float_control(keyword[, setting] [,push])\n/// \\endcode\n/// Where \'keyword\' and \'setting\' are identifiers.\n// \'keyword\' can be: precise, except, push, pop\n// \'setting\' can be: on, off\n/// The optional arguments \'setting\' and \'push\' are supported only\n/// when the keyword is \'precise\' or \'except\'.\nvoid PragmaFloatControlHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"float_control\";"},{s,3318,"void PragmaFPHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"clang fp\";"},{s,3373,"void PragmaSTDC_FENV_ROUNDHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"STDC FENV_ROUND\";"},{s,3566,"/// Handle the \\#pragma clang loop directive.\n/// #pragma clang \'loop\' loop-hints\n///\n/// loop-hints:\n/// loop-hint loop-hints[opt]\n///\n/// loop-hint:\n/// \'vectorize\' \'(\' loop-hint-keyword \')\'\n/// \'interleave\' \'(\' loop-hint-keyword \')\'\n/// \'unroll\' \'(\' unroll-hint-keyword \')\'\n/// \'vectorize_predicate\' \'(\' loop-hint-keyword \')\'\n/// \'vectorize_width\' \'(\' loop-hint-value \')\'\n/// \'interleave_count\' \'(\' loop-hint-value \')\'\n/// \'unroll_count\' \'(\' loop-hint-value \')\'\n/// \'pipeline\' \'(\' disable \')\'\n/// \'pipeline_initiation_interval\' \'(\' loop-hint-value \')\'\n///\n/// loop-hint-keyword:\n/// \'enable\'\n/// \'disable\'\n/// \'assume_safety\'\n///\n/// unroll-hint-keyword:\n/// \'enable\'\n/// \'disable\'\n/// \'full\'\n///\n/// loop-hint-value:\n/// constant-expression\n///\n/// Specifying vectorize(enable) or vectorize_width(_value_) instructs llvm to\n/// try vectorizing the instructions of the loop it precedes. Specifying\n/// interleave(enable) or interleave_count(_value_) instructs llvm to try\n/// interleaving multiple iterations of the loop it precedes. The width of the\n/// vector instructions is specified by vectorize_width() and the number of\n/// interleaved loop iterations is specified by interleave_count(). Specifying a\n/// value of 1 effectively disables vectorization/interleaving, even if it is\n/// possible and profitable, and 0 is invalid. The loop vectorizer currently\n/// only works on inner loops.\n///\n/// The unroll and unroll_count directives control the concatenation\n/// unroller. Specifying unroll(enable) instructs llvm to unroll the loop\n/// completely if the trip count is known at compile time and unroll partially\n/// if the trip count is not known. Specifying unroll(full) is similar to\n/// unroll(enable) but will unroll the loop only if the trip count is known at\n/// compile time. Specifying unroll(disable) disables unrolling for the\n/// loop. Specifying unroll_count(_value_) instructs llvm to try to unroll the\n/// loop the number of times indicated by the value.\nvoid PragmaLoopHintHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"clang loop\";"},{s,3613,"/// Handle the loop unroll optimization pragmas.\n/// #pragma unroll\n/// #pragma unroll unroll-hint-value\n/// #pragma unroll \'(\' unroll-hint-value \')\'\n/// #pragma nounroll\n/// #pragma unroll_and_jam\n/// #pragma unroll_and_jam unroll-hint-value\n/// #pragma unroll_and_jam \'(\' unroll-hint-value \')\'\n/// #pragma nounroll_and_jam\n///\n/// unroll-hint-value:\n/// constant-expression\n///\n/// Loop unrolling hints can be specified with \'#pragma unroll\' or\n/// \'#pragma nounroll\'. \'#pragma unroll\' can take a numeric argument optionally\n/// contained in parentheses. With no argument the directive instructs llvm to\n/// try to unroll the loop completely. A positive integer argument can be\n/// specified to indicate the number of times the loop should be unrolled. To\n/// maximize compatibility with other compilers the unroll count argument can be\n/// specified with or without parentheses. Specifying, \'#pragma nounroll\'\n/// disables unrolling of the loop.\nvoid PragmaUnrollHintHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.is(tok::eod)) {\n } else if (PragmaName.getIdentifierInfo()->getName() == \"nounroll\" || PragmaName.getIdentifierInfo()->getName() == \"nounroll_and_jam\") {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << PragmaName.getIdentifierInfo()->getName();"},{s,3636,"/// Handle the loop unroll optimization pragmas.\n/// #pragma unroll\n/// #pragma unroll unroll-hint-value\n/// #pragma unroll \'(\' unroll-hint-value \')\'\n/// #pragma nounroll\n/// #pragma unroll_and_jam\n/// #pragma unroll_and_jam unroll-hint-value\n/// #pragma unroll_and_jam \'(\' unroll-hint-value \')\'\n/// #pragma nounroll_and_jam\n///\n/// unroll-hint-value:\n/// constant-expression\n///\n/// Loop unrolling hints can be specified with \'#pragma unroll\' or\n/// \'#pragma nounroll\'. \'#pragma unroll\' can take a numeric argument optionally\n/// contained in parentheses. With no argument the directive instructs llvm to\n/// try to unroll the loop completely. A positive integer argument can be\n/// specified to indicate the number of times the loop should be unrolled. To\n/// maximize compatibility with other compilers the unroll count argument can be\n/// specified with or without parentheses. Specifying, \'#pragma nounroll\'\n/// disables unrolling of the loop.\nvoid PragmaUnrollHintHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.is(tok::eod)) {\n } else if (PragmaName.getIdentifierInfo()->getName() == \"nounroll\" || PragmaName.getIdentifierInfo()->getName() == \"nounroll_and_jam\") {\n } else {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"unroll\";"},{s,3699,"/// Handle the Microsoft \\#pragma intrinsic extension.\n///\n/// The syntax is:\n/// \\code\n/// #pragma intrinsic(memset)\n/// #pragma intrinsic(strlen, memcpy)\n/// \\endcode\n///\n/// Pragma intrisic tells the compiler to use a builtin version of the\n/// function. Clang does it anyway, so the pragma doesn\'t really do anything.\n/// Anyway, we emit a warning if the function specified in \\#pragma intrinsic\n/// isn\'t an intrinsic in clang and suggest to include intrin.h.\nvoid PragmaMSIntrinsicHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.isNot(tok::eod))\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"intrinsic\";"},{s,3730,"bool Parser::HandlePragmaMSFunction(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (ExpectAndConsume(tok::r_paren, diag::warn_pragma_expected_rparen, PragmaName) || ExpectAndConsume(tok::eof, diag::warn_pragma_extra_tokens_at_eol, PragmaName))"},{s,3791,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (ExpectAndConsume(tok::eof, diag::warn_pragma_extra_tokens_at_eol, PragmaName))"},{s,3954,"/// Handle the #pragma clang attribute directive.\n///\n/// The syntax is:\n/// \\code\n/// #pragma clang attribute push (attribute, subject-set)\n/// #pragma clang attribute push\n/// #pragma clang attribute (attribute, subject-set)\n/// #pragma clang attribute pop\n/// \\endcode\n///\n/// There are also \'namespace\' variants of push and pop directives. The bare\n/// \'#pragma clang attribute (attribute, subject-set)\' version doesn\'t require a\n/// namespace, since it always applies attributes to the most recently pushed\n/// group, regardless of namespace.\n/// \\code\n/// #pragma clang attribute namespace.push (attribute, subject-set)\n/// #pragma clang attribute namespace.push\n/// #pragma clang attribute namespace.pop\n/// \\endcode\n///\n/// The subject-set clause defines the set of declarations which receive the\n/// attribute. Its exact syntax is described in the LanguageExtensions document\n/// in Clang\'s documentation.\n///\n/// This directive instructs the compiler to begin/finish applying the specified\n/// attribute to the set of attribute-specific declarations in the active range\n/// of the pragma.\nvoid PragmaAttributeHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) {\n if (Tok.isNot(tok::eod))\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"clang attribute\";"},{s,3989,"// Handle \'#pragma clang max_tokens 12345\'.\nvoid PragmaMaxTokensHereHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"clang max_tokens_here\";"},{s,4021,"// Handle \'#pragma clang max_tokens_total 12345\'.\nvoid PragmaMaxTokensTotalHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"clang max_tokens_total\";"},{s,4055,"// Handle \'#pragma clang riscv intrinsic vector\'.\n// \'#pragma clang riscv intrinsic sifive_vector\'.\nvoid PragmaRISCVHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) {\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"clang riscv intrinsic\";"}}, | [j]={{s,305,"// \"\\#pragma fenv_access (on)\".\nstruct PragmaMSFenvAccessHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) override {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << PragmaName;"},{s,1051,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.isNot(tok::eof)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_extra_tokens_at_eol) << PragmaName;"},{s,1133,"bool Parser::HandlePragmaMSSegment(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.isNot(tok::eof)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_extra_tokens_at_eol) << PragmaName;"},{s,1197,"// #pragma init_seg({ compiler | lib | user | \"section-name\" [, func-name]} )\nbool Parser::HandlePragmaMSInitSeg(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::r_paren, diag::warn_pragma_expected_rparen, PragmaName) || ExpectAndConsume(tok::eof, diag::warn_pragma_extra_tokens_at_eol, PragmaName))"},{s,1250,"// #pragma strict_gs_check(pop)\n// #pragma strict_gs_check(push, \"on\" | \"off\")\n// #pragma strict_gs_check(\"on\" | \"off\")\nbool Parser::HandlePragmaMSStrictGuardStackCheck(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::eof, diag::warn_pragma_extra_tokens_at_eol, PragmaName))"},{s,1309,"bool Parser::HandlePragmaMSAllocText(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::r_paren, diag::warn_pragma_expected_rparen, PragmaName) || ExpectAndConsume(tok::eof, diag::warn_pragma_extra_tokens_at_eol, PragmaName))"},{s,1422,"bool Parser::HandlePragmaLoopHint(LoopHint &Hint) {\n // ...\n // Validate the argument.\n if (StateOption) {\n // ...\n if (Toks.size() > 2)\n Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << PragmaLoopHintString(Info->PragmaName, Info->Option);"},{s,1439,"bool Parser::HandlePragmaLoopHint(LoopHint &Hint) {\n // ...\n // Validate the argument.\n if (StateOption) {\n // ...\n } else if (OptionInfo && OptionInfo->getName() == \"vectorize_width\") {\n // ...\n // Look for vectorize_width(fixed|scalable)\n if (IsScalableStr == \"scalable\" || IsScalableStr == \"fixed\") {\n // ...\n if (Toks.size() > 2) {\n Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << PragmaLoopHintString(Info->PragmaName, Info->Option);"},{s,1478,"bool Parser::HandlePragmaLoopHint(LoopHint &Hint) {\n // ...\n // Validate the argument.\n if (StateOption) {\n // ...\n } else if (OptionInfo && OptionInfo->getName() == \"vectorize_width\") {\n // ...\n // Look for vectorize_width(fixed|scalable)\n if (IsScalableStr == \"scalable\" || IsScalableStr == \"fixed\") {\n // ...\n } else {\n // ...\n // Tokens following an error in an ill-formed constant expression will\n // remain in the token stream and must be removed.\n if (Tok.isNot(tok::eof)) {\n Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << PragmaLoopHintString(Info->PragmaName, Info->Option);"},{s,1503,"bool Parser::HandlePragmaLoopHint(LoopHint &Hint) {\n // ...\n // Validate the argument.\n if (StateOption) {\n // ...\n } else if (OptionInfo && OptionInfo->getName() == \"vectorize_width\") {\n // ...\n } else {\n // ...\n // Tokens following an error in an ill-formed constant expression will\n // remain in the token stream and must be removed.\n if (Tok.isNot(tok::eof)) {\n Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << PragmaLoopHintString(Info->PragmaName, Info->Option);"},{s,2019,"// #pragma GCC visibility comes in two variants:\n// \'push\' \'(\' [visibility] \')\'\n// \'pop\'\nvoid PragmaGCCVisibilityHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &VisTok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"visibility\";"},{s,2131,"// #pragma pack(...) comes in the following delicious flavors:\n// pack \'(\' [integer] \')\'\n// pack \'(\' \'show\' \')\'\n// pack \'(\' (\'push\' | \'pop\') [\',\' identifier] [, integer] \')\'\nvoid PragmaPackHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &PackTok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"pack\";"},{s,2179,"// #pragma ms_struct on\n// #pragma ms_struct off\nvoid PragmaMSStructHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &MSStructTok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"ms_struct\";"},{s,2312,"// #pragma \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'options \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'align\' \'(\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'} \')\'\nstatic void ParseAlignPragma(Preprocessor &PP, Token &FirstTok, bool IsOptions) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << (IsOptions ? \"options\" : \"align\");"},{s,2394,"// #pragma unused(identifier)\nvoid PragmaUnusedHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &UnusedTok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"unused\";"},{s,2454,"// #pragma weak identifier\n// #pragma weak identifier \'=\' identifier\nvoid PragmaWeakHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &WeakTok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"weak\";"},{s,2511,"// #pragma redefine_extname identifier identifier\nvoid PragmaRedefineExtnameHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &RedefToken) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"redefine_extname\";"},{s,2591,"void PragmaOpenCLExtensionHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"OPENCL EXTENSION\";"},{s,2750,"/// Handle \'#pragma pointers_to_members\'\n// The grammar for this pragma is as follows:\n//\n// <inheritance model> ::= (\'single\' | \'multiple\' | \'virtual\') \'_inheritance\'\n//\n// #pragma pointers_to_members \'(\' \'best_case\' \')\'\n// #pragma pointers_to_members \'(\' \'full_generality\' [\',\' inheritance-model] \')\'\n// #pragma pointers_to_members \'(\' inheritance-model \')\'\nvoid PragmaMSPointersToMembers::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"pointers_to_members\";"},{s,2841,"/// Handle \'#pragma vtordisp\'\n// The grammar for this pragma is as follows:\n//\n// <vtordisp-mode> ::= (\'off\' | \'on\' | \'0\' | \'1\' | \'2\' )\n//\n// #pragma vtordisp \'(\' [\'push\' \',\'] vtordisp-mode \')\'\n// #pragma vtordisp \'(\' \'pop\' \')\'\n// #pragma vtordisp \'(\' \')\'\nvoid PragmaMSVtorDisp::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"vtordisp\";"},{s,2996,"/// Handle the \\#pragma float_control extension.\n///\n/// The syntax is:\n/// \\code\n/// #pragma float_control(keyword[, setting] [,push])\n/// \\endcode\n/// Where \'keyword\' and \'setting\' are identifiers.\n// \'keyword\' can be: precise, except, push, pop\n// \'setting\' can be: on, off\n/// The optional arguments \'setting\' and \'push\' are supported only\n/// when the keyword is \'precise\' or \'except\'.\nvoid PragmaFloatControlHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"float_control\";"},{s,3318,"void PragmaFPHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"clang fp\";"},{s,3373,"void PragmaSTDC_FENV_ROUNDHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"STDC FENV_ROUND\";"},{s,3566,"/// Handle the \\#pragma clang loop directive.\n/// #pragma clang \'loop\' loop-hints\n///\n/// loop-hints:\n/// loop-hint loop-hints[opt]\n///\n/// loop-hint:\n/// \'vectorize\' \'(\' loop-hint-keyword \')\'\n/// \'interleave\' \'(\' loop-hint-keyword \')\'\n/// \'unroll\' \'(\' unroll-hint-keyword \')\'\n/// \'vectorize_predicate\' \'(\' loop-hint-keyword \')\'\n/// \'vectorize_width\' \'(\' loop-hint-value \')\'\n/// \'interleave_count\' \'(\' loop-hint-value \')\'\n/// \'unroll_count\' \'(\' loop-hint-value \')\'\n/// \'pipeline\' \'(\' disable \')\'\n/// \'pipeline_initiation_interval\' \'(\' loop-hint-value \')\'\n///\n/// loop-hint-keyword:\n/// \'enable\'\n/// \'disable\'\n/// \'assume_safety\'\n///\n/// unroll-hint-keyword:\n/// \'enable\'\n/// \'disable\'\n/// \'full\'\n///\n/// loop-hint-value:\n/// constant-expression\n///\n/// Specifying vectorize(enable) or vectorize_width(_value_) instructs llvm to\n/// try vectorizing the instructions of the loop it precedes. Specifying\n/// interleave(enable) or interleave_count(_value_) instructs llvm to try\n/// interleaving multiple iterations of the loop it precedes. The width of the\n/// vector instructions is specified by vectorize_width() and the number of\n/// interleaved loop iterations is specified by interleave_count(). Specifying a\n/// value of 1 effectively disables vectorization/interleaving, even if it is\n/// possible and profitable, and 0 is invalid. The loop vectorizer currently\n/// only works on inner loops.\n///\n/// The unroll and unroll_count directives control the concatenation\n/// unroller. Specifying unroll(enable) instructs llvm to unroll the loop\n/// completely if the trip count is known at compile time and unroll partially\n/// if the trip count is not known. Specifying unroll(full) is similar to\n/// unroll(enable) but will unroll the loop only if the trip count is known at\n/// compile time. Specifying unroll(disable) disables unrolling for the\n/// loop. Specifying unroll_count(_value_) instructs llvm to try to unroll the\n/// loop the number of times indicated by the value.\nvoid PragmaLoopHintHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"clang loop\";"},{s,3613,"/// Handle the loop unroll optimization pragmas.\n/// #pragma unroll\n/// #pragma unroll unroll-hint-value\n/// #pragma unroll \'(\' unroll-hint-value \')\'\n/// #pragma nounroll\n/// #pragma unroll_and_jam\n/// #pragma unroll_and_jam unroll-hint-value\n/// #pragma unroll_and_jam \'(\' unroll-hint-value \')\'\n/// #pragma nounroll_and_jam\n///\n/// unroll-hint-value:\n/// constant-expression\n///\n/// Loop unrolling hints can be specified with \'#pragma unroll\' or\n/// \'#pragma nounroll\'. \'#pragma unroll\' can take a numeric argument optionally\n/// contained in parentheses. With no argument the directive instructs llvm to\n/// try to unroll the loop completely. A positive integer argument can be\n/// specified to indicate the number of times the loop should be unrolled. To\n/// maximize compatibility with other compilers the unroll count argument can be\n/// specified with or without parentheses. Specifying, \'#pragma nounroll\'\n/// disables unrolling of the loop.\nvoid PragmaUnrollHintHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.is(tok::eod)) {\n // ...\n } else if (PragmaName.getIdentifierInfo()->getName() == \"nounroll\" || PragmaName.getIdentifierInfo()->getName() == \"nounroll_and_jam\") {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << PragmaName.getIdentifierInfo()->getName();"},{s,3636,"/// Handle the loop unroll optimization pragmas.\n/// #pragma unroll\n/// #pragma unroll unroll-hint-value\n/// #pragma unroll \'(\' unroll-hint-value \')\'\n/// #pragma nounroll\n/// #pragma unroll_and_jam\n/// #pragma unroll_and_jam unroll-hint-value\n/// #pragma unroll_and_jam \'(\' unroll-hint-value \')\'\n/// #pragma nounroll_and_jam\n///\n/// unroll-hint-value:\n/// constant-expression\n///\n/// Loop unrolling hints can be specified with \'#pragma unroll\' or\n/// \'#pragma nounroll\'. \'#pragma unroll\' can take a numeric argument optionally\n/// contained in parentheses. With no argument the directive instructs llvm to\n/// try to unroll the loop completely. A positive integer argument can be\n/// specified to indicate the number of times the loop should be unrolled. To\n/// maximize compatibility with other compilers the unroll count argument can be\n/// specified with or without parentheses. Specifying, \'#pragma nounroll\'\n/// disables unrolling of the loop.\nvoid PragmaUnrollHintHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.is(tok::eod)) {\n // ...\n } else if (PragmaName.getIdentifierInfo()->getName() == \"nounroll\" || PragmaName.getIdentifierInfo()->getName() == \"nounroll_and_jam\") {\n // ...\n } else {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"unroll\";"},{s,3699,"/// Handle the Microsoft \\#pragma intrinsic extension.\n///\n/// The syntax is:\n/// \\code\n/// #pragma intrinsic(memset)\n/// #pragma intrinsic(strlen, memcpy)\n/// \\endcode\n///\n/// Pragma intrisic tells the compiler to use a builtin version of the\n/// function. Clang does it anyway, so the pragma doesn\'t really do anything.\n/// Anyway, we emit a warning if the function specified in \\#pragma intrinsic\n/// isn\'t an intrinsic in clang and suggest to include intrin.h.\nvoid PragmaMSIntrinsicHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::eod))\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"intrinsic\";"},{s,3730,"bool Parser::HandlePragmaMSFunction(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::r_paren, diag::warn_pragma_expected_rparen, PragmaName) || ExpectAndConsume(tok::eof, diag::warn_pragma_extra_tokens_at_eol, PragmaName))"},{s,3791,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (ExpectAndConsume(tok::eof, diag::warn_pragma_extra_tokens_at_eol, PragmaName))"},{s,3954,"/// Handle the #pragma clang attribute directive.\n///\n/// The syntax is:\n/// \\code\n/// #pragma clang attribute push (attribute, subject-set)\n/// #pragma clang attribute push\n/// #pragma clang attribute (attribute, subject-set)\n/// #pragma clang attribute pop\n/// \\endcode\n///\n/// There are also \'namespace\' variants of push and pop directives. The bare\n/// \'#pragma clang attribute (attribute, subject-set)\' version doesn\'t require a\n/// namespace, since it always applies attributes to the most recently pushed\n/// group, regardless of namespace.\n/// \\code\n/// #pragma clang attribute namespace.push (attribute, subject-set)\n/// #pragma clang attribute namespace.push\n/// #pragma clang attribute namespace.pop\n/// \\endcode\n///\n/// The subject-set clause defines the set of declarations which receive the\n/// attribute. Its exact syntax is described in the LanguageExtensions document\n/// in Clang\'s documentation.\n///\n/// This directive instructs the compiler to begin/finish applying the specified\n/// attribute to the set of attribute-specific declarations in the active range\n/// of the pragma.\nvoid PragmaAttributeHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) {\n // ...\n if (Tok.isNot(tok::eod))\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"clang attribute\";"},{s,3989,"// Handle \'#pragma clang max_tokens 12345\'.\nvoid PragmaMaxTokensHereHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"clang max_tokens_here\";"},{s,4021,"// Handle \'#pragma clang max_tokens_total 12345\'.\nvoid PragmaMaxTokensTotalHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"clang max_tokens_total\";"},{s,4055,"// Handle \'#pragma clang riscv intrinsic vector\'.\n// \'#pragma clang riscv intrinsic sifive_vector\'.\nvoid PragmaRISCVHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) {\n // ...\n if (Tok.isNot(tok::eod)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << \"clang riscv intrinsic\";"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/pragma-ms-alloc-text.cpp"]={"clang/test/Sema/pragma-ms-alloc-text.cpp:14:29: warning: extra tokens at end of \'#pragma alloc_text\' - ignored [-Wignored-pragmas]"} | ["clang/test/Sema/pragma-ms-alloc-text.cpp"]={"clang/test/Sema/pragma-ms-alloc-text.cpp:14:29: warning: extra tokens at end of \'#pragma alloc_text\' - ignored [-Wignored-pragmas]"} | ||
Line 4,224: | Line 4,224: | ||
[h]=D, | [h]=D, | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{Jc,1485,"void Preprocessor::emitFinalMacroWarning(const Token &Identifier, bool IsUndef) const {\n Diag(Identifier, diag::warn_pragma_final_macro) << Identifier.getIdentifierInfo() << (IsUndef ? 0 : 1);"}}, | [j]={{Jc,1485,"void Preprocessor::emitFinalMacroWarning(const Token &Identifier, bool IsUndef) const {\n // ...\n Diag(Identifier, diag::warn_pragma_final_macro) << Identifier.getIdentifierInfo() << (IsUndef ? 0 : 1);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Lexer/final-macro.c"]={"clang/test/Lexer/final-macro.c:10:9: warning: macro \'Foo\' has been marked as final and should not be redefined [-Wfinal-macro]","clang/test/Lexer/final-macro.c:14:9: warning: macro \'Foo\' has been marked as final and should not be redefined [-Wfinal-macro]","clang/test/Lexer/final-macro.c:23:8: warning: macro \'Foo\' has been marked as final and should not be undefined [-Wfinal-macro]","clang/test/Lexer/final-macro.c:25:9: warning: macro \'Foo\' has been marked as final and should not be redefined [-Wfinal-macro]","clang/test/Lexer/Inputs/final-macro-system.h:2:8: warning: macro \'SYSTEM_MACRO\' has been marked as final and should not be undefined [-Wfinal-macro]","clang/test/Lexer/Inputs/final-macro-system.h:4:9: warning: macro \'SYSTEM_MACRO\' has been marked as final and should not be redefined [-Wfinal-macro]"} | ["clang/test/Lexer/final-macro.c"]={"clang/test/Lexer/final-macro.c:10:9: warning: macro \'Foo\' has been marked as final and should not be redefined [-Wfinal-macro]","clang/test/Lexer/final-macro.c:14:9: warning: macro \'Foo\' has been marked as final and should not be redefined [-Wfinal-macro]","clang/test/Lexer/final-macro.c:23:8: warning: macro \'Foo\' has been marked as final and should not be undefined [-Wfinal-macro]","clang/test/Lexer/final-macro.c:25:9: warning: macro \'Foo\' has been marked as final and should not be redefined [-Wfinal-macro]","clang/test/Lexer/Inputs/final-macro-system.h:2:8: warning: macro \'SYSTEM_MACRO\' has been marked as final and should not be undefined [-Wfinal-macro]","clang/test/Lexer/Inputs/final-macro-system.h:4:9: warning: macro \'SYSTEM_MACRO\' has been marked as final and should not be redefined [-Wfinal-macro]"} | ||
Line 4,241: | Line 4,241: | ||
[h]=B, | [h]=B, | ||
[i]={"67a78a6cc021",1475964958,"[CUDA] Add #pragma clang force_cuda_host_device_{begin,end} pragmas.","[CUDA] Add #pragma clang force_cuda_host_device_{begin,end} pragmas."}, | [i]={"67a78a6cc021",1475964958,"[CUDA] Add #pragma clang force_cuda_host_device_{begin,end} pragmas.","[CUDA] Add #pragma clang force_cuda_host_device_{begin,end} pragmas."}, | ||
[j]={{s,3807,"void PragmaForceCUDAHostDeviceHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (!Info || (!Info->isStr(\"begin\") && !Info->isStr(\"end\"))) {\n PP.Diag(FirstTok.getLocation(), diag::warn_pragma_force_cuda_host_device_bad_arg);"},{s,3820,"void PragmaForceCUDAHostDeviceHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (!Tok.is(tok::eod))\n PP.Diag(FirstTok.getLocation(), diag::warn_pragma_force_cuda_host_device_bad_arg);"}}, | [j]={{s,3807,"void PragmaForceCUDAHostDeviceHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (!Info || (!Info->isStr(\"begin\") && !Info->isStr(\"end\"))) {\n PP.Diag(FirstTok.getLocation(), diag::warn_pragma_force_cuda_host_device_bad_arg);"},{s,3820,"void PragmaForceCUDAHostDeviceHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (!Tok.is(tok::eod))\n PP.Diag(FirstTok.getLocation(), diag::warn_pragma_force_cuda_host_device_bad_arg);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/cuda-force-host-device.cu"]={"clang/test/Parser/cuda-force-host-device.cu:29:15: warning: incorrect use of #pragma clang force_cuda_host_device begin|end [-Wignored-pragmas]","clang/test/Parser/cuda-force-host-device.cu:32:15: warning: incorrect use of #pragma clang force_cuda_host_device begin|end [-Wignored-pragmas]","clang/test/Parser/cuda-force-host-device.cu:35:15: warning: incorrect use of #pragma clang force_cuda_host_device begin|end [-Wignored-pragmas]"} | ["clang/test/Parser/cuda-force-host-device.cu"]={"clang/test/Parser/cuda-force-host-device.cu:29:15: warning: incorrect use of #pragma clang force_cuda_host_device begin|end [-Wignored-pragmas]","clang/test/Parser/cuda-force-host-device.cu:32:15: warning: incorrect use of #pragma clang force_cuda_host_device begin|end [-Wignored-pragmas]","clang/test/Parser/cuda-force-host-device.cu:35:15: warning: incorrect use of #pragma clang force_cuda_host_device begin|end [-Wignored-pragmas]"} | ||
Line 4,258: | Line 4,258: | ||
[h]=B, | [h]=B, | ||
[i]={"38d18d93534d",1601621202,fd,fd}, | [i]={"38d18d93534d",1601621202,fd,fd}, | ||
[j]={{s,113,"/// PragmaSTDC_FENV_ACCESSHandler - \"\\#pragma STDC FENV_ACCESS ...\".\nstruct PragmaSTDC_FENV_ACCESSHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n if (!PP.getTargetInfo().hasStrictFP() && !PP.getLangOpts().ExpStrictFP) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored) << PragmaName.getIdentifierInfo()->getName();"},{s,268,"// \"\\#pragma fenv_access (on)\".\nstruct PragmaMSFenvAccessHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) override {\n if (!PP.getTargetInfo().hasStrictFP() && !PP.getLangOpts().ExpStrictFP) {\n PP.Diag(FirstToken.getLocation(), diag::warn_pragma_fp_ignored) << PragmaName;"},{s,2906,"/// Handle the \\#pragma float_control extension.\n///\n/// The syntax is:\n/// \\code\n/// #pragma float_control(keyword[, setting] [,push])\n/// \\endcode\n/// Where \'keyword\' and \'setting\' are identifiers.\n// \'keyword\' can be: precise, except, push, pop\n// \'setting\' can be: on, off\n/// The optional arguments \'setting\' and \'push\' are supported only\n/// when the keyword is \'precise\' or \'except\'.\nvoid PragmaFloatControlHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (!PP.getTargetInfo().hasStrictFP() && !PP.getLangOpts().ExpStrictFP) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored) << PragmaName.getIdentifierInfo()->getName();"},{s,3344,"void PragmaSTDC_FENV_ROUNDHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (!PP.getTargetInfo().hasStrictFP() && !PP.getLangOpts().ExpStrictFP) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored) << PragmaName.getIdentifierInfo()->getName();"}}, | [j]={{s,113,"/// PragmaSTDC_FENV_ACCESSHandler - \"\\#pragma STDC FENV_ACCESS ...\".\nstruct PragmaSTDC_FENV_ACCESSHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n if (!PP.getTargetInfo().hasStrictFP() && !PP.getLangOpts().ExpStrictFP) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored) << PragmaName.getIdentifierInfo()->getName();"},{s,268,"// \"\\#pragma fenv_access (on)\".\nstruct PragmaMSFenvAccessHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) override {\n // ...\n if (!PP.getTargetInfo().hasStrictFP() && !PP.getLangOpts().ExpStrictFP) {\n PP.Diag(FirstToken.getLocation(), diag::warn_pragma_fp_ignored) << PragmaName;"},{s,2906,"/// Handle the \\#pragma float_control extension.\n///\n/// The syntax is:\n/// \\code\n/// #pragma float_control(keyword[, setting] [,push])\n/// \\endcode\n/// Where \'keyword\' and \'setting\' are identifiers.\n// \'keyword\' can be: precise, except, push, pop\n// \'setting\' can be: on, off\n/// The optional arguments \'setting\' and \'push\' are supported only\n/// when the keyword is \'precise\' or \'except\'.\nvoid PragmaFloatControlHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (!PP.getTargetInfo().hasStrictFP() && !PP.getLangOpts().ExpStrictFP) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored) << PragmaName.getIdentifierInfo()->getName();"},{s,3344,"void PragmaSTDC_FENV_ROUNDHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (!PP.getTargetInfo().hasStrictFP() && !PP.getLangOpts().ExpStrictFP) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored) << PragmaName.getIdentifierInfo()->getName();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/pragma-fp-warn.c"]={"clang/test/Parser/pragma-fp-warn.c:15:9: warning: \'#pragma float_control\' is not supported on this target - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-fp-warn.c:17:14: warning: \'#pragma FENV_ACCESS\' is not supported on this target - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-fp-warn.c:19:14: warning: \'#pragma FENV_ROUND\' is not supported on this target - ignored [-Wignored-pragmas]"} | ["clang/test/Parser/pragma-fp-warn.c"]={"clang/test/Parser/pragma-fp-warn.c:15:9: warning: \'#pragma float_control\' is not supported on this target - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-fp-warn.c:17:14: warning: \'#pragma FENV_ACCESS\' is not supported on this target - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-fp-warn.c:19:14: warning: \'#pragma FENV_ROUND\' is not supported on this target - ignored [-Wignored-pragmas]"} | ||
Line 4,276: | Line 4,276: | ||
[h]=D, | [h]=D, | ||
[i]={"21656f22dbb9",1240175426,"basic support for -Wunknown-pragmas, more coming.","basic support for -Wunknown-pragmas, more coming."}, | [i]={"21656f22dbb9",1240175426,"basic support for -Wunknown-pragmas, more coming.","basic support for -Wunknown-pragmas, more coming."}, | ||
[j]={{I,120,"void PragmaNamespace::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (!Handler) {\n PP.Diag(Tok, diag::warn_pragma_ignored);"}}, | [j]={{I,120,"void PragmaNamespace::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (!Handler) {\n PP.Diag(Tok, diag::warn_pragma_ignored);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/_Pragma.c"]={"clang/test/Preprocessor/_Pragma.c:6:1: warning: unknown pragma ignored [-Wunknown-pragmas]","clang/test/Preprocessor/_Pragma.c:8:1: warning: unknown pragma ignored [-Wunknown-pragmas]"} | ["clang/test/Preprocessor/_Pragma.c"]={"clang/test/Preprocessor/_Pragma.c:6:1: warning: unknown pragma ignored [-Wunknown-pragmas]","clang/test/Preprocessor/_Pragma.c:8:1: warning: unknown pragma ignored [-Wunknown-pragmas]"} | ||
Line 4,293: | Line 4,293: | ||
[h]=D, | [h]=D, | ||
[i]={"cd5092dfba30",1330575529,"Implements support for #pragma include_alias in ms compatibility mode. Fixes PR10705.","Implements support for #pragma include_alias in ms compatibility mode. Fixes PR10705."}, | [i]={"cd5092dfba30",1330575529,"Implements support for #pragma include_alias in ms compatibility mode. Fixes PR10705.","Implements support for #pragma include_alias in ms compatibility mode. Fixes PR10705."}, | ||
[j]={{I,695,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n if (Tok.isNot(tok::l_paren)) {\n Diag(Tok, diag::warn_pragma_include_alias_expected) << \"(\";"},{I,717,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n if (Tok.isNot(tok::comma)) {\n Diag(Tok, diag::warn_pragma_include_alias_expected) << \",\";"},{I,736,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n if (Tok.isNot(tok::r_paren)) {\n Diag(Tok, diag::warn_pragma_include_alias_expected) << \")\";"}}, | [j]={{I,695,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n // ...\n if (Tok.isNot(tok::l_paren)) {\n Diag(Tok, diag::warn_pragma_include_alias_expected) << \"(\";"},{I,717,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n // ...\n if (Tok.isNot(tok::comma)) {\n Diag(Tok, diag::warn_pragma_include_alias_expected) << \",\";"},{I,736,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n Diag(Tok, diag::warn_pragma_include_alias_expected) << \")\";"}}, | ||
[p]={ | [p]={ | ||
[Ab]={"clang/test/Preprocessor/pragma_microsoft.c:89:31: warning: pragma include_alias expected \',\' [-Wunknown-pragmas]"} | [Ab]={"clang/test/Preprocessor/pragma_microsoft.c:89:31: warning: pragma include_alias expected \',\' [-Wunknown-pragmas]"} | ||
Line 4,310: | Line 4,310: | ||
[h]=D, | [h]=D, | ||
[i]={"611306eae6c9",1330728714,Xc,Xc}, | [i]={"611306eae6c9",1330728714,Xc,Xc}, | ||
[j]={{I,709,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n if (SourceFilenameTok.is(tok::header_name)) {\n } else {\n Diag(Tok, diag::warn_pragma_include_alias_expected_filename);"},{I,729,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n if (ReplaceFilenameTok.is(tok::header_name)) {\n } else {\n Diag(Tok, diag::warn_pragma_include_alias_expected_filename);"}}, | [j]={{I,709,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n // ...\n if (SourceFilenameTok.is(tok::header_name)) {\n // ...\n } else {\n Diag(Tok, diag::warn_pragma_include_alias_expected_filename);"},{I,729,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n // ...\n if (ReplaceFilenameTok.is(tok::header_name)) {\n // ...\n } else {\n Diag(Tok, diag::warn_pragma_include_alias_expected_filename);"}}, | ||
[p]={ | [p]={ | ||
[Ab]={"clang/test/Preprocessor/pragma_microsoft.c:96:22: warning: pragma include_alias expected include filename [-Wunknown-pragmas]"} | [Ab]={"clang/test/Preprocessor/pragma_microsoft.c:96:22: warning: pragma include_alias expected include filename [-Wunknown-pragmas]"} | ||
Line 4,327: | Line 4,327: | ||
[h]=D, | [h]=D, | ||
[i]={"611306eae6c9",1330728714,Xc,Xc}, | [i]={"611306eae6c9",1330728714,Xc,Xc}, | ||
[j]={{I,754,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n if (!SourceFileName.empty() && !ReplaceFileName.empty() && (SourceIsAngled != ReplaceIsAngled)) {\n if (SourceIsAngled)\n DiagID = diag::warn_pragma_include_alias_mismatch_angle;"}}, | [j]={{I,754,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n // ...\n if (!SourceFileName.empty() && !ReplaceFileName.empty() && (SourceIsAngled != ReplaceIsAngled)) {\n // ...\n if (SourceIsAngled)\n DiagID = diag::warn_pragma_include_alias_mismatch_angle;"}}, | ||
[p]={ | [p]={ | ||
[Ab]={"clang/test/Preprocessor/pragma_microsoft.c:87:23: warning: angle-bracketed include <bar.h> cannot be aliased to double-quoted include \"bar.h\" [-Wunknown-pragmas]"} | [Ab]={"clang/test/Preprocessor/pragma_microsoft.c:87:23: warning: angle-bracketed include <bar.h> cannot be aliased to double-quoted include \"bar.h\" [-Wunknown-pragmas]"} | ||
Line 4,344: | Line 4,344: | ||
[h]=D, | [h]=D, | ||
[i]={"611306eae6c9",1330728714,Xc,Xc}, | [i]={"611306eae6c9",1330728714,Xc,Xc}, | ||
[j]={{I,756,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n if (!SourceFileName.empty() && !ReplaceFileName.empty() && (SourceIsAngled != ReplaceIsAngled)) {\n if (SourceIsAngled)\n else\n DiagID = diag::warn_pragma_include_alias_mismatch_quote;"}}, | [j]={{I,756,"void Preprocessor::HandlePragmaIncludeAlias(Token &Tok) {\n // ...\n if (!SourceFileName.empty() && !ReplaceFileName.empty() && (SourceIsAngled != ReplaceIsAngled)) {\n // ...\n if (SourceIsAngled)\n // ...\n else\n DiagID = diag::warn_pragma_include_alias_mismatch_quote;"}}, | ||
[p]={ | [p]={ | ||
[Ab]={"clang/test/Preprocessor/pragma_microsoft.c:88:23: warning: double-quoted include \"foo.h\" cannot be aliased to angle-bracketed include <bar.h> [-Wunknown-pragmas]"} | [Ab]={"clang/test/Preprocessor/pragma_microsoft.c:88:23: warning: double-quoted include \"foo.h\" cannot be aliased to angle-bracketed include <bar.h> [-Wunknown-pragmas]"} | ||
Line 4,378: | Line 4,378: | ||
[h]=B, | [h]=B, | ||
[i]={"3f1ec62a8397",1473266312,"Parsing MS pragma intrinsic","Parsing MS pragma intrinsic"}, | [i]={"3f1ec62a8397",1473266312,"Parsing MS pragma intrinsic","Parsing MS pragma intrinsic"}, | ||
[j]={{s,3682,"/// Handle the Microsoft \\#pragma intrinsic extension.\n///\n/// The syntax is:\n/// \\code\n/// #pragma intrinsic(memset)\n/// #pragma intrinsic(strlen, memcpy)\n/// \\endcode\n///\n/// Pragma intrisic tells the compiler to use a builtin version of the\n/// function. Clang does it anyway, so the pragma doesn\'t really do anything.\n/// Anyway, we emit a warning if the function specified in \\#pragma intrinsic\n/// isn\'t an intrinsic in clang and suggest to include intrin.h.\nvoid PragmaMSIntrinsicHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n while (Tok.is(tok::identifier)) {\n if (!II->getBuiltinID())\n PP.Diag(Tok.getLocation(), diag::warn_pragma_intrinsic_builtin) << II << SuggestIntrinH;"},{s,3717,"bool Parser::HandlePragmaMSFunction(StringRef PragmaName, SourceLocation PragmaLocation) {\n while (Tok.is(tok::identifier)) {\n if (!II->getBuiltinID())\n PP.Diag(Tok.getLocation(), diag::warn_pragma_intrinsic_builtin) << II << SuggestIntrinH;"}}, | [j]={{s,3682,"/// Handle the Microsoft \\#pragma intrinsic extension.\n///\n/// The syntax is:\n/// \\code\n/// #pragma intrinsic(memset)\n/// #pragma intrinsic(strlen, memcpy)\n/// \\endcode\n///\n/// Pragma intrisic tells the compiler to use a builtin version of the\n/// function. Clang does it anyway, so the pragma doesn\'t really do anything.\n/// Anyway, we emit a warning if the function specified in \\#pragma intrinsic\n/// isn\'t an intrinsic in clang and suggest to include intrin.h.\nvoid PragmaMSIntrinsicHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n while (Tok.is(tok::identifier)) {\n // ...\n if (!II->getBuiltinID())\n PP.Diag(Tok.getLocation(), diag::warn_pragma_intrinsic_builtin) << II << SuggestIntrinH;"},{s,3717,"bool Parser::HandlePragmaMSFunction(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n while (Tok.is(tok::identifier)) {\n // ...\n if (!II->getBuiltinID())\n PP.Diag(Tok.getLocation(), diag::warn_pragma_intrinsic_builtin) << II << SuggestIntrinH;"}}, | ||
[p]={ | [p]={ | ||
[Ab]={"clang/test/Preprocessor/pragma_microsoft.c:179:19: warning: \'asdf\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:180:19: warning: \'main\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:186:19: warning: \'asdf\' is not a recognized builtin [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:189:19: warning: \'asdf\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:195:19: warning: \'asdf\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:201:19: warning: \'asdf\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:207:18: warning: \'asdf\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:208:18: warning: \'main\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:214:18: warning: \'asdf\' is not a recognized builtin [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:217:18: warning: \'asdf\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]"} | [Ab]={"clang/test/Preprocessor/pragma_microsoft.c:179:19: warning: \'asdf\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:180:19: warning: \'main\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:186:19: warning: \'asdf\' is not a recognized builtin [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:189:19: warning: \'asdf\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:195:19: warning: \'asdf\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:201:19: warning: \'asdf\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:207:18: warning: \'asdf\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:208:18: warning: \'main\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:214:18: warning: \'asdf\' is not a recognized builtin [-Wignored-pragma-intrinsic]","clang/test/Preprocessor/pragma_microsoft.c:217:18: warning: \'asdf\' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]"} | ||
Line 4,395: | Line 4,395: | ||
[h]=B, | [h]=B, | ||
[i]={"c0dca6ded731",1392249026,Yc,Yc}, | [i]={"c0dca6ded731",1392249026,Yc,Yc}, | ||
[j]={{s,1239,"// #pragma strict_gs_check(pop)\n// #pragma strict_gs_check(push, \"on\" | \"off\")\n// #pragma strict_gs_check(\"on\" | \"off\")\nbool Parser::HandlePragmaMSStrictGuardStackCheck(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Action & Sema::PSK_Push || Action & Sema::PSK_Set) {\n if (II && II->isStr(\"off\")) {\n } else if (II && II->isStr(\"on\")) {\n } else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action) << PragmaName;"},{s,2078,"// #pragma pack(...) comes in the following delicious flavors:\n// pack \'(\' [integer] \')\'\n// pack \'(\' \'show\' \')\'\n// pack \'(\' (\'push\' | \'pop\') [\',\' identifier] [, integer] \')\'\nvoid PragmaPackHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &PackTok) {\n if (Tok.is(tok::numeric_constant)) {\n } else if (Tok.is(tok::identifier)) {\n if (II->isStr(\"show\")) {\n } else {\n if (II->isStr(\"push\")) {\n } else if (II->isStr(\"pop\")) {\n } else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action) << \"pack\";"},{s,2827,"/// Handle \'#pragma vtordisp\'\n// The grammar for this pragma is as follows:\n//\n// <vtordisp-mode> ::= (\'off\' | \'on\' | \'0\' | \'1\' | \'2\' )\n//\n// #pragma vtordisp \'(\' [\'push\' \',\'] vtordisp-mode \')\'\n// #pragma vtordisp \'(\' \'pop\' \')\'\n// #pragma vtordisp \'(\' \')\'\nvoid PragmaMSVtorDisp::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Action & Sema::PSK_Push || Action & Sema::PSK_Set) {\n if (II && II->isStr(\"off\")) {\n } else if (II && II->isStr(\"on\")) {\n } else if (Tok.is(tok::numeric_constant) && PP.parseSimpleIntegerLiteral(Tok, Value)) {\n } else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action) << \"vtordisp\";"}}, | [j]={{s,1239,"// #pragma strict_gs_check(pop)\n// #pragma strict_gs_check(push, \"on\" | \"off\")\n// #pragma strict_gs_check(\"on\" | \"off\")\nbool Parser::HandlePragmaMSStrictGuardStackCheck(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Action & Sema::PSK_Push || Action & Sema::PSK_Set) {\n // ...\n if (II && II->isStr(\"off\")) {\n // ...\n } else if (II && II->isStr(\"on\")) {\n // ...\n } else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action) << PragmaName;"},{s,2078,"// #pragma pack(...) comes in the following delicious flavors:\n// pack \'(\' [integer] \')\'\n// pack \'(\' \'show\' \')\'\n// pack \'(\' (\'push\' | \'pop\') [\',\' identifier] [, integer] \')\'\nvoid PragmaPackHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &PackTok) {\n // ...\n if (Tok.is(tok::numeric_constant)) {\n // ...\n } else if (Tok.is(tok::identifier)) {\n // ...\n if (II->isStr(\"show\")) {\n // ...\n } else {\n if (II->isStr(\"push\")) {\n // ...\n } else if (II->isStr(\"pop\")) {\n // ...\n } else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action) << \"pack\";"},{s,2827,"/// Handle \'#pragma vtordisp\'\n// The grammar for this pragma is as follows:\n//\n// <vtordisp-mode> ::= (\'off\' | \'on\' | \'0\' | \'1\' | \'2\' )\n//\n// #pragma vtordisp \'(\' [\'push\' \',\'] vtordisp-mode \')\'\n// #pragma vtordisp \'(\' \'pop\' \')\'\n// #pragma vtordisp \'(\' \')\'\nvoid PragmaMSVtorDisp::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Action & Sema::PSK_Push || Action & Sema::PSK_Set) {\n // ...\n if (II && II->isStr(\"off\")) {\n // ...\n } else if (II && II->isStr(\"on\")) {\n // ...\n } else if (Tok.is(tok::numeric_constant) && PP.parseSimpleIntegerLiteral(Tok, Value)) {\n // ...\n } else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action) << \"vtordisp\";"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/pragma-pack.c"]={"clang/test/Parser/pragma-pack.c:10:73: warning: unknown action for \'#pragma pack\' - ignored [-Wignored-pragmas]"} | ["clang/test/Parser/pragma-pack.c"]={"clang/test/Parser/pragma-pack.c:10:73: warning: unknown action for \'#pragma pack\' - ignored [-Wignored-pragmas]"} | ||
Line 4,412: | Line 4,412: | ||
[h]=B, | [h]=B, | ||
[i]={"1bbe00e0ca2d",1521535991,Wb,Wb}, | [i]={"1bbe00e0ca2d",1521535991,Wb,Wb}, | ||
[j]={{s,3771,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (!II || (!II->isStr(\"on\") && !II->isStr(\"off\"))) {\n PP.Diag(PragmaLocation, diag::warn_pragma_invalid_argument) << PP.getSpelling(Tok) << PragmaName << /*Expected=*/true << \"\'on\' or \'off\'\";"},{s,3785,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n // TODO: Add support for \"sgty\"\n if (!OptimizationList->getString().empty()) {\n PP.Diag(PragmaLocation, diag::warn_pragma_invalid_argument) << OptimizationList->getString() << PragmaName << /*Expected=*/true << \"\\\"\\\"\";"},{s,4039,"// Handle \'#pragma clang riscv intrinsic vector\'.\n// \'#pragma clang riscv intrinsic sifive_vector\'.\nvoid PragmaRISCVHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) {\n if (!II || !II->isStr(\"intrinsic\")) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_argument) << PP.getSpelling(Tok) << \"riscv\" << /*Expected=*/true << \"\'intrinsic\'\";"},{s,4047,"// Handle \'#pragma clang riscv intrinsic vector\'.\n// \'#pragma clang riscv intrinsic sifive_vector\'.\nvoid PragmaRISCVHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) {\n if (!II || !(II->isStr(\"vector\") || II->isStr(\"sifive_vector\"))) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_argument) << PP.getSpelling(Tok) << \"riscv\" << /*Expected=*/true << \"\'vector\' or \'sifive_vector\'\";"}}, | [j]={{s,3771,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (!II || (!II->isStr(\"on\") && !II->isStr(\"off\"))) {\n PP.Diag(PragmaLocation, diag::warn_pragma_invalid_argument) << PP.getSpelling(Tok) << PragmaName << /*Expected=*/true << \"\'on\' or \'off\'\";"},{s,3785,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n // TODO: Add support for \"sgty\"\n if (!OptimizationList->getString().empty()) {\n PP.Diag(PragmaLocation, diag::warn_pragma_invalid_argument) << OptimizationList->getString() << PragmaName << /*Expected=*/true << \"\\\"\\\"\";"},{s,4039,"// Handle \'#pragma clang riscv intrinsic vector\'.\n// \'#pragma clang riscv intrinsic sifive_vector\'.\nvoid PragmaRISCVHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) {\n // ...\n if (!II || !II->isStr(\"intrinsic\")) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_argument) << PP.getSpelling(Tok) << \"riscv\" << /*Expected=*/true << \"\'intrinsic\'\";"},{s,4047,"// Handle \'#pragma clang riscv intrinsic vector\'.\n// \'#pragma clang riscv intrinsic sifive_vector\'.\nvoid PragmaRISCVHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) {\n // ...\n if (!II || !(II->isStr(\"vector\") || II->isStr(\"sifive_vector\"))) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_argument) << PP.getSpelling(Tok) << \"riscv\" << /*Expected=*/true << \"\'vector\' or \'sifive_vector\'\";"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/riscv-bad-intrinsic-pragma.c"]={"clang/test/Sema/riscv-bad-intrinsic-pragma.c:4:31: warning: unexpected argument \'vvvv\' to \'#pragma riscv\'; expected \'vector\' or \'sifive_vector\' [-Wignored-pragmas]","clang/test/Sema/riscv-bad-intrinsic-pragma.c:7:21: warning: unexpected argument \'what\' to \'#pragma riscv\'; expected \'intrinsic\' [-Wignored-pragmas]","clang/test/Sema/riscv-bad-intrinsic-pragma.c:9:21: warning: unexpected argument \'int\' to \'#pragma riscv\'; expected \'intrinsic\' [-Wignored-pragmas]"} | ["clang/test/Sema/riscv-bad-intrinsic-pragma.c"]={"clang/test/Sema/riscv-bad-intrinsic-pragma.c:4:31: warning: unexpected argument \'vvvv\' to \'#pragma riscv\'; expected \'vector\' or \'sifive_vector\' [-Wignored-pragmas]","clang/test/Sema/riscv-bad-intrinsic-pragma.c:7:21: warning: unexpected argument \'what\' to \'#pragma riscv\'; expected \'intrinsic\' [-Wignored-pragmas]","clang/test/Sema/riscv-bad-intrinsic-pragma.c:9:21: warning: unexpected argument \'int\' to \'#pragma riscv\'; expected \'intrinsic\' [-Wignored-pragmas]"} | ||
Line 4,429: | Line 4,429: | ||
[h]=B, | [h]=B, | ||
[i]={Mc,1396996247,Ib,Ib}, | [i]={Mc,1396996247,Ib,Ib}, | ||
[j]={{s,1032,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n while (Tok.is(tok::comma)) {\n if (Flag == ASTContext::PSF_None || Flag == ASTContext::PSF_Invalid) {\n PP.Diag(PragmaLocation, Flag == ASTContext::PSF_None ? diag::warn_pragma_invalid_specific_action : diag::warn_pragma_unsupported_action) << PragmaName << Tok.getIdentifierInfo()->getName();"}}, | [j]={{s,1032,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n while (Tok.is(tok::comma)) {\n // ...\n if (Flag == ASTContext::PSF_None || Flag == ASTContext::PSF_Invalid) {\n PP.Diag(PragmaLocation, Flag == ASTContext::PSF_None ? diag::warn_pragma_invalid_specific_action : diag::warn_pragma_unsupported_action) << PragmaName << Tok.getIdentifierInfo()->getName();"}}, | ||
[p]={ | [p]={ | ||
[Hc]={"clang/test/Sema/pragma-section.c:41:9: warning: unknown action \'bogus\' for \'#pragma section\' - ignored [-Wignored-pragmas]"} | [Hc]={"clang/test/Sema/pragma-section.c:41:9: warning: unknown action \'bogus\' for \'#pragma section\' - ignored [-Wignored-pragmas]"} | ||
Line 4,446: | Line 4,446: | ||
[h]="#pragma message Directive", | [h]="#pragma message Directive", | ||
[i]={"30c924b3e874",1277572299,"Implement support for #pragma message, patch by Michael Spencer!","Implement support for #pragma message, patch by Michael Spencer!"}, | [i]={"30c924b3e874",1277572299,"Implement support for #pragma message, patch by Michael Spencer!","Implement support for #pragma message, patch by Michael Spencer!"}, | ||
[j]={{I,1678,"/// PragmaMessageHandler - Handle the microsoft and gcc \\#pragma message\n/// extension. The syntax is:\n/// \\code\n/// #pragma message(string)\n/// \\endcode\n/// OR, in GCC mode:\n/// \\code\n/// #pragma message string\n/// \\endcode\n/// string is a string, which is fully macro expanded, and permits string\n/// concatenation, embedded escape characters, etc... See MSDN for more details.\n/// Also handles \\#pragma GCC warning and \\#pragma GCC error which take the same\n/// form as \\#pragma message.\nstruct PragmaMessageHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n PP.Diag(MessageLoc, (Kind == PPCallbacks::PMK_Error) ? diag::err_pragma_message : diag::warn_pragma_message) << MessageString;"},{"clang/utils/TableGen/ClangDiagnosticsEmitter.cpp",1407,"/// /* DiagArray1 */ diag::warn_pragma_message,"}}, | [j]={{I,1678,"/// PragmaMessageHandler - Handle the microsoft and gcc \\#pragma message\n/// extension. The syntax is:\n/// \\code\n/// #pragma message(string)\n/// \\endcode\n/// OR, in GCC mode:\n/// \\code\n/// #pragma message string\n/// \\endcode\n/// string is a string, which is fully macro expanded, and permits string\n/// concatenation, embedded escape characters, etc... See MSDN for more details.\n/// Also handles \\#pragma GCC warning and \\#pragma GCC error which take the same\n/// form as \\#pragma message.\nstruct PragmaMessageHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n PP.Diag(MessageLoc, (Kind == PPCallbacks::PMK_Error) ? diag::err_pragma_message : diag::warn_pragma_message) << MessageString;"},{"clang/utils/TableGen/ClangDiagnosticsEmitter.cpp",1407,"/// /* DiagArray1 */ diag::warn_pragma_message,"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Lexer/pragma-operators.cpp"]={"clang/test/Lexer/pragma-operators.cpp:37:65: warning: \"Hello\", world! [-W#pragma-messages]"} | ["clang/test/Lexer/pragma-operators.cpp"]={"clang/test/Lexer/pragma-operators.cpp:37:65: warning: \"Hello\", world! [-W#pragma-messages]"} | ||
Line 4,463: | Line 4,463: | ||
[h]=B, | [h]=B, | ||
[i]={"1bbe00e0ca2d",1521535991,Wb,Wb}, | [i]={"1bbe00e0ca2d",1521535991,Wb,Wb}, | ||
[j]={{s,3765,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n if (Tok.is(tok::eof) || Tok.is(tok::r_paren)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_missing_argument) << PragmaName << /*Expected=*/true << \"\'on\' or \'off\'\";"}}, | [j]={{s,3765,"// #pragma optimize(\"gsty\", on|off)\nbool Parser::HandlePragmaMSOptimize(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n if (Tok.is(tok::eof) || Tok.is(tok::r_paren)) {\n PP.Diag(PragmaLocation, diag::warn_pragma_missing_argument) << PragmaName << /*Expected=*/true << \"\'on\' or \'off\'\";"}}, | ||
[p]={ | [p]={ | ||
[Ab]={"clang/test/Preprocessor/pragma_microsoft.c:228:9: warning: missing argument to \'#pragma optimize\'; expected \'on\' or \'off\' [-Wignored-pragmas]"} | [Ab]={"clang/test/Preprocessor/pragma_microsoft.c:228:9: warning: missing argument to \'#pragma optimize\'; expected \'on\' or \'off\' [-Wignored-pragmas]"} | ||
Line 4,480: | Line 4,480: | ||
[h]=B, | [h]=B, | ||
[i]={"69350e569dc4",1612659633,bc,bc}, | [i]={"69350e569dc4",1612659633,bc,bc}, | ||
[j]={{s,282,"// \"\\#pragma fenv_access (on)\".\nstruct PragmaMSFenvAccessHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) override {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_fenv_access);"},{s,294,"// \"\\#pragma fenv_access (on)\".\nstruct PragmaMSFenvAccessHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) override {\n if (II->isStr(\"on\")) {\n } else if (II->isStr(\"off\")) {\n } else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_fenv_access);"}}, | [j]={{s,282,"// \"\\#pragma fenv_access (on)\".\nstruct PragmaMSFenvAccessHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) override {\n // ...\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_fenv_access);"},{s,294,"// \"\\#pragma fenv_access (on)\".\nstruct PragmaMSFenvAccessHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) override {\n // ...\n if (II->isStr(\"on\")) {\n // ...\n } else if (II->isStr(\"off\")) {\n // ...\n } else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_fenv_access);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/pragma-fenv_access-ms.c"]={"clang/test/Parser/pragma-fenv_access-ms.c:9:83: warning: incorrect use of \'#pragma fenv_access (on|off)\' - ignored [-Wignored-pragmas]"} | ["clang/test/Parser/pragma-fenv_access-ms.c"]={"clang/test/Parser/pragma-fenv_access-ms.c:9:83: warning: incorrect use of \'#pragma fenv_access (on|off)\' - ignored [-Wignored-pragmas]"} | ||
Line 4,497: | Line 4,497: | ||
[h]=B, | [h]=B, | ||
[i]={"743dda49d972",1303757355,"Recognize gcc\'s ms_struct pragma (and ignore for now).","Recognize gcc\'s ms_struct pragma (and ignore for now)."}, | [i]={"743dda49d972",1303757355,"Recognize gcc\'s ms_struct pragma (and ignore for now).","Recognize gcc\'s ms_struct pragma (and ignore for now)."}, | ||
[j]={{s,2162,"// #pragma ms_struct on\n// #pragma ms_struct off\nvoid PragmaMSStructHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &MSStructTok) {\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_struct);"},{s,2174,"// #pragma ms_struct on\n// #pragma ms_struct off\nvoid PragmaMSStructHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &MSStructTok) {\n if (II->isStr(\"on\")) {\n } else if (II->isStr(\"off\") || II->isStr(\"reset\"))\n else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_struct);"}}, | [j]={{s,2162,"// #pragma ms_struct on\n// #pragma ms_struct off\nvoid PragmaMSStructHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &MSStructTok) {\n // ...\n if (Tok.isNot(tok::identifier)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_struct);"},{s,2174,"// #pragma ms_struct on\n// #pragma ms_struct off\nvoid PragmaMSStructHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &MSStructTok) {\n // ...\n if (II->isStr(\"on\")) {\n // ...\n } else if (II->isStr(\"off\") || II->isStr(\"reset\"))\n // ...\n else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_struct);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/pragma-ms_struct.c"]={"clang/test/Sema/pragma-ms_struct.c:9:96: warning: incorrect use of \'#pragma ms_struct on|off\' - ignored [-Wignored-pragmas]"} | ["clang/test/Sema/pragma-ms_struct.c"]={"clang/test/Sema/pragma-ms_struct.c:9:96: warning: incorrect use of \'#pragma ms_struct on|off\' - ignored [-Wignored-pragmas]"} | ||
Line 4,515: | Line 4,515: | ||
[h]=B, | [h]=B, | ||
[i]={"5d61097dd909",1351328745,"Feature:","Feature:"}, | [i]={"5d61097dd909",1351328745,"Feature:","Feature:"}, | ||
[j]={{s,2619,"/// Handle \'#pragma omp ...\' when OpenMP is disabled.\n///\nvoid PragmaNoOpenMPHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstTok) {\n if (!PP.getDiagnostics().isIgnored(diag::warn_pragma_omp_ignored, FirstTok.getLocation())) {"},{s,2621,"/// Handle \'#pragma omp ...\' when OpenMP is disabled.\n///\nvoid PragmaNoOpenMPHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstTok) {\n if (!PP.getDiagnostics().isIgnored(diag::warn_pragma_omp_ignored, FirstTok.getLocation())) {\n PP.Diag(FirstTok, diag::warn_pragma_omp_ignored);"},{s,2622,"/// Handle \'#pragma omp ...\' when OpenMP is disabled.\n///\nvoid PragmaNoOpenMPHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstTok) {\n if (!PP.getDiagnostics().isIgnored(diag::warn_pragma_omp_ignored, FirstTok.getLocation())) {\n PP.getDiagnostics().setSeverity(diag::warn_pragma_omp_ignored, diag::Severity::Ignored, SourceLocation());"}}, | [j]={{s,2619,"/// Handle \'#pragma omp ...\' when OpenMP is disabled.\n///\nvoid PragmaNoOpenMPHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstTok) {\n if (!PP.getDiagnostics().isIgnored(diag::warn_pragma_omp_ignored, FirstTok.getLocation())) {"},{s,2621,"/// Handle \'#pragma omp ...\' when OpenMP is disabled.\n///\nvoid PragmaNoOpenMPHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstTok) {\n if (!PP.getDiagnostics().isIgnored(diag::warn_pragma_omp_ignored, FirstTok.getLocation())) {\n PP.Diag(FirstTok, diag::warn_pragma_omp_ignored);"},{s,2622,"/// Handle \'#pragma omp ...\' when OpenMP is disabled.\n///\nvoid PragmaNoOpenMPHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstTok) {\n if (!PP.getDiagnostics().isIgnored(diag::warn_pragma_omp_ignored, FirstTok.getLocation())) {\n // ...\n PP.getDiagnostics().setSeverity(diag::warn_pragma_omp_ignored, diag::Severity::Ignored, SourceLocation());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/option_warn.c"]={"clang/test/OpenMP/option_warn.c:7:9: warning: unexpected \'#pragma omp ...\' in program [-Wsource-uses-openmp]"} | ["clang/test/OpenMP/option_warn.c"]={"clang/test/OpenMP/option_warn.c:7:9: warning: unexpected \'#pragma omp ...\' in program [-Wsource-uses-openmp]"} | ||
Line 4,532: | Line 4,532: | ||
[h]=q, | [h]=q, | ||
[i]={"69dac58e7d42",1274918680,"Sema: Support for #pragma options align={reset,natural}. \'#pragma options align\'","Sema: Support for #pragma options align={reset,natural}. \'#pragma options align\'"}, | [i]={"69dac58e7d42",1274918680,"Sema: Support for #pragma options align={reset,natural}. \'#pragma options align\'","Sema: Support for #pragma options align={reset,natural}. \'#pragma options align\'"}, | ||
[j]={{mb,261,"void Sema::ActOnPragmaOptionsAlign(PragmaOptionsAlignKind Kind, SourceLocation PragmaLoc) {\n case POAK_Reset:\n if (AlignPackStack.Stack.empty()) {\n if (AlignPackStack.CurrentValue.getAlignMode() != AlignPackInfo::Native || AlignPackStack.CurrentValue.IsPackAttr()) {\n } else {\n Diag(PragmaLoc, diag::warn_pragma_options_align_reset_failed) << \"stack empty\";"}}, | [j]={{mb,261,"void Sema::ActOnPragmaOptionsAlign(PragmaOptionsAlignKind Kind, SourceLocation PragmaLoc) {\n // ...\n case POAK_Reset:\n // ...\n if (AlignPackStack.Stack.empty()) {\n if (AlignPackStack.CurrentValue.getAlignMode() != AlignPackInfo::Native || AlignPackStack.CurrentValue.IsPackAttr()) {\n // ...\n } else {\n Diag(PragmaLoc, diag::warn_pragma_options_align_reset_failed) << \"stack empty\";"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/pragma-pack-and-options-align.c"]={"clang/test/Sema/pragma-pack-and-options-align.c:51:84: warning: #pragma options align=reset failed: stack empty [-Wignored-pragmas]"} | ["clang/test/Sema/pragma-pack-and-options-align.c"]={"clang/test/Sema/pragma-pack-and-options-align.c:51:84: warning: #pragma options align=reset failed: stack empty [-Wignored-pragmas]"} | ||
Line 4,549: | Line 4,549: | ||
[h]=B, | [h]=B, | ||
[i]={"75c9be7e8048",1274916546,"Parse: Add support for \'#pragma options align\'.","Parse: Add support for \'#pragma options align\'."}, | [i]={"75c9be7e8048",1274916546,"Parse: Add support for \'#pragma options align\'.","Parse: Add support for \'#pragma options align\'."}, | ||
[j]={{s,2257,"// #pragma \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'options \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'align\' \'(\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'} \')\'\nstatic void ParseAlignPragma(Preprocessor &PP, Token &FirstTok, bool IsOptions) {\n if (IsOptions) {\n if (Tok.isNot(tok::identifier) || !Tok.getIdentifierInfo()->isStr(\"align\")) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_options_expected_align);"}}, | [j]={{s,2257,"// #pragma \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'options \'align\' \'=\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'}\n// #pragma \'align\' \'(\' {\'native\',\'natural\',\'mac68k\',\'power\',\'reset\'} \')\'\nstatic void ParseAlignPragma(Preprocessor &PP, Token &FirstTok, bool IsOptions) {\n // ...\n if (IsOptions) {\n // ...\n if (Tok.isNot(tok::identifier) || !Tok.getIdentifierInfo()->isStr(\"align\")) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_options_expected_align);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/pragma-options.c"]={"clang/test/Parser/pragma-options.c:3:88: warning: expected \'align\' following \'#pragma options\' - ignored [-Wignored-pragmas]"} | ["clang/test/Parser/pragma-options.c"]={"clang/test/Parser/pragma-options.c:3:88: warning: expected \'align\' following \'#pragma options\' - ignored [-Wignored-pragmas]"} | ||
Line 4,566: | Line 4,566: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{mb,347,"void Sema::ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action, StringRef SlotLabel, Expr *alignment) {\n if (Alignment) {\n // pack(0) is like pack(), which just works out since that is what\n // we use 0 for in PackAttr.\n if (Alignment->isTypeDependent() || !Val || !(*Val == 0 || Val->isPowerOf2()) || Val->getZExtValue() > 16) {\n Diag(PragmaLoc, diag::warn_pragma_pack_invalid_alignment);"}}, | [j]={{mb,347,"void Sema::ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action, StringRef SlotLabel, Expr *alignment) {\n // ...\n if (Alignment) {\n // ...\n // pack(0) is like pack(), which just works out since that is what\n // we use 0 for in PackAttr.\n if (Alignment->isTypeDependent() || !Val || !(*Val == 0 || Val->isPowerOf2()) || Val->getZExtValue() > 16) {\n Diag(PragmaLoc, diag::warn_pragma_pack_invalid_alignment);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/pragma-pack.c"]={"clang/test/Sema/pragma-pack.c:4:74: warning: expected #pragma pack parameter to be \'1\', \'2\', \'4\', \'8\', or \'16\' [-Wignored-pragmas]"} | ["clang/test/Sema/pragma-pack.c"]={"clang/test/Sema/pragma-pack.c:4:74: warning: expected #pragma pack parameter to be \'1\', \'2\', \'4\', \'8\', or \'16\' [-Wignored-pragmas]"} | ||
Line 4,583: | Line 4,583: | ||
[h]=B, | [h]=B, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{s,2099,"// #pragma pack(...) comes in the following delicious flavors:\n// pack \'(\' [integer] \')\'\n// pack \'(\' \'show\' \')\'\n// pack \'(\' (\'push\' | \'pop\') [\',\' identifier] [, integer] \')\'\nvoid PragmaPackHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &PackTok) {\n if (Tok.is(tok::numeric_constant)) {\n } else if (Tok.is(tok::identifier)) {\n if (II->isStr(\"show\")) {\n } else {\n if (Tok.is(tok::comma)) {\n if (Tok.is(tok::numeric_constant)) {\n } else if (Tok.is(tok::identifier)) {\n if (Tok.is(tok::comma)) {\n if (Tok.isNot(tok::numeric_constant)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_malformed);"},{s,2109,"// #pragma pack(...) comes in the following delicious flavors:\n// pack \'(\' [integer] \')\'\n// pack \'(\' \'show\' \')\'\n// pack \'(\' (\'push\' | \'pop\') [\',\' identifier] [, integer] \')\'\nvoid PragmaPackHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &PackTok) {\n if (Tok.is(tok::numeric_constant)) {\n } else if (Tok.is(tok::identifier)) {\n if (II->isStr(\"show\")) {\n } else {\n if (Tok.is(tok::comma)) {\n if (Tok.is(tok::numeric_constant)) {\n } else if (Tok.is(tok::identifier)) {\n } else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_malformed);"}}, | [j]={{s,2099,"// #pragma pack(...) comes in the following delicious flavors:\n// pack \'(\' [integer] \')\'\n// pack \'(\' \'show\' \')\'\n// pack \'(\' (\'push\' | \'pop\') [\',\' identifier] [, integer] \')\'\nvoid PragmaPackHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &PackTok) {\n // ...\n if (Tok.is(tok::numeric_constant)) {\n // ...\n } else if (Tok.is(tok::identifier)) {\n // ...\n if (II->isStr(\"show\")) {\n // ...\n } else {\n // ...\n if (Tok.is(tok::comma)) {\n // ...\n if (Tok.is(tok::numeric_constant)) {\n // ...\n } else if (Tok.is(tok::identifier)) {\n // ...\n if (Tok.is(tok::comma)) {\n // ...\n if (Tok.isNot(tok::numeric_constant)) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_malformed);"},{s,2109,"// #pragma pack(...) comes in the following delicious flavors:\n// pack \'(\' [integer] \')\'\n// pack \'(\' \'show\' \')\'\n// pack \'(\' (\'push\' | \'pop\') [\',\' identifier] [, integer] \')\'\nvoid PragmaPackHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &PackTok) {\n // ...\n if (Tok.is(tok::numeric_constant)) {\n // ...\n } else if (Tok.is(tok::identifier)) {\n // ...\n if (II->isStr(\"show\")) {\n // ...\n } else {\n // ...\n if (Tok.is(tok::comma)) {\n // ...\n if (Tok.is(tok::numeric_constant)) {\n // ...\n } else if (Tok.is(tok::identifier)) {\n // ...\n } else {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_malformed);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/pragma-pack.c"]={"clang/test/Parser/pragma-pack.c:14:94: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-pack.c:15:94: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-pack.c:16:94: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-pack.c:19:97: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-pack.c:20:96: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-pack.c:21:96: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-pack.c:32:76: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]"} | ["clang/test/Parser/pragma-pack.c"]={"clang/test/Parser/pragma-pack.c:14:94: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-pack.c:15:94: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-pack.c:16:94: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-pack.c:19:97: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-pack.c:20:96: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-pack.c:21:96: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]","clang/test/Parser/pragma-pack.c:32:76: warning: expected integer or identifier in \'#pragma pack\' - ignored [-Wignored-pragmas]"} | ||
Line 4,600: | Line 4,600: | ||
[h]=q, | [h]=q, | ||
[i]={"ad273341a452",1500398631,xc,xc}, | [i]={"ad273341a452",1500398631,xc,xc}, | ||
[j]={{mb,471,"void Sema::DiagnoseNonDefaultPragmaAlignPack(PragmaAlignPackDiagnoseKind Kind, SourceLocation IncludeLoc) {\n // Warn about modified alignment after #includes.\n if (PrevAlignPackState.CurrentValue != AlignPackStack.CurrentValue) {\n Diag(IncludeLoc, diag::warn_pragma_pack_modified_after_include);"}}, | [j]={{mb,471,"void Sema::DiagnoseNonDefaultPragmaAlignPack(PragmaAlignPackDiagnoseKind Kind, SourceLocation IncludeLoc) {\n // ...\n // Warn about modified alignment after #includes.\n if (PrevAlignPackState.CurrentValue != AlignPackStack.CurrentValue) {\n Diag(IncludeLoc, diag::warn_pragma_pack_modified_after_include);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/misleading-pragma-align-pack-diagnostics.c"]={"clang/test/Sema/misleading-pragma-align-pack-diagnostics.c:15:10: warning: the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]"} | ["clang/test/Sema/misleading-pragma-align-pack-diagnostics.c"]={"clang/test/Sema/misleading-pragma-align-pack-diagnostics.c:15:10: warning: the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]"} | ||
Line 4,617: | Line 4,617: | ||
[h]=q, | [h]=q, | ||
[i]={"ad273341a452",1500398631,xc,xc}, | [i]={"ad273341a452",1500398631,xc,xc}, | ||
[j]={{mb,485,"void Sema::DiagnoseUnterminatedPragmaAlignPack() {\n // FIXME: AlignPackStack may contain both #pragma align and #pragma pack\n // information, diagnostics below might not be accurate if we have mixed\n // pragmas.\n for (const auto &StackSlot : llvm::reverse(AlignPackStack.Stack)) {\n Diag(StackSlot.PragmaPushLocation, diag::warn_pragma_pack_no_pop_eof);"}}, | [j]={{mb,485,"void Sema::DiagnoseUnterminatedPragmaAlignPack() {\n // ...\n // FIXME: AlignPackStack may contain both #pragma align and #pragma pack\n // information, diagnostics below might not be accurate if we have mixed\n // pragmas.\n for (const auto &StackSlot : llvm::reverse(AlignPackStack.Stack)) {\n Diag(StackSlot.PragmaPushLocation, diag::warn_pragma_pack_no_pop_eof);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/FixIt/fixit-pragma-pack.c"]={"clang/test/FixIt/fixit-pragma-pack.c:3:9: warning: unterminated \'#pragma pack (push, ...)\' at end of file [-Wpragma-pack]"} | ["clang/test/FixIt/fixit-pragma-pack.c"]={"clang/test/FixIt/fixit-pragma-pack.c:3:9: warning: unterminated \'#pragma pack (push, ...)\' at end of file [-Wpragma-pack]"} | ||
Line 4,635: | Line 4,635: | ||
[h]=q, | [h]=q, | ||
[i]={"ad273341a452",1500398631,xc,xc}, | [i]={"ad273341a452",1500398631,xc,xc}, | ||
[j]={{mb,466,"void Sema::DiagnoseNonDefaultPragmaAlignPack(PragmaAlignPackDiagnoseKind Kind, SourceLocation IncludeLoc) {\n // FIXME: AlignPackStack may contain both #pragma align and #pragma pack\n // information, diagnostics below might not be accurate if we have mixed\n // pragmas.\n if (PrevAlignPackState.ShouldWarnOnInclude) {\n Diag(IncludeLoc, diag::warn_pragma_pack_non_default_at_include);"}}, | [j]={{mb,466,"void Sema::DiagnoseNonDefaultPragmaAlignPack(PragmaAlignPackDiagnoseKind Kind, SourceLocation IncludeLoc) {\n // ...\n // FIXME: AlignPackStack may contain both #pragma align and #pragma pack\n // information, diagnostics below might not be accurate if we have mixed\n // pragmas.\n if (PrevAlignPackState.ShouldWarnOnInclude) {\n // ...\n Diag(IncludeLoc, diag::warn_pragma_pack_non_default_at_include);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/suspicious-pragma-pack.m"]={"clang/test/SemaObjC/suspicious-pragma-pack.m:4:9: warning: non-default #pragma pack value changes the alignment of struct or union members in the included file [-Wpragma-pack-suspicious-include]"} | ["clang/test/SemaObjC/suspicious-pragma-pack.m"]={"clang/test/SemaObjC/suspicious-pragma-pack.m:4:9: warning: non-default #pragma pack value changes the alignment of struct or union members in the included file [-Wpragma-pack-suspicious-include]"} | ||
Line 4,650: | Line 4,650: | ||
[h]=q, | [h]=q, | ||
[i]={"2a8c18d99118",1523027672,"Fix typos in clang","Fix typos in clang"}, | [i]={"2a8c18d99118",1523027672,"Fix typos in clang","Fix typos in clang"}, | ||
[j]={{mb,376,"void Sema::ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action, StringRef SlotLabel, Expr *alignment) {\n // MSDN, C/C++ Preprocessor Reference > Pragma Directives > pack:\n // \"#pragma pack(pop, identifier, n) is undefined\"\n if (Action & Sema::PSK_Pop) {\n if (Alignment && !SlotLabel.empty())\n Diag(PragmaLoc, diag::warn_pragma_pack_pop_identifier_and_alignment);"}} | [j]={{mb,376,"void Sema::ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action, StringRef SlotLabel, Expr *alignment) {\n // ...\n // MSDN, C/C++ Preprocessor Reference > Pragma Directives > pack:\n // \"#pragma pack(pop, identifier, n) is undefined\"\n if (Action & Sema::PSK_Pop) {\n if (Alignment && !SlotLabel.empty())\n Diag(PragmaLoc, diag::warn_pragma_pack_pop_identifier_and_alignment);"}} | ||
}, | }, | ||
["warn_pragma_pack_show"]={ | ["warn_pragma_pack_show"]={ | ||
Line 4,662: | Line 4,662: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{mb,367,"void Sema::ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action, StringRef SlotLabel, Expr *alignment) {\n if (Action == Sema::PSK_Show) {\n if (ModeVal == AlignPackInfo::Mac68k && (IsXLPragma || CurVal.IsAlignAttr()))\n Diag(PragmaLoc, diag::warn_pragma_pack_show) << \"mac68k\";"},{mb,369,"void Sema::ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action, StringRef SlotLabel, Expr *alignment) {\n if (Action == Sema::PSK_Show) {\n if (ModeVal == AlignPackInfo::Mac68k && (IsXLPragma || CurVal.IsAlignAttr()))\n else\n Diag(PragmaLoc, diag::warn_pragma_pack_show) << AlignmentVal;"}}, | [j]={{mb,367,"void Sema::ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action, StringRef SlotLabel, Expr *alignment) {\n // ...\n if (Action == Sema::PSK_Show) {\n // ...\n if (ModeVal == AlignPackInfo::Mac68k && (IsXLPragma || CurVal.IsAlignAttr()))\n Diag(PragmaLoc, diag::warn_pragma_pack_show) << \"mac68k\";"},{mb,369,"void Sema::ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action, StringRef SlotLabel, Expr *alignment) {\n // ...\n if (Action == Sema::PSK_Show) {\n // ...\n if (ModeVal == AlignPackInfo::Mac68k && (IsXLPragma || CurVal.IsAlignAttr()))\n // ...\n else\n Diag(PragmaLoc, diag::warn_pragma_pack_show) << AlignmentVal;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/pragma-pack.c"]={"clang/test/Sema/pragma-pack.c:3:69: warning: value of #pragma pack(show) == 8","clang/test/Sema/pragma-pack.c:5:69: warning: value of #pragma pack(show) == 8","clang/test/Sema/pragma-pack.c:7:69: warning: value of #pragma pack(show) == 4","clang/test/Sema/pragma-pack.c:9:69: warning: value of #pragma pack(show) == 8","clang/test/Sema/pragma-pack.c:12:70: warning: value of #pragma pack(show) == 16","clang/test/Sema/pragma-pack.c:14:70: warning: value of #pragma pack(show) == 16","clang/test/Sema/pragma-pack.c:17:69: warning: value of #pragma pack(show) == 8","clang/test/Sema/pragma-pack.c:19:69: warning: value of #pragma pack(show) == 1","clang/test/Sema/pragma-pack.c:21:69: warning: value of #pragma pack(show) == 2","clang/test/Sema/pragma-pack.c:26:70: warning: value of #pragma pack(show) == 16"} | ["clang/test/Sema/pragma-pack.c"]={"clang/test/Sema/pragma-pack.c:3:69: warning: value of #pragma pack(show) == 8","clang/test/Sema/pragma-pack.c:5:69: warning: value of #pragma pack(show) == 8","clang/test/Sema/pragma-pack.c:7:69: warning: value of #pragma pack(show) == 4","clang/test/Sema/pragma-pack.c:9:69: warning: value of #pragma pack(show) == 8","clang/test/Sema/pragma-pack.c:12:70: warning: value of #pragma pack(show) == 16","clang/test/Sema/pragma-pack.c:14:70: warning: value of #pragma pack(show) == 16","clang/test/Sema/pragma-pack.c:17:69: warning: value of #pragma pack(show) == 8","clang/test/Sema/pragma-pack.c:19:69: warning: value of #pragma pack(show) == 1","clang/test/Sema/pragma-pack.c:21:69: warning: value of #pragma pack(show) == 2","clang/test/Sema/pragma-pack.c:26:70: warning: value of #pragma pack(show) == 16"} | ||
Line 4,679: | Line 4,679: | ||
[h]=q, | [h]=q, | ||
[i]={"c0dca6ded731",1392249026,Yc,Yc}, | [i]={"c0dca6ded731",1392249026,Yc,Yc}, | ||
[j]={{mb,380,"void Sema::ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action, StringRef SlotLabel, Expr *alignment) {\n // MSDN, C/C++ Preprocessor Reference > Pragma Directives > pack:\n // \"#pragma pack(pop, identifier, n) is undefined\"\n if (Action & Sema::PSK_Pop) {\n if (AlignPackStack.Stack.empty()) {\n Diag(PragmaLoc, diag::warn_pragma_pop_failed) << \"pack\""},{mb,593,"void Sema::ActOnPragmaFloatControl(SourceLocation Loc, PragmaMsStackAction Action, PragmaFloatControlKind Value) {\n case PFC_Pop:\n if (FpPragmaStack.Stack.empty()) {\n Diag(Loc, diag::warn_pragma_pop_failed) << \"float_control\""},{mb,615,"void Sema::ActOnPragmaMSVtorDisp(PragmaMsStackAction Action, SourceLocation PragmaLoc, MSVtorDispMode Mode) {\n if (Action & PSK_Pop && VtorDispStack.Stack.empty())\n Diag(PragmaLoc, diag::warn_pragma_pop_failed) << \"vtordisp\""},{mb,748,"/// Called on well formed \\#pragma bss_seg().\nvoid Sema::ActOnPragmaMSSeg(SourceLocation PragmaLocation, PragmaMsStackAction Action, llvm::StringRef StackSlotLabel, StringLiteral *SegmentName, llvm::StringRef PragmaName) {\n if (Action & PSK_Pop && Stack->Stack.empty())\n Diag(PragmaLocation, diag::warn_pragma_pop_failed) << PragmaName << \"stack empty\";"},{mb,767,"/// Called on well formed \\#pragma strict_gs_check().\nvoid Sema::ActOnPragmaMSStrictGuardStackCheck(SourceLocation PragmaLocation, PragmaMsStackAction Action, bool Value) {\n if (Action & PSK_Pop && StrictGuardStackCheckStack.Stack.empty())\n Diag(PragmaLocation, diag::warn_pragma_pop_failed) << \"strict_gs_check\""}}, | [j]={{mb,380,"void Sema::ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action, StringRef SlotLabel, Expr *alignment) {\n // ...\n // MSDN, C/C++ Preprocessor Reference > Pragma Directives > pack:\n // \"#pragma pack(pop, identifier, n) is undefined\"\n if (Action & Sema::PSK_Pop) {\n // ...\n if (AlignPackStack.Stack.empty()) {\n // ...\n Diag(PragmaLoc, diag::warn_pragma_pop_failed) << \"pack\""},{mb,593,"void Sema::ActOnPragmaFloatControl(SourceLocation Loc, PragmaMsStackAction Action, PragmaFloatControlKind Value) {\n // ...\n case PFC_Pop:\n if (FpPragmaStack.Stack.empty()) {\n Diag(Loc, diag::warn_pragma_pop_failed) << \"float_control\""},{mb,615,"void Sema::ActOnPragmaMSVtorDisp(PragmaMsStackAction Action, SourceLocation PragmaLoc, MSVtorDispMode Mode) {\n if (Action & PSK_Pop && VtorDispStack.Stack.empty())\n Diag(PragmaLoc, diag::warn_pragma_pop_failed) << \"vtordisp\""},{mb,748,"/// Called on well formed \\#pragma bss_seg().\nvoid Sema::ActOnPragmaMSSeg(SourceLocation PragmaLocation, PragmaMsStackAction Action, llvm::StringRef StackSlotLabel, StringLiteral *SegmentName, llvm::StringRef PragmaName) {\n // ...\n if (Action & PSK_Pop && Stack->Stack.empty())\n Diag(PragmaLocation, diag::warn_pragma_pop_failed) << PragmaName << \"stack empty\";"},{mb,767,"/// Called on well formed \\#pragma strict_gs_check().\nvoid Sema::ActOnPragmaMSStrictGuardStackCheck(SourceLocation PragmaLocation, PragmaMsStackAction Action, bool Value) {\n if (Action & PSK_Pop && StrictGuardStackCheckStack.Stack.empty())\n Diag(PragmaLocation, diag::warn_pragma_pop_failed) << \"strict_gs_check\""}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/pragma-pack-and-options-align.c"]={"clang/test/Sema/pragma-pack-and-options-align.c:52:79: warning: #pragma pack(pop, ...) failed: stack empty [-Wignored-pragmas]"} | ["clang/test/Sema/pragma-pack-and-options-align.c"]={"clang/test/Sema/pragma-pack-and-options-align.c:52:79: warning: #pragma pack(pop, ...) failed: stack empty [-Wignored-pragmas]"} | ||
Line 4,696: | Line 4,696: | ||
[h]=D, | [h]=D, | ||
[i]={"c0a585d63c6c",1282060545,"Implement #pragma push_macro, patch by Francois Pichet!","Implement #pragma push_macro, patch by Francois Pichet!"}, | [i]={"c0a585d63c6c",1282060545,"Implement #pragma push_macro, patch by Francois Pichet!","Implement #pragma push_macro, patch by Francois Pichet!"}, | ||
[j]={{I,681,"/// Handle \\#pragma pop_macro.\n///\n/// The syntax is:\n/// \\code\n/// #pragma pop_macro(\"macro\")\n/// \\endcode\nvoid Preprocessor::HandlePragmaPopMacro(Token &PopMacroTok) {\n if (iter != PragmaPushMacroInfo.end()) {\n } else {\n Diag(MessageLoc, diag::warn_pragma_pop_macro_no_push) << IdentInfo->getName();"}} | [j]={{I,681,"/// Handle \\#pragma pop_macro.\n///\n/// The syntax is:\n/// \\code\n/// #pragma pop_macro(\"macro\")\n/// \\endcode\nvoid Preprocessor::HandlePragmaPopMacro(Token &PopMacroTok) {\n // ...\n if (iter != PragmaPushMacroInfo.end()) {\n // ...\n } else {\n Diag(MessageLoc, diag::warn_pragma_pop_macro_no_push) << IdentInfo->getName();"}} | ||
}, | }, | ||
["warn_pragma_restrict_expansion_macro_use"]={ | ["warn_pragma_restrict_expansion_macro_use"]={ | ||
Line 4,710: | Line 4,710: | ||
[h]=D, | [h]=D, | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{Jc,1470,"void Preprocessor::emitRestrictExpansionWarning(const Token &Identifier) const {\n if (Info.Message.empty())\n Diag(Identifier, diag::warn_pragma_restrict_expansion_macro_use) << Identifier.getIdentifierInfo() << 0;"},{Jc,1473,"void Preprocessor::emitRestrictExpansionWarning(const Token &Identifier) const {\n if (Info.Message.empty())\n else\n Diag(Identifier, diag::warn_pragma_restrict_expansion_macro_use) << Identifier.getIdentifierInfo() << 1 << Info.Message;"}}, | [j]={{Jc,1470,"void Preprocessor::emitRestrictExpansionWarning(const Token &Identifier) const {\n // ...\n if (Info.Message.empty())\n Diag(Identifier, diag::warn_pragma_restrict_expansion_macro_use) << Identifier.getIdentifierInfo() << 0;"},{Jc,1473,"void Preprocessor::emitRestrictExpansionWarning(const Token &Identifier) const {\n // ...\n if (Info.Message.empty())\n // ...\n else\n Diag(Identifier, diag::warn_pragma_restrict_expansion_macro_use) << Identifier.getIdentifierInfo() << 1 << Info.Message;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Lexer/unsafe-macro.c"]={"clang/test/Lexer/Inputs/unsafe-macro-2.h:2:5: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:6:13: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:10:8: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:14:9: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:18:15: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:21:15: warning: macro \'UNSAFE_MACRO_2\' has been marked as unsafe for use in headers [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:34:7: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:41:10: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:48:11: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]"} | ["clang/test/Lexer/unsafe-macro.c"]={"clang/test/Lexer/Inputs/unsafe-macro-2.h:2:5: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:6:13: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:10:8: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:14:9: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:18:15: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:21:15: warning: macro \'UNSAFE_MACRO_2\' has been marked as unsafe for use in headers [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:34:7: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:41:10: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]","clang/test/Lexer/Inputs/unsafe-macro-2.h:48:11: warning: macro \'UNSAFE_MACRO\' has been marked as unsafe for use in headers: Don\'t use this! [-Wrestrict-expansion]"} | ||
Line 4,727: | Line 4,727: | ||
[h]=B, | [h]=B, | ||
[i]={"7ce13fc940de",1297647773,"OpenCL: add support for __kernel, kernel keywords and EXTENSION,","OpenCL: add support for __kernel, kernel keywords and EXTENSION,"}, | [i]={"7ce13fc940de",1297647773,"OpenCL: add support for __kernel, kernel keywords and EXTENSION,","OpenCL: add support for __kernel, kernel keywords and EXTENSION,"}, | ||
[j]={{s,914,"void Parser::HandlePragmaOpenCLExtension() {\n // OpenCL 1.1 9.1: \"The all variant sets the behavior for all extensions,\n // overriding all previously issued extension directives, but only if the\n // behavior is set to disable.\"\n if (Name == \"all\") {\n } else if (State == Begin) {\n } else if (State == End) {\n } else if (!Opt.isKnown(Name) || !Opt.isWithPragma(Name))\n PP.Diag(NameLoc, diag::warn_pragma_unknown_extension) << Ident;"}}, | [j]={{s,914,"void Parser::HandlePragmaOpenCLExtension() {\n // ...\n // OpenCL 1.1 9.1: \"The all variant sets the behavior for all extensions,\n // overriding all previously issued extension directives, but only if the\n // behavior is set to disable.\"\n if (Name == \"all\") {\n // ...\n } else if (State == Begin) {\n // ...\n } else if (State == End) {\n // ...\n } else if (!Opt.isKnown(Name) || !Opt.isWithPragma(Name))\n PP.Diag(NameLoc, diag::warn_pragma_unknown_extension) << Ident;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/opencl-pragma.cl"]={"clang/test/Parser/opencl-pragma.cl:5:26: warning: OpenCL extension \'cl_no_such_extension\' unknown or does not require pragma - ignoring [-Wignored-pragmas]"} | ["clang/test/Parser/opencl-pragma.cl"]={"clang/test/Parser/opencl-pragma.cl:5:26: warning: OpenCL extension \'cl_no_such_extension\' unknown or does not require pragma - ignoring [-Wignored-pragmas]"} | ||
Line 4,744: | Line 4,744: | ||
[h]=B, | [h]=B, | ||
[i]={"bd26f5ea4d9c",1405966114,"Add support for \'#pragma unroll\'.","Add support for \'#pragma unroll\'."}, | [i]={"bd26f5ea4d9c",1405966114,"Add support for \'#pragma unroll\'.","Add support for \'#pragma unroll\'."}, | ||
[j]={{s,3633,"/// Handle the loop unroll optimization pragmas.\n/// #pragma unroll\n/// #pragma unroll unroll-hint-value\n/// #pragma unroll \'(\' unroll-hint-value \')\'\n/// #pragma nounroll\n/// #pragma unroll_and_jam\n/// #pragma unroll_and_jam unroll-hint-value\n/// #pragma unroll_and_jam \'(\' unroll-hint-value \')\'\n/// #pragma nounroll_and_jam\n///\n/// unroll-hint-value:\n/// constant-expression\n///\n/// Loop unrolling hints can be specified with \'#pragma unroll\' or\n/// \'#pragma nounroll\'. \'#pragma unroll\' can take a numeric argument optionally\n/// contained in parentheses. With no argument the directive instructs llvm to\n/// try to unroll the loop completely. A positive integer argument can be\n/// specified to indicate the number of times the loop should be unrolled. To\n/// maximize compatibility with other compilers the unroll count argument can be\n/// specified with or without parentheses. Specifying, \'#pragma nounroll\'\n/// disables unrolling of the loop.\nvoid PragmaUnrollHintHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (Tok.is(tok::eod)) {\n } else if (PragmaName.getIdentifierInfo()->getName() == \"nounroll\" || PragmaName.getIdentifierInfo()->getName() == \"nounroll_and_jam\") {\n } else {\n // In CUDA, the argument to \'#pragma unroll\' should not be contained in\n // parentheses.\n if (PP.getLangOpts().CUDA && ValueInParens)\n PP.Diag(Info->Toks[0].getLocation(), diag::warn_pragma_unroll_cuda_value_in_parens);"}}, | [j]={{s,3633,"/// Handle the loop unroll optimization pragmas.\n/// #pragma unroll\n/// #pragma unroll unroll-hint-value\n/// #pragma unroll \'(\' unroll-hint-value \')\'\n/// #pragma nounroll\n/// #pragma unroll_and_jam\n/// #pragma unroll_and_jam unroll-hint-value\n/// #pragma unroll_and_jam \'(\' unroll-hint-value \')\'\n/// #pragma nounroll_and_jam\n///\n/// unroll-hint-value:\n/// constant-expression\n///\n/// Loop unrolling hints can be specified with \'#pragma unroll\' or\n/// \'#pragma nounroll\'. \'#pragma unroll\' can take a numeric argument optionally\n/// contained in parentheses. With no argument the directive instructs llvm to\n/// try to unroll the loop completely. A positive integer argument can be\n/// specified to indicate the number of times the loop should be unrolled. To\n/// maximize compatibility with other compilers the unroll count argument can be\n/// specified with or without parentheses. Specifying, \'#pragma nounroll\'\n/// disables unrolling of the loop.\nvoid PragmaUnrollHintHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (Tok.is(tok::eod)) {\n // ...\n } else if (PragmaName.getIdentifierInfo()->getName() == \"nounroll\" || PragmaName.getIdentifierInfo()->getName() == \"nounroll_and_jam\") {\n // ...\n } else {\n // ...\n // In CUDA, the argument to \'#pragma unroll\' should not be contained in\n // parentheses.\n if (PP.getLangOpts().CUDA && ValueInParens)\n PP.Diag(Info->Toks[0].getLocation(), diag::warn_pragma_unroll_cuda_value_in_parens);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/warn-cuda-compat.cu"]={"clang/test/Parser/warn-cuda-compat.cu:9:114: warning: argument to \'#pragma unroll\' should not be in parentheses in CUDA C/C++ [-Wcuda-compat]"} | ["clang/test/Parser/warn-cuda-compat.cu"]={"clang/test/Parser/warn-cuda-compat.cu:9:114: warning: argument to \'#pragma unroll\' should not be in parentheses in CUDA C/C++ [-Wcuda-compat]"} | ||
Line 4,761: | Line 4,761: | ||
[h]=B, | [h]=B, | ||
[i]={Mc,1396996247,Ib,Ib}, | [i]={Mc,1396996247,Ib,Ib}, | ||
[j]={{s,1033,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n while (Tok.is(tok::comma)) {\n if (Flag == ASTContext::PSF_None || Flag == ASTContext::PSF_Invalid) {\n PP.Diag(PragmaLocation, Flag == ASTContext::PSF_None ? diag::warn_pragma_invalid_specific_action : diag::warn_pragma_unsupported_action) << PragmaName << Tok.getIdentifierInfo()->getName();"}}, | [j]={{s,1033,"bool Parser::HandlePragmaMSSection(StringRef PragmaName, SourceLocation PragmaLocation) {\n // ...\n while (Tok.is(tok::comma)) {\n // ...\n if (Flag == ASTContext::PSF_None || Flag == ASTContext::PSF_Invalid) {\n PP.Diag(PragmaLocation, Flag == ASTContext::PSF_None ? diag::warn_pragma_invalid_specific_action : diag::warn_pragma_unsupported_action) << PragmaName << Tok.getIdentifierInfo()->getName();"}}, | ||
[p]={ | [p]={ | ||
[Hc]={"clang/test/Sema/pragma-section.c:42:9: warning: known but unsupported action \'nopage\' for \'#pragma section\' - ignored [-Wignored-pragmas]"} | [Hc]={"clang/test/Sema/pragma-section.c:42:9: warning: known but unsupported action \'nopage\' for \'#pragma section\' - ignored [-Wignored-pragmas]"} | ||
Line 4,778: | Line 4,778: | ||
[h]=B, | [h]=B, | ||
[i]={"64936ce91dba",1463154277,"[OpenCL] Add supported OpenCL extensions to target info.","[OpenCL] Add supported OpenCL extensions to target info."}, | [i]={"64936ce91dba",1463154277,"[OpenCL] Add supported OpenCL extensions to target info.","[OpenCL] Add supported OpenCL extensions to target info."}, | ||
[j]={{s,920,"void Parser::HandlePragmaOpenCLExtension() {\n // OpenCL 1.1 9.1: \"The all variant sets the behavior for all extensions,\n // overriding all previously issued extension directives, but only if the\n // behavior is set to disable.\"\n if (Name == \"all\") {\n } else if (State == Begin) {\n } else if (State == End) {\n } else if (!Opt.isKnown(Name) || !Opt.isWithPragma(Name))\n else if (Opt.isSupportedExtension(Name, getLangOpts()))\n else if (Opt.isSupportedCoreOrOptionalCore(Name, getLangOpts()))\n else\n PP.Diag(NameLoc, diag::warn_pragma_unsupported_extension) << Ident;"}}, | [j]={{s,920,"void Parser::HandlePragmaOpenCLExtension() {\n // ...\n // OpenCL 1.1 9.1: \"The all variant sets the behavior for all extensions,\n // overriding all previously issued extension directives, but only if the\n // behavior is set to disable.\"\n if (Name == \"all\") {\n // ...\n } else if (State == Begin) {\n // ...\n } else if (State == End) {\n // ...\n } else if (!Opt.isKnown(Name) || !Opt.isWithPragma(Name))\n // ...\n else if (Opt.isSupportedExtension(Name, getLangOpts()))\n // ...\n else if (Opt.isSupportedCoreOrOptionalCore(Name, getLangOpts()))\n // ...\n else\n PP.Diag(NameLoc, diag::warn_pragma_unsupported_extension) << Ident;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Misc/amdgcn.languageOptsOpenCL.cl"]={"clang/test/Misc/amdgcn.languageOptsOpenCL.cl:115:26: warning: unsupported OpenCL extension \'cl_khr_gl_msaa_sharing\' - ignoring [-Wignored-pragmas]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:133:26: warning: unsupported OpenCL extension \'cl_khr_srgb_image_writes\' - ignoring [-Wignored-pragmas]"} | ["clang/test/Misc/amdgcn.languageOptsOpenCL.cl"]={"clang/test/Misc/amdgcn.languageOptsOpenCL.cl:115:26: warning: unsupported OpenCL extension \'cl_khr_gl_msaa_sharing\' - ignoring [-Wignored-pragmas]","clang/test/Misc/amdgcn.languageOptsOpenCL.cl:133:26: warning: unsupported OpenCL extension \'cl_khr_srgb_image_writes\' - ignoring [-Wignored-pragmas]"} | ||
Line 4,795: | Line 4,795: | ||
[h]=B, | [h]=B, | ||
[i]={"fd14fade2ffc",1237847305,fc,fc}, | [i]={"fd14fade2ffc",1237847305,fc,fc}, | ||
[j]={{s,2372,"// #pragma unused(identifier)\nvoid PragmaUnusedHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &UnusedTok) {\n while (true) {\n if (LexID) {\n PP.Diag(Tok.getLocation(), diag::warn_pragma_unused_expected_var);"}}, | [j]={{s,2372,"// #pragma unused(identifier)\nvoid PragmaUnusedHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &UnusedTok) {\n // ...\n while (true) {\n // ...\n if (LexID) {\n // ...\n PP.Diag(Tok.getLocation(), diag::warn_pragma_unused_expected_var);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/pragma-unused.c"]={"clang/test/Sema/pragma-unused.c:14:20: warning: expected \'#pragma unused\' argument to be a variable name [-Wignored-pragmas]","clang/test/Sema/pragma-unused.c:15:18: warning: expected \'#pragma unused\' argument to be a variable name [-Wignored-pragmas]","clang/test/Sema/pragma-unused.c:24:18: warning: expected \'#pragma unused\' argument to be a variable name [-Wignored-pragmas]"} | ["clang/test/Sema/pragma-unused.c"]={"clang/test/Sema/pragma-unused.c:14:20: warning: expected \'#pragma unused\' argument to be a variable name [-Wignored-pragmas]","clang/test/Sema/pragma-unused.c:15:18: warning: expected \'#pragma unused\' argument to be a variable name [-Wignored-pragmas]","clang/test/Sema/pragma-unused.c:24:18: warning: expected \'#pragma unused\' argument to be a variable name [-Wignored-pragmas]"} | ||
Line 4,812: | Line 4,812: | ||
[h]=q, | [h]=q, | ||
[i]={"ff115a2f351d",1296152208,"Allow #pragma unused to be used on global variables like gcc. Fixes rdar://8793832.","Allow #pragma unused to be used on global variables like gcc. Fixes rdar://8793832."}, | [i]={"ff115a2f351d",1296152208,"Allow #pragma unused to be used on global variables like gcc. Fixes rdar://8793832.","Allow #pragma unused to be used on global variables like gcc. Fixes rdar://8793832."}, | ||
[j]={{mb,839,"void Sema::ActOnPragmaUnused(const Token &IdTok, Scope *curScope, SourceLocation PragmaLoc) {\n if (!VD) {\n Diag(PragmaLoc, diag::warn_pragma_unused_expected_var_arg) << Name << SourceRange(IdTok.getLocation());"}} | [j]={{mb,839,"void Sema::ActOnPragmaUnused(const Token &IdTok, Scope *curScope, SourceLocation PragmaLoc) {\n // ...\n if (!VD) {\n Diag(PragmaLoc, diag::warn_pragma_unused_expected_var_arg) << Name << SourceRange(IdTok.getLocation());"}} | ||
}, | }, | ||
["warn_pragma_unused_undeclared_var"]={ | ["warn_pragma_unused_undeclared_var"]={ | ||
Line 4,826: | Line 4,826: | ||
[h]=q, | [h]=q, | ||
[i]={"fb50bf5a6f16",1249341897,"Per advice that Doug Gregor gave me several months ago, clean up the","Per advice that Doug Gregor gave me several months ago, clean up the"}, | [i]={"fb50bf5a6f16",1249341897,"Per advice that Doug Gregor gave me several months ago, clean up the","Per advice that Doug Gregor gave me several months ago, clean up the"}, | ||
[j]={{mb,832,"void Sema::ActOnPragmaUnused(const Token &IdTok, Scope *curScope, SourceLocation PragmaLoc) {\n if (Lookup.empty()) {\n Diag(PragmaLoc, diag::warn_pragma_unused_undeclared_var) << Name << SourceRange(IdTok.getLocation());"}}, | [j]={{mb,832,"void Sema::ActOnPragmaUnused(const Token &IdTok, Scope *curScope, SourceLocation PragmaLoc) {\n // ...\n if (Lookup.empty()) {\n Diag(PragmaLoc, diag::warn_pragma_unused_undeclared_var) << Name << SourceRange(IdTok.getLocation());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/pragma-unused.c"]={"clang/test/Sema/pragma-unused.c:19:11: warning: undeclared variable \'x\' used as an argument for \'#pragma unused\' [-Wignored-pragmas]","clang/test/Sema/pragma-unused.c:36:11: warning: undeclared variable \'undeclared\' used as an argument for \'#pragma unused\' [-Wignored-pragmas]","clang/test/Sema/pragma-unused.c:36:11: warning: undeclared variable \'undefined\' used as an argument for \'#pragma unused\' [-Wignored-pragmas]"} | ["clang/test/Sema/pragma-unused.c"]={"clang/test/Sema/pragma-unused.c:19:11: warning: undeclared variable \'x\' used as an argument for \'#pragma unused\' [-Wignored-pragmas]","clang/test/Sema/pragma-unused.c:36:11: warning: undeclared variable \'undeclared\' used as an argument for \'#pragma unused\' [-Wignored-pragmas]","clang/test/Sema/pragma-unused.c:36:11: warning: undeclared variable \'undefined\' used as an argument for \'#pragma unused\' [-Wignored-pragmas]"} | ||
Line 4,843: | Line 4,843: | ||
[h]=D, | [h]=D, | ||
[i]={"881dff36831f",1379109630,gc,gc}, | [i]={"881dff36831f",1379109630,gc,gc}, | ||
[j]={{I,1395,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(Tok, diag::warn_pragma_warning_expected) << \"(\";"},{I,1473,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n if (II && II->isStr(\"push\")) {\n } else if (II && II->isStr(\"pop\")) {\n } else {\n // #pragma warning( warning-specifier : warning-number-list\n // [; warning-specifier : warning-number-list...] )\n while (true) {\n if (Tok.isNot(tok::colon)) {\n PP.Diag(Tok, diag::warn_pragma_warning_expected) << \":\";"},{I,1516,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(Tok, diag::warn_pragma_warning_expected) << \")\";"}}, | [j]={{I,1395,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n if (Tok.isNot(tok::l_paren)) {\n PP.Diag(Tok, diag::warn_pragma_warning_expected) << \"(\";"},{I,1473,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n if (II && II->isStr(\"push\")) {\n // ...\n } else if (II && II->isStr(\"pop\")) {\n // ...\n } else {\n // #pragma warning( warning-specifier : warning-number-list\n // [; warning-specifier : warning-number-list...] )\n while (true) {\n // ...\n if (Tok.isNot(tok::colon)) {\n PP.Diag(Tok, diag::warn_pragma_warning_expected) << \":\";"},{I,1516,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n if (Tok.isNot(tok::r_paren)) {\n PP.Diag(Tok, diag::warn_pragma_warning_expected) << \")\";"}}, | ||
[p]={ | [p]={ | ||
[Ab]={"clang/test/Preprocessor/pragma_microsoft.c:154:54: warning: #pragma warning expected \'(\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:157:22: warning: #pragma warning expected \')\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:159:59: warning: #pragma warning expected \')\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:162:20: warning: #pragma warning expected \')\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:166:25: warning: #pragma warning expected \':\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:168:25: warning: #pragma warning expected \':\' [-Wunknown-pragmas]"} | [Ab]={"clang/test/Preprocessor/pragma_microsoft.c:154:54: warning: #pragma warning expected \'(\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:157:22: warning: #pragma warning expected \')\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:159:59: warning: #pragma warning expected \')\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:162:20: warning: #pragma warning expected \')\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:166:25: warning: #pragma warning expected \':\' [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:168:25: warning: #pragma warning expected \':\' [-Wunknown-pragmas]"} | ||
Line 4,860: | Line 4,860: | ||
[h]=D, | [h]=D, | ||
[i]={"881dff36831f",1379109630,gc,gc}, | [i]={"881dff36831f",1379109630,gc,gc}, | ||
[j]={{I,1484,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n if (II && II->isStr(\"push\")) {\n } else if (II && II->isStr(\"pop\")) {\n } else {\n // #pragma warning( warning-specifier : warning-number-list\n // [; warning-specifier : warning-number-list...] )\n while (true) {\n while (Tok.is(tok::numeric_constant)) {\n if (!PP.parseSimpleIntegerLiteral(Tok, Value) || Value == 0 || Value > INT_MAX) {\n PP.Diag(Tok, diag::warn_pragma_warning_expected_number);"}}, | [j]={{I,1484,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n if (II && II->isStr(\"push\")) {\n // ...\n } else if (II && II->isStr(\"pop\")) {\n // ...\n } else {\n // #pragma warning( warning-specifier : warning-number-list\n // [; warning-specifier : warning-number-list...] )\n while (true) {\n // ...\n while (Tok.is(tok::numeric_constant)) {\n // ...\n if (!PP.parseSimpleIntegerLiteral(Tok, Value) || Value == 0 || Value > INT_MAX) {\n PP.Diag(Tok, diag::warn_pragma_warning_expected_number);"}}, | ||
[p]={ | [p]={ | ||
[Ab]={"clang/test/Preprocessor/pragma_microsoft.c:167:28: warning: #pragma warning expected a warning number [-Wunknown-pragmas]"} | [Ab]={"clang/test/Preprocessor/pragma_microsoft.c:167:28: warning: #pragma warning expected a warning number [-Wunknown-pragmas]"} | ||
Line 4,877: | Line 4,877: | ||
[h]=D, | [h]=D, | ||
[i]={"881dff36831f",1379109630,gc,gc}, | [i]={"881dff36831f",1379109630,gc,gc}, | ||
[j]={{I,1413,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n if (II && II->isStr(\"push\")) {\n if (Tok.is(tok::comma)) {\n if (Level < 0 || Level > 4) {\n PP.Diag(Tok, diag::warn_pragma_warning_push_level);"}}, | [j]={{I,1413,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n if (II && II->isStr(\"push\")) {\n // ...\n if (Tok.is(tok::comma)) {\n // ...\n if (Level < 0 || Level > 4) {\n PP.Diag(Tok, diag::warn_pragma_warning_push_level);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/pragma_microsoft.cpp"]={"clang/test/Preprocessor/pragma_microsoft.cpp:3:23: warning: #pragma warning(push, level) requires a level between 0 and 4 [-Wunknown-pragmas]"} | ["clang/test/Preprocessor/pragma_microsoft.cpp"]={"clang/test/Preprocessor/pragma_microsoft.cpp:3:23: warning: #pragma warning(push, level) requires a level between 0 and 4 [-Wunknown-pragmas]"} | ||
Line 4,894: | Line 4,894: | ||
[h]=D, | [h]=D, | ||
[i]={"881dff36831f",1379109630,gc,gc}, | [i]={"881dff36831f",1379109630,gc,gc}, | ||
[j]={{I,1433,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n if (II && II->isStr(\"push\")) {\n } else if (II && II->isStr(\"pop\")) {\n } else {\n // #pragma warning( warning-specifier : warning-number-list\n // [; warning-specifier : warning-number-list...] )\n while (true) {\n if (!II && !Tok.is(tok::numeric_constant)) {\n PP.Diag(Tok, diag::warn_pragma_warning_spec_invalid);"},{I,1469,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n if (II && II->isStr(\"push\")) {\n } else if (II && II->isStr(\"pop\")) {\n } else {\n // #pragma warning( warning-specifier : warning-number-list\n // [; warning-specifier : warning-number-list...] )\n while (true) {\n if (!SpecifierValid) {\n PP.Diag(Tok, diag::warn_pragma_warning_spec_invalid);"}}, | [j]={{I,1433,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n if (II && II->isStr(\"push\")) {\n // ...\n } else if (II && II->isStr(\"pop\")) {\n // ...\n } else {\n // #pragma warning( warning-specifier : warning-number-list\n // [; warning-specifier : warning-number-list...] )\n while (true) {\n // ...\n if (!II && !Tok.is(tok::numeric_constant)) {\n PP.Diag(Tok, diag::warn_pragma_warning_spec_invalid);"},{I,1469,"/// \"\\#pragma warning(...)\". MSVC\'s diagnostics do not map cleanly to clang\'s\n/// diagnostics, so we don\'t really implement this pragma. We parse it and\n/// ignore it to avoid -Wunknown-pragma warnings.\nstruct PragmaWarningHandler : public PragmaHandler {\n // ...\n void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) override {\n // ...\n if (II && II->isStr(\"push\")) {\n // ...\n } else if (II && II->isStr(\"pop\")) {\n // ...\n } else {\n // #pragma warning( warning-specifier : warning-number-list\n // [; warning-specifier : warning-number-list...] )\n while (true) {\n // ...\n if (!SpecifierValid) {\n PP.Diag(Tok, diag::warn_pragma_warning_spec_invalid);"}}, | ||
[p]={ | [p]={ | ||
[Ab]={"clang/test/Preprocessor/pragma_microsoft.c:146:18: warning: #pragma warning expected \'push\', \'pop\', \'default\', \'disable\', \'error\', \'once\', \'suppress\', 1, 2, 3, or 4 [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:155:132: warning: #pragma warning expected \'push\', \'pop\', \'default\', \'disable\', \'error\', \'once\', \'suppress\', 1, 2, 3, or 4 [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:156:17: warning: #pragma warning expected \'push\', \'pop\', \'default\', \'disable\', \'error\', \'once\', \'suppress\', 1, 2, 3, or 4 [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:169:17: warning: #pragma warning expected \'push\', \'pop\', \'default\', \'disable\', \'error\', \'once\', \'suppress\', 1, 2, 3, or 4 [-Wunknown-pragmas]"} | [Ab]={"clang/test/Preprocessor/pragma_microsoft.c:146:18: warning: #pragma warning expected \'push\', \'pop\', \'default\', \'disable\', \'error\', \'once\', \'suppress\', 1, 2, 3, or 4 [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:155:132: warning: #pragma warning expected \'push\', \'pop\', \'default\', \'disable\', \'error\', \'once\', \'suppress\', 1, 2, 3, or 4 [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:156:17: warning: #pragma warning expected \'push\', \'pop\', \'default\', \'disable\', \'error\', \'once\', \'suppress\', 1, 2, 3, or 4 [-Wunknown-pragmas]","clang/test/Preprocessor/pragma_microsoft.c:169:17: warning: #pragma warning expected \'push\', \'pop\', \'default\', \'disable\', \'error\', \'once\', \'suppress\', 1, 2, 3, or 4 [-Wunknown-pragmas]"} | ||
Line 4,912: | Line 4,912: | ||
[h]=B, | [h]=B, | ||
[i]={"ef9ec4bbcca2",1677810915,bd,bd}, | [i]={"ef9ec4bbcca2",1677810915,bd,bd}, | ||
[j]={{"clang/lib/Parse/ParseDeclCXX.cpp",4527,"/// Parse a C++11 or C2x attribute-specifier.\n///\n/// [C++11] attribute-specifier:\n/// \'[\' \'[\' attribute-list \']\' \']\'\n/// alignment-specifier\n///\n/// [C++11] attribute-list:\n/// attribute[opt]\n/// attribute-list \',\' attribute[opt]\n/// attribute \'...\'\n/// attribute-list \',\' attribute \'...\'\n///\n/// [C++11] attribute:\n/// attribute-token attribute-argument-clause[opt]\n///\n/// [C++11] attribute-token:\n/// identifier\n/// attribute-scoped-token\n///\n/// [C++11] attribute-scoped-token:\n/// attribute-namespace \'::\' identifier\n///\n/// [C++11] attribute-namespace:\n/// identifier\nvoid Parser::ParseCXX11AttributeSpecifierInternal(ParsedAttributes &Attrs, CachedTokens &OpenMPTokens, SourceLocation *EndLoc) {\n if (getLangOpts().CPlusPlus) {\n } else {\n Diag(OpenLoc, getLangOpts().C2x ? diag::warn_pre_c2x_compat_attributes : diag::warn_ext_c2x_attributes);"}}, | [j]={{"clang/lib/Parse/ParseDeclCXX.cpp",4527,"/// Parse a C++11 or C2x attribute-specifier.\n///\n/// [C++11] attribute-specifier:\n/// \'[\' \'[\' attribute-list \']\' \']\'\n/// alignment-specifier\n///\n/// [C++11] attribute-list:\n/// attribute[opt]\n/// attribute-list \',\' attribute[opt]\n/// attribute \'...\'\n/// attribute-list \',\' attribute \'...\'\n///\n/// [C++11] attribute:\n/// attribute-token attribute-argument-clause[opt]\n///\n/// [C++11] attribute-token:\n/// identifier\n/// attribute-scoped-token\n///\n/// [C++11] attribute-scoped-token:\n/// attribute-namespace \'::\' identifier\n///\n/// [C++11] attribute-namespace:\n/// identifier\nvoid Parser::ParseCXX11AttributeSpecifierInternal(ParsedAttributes &Attrs, CachedTokens &OpenMPTokens, SourceLocation *EndLoc) {\n // ...\n if (getLangOpts().CPlusPlus) {\n // ...\n } else {\n Diag(OpenLoc, getLangOpts().C2x ? diag::warn_pre_c2x_compat_attributes : diag::warn_ext_c2x_attributes);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/c2x-attr.c"]={"clang/test/Sema/c2x-attr.c:4:1: warning: [[]] attributes are incompatible with C standards before C2x [-Wpre-c2x-compat]"} | ["clang/test/Sema/c2x-attr.c"]={"clang/test/Sema/c2x-attr.c:4:1: warning: [[]] attributes are incompatible with C standards before C2x [-Wpre-c2x-compat]"} | ||
Line 4,929: | Line 4,929: | ||
[h]=q, | [h]=q, | ||
[i]={wc,1567434909,Eb,Eb}, | [i]={wc,1567434909,Eb,Eb}, | ||
[j]={{A,9508,"/// DiagnoseConditionalPrecedence - Emit a warning when a conditional operator\n/// and binary operator are mixed in a way that suggests the programmer assumed\n/// the conditional operator has higher precedence, for example:\n/// \"int x = a + someBinaryCondition ? 1 : 2\".\nstatic void DiagnoseConditionalPrecedence(Sema &Self, SourceLocation OpLoc, Expr *Condition, Expr *LHSExpr, Expr *RHSExpr) {\n unsigned DiagID = BinaryOperator::isBitwiseOp(CondOpcode) ? diag::warn_precedence_bitwise_conditional : diag::warn_precedence_conditional;"}}, | [j]={{A,9508,"/// DiagnoseConditionalPrecedence - Emit a warning when a conditional operator\n/// and binary operator are mixed in a way that suggests the programmer assumed\n/// the conditional operator has higher precedence, for example:\n/// \"int x = a + someBinaryCondition ? 1 : 2\".\nstatic void DiagnoseConditionalPrecedence(Sema &Self, SourceLocation OpLoc, Expr *Condition, Expr *LHSExpr, Expr *RHSExpr) {\n // ...\n unsigned DiagID = BinaryOperator::isBitwiseOp(CondOpcode) ? diag::warn_precedence_bitwise_conditional : diag::warn_precedence_conditional;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/parentheses.c"]={"clang/test/Sema/parentheses.c:97:30: warning: operator \'?:\' has lower precedence than \'|\'; \'|\' will be evaluated first [-Wbitwise-conditional-parentheses]","clang/test/Sema/parentheses.c:102:16: warning: operator \'?:\' has lower precedence than \'|\'; \'|\' will be evaluated first [-Wbitwise-conditional-parentheses]","clang/test/Sema/parentheses.c:103:16: warning: operator \'?:\' has lower precedence than \'&\'; \'&\' will be evaluated first [-Wbitwise-conditional-parentheses]"} | ["clang/test/Sema/parentheses.c"]={"clang/test/Sema/parentheses.c:97:30: warning: operator \'?:\' has lower precedence than \'|\'; \'|\' will be evaluated first [-Wbitwise-conditional-parentheses]","clang/test/Sema/parentheses.c:102:16: warning: operator \'?:\' has lower precedence than \'|\'; \'|\' will be evaluated first [-Wbitwise-conditional-parentheses]","clang/test/Sema/parentheses.c:103:16: warning: operator \'?:\' has lower precedence than \'&\'; \'&\' will be evaluated first [-Wbitwise-conditional-parentheses]"} | ||
Line 4,946: | Line 4,946: | ||
[h]=q, | [h]=q, | ||
[i]={"4302824fe260",1256570655,"Implement a warning for mixing bitwise logical with comparison ops. Fixes PR5297.","Implement a warning for mixing bitwise logical with comparison ops. Fixes PR5297."}, | [i]={"4302824fe260",1256570655,"Implement a warning for mixing bitwise logical with comparison ops. Fixes PR5297.","Implement a warning for mixing bitwise logical with comparison ops. Fixes PR5297."}, | ||
[j]={{A,15763,"/// DiagnoseBitwisePrecedence - Emit a warning when bitwise and comparison\n/// operators are mixed in a way that suggests that the programmer forgot that\n/// comparison operators have higher precedence. The most typical example of\n/// such code is \"flags & 0x0020 != 0\", which is equivalent to \"flags & 1\".\nstatic void DiagnoseBitwisePrecedence(Sema &Self, BinaryOperatorKind Opc, SourceLocation OpLoc, Expr *LHSExpr, Expr *RHSExpr) {\n Self.Diag(OpLoc, diag::warn_precedence_bitwise_rel) << DiagRange << BinaryOperator::getOpcodeStr(Opc) << OpStr;"}}, | [j]={{A,15763,"/// DiagnoseBitwisePrecedence - Emit a warning when bitwise and comparison\n/// operators are mixed in a way that suggests that the programmer forgot that\n/// comparison operators have higher precedence. The most typical example of\n/// such code is \"flags & 0x0020 != 0\", which is equivalent to \"flags & 1\".\nstatic void DiagnoseBitwisePrecedence(Sema &Self, BinaryOperatorKind Opc, SourceLocation OpLoc, Expr *LHSExpr, Expr *RHSExpr) {\n // ...\n Self.Diag(OpLoc, diag::warn_precedence_bitwise_rel) << DiagRange << BinaryOperator::getOpcodeStr(Opc) << OpStr;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGen/2008-10-13-FrontendCrash.c"]={"clang/test/CodeGen/2008-10-13-FrontendCrash.c:8:18: warning: ^ has lower precedence than !=; != will be evaluated first [-Wparentheses]"} | ["clang/test/CodeGen/2008-10-13-FrontendCrash.c"]={"clang/test/CodeGen/2008-10-13-FrontendCrash.c:8:18: warning: ^ has lower precedence than !=; != will be evaluated first [-Wparentheses]"} | ||
Line 4,963: | Line 4,963: | ||
[h]=q, | [h]=q, | ||
[i]={"cf9bac4bc9dd",1307124036,"Warn about missing parentheses for conditional operator.","Warn about missing parentheses for conditional operator."}, | [i]={"cf9bac4bc9dd",1307124036,"Warn about missing parentheses for conditional operator.","Warn about missing parentheses for conditional operator."}, | ||
[j]={{A,9516,"/// DiagnoseConditionalPrecedence - Emit a warning when a conditional operator\n/// and binary operator are mixed in a way that suggests the programmer assumed\n/// the conditional operator has higher precedence, for example:\n/// \"int x = a + someBinaryCondition ? 1 : 2\".\nstatic void DiagnoseConditionalPrecedence(Sema &Self, SourceLocation OpLoc, Expr *Condition, Expr *LHSExpr, Expr *RHSExpr) {\n unsigned DiagID = BinaryOperator::isBitwiseOp(CondOpcode) ? diag::warn_precedence_bitwise_conditional : diag::warn_precedence_conditional;"}}, | [j]={{A,9516,"/// DiagnoseConditionalPrecedence - Emit a warning when a conditional operator\n/// and binary operator are mixed in a way that suggests the programmer assumed\n/// the conditional operator has higher precedence, for example:\n/// \"int x = a + someBinaryCondition ? 1 : 2\".\nstatic void DiagnoseConditionalPrecedence(Sema &Self, SourceLocation OpLoc, Expr *Condition, Expr *LHSExpr, Expr *RHSExpr) {\n // ...\n unsigned DiagID = BinaryOperator::isBitwiseOp(CondOpcode) ? diag::warn_precedence_bitwise_conditional : diag::warn_precedence_conditional;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Misc/caret-diags-macros.c"]={"clang/test/Misc/caret-diags-macros.c:125:38: warning: operator \'?:\' has lower precedence than \'+\'; \'+\' will be evaluated first [-Wparentheses]","clang/test/Misc/caret-diags-macros.c:139:9: warning: operator \'?:\' has lower precedence than \'+\'; \'+\' will be evaluated first [-Wparentheses]","clang/test/Misc/caret-diags-macros.c:158:9: warning: operator \'?:\' has lower precedence than \'+\'; \'+\' will be evaluated first [-Wparentheses]","clang/test/Misc/caret-diags-macros.c:174:21: warning: operator \'?:\' has lower precedence than \'+\'; \'+\' will be evaluated first [-Wparentheses]"} | ["clang/test/Misc/caret-diags-macros.c"]={"clang/test/Misc/caret-diags-macros.c:125:38: warning: operator \'?:\' has lower precedence than \'+\'; \'+\' will be evaluated first [-Wparentheses]","clang/test/Misc/caret-diags-macros.c:139:9: warning: operator \'?:\' has lower precedence than \'+\'; \'+\' will be evaluated first [-Wparentheses]","clang/test/Misc/caret-diags-macros.c:158:9: warning: operator \'?:\' has lower precedence than \'+\'; \'+\' will be evaluated first [-Wparentheses]","clang/test/Misc/caret-diags-macros.c:174:21: warning: operator \'?:\' has lower precedence than \'+\'; \'+\' will be evaluated first [-Wparentheses]"} | ||
Line 4,980: | Line 4,980: | ||
[h]=hb, | [h]=hb, | ||
[i]={"2b4177190923",1435815556,Lc,Lc}, | [i]={"2b4177190923",1435815556,Lc,Lc}, | ||
[j]={{x,10660,"void CheckPrintfHandler::HandleObjCFlagsWithNonObjCConversion(const char *flagsStart, const char *flagsEnd, const char *conversionPosition) {\n auto diag = diag::warn_printf_ObjCflags_without_ObjCConversion;"}}, | [j]={{x,10660,"void CheckPrintfHandler::HandleObjCFlagsWithNonObjCConversion(const char *flagsStart, const char *flagsEnd, const char *conversionPosition) {\n // ...\n auto diag = diag::warn_printf_ObjCflags_without_ObjCConversion;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/format-strings-objc.m"]={"clang/test/SemaObjC/format-strings-objc.m:289:27: warning: object format flags cannot be used with \'s\' conversion specifier [-Wformat]"} | ["clang/test/SemaObjC/format-strings-objc.m"]={"clang/test/SemaObjC/format-strings-objc.m:289:27: warning: object format flags cannot be used with \'s\' conversion specifier [-Wformat]"} | ||
Line 4,997: | Line 4,997: | ||
[h]=hb, | [h]=hb, | ||
[i]={"d166819c26a8",1267234863,"For printf format string checking, add support for positional format strings.","For printf format string checking, add support for positional format strings."}, | [i]={"d166819c26a8",1267234863,"For printf format string checking, add support for positional format strings.","For printf format string checking, add support for positional format strings."}, | ||
[j]={{x,10541,"bool CheckPrintfHandler::HandleAmount(const analyze_format_string::OptionalAmount &Amt, unsigned k, const char *startSpecifier, unsigned specifierLen) {\n if (Amt.hasDataArgument()) {\n if (ArgPassingKind != Sema::FAPK_VAList) {\n if (argIndex >= NumDataArgs) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_asterisk_missing_arg) << k, getLocationOfByte(Amt.getStart()),"}}, | [j]={{x,10541,"bool CheckPrintfHandler::HandleAmount(const analyze_format_string::OptionalAmount &Amt, unsigned k, const char *startSpecifier, unsigned specifierLen) {\n if (Amt.hasDataArgument()) {\n if (ArgPassingKind != Sema::FAPK_VAList) {\n // ...\n if (argIndex >= NumDataArgs) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_asterisk_missing_arg) << k, getLocationOfByte(Amt.getStart()),"}}, | ||
[p]={ | [p]={ | ||
[sc]={"clang/test/Sema/format-strings.c:238:13: warning: \'*\' specified field width is missing a matching \'int\' argument [-Wformat]","clang/test/Sema/format-strings.c:239:13: warning: \'.*\' specified field precision is missing a matching \'int\' argument [-Wformat]","clang/test/Sema/format-strings.c:290:13: warning: \'*\' specified field width is missing a matching \'int\' argument [-Wformat]","clang/test/Sema/format-strings.c:291:14: warning: \'.*\' specified field precision is missing a matching \'int\' argument [-Wformat]","clang/test/Sema/format-strings.c:402:14: warning: \'*\' specified field width is missing a matching \'int\' argument [-Wformat]","clang/test/Sema/format-strings.c:605:10: warning: \'*\' specified field width is missing a matching \'int\' argument [-Wformat]","clang/test/Sema/format-strings.c:606:13: warning: \'*\' specified field width is missing a matching \'int\' argument [-Wformat]"} | [sc]={"clang/test/Sema/format-strings.c:238:13: warning: \'*\' specified field width is missing a matching \'int\' argument [-Wformat]","clang/test/Sema/format-strings.c:239:13: warning: \'.*\' specified field precision is missing a matching \'int\' argument [-Wformat]","clang/test/Sema/format-strings.c:290:13: warning: \'*\' specified field width is missing a matching \'int\' argument [-Wformat]","clang/test/Sema/format-strings.c:291:14: warning: \'.*\' specified field precision is missing a matching \'int\' argument [-Wformat]","clang/test/Sema/format-strings.c:402:14: warning: \'*\' specified field width is missing a matching \'int\' argument [-Wformat]","clang/test/Sema/format-strings.c:605:10: warning: \'*\' specified field width is missing a matching \'int\' argument [-Wformat]","clang/test/Sema/format-strings.c:606:13: warning: \'*\' specified field width is missing a matching \'int\' argument [-Wformat]"} | ||
Line 5,014: | Line 5,014: | ||
[h]=hb, | [h]=hb, | ||
[i]={"d166819c26a8",1267234863,"For printf format string checking, add support for positional format strings.","For printf format string checking, add support for positional format strings."}, | [i]={"d166819c26a8",1267234863,"For printf format string checking, add support for positional format strings.","For printf format string checking, add support for positional format strings."}, | ||
[j]={{x,10566,"bool CheckPrintfHandler::HandleAmount(const analyze_format_string::OptionalAmount &Amt, unsigned k, const char *startSpecifier, unsigned specifierLen) {\n if (Amt.hasDataArgument()) {\n if (ArgPassingKind != Sema::FAPK_VAList) {\n if (!AT.matchesType(S.Context, T)) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_asterisk_wrong_type) << k << AT.getRepresentativeTypeName(S.Context) << T << Arg->getSourceRange(), getLocationOfByte(Amt.getStart()),"}}, | [j]={{x,10566,"bool CheckPrintfHandler::HandleAmount(const analyze_format_string::OptionalAmount &Amt, unsigned k, const char *startSpecifier, unsigned specifierLen) {\n if (Amt.hasDataArgument()) {\n if (ArgPassingKind != Sema::FAPK_VAList) {\n // ...\n if (!AT.matchesType(S.Context, T)) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_asterisk_wrong_type) << k << AT.getRepresentativeTypeName(S.Context) << T << Arg->getSourceRange(), getLocationOfByte(Amt.getStart()),"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/format-strings-oslog.m"]={"clang/test/SemaObjC/format-strings-oslog.m:19:35: warning: field precision should have type \'int\', but argument has type \'void *\' [-Wformat]","clang/test/SemaObjC/format-strings-oslog.m:55:36: warning: field precision should have type \'int\', but argument has type \'void *\' [-Wformat]"} | ["clang/test/SemaObjC/format-strings-oslog.m"]={"clang/test/SemaObjC/format-strings-oslog.m:19:35: warning: field precision should have type \'int\', but argument has type \'void *\' [-Wformat]","clang/test/SemaObjC/format-strings-oslog.m:55:36: warning: field precision should have type \'int\', but argument has type \'void *\' [-Wformat]"} | ||
Line 5,031: | Line 5,031: | ||
[h]=hb, | [h]=hb, | ||
[i]={"4a49d9818b4e",1267211921,"For printf format string checking, move the tracking of the data argument index out of","For printf format string checking, move the tracking of the data argument index out of"}, | [i]={"4a49d9818b4e",1267211921,"For printf format string checking, move the tracking of the data argument index out of","For printf format string checking, move the tracking of the data argument index out of"}, | ||
[j]={{x,10284,"void UncoveredArgHandler::Diagnose(Sema &S, bool IsFunctionCall, const Expr *ArgExpr) {\n PartialDiagnostic PDiag = S.PDiag(diag::warn_printf_data_arg_not_used);"}}, | [j]={{x,10284,"void UncoveredArgHandler::Diagnose(Sema &S, bool IsFunctionCall, const Expr *ArgExpr) {\n // ...\n PartialDiagnostic PDiag = S.PDiag(diag::warn_printf_data_arg_not_used);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaOpenCL/printf-format-string-warnings.cl"]={"clang/test/SemaOpenCL/printf-format-string-warnings.cl:11:32: warning: data argument not used by format string [-Wformat-extra-args]"} | ["clang/test/SemaOpenCL/printf-format-string-warnings.cl"]={"clang/test/SemaOpenCL/printf-format-string-warnings.cl:11:32: warning: data argument not used by format string [-Wformat-extra-args]"} | ||
Line 5,048: | Line 5,048: | ||
[h]=hb, | [h]=hb, | ||
[i]={"2b4177190923",1435815556,Lc,Lc}, | [i]={"2b4177190923",1435815556,Lc,Lc}, | ||
[j]={{x,10639,"void CheckPrintfHandler::HandleEmptyObjCModifierFlag(const char *startFlag, unsigned flagLen) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_empty_objc_flag), getLocationOfByte(startFlag),"}}, | [j]={{x,10639,"void CheckPrintfHandler::HandleEmptyObjCModifierFlag(const char *startFlag, unsigned flagLen) {\n // ...\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_empty_objc_flag), getLocationOfByte(startFlag),"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/format-strings-objc.m"]={"clang/test/SemaObjC/format-strings-objc.m:281:13: warning: missing object format flag [-Wformat]"} | ["clang/test/SemaObjC/format-strings-objc.m"]={"clang/test/SemaObjC/format-strings-objc.m:281:13: warning: missing object format flag [-Wformat]"} | ||
Line 5,065: | Line 5,065: | ||
[h]=hb, | [h]=hb, | ||
[i]={Fc,1237025389,Fb,Fb}, | [i]={Fc,1237025389,Fb,Fb}, | ||
[j]={{x,10243,"void CheckFormatHandler::HandleNullChar(const char *nullCharacter) {\n if (!isa<ObjCStringLiteral>(OrigFormatExpr)) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_format_string_contains_null_char), getLocationOfByte(nullCharacter), /*IsStringLocation*/ true, getFormatStringRange());"}}, | [j]={{x,10243,"void CheckFormatHandler::HandleNullChar(const char *nullCharacter) {\n if (!isa<ObjCStringLiteral>(OrigFormatExpr)) {\n // ...\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_format_string_contains_null_char), getLocationOfByte(nullCharacter), /*IsStringLocation*/ true, getFormatStringRange());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-fortify-source.c"]={"clang/test/Sema/warn-fortify-source.c:102:43: warning: format string contains \'\\0\' within the string body [-Wformat]","clang/test/Sema/warn-fortify-source.c:103:43: warning: format string contains \'\\0\' within the string body [-Wformat]","clang/test/Sema/warn-fortify-source.c:153:21: warning: format string contains \'\\0\' within the string body [-Wformat]","clang/test/Sema/warn-fortify-source.c:154:24: warning: format string contains \'\\0\' within the string body [-Wformat]"} | ["clang/test/Sema/warn-fortify-source.c"]={"clang/test/Sema/warn-fortify-source.c:102:43: warning: format string contains \'\\0\' within the string body [-Wformat]","clang/test/Sema/warn-fortify-source.c:103:43: warning: format string contains \'\\0\' within the string body [-Wformat]","clang/test/Sema/warn-fortify-source.c:153:21: warning: format string contains \'\\0\' within the string body [-Wformat]","clang/test/Sema/warn-fortify-source.c:154:24: warning: format string contains \'\\0\' within the string body [-Wformat]"} | ||
Line 5,082: | Line 5,082: | ||
[h]=hb, | [h]=hb, | ||
[i]={"6c6a4f4081a8",1392915938,"Sema: Emit a warning for non-null terminated format strings and other pathological cases.","Sema: Emit a warning for non-null terminated format strings and other pathological cases."}, | [i]={"6c6a4f4081a8",1392915938,"Sema: Emit a warning for non-null terminated format strings and other pathological cases.","Sema: Emit a warning for non-null terminated format strings and other pathological cases."}, | ||
[j]={{x,11647,"static void CheckFormatString(Sema &S, const FormatStringLiteral *FExpr, const Expr *OrigFormatExpr, ArrayRef<const Expr *> Args, Sema::FormatArgumentPassingKind APK, unsigned format_idx, unsigned firstDataArg, Sema::FormatStringType Type, bool inFunctionCall, Sema::VariadicCallType CallType, llvm::SmallBitVector &CheckedVarArgs, UncoveredArgHandler &UncoveredArg, bool IgnoreStringsWithoutSpecifiers) {\n // Emit a warning if the string literal is truncated and does not contain an\n // embedded null character.\n if (TypeSize <= StrRef.size() && !StrRef.substr(0, TypeSize).contains(\'\\0\')) {\n CheckFormatHandler::EmitFormatDiagnostic(S, inFunctionCall, Args[format_idx], S.PDiag(diag::warn_printf_format_string_not_null_terminated), FExpr->getBeginLoc(),"}}, | [j]={{x,11647,"static void CheckFormatString(Sema &S, const FormatStringLiteral *FExpr, const Expr *OrigFormatExpr, ArrayRef<const Expr *> Args, Sema::FormatArgumentPassingKind APK, unsigned format_idx, unsigned firstDataArg, Sema::FormatStringType Type, bool inFunctionCall, Sema::VariadicCallType CallType, llvm::SmallBitVector &CheckedVarArgs, UncoveredArgHandler &UncoveredArg, bool IgnoreStringsWithoutSpecifiers) {\n // ...\n // Emit a warning if the string literal is truncated and does not contain an\n // embedded null character.\n if (TypeSize <= StrRef.size() && !StrRef.substr(0, TypeSize).contains(\'\\0\')) {\n CheckFormatHandler::EmitFormatDiagnostic(S, inFunctionCall, Args[format_idx], S.PDiag(diag::warn_printf_format_string_not_null_terminated), FExpr->getBeginLoc(),"}}, | ||
[p]={ | [p]={ | ||
[sc]={"clang/test/Sema/format-strings.c:657:10: warning: format string is not null-terminated [-Wformat]","clang/test/Sema/format-strings.c:660:10: warning: format string is not null-terminated [-Wformat]"} | [sc]={"clang/test/Sema/format-strings.c:657:10: warning: format string is not null-terminated [-Wformat]","clang/test/Sema/format-strings.c:660:10: warning: format string is not null-terminated [-Wformat]"} | ||
Line 5,099: | Line 5,099: | ||
[h]=hb, | [h]=hb, | ||
[i]={"b49ec6907b32",1276801227,"Bug 7377: Fixed several bad printf format string bugs.","Bug 7377: Fixed several bad printf format string bugs."}, | [i]={"b49ec6907b32",1276801227,"Bug 7377: Fixed several bad printf format string bugs.","Bug 7377: Fixed several bad printf format string bugs."}, | ||
[j]={{x,10627,"void CheckPrintfHandler::HandleIgnoredFlag(const analyze_printf::PrintfSpecifier &FS, const analyze_printf::OptionalFlag &ignoredFlag, const analyze_printf::OptionalFlag &flag, const char *startSpecifier, unsigned specifierLen) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_ignored_flag) << ignoredFlag.toString() << flag.toString(), getLocationOfByte(ignoredFlag.getPosition()),"}}, | [j]={{x,10627,"void CheckPrintfHandler::HandleIgnoredFlag(const analyze_printf::PrintfSpecifier &FS, const analyze_printf::OptionalFlag &ignoredFlag, const analyze_printf::OptionalFlag &flag, const char *startSpecifier, unsigned specifierLen) {\n // ...\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_ignored_flag) << ignoredFlag.toString() << flag.toString(), getLocationOfByte(ignoredFlag.getPosition()),"}}, | ||
[p]={ | [p]={ | ||
[sc]={"clang/test/Sema/format-strings.c:459:12: warning: flag \' \' is ignored when flag \'+\' is present [-Wformat]","clang/test/Sema/format-strings.c:460:13: warning: flag \' \' is ignored when flag \'+\' is present [-Wformat]","clang/test/Sema/format-strings.c:461:12: warning: flag \'0\' is ignored when flag \'-\' is present [-Wformat]","clang/test/Sema/format-strings.c:462:13: warning: flag \'0\' is ignored when flag \'-\' is present [-Wformat]","clang/test/Sema/format-strings.c:626:10: warning: flag \'0\' is ignored when flag \'-\' is present [-Wformat]","clang/test/Sema/format-strings.c:627:13: warning: flag \'0\' is ignored when flag \'-\' is present [-Wformat]"} | [sc]={"clang/test/Sema/format-strings.c:459:12: warning: flag \' \' is ignored when flag \'+\' is present [-Wformat]","clang/test/Sema/format-strings.c:460:13: warning: flag \' \' is ignored when flag \'+\' is present [-Wformat]","clang/test/Sema/format-strings.c:461:12: warning: flag \'0\' is ignored when flag \'-\' is present [-Wformat]","clang/test/Sema/format-strings.c:462:13: warning: flag \'0\' is ignored when flag \'-\' is present [-Wformat]","clang/test/Sema/format-strings.c:626:10: warning: flag \'0\' is ignored when flag \'-\' is present [-Wformat]","clang/test/Sema/format-strings.c:627:13: warning: flag \'0\' is ignored when flag \'-\' is present [-Wformat]"} | ||
Line 5,150: | Line 5,150: | ||
[h]=hb, | [h]=hb, | ||
[i]={"2b4177190923",1435815556,Lc,Lc}, | [i]={"2b4177190923",1435815556,Lc,Lc}, | ||
[j]={{x,10650,"void CheckPrintfHandler::HandleInvalidObjCModifierFlag(const char *startFlag, unsigned flagLen) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_invalid_objc_flag) << flag, getLocationOfByte(startFlag),"}}, | [j]={{x,10650,"void CheckPrintfHandler::HandleInvalidObjCModifierFlag(const char *startFlag, unsigned flagLen) {\n // ...\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_invalid_objc_flag) << flag, getLocationOfByte(startFlag),"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/format-strings-objc.m"]={"clang/test/SemaObjC/format-strings-objc.m:287:13: warning: \'blark\' is not a valid object format flag [-Wformat]"} | ["clang/test/SemaObjC/format-strings-objc.m"]={"clang/test/SemaObjC/format-strings-objc.m:287:13: warning: \'blark\' is not a valid object format flag [-Wformat]"} | ||
Line 5,167: | Line 5,167: | ||
[h]=hb, | [h]=hb, | ||
[i]={"f9c3310d32c6",1616787805,dc,dc}, | [i]={"f9c3310d32c6",1616787805,dc,dc}, | ||
[j]={{x,10876,"bool CheckPrintfHandler::HandlePrintfSpecifier(const analyze_printf::PrintfSpecifier &FS, const char *startSpecifier, unsigned specifierLen, const TargetInfo &Target) {\n if (CS.getKind() == ConversionSpecifier::nArg && (Triple.isAndroid() || Triple.isOSFuchsia())) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_narg_not_supported), getLocationOfByte(CS.getStart()),"}}, | [j]={{x,10876,"bool CheckPrintfHandler::HandlePrintfSpecifier(const analyze_printf::PrintfSpecifier &FS, const char *startSpecifier, unsigned specifierLen, const TargetInfo &Target) {\n // ...\n if (CS.getKind() == ConversionSpecifier::nArg && (Triple.isAndroid() || Triple.isOSFuchsia())) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_narg_not_supported), getLocationOfByte(CS.getStart()),"}}, | ||
[p]={ | [p]={ | ||
[sc]={"clang/test/Sema/format-strings.c:166:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:168:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:169:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:170:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:171:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:174:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:175:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:176:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:179:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:180:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:181:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:184:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:185:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:186:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:189:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:190:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:191:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:194:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:195:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:440:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:442:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:452:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:454:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:733:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:735:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:738:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:745:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:746:12: warning: \'%n\' specifier not supported on this platform [-Wformat]"} | [sc]={"clang/test/Sema/format-strings.c:166:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:168:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:169:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:170:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:171:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:174:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:175:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:176:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:179:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:180:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:181:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:184:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:185:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:186:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:189:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:190:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:191:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:194:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:195:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:440:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:442:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:452:13: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:454:14: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:733:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:735:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:738:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:745:12: warning: \'%n\' specifier not supported on this platform [-Wformat]","clang/test/Sema/format-strings.c:746:12: warning: \'%n\' specifier not supported on this platform [-Wformat]"} | ||
Line 5,184: | Line 5,184: | ||
[h]=hb, | [h]=hb, | ||
[i]={"d31b2637abd2",1265880461,"Patch by Cristian Draghici:","Patch by Cristian Draghici:"}, | [i]={"d31b2637abd2",1265880461,"Patch by Cristian Draghici:","Patch by Cristian Draghici:"}, | ||
[j]={{x,10611,"void CheckPrintfHandler::HandleFlag(const analyze_printf::PrintfSpecifier &FS, const analyze_printf::OptionalFlag &flag, const char *startSpecifier, unsigned specifierLen) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_nonsensical_flag) << flag.toString() << CS.toString(), getLocationOfByte(flag.getPosition()),"}}, | [j]={{x,10611,"void CheckPrintfHandler::HandleFlag(const analyze_printf::PrintfSpecifier &FS, const analyze_printf::OptionalFlag &flag, const char *startSpecifier, unsigned specifierLen) {\n // ...\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_nonsensical_flag) << flag.toString() << CS.toString(), getLocationOfByte(flag.getPosition()),"}}, | ||
[p]={ | [p]={ | ||
[sc]={"clang/test/Sema/format-strings.c:333:12: warning: flag \'+\' results in undefined behavior with \'p\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:334:12: warning: flag \' \' results in undefined behavior with \'p\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:335:12: warning: flag \'0\' results in undefined behavior with \'p\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:337:12: warning: flag \'+\' results in undefined behavior with \'s\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:339:12: warning: flag \' \' results in undefined behavior with \'s\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:341:12: warning: flag \'0\' results in undefined behavior with \'s\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:432:12: warning: flag \'#\' results in undefined behavior with \'p\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:440:12: warning: flag \'#\' results in undefined behavior with \'n\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:442:12: warning: flag \'-\' results in undefined behavior with \'n\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:514:12: warning: flag \'\'\' results in undefined behavior with \'p\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:515:12: warning: flag \'\'\' results in undefined behavior with \'b\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:516:12: warning: flag \'\'\' results in undefined behavior with \'B\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:618:10: warning: flag \'0\' results in undefined behavior with \'s\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:619:12: warning: flag \'0\' results in undefined behavior with \'s\' conversion specifier [-Wformat]"} | [sc]={"clang/test/Sema/format-strings.c:333:12: warning: flag \'+\' results in undefined behavior with \'p\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:334:12: warning: flag \' \' results in undefined behavior with \'p\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:335:12: warning: flag \'0\' results in undefined behavior with \'p\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:337:12: warning: flag \'+\' results in undefined behavior with \'s\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:339:12: warning: flag \' \' results in undefined behavior with \'s\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:341:12: warning: flag \'0\' results in undefined behavior with \'s\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:432:12: warning: flag \'#\' results in undefined behavior with \'p\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:440:12: warning: flag \'#\' results in undefined behavior with \'n\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:442:12: warning: flag \'-\' results in undefined behavior with \'n\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:514:12: warning: flag \'\'\' results in undefined behavior with \'p\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:515:12: warning: flag \'\'\' results in undefined behavior with \'b\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:516:12: warning: flag \'\'\' results in undefined behavior with \'B\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:618:10: warning: flag \'0\' results in undefined behavior with \'s\' conversion specifier [-Wformat]","clang/test/Sema/format-strings.c:619:12: warning: flag \'0\' results in undefined behavior with \'s\' conversion specifier [-Wformat]"} | ||
Line 5,201: | Line 5,201: | ||
[h]=hb, | [h]=hb, | ||
[i]={"b49ec6907b32",1276801227,"Bug 7377: Fixed several bad printf format string bugs.","Bug 7377: Fixed several bad printf format string bugs."}, | [i]={"b49ec6907b32",1276801227,"Bug 7377: Fixed several bad printf format string bugs.","Bug 7377: Fixed several bad printf format string bugs."}, | ||
[j]={{x,10596,"void CheckPrintfHandler::HandleInvalidAmount(const analyze_printf::PrintfSpecifier &FS, const analyze_printf::OptionalAmount &Amt, unsigned type, const char *startSpecifier, unsigned specifierLen) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_nonsensical_optional_amount) << type << CS.toString(), getLocationOfByte(Amt.getStart()),"}}, | [j]={{x,10596,"void CheckPrintfHandler::HandleInvalidAmount(const analyze_printf::PrintfSpecifier &FS, const analyze_printf::OptionalAmount &Amt, unsigned type, const char *startSpecifier, unsigned specifierLen) {\n // ...\n EmitFormatDiagnostic(S.PDiag(diag::warn_printf_nonsensical_optional_amount) << type << CS.toString(), getLocationOfByte(Amt.getStart()),"}}, | ||
[p]={ | [p]={ | ||
[sc]={"clang/test/Sema/format-strings.c:332:12: warning: precision used with \'p\' conversion specifier, resulting in undefined behavior [-Wformat]","clang/test/Sema/format-strings.c:447:12: warning: precision used with \'c\' conversion specifier, resulting in undefined behavior [-Wformat]","clang/test/Sema/format-strings.c:452:12: warning: field width used with \'n\' conversion specifier, resulting in undefined behavior [-Wformat]","clang/test/Sema/format-strings.c:454:12: warning: precision used with \'n\' conversion specifier, resulting in undefined behavior [-Wformat]","clang/test/Sema/format-strings.c:614:10: warning: precision used with \'p\' conversion specifier, resulting in undefined behavior [-Wformat]","clang/test/Sema/format-strings.c:615:12: warning: precision used with \'p\' conversion specifier, resulting in undefined behavior [-Wformat]"} | [sc]={"clang/test/Sema/format-strings.c:332:12: warning: precision used with \'p\' conversion specifier, resulting in undefined behavior [-Wformat]","clang/test/Sema/format-strings.c:447:12: warning: precision used with \'c\' conversion specifier, resulting in undefined behavior [-Wformat]","clang/test/Sema/format-strings.c:452:12: warning: field width used with \'n\' conversion specifier, resulting in undefined behavior [-Wformat]","clang/test/Sema/format-strings.c:454:12: warning: precision used with \'n\' conversion specifier, resulting in undefined behavior [-Wformat]","clang/test/Sema/format-strings.c:614:10: warning: precision used with \'p\' conversion specifier, resulting in undefined behavior [-Wformat]","clang/test/Sema/format-strings.c:615:12: warning: precision used with \'p\' conversion specifier, resulting in undefined behavior [-Wformat]"} | ||
Line 5,235: | Line 5,235: | ||
[h]=q, | [h]=q, | ||
[i]={"05f4e7181a1e",1345056146,"Patch to warn about __private_extern__ on tentative definitions","Patch to warn about __private_extern__ on tentative definitions"}, | [i]={"05f4e7181a1e",1345056146,"Patch to warn about __private_extern__ on tentative definitions","Patch to warn about __private_extern__ on tentative definitions"}, | ||
[j]={{H,13781,"void Sema::ActOnUninitializedDecl(Decl *RealDecl) {\n if (VarDecl *Var = dyn_cast<VarDecl>(RealDecl)) {\n case VarDecl::DeclarationOnly:\n if (!Type->isDependentType() && !Var->isInvalidDecl() && Var->getStorageClass() == SC_PrivateExtern) {\n Diag(Var->getLocation(), diag::warn_private_extern);"}}, | [j]={{H,13781,"void Sema::ActOnUninitializedDecl(Decl *RealDecl) {\n // ...\n if (VarDecl *Var = dyn_cast<VarDecl>(RealDecl)) {\n // ...\n case VarDecl::DeclarationOnly:\n // ...\n if (!Type->isDependentType() && !Var->isInvalidDecl() && Var->getStorageClass() == SC_PrivateExtern) {\n Diag(Var->getLocation(), diag::warn_private_extern);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/tentative-decls.c"]={"clang/test/Sema/tentative-decls.c:36:24: warning: use of __private_extern__ on a declaration may not produce external symbol private to the linkage unit and is deprecated [-Wprivate-extern]"} | ["clang/test/Sema/tentative-decls.c"]={"clang/test/Sema/tentative-decls.c:36:24: warning: use of __private_extern__ on a declaration may not produce external symbol private to the linkage unit and is deprecated [-Wprivate-extern]"} | ||
Line 5,252: | Line 5,252: | ||
[h]="Instrumentation Issue", | [h]="Instrumentation Issue", | ||
[i]={"a10802fd73f9",1568085099,"clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM","clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM"}, | [i]={"a10802fd73f9",1568085099,"clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM","clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM"}, | ||
[j]={{"clang/lib/CodeGen/CodeGenAction.cpp",870,"void BackendConsumer::MisExpectDiagHandler(const llvm::DiagnosticInfoMisExpect &D) {\n Diags.Report(Loc, diag::warn_profile_data_misexpect) << D.getMsg().str();"},{"clang/lib/Frontend/CompilerInvocation.cpp",4427,"bool CompilerInvocation::CreateFromArgsImpl(CompilerInvocation &Res, ArrayRef<const char *> CommandLineArgs, DiagnosticsEngine &Diags, const char *Argv0) {\n for (auto Warning : Res.getDiagnosticOpts().Warnings) {\n if (Warning == \"misexpect\" && !Diags.isIgnored(diag::warn_profile_data_misexpect, SourceLocation())) {"}} | [j]={{"clang/lib/CodeGen/CodeGenAction.cpp",870,"void BackendConsumer::MisExpectDiagHandler(const llvm::DiagnosticInfoMisExpect &D) {\n // ...\n Diags.Report(Loc, diag::warn_profile_data_misexpect) << D.getMsg().str();"},{"clang/lib/Frontend/CompilerInvocation.cpp",4427,"bool CompilerInvocation::CreateFromArgsImpl(CompilerInvocation &Res, ArrayRef<const char *> CommandLineArgs, DiagnosticsEngine &Diags, const char *Argv0) {\n // ...\n for (auto Warning : Res.getDiagnosticOpts().Warnings) {\n if (Warning == \"misexpect\" && !Diags.isIgnored(diag::warn_profile_data_misexpect, SourceLocation())) {"}} | ||
}, | }, | ||
["warn_profile_data_missing"]={ | ["warn_profile_data_missing"]={ | ||
Line 5,267: | Line 5,267: | ||
[h]="Instrumentation Issue", | [h]="Instrumentation Issue", | ||
[i]={"96d6ca7e8c4f",1493314258,"[Profile] Add off-by-default -Wprofile-instr-missing warning","[Profile] Add off-by-default -Wprofile-instr-missing warning"}, | [i]={"96d6ca7e8c4f",1493314258,"[Profile] Add off-by-default -Wprofile-instr-missing warning","[Profile] Add off-by-default -Wprofile-instr-missing warning"}, | ||
[j]={{"clang/lib/CodeGen/CodeGenModule.cpp",710,"void InstrProfStats::reportDiagnostics(DiagnosticsEngine &Diags, StringRef MainFile) {\n if (VisitedInMainFile > 0 && VisitedInMainFile == MissingInMainFile) {\n } else {\n if (Missing > 0)\n Diags.Report(diag::warn_profile_data_missing) << Visited << Missing;"}}, | [j]={{"clang/lib/CodeGen/CodeGenModule.cpp",710,"void InstrProfStats::reportDiagnostics(DiagnosticsEngine &Diags, StringRef MainFile) {\n // ...\n if (VisitedInMainFile > 0 && VisitedInMainFile == MissingInMainFile) {\n // ...\n } else {\n // ...\n if (Missing > 0)\n Diags.Report(diag::warn_profile_data_missing) << Visited << Missing;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Profile/c-outdated-data.c"]={"warning: profile data may be incomplete: of 3 functions, 1 has no data [-Wprofile-instr-missing]"} | ["clang/test/Profile/c-outdated-data.c"]={"warning: profile data may be incomplete: of 3 functions, 1 has no data [-Wprofile-instr-missing]"} | ||
Line 5,284: | Line 5,284: | ||
[h]="Instrumentation Issue", | [h]="Instrumentation Issue", | ||
[i]={"e2ef2a09ef26",1397596955,"CodeGen: Emit warnings for out of date profile data during PGO","CodeGen: Emit warnings for out of date profile data during PGO"}, | [i]={"e2ef2a09ef26",1397596955,"CodeGen: Emit warnings for out of date profile data during PGO","CodeGen: Emit warnings for out of date profile data during PGO"}, | ||
[j]={{"clang/lib/CodeGen/CodeGenModule.cpp",707,"void InstrProfStats::reportDiagnostics(DiagnosticsEngine &Diags, StringRef MainFile) {\n if (VisitedInMainFile > 0 && VisitedInMainFile == MissingInMainFile) {\n } else {\n if (Mismatched > 0)\n Diags.Report(diag::warn_profile_data_out_of_date) << Visited << Mismatched;"}}, | [j]={{"clang/lib/CodeGen/CodeGenModule.cpp",707,"void InstrProfStats::reportDiagnostics(DiagnosticsEngine &Diags, StringRef MainFile) {\n // ...\n if (VisitedInMainFile > 0 && VisitedInMainFile == MissingInMainFile) {\n // ...\n } else {\n if (Mismatched > 0)\n Diags.Report(diag::warn_profile_data_out_of_date) << Visited << Mismatched;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Profile/profile-summary.c"]={"warning: profile data may be out of date: of 3 functions, 3 have mismatched data that will be ignored [-Wprofile-instr-out-of-date]"} | ["clang/test/Profile/profile-summary.c"]={"warning: profile data may be out of date: of 3 functions, 3 have mismatched data that will be ignored [-Wprofile-instr-out-of-date]"} | ||
Line 5,301: | Line 5,301: | ||
[h]="Instrumentation Issue", | [h]="Instrumentation Issue", | ||
[i]={"40b8ba1496e5",1403747107,"CodeGen: Improve warnings about uninstrumented files when profiling","CodeGen: Improve warnings about uninstrumented files when profiling"}, | [i]={"40b8ba1496e5",1403747107,"CodeGen: Improve warnings about uninstrumented files when profiling","CodeGen: Improve warnings about uninstrumented files when profiling"}, | ||
[j]={{"clang/lib/CodeGen/CodeGenModule.cpp",704,"void InstrProfStats::reportDiagnostics(DiagnosticsEngine &Diags, StringRef MainFile) {\n if (VisitedInMainFile > 0 && VisitedInMainFile == MissingInMainFile) {\n Diags.Report(diag::warn_profile_data_unprofiled) << MainFile;"}}, | [j]={{"clang/lib/CodeGen/CodeGenModule.cpp",704,"void InstrProfStats::reportDiagnostics(DiagnosticsEngine &Diags, StringRef MainFile) {\n // ...\n if (VisitedInMainFile > 0 && VisitedInMainFile == MissingInMainFile) {\n // ...\n Diags.Report(diag::warn_profile_data_unprofiled) << MainFile;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Profile/c-unprofiled.c"]={"warning: no profile data available for file \"c-unprofiled.c\" [-Wprofile-instr-unprofiled]"} | ["clang/test/Profile/c-unprofiled.c"]={"warning: no profile data available for file \"c-unprofiled.c\" [-Wprofile-instr-unprofiled]"} | ||
Line 5,318: | Line 5,318: | ||
[h]=q, | [h]=q, | ||
[i]={"0b1d28866c36",1407537204,"Objective-C [qoi]. Issue warning and fixit if property-dot syntax","Objective-C [qoi]. Issue warning and fixit if property-dot syntax"}, | [i]={"0b1d28866c36",1407537204,"Objective-C [qoi]. Issue warning and fixit if property-dot syntax","Objective-C [qoi]. Issue warning and fixit if property-dot syntax"}, | ||
[j]={{cb,2084,"/// 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 // Special warning if member name used in a property-dot for a setter accessor\n // does not use a property with same name; e.g. obj.X = ... for a property with\n // name \'x\'.\n if (Setter && Setter->isImplicit() && Setter->isPropertyAccessor() && !IFace->FindPropertyDeclaration(Member, ObjCPropertyQueryKind::OBJC_PR_query_instance)) {\n if (const ObjCPropertyDecl *PDecl = Setter->findPropertyDecl()) {\n // Do not warn if user is using property-dot syntax to make call to\n // user named setter.\n if (!(PDecl->getPropertyAttributes() & ObjCPropertyAttribute::kind_setter))\n Diag(MemberLoc, diag::warn_property_access_suggest) << MemberName << QualType(OPT, 0) << PDecl->getName() << FixItHint::CreateReplacement(MemberLoc, PDecl->getName());"}}, | [j]={{cb,2084,"/// 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 // ...\n // Special warning if member name used in a property-dot for a setter accessor\n // does not use a property with same name; e.g. obj.X = ... for a property with\n // name \'x\'.\n if (Setter && Setter->isImplicit() && Setter->isPropertyAccessor() && !IFace->FindPropertyDeclaration(Member, ObjCPropertyQueryKind::OBJC_PR_query_instance)) {\n if (const ObjCPropertyDecl *PDecl = Setter->findPropertyDecl()) {\n // Do not warn if user is using property-dot syntax to make call to\n // user named setter.\n if (!(PDecl->getPropertyAttributes() & ObjCPropertyAttribute::kind_setter))\n Diag(MemberLoc, diag::warn_property_access_suggest) << MemberName << QualType(OPT, 0) << PDecl->getName() << FixItHint::CreateReplacement(MemberLoc, PDecl->getName());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property-user-setter.m"]={"clang/test/SemaObjC/property-user-setter.m:127:8: warning: property \'P\' not found on object of type \'rdar11363363 *\'; did you mean to access property p? [-Wproperty-access-dot-syntax]","clang/test/SemaObjC/property-user-setter.m:128:8: warning: property \'q\' not found on object of type \'rdar11363363 *\'; did you mean to access property Q? [-Wproperty-access-dot-syntax]","clang/test/SemaObjC/property-user-setter.m:135:15: warning: property \'R\' not found on object of type \'rdar11363363 *\'; did you mean to access property r? [-Wproperty-access-dot-syntax]"} | ["clang/test/SemaObjC/property-user-setter.m"]={"clang/test/SemaObjC/property-user-setter.m:127:8: warning: property \'P\' not found on object of type \'rdar11363363 *\'; did you mean to access property p? [-Wproperty-access-dot-syntax]","clang/test/SemaObjC/property-user-setter.m:128:8: warning: property \'q\' not found on object of type \'rdar11363363 *\'; did you mean to access property Q? [-Wproperty-access-dot-syntax]","clang/test/SemaObjC/property-user-setter.m:135:15: warning: property \'R\' not found on object of type \'rdar11363363 *\'; did you mean to access property r? [-Wproperty-access-dot-syntax]"} | ||
Line 5,335: | Line 5,335: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{V,492,"ObjCPropertyDecl *Sema::HandlePropertyInClassExtension(Scope *S, SourceLocation AtLoc, SourceLocation LParenLoc, FieldDeclarator &FD, Selector GetterSel, SourceLocation GetterNameLoc, Selector SetterSel, SourceLocation SetterNameLoc, const bool isReadWrite, unsigned &Attributes, const unsigned AttributesAsWritten, QualType T, TypeSourceInfo *TSI, tok::ObjCKeywordKind MethodImplKind) {\n // Check for consistency with the previous declaration, if there is one.\n if (PIDecl) {\n if (ExistingOwnership && NewOwnership != ExistingOwnership) {\n // If the ownership was written explicitly, complain.\n if (getOwnershipRule(AttributesAsWritten)) {\n Diag(AtLoc, diag::warn_property_attr_mismatch);"}}, | [j]={{V,492,"ObjCPropertyDecl *Sema::HandlePropertyInClassExtension(Scope *S, SourceLocation AtLoc, SourceLocation LParenLoc, FieldDeclarator &FD, Selector GetterSel, SourceLocation GetterNameLoc, Selector SetterSel, SourceLocation SetterNameLoc, const bool isReadWrite, unsigned &Attributes, const unsigned AttributesAsWritten, QualType T, TypeSourceInfo *TSI, tok::ObjCKeywordKind MethodImplKind) {\n // ...\n // Check for consistency with the previous declaration, if there is one.\n if (PIDecl) {\n // ...\n if (ExistingOwnership && NewOwnership != ExistingOwnership) {\n // If the ownership was written explicitly, complain.\n if (getOwnershipRule(AttributesAsWritten)) {\n Diag(AtLoc, diag::warn_property_attr_mismatch);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property-in-class-extension-1.m"]={"clang/test/SemaObjC/property-in-class-extension-1.m:42:1: warning: property attribute in class extension does not match the primary class [-Wproperty-attribute-mismatch]"} | ["clang/test/SemaObjC/property-in-class-extension-1.m"]={"clang/test/SemaObjC/property-in-class-extension-1.m:42:1: warning: property attribute in class extension does not match the primary class [-Wproperty-attribute-mismatch]"} | ||
Line 5,352: | Line 5,352: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{V,399,"/// Check for a mismatch in the atomicity of the given properties.\nstatic void checkAtomicPropertyMismatch(Sema &S, ObjCPropertyDecl *OldProperty, ObjCPropertyDecl *NewProperty, bool PropagateAtomicity) {\n S.Diag(NewProperty->getLocation(), diag::warn_property_attribute) << NewProperty->getDeclName() << \"atomic\" << OldContextName;"},{V,1655,"/// DiagnosePropertyMismatch - Compares two properties for their\n/// attributes and types and warns on a variety of inconsistencies.\n///\nvoid Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property, ObjCPropertyDecl *SuperProperty, const IdentifierInfo *inheritedName, bool OverridingProtocolProperty) {\n // We allow readonly properties without an explicit ownership\n // (assign/unsafe_unretained/weak/retain/strong/copy) in super class\n // to be overridden by a property with any explicit ownership in the subclass.\n if (!OverridingProtocolProperty && !getOwnershipRule(SAttr) && getOwnershipRule(CAttr))\n else {\n if ((CAttr & ObjCPropertyAttribute::kind_copy) != (SAttr & ObjCPropertyAttribute::kind_copy))\n Diag(Property->getLocation(), diag::warn_property_attribute) << Property->getDeclName() << \"copy\" << inheritedName;"},{V,1665,"/// DiagnosePropertyMismatch - Compares two properties for their\n/// attributes and types and warns on a variety of inconsistencies.\n///\nvoid Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property, ObjCPropertyDecl *SuperProperty, const IdentifierInfo *inheritedName, bool OverridingProtocolProperty) {\n // We allow readonly properties without an explicit ownership\n // (assign/unsafe_unretained/weak/retain/strong/copy) in super class\n // to be overridden by a property with any explicit ownership in the subclass.\n if (!OverridingProtocolProperty && !getOwnershipRule(SAttr) && getOwnershipRule(CAttr))\n else {\n if ((CAttr & ObjCPropertyAttribute::kind_copy) != (SAttr & ObjCPropertyAttribute::kind_copy))\n else if (!(SAttr & ObjCPropertyAttribute::kind_readonly)) {\n if (CStrong != SStrong)\n Diag(Property->getLocation(), diag::warn_property_attribute) << Property->getDeclName() << \"retain (or strong)\" << inheritedName;"},{V,1679,"/// DiagnosePropertyMismatch - Compares two properties for their\n/// attributes and types and warns on a variety of inconsistencies.\n///\nvoid Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property, ObjCPropertyDecl *SuperProperty, const IdentifierInfo *inheritedName, bool OverridingProtocolProperty) {\n // Readonly properties from protocols can be implemented as \"readwrite\"\n // with a custom setter name.\n if (Property->getSetterName() != SuperProperty->getSetterName() && !(SuperProperty->isReadOnly() && isa<ObjCProtocolDecl>(SuperProperty->getDeclContext()))) {\n Diag(Property->getLocation(), diag::warn_property_attribute) << Property->getDeclName() << \"setter\" << inheritedName;"},{V,1684,"/// DiagnosePropertyMismatch - Compares two properties for their\n/// attributes and types and warns on a variety of inconsistencies.\n///\nvoid Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property, ObjCPropertyDecl *SuperProperty, const IdentifierInfo *inheritedName, bool OverridingProtocolProperty) {\n if (Property->getGetterName() != SuperProperty->getGetterName()) {\n Diag(Property->getLocation(), diag::warn_property_attribute) << Property->getDeclName() << \"getter\" << inheritedName;"}}, | [j]={{V,399,"/// Check for a mismatch in the atomicity of the given properties.\nstatic void checkAtomicPropertyMismatch(Sema &S, ObjCPropertyDecl *OldProperty, ObjCPropertyDecl *NewProperty, bool PropagateAtomicity) {\n // ...\n S.Diag(NewProperty->getLocation(), diag::warn_property_attribute) << NewProperty->getDeclName() << \"atomic\" << OldContextName;"},{V,1655,"/// DiagnosePropertyMismatch - Compares two properties for their\n/// attributes and types and warns on a variety of inconsistencies.\n///\nvoid Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property, ObjCPropertyDecl *SuperProperty, const IdentifierInfo *inheritedName, bool OverridingProtocolProperty) {\n // ...\n // We allow readonly properties without an explicit ownership\n // (assign/unsafe_unretained/weak/retain/strong/copy) in super class\n // to be overridden by a property with any explicit ownership in the subclass.\n if (!OverridingProtocolProperty && !getOwnershipRule(SAttr) && getOwnershipRule(CAttr))\n // ...\n else {\n // ...\n if ((CAttr & ObjCPropertyAttribute::kind_copy) != (SAttr & ObjCPropertyAttribute::kind_copy))\n Diag(Property->getLocation(), diag::warn_property_attribute) << Property->getDeclName() << \"copy\" << inheritedName;"},{V,1665,"/// DiagnosePropertyMismatch - Compares two properties for their\n/// attributes and types and warns on a variety of inconsistencies.\n///\nvoid Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property, ObjCPropertyDecl *SuperProperty, const IdentifierInfo *inheritedName, bool OverridingProtocolProperty) {\n // ...\n // We allow readonly properties without an explicit ownership\n // (assign/unsafe_unretained/weak/retain/strong/copy) in super class\n // to be overridden by a property with any explicit ownership in the subclass.\n if (!OverridingProtocolProperty && !getOwnershipRule(SAttr) && getOwnershipRule(CAttr))\n // ...\n else {\n // ...\n if ((CAttr & ObjCPropertyAttribute::kind_copy) != (SAttr & ObjCPropertyAttribute::kind_copy))\n // ...\n else if (!(SAttr & ObjCPropertyAttribute::kind_readonly)) {\n // ...\n if (CStrong != SStrong)\n Diag(Property->getLocation(), diag::warn_property_attribute) << Property->getDeclName() << \"retain (or strong)\" << inheritedName;"},{V,1679,"/// DiagnosePropertyMismatch - Compares two properties for their\n/// attributes and types and warns on a variety of inconsistencies.\n///\nvoid Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property, ObjCPropertyDecl *SuperProperty, const IdentifierInfo *inheritedName, bool OverridingProtocolProperty) {\n // ...\n // Readonly properties from protocols can be implemented as \"readwrite\"\n // with a custom setter name.\n if (Property->getSetterName() != SuperProperty->getSetterName() && !(SuperProperty->isReadOnly() && isa<ObjCProtocolDecl>(SuperProperty->getDeclContext()))) {\n Diag(Property->getLocation(), diag::warn_property_attribute) << Property->getDeclName() << \"setter\" << inheritedName;"},{V,1684,"/// DiagnosePropertyMismatch - Compares two properties for their\n/// attributes and types and warns on a variety of inconsistencies.\n///\nvoid Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property, ObjCPropertyDecl *SuperProperty, const IdentifierInfo *inheritedName, bool OverridingProtocolProperty) {\n // ...\n if (Property->getGetterName() != SuperProperty->getGetterName()) {\n Diag(Property->getLocation(), diag::warn_property_attribute) << Property->getDeclName() << \"getter\" << inheritedName;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property-ownership-attr.m"]={"clang/test/SemaObjC/property-ownership-attr.m:17:22: warning: \'copy\' attribute on property \'z\' does not match the property inherited from \'P\' [-Wproperty-attribute-mismatch]"} | ["clang/test/SemaObjC/property-ownership-attr.m"]={"clang/test/SemaObjC/property-ownership-attr.m:17:22: warning: \'copy\' attribute on property \'z\' does not match the property inherited from \'P\' [-Wproperty-attribute-mismatch]"} | ||
Line 5,367: | Line 5,367: | ||
[h]=q, | [h]=q, | ||
[i]={"f4105f5cfeb3",1308961066,"objc-arc/mrc: Allow ns_returns_not_retained attribute on properties","objc-arc/mrc: Allow ns_returns_not_retained attribute on properties"}, | [i]={"f4105f5cfeb3",1308961066,"objc-arc/mrc: Allow ns_returns_not_retained attribute on properties","objc-arc/mrc: Allow ns_returns_not_retained attribute on properties"}, | ||
[j]={{V,1482,"/// 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 (ObjCMethodDecl *getterMethod = property->getGetterMethodDecl()) {\n if (property->hasAttr<NSReturnsNotRetainedAttr>() && !getterMethod->hasAttr<NSReturnsNotRetainedAttr>()) {\n Diag(getterMethod->getLocation(), diag::warn_property_getter_owning_mismatch);"}}, | [j]={{V,1482,"/// 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 // ...\n if (ObjCMethodDecl *getterMethod = property->getGetterMethodDecl()) {\n // ...\n if (property->hasAttr<NSReturnsNotRetainedAttr>() && !getterMethod->hasAttr<NSReturnsNotRetainedAttr>()) {\n Diag(getterMethod->getLocation(), diag::warn_property_getter_owning_mismatch);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property-ns-returns-not-retained-attr.m"]={"clang/test/SemaObjC/property-ns-returns-not-retained-attr.m:11:1: warning: property declared as returning non-retained objects; getter returning retained objects"} | ["clang/test/SemaObjC/property-ns-returns-not-retained-attr.m"]={"clang/test/SemaObjC/property-ns-returns-not-retained-attr.m:11:1: warning: property declared as returning non-retained objects; getter returning retained objects"} | ||
Line 5,384: | Line 5,384: | ||
[h]=q, | [h]=q, | ||
[i]={"7196487de91a",1382747739,"ObjectiveC arc. Warn when an implicitly \'strong\' property ","ObjectiveC arc. Warn when an implicitly \'strong\' property "}, | [i]={"7196487de91a",1382747739,"ObjectiveC arc. Warn when an implicitly \'strong\' property ","ObjectiveC arc. Warn when an implicitly \'strong\' property "}, | ||
[j]={{V,506,"ObjCPropertyDecl *Sema::HandlePropertyInClassExtension(Scope *S, SourceLocation AtLoc, SourceLocation LParenLoc, FieldDeclarator &FD, Selector GetterSel, SourceLocation GetterNameLoc, Selector SetterSel, SourceLocation SetterNameLoc, const bool isReadWrite, unsigned &Attributes, const unsigned AttributesAsWritten, QualType T, TypeSourceInfo *TSI, tok::ObjCKeywordKind MethodImplKind) {\n // Check for consistency with the previous declaration, if there is one.\n if (PIDecl) {\n // If the redeclaration is \'weak\' but the original property is not,\n if ((Attributes & ObjCPropertyAttribute::kind_weak) && !(PIDecl->getPropertyAttributesAsWritten() & ObjCPropertyAttribute::kind_weak) && PIDecl->getType()->getAs<ObjCObjectPointerType>() && PIDecl->getType().getObjCLifetime() == Qualifiers::OCL_None) {\n Diag(AtLoc, diag::warn_property_implicitly_mismatched);"}}, | [j]={{V,506,"ObjCPropertyDecl *Sema::HandlePropertyInClassExtension(Scope *S, SourceLocation AtLoc, SourceLocation LParenLoc, FieldDeclarator &FD, Selector GetterSel, SourceLocation GetterNameLoc, Selector SetterSel, SourceLocation SetterNameLoc, const bool isReadWrite, unsigned &Attributes, const unsigned AttributesAsWritten, QualType T, TypeSourceInfo *TSI, tok::ObjCKeywordKind MethodImplKind) {\n // ...\n // Check for consistency with the previous declaration, if there is one.\n if (PIDecl) {\n // ...\n // If the redeclaration is \'weak\' but the original property is not,\n if ((Attributes & ObjCPropertyAttribute::kind_weak) && !(PIDecl->getPropertyAttributesAsWritten() & ObjCPropertyAttribute::kind_weak) && PIDecl->getType()->getAs<ObjCObjectPointerType>() && PIDecl->getType().getObjCLifetime() == Qualifiers::OCL_None) {\n Diag(AtLoc, diag::warn_property_implicitly_mismatched);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/arc-decls.m"]={"clang/test/SemaObjC/arc-decls.m:166:1: warning: primary property declaration is implicitly strong while redeclaration in class extension is weak [-Wobjc-property-implicit-mismatch]"} | ["clang/test/SemaObjC/arc-decls.m"]={"clang/test/SemaObjC/arc-decls.m:166:1: warning: primary property declaration is implicitly strong while redeclaration in class extension is weak [-Wobjc-property-implicit-mismatch]"} | ||
Line 5,401: | Line 5,401: | ||
[h]=ac, | [h]=ac, | ||
[i]={"89ea9610b306",1402939541,"Objective-C. Diagnose when property access is using declared","Objective-C. Diagnose when property access is using declared"}, | [i]={"89ea9610b306",1402939541,"Objective-C. Diagnose when property access is using declared","Objective-C. Diagnose when property access is using declared"}, | ||
[j]={{Tc,437,"/// Actually emit an availability diagnostic for a reference to an unavailable\n/// decl.\n///\n/// \\param Ctx The context that the reference occurred in\n/// \\param ReferringDecl The exact declaration that was referenced.\n/// \\param OffendingDecl A related decl to \\c ReferringDecl that has an\n/// availability attribute corresponding to \\c K attached to it. Note that this\n/// may not be the same as ReferringDecl, i.e. if an EnumDecl is annotated and\n/// we refer to a member EnumConstantDecl, ReferringDecl is the EnumConstantDecl\n/// and OffendingDecl is the EnumDecl.\nstatic void DoEmitAvailabilityWarning(Sema &S, AvailabilityResult K, Decl *Ctx, const NamedDecl *ReferringDecl, const NamedDecl *OffendingDecl, StringRef Message, ArrayRef<SourceLocation> Locs, const ObjCInterfaceDecl *UnknownObjCClass, const ObjCPropertyDecl *ObjCProperty, bool ObjCPropertyAccess) {\n case AR_Deprecated:\n diag = !ObjCPropertyAccess ? diag::warn_deprecated : diag::warn_property_method_deprecated;"}}, | [j]={{Tc,437,"/// Actually emit an availability diagnostic for a reference to an unavailable\n/// decl.\n///\n/// \\param Ctx The context that the reference occurred in\n/// \\param ReferringDecl The exact declaration that was referenced.\n/// \\param OffendingDecl A related decl to \\c ReferringDecl that has an\n/// availability attribute corresponding to \\c K attached to it. Note that this\n/// may not be the same as ReferringDecl, i.e. if an EnumDecl is annotated and\n/// we refer to a member EnumConstantDecl, ReferringDecl is the EnumConstantDecl\n/// and OffendingDecl is the EnumDecl.\nstatic void DoEmitAvailabilityWarning(Sema &S, AvailabilityResult K, Decl *Ctx, const NamedDecl *ReferringDecl, const NamedDecl *OffendingDecl, StringRef Message, ArrayRef<SourceLocation> Locs, const ObjCInterfaceDecl *UnknownObjCClass, const ObjCPropertyDecl *ObjCProperty, bool ObjCPropertyAccess) {\n // ...\n case AR_Deprecated:\n diag = !ObjCPropertyAccess ? diag::warn_deprecated : diag::warn_property_method_deprecated;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property-deprecated-warning.m"]={"clang/test/SemaObjC/property-deprecated-warning.m:168:6: warning: property access is using \'setX:\' method which is deprecated [-Wdeprecated-declarations]"} | ["clang/test/SemaObjC/property-deprecated-warning.m"]={"clang/test/SemaObjC/property-deprecated-warning.m:168:6: warning: property access is using \'setX:\' method which is deprecated [-Wdeprecated-declarations]"} | ||
Line 5,418: | Line 5,418: | ||
[h]=q, | [h]=q, | ||
[i]={"9dd25b769642",1449788529,"Objective-C properties: merge attributes when redeclaring \'readonly\' as \'readwrite\' in an extension.","Objective-C properties: merge attributes when redeclaring \'readonly\' as \'readwrite\' in an extension."}, | [i]={"9dd25b769642",1449788529,"Objective-C properties: merge attributes when redeclaring \'readonly\' as \'readwrite\' in an extension.","Objective-C properties: merge attributes when redeclaring \'readonly\' as \'readwrite\' in an extension."}, | ||
[j]={{V,475,"ObjCPropertyDecl *Sema::HandlePropertyInClassExtension(Scope *S, SourceLocation AtLoc, SourceLocation LParenLoc, FieldDeclarator &FD, Selector GetterSel, SourceLocation GetterNameLoc, Selector SetterSel, SourceLocation SetterNameLoc, const bool isReadWrite, unsigned &Attributes, const unsigned AttributesAsWritten, QualType T, TypeSourceInfo *TSI, tok::ObjCKeywordKind MethodImplKind) {\n // Check for consistency with the previous declaration, if there is one.\n if (PIDecl) {\n // Check for consistency of getters.\n if (PIDecl->getGetterName() != GetterSel) {\n // If the getter was written explicitly, complain.\n if (AttributesAsWritten & ObjCPropertyAttribute::kind_getter) {\n Diag(AtLoc, diag::warn_property_redecl_getter_mismatch) << PIDecl->getGetterName() << GetterSel;"}}, | [j]={{V,475,"ObjCPropertyDecl *Sema::HandlePropertyInClassExtension(Scope *S, SourceLocation AtLoc, SourceLocation LParenLoc, FieldDeclarator &FD, Selector GetterSel, SourceLocation GetterNameLoc, Selector SetterSel, SourceLocation SetterNameLoc, const bool isReadWrite, unsigned &Attributes, const unsigned AttributesAsWritten, QualType T, TypeSourceInfo *TSI, tok::ObjCKeywordKind MethodImplKind) {\n // ...\n // Check for consistency with the previous declaration, if there is one.\n if (PIDecl) {\n // ...\n // Check for consistency of getters.\n if (PIDecl->getGetterName() != GetterSel) {\n // If the getter was written explicitly, complain.\n if (AttributesAsWritten & ObjCPropertyAttribute::kind_getter) {\n Diag(AtLoc, diag::warn_property_redecl_getter_mismatch) << PIDecl->getGetterName() << GetterSel;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property-3.m"]={"clang/test/SemaObjC/property-3.m:41:1: warning: getter name mismatch between property redeclaration (\'wasAvailable\') and its original declaration (\'isAvailable\') [-Wproperty-attribute-mismatch]"} | ["clang/test/SemaObjC/property-3.m"]={"clang/test/SemaObjC/property-3.m:41:1: warning: getter name mismatch between property redeclaration (\'wasAvailable\') and its original declaration (\'isAvailable\') [-Wproperty-attribute-mismatch]"} | ||
Line 5,435: | Line 5,435: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{V,1702,"/// DiagnosePropertyMismatch - Compares two properties for their\n/// attributes and types and warns on a variety of inconsistencies.\n///\nvoid Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property, ObjCPropertyDecl *SuperProperty, const IdentifierInfo *inheritedName, bool OverridingProtocolProperty) {\n if (!Context.propertyTypesAreCompatible(LHSType, RHSType)) {\n if (!isObjCPointerConversion(RHSType, LHSType, ConvertedType, IncompatibleObjC) || IncompatibleObjC) {\n Diag(Property->getLocation(), diag::warn_property_types_are_incompatible) << Property->getType() << SuperProperty->getType() << inheritedName;"}}, | [j]={{V,1702,"/// DiagnosePropertyMismatch - Compares two properties for their\n/// attributes and types and warns on a variety of inconsistencies.\n///\nvoid Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property, ObjCPropertyDecl *SuperProperty, const IdentifierInfo *inheritedName, bool OverridingProtocolProperty) {\n // ...\n if (!Context.propertyTypesAreCompatible(LHSType, RHSType)) {\n // ...\n if (!isObjCPointerConversion(RHSType, LHSType, ConvertedType, IncompatibleObjC) || IncompatibleObjC) {\n Diag(Property->getLocation(), diag::warn_property_types_are_incompatible) << Property->getType() << SuperProperty->getType() << inheritedName;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property-category-3.m"]={"clang/test/SemaObjC/property-category-3.m:15:17: warning: property type \'float\' is incompatible with type \'int\' inherited from \'P\' [-Wincompatible-property-type]"} | ["clang/test/SemaObjC/property-category-3.m"]={"clang/test/SemaObjC/property-category-3.m:15:17: warning: property type \'float\' is incompatible with type \'int\' inherited from \'P\' [-Wincompatible-property-type]"} | ||
Line 5,452: | Line 5,452: | ||
[h]=q, | [h]=q, | ||
[i]={"0ebf87959fff",1369084824,"Objective-C [qoi]: When an class conforms to multiple","Objective-C [qoi]: When an class conforms to multiple"}, | [i]={"0ebf87959fff",1369084824,"Objective-C [qoi]: When an class conforms to multiple","Objective-C [qoi]: When an class conforms to multiple"}, | ||
[j]={{V,970,"/// SelectPropertyForSynthesisFromProtocols - Finds the most appropriate\n/// property declaration that should be synthesised in all of the inherited\n/// protocols. It also diagnoses properties declared in inherited protocols with\n/// mismatched types or attributes, since any of them can be candidate for\n/// synthesis.\nstatic ObjCPropertyDecl *SelectPropertyForSynthesisFromProtocols(Sema &S, SourceLocation AtLoc, ObjCInterfaceDecl *ClassDecl, ObjCPropertyDecl *Property) {\n // Diagnose incompability.\n {\n auto Diag = S.Diag(Property->getLocation(), Property != OriginalProperty || HasIncompatibleAttributes ? diag::err_protocol_property_mismatch : diag::warn_protocol_property_mismatch);"}}, | [j]={{V,970,"/// SelectPropertyForSynthesisFromProtocols - Finds the most appropriate\n/// property declaration that should be synthesised in all of the inherited\n/// protocols. It also diagnoses properties declared in inherited protocols with\n/// mismatched types or attributes, since any of them can be candidate for\n/// synthesis.\nstatic ObjCPropertyDecl *SelectPropertyForSynthesisFromProtocols(Sema &S, SourceLocation AtLoc, ObjCInterfaceDecl *ClassDecl, ObjCPropertyDecl *Property) {\n // ...\n // Diagnose incompability.\n {\n // ...\n auto Diag = S.Diag(Property->getLocation(), Property != OriginalProperty || HasIncompatibleAttributes ? diag::err_protocol_property_mismatch : diag::warn_protocol_property_mismatch);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property-ambiguous-synthesis.m"]={"clang/test/SemaObjC/property-ambiguous-synthesis.m:10:18: warning: property of type \'double\' was selected for synthesis [-Wprotocol-property-synthesis-ambiguity]","clang/test/SemaObjC/property-ambiguous-synthesis.m:10:18: warning: property of type \'double\' was selected for synthesis [-Wprotocol-property-synthesis-ambiguity]","clang/test/SemaObjC/property-ambiguous-synthesis.m:5:23: warning: property of type \'id\' was selected for synthesis [-Wprotocol-property-synthesis-ambiguity]"} | ["clang/test/SemaObjC/property-ambiguous-synthesis.m"]={"clang/test/SemaObjC/property-ambiguous-synthesis.m:10:18: warning: property of type \'double\' was selected for synthesis [-Wprotocol-property-synthesis-ambiguity]","clang/test/SemaObjC/property-ambiguous-synthesis.m:10:18: warning: property of type \'double\' was selected for synthesis [-Wprotocol-property-synthesis-ambiguity]","clang/test/SemaObjC/property-ambiguous-synthesis.m:5:23: warning: property of type \'id\' was selected for synthesis [-Wprotocol-property-synthesis-ambiguity]"} | ||
Line 5,470: | Line 5,470: | ||
[h]=q, | [h]=q, | ||
[i]={"c60dc2cfb9ad",1411081346,"Thread Safety Analysis: add new warning flag, -Wthread-safety-reference, which","Thread Safety Analysis: add new warning flag, -Wthread-safety-reference, which"}, | [i]={"c60dc2cfb9ad",1411081346,"Thread Safety Analysis: add new warning flag, -Wthread-safety-reference, which","Thread Safety Analysis: add new warning flag, -Wthread-safety-reference, which"}, | ||
[j]={{E,1973,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n void handleMutexNotHeld(StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, Name LockName, LockKind LK, SourceLocation Loc, Name *PossibleMatch) override {\n if (PossibleMatch) {\n case POK_PtPassByRef:\n DiagID = diag::warn_pt_guarded_pass_by_reference;"},{E,2003,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n void handleMutexNotHeld(StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, Name LockName, LockKind LK, SourceLocation Loc, Name *PossibleMatch) override {\n if (PossibleMatch) {\n } else {\n case POK_PtPassByRef:\n DiagID = diag::warn_pt_guarded_pass_by_reference;"}}, | [j]={{E,1973,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n // ...\n void handleMutexNotHeld(StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, Name LockName, LockKind LK, SourceLocation Loc, Name *PossibleMatch) override {\n // ...\n if (PossibleMatch) {\n // ...\n case POK_PtPassByRef:\n DiagID = diag::warn_pt_guarded_pass_by_reference;"},{E,2003,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n // ...\n void handleMutexNotHeld(StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, Name LockName, LockKind LK, SourceLocation Loc, Name *PossibleMatch) override {\n // ...\n if (PossibleMatch) {\n // ...\n } else {\n // ...\n case POK_PtPassByRef:\n DiagID = diag::warn_pt_guarded_pass_by_reference;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-thread-safety-analysis.cpp"]={"clang/test/SemaCXX/warn-thread-safety-analysis.cpp:5560:13: warning: passing the value that \'foop\' points to by reference requires holding mutex \'mu\' [-Wthread-safety-reference]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:5561:17: warning: passing the value that \'foop\' points to by reference requires holding mutex \'mu\' [-Wthread-safety-reference]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:5562:12: warning: passing the value that \'foop\' points to by reference requires holding mutex \'mu\' [-Wthread-safety-reference]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:5563:16: warning: passing the value that \'foop\' points to by reference requires holding mutex \'mu\' [-Wthread-safety-reference]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:5564:21: warning: passing the value that \'foop\' points to by reference requires holding mutex \'mu\' [-Wthread-safety-reference]"} | ["clang/test/SemaCXX/warn-thread-safety-analysis.cpp"]={"clang/test/SemaCXX/warn-thread-safety-analysis.cpp:5560:13: warning: passing the value that \'foop\' points to by reference requires holding mutex \'mu\' [-Wthread-safety-reference]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:5561:17: warning: passing the value that \'foop\' points to by reference requires holding mutex \'mu\' [-Wthread-safety-reference]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:5562:12: warning: passing the value that \'foop\' points to by reference requires holding mutex \'mu\' [-Wthread-safety-reference]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:5563:16: warning: passing the value that \'foop\' points to by reference requires holding mutex \'mu\' [-Wthread-safety-reference]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:5564:21: warning: passing the value that \'foop\' points to by reference requires holding mutex \'mu\' [-Wthread-safety-reference]"} | ||
Line 5,488: | Line 5,488: | ||
[h]=q, | [h]=q, | ||
[i]={"980bdb9dfb55",1311645148,"Expand array bounds checking to work in the presence of unary & and *,","Expand array bounds checking to work in the presence of unary & and *,"}, | [i]={"980bdb9dfb55",1311645148,"Expand array bounds checking to work in the presence of unary & and *,","Expand array bounds checking to work in the presence of unary & and *,"}, | ||
[j]={{x,17169,"void Sema::CheckArrayAccess(const Expr *BaseExpr, const Expr *IndexExpr, const ArraySubscriptExpr *ASE, bool AllowOnePastEnd, bool IndexNegated) {\n if (index.isUnsigned() || !index.isNegative()) {\n unsigned DiagID = ASE ? diag::warn_array_index_exceeds_bounds : diag::warn_ptr_arith_exceeds_bounds;"}}, | [j]={{x,17169,"void Sema::CheckArrayAccess(const Expr *BaseExpr, const Expr *IndexExpr, const ArraySubscriptExpr *ASE, bool AllowOnePastEnd, bool IndexNegated) {\n // ...\n if (index.isUnsigned() || !index.isNegative()) {\n // ...\n unsigned DiagID = ASE ? diag::warn_array_index_exceeds_bounds : diag::warn_ptr_arith_exceeds_bounds;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/array-bounds-ptr-arith.cpp"]={"clang/test/SemaCXX/array-bounds-ptr-arith.cpp:10:11: warning: the pointer incremented by 14 refers past the end of the array (that has type \'const char[13]\') [-Warray-bounds-pointer-arithmetic]","clang/test/SemaCXX/array-bounds-ptr-arith.cpp:15:11: warning: the pointer incremented by 14 refers past the end of the array (that has type \'const char[13]\') [-Warray-bounds-pointer-arithmetic]","clang/test/SemaCXX/array-bounds-ptr-arith.cpp:25:18: warning: the pointer incremented by 60 refers past the end of the array (that has type \'double[2]\') [-Warray-bounds-pointer-arithmetic]","clang/test/SemaCXX/array-bounds-ptr-arith.cpp:29:11: warning: the pointer incremented by 6 refers past the end of the array (that has type \'char[5]\') [-Warray-bounds-pointer-arithmetic]","clang/test/SemaCXX/array-bounds-ptr-arith.cpp:31:32: warning: the pointer incremented by 6 refers past the end of the array (that has type \'char[5]\') [-Warray-bounds-pointer-arithmetic]"} | ["clang/test/SemaCXX/array-bounds-ptr-arith.cpp"]={"clang/test/SemaCXX/array-bounds-ptr-arith.cpp:10:11: warning: the pointer incremented by 14 refers past the end of the array (that has type \'const char[13]\') [-Warray-bounds-pointer-arithmetic]","clang/test/SemaCXX/array-bounds-ptr-arith.cpp:15:11: warning: the pointer incremented by 14 refers past the end of the array (that has type \'const char[13]\') [-Warray-bounds-pointer-arithmetic]","clang/test/SemaCXX/array-bounds-ptr-arith.cpp:25:18: warning: the pointer incremented by 60 refers past the end of the array (that has type \'double[2]\') [-Warray-bounds-pointer-arithmetic]","clang/test/SemaCXX/array-bounds-ptr-arith.cpp:29:11: warning: the pointer incremented by 6 refers past the end of the array (that has type \'char[5]\') [-Warray-bounds-pointer-arithmetic]","clang/test/SemaCXX/array-bounds-ptr-arith.cpp:31:32: warning: the pointer incremented by 6 refers past the end of the array (that has type \'char[5]\') [-Warray-bounds-pointer-arithmetic]"} | ||
Line 5,505: | Line 5,505: | ||
[h]=q, | [h]=q, | ||
[i]={"da55e9ba1273",1600125132,"[Sema] Address-space sensitive index check for unbounded arrays","[Sema] Address-space sensitive index check for unbounded arrays"}, | [i]={"da55e9ba1273",1600125132,"[Sema] Address-space sensitive index check for unbounded arrays","[Sema] Address-space sensitive index check for unbounded arrays"}, | ||
[j]={{x,17079,"void Sema::CheckArrayAccess(const Expr *BaseExpr, const Expr *IndexExpr, const ArraySubscriptExpr *ASE, bool AllowOnePastEnd, bool IndexNegated) {\n if (IsUnboundedArray) {\n if (index.isUnsigned() || !index.isNegative()) {\n unsigned DiagID = ASE ? diag::warn_array_index_exceeds_max_addressable_bounds : diag::warn_ptr_arith_exceeds_max_addressable_bounds;"}}, | [j]={{x,17079,"void Sema::CheckArrayAccess(const Expr *BaseExpr, const Expr *IndexExpr, const ArraySubscriptExpr *ASE, bool AllowOnePastEnd, bool IndexNegated) {\n // ...\n if (IsUnboundedArray) {\n // ...\n if (index.isUnsigned() || !index.isNegative()) {\n // ...\n unsigned DiagID = ASE ? diag::warn_array_index_exceeds_max_addressable_bounds : diag::warn_ptr_arith_exceeds_max_addressable_bounds;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/const-eval.c"]={"clang/test/Sema/const-eval.c:145:48: warning: the pointer incremented by 18446744073709551615 refers past the last possible element for an array in 64-bit address space containing 64-bit (8-byte) elements (max possible 2305843009213693952 elements) [-Warray-bounds]","clang/test/Sema/const-eval.c:146:18: warning: the pointer incremented by 18446744073709551615 refers past the last possible element for an array in 64-bit address space containing 64-bit (8-byte) elements (max possible 2305843009213693952 elements) [-Warray-bounds]","clang/test/Sema/const-eval.c:147:22: warning: the pointer incremented by 18446744073709551615 refers past the last possible element for an array in 64-bit address space containing 128-bit (16-byte) elements (max possible 1152921504606846976 elements) [-Warray-bounds]"} | ["clang/test/Sema/const-eval.c"]={"clang/test/Sema/const-eval.c:145:48: warning: the pointer incremented by 18446744073709551615 refers past the last possible element for an array in 64-bit address space containing 64-bit (8-byte) elements (max possible 2305843009213693952 elements) [-Warray-bounds]","clang/test/Sema/const-eval.c:146:18: warning: the pointer incremented by 18446744073709551615 refers past the last possible element for an array in 64-bit address space containing 64-bit (8-byte) elements (max possible 2305843009213693952 elements) [-Warray-bounds]","clang/test/Sema/const-eval.c:147:22: warning: the pointer incremented by 18446744073709551615 refers past the last possible element for an array in 64-bit address space containing 128-bit (16-byte) elements (max possible 1152921504606846976 elements) [-Warray-bounds]"} | ||
Line 5,523: | Line 5,523: | ||
[h]=q, | [h]=q, | ||
[i]={"980bdb9dfb55",1311645148,"Expand array bounds checking to work in the presence of unary & and *,","Expand array bounds checking to work in the presence of unary & and *,"}, | [i]={"980bdb9dfb55",1311645148,"Expand array bounds checking to work in the presence of unary & and *,","Expand array bounds checking to work in the presence of unary & and *,"}, | ||
[j]={{x,17180,"void Sema::CheckArrayAccess(const Expr *BaseExpr, const Expr *IndexExpr, const ArraySubscriptExpr *ASE, bool AllowOnePastEnd, bool IndexNegated) {\n if (index.isUnsigned() || !index.isNegative()) {\n } else {\n if (!ASE) {\n DiagID = diag::warn_ptr_arith_precedes_bounds;"}}, | [j]={{x,17180,"void Sema::CheckArrayAccess(const Expr *BaseExpr, const Expr *IndexExpr, const ArraySubscriptExpr *ASE, bool AllowOnePastEnd, bool IndexNegated) {\n // ...\n if (index.isUnsigned() || !index.isNegative()) {\n // ...\n } else {\n // ...\n if (!ASE) {\n DiagID = diag::warn_ptr_arith_precedes_bounds;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/array-bounds-ptr-arith.cpp"]={"clang/test/SemaCXX/array-bounds-ptr-arith.cpp:9:11: warning: the pointer decremented by 6 refers before the beginning of the array [-Warray-bounds-pointer-arithmetic]","clang/test/SemaCXX/array-bounds-ptr-arith.cpp:14:11: warning: the pointer decremented by 6 refers before the beginning of the array [-Warray-bounds-pointer-arithmetic]"} | ["clang/test/SemaCXX/array-bounds-ptr-arith.cpp"]={"clang/test/SemaCXX/array-bounds-ptr-arith.cpp:9:11: warning: the pointer decremented by 6 refers before the beginning of the array [-Warray-bounds-pointer-arithmetic]","clang/test/SemaCXX/array-bounds-ptr-arith.cpp:14:11: warning: the pointer decremented by 6 refers before the beginning of the array [-Warray-bounds-pointer-arithmetic]"} | ||
Line 5,540: | Line 5,540: | ||
[h]=q, | [h]=q, | ||
[i]={"7a60b6db76f5",1429209524,"[Objective-C Sema] patch to introduce IndependentClass","[Objective-C Sema] patch to introduce IndependentClass"}, | [i]={"7a60b6db76f5",1429209524,"[Objective-C Sema] patch to introduce IndependentClass","[Objective-C Sema] patch to introduce IndependentClass"}, | ||
[j]={{C,3021,"static void handleObjCIndependentClass(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (const auto *TD = dyn_cast<TypedefNameDecl>(D)) {\n if (!T->isObjCObjectPointerType()) {\n S.Diag(TD->getLocation(), diag::warn_ptr_independentclass_attribute);"}}, | [j]={{C,3021,"static void handleObjCIndependentClass(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (const auto *TD = dyn_cast<TypedefNameDecl>(D)) {\n // ...\n if (!T->isObjCObjectPointerType()) {\n S.Diag(TD->getLocation(), diag::warn_ptr_independentclass_attribute);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/objc-independent-class-attribute.m"]={"clang/test/SemaObjC/objc-independent-class-attribute.m:8:70: warning: \'objc_independent_class\' attribute may be put on Objective-C object pointer type only; attribute is ignored [-WIndependentClass-attribute]"} | ["clang/test/SemaObjC/objc-independent-class-attribute.m"]={"clang/test/SemaObjC/objc-independent-class-attribute.m:8:70: warning: \'objc_independent_class\' attribute may be put on Objective-C object pointer type only; attribute is ignored [-WIndependentClass-attribute]"} | ||
Line 5,558: | Line 5,558: | ||
[h]=q, | [h]=q, | ||
[i]={"603d81bf8d05",1279009102,"When forming a function call or message send expression, be sure to","When forming a function call or message send expression, be sure to"}, | [i]={"603d81bf8d05",1279009102,"When forming a function call or message send expression, be sure to","When forming a function call or message send expression, be sure to"}, | ||
[j]={{T,3328,"// Diagnose pointless type qualifiers on the return type of a function.\nstatic void diagnoseRedundantReturnTypeQualifiers(Sema &S, QualType RetTy, Declarator &D, unsigned FunctionChunkIndex) {\n if (FTI.hasTrailingReturnType()) {\n S.diagnoseIgnoredQualifiers(diag::warn_qual_return_type, RetTy.getLocalCVRQualifiers(), FTI.getTrailingReturnTypeLoc());"},{T,3345,"// Diagnose pointless type qualifiers on the return type of a function.\nstatic void diagnoseRedundantReturnTypeQualifiers(Sema &S, QualType RetTy, Declarator &D, unsigned FunctionChunkIndex) {\n for (unsigned OuterChunkIndex = FunctionChunkIndex + 1, End = D.getNumTypeObjects(); OuterChunkIndex != End; ++OuterChunkIndex) {\n case DeclaratorChunk::Pointer: {\n S.diagnoseIgnoredQualifiers(diag::warn_qual_return_type, PTI.TypeQuals, SourceLocation(), PTI.ConstQualLoc, PTI.VolatileQualLoc, PTI.RestrictQualLoc, PTI.AtomicQualLoc, PTI.UnalignedQualLoc);"},{T,3365,"// Diagnose pointless type qualifiers on the return type of a function.\nstatic void diagnoseRedundantReturnTypeQualifiers(Sema &S, QualType RetTy, Declarator &D, unsigned FunctionChunkIndex) {\n for (unsigned OuterChunkIndex = FunctionChunkIndex + 1, End = D.getNumTypeObjects(); OuterChunkIndex != End; ++OuterChunkIndex) {\n case DeclaratorChunk::Pipe:\n S.diagnoseIgnoredQualifiers(diag::warn_qual_return_type, RetTy.getCVRQualifiers() | AtomicQual, D.getIdentifierLoc());"},{T,3382,"// Diagnose pointless type qualifiers on the return type of a function.\nstatic void diagnoseRedundantReturnTypeQualifiers(Sema &S, QualType RetTy, Declarator &D, unsigned FunctionChunkIndex) {\n S.diagnoseIgnoredQualifiers(diag::warn_qual_return_type, D.getDeclSpec().getTypeQualifiers(), D.getIdentifierLoc(), D.getDeclSpec().getConstSpecLoc(), D.getDeclSpec().getVolatileSpecLoc(), D.getDeclSpec().getRestrictSpecLoc(), D.getDeclSpec().getAtomicSpecLoc(), D.getDeclSpec().getUnalignedSpecLoc());"}}, | [j]={{T,3328,"// Diagnose pointless type qualifiers on the return type of a function.\nstatic void diagnoseRedundantReturnTypeQualifiers(Sema &S, QualType RetTy, Declarator &D, unsigned FunctionChunkIndex) {\n // ...\n if (FTI.hasTrailingReturnType()) {\n S.diagnoseIgnoredQualifiers(diag::warn_qual_return_type, RetTy.getLocalCVRQualifiers(), FTI.getTrailingReturnTypeLoc());"},{T,3345,"// Diagnose pointless type qualifiers on the return type of a function.\nstatic void diagnoseRedundantReturnTypeQualifiers(Sema &S, QualType RetTy, Declarator &D, unsigned FunctionChunkIndex) {\n // ...\n for (unsigned OuterChunkIndex = FunctionChunkIndex + 1, End = D.getNumTypeObjects(); OuterChunkIndex != End; ++OuterChunkIndex) {\n // ...\n case DeclaratorChunk::Pointer: {\n // ...\n S.diagnoseIgnoredQualifiers(diag::warn_qual_return_type, PTI.TypeQuals, SourceLocation(), PTI.ConstQualLoc, PTI.VolatileQualLoc, PTI.RestrictQualLoc, PTI.AtomicQualLoc, PTI.UnalignedQualLoc);"},{T,3365,"// Diagnose pointless type qualifiers on the return type of a function.\nstatic void diagnoseRedundantReturnTypeQualifiers(Sema &S, QualType RetTy, Declarator &D, unsigned FunctionChunkIndex) {\n // ...\n for (unsigned OuterChunkIndex = FunctionChunkIndex + 1, End = D.getNumTypeObjects(); OuterChunkIndex != End; ++OuterChunkIndex) {\n // ...\n case DeclaratorChunk::Function:\n case DeclaratorChunk::BlockPointer:\n case DeclaratorChunk::Reference:\n case DeclaratorChunk::Array:\n case DeclaratorChunk::MemberPointer:\n case DeclaratorChunk::Pipe:\n // ...\n S.diagnoseIgnoredQualifiers(diag::warn_qual_return_type, RetTy.getCVRQualifiers() | AtomicQual, D.getIdentifierLoc());"},{T,3382,"// Diagnose pointless type qualifiers on the return type of a function.\nstatic void diagnoseRedundantReturnTypeQualifiers(Sema &S, QualType RetTy, Declarator &D, unsigned FunctionChunkIndex) {\n // ...\n S.diagnoseIgnoredQualifiers(diag::warn_qual_return_type, D.getDeclSpec().getTypeQualifiers(), D.getIdentifierLoc(), D.getDeclSpec().getConstSpecLoc(), D.getDeclSpec().getVolatileSpecLoc(), D.getDeclSpec().getRestrictSpecLoc(), D.getDeclSpec().getAtomicSpecLoc(), D.getDeclSpec().getUnalignedSpecLoc());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/return.cpp"]={"clang/test/SemaCXX/return.cpp:26:1: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:27:5: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:31:1: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:36:1: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:39:7: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:40:7: warning: \'volatile\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:43:1: warning: \'const volatile\' type qualifiers on return type have no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:47:1: warning: \'const volatile\' type qualifiers on return type have no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:53:1: warning: \'volatile\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:55:1: warning: \'const volatile\' type qualifiers on return type have no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:60:1: warning: \'_Atomic\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:65:5: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:68:5: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:78:5: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]"} | ["clang/test/SemaCXX/return.cpp"]={"clang/test/SemaCXX/return.cpp:26:1: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:27:5: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:31:1: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:36:1: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:39:7: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:40:7: warning: \'volatile\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:43:1: warning: \'const volatile\' type qualifiers on return type have no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:47:1: warning: \'const volatile\' type qualifiers on return type have no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:53:1: warning: \'volatile\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:55:1: warning: \'const volatile\' type qualifiers on return type have no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:60:1: warning: \'_Atomic\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:65:5: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:68:5: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]","clang/test/SemaCXX/return.cpp:78:5: warning: \'const\' type qualifier on return type has no effect [-Wignored-qualifiers]"} | ||
Line 5,576: | Line 5,576: | ||
[h]=D, | [h]=D, | ||
[i]={"d1d83df80764",1529532719,"Warning for framework headers using double quote includes","Warning for framework headers using double quote includes"}, | [i]={"d1d83df80764",1529532719,"Warning for framework headers using double quote includes","Warning for framework headers using double quote includes"}, | ||
[j]={{"clang/lib/Lex/HeaderSearch.cpp",843,"static void diagnoseFrameworkInclude(DiagnosticsEngine &Diags, SourceLocation IncludeLoc, StringRef Includer, StringRef IncludeFilename, const FileEntry *IncludeFE, bool isAngled = false, bool FoundByHeaderMap = false) {\n if (!isAngled && !FoundByHeaderMap) {\n Diags.Report(IncludeLoc, diag::warn_quoted_include_in_framework_header) << IncludeFilename << FixItHint::CreateReplacement(IncludeLoc, NewInclude);"}}, | [j]={{"clang/lib/Lex/HeaderSearch.cpp",843,"static void diagnoseFrameworkInclude(DiagnosticsEngine &Diags, SourceLocation IncludeLoc, StringRef Includer, StringRef IncludeFilename, const FileEntry *IncludeFE, bool isAngled = false, bool FoundByHeaderMap = false) {\n // ...\n if (!isAngled && !FoundByHeaderMap) {\n // ...\n Diags.Report(IncludeLoc, diag::warn_quoted_include_in_framework_header) << IncludeFilename << FixItHint::CreateReplacement(IncludeLoc, NewInclude);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Modules/double-quotes.m"]={"clang/test/Modules/Inputs/double-quotes/A.framework/Headers/A.h:1:10: warning: double-quoted include \"A0.h\" in framework header, expected angle-bracketed instead [-Wquoted-include-in-framework-header]","clang/test/Modules/Inputs/double-quotes/A.framework/Headers/A.h:2:10: warning: double-quoted include \"B.h\" in framework header, expected angle-bracketed instead [-Wquoted-include-in-framework-header]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/Modules/Inputs/double-quotes/flat-header-path/Z.h:1:9: warning: double-quoted include \"B.h\" in framework header, expected angle-bracketed instead [-Wquoted-include-in-framework-header]"} | ["clang/test/Modules/double-quotes.m"]={"clang/test/Modules/Inputs/double-quotes/A.framework/Headers/A.h:1:10: warning: double-quoted include \"A0.h\" in framework header, expected angle-bracketed instead [-Wquoted-include-in-framework-header]","clang/test/Modules/Inputs/double-quotes/A.framework/Headers/A.h:2:10: warning: double-quoted include \"B.h\" in framework header, expected angle-bracketed instead [-Wquoted-include-in-framework-header]","/var/jenkins/workspace/llvm_stripf_diag_2/misc/llvm-warnings/llvmorg-17.0.6/clang/test/Modules/Inputs/double-quotes/flat-header-path/Z.h:1:9: warning: double-quoted include \"B.h\" in framework header, expected angle-bracketed instead [-Wquoted-include-in-framework-header]"} | ||
Line 5,593: | Line 5,593: | ||
[h]="AST Deserialization Issue", | [h]="AST Deserialization Issue", | ||
[i]={"e22fa1d4c615",1684317067,"[C++20] [Modules] Emit a warning if the we load the modules by implicit generated path","[C++20] [Modules] Emit a warning if the we load the modules by implicit generated path"}, | [i]={"e22fa1d4c615",1684317067,"[C++20] [Modules] Emit a warning if the we load the modules by implicit generated path","[C++20] [Modules] Emit a warning if the we load the modules by implicit generated path"}, | ||
[j]={{"clang/lib/Serialization/ASTReader.cpp",2918,"ASTReader::ASTReadResult ASTReader::ReadControlBlock(ModuleFile &F, SmallVectorImpl<ImportedModule> &Loaded, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n while (true) {\n case IMPORTS: {\n while (Idx < N) {\n if (ImportedFile.empty()) {\n // It is deprecated for C++20 Named modules to use the implicitly\n // paths.\n if (IsImportingStdCXXModule)\n Diag(clang::diag::warn_reading_std_cxx_module_by_implicit_paths) << ImportedName;"}} | [j]={{"clang/lib/Serialization/ASTReader.cpp",2918,"ASTReader::ASTReadResult ASTReader::ReadControlBlock(ModuleFile &F, SmallVectorImpl<ImportedModule> &Loaded, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n // ...\n while (true) {\n // ...\n case IMPORTS: {\n // ...\n while (Idx < N) {\n // ...\n if (ImportedFile.empty()) {\n // It is deprecated for C++20 Named modules to use the implicitly\n // paths.\n if (IsImportingStdCXXModule)\n Diag(clang::diag::warn_reading_std_cxx_module_by_implicit_paths) << ImportedName;"}} | ||
}, | }, | ||
["warn_readonly_property"]={ | ["warn_readonly_property"]={ | ||
Line 5,607: | Line 5,607: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{V,1651,"/// DiagnosePropertyMismatch - Compares two properties for their\n/// attributes and types and warns on a variety of inconsistencies.\n///\nvoid Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property, ObjCPropertyDecl *SuperProperty, const IdentifierInfo *inheritedName, bool OverridingProtocolProperty) {\n // We allow readonly properties without an explicit ownership\n // (assign/unsafe_unretained/weak/retain/strong/copy) in super class\n // to be overridden by a property with any explicit ownership in the subclass.\n if (!OverridingProtocolProperty && !getOwnershipRule(SAttr) && getOwnershipRule(CAttr))\n else {\n if ((CAttr & ObjCPropertyAttribute::kind_readonly) && (SAttr & ObjCPropertyAttribute::kind_readwrite))\n Diag(Property->getLocation(), diag::warn_readonly_property) << Property->getDeclName() << inheritedName;"}}, | [j]={{V,1651,"/// DiagnosePropertyMismatch - Compares two properties for their\n/// attributes and types and warns on a variety of inconsistencies.\n///\nvoid Sema::DiagnosePropertyMismatch(ObjCPropertyDecl *Property, ObjCPropertyDecl *SuperProperty, const IdentifierInfo *inheritedName, bool OverridingProtocolProperty) {\n // ...\n // We allow readonly properties without an explicit ownership\n // (assign/unsafe_unretained/weak/retain/strong/copy) in super class\n // to be overridden by a property with any explicit ownership in the subclass.\n if (!OverridingProtocolProperty && !getOwnershipRule(SAttr) && getOwnershipRule(CAttr))\n // ...\n else {\n if ((CAttr & ObjCPropertyAttribute::kind_readonly) && (SAttr & ObjCPropertyAttribute::kind_readwrite))\n Diag(Property->getLocation(), diag::warn_readonly_property) << Property->getDeclName() << inheritedName;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property-3.m"]={"clang/test/SemaObjC/property-3.m:12:25: warning: attribute \'readonly\' of property \'d1\' restricts attribute \'readwrite\' of property inherited from \'I\' [-Wproperty-attribute-mismatch]"} | ["clang/test/SemaObjC/property-3.m"]={"clang/test/SemaObjC/property-3.m:12:25: warning: attribute \'readonly\' of property \'d1\' restricts attribute \'readwrite\' of property inherited from \'I\' [-Wproperty-attribute-mismatch]"} | ||
Line 5,624: | Line 5,624: | ||
[h]=q, | [h]=q, | ||
[i]={"1bd844da8057",1241823756,"Warn if forward class is used as a receiver.","Warn if forward class is used as a receiver."}, | [i]={"1bd844da8057",1241823756,"Warn if forward class is used as a receiver.","Warn if forward class is used as a receiver."}, | ||
[j]={{cb,2664,"/// \\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 // Find the method we are messaging.\n if (!Method) {\n if (RequireCompleteType(Loc, Context.getObjCInterfaceType(Class), (getLangOpts().ObjCAutoRefCount ? diag::err_arc_receiver_forward_class : diag::warn_receiver_forward_class), TypeRange)) {"}}, | [j]={{cb,2664,"/// \\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 // ...\n // Find the method we are messaging.\n if (!Method) {\n // ...\n if (RequireCompleteType(Loc, Context.getObjCInterfaceType(Class), (getLangOpts().ObjCAutoRefCount ? diag::err_arc_receiver_forward_class : diag::warn_receiver_forward_class), TypeRange)) {"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/forward-class-receiver.m"]={"clang/test/SemaObjC/forward-class-receiver.m:12:4: warning: receiver \'NotKnown\' is a forward class and corresponding @interface may not exist [-Wreceiver-forward-class]"} | ["clang/test/SemaObjC/forward-class-receiver.m"]={"clang/test/SemaObjC/forward-class-receiver.m:12:4: warning: receiver \'NotKnown\' is a forward class and corresponding @interface may not exist [-Wreceiver-forward-class]"} | ||
Line 5,642: | Line 5,642: | ||
[h]="ARC Semantic Issue", | [h]="ARC Semantic Issue", | ||
[i]={"c934de67e0c6",1328230964,"objc: Issue diagnostic when receiver type is a forward class declaration and","objc: Issue diagnostic when receiver type is a forward class declaration and"}, | [i]={"c934de67e0c6",1328230964,"objc: Issue diagnostic when receiver type is a forward class declaration and","objc: Issue diagnostic when receiver type is a forward class declaration and"}, | ||
[j]={{cb,3067,"/// 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) {\n if (receiverIsIdLike || ReceiverType->isBlockPointerType() || (Receiver && Context.isObjCNSObjectType(Receiver->getType()))) {\n } else if (ReceiverType->isObjCClassOrClassKindOfType() || ReceiverType->isObjCQualifiedClassType()) {\n } else {\n // We allow sending a message to a qualified ID (\"id<foo>\"), which is ok as\n // long as one of the protocols implements the selector (if not, warn).\n // And as long as message is not deprecated/unavailable (warn if it is).\n if (const ObjCObjectPointerType *QIdTy = ReceiverType->getAsObjCQualifiedIdType()) {\n } else if (const ObjCObjectPointerType *OCIType = ReceiverType->getAsObjCInterfacePointerType()) {\n if (RequireCompleteType(Loc, OCIType->getPointeeType(), getLangOpts().ObjCAutoRefCount ? diag::err_arc_receiver_forward_instance : diag::warn_receiver_forward_instance, RecRange)) {"}}, | [j]={{cb,3067,"/// 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 // ...\n if (!Method) {\n // ...\n if (receiverIsIdLike || ReceiverType->isBlockPointerType() || (Receiver && Context.isObjCNSObjectType(Receiver->getType()))) {\n // ...\n } else if (ReceiverType->isObjCClassOrClassKindOfType() || ReceiverType->isObjCQualifiedClassType()) {\n // ...\n } else {\n // ...\n // We allow sending a message to a qualified ID (\"id<foo>\"), which is ok as\n // long as one of the protocols implements the selector (if not, warn).\n // And as long as message is not deprecated/unavailable (warn if it is).\n if (const ObjCObjectPointerType *QIdTy = ReceiverType->getAsObjCQualifiedIdType()) {\n // ...\n } else if (const ObjCObjectPointerType *OCIType = ReceiverType->getAsObjCInterfacePointerType()) {\n // ...\n if (RequireCompleteType(Loc, OCIType->getPointeeType(), getLangOpts().ObjCAutoRefCount ? diag::err_arc_receiver_forward_instance : diag::warn_receiver_forward_instance, RecRange)) {"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/receiver-forward-class.m"]={"clang/test/SemaObjC/receiver-forward-class.m:15:11: warning: receiver type \'A\' for instance message is a forward declaration [-Wreceiver-forward-class]"} | ["clang/test/SemaObjC/receiver-forward-class.m"]={"clang/test/SemaObjC/receiver-forward-class.m:15:11: warning: receiver type \'A\' for instance message is a forward declaration [-Wreceiver-forward-class]"} | ||
Line 5,659: | Line 5,659: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{H,4296,"/// 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 (Old->isImplicit() && (BuiltinID = Old->getBuiltinID())) {\n // If it\'s actually a library-defined builtin function like \'malloc\'\n // or \'printf\', just warn about the incompatible redeclaration.\n if (Context.BuiltinInfo.isPredefinedLibFunction(BuiltinID)) {\n Diag(New->getLocation(), diag::warn_redecl_library_builtin) << New;"}}, | [j]={{H,4296,"/// 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 // ...\n if (Old->isImplicit() && (BuiltinID = Old->getBuiltinID())) {\n // If it\'s actually a library-defined builtin function like \'malloc\'\n // or \'printf\', just warn about the incompatible redeclaration.\n if (Context.BuiltinInfo.isPredefinedLibFunction(BuiltinID)) {\n Diag(New->getLocation(), diag::warn_redecl_library_builtin) << New;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/pragma_poison.c"]={"clang/test/Preprocessor/pragma_poison.c:4:1: warning: incompatible redeclaration of library function \'rindex\' [-Wincompatible-library-redeclaration]"} | ["clang/test/Preprocessor/pragma_poison.c"]={"clang/test/Preprocessor/pragma_poison.c:4:1: warning: incompatible redeclaration of library function \'rindex\' [-Wincompatible-library-redeclaration]"} | ||
Line 5,676: | Line 5,676: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{H,7147,"static void checkDLLAttributeRedeclaration(Sema &S, NamedDecl *OldDecl, NamedDecl *NewDecl, bool IsSpecialization, bool IsDefinition) {\n if (OldImportAttr && !HasNewAttr && (!IsInline || (IsMicrosoftABI && IsTemplate)) && !IsStaticDataMember && !NewDecl->isLocalExternDecl() && !IsQualifiedFriend) {\n if (IsMicrosoftABI && IsDefinition) {\n } else if (IsMicrosoftABI && IsSpecialization) {\n } else {\n S.Diag(NewDecl->getLocation(), diag::warn_redeclaration_without_attribute_prev_attribute_ignored) << NewDecl << OldImportAttr;"}}, | [j]={{H,7147,"static void checkDLLAttributeRedeclaration(Sema &S, NamedDecl *OldDecl, NamedDecl *NewDecl, bool IsSpecialization, bool IsDefinition) {\n // ...\n if (OldImportAttr && !HasNewAttr && (!IsInline || (IsMicrosoftABI && IsTemplate)) && !IsStaticDataMember && !NewDecl->isLocalExternDecl() && !IsQualifiedFriend) {\n if (IsMicrosoftABI && IsDefinition) {\n // ...\n } else if (IsMicrosoftABI && IsSpecialization) {\n // ...\n } else {\n S.Diag(NewDecl->getLocation(), diag::warn_redeclaration_without_attribute_prev_attribute_ignored) << NewDecl << OldImportAttr;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/dllimport.c"]={"clang/test/Sema/dllimport.c:108:34: warning: \'GlobalRedecl3\' redeclared without \'dllimport\' attribute: previous \'dllimport\' ignored [-Winconsistent-dllimport]","clang/test/Sema/dllimport.c:180:28: warning: \'redecl2\' redeclared without \'dllimport\' attribute: previous \'dllimport\' ignored [-Winconsistent-dllimport]"} | ["clang/test/Sema/dllimport.c"]={"clang/test/Sema/dllimport.c:108:34: warning: \'GlobalRedecl3\' redeclared without \'dllimport\' attribute: previous \'dllimport\' ignored [-Winconsistent-dllimport]","clang/test/Sema/dllimport.c:180:28: warning: \'redecl2\' redeclared without \'dllimport\' attribute: previous \'dllimport\' ignored [-Winconsistent-dllimport]"} | ||
Line 5,693: | Line 5,693: | ||
[h]=q, | [h]=q, | ||
[i]={"eebc4af0ed2f",1464175962,"[ms][dll] #26935 Defining a dllimport function should cause it to be exported","[ms][dll] #26935 Defining a dllimport function should cause it to be exported"}, | [i]={"eebc4af0ed2f",1464175962,"[ms][dll] #26935 Defining a dllimport function should cause it to be exported","[ms][dll] #26935 Defining a dllimport function should cause it to be exported"}, | ||
[j]={{H,7135,"static void checkDLLAttributeRedeclaration(Sema &S, NamedDecl *OldDecl, NamedDecl *NewDecl, bool IsSpecialization, bool IsDefinition) {\n if (OldImportAttr && !HasNewAttr && (!IsInline || (IsMicrosoftABI && IsTemplate)) && !IsStaticDataMember && !NewDecl->isLocalExternDecl() && !IsQualifiedFriend) {\n if (IsMicrosoftABI && IsDefinition) {\n if (IsSpecialization) {\n } else {\n S.Diag(NewDecl->getLocation(), diag::warn_redeclaration_without_import_attribute) << NewDecl;"}}, | [j]={{H,7135,"static void checkDLLAttributeRedeclaration(Sema &S, NamedDecl *OldDecl, NamedDecl *NewDecl, bool IsSpecialization, bool IsDefinition) {\n // ...\n if (OldImportAttr && !HasNewAttr && (!IsInline || (IsMicrosoftABI && IsTemplate)) && !IsStaticDataMember && !NewDecl->isLocalExternDecl() && !IsQualifiedFriend) {\n if (IsMicrosoftABI && IsDefinition) {\n if (IsSpecialization) {\n // ...\n } else {\n S.Diag(NewDecl->getLocation(), diag::warn_redeclaration_without_import_attribute) << NewDecl;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGen/flip-dllimport.c"]={"clang/test/CodeGen/flip-dllimport.c:7:6: warning: \'f\' redeclared without \'dllimport\' attribute: \'dllexport\' attribute added [-Winconsistent-dllimport]"} | ["clang/test/CodeGen/flip-dllimport.c"]={"clang/test/CodeGen/flip-dllimport.c:7:6: warning: \'f\' redeclared without \'dllimport\' attribute: \'dllexport\' attribute added [-Winconsistent-dllimport]"} | ||
Line 5,710: | Line 5,710: | ||
[h]=q, | [h]=q, | ||
[i]={"7572e58b66bc",1437066413,"Disable #pragma redefine_extname for C++ code as it does not make sense in such a context.","Disable #pragma redefine_extname for C++ code as it does not make sense in such a context."}, | [i]={"7572e58b66bc",1437066413,"Disable #pragma redefine_extname for C++ code as it does not make sense in such a context.","Disable #pragma redefine_extname for C++ code as it does not make sense in such a context."}, | ||
[j]={{H,7985,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n // Handle GNU asm-label extension (encoded as an attribute).\n if (Expr *E = (Expr *)D.getAsmLabel()) {\n } else if (!ExtnameUndeclaredIdentifiers.empty()) {\n if (I != ExtnameUndeclaredIdentifiers.end()) {\n if (isDeclExternC(NewVD)) {\n } else\n Diag(NewVD->getLocation(), diag::warn_redefine_extname_not_applied) << /*Variable*/ 1 << NewVD;"},{H,10102,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n // Handle GNU asm-label extension (encoded as an attribute).\n if (Expr *E = (Expr *)D.getAsmLabel()) {\n } else if (!ExtnameUndeclaredIdentifiers.empty()) {\n if (I != ExtnameUndeclaredIdentifiers.end()) {\n if (isDeclExternC(NewFD)) {\n } else\n Diag(NewFD->getLocation(), diag::warn_redefine_extname_not_applied) << /*Variable*/ 0 << NewFD;"},{H,19979,"void Sema::ActOnPragmaRedefineExtname(IdentifierInfo *Name, IdentifierInfo *AliasName, SourceLocation PragmaLoc, SourceLocation NameLoc, SourceLocation AliasNameLoc) {\n // If a declaration that:\n // 1) declares a function or a variable\n // 2) has external linkage\n // already exists, add a label attribute to it.\n if (PrevDecl && (isa<FunctionDecl>(PrevDecl) || isa<VarDecl>(PrevDecl))) {\n if (isDeclExternC(PrevDecl))\n else\n Diag(PrevDecl->getLocation(), diag::warn_redefine_extname_not_applied) << /*Variable*/ (isa<FunctionDecl>(PrevDecl) ? 0 : 1) << PrevDecl;"}}, | [j]={{H,7985,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n // ...\n // Handle GNU asm-label extension (encoded as an attribute).\n if (Expr *E = (Expr *)D.getAsmLabel()) {\n // ...\n } else if (!ExtnameUndeclaredIdentifiers.empty()) {\n // ...\n if (I != ExtnameUndeclaredIdentifiers.end()) {\n if (isDeclExternC(NewVD)) {\n // ...\n } else\n Diag(NewVD->getLocation(), diag::warn_redefine_extname_not_applied) << /*Variable*/ 1 << NewVD;"},{H,10102,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n // ...\n // Handle GNU asm-label extension (encoded as an attribute).\n if (Expr *E = (Expr *)D.getAsmLabel()) {\n // ...\n } else if (!ExtnameUndeclaredIdentifiers.empty()) {\n // ...\n if (I != ExtnameUndeclaredIdentifiers.end()) {\n if (isDeclExternC(NewFD)) {\n // ...\n } else\n Diag(NewFD->getLocation(), diag::warn_redefine_extname_not_applied) << /*Variable*/ 0 << NewFD;"},{H,19979,"void Sema::ActOnPragmaRedefineExtname(IdentifierInfo *Name, IdentifierInfo *AliasName, SourceLocation PragmaLoc, SourceLocation NameLoc, SourceLocation AliasNameLoc) {\n // ...\n // If a declaration that:\n // 1) declares a function or a variable\n // 2) has external linkage\n // already exists, add a label attribute to it.\n if (PrevDecl && (isa<FunctionDecl>(PrevDecl) || isa<VarDecl>(PrevDecl))) {\n if (isDeclExternC(PrevDecl))\n // ...\n else\n Diag(PrevDecl->getLocation(), diag::warn_redefine_extname_not_applied) << /*Variable*/ (isa<FunctionDecl>(PrevDecl) ? 0 : 1) << PrevDecl;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/redefine_extname.cpp"]={"clang/test/SemaCXX/redefine_extname.cpp:6:12: warning: #pragma redefine_extname is applicable to external C declarations only; not applied to function \'foo_cpp\' [-Wpragmas]"} | ["clang/test/SemaCXX/redefine_extname.cpp"]={"clang/test/SemaCXX/redefine_extname.cpp:6:12: warning: #pragma redefine_extname is applicable to external C declarations only; not applied to function \'foo_cpp\' [-Wpragmas]"} | ||
Line 5,727: | Line 5,727: | ||
[h]=q, | [h]=q, | ||
[i]={"051390fffab6",1330452731,"Correctly track tags and enum members defined in the prototype of a function, and ensure they are pr...","Correctly track tags and enum members defined in the prototype of a function, and ensure they are properly scoped."}, | [i]={"051390fffab6",1330452731,"Correctly track tags and enum members defined in the prototype of a function, and ensure they are pr...","Correctly track tags and enum members defined in the prototype of a function, and ensure they are properly scoped."}, | ||
[j]={{H,17367,"/// 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 if (SkipBody && !hasVisibleDefinition(Def, &Hidden)) {\n } else if (!IsExplicitSpecializationAfterInstantiation) {\n // A redeclaration in function prototype scope in C isn\'t\n // visible elsewhere, so merely issue a warning.\n if (!getLangOpts().CPlusPlus && S->containedInPrototypeScope())\n Diag(NameLoc, diag::warn_redefinition_in_param_list) << Name;"}}, | [j]={{H,17367,"/// 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 // ...\n if (!Previous.empty()) {\n // ...\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 // ...\n if (!Invalid) {\n // ...\n // Diagnose attempts to redefine a tag.\n if (TUK == TUK_Definition) {\n if (NamedDecl *Def = PrevTagDecl->getDefinition()) {\n // ...\n if (SkipBody && !hasVisibleDefinition(Def, &Hidden)) {\n // ...\n } else if (!IsExplicitSpecializationAfterInstantiation) {\n // A redeclaration in function prototype scope in C isn\'t\n // visible elsewhere, so merely issue a warning.\n if (!getLangOpts().CPlusPlus && S->containedInPrototypeScope())\n Diag(NameLoc, diag::warn_redefinition_in_param_list) << Name;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/decl-in-prototype.c"]={"clang/test/Sema/decl-in-prototype.c:26:26: warning: redefinition of \'b\' will not be visible outside of this function [-Wvisibility]","clang/test/Sema/decl-in-prototype.c:34:27: warning: redefinition of \'ab\' will not be visible outside of this function [-Wvisibility]","clang/test/Sema/decl-in-prototype.c:34:51: warning: redefinition of \'ab\' will not be visible outside of this function [-Wvisibility]"} | ["clang/test/Sema/decl-in-prototype.c"]={"clang/test/Sema/decl-in-prototype.c:26:26: warning: redefinition of \'b\' will not be visible outside of this function [-Wvisibility]","clang/test/Sema/decl-in-prototype.c:34:27: warning: redefinition of \'ab\' will not be visible outside of this function [-Wvisibility]","clang/test/Sema/decl-in-prototype.c:34:51: warning: redefinition of \'ab\' will not be visible outside of this function [-Wvisibility]"} | ||
Line 5,745: | Line 5,745: | ||
[h]=q, | [h]=q, | ||
[i]={"4e7c9628917a",1375824714,"Add a new warning to -Wloop-analysis to detect suspicious increments or","Add a new warning to -Wloop-analysis to detect suspicious increments or"}, | [i]={"4e7c9628917a",1375824714,"Add a new warning to -Wloop-analysis to detect suspicious increments or","Add a new warning to -Wloop-analysis to detect suspicious increments or"}, | ||
[j]={{U,2082,"// Emit a warning when a loop increment/decrement appears twice per loop\n// iteration. The conditions which trigger this warning are:\n// 1) The last statement in the loop body and the third expression in the\n// for loop are both increment or both decrement of the same variable\n// 2) No continue statements in the loop body.\nvoid CheckForRedundantIteration(Sema &S, Expr *Third, Stmt *Body) {\n if (S.Diags.isIgnored(diag::warn_redundant_loop_iteration, Third->getBeginLoc()))"},{U,2105,"// Emit a warning when a loop increment/decrement appears twice per loop\n// iteration. The conditions which trigger this warning are:\n// 1) The last statement in the loop body and the third expression in the\n// for loop are both increment or both decrement of the same variable\n// 2) No continue statements in the loop body.\nvoid CheckForRedundantIteration(Sema &S, Expr *Third, Stmt *Body) {\n S.Diag(LastDRE->getLocation(), diag::warn_redundant_loop_iteration) << LastDRE->getDecl() << LastIncrement;"}}, | [j]={{U,2082,"// Emit a warning when a loop increment/decrement appears twice per loop\n// iteration. The conditions which trigger this warning are:\n// 1) The last statement in the loop body and the third expression in the\n// for loop are both increment or both decrement of the same variable\n// 2) No continue statements in the loop body.\nvoid CheckForRedundantIteration(Sema &S, Expr *Third, Stmt *Body) {\n // ...\n if (S.Diags.isIgnored(diag::warn_redundant_loop_iteration, Third->getBeginLoc()))"},{U,2105,"// Emit a warning when a loop increment/decrement appears twice per loop\n// iteration. The conditions which trigger this warning are:\n// 1) The last statement in the loop body and the third expression in the\n// for loop are both increment or both decrement of the same variable\n// 2) No continue statements in the loop body.\nvoid CheckForRedundantIteration(Sema &S, Expr *Third, Stmt *Body) {\n // ...\n S.Diag(LastDRE->getLocation(), diag::warn_redundant_loop_iteration) << LastDRE->getDecl() << LastIncrement;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-loop-analysis.cpp"]={"clang/test/SemaCXX/warn-loop-analysis.cpp:160:5: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:164:7: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:168:5: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:171:7: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:176:5: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:180:7: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:184:5: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:187:7: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:209:5: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:223:5: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:227:7: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:231:5: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:234:7: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:239:5: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:243:7: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:247:5: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:250:7: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:272:5: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]"} | ["clang/test/SemaCXX/warn-loop-analysis.cpp"]={"clang/test/SemaCXX/warn-loop-analysis.cpp:160:5: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:164:7: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:168:5: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:171:7: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:176:5: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:180:7: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:184:5: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:187:7: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:209:5: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:223:5: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:227:7: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:231:5: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:234:7: warning: variable \'i\' is incremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:239:5: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:243:7: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:247:5: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:250:7: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:272:5: warning: variable \'i\' is decremented both in the loop header and in the loop body [-Wfor-loop-analysis]"} | ||
Line 5,763: | Line 5,763: | ||
[h]=q, | [h]=q, | ||
[i]={"ac3eca536d3d",1430272337,Dc,Dc}, | [i]={"ac3eca536d3d",1430272337,Dc,Dc}, | ||
[j]={{Bb,8403,"/// Provide warnings when std::move is used on construction.\nstatic void CheckMoveOnConstruction(Sema &S, const Expr *InitExpr, bool IsReturnStmt) {\n if (IsReturnStmt) {\n // If we\'re returning a function parameter, copy elision\n // is not possible.\n if (isa<ParmVarDecl>(VD))\n DiagID = diag::warn_redundant_move_on_return;"}}, | [j]={{Bb,8403,"/// Provide warnings when std::move is used on construction.\nstatic void CheckMoveOnConstruction(Sema &S, const Expr *InitExpr, bool IsReturnStmt) {\n // ...\n if (IsReturnStmt) {\n // ...\n // If we\'re returning a function parameter, copy elision\n // is not possible.\n if (isa<ParmVarDecl>(VD))\n DiagID = diag::warn_redundant_move_on_return;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-redundant-move.cpp"]={"clang/test/SemaCXX/warn-redundant-move.cpp:82:10: warning: redundant move in return statement [-Wredundant-move]","clang/test/SemaCXX/warn-redundant-move.cpp:96:12: warning: redundant move in return statement [-Wredundant-move]"} | ["clang/test/SemaCXX/warn-redundant-move.cpp"]={"clang/test/SemaCXX/warn-redundant-move.cpp:82:10: warning: redundant move in return statement [-Wredundant-move]","clang/test/SemaCXX/warn-redundant-move.cpp:96:12: warning: redundant move in return statement [-Wredundant-move]"} | ||
Line 5,781: | Line 5,781: | ||
[h]=q, | [h]=q, | ||
[i]={"ac63d63543ca",1506729445,"Add a \"vexing parse\" warning for ambiguity between a variable declaration and a","Add a \"vexing parse\" warning for ambiguity between a variable declaration and a"}, | [i]={"ac63d63543ca",1506729445,"Add a \"vexing parse\" warning for ambiguity between a variable declaration and a","Add a \"vexing parse\" warning for ambiguity between a variable declaration and a"}, | ||
[j]={{T,4016,"/// Produce an appropriate diagnostic for a declarator with top-level\n/// parentheses.\nstatic void warnAboutRedundantParens(Sema &S, Declarator &D, QualType T) {\n if (!CouldBeTemporaryObject) {\n S.Diag(Paren.Loc, diag::warn_redundant_parens_around_declarator) << ParenRange << FixItHint::CreateRemoval(Paren.Loc) << FixItHint::CreateRemoval(Paren.EndLoc);"}}, | [j]={{T,4016,"/// Produce an appropriate diagnostic for a declarator with top-level\n/// parentheses.\nstatic void warnAboutRedundantParens(Sema &S, Declarator &D, QualType T) {\n // ...\n if (!CouldBeTemporaryObject) {\n // ...\n S.Diag(Paren.Loc, diag::warn_redundant_parens_around_declarator) << ParenRange << FixItHint::CreateRemoval(Paren.Loc) << FixItHint::CreateRemoval(Paren.EndLoc);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/cxx-decl.cpp"]={"clang/test/Parser/cxx-decl.cpp:88:3: warning: redundant parentheses surrounding declarator [-Wredundant-parens]","clang/test/Parser/cxx-decl.cpp:270:5: warning: redundant parentheses surrounding declarator [-Wredundant-parens]","clang/test/Parser/cxx-decl.cpp:271:5: warning: redundant parentheses surrounding declarator [-Wredundant-parens]","clang/test/Parser/cxx-decl.cpp:274:5: warning: redundant parentheses surrounding declarator [-Wredundant-parens]","clang/test/Parser/cxx-decl.cpp:279:6: warning: redundant parentheses surrounding declarator [-Wredundant-parens]"} | ["clang/test/Parser/cxx-decl.cpp"]={"clang/test/Parser/cxx-decl.cpp:88:3: warning: redundant parentheses surrounding declarator [-Wredundant-parens]","clang/test/Parser/cxx-decl.cpp:270:5: warning: redundant parentheses surrounding declarator [-Wredundant-parens]","clang/test/Parser/cxx-decl.cpp:271:5: warning: redundant parentheses surrounding declarator [-Wredundant-parens]","clang/test/Parser/cxx-decl.cpp:274:5: warning: redundant parentheses surrounding declarator [-Wredundant-parens]","clang/test/Parser/cxx-decl.cpp:279:6: warning: redundant parentheses surrounding declarator [-Wredundant-parens]"} | ||
Line 5,798: | Line 5,798: | ||
[h]=q, | [h]=q, | ||
[i]={"d799a2b3b91f",1345452742,"Better wording for reference self-initialization warning.","Better wording for reference self-initialization warning."}, | [i]={"d799a2b3b91f",1345452742,"Better wording for reference self-initialization warning.","Better wording for reference self-initialization warning."}, | ||
[j]={{db,3859,"class UninitializedFieldVisitor : public EvaluatedExprVisitor<UninitializedFieldVisitor> {\n void HandleMemberExpr(MemberExpr *ME, bool CheckReferenceOnly, bool AddressOf) {\n unsigned diag = IsReference ? diag::warn_reference_field_is_uninit : diag::warn_field_is_uninit;"}}, | [j]={{db,3859,"class UninitializedFieldVisitor : public EvaluatedExprVisitor<UninitializedFieldVisitor> {\n // ...\n void HandleMemberExpr(MemberExpr *ME, bool CheckReferenceOnly, bool AddressOf) {\n // ...\n unsigned diag = IsReference ? diag::warn_reference_field_is_uninit : diag::warn_field_is_uninit;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/uninitialized.cpp"]={"clang/test/SemaCXX/uninitialized.cpp:840:13: warning: reference \'a\' is not yet bound to a value when used here [-Wuninitialized]","clang/test/SemaCXX/uninitialized.cpp:853:10: warning: reference \'b\' is not yet bound to a value when used here [-Wuninitialized]","clang/test/SemaCXX/uninitialized.cpp:855:14: warning: reference \'c\' is not yet bound to a value when used here [-Wuninitialized]","clang/test/SemaCXX/uninitialized.cpp:1086:9: warning: reference \'c\' is not yet bound to a value when used here [-Wuninitialized]","clang/test/SemaCXX/uninitialized.cpp:1087:9: warning: reference \'c\' is not yet bound to a value when used here [-Wuninitialized]"} | ["clang/test/SemaCXX/uninitialized.cpp"]={"clang/test/SemaCXX/uninitialized.cpp:840:13: warning: reference \'a\' is not yet bound to a value when used here [-Wuninitialized]","clang/test/SemaCXX/uninitialized.cpp:853:10: warning: reference \'b\' is not yet bound to a value when used here [-Wuninitialized]","clang/test/SemaCXX/uninitialized.cpp:855:14: warning: reference \'c\' is not yet bound to a value when used here [-Wuninitialized]","clang/test/SemaCXX/uninitialized.cpp:1086:9: warning: reference \'c\' is not yet bound to a value when used here [-Wuninitialized]","clang/test/SemaCXX/uninitialized.cpp:1087:9: warning: reference \'c\' is not yet bound to a value when used here [-Wuninitialized]"} | ||
Line 5,813: | Line 5,813: | ||
[h]=q, | [h]=q, | ||
[i]={"f356419bf57b",1272303169,"Refactor Objective-C @catch parameter checking by detangling it from","Refactor Objective-C @catch parameter checking by detangling it from"}, | [i]={"f356419bf57b",1272303169,"Refactor Objective-C @catch parameter checking by detangling it from","Refactor Objective-C @catch parameter checking by detangling it from"}, | ||
[j]={{P,5193,"Decl *Sema::ActOnObjCExceptionDecl(Scope *S, Declarator &D) {\n // We allow the \"register\" storage class on exception variables because\n // GCC did, but we drop it completely. Any other storage class is an error.\n if (DS.getStorageClassSpec() == DeclSpec::SCS_register) {\n Diag(DS.getStorageClassSpecLoc(), diag::warn_register_objc_catch_parm) << FixItHint::CreateRemoval(SourceRange(DS.getStorageClassSpecLoc()));"}} | [j]={{P,5193,"Decl *Sema::ActOnObjCExceptionDecl(Scope *S, Declarator &D) {\n // ...\n // We allow the \"register\" storage class on exception variables because\n // GCC did, but we drop it completely. Any other storage class is an error.\n if (DS.getStorageClassSpec() == DeclSpec::SCS_register) {\n Diag(DS.getStorageClassSpecLoc(), diag::warn_register_objc_catch_parm) << FixItHint::CreateRemoval(SourceRange(DS.getStorageClassSpecLoc()));"}} | ||
}, | }, | ||
["warn_reinterpret_different_from_static"]={ | ["warn_reinterpret_different_from_static"]={ | ||
Line 5,827: | Line 5,827: | ||
[h]=q, | [h]=q, | ||
[i]={"cda80833090b",1363921094,"Warn about attempts to reinterpret_cast between two types that are","Warn about attempts to reinterpret_cast between two types that are"}, | [i]={"cda80833090b",1363921094,"Warn about attempts to reinterpret_cast between two types that are","Warn about attempts to reinterpret_cast between two types that are"}, | ||
[j]={{Ob,1073,"/// Check that a reinterpret_cast\\<DestType\\>(SrcExpr) is not used as upcast\n/// or downcast between respective pointers or references.\nstatic void DiagnoseReinterpretUpDownCast(Sema &Self, const Expr *SrcExpr, QualType DestType, SourceRange OpRange) {\n Self.Diag(BeginLoc, diag::warn_reinterpret_different_from_static) << DerivedType << BaseType << !VirtualBase << int(ReinterpretKind) << OpRange;"}}, | [j]={{Ob,1073,"/// Check that a reinterpret_cast\\<DestType\\>(SrcExpr) is not used as upcast\n/// or downcast between respective pointers or references.\nstatic void DiagnoseReinterpretUpDownCast(Sema &Self, const Expr *SrcExpr, QualType DestType, SourceRange OpRange) {\n // ...\n Self.Diag(BeginLoc, diag::warn_reinterpret_different_from_static) << DerivedType << BaseType << !VirtualBase << int(ReinterpretKind) << OpRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-reinterpret-base-class.cpp"]={"clang/test/SemaCXX/warn-reinterpret-base-class.cpp:123:10: warning: \'reinterpret_cast\' to class \'DVA *\' from its virtual base \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:128:10: warning: \'reinterpret_cast\' to class \'DDVA *\' from its virtual base \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:133:10: warning: \'reinterpret_cast\' to class \'DMA *\' from its virtual base \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:156:9: warning: \'reinterpret_cast\' to class \'DVA &\' from its virtual base \'A\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:161:9: warning: \'reinterpret_cast\' to class \'DDVA &\' from its virtual base \'A\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:166:9: warning: \'reinterpret_cast\' to class \'DMA &\' from its virtual base \'A\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:186:10: warning: \'reinterpret_cast\' from class \'DVA *\' to its virtual base \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:191:10: warning: \'reinterpret_cast\' from class \'DDVA *\' to its virtual base \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:196:10: warning: \'reinterpret_cast\' from class \'DDVA *\' to its virtual base \'DA *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:201:10: warning: \'reinterpret_cast\' from class \'DMA *\' to its virtual base \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:206:10: warning: \'reinterpret_cast\' from class \'DMA *\' to its virtual base \'DA *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:226:9: warning: \'reinterpret_cast\' from class \'DVA\' to its virtual base \'A &\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:231:9: warning: \'reinterpret_cast\' from class \'DDVA\' to its virtual base \'A &\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:236:9: warning: \'reinterpret_cast\' from class \'DDVA\' to its virtual base \'DA &\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:241:9: warning: \'reinterpret_cast\' from class \'DMA\' to its virtual base \'A &\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:246:9: warning: \'reinterpret_cast\' from class \'DMA\' to its virtual base \'DA &\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:273:9: warning: \'reinterpret_cast\' to class \'F *\' from its base at non-zero offset \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:278:9: warning: \'reinterpret_cast\' to class \'G *\' from its base at non-zero offset \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:284:9: warning: \'reinterpret_cast\' to class \'I *\' from its virtual base \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:291:9: warning: \'reinterpret_cast\' to class \'I *\' from its virtual base \'F *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:299:9: warning: \'reinterpret_cast\' to class \'H *\' from its base at non-zero offset \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:303:9: warning: \'reinterpret_cast\' to class \'K\' (aka \'const F *\') from its base at non-zero offset \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:310:9: warning: \'reinterpret_cast\' from class \'F *\' to its base at non-zero offset \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:316:9: warning: \'reinterpret_cast\' from class \'G *\' to its base at non-zero offset \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:326:9: warning: \'reinterpret_cast\' from class \'H *\' to its base at non-zero offset \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:330:9: warning: \'reinterpret_cast\' from class \'I *\' to its virtual base \'F *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:335:9: warning: \'reinterpret_cast\' from class \'I *\' to its virtual base \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]"} | ["clang/test/SemaCXX/warn-reinterpret-base-class.cpp"]={"clang/test/SemaCXX/warn-reinterpret-base-class.cpp:123:10: warning: \'reinterpret_cast\' to class \'DVA *\' from its virtual base \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:128:10: warning: \'reinterpret_cast\' to class \'DDVA *\' from its virtual base \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:133:10: warning: \'reinterpret_cast\' to class \'DMA *\' from its virtual base \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:156:9: warning: \'reinterpret_cast\' to class \'DVA &\' from its virtual base \'A\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:161:9: warning: \'reinterpret_cast\' to class \'DDVA &\' from its virtual base \'A\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:166:9: warning: \'reinterpret_cast\' to class \'DMA &\' from its virtual base \'A\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:186:10: warning: \'reinterpret_cast\' from class \'DVA *\' to its virtual base \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:191:10: warning: \'reinterpret_cast\' from class \'DDVA *\' to its virtual base \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:196:10: warning: \'reinterpret_cast\' from class \'DDVA *\' to its virtual base \'DA *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:201:10: warning: \'reinterpret_cast\' from class \'DMA *\' to its virtual base \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:206:10: warning: \'reinterpret_cast\' from class \'DMA *\' to its virtual base \'DA *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:226:9: warning: \'reinterpret_cast\' from class \'DVA\' to its virtual base \'A &\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:231:9: warning: \'reinterpret_cast\' from class \'DDVA\' to its virtual base \'A &\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:236:9: warning: \'reinterpret_cast\' from class \'DDVA\' to its virtual base \'DA &\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:241:9: warning: \'reinterpret_cast\' from class \'DMA\' to its virtual base \'A &\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:246:9: warning: \'reinterpret_cast\' from class \'DMA\' to its virtual base \'DA &\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:273:9: warning: \'reinterpret_cast\' to class \'F *\' from its base at non-zero offset \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:278:9: warning: \'reinterpret_cast\' to class \'G *\' from its base at non-zero offset \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:284:9: warning: \'reinterpret_cast\' to class \'I *\' from its virtual base \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:291:9: warning: \'reinterpret_cast\' to class \'I *\' from its virtual base \'F *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:299:9: warning: \'reinterpret_cast\' to class \'H *\' from its base at non-zero offset \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:303:9: warning: \'reinterpret_cast\' to class \'K\' (aka \'const F *\') from its base at non-zero offset \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:310:9: warning: \'reinterpret_cast\' from class \'F *\' to its base at non-zero offset \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:316:9: warning: \'reinterpret_cast\' from class \'G *\' to its base at non-zero offset \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:326:9: warning: \'reinterpret_cast\' from class \'H *\' to its base at non-zero offset \'A *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:330:9: warning: \'reinterpret_cast\' from class \'I *\' to its virtual base \'F *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]","clang/test/SemaCXX/warn-reinterpret-base-class.cpp:335:9: warning: \'reinterpret_cast\' from class \'I *\' to its virtual base \'E *\' behaves differently from \'static_cast\' [-Wreinterpret-base-class]"} | ||
Line 5,842: | Line 5,842: | ||
[h]="Related Result Type Issue", | [h]="Related Result Type Issue", | ||
[i]={"33823727c80a",1307754570,"Implement Objective-C Related Result Type semantics.","Implement Objective-C Related Result Type semantics."}, | [i]={"33823727c80a",1307754570,"Implement Objective-C Related Result Type semantics.","Implement Objective-C Related Result Type semantics."}, | ||
[j]={{P,164,"void Sema::CheckObjCMethodOverride(ObjCMethodDecl *NewMethod, const ObjCMethodDecl *Overridden) {\n if (Overridden->hasRelatedResultType() && !NewMethod->hasRelatedResultType()) {\n if (CurrentClass) {\n Diag(NewMethod->getLocation(), diag::warn_related_result_type_compatibility_class) << Context.getObjCInterfaceType(CurrentClass) << ResultType << ResultTypeRange;"}}, | [j]={{P,164,"void Sema::CheckObjCMethodOverride(ObjCMethodDecl *NewMethod, const ObjCMethodDecl *Overridden) {\n if (Overridden->hasRelatedResultType() && !NewMethod->hasRelatedResultType()) {\n // ...\n if (CurrentClass) {\n Diag(NewMethod->getLocation(), diag::warn_related_result_type_compatibility_class) << Context.getObjCInterfaceType(CurrentClass) << ResultType << ResultTypeRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/related-result-type-inference.m"]={"clang/test/SemaObjC/related-result-type-inference.m:89:1: warning: method is expected to return an instance of its class type \'B\', but is declared to return \'Unrelated *\'","clang/test/SemaObjC/related-result-type-inference.m:96:1: warning: method is expected to return an instance of its class type \'C\', but is declared to return \'Unrelated *\'","clang/test/SemaObjC/related-result-type-inference.m:110:1: warning: method is expected to return an instance of its class type \'D\', but is declared to return \'Unrelated *\'","clang/test/SemaObjC/related-result-type-inference.m:114:1: warning: method is expected to return an instance of its class type \'D\', but is declared to return \'Unrelated *\'"} | ["clang/test/SemaObjC/related-result-type-inference.m"]={"clang/test/SemaObjC/related-result-type-inference.m:89:1: warning: method is expected to return an instance of its class type \'B\', but is declared to return \'Unrelated *\'","clang/test/SemaObjC/related-result-type-inference.m:96:1: warning: method is expected to return an instance of its class type \'C\', but is declared to return \'Unrelated *\'","clang/test/SemaObjC/related-result-type-inference.m:110:1: warning: method is expected to return an instance of its class type \'D\', but is declared to return \'Unrelated *\'","clang/test/SemaObjC/related-result-type-inference.m:114:1: warning: method is expected to return an instance of its class type \'D\', but is declared to return \'Unrelated *\'"} | ||
Line 5,857: | Line 5,857: | ||
[h]="Related Result Type Issue", | [h]="Related Result Type Issue", | ||
[i]={"33823727c80a",1307754570,"Implement Objective-C Related Result Type semantics.","Implement Objective-C Related Result Type semantics."}, | [i]={"33823727c80a",1307754570,"Implement Objective-C Related Result Type semantics.","Implement Objective-C Related Result Type semantics."}, | ||
[j]={{P,170,"void Sema::CheckObjCMethodOverride(ObjCMethodDecl *NewMethod, const ObjCMethodDecl *Overridden) {\n if (Overridden->hasRelatedResultType() && !NewMethod->hasRelatedResultType()) {\n if (CurrentClass) {\n } else {\n Diag(NewMethod->getLocation(), diag::warn_related_result_type_compatibility_protocol) << ResultType << ResultTypeRange;"}}, | [j]={{P,170,"void Sema::CheckObjCMethodOverride(ObjCMethodDecl *NewMethod, const ObjCMethodDecl *Overridden) {\n if (Overridden->hasRelatedResultType() && !NewMethod->hasRelatedResultType()) {\n // ...\n if (CurrentClass) {\n // ...\n } else {\n Diag(NewMethod->getLocation(), diag::warn_related_result_type_compatibility_protocol) << ResultType << ResultTypeRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/related-result-type-inference.m"]={"clang/test/SemaObjC/related-result-type-inference.m:125:1: warning: protocol method is expected to return an instance of the implementing class, but is declared to return \'int\'"} | ["clang/test/SemaObjC/related-result-type-inference.m"]={"clang/test/SemaObjC/related-result-type-inference.m:125:1: warning: protocol method is expected to return an instance of the implementing class, but is declared to return \'int\'"} | ||
Line 5,874: | Line 5,874: | ||
[h]=q, | [h]=q, | ||
[i]={"da7b27ff0b98",1447738809,yc,yc}, | [i]={"da7b27ff0b98",1447738809,yc,yc}, | ||
[j]={{A,11430,"static void DiagnoseBadDivideOrRemainderValues(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, bool IsDiv) {\n if (!RHS.get()->isValueDependent() && RHS.get()->EvaluateAsInt(RHSValue, S.Context) && RHSValue.Val.getInt() == 0)\n S.DiagRuntimeBehavior(Loc, RHS.get(), S.PDiag(diag::warn_remainder_division_by_zero) << IsDiv << RHS.get()->getSourceRange());"}}, | [j]={{A,11430,"static void DiagnoseBadDivideOrRemainderValues(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, bool IsDiv) {\n // ...\n if (!RHS.get()->isValueDependent() && RHS.get()->EvaluateAsInt(RHSValue, S.Context) && RHSValue.Val.getInt() == 0)\n S.DiagRuntimeBehavior(Loc, RHS.get(), S.PDiag(diag::warn_remainder_division_by_zero) << IsDiv << RHS.get()->getSourceRange());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Analysis/test-include.c"]={"clang/test/Analysis/test-include.c:12:13: warning: division by zero is undefined [-Wdivision-by-zero]","clang/test/Analysis/test-include.c:18:13: warning: division by zero is undefined [-Wdivision-by-zero]"} | ["clang/test/Analysis/test-include.c"]={"clang/test/Analysis/test-include.c:12:13: warning: division by zero is undefined [-Wdivision-by-zero]","clang/test/Analysis/test-include.c:18:13: warning: division by zero is undefined [-Wdivision-by-zero]"} | ||
Line 5,891: | Line 5,891: | ||
[h]=q, | [h]=q, | ||
[i]={wc,1567434909,Eb,Eb}, | [i]={wc,1567434909,Eb,Eb}, | ||
[j]={{H,3173,"static void diagnoseMissingConstinit(Sema &S, const VarDecl *InitDecl, const ConstInitAttr *CIAttr, bool AttrBeforeInit) {\n if (AttrBeforeInit) {\n } else {\n S.Diag(CIAttr->getLocation(), CIAttr->isConstinit() ? diag::err_constinit_added_too_late : diag::warn_require_const_init_added_too_late) << FixItHint::CreateRemoval(SourceRange(CIAttr->getLocation()));"}}, | [j]={{H,3173,"static void diagnoseMissingConstinit(Sema &S, const VarDecl *InitDecl, const ConstInitAttr *CIAttr, bool AttrBeforeInit) {\n // ...\n if (AttrBeforeInit) {\n // ...\n } else {\n // ...\n S.Diag(CIAttr->getLocation(), CIAttr->isConstinit() ? diag::err_constinit_added_too_late : diag::warn_require_const_init_added_too_late) << FixItHint::CreateRemoval(SourceRange(CIAttr->getLocation()));"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/attr-require-constant-initialization.cpp"]={"clang/test/SemaCXX/attr-require-constant-initialization.cpp:309:3: warning: \'require_constant_initialization\' attribute added after initialization of variable [-Wignored-attributes]","clang/test/SemaCXX/attr-require-constant-initialization.cpp:312:10: warning: \'require_constant_initialization\' attribute added after initialization of variable [-Wignored-attributes]"} | ["clang/test/SemaCXX/attr-require-constant-initialization.cpp"]={"clang/test/SemaCXX/attr-require-constant-initialization.cpp:309:3: warning: \'require_constant_initialization\' attribute added after initialization of variable [-Wignored-attributes]","clang/test/SemaCXX/attr-require-constant-initialization.cpp:312:10: warning: \'require_constant_initialization\' attribute added after initialization of variable [-Wignored-attributes]"} | ||
Line 5,909: | Line 5,909: | ||
[h]=q, | [h]=q, | ||
[i]={"b83b23275b74",1607502387,"Introduce -Wreserved-identifier","Introduce -Wreserved-identifier"}, | [i]={"b83b23275b74",1607502387,"Introduce -Wreserved-identifier","Introduce -Wreserved-identifier"}, | ||
[j]={{H,6091,"void Sema::warnOnReservedIdentifier(const NamedDecl *D) {\n if (Status != ReservedIdentifierStatus::NotReserved && !isFromSystemHeader(Context.getSourceManager(), D)) {\n Diag(D->getLocation(), diag::warn_reserved_extern_symbol) << D << static_cast<int>(Status);"},{kc,512,"bool Sema::checkLiteralOperatorId(const CXXScopeSpec &SS, const UnqualifiedId &Name, bool IsUDSuffix) {\n if (!IsUDSuffix) {\n if (!PP.getSourceManager().isInSystemHeader(Loc)) {\n if (auto Hint = FixItHint::CreateReplacement(Name.getSourceRange(), (StringRef(\"operator\\\"\\\"\") + II->getName()).str()); isReservedInAllContexts(Status)) {\n Diag(Loc, diag::warn_reserved_extern_symbol) << II << static_cast<int>(Status) << Hint;"},{U,567,"StmtResult Sema::ActOnLabelStmt(SourceLocation IdentLoc, LabelDecl *TheDecl, SourceLocation ColonLoc, Stmt *SubStmt) {\n if (isReservedInAllContexts(Status) && !Context.getSourceManager().isInSystemHeader(IdentLoc))\n Diag(IdentLoc, diag::warn_reserved_extern_symbol) << TheDecl << static_cast<int>(Status);"}}, | [j]={{H,6091,"void Sema::warnOnReservedIdentifier(const NamedDecl *D) {\n // ...\n if (Status != ReservedIdentifierStatus::NotReserved && !isFromSystemHeader(Context.getSourceManager(), D)) {\n Diag(D->getLocation(), diag::warn_reserved_extern_symbol) << D << static_cast<int>(Status);"},{kc,512,"bool Sema::checkLiteralOperatorId(const CXXScopeSpec &SS, const UnqualifiedId &Name, bool IsUDSuffix) {\n // ...\n if (!IsUDSuffix) {\n // ...\n if (!PP.getSourceManager().isInSystemHeader(Loc)) {\n if (auto Hint = FixItHint::CreateReplacement(Name.getSourceRange(), (StringRef(\"operator\\\"\\\"\") + II->getName()).str()); isReservedInAllContexts(Status)) {\n Diag(Loc, diag::warn_reserved_extern_symbol) << II << static_cast<int>(Status) << Hint;"},{U,567,"StmtResult Sema::ActOnLabelStmt(SourceLocation IdentLoc, LabelDecl *TheDecl, SourceLocation ColonLoc, Stmt *SubStmt) {\n // ...\n if (isReservedInAllContexts(Status) && !Context.getSourceManager().isInSystemHeader(IdentLoc))\n Diag(IdentLoc, diag::warn_reserved_extern_symbol) << TheDecl << static_cast<int>(Status);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/reserved-identifier.cpp"]={"clang/test/SemaCXX/reserved-identifier.cpp:3:5: warning: identifier \'foo__bar\' is reserved because it contains \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:4:12: warning: identifier \'_bar\' is reserved because it starts with \'_\' at global scope [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:5:12: warning: identifier \'_Bar\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:6:5: warning: identifier \'_barbouille\' is reserved because it starts with \'_\' at global scope [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:8:23: warning: identifier \'_Reserved\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:9:16: warning: identifier \'__1\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:16:35: warning: identifier \'__toucan\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:19:9: warning: identifier \'_Barbotine\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:21:17: warning: identifier \'__\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:27:17: warning: identifier \'__\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:30:11: warning: identifier \'_Barbidur\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:32:8: warning: identifier \'__barbidou\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:35:5: warning: identifier \'__barbouille\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:38:5: warning: identifier \'__babar\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:43:7: warning: identifier \'__barbapapa\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:45:7: warning: identifier \'_Barbalala\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:48:12: warning: identifier \'__menu\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:49:3: warning: identifier \'__some\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:50:3: warning: identifier \'_Other\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:54:6: warning: identifier \'_Menu\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:55:3: warning: identifier \'_OtheR_\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:56:3: warning: identifier \'_other_\' is reserved because it starts with \'_\' at global scope [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:60:3: warning: identifier \'__some\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:61:3: warning: identifier \'_Other\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:62:3: warning: identifier \'_other\' is reserved because it starts with \'_\' at global scope [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:69:7: warning: identifier \'_Barbamama\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:79:24: warning: identifier \'_BarbeBleue\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:89:36: warning: identifier \'_SacreBleu\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:95:8: warning: identifier \'_BarbeRouge\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:97:8: warning: identifier \'_BarbeNoire\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:101:15: warning: identifier \'_barbegrise\' is reserved because it starts with \'_\' at global scope [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:111:18: warning: identifier \'_namespace_b\' is reserved because it starts with \'_\' and has C language linkage [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:113:19: warning: identifier \'_namespace_d\' is reserved because it starts with \'_\' and has C language linkage [-Wreserved-identifier]"} | ["clang/test/SemaCXX/reserved-identifier.cpp"]={"clang/test/SemaCXX/reserved-identifier.cpp:3:5: warning: identifier \'foo__bar\' is reserved because it contains \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:4:12: warning: identifier \'_bar\' is reserved because it starts with \'_\' at global scope [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:5:12: warning: identifier \'_Bar\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:6:5: warning: identifier \'_barbouille\' is reserved because it starts with \'_\' at global scope [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:8:23: warning: identifier \'_Reserved\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:9:16: warning: identifier \'__1\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:16:35: warning: identifier \'__toucan\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:19:9: warning: identifier \'_Barbotine\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:21:17: warning: identifier \'__\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:27:17: warning: identifier \'__\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:30:11: warning: identifier \'_Barbidur\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:32:8: warning: identifier \'__barbidou\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:35:5: warning: identifier \'__barbouille\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:38:5: warning: identifier \'__babar\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:43:7: warning: identifier \'__barbapapa\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:45:7: warning: identifier \'_Barbalala\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:48:12: warning: identifier \'__menu\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:49:3: warning: identifier \'__some\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:50:3: warning: identifier \'_Other\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:54:6: warning: identifier \'_Menu\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:55:3: warning: identifier \'_OtheR_\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:56:3: warning: identifier \'_other_\' is reserved because it starts with \'_\' at global scope [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:60:3: warning: identifier \'__some\' is reserved because it starts with \'__\' [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:61:3: warning: identifier \'_Other\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:62:3: warning: identifier \'_other\' is reserved because it starts with \'_\' at global scope [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:69:7: warning: identifier \'_Barbamama\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:79:24: warning: identifier \'_BarbeBleue\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:89:36: warning: identifier \'_SacreBleu\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:95:8: warning: identifier \'_BarbeRouge\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:97:8: warning: identifier \'_BarbeNoire\' is reserved because it starts with \'_\' followed by a capital letter [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:101:15: warning: identifier \'_barbegrise\' is reserved because it starts with \'_\' at global scope [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:111:18: warning: identifier \'_namespace_b\' is reserved because it starts with \'_\' and has C language linkage [-Wreserved-identifier]","clang/test/SemaCXX/reserved-identifier.cpp:113:19: warning: identifier \'_namespace_d\' is reserved because it starts with \'_\' and has C language linkage [-Wreserved-identifier]"} | ||
Line 5,926: | Line 5,926: | ||
[h]=q, | [h]=q, | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{"clang/lib/Sema/SemaModule.cpp",167,"/// 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 Reserved:\n S.Diag(Loc, diag::warn_reserved_module_name) << II;"},{"clang/lib/Sema/SemaModule.cpp",274,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n if (!getSourceManager().isInSystemHeader(Path[0].second) && (FirstComponentName == \"std\" || (FirstComponentName.startswith(\"std\") && llvm::all_of(FirstComponentName.drop_front(3), &llvm::isDigit))))\n Diag(Path[0].second, diag::warn_reserved_module_name) << Path[0].first;"}} | [j]={{"clang/lib/Sema/SemaModule.cpp",167,"/// 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 // ...\n case Reserved:\n S.Diag(Loc, diag::warn_reserved_module_name) << II;"},{"clang/lib/Sema/SemaModule.cpp",274,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n // ...\n if (!getSourceManager().isInSystemHeader(Path[0].second) && (FirstComponentName == \"std\" || (FirstComponentName.startswith(\"std\") && llvm::all_of(FirstComponentName.drop_front(3), &llvm::isDigit))))\n Diag(Path[0].second, diag::warn_reserved_module_name) << Path[0].first;"}} | ||
}, | }, | ||
["warn_ret_addr_label"]={ | ["warn_ret_addr_label"]={ | ||
Line 5,940: | Line 5,940: | ||
[h]=q, | [h]=q, | ||
[i]={"252d36e74caa",1256875318,"warn about returning the address of a label.","warn about returning the address of a label."}, | [i]={"252d36e74caa",1256875318,"warn about returning the address of a label.","warn about returning the address of a label."}, | ||
[j]={{Bb,8268,"void Sema::checkInitializerLifetime(const InitializedEntity &Entity, Expr *Init) {\n auto TemporaryVisitor = [&](IndirectLocalPath &Path, Local L, ReferenceKind RK) -> bool {\n case LK_StmtExprResult:\n if (auto *DRE = dyn_cast<DeclRefExpr>(L)) {\n } else if (isa<BlockExpr>(L)) {\n } else if (isa<AddrLabelExpr>(L)) {\n Diag(DiagLoc, diag::warn_ret_addr_label) << DiagRange;"}}, | [j]={{Bb,8268,"void Sema::checkInitializerLifetime(const InitializedEntity &Entity, Expr *Init) {\n // ...\n auto TemporaryVisitor = [&](IndirectLocalPath &Path, Local L, ReferenceKind RK) -> bool {\n // ...\n case LK_Return:\n case LK_StmtExprResult:\n if (auto *DRE = dyn_cast<DeclRefExpr>(L)) {\n // ...\n } else if (isa<BlockExpr>(L)) {\n // ...\n } else if (isa<AddrLabelExpr>(L)) {\n // ...\n Diag(DiagLoc, diag::warn_ret_addr_label) << DiagRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/statements.c"]={"clang/test/Sema/statements.c:34:10: warning: returning address of label, which is local [-Wreturn-stack-address]"} | ["clang/test/Sema/statements.c"]={"clang/test/Sema/statements.c:34:10: warning: returning address of label, which is local [-Wreturn-stack-address]"} | ||
Line 5,957: | Line 5,957: | ||
[h]=q, | [h]=q, | ||
[i]={"da7b27ff0b98",1447738809,yc,yc}, | [i]={"da7b27ff0b98",1447738809,yc,yc}, | ||
[j]={{Bb,8270,"void Sema::checkInitializerLifetime(const InitializedEntity &Entity, Expr *Init) {\n auto TemporaryVisitor = [&](IndirectLocalPath &Path, Local L, ReferenceKind RK) -> bool {\n case LK_StmtExprResult:\n if (auto *DRE = dyn_cast<DeclRefExpr>(L)) {\n } else if (isa<BlockExpr>(L)) {\n } else if (isa<AddrLabelExpr>(L)) {\n } else {\n Diag(DiagLoc, diag::warn_ret_local_temp_addr_ref) << Entity.getType()->isReferenceType() << DiagRange;"}}, | [j]={{Bb,8270,"void Sema::checkInitializerLifetime(const InitializedEntity &Entity, Expr *Init) {\n // ...\n auto TemporaryVisitor = [&](IndirectLocalPath &Path, Local L, ReferenceKind RK) -> bool {\n // ...\n case LK_Return:\n case LK_StmtExprResult:\n if (auto *DRE = dyn_cast<DeclRefExpr>(L)) {\n // ...\n } else if (isa<BlockExpr>(L)) {\n // ...\n } else if (isa<AddrLabelExpr>(L)) {\n // ...\n } else {\n Diag(DiagLoc, diag::warn_ret_local_temp_addr_ref) << Entity.getType()->isReferenceType() << DiagRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp"]={"clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp:11:14: warning: returning reference to local temporary object [-Wreturn-stack-address]","clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp:17:14: warning: returning reference to local temporary object [-Wreturn-stack-address]"} | ["clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp"]={"clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp:11:14: warning: returning reference to local temporary object [-Wreturn-stack-address]","clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp:17:14: warning: returning reference to local temporary object [-Wreturn-stack-address]"} | ||
Line 5,974: | Line 5,974: | ||
[h]=q, | [h]=q, | ||
[i]={"da7b27ff0b98",1447738809,yc,yc}, | [i]={"da7b27ff0b98",1447738809,yc,yc}, | ||
[j]={{Bb,8258,"void Sema::checkInitializerLifetime(const InitializedEntity &Entity, Expr *Init) {\n auto TemporaryVisitor = [&](IndirectLocalPath &Path, Local L, ReferenceKind RK) -> bool {\n case LK_StmtExprResult:\n if (auto *DRE = dyn_cast<DeclRefExpr>(L)) {\n Diag(DiagLoc, diag::warn_ret_stack_addr_ref) << Entity.getType()->isReferenceType() << DRE->getDecl() << isa<ParmVarDecl>(DRE->getDecl()) << DiagRange;"}}, | [j]={{Bb,8258,"void Sema::checkInitializerLifetime(const InitializedEntity &Entity, Expr *Init) {\n // ...\n auto TemporaryVisitor = [&](IndirectLocalPath &Path, Local L, ReferenceKind RK) -> bool {\n // ...\n case LK_Return:\n case LK_StmtExprResult:\n if (auto *DRE = dyn_cast<DeclRefExpr>(L)) {\n // ...\n Diag(DiagLoc, diag::warn_ret_stack_addr_ref) << Entity.getType()->isReferenceType() << DRE->getDecl() << isa<ParmVarDecl>(DRE->getDecl()) << DiagRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGen/pointer-to-int.c"]={"clang/test/CodeGen/pointer-to-int.c:11:10: warning: address of stack memory associated with local variable \'x\' returned [-Wreturn-stack-address]"} | ["clang/test/CodeGen/pointer-to-int.c"]={"clang/test/CodeGen/pointer-to-int.c:11:10: warning: address of stack memory associated with local variable \'x\' returned [-Wreturn-stack-address]"} | ||
Line 5,991: | Line 5,991: | ||
[h]=q, | [h]=q, | ||
[i]={Fc,1237025389,Fb,Fb}, | [i]={Fc,1237025389,Fb,Fb}, | ||
[j]={{U,4141,"StmtResult Sema::BuildReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp, bool AllowRecovery) {\n if (FnRetType->isVoidType()) {\n } else if (!RetValExp && !HasDependentReturnType) {\n if ((FD && FD->isInvalidDecl()) || FnRetType->containsErrors()) {\n } else if (getLangOpts().CPlusPlus11 && FD && FD->isConstexpr()) {\n } else {\n unsigned DiagID = getLangOpts().C99 ? diag::ext_return_missing_expr : diag::warn_return_missing_expr;"}}, | [j]={{U,4141,"StmtResult Sema::BuildReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp, bool AllowRecovery) {\n // ...\n if (FnRetType->isVoidType()) {\n // ...\n } else if (!RetValExp && !HasDependentReturnType) {\n // ...\n if ((FD && FD->isInvalidDecl()) || FnRetType->containsErrors()) {\n // ...\n } else if (getLangOpts().CPlusPlus11 && FD && FD->isConstexpr()) {\n // ...\n } else {\n // ...\n unsigned DiagID = getLangOpts().C99 ? diag::ext_return_missing_expr : diag::warn_return_missing_expr;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/method-return-void.m"]={"clang/test/SemaObjC/method-return-void.m:8:14: error: non-void method \'foo\' should return a value [-Wreturn-type]"} | ["clang/test/SemaObjC/method-return-void.m"]={"clang/test/SemaObjC/method-return-void.m:8:14: error: non-void method \'foo\' should return a value [-Wreturn-type]"} | ||
Line 6,009: | Line 6,009: | ||
[h]=q, | [h]=q, | ||
[i]={"fc368259af1a",1378239098,"Consumed analysis: add return_typestate attribute.","Consumed analysis: add return_typestate attribute."}, | [i]={"fc368259af1a",1378239098,"Consumed analysis: add return_typestate attribute.","Consumed analysis: add return_typestate attribute."}, | ||
[j]={{E,2122,"class ConsumedWarningsHandler : public ConsumedWarningsHandlerBase {\n void warnReturnTypestateForUnconsumableType(SourceLocation Loc, StringRef TypeName) override {\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_return_typestate_for_unconsumable_type) << TypeName);"}}, | [j]={{E,2122,"class ConsumedWarningsHandler : public ConsumedWarningsHandlerBase {\n // ...\n void warnReturnTypestateForUnconsumableType(SourceLocation Loc, StringRef TypeName) override {\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_return_typestate_for_unconsumable_type) << TypeName);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-consumed-parsing.cpp"]={"clang/test/SemaCXX/warn-consumed-parsing.cpp:14:38: warning: return state set for an unconsumable type \'int\' [-Wconsumed]"} | ["clang/test/SemaCXX/warn-consumed-parsing.cpp"]={"clang/test/SemaCXX/warn-consumed-parsing.cpp:14:38: warning: return state set for an unconsumable type \'int\' [-Wconsumed]"} | ||
Line 6,027: | Line 6,027: | ||
[h]=q, | [h]=q, | ||
[i]={"fc368259af1a",1378239098,"Consumed analysis: add return_typestate attribute.","Consumed analysis: add return_typestate attribute."}, | [i]={"fc368259af1a",1378239098,"Consumed analysis: add return_typestate attribute.","Consumed analysis: add return_typestate attribute."}, | ||
[j]={{E,2131,"class ConsumedWarningsHandler : public ConsumedWarningsHandlerBase {\n void warnReturnTypestateMismatch(SourceLocation Loc, StringRef ExpectedState, StringRef ObservedState) override {\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_return_typestate_mismatch) << ExpectedState << ObservedState);"}}, | [j]={{E,2131,"class ConsumedWarningsHandler : public ConsumedWarningsHandlerBase {\n // ...\n void warnReturnTypestateMismatch(SourceLocation Loc, StringRef ExpectedState, StringRef ObservedState) override {\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_return_typestate_mismatch) << ExpectedState << ObservedState);"}}, | ||
[p]={ | [p]={ | ||
[qd]={"clang/test/SemaCXX/warn-consumed-analysis.cpp:78:3: warning: return value not in expected state; expected \'unconsumed\', observed \'consumed\' [-Wconsumed]"} | [qd]={"clang/test/SemaCXX/warn-consumed-analysis.cpp:78:3: warning: return value not in expected state; expected \'unconsumed\', observed \'consumed\' [-Wconsumed]"} | ||
Line 6,044: | Line 6,044: | ||
[h]=q, | [h]=q, | ||
[i]={"af84ec0a9612",1290035514,"Introduce option -Wargument-larger-than[=N] which warns about function definitions if they take by-v...","Introduce option -Wargument-larger-than[=N] which warns about function definitions if they take by-value"}, | [i]={"af84ec0a9612",1290035514,"Introduce option -Wargument-larger-than[=N] which warns about function definitions if they take by-v...","Introduce option -Wargument-larger-than[=N] which warns about function definitions if they take by-value"}, | ||
[j]={{H,14870,"void Sema::DiagnoseSizeOfParametersAndReturnValue(ArrayRef<ParmVarDecl *> Parameters, QualType ReturnTy, NamedDecl *D) {\n // Warn if the return value is pass-by-value and larger than the specified\n // threshold.\n if (!ReturnTy->isDependentType() && ReturnTy.isPODType(Context)) {\n if (Size > LangOpts.NumLargeByValueCopy)\n Diag(D->getLocation(), diag::warn_return_value_size) << D << Size;"}}, | [j]={{H,14870,"void Sema::DiagnoseSizeOfParametersAndReturnValue(ArrayRef<ParmVarDecl *> Parameters, QualType ReturnTy, NamedDecl *D) {\n // ...\n // Warn if the return value is pass-by-value and larger than the specified\n // threshold.\n if (!ReturnTy->isDependentType() && ReturnTy.isPODType(Context)) {\n // ...\n if (Size > LangOpts.NumLargeByValueCopy)\n Diag(D->getLocation(), diag::warn_return_value_size) << D << Size;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-large-by-value-copy.cpp"]={"clang/test/SemaCXX/warn-large-by-value-copy.cpp:16:6: warning: return value of \'f101\' is a large (101 bytes) pass-by-value object; pass it by reference instead ? [-Wlarge-by-value-copy]","clang/test/SemaCXX/warn-large-by-value-copy.cpp:24:18: warning: return value of \'foo_template<rdar8548050::S101>\' is a large (101 bytes) pass-by-value object; pass it by reference instead ? [-Wlarge-by-value-copy]"} | ["clang/test/SemaCXX/warn-large-by-value-copy.cpp"]={"clang/test/SemaCXX/warn-large-by-value-copy.cpp:16:6: warning: return value of \'f101\' is a large (101 bytes) pass-by-value object; pass it by reference instead ? [-Wlarge-by-value-copy]","clang/test/SemaCXX/warn-large-by-value-copy.cpp:24:18: warning: return value of \'foo_template<rdar8548050::S101>\' is a large (101 bytes) pass-by-value object; pass it by reference instead ? [-Wlarge-by-value-copy]"} | ||
Line 6,061: | Line 6,061: | ||
[h]=q, | [h]=q, | ||
[i]={"c2a9493a26f4",1328750494,"Adding support for warning when a non-C compatible user-defined type is returned from an extern \"C\" ...","Adding support for warning when a non-C compatible user-defined type is returned from an extern \"C\" function."}, | [i]={"c2a9493a26f4",1328750494,"Adding support for warning when a non-C compatible user-defined type is returned from an extern \"C\" ...","Adding support for warning when a non-C compatible user-defined type is returned from an extern \"C\" function."}, | ||
[j]={{H,12022,"/// Perform semantic checking of a new function declaration.\n///\n/// Performs semantic analysis of the new function declaration\n/// NewFD. This routine performs all semantic checking that does not\n/// require the actual declarator involved in the declaration, and is\n/// used both for the declaration of functions as they are parsed\n/// (called via ActOnDeclarator) and for the declaration of functions\n/// that have been instantiated via C++ template instantiation (called\n/// via InstantiateDecl).\n///\n/// \\param IsMemberSpecialization whether this new function declaration is\n/// a member specialization (that replaces any definition provided by the\n/// previous declaration).\n///\n/// This sets NewFD->isInvalidDecl() to true if there was an error.\n///\n/// \\returns true if the function declaration is a redeclaration.\nbool Sema::CheckFunctionDeclaration(Scope *S, FunctionDecl *NewFD, LookupResult &Previous, bool IsMemberSpecialization, bool DeclIsDefn) {\n if (getLangOpts().CPlusPlus) {\n // If this function is declared as being extern \"C\", then check to see if\n // the function returns a UDT (class, struct, or union type) that is not C\n // compatible, and if it does, warn the user.\n // But, issue any diagnostic on the first declaration only.\n if (Previous.empty() && NewFD->isExternC()) {\n if (R->isIncompleteType() && !R->isVoidType())\n else if (!R.isPODType(Context) && !R->isVoidType() && !R->isObjCObjectPointerType())\n Diag(NewFD->getLocation(), diag::warn_return_value_udt) << NewFD << R;"}}, | [j]={{H,12022,"/// Perform semantic checking of a new function declaration.\n///\n/// Performs semantic analysis of the new function declaration\n/// NewFD. This routine performs all semantic checking that does not\n/// require the actual declarator involved in the declaration, and is\n/// used both for the declaration of functions as they are parsed\n/// (called via ActOnDeclarator) and for the declaration of functions\n/// that have been instantiated via C++ template instantiation (called\n/// via InstantiateDecl).\n///\n/// \\param IsMemberSpecialization whether this new function declaration is\n/// a member specialization (that replaces any definition provided by the\n/// previous declaration).\n///\n/// This sets NewFD->isInvalidDecl() to true if there was an error.\n///\n/// \\returns true if the function declaration is a redeclaration.\nbool Sema::CheckFunctionDeclaration(Scope *S, FunctionDecl *NewFD, LookupResult &Previous, bool IsMemberSpecialization, bool DeclIsDefn) {\n // ...\n if (getLangOpts().CPlusPlus) {\n // ...\n // If this function is declared as being extern \"C\", then check to see if\n // the function returns a UDT (class, struct, or union type) that is not C\n // compatible, and if it does, warn the user.\n // But, issue any diagnostic on the first declaration only.\n if (Previous.empty() && NewFD->isExternC()) {\n // ...\n if (R->isIncompleteType() && !R->isVoidType())\n // ...\n else if (!R.isPODType(Context) && !R->isVoidType() && !R->isObjCObjectPointerType())\n Diag(NewFD->getLocation(), diag::warn_return_value_udt) << NewFD << R;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/function-extern-c.cpp"]={"clang/test/SemaCXX/function-extern-c.cpp:27:14: warning: \'f3\' has C-linkage specified, but returns user-defined type \'U\' which is incompatible with C [-Wreturn-type-c-linkage]","clang/test/SemaCXX/function-extern-c.cpp:28:14: warning: \'f0\' has C-linkage specified, but returns user-defined type \'S\' which is incompatible with C [-Wreturn-type-c-linkage]","clang/test/SemaCXX/function-extern-c.cpp:29:14: warning: \'f4\' has C-linkage specified, but returns user-defined type \'A\' which is incompatible with C [-Wreturn-type-c-linkage]","clang/test/SemaCXX/function-extern-c.cpp:77:3: warning: \'bbb\' has C-linkage specified, but returns user-defined type \'A\' which is incompatible with C [-Wreturn-type-c-linkage]","clang/test/SemaCXX/function-extern-c.cpp:78:3: warning: \'ccc\' has C-linkage specified, but returns user-defined type \'A\' which is incompatible with C [-Wreturn-type-c-linkage]"} | ["clang/test/SemaCXX/function-extern-c.cpp"]={"clang/test/SemaCXX/function-extern-c.cpp:27:14: warning: \'f3\' has C-linkage specified, but returns user-defined type \'U\' which is incompatible with C [-Wreturn-type-c-linkage]","clang/test/SemaCXX/function-extern-c.cpp:28:14: warning: \'f0\' has C-linkage specified, but returns user-defined type \'S\' which is incompatible with C [-Wreturn-type-c-linkage]","clang/test/SemaCXX/function-extern-c.cpp:29:14: warning: \'f4\' has C-linkage specified, but returns user-defined type \'A\' which is incompatible with C [-Wreturn-type-c-linkage]","clang/test/SemaCXX/function-extern-c.cpp:77:3: warning: \'bbb\' has C-linkage specified, but returns user-defined type \'A\' which is incompatible with C [-Wreturn-type-c-linkage]","clang/test/SemaCXX/function-extern-c.cpp:78:3: warning: \'ccc\' has C-linkage specified, but returns user-defined type \'A\' which is incompatible with C [-Wreturn-type-c-linkage]"} | ||
Line 6,078: | Line 6,078: | ||
[h]=q, | [h]=q, | ||
[i]={"84ce606b9108",1343152781,"Tweak warning text for returning incomplete type from extern \"C\" functions.","Tweak warning text for returning incomplete type from extern \"C\" functions."}, | [i]={"84ce606b9108",1343152781,"Tweak warning text for returning incomplete type from extern \"C\" functions.","Tweak warning text for returning incomplete type from extern \"C\" functions."}, | ||
[j]={{H,12018,"/// Perform semantic checking of a new function declaration.\n///\n/// Performs semantic analysis of the new function declaration\n/// NewFD. This routine performs all semantic checking that does not\n/// require the actual declarator involved in the declaration, and is\n/// used both for the declaration of functions as they are parsed\n/// (called via ActOnDeclarator) and for the declaration of functions\n/// that have been instantiated via C++ template instantiation (called\n/// via InstantiateDecl).\n///\n/// \\param IsMemberSpecialization whether this new function declaration is\n/// a member specialization (that replaces any definition provided by the\n/// previous declaration).\n///\n/// This sets NewFD->isInvalidDecl() to true if there was an error.\n///\n/// \\returns true if the function declaration is a redeclaration.\nbool Sema::CheckFunctionDeclaration(Scope *S, FunctionDecl *NewFD, LookupResult &Previous, bool IsMemberSpecialization, bool DeclIsDefn) {\n if (getLangOpts().CPlusPlus) {\n // If this function is declared as being extern \"C\", then check to see if\n // the function returns a UDT (class, struct, or union type) that is not C\n // compatible, and if it does, warn the user.\n // But, issue any diagnostic on the first declaration only.\n if (Previous.empty() && NewFD->isExternC()) {\n if (R->isIncompleteType() && !R->isVoidType())\n Diag(NewFD->getLocation(), diag::warn_return_value_udt_incomplete) << NewFD << R;"}}, | [j]={{H,12018,"/// Perform semantic checking of a new function declaration.\n///\n/// Performs semantic analysis of the new function declaration\n/// NewFD. This routine performs all semantic checking that does not\n/// require the actual declarator involved in the declaration, and is\n/// used both for the declaration of functions as they are parsed\n/// (called via ActOnDeclarator) and for the declaration of functions\n/// that have been instantiated via C++ template instantiation (called\n/// via InstantiateDecl).\n///\n/// \\param IsMemberSpecialization whether this new function declaration is\n/// a member specialization (that replaces any definition provided by the\n/// previous declaration).\n///\n/// This sets NewFD->isInvalidDecl() to true if there was an error.\n///\n/// \\returns true if the function declaration is a redeclaration.\nbool Sema::CheckFunctionDeclaration(Scope *S, FunctionDecl *NewFD, LookupResult &Previous, bool IsMemberSpecialization, bool DeclIsDefn) {\n // ...\n if (getLangOpts().CPlusPlus) {\n // ...\n // If this function is declared as being extern \"C\", then check to see if\n // the function returns a UDT (class, struct, or union type) that is not C\n // compatible, and if it does, warn the user.\n // But, issue any diagnostic on the first declaration only.\n if (Previous.empty() && NewFD->isExternC()) {\n // ...\n if (R->isIncompleteType() && !R->isVoidType())\n Diag(NewFD->getLocation(), diag::warn_return_value_udt_incomplete) << NewFD << R;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/function-extern-c.cpp"]={"clang/test/SemaCXX/function-extern-c.cpp:40:31: warning: \'f12\' has C-linkage specified, but returns incomplete type \'struct mypodstruct\' which could be incompatible with C [-Wreturn-type-c-linkage]","clang/test/SemaCXX/function-extern-c.cpp:48:16: warning: \'f\' has C-linkage specified, but returns incomplete type \'A\' which could be incompatible with C [-Wreturn-type-c-linkage]"} | ["clang/test/SemaCXX/function-extern-c.cpp"]={"clang/test/SemaCXX/function-extern-c.cpp:40:31: warning: \'f12\' has C-linkage specified, but returns incomplete type \'struct mypodstruct\' which could be incompatible with C [-Wreturn-type-c-linkage]","clang/test/SemaCXX/function-extern-c.cpp:48:16: warning: \'f\' has C-linkage specified, but returns incomplete type \'A\' which could be incompatible with C [-Wreturn-type-c-linkage]"} | ||
Line 6,112: | Line 6,112: | ||
[h]=q, | [h]=q, | ||
[i]={"3baaffba6bc3",1241548477,"Issue a warning in odd case of instance method used","Issue a warning in odd case of instance method used"}, | [i]={"3baaffba6bc3",1241548477,"Issue a warning in odd case of instance method used","Issue a warning in odd case of instance method used"}, | ||
[j]={{cb,3027,"/// 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) {\n if (receiverIsIdLike || ReceiverType->isBlockPointerType() || (Receiver && Context.isObjCNSObjectType(Receiver->getType()))) {\n } else if (ReceiverType->isObjCClassOrClassKindOfType() || ReceiverType->isObjCQualifiedClassType()) {\n // Handle messages to Class.\n // We allow sending a message to a qualified Class (\"Class<foo>\"), which\n // is ok as long as one of the protocols implements the selector (if not,\n // warn).\n if (!ReceiverType->isObjCClassOrClassKindOfType()) {\n } else {\n if (!Method) {\n // If not messaging \'self\', look for any factory method named \'Sel\'.\n if (!Receiver || !isSelfExpr(Receiver)) {\n if (!Methods.empty()) {\n // If we find an instance method, emit warning.\n if (Method->isInstanceMethod()) {\n if (const ObjCInterfaceDecl *ID = dyn_cast<ObjCInterfaceDecl>(Method->getDeclContext())) {\n if (ID->getSuperClass())\n Diag(SelLoc, diag::warn_root_inst_method_not_found) << Sel << SourceRange(LBracLoc, RBracLoc);"}}, | [j]={{cb,3027,"/// 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 // ...\n if (!Method) {\n // ...\n if (receiverIsIdLike || ReceiverType->isBlockPointerType() || (Receiver && Context.isObjCNSObjectType(Receiver->getType()))) {\n // ...\n } else if (ReceiverType->isObjCClassOrClassKindOfType() || ReceiverType->isObjCQualifiedClassType()) {\n // Handle messages to Class.\n // We allow sending a message to a qualified Class (\"Class<foo>\"), which\n // is ok as long as one of the protocols implements the selector (if not,\n // warn).\n if (!ReceiverType->isObjCClassOrClassKindOfType()) {\n // ...\n } else {\n // ...\n if (!Method) {\n // If not messaging \'self\', look for any factory method named \'Sel\'.\n if (!Receiver || !isSelfExpr(Receiver)) {\n // ...\n if (!Methods.empty()) {\n // ...\n // If we find an instance method, emit warning.\n if (Method->isInstanceMethod()) {\n if (const ObjCInterfaceDecl *ID = dyn_cast<ObjCInterfaceDecl>(Method->getDeclContext())) {\n if (ID->getSuperClass())\n Diag(SelLoc, diag::warn_root_inst_method_not_found) << Sel << SourceRange(LBracLoc, RBracLoc);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/inst-method-lookup-in-root.m"]={"clang/test/SemaObjC/inst-method-lookup-in-root.m:23:13: warning: instance method \'starboard\' is being used on \'Class\' which is not in the root class [-Wobjc-method-access]"} | ["clang/test/SemaObjC/inst-method-lookup-in-root.m"]={"clang/test/SemaObjC/inst-method-lookup-in-root.m:23:13: warning: instance method \'starboard\' is being used on \'Class\' which is not in the root class [-Wobjc-method-access]"} | ||
Line 6,130: | Line 6,130: | ||
[h]=q, | [h]=q, | ||
[i]={"0bc4b2d33731",1469733990,"[OpenCL] Generate opaque type for sampler_t and function call for the initializer","[OpenCL] Generate opaque type for sampler_t and function call for the initializer"}, | [i]={"0bc4b2d33731",1469733990,"[OpenCL] Generate opaque type for sampler_t and function call for the initializer","[OpenCL] Generate opaque type for sampler_t and function call for the initializer"}, | ||
[j]={{Bb,9366,"ExprResult InitializationSequence::Perform(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, MultiExprArg Args, QualType *ResultType) {\n for (step_iterator Step = step_begin(), StepEnd = step_end(); Step != StepEnd; ++Step) {\n case SK_OCLSamplerInit: {\n // Case 1\n if (Entity.isParameterKind()) {\n } else {\n if (FilterMode != 1 && FilterMode != 2 && !S.getOpenCLOptions().isAvailableOption(\"cl_intel_device_side_avc_motion_estimation\", S.getLangOpts()))\n S.Diag(Kind.getLocation(), diag::warn_sampler_initializer_invalid_bits) << \"Filter Mode\";"},{Bb,9370,"ExprResult InitializationSequence::Perform(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, MultiExprArg Args, QualType *ResultType) {\n for (step_iterator Step = step_begin(), StepEnd = step_end(); Step != StepEnd; ++Step) {\n case SK_OCLSamplerInit: {\n // Case 1\n if (Entity.isParameterKind()) {\n } else {\n if (AddressingMode > 4)\n S.Diag(Kind.getLocation(), diag::warn_sampler_initializer_invalid_bits) << \"Addressing Mode\";"}}, | [j]={{Bb,9366,"ExprResult InitializationSequence::Perform(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, MultiExprArg Args, QualType *ResultType) {\n // ...\n for (step_iterator Step = step_begin(), StepEnd = step_end(); Step != StepEnd; ++Step) {\n // ...\n case SK_OCLSamplerInit: {\n // ...\n // Case 1\n if (Entity.isParameterKind()) {\n // ...\n } else {\n // ...\n if (FilterMode != 1 && FilterMode != 2 && !S.getOpenCLOptions().isAvailableOption(\"cl_intel_device_side_avc_motion_estimation\", S.getLangOpts()))\n S.Diag(Kind.getLocation(), diag::warn_sampler_initializer_invalid_bits) << \"Filter Mode\";"},{Bb,9370,"ExprResult InitializationSequence::Perform(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, MultiExprArg Args, QualType *ResultType) {\n // ...\n for (step_iterator Step = step_begin(), StepEnd = step_end(); Step != StepEnd; ++Step) {\n // ...\n case SK_OCLSamplerInit: {\n // ...\n // Case 1\n if (Entity.isParameterKind()) {\n // ...\n } else {\n // ...\n if (AddressingMode > 4)\n S.Diag(Kind.getLocation(), diag::warn_sampler_initializer_invalid_bits) << \"Addressing Mode\";"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaOpenCL/sampler_t.cl"]={"clang/test/SemaOpenCL/sampler_t.cl:21:20: warning: sampler initializer has invalid Filter Mode bits [-Wspir-compat]","clang/test/SemaOpenCL/sampler_t.cl:26:20: warning: sampler initializer has invalid Addressing Mode bits [-Wspir-compat]"} | ["clang/test/SemaOpenCL/sampler_t.cl"]={"clang/test/SemaOpenCL/sampler_t.cl:21:20: warning: sampler initializer has invalid Filter Mode bits [-Wspir-compat]","clang/test/SemaOpenCL/sampler_t.cl:26:20: warning: sampler initializer has invalid Addressing Mode bits [-Wspir-compat]"} | ||
Line 6,147: | Line 6,147: | ||
[h]=hb, | [h]=hb, | ||
[i]={"0208793e4101",1279246282,"Add most of the boilerplate support for scanf format string checking. This includes","Add most of the boilerplate support for scanf format string checking. This includes"}, | [i]={"0208793e4101",1279246282,"Add most of the boilerplate support for scanf format string checking. This includes","Add most of the boilerplate support for scanf format string checking. This includes"}, | ||
[j]={{x,11516,"bool CheckScanfHandler::HandleScanfSpecifier(const analyze_scanf::ScanfSpecifier &FS, const char *startSpecifier, unsigned specifierLen) {\n if (Amt.getHowSpecified() == OptionalAmount::Constant) {\n if (Amt.getConstantAmount() == 0) {\n EmitFormatDiagnostic(S.PDiag(diag::warn_scanf_nonzero_width), getLocationOfByte(Amt.getStart()),"}}, | [j]={{x,11516,"bool CheckScanfHandler::HandleScanfSpecifier(const analyze_scanf::ScanfSpecifier &FS, const char *startSpecifier, unsigned specifierLen) {\n // ...\n if (Amt.getHowSpecified() == OptionalAmount::Constant) {\n if (Amt.getConstantAmount() == 0) {\n // ...\n EmitFormatDiagnostic(S.PDiag(diag::warn_scanf_nonzero_width), getLocationOfByte(Amt.getStart()),"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/format-strings-scanf.c"]={"clang/test/Sema/format-strings-scanf.c:40:11: warning: zero field width in scanf format string is unused [-Wformat]","clang/test/Sema/format-strings-scanf.c:41:11: warning: zero field width in scanf format string is unused [-Wformat]","clang/test/Sema/format-strings-scanf.c:83:9: warning: zero field width in scanf format string is unused [-Wformat]","clang/test/Sema/format-strings-scanf.c:84:11: warning: zero field width in scanf format string is unused [-Wformat]"} | ["clang/test/Sema/format-strings-scanf.c"]={"clang/test/Sema/format-strings-scanf.c:40:11: warning: zero field width in scanf format string is unused [-Wformat]","clang/test/Sema/format-strings-scanf.c:41:11: warning: zero field width in scanf format string is unused [-Wformat]","clang/test/Sema/format-strings-scanf.c:83:9: warning: zero field width in scanf format string is unused [-Wformat]","clang/test/Sema/format-strings-scanf.c:84:11: warning: zero field width in scanf format string is unused [-Wformat]"} | ||
Line 6,181: | Line 6,181: | ||
[h]=q, | [h]=q, | ||
[i]={"05164816f0ea",1461003053,"Clarifying the wording of this diagnostic; it confused parameter and argument.","Clarifying the wording of this diagnostic; it confused parameter and argument."}, | [i]={"05164816f0ea",1461003053,"Clarifying the wording of this diagnostic; it confused parameter and argument.","Clarifying the wording of this diagnostic; it confused parameter and argument."}, | ||
[j]={{x,8155,"/// Check the arguments to \'__builtin_va_start\' or \'__builtin_ms_va_start\'\n/// for validity. Emit an error and return true on failure; return false\n/// on success.\nbool Sema::SemaBuiltinVAStart(unsigned BuiltinID, CallExpr *TheCall) {\n if (!SecondArgIsLastNamedArgument)\n Diag(TheCall->getArg(1)->getBeginLoc(), diag::warn_second_arg_of_va_start_not_last_named_param);"}}, | [j]={{x,8155,"/// Check the arguments to \'__builtin_va_start\' or \'__builtin_ms_va_start\'\n/// for validity. Emit an error and return true on failure; return false\n/// on success.\nbool Sema::SemaBuiltinVAStart(unsigned BuiltinID, CallExpr *TheCall) {\n // ...\n if (!SecondArgIsLastNamedArgument)\n Diag(TheCall->getArg(1)->getBeginLoc(), diag::warn_second_arg_of_va_start_not_last_named_param);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/C/C2x/n2975.c"]={"clang/test/C/C2x/n2975.c:49:28: warning: second argument to \'va_start\' is not the last named parameter [-Wvarargs]"} | ["clang/test/C/C2x/n2975.c"]={"clang/test/C/C2x/n2975.c:49:28: warning: second argument to \'va_start\' is not the last named parameter [-Wvarargs]"} | ||
Line 6,198: | Line 6,198: | ||
[h]=q, | [h]=q, | ||
[i]={"6290ae476ee6",1310420759,"Add diagnostic for constructs like \"va_arg(l, float)\" which have undefined behavior. PR10201.","Add diagnostic for constructs like \"va_arg(l, float)\" which have undefined behavior. PR10201."}, | [i]={"6290ae476ee6",1310420759,"Add diagnostic for constructs like \"va_arg(l, float)\" which have undefined behavior. PR10201.","Add diagnostic for constructs like \"va_arg(l, float)\" which have undefined behavior. PR10201."}, | ||
[j]={{A,17337,"ExprResult Sema::BuildVAArgExpr(SourceLocation BuiltinLoc, Expr *E, TypeSourceInfo *TInfo, SourceLocation RPLoc) {\n if (!TInfo->getType()->isDependentType()) {\n if (!PromoteType.isNull())\n DiagRuntimeBehavior(TInfo->getTypeLoc().getBeginLoc(), E, PDiag(diag::warn_second_parameter_to_va_arg_never_compatible) << TInfo->getType() << PromoteType << TInfo->getTypeLoc().getSourceRange());"}}, | [j]={{A,17337,"ExprResult Sema::BuildVAArgExpr(SourceLocation BuiltinLoc, Expr *E, TypeSourceInfo *TInfo, SourceLocation RPLoc) {\n // ...\n if (!TInfo->getType()->isDependentType()) {\n // ...\n if (!PromoteType.isNull())\n DiagRuntimeBehavior(TInfo->getTypeLoc().getBeginLoc(), E, PDiag(diag::warn_second_parameter_to_va_arg_never_compatible) << TInfo->getType() << PromoteType << TInfo->getTypeLoc().getSourceRange());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/varargs-x86-64.c"]={"clang/test/Sema/varargs-x86-64.c:71:32: warning: second argument to \'va_arg\' is of promotable type \'float\'; this va_arg has undefined behavior because arguments will be promoted to \'double\' [-Wvarargs]","clang/test/Sema/varargs-x86-64.c:73:32: warning: second argument to \'va_arg\' is of promotable type \'short\'; this va_arg has undefined behavior because arguments will be promoted to \'int\' [-Wvarargs]","clang/test/Sema/varargs-x86-64.c:74:32: warning: second argument to \'va_arg\' is of promotable type \'char\'; this va_arg has undefined behavior because arguments will be promoted to \'int\' [-Wvarargs]"} | ["clang/test/Sema/varargs-x86-64.c"]={"clang/test/Sema/varargs-x86-64.c:71:32: warning: second argument to \'va_arg\' is of promotable type \'float\'; this va_arg has undefined behavior because arguments will be promoted to \'double\' [-Wvarargs]","clang/test/Sema/varargs-x86-64.c:73:32: warning: second argument to \'va_arg\' is of promotable type \'short\'; this va_arg has undefined behavior because arguments will be promoted to \'int\' [-Wvarargs]","clang/test/Sema/varargs-x86-64.c:74:32: warning: second argument to \'va_arg\' is of promotable type \'char\'; this va_arg has undefined behavior because arguments will be promoted to \'int\' [-Wvarargs]"} | ||
Line 6,215: | Line 6,215: | ||
[h]=q, | [h]=q, | ||
[i]={"254a5c07e7c9",1307947023,"Give a diagnostic when using non-POD types in a va_arg","Give a diagnostic when using non-POD types in a va_arg"}, | [i]={"254a5c07e7c9",1307947023,"Give a diagnostic when using non-POD types in a va_arg","Give a diagnostic when using non-POD types in a va_arg"}, | ||
[j]={{A,17289,"ExprResult Sema::BuildVAArgExpr(SourceLocation BuiltinLoc, Expr *E, TypeSourceInfo *TInfo, SourceLocation RPLoc) {\n if (!TInfo->getType()->isDependentType()) {\n if (!TInfo->getType().isPODType(Context)) {\n Diag(TInfo->getTypeLoc().getBeginLoc(), TInfo->getType()->isObjCLifetimeType() ? diag::warn_second_parameter_to_va_arg_ownership_qualified : diag::warn_second_parameter_to_va_arg_not_pod) << TInfo->getType() << TInfo->getTypeLoc().getSourceRange();"}}, | [j]={{A,17289,"ExprResult Sema::BuildVAArgExpr(SourceLocation BuiltinLoc, Expr *E, TypeSourceInfo *TInfo, SourceLocation RPLoc) {\n // ...\n if (!TInfo->getType()->isDependentType()) {\n // ...\n if (!TInfo->getType().isPODType(Context)) {\n Diag(TInfo->getTypeLoc().getBeginLoc(), TInfo->getType()->isObjCLifetimeType() ? diag::warn_second_parameter_to_va_arg_ownership_qualified : diag::warn_second_parameter_to_va_arg_not_pod) << TInfo->getType() << TInfo->getTypeLoc().getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/vararg-non-pod.cpp"]={"clang/test/SemaCXX/vararg-non-pod.cpp:177:32: warning: second argument to \'va_arg\' is of non-POD type \'C\' [-Wnon-pod-varargs]"} | ["clang/test/SemaCXX/vararg-non-pod.cpp"]={"clang/test/SemaCXX/vararg-non-pod.cpp:177:32: warning: second argument to \'va_arg\' is of non-POD type \'C\' [-Wnon-pod-varargs]"} | ||
Line 6,232: | Line 6,232: | ||
[h]=q, | [h]=q, | ||
[i]={"7e1eb935dbc3",1312008327,"When complaining about a non-POD second argument to va_arg, use a","When complaining about a non-POD second argument to va_arg, use a"}, | [i]={"7e1eb935dbc3",1312008327,"When complaining about a non-POD second argument to va_arg, use a","When complaining about a non-POD second argument to va_arg, use a"}, | ||
[j]={{A,17234,"ExprResult Sema::BuildVAArgExpr(SourceLocation BuiltinLoc, Expr *E, TypeSourceInfo *TInfo, SourceLocation RPLoc) {\n if (!TInfo->getType()->isDependentType()) {\n if (!TInfo->getType().isPODType(Context)) {\n Diag(TInfo->getTypeLoc().getBeginLoc(), TInfo->getType()->isObjCLifetimeType() ? diag::warn_second_parameter_to_va_arg_ownership_qualified : diag::warn_second_parameter_to_va_arg_not_pod) << TInfo->getType() << TInfo->getTypeLoc().getSourceRange();"}}, | [j]={{A,17234,"ExprResult Sema::BuildVAArgExpr(SourceLocation BuiltinLoc, Expr *E, TypeSourceInfo *TInfo, SourceLocation RPLoc) {\n // ...\n if (!TInfo->getType()->isDependentType()) {\n // ...\n if (!TInfo->getType().isPODType(Context)) {\n Diag(TInfo->getTypeLoc().getBeginLoc(), TInfo->getType()->isObjCLifetimeType() ? diag::warn_second_parameter_to_va_arg_ownership_qualified : diag::warn_second_parameter_to_va_arg_not_pod) << TInfo->getType() << TInfo->getTypeLoc().getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/arc-non-pod-memaccess.m"]={"clang/test/SemaObjC/arc-non-pod-memaccess.m:61:35: error: second argument to \'va_arg\' is of ARC ownership-qualified type \'__strong id\' [-Wnon-pod-varargs]"} | ["clang/test/SemaObjC/arc-non-pod-memaccess.m"]={"clang/test/SemaObjC/arc-non-pod-memaccess.m:61:35: error: second argument to \'va_arg\' is of ARC ownership-qualified type \'__strong id\' [-Wnon-pod-varargs]"} | ||
Line 6,250: | Line 6,250: | ||
[h]=q, | [h]=q, | ||
[i]={"6ed0fad9996d",1524519321,"[Sema] Add -Wno-self-assign-overloaded","[Sema] Add -Wno-self-assign-overloaded"}, | [i]={"6ed0fad9996d",1524519321,"[Sema] Add -Wno-self-assign-overloaded","[Sema] Add -Wno-self-assign-overloaded"}, | ||
[j]={{A,15295,"/// DiagnoseSelfAssignment - Emits a warning if a value is assigned to itself.\n/// This warning suppressed in the event of macro expansions.\nstatic void DiagnoseSelfAssignment(Sema &S, Expr *LHSExpr, Expr *RHSExpr, SourceLocation OpLoc, bool IsBuiltin) {\n auto Diag = S.Diag(OpLoc, IsBuiltin ? diag::warn_self_assignment_builtin : diag::warn_self_assignment_overloaded) << LHSDeclRef->getType() << LHSExpr->getSourceRange() << RHSExpr->getSourceRange();"}}, | [j]={{A,15295,"/// DiagnoseSelfAssignment - Emits a warning if a value is assigned to itself.\n/// This warning suppressed in the event of macro expansions.\nstatic void DiagnoseSelfAssignment(Sema &S, Expr *LHSExpr, Expr *RHSExpr, SourceLocation OpLoc, bool IsBuiltin) {\n // ...\n auto Diag = S.Diag(OpLoc, IsBuiltin ? diag::warn_self_assignment_builtin : diag::warn_self_assignment_overloaded) << LHSDeclRef->getType() << LHSExpr->getSourceRange() << RHSExpr->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/member-init.cpp"]={"clang/test/SemaCXX/member-init.cpp:103:25: warning: explicitly assigning value of variable of type \'Sprite\' to itself [-Wself-assign-overloaded]"} | ["clang/test/SemaCXX/member-init.cpp"]={"clang/test/SemaCXX/member-init.cpp:103:25: warning: explicitly assigning value of variable of type \'Sprite\' to itself [-Wself-assign-overloaded]"} | ||
Line 6,268: | Line 6,268: | ||
[h]=q, | [h]=q, | ||
[i]={"6ed0fad9996d",1524519321,"[Sema] Add -Wno-self-assign-overloaded","[Sema] Add -Wno-self-assign-overloaded"}, | [i]={"6ed0fad9996d",1524519321,"[Sema] Add -Wno-self-assign-overloaded","[Sema] Add -Wno-self-assign-overloaded"}, | ||
[j]={{A,15331,"/// DiagnoseSelfAssignment - Emits a warning if a value is assigned to itself.\n/// This warning suppressed in the event of macro expansions.\nstatic void DiagnoseSelfAssignment(Sema &S, Expr *LHSExpr, Expr *RHSExpr, SourceLocation OpLoc, bool IsBuiltin) {\n auto Diag = S.Diag(OpLoc, IsBuiltin ? diag::warn_self_assignment_builtin : diag::warn_self_assignment_overloaded) << LHSDeclRef->getType() << LHSExpr->getSourceRange() << RHSExpr->getSourceRange();"}} | [j]={{A,15331,"/// DiagnoseSelfAssignment - Emits a warning if a value is assigned to itself.\n/// This warning suppressed in the event of macro expansions.\nstatic void DiagnoseSelfAssignment(Sema &S, Expr *LHSExpr, Expr *RHSExpr, SourceLocation OpLoc, bool IsBuiltin) {\n // ...\n auto Diag = S.Diag(OpLoc, IsBuiltin ? diag::warn_self_assignment_builtin : diag::warn_self_assignment_overloaded) << LHSDeclRef->getType() << LHSExpr->getSourceRange() << RHSExpr->getSourceRange();"}} | ||
}, | }, | ||
["warn_self_move"]={ | ["warn_self_move"]={ | ||
Line 6,283: | Line 6,283: | ||
[h]=q, | [h]=q, | ||
[i]={"17ddb829aaed",1420869858,"Add a new warning, -Wself-move, to Clang.","Add a new warning, -Wself-move, to Clang."}, | [i]={"17ddb829aaed",1420869858,"Add a new warning, -Wself-move, to Clang.","Add a new warning, -Wself-move, to Clang."}, | ||
[j]={{x,17998,"/// DiagnoseSelfMove - Emits a warning if a value is moved to itself.\nvoid Sema::DiagnoseSelfMove(const Expr *LHSExpr, const Expr *RHSExpr, SourceLocation OpLoc) {\n // Two DeclRefExpr\'s, check that the decls are the same.\n if (LHSDeclRef && RHSDeclRef) {\n auto D = Diag(OpLoc, diag::warn_self_move) << LHSExpr->getType() << LHSExpr->getSourceRange() << RHSExpr->getSourceRange();"},{x,18041,"/// DiagnoseSelfMove - Emits a warning if a value is moved to itself.\nvoid Sema::DiagnoseSelfMove(const Expr *LHSExpr, const Expr *RHSExpr, SourceLocation OpLoc) {\n if (LHSDeclRef && RHSDeclRef) {\n Diag(OpLoc, diag::warn_self_move) << LHSExpr->getType() << 0 << LHSExpr->getSourceRange() << RHSExpr->getSourceRange();"},{x,18048,"/// DiagnoseSelfMove - Emits a warning if a value is moved to itself.\nvoid Sema::DiagnoseSelfMove(const Expr *LHSExpr, const Expr *RHSExpr, SourceLocation OpLoc) {\n if (isa<CXXThisExpr>(LHSBase) && isa<CXXThisExpr>(RHSBase))\n Diag(OpLoc, diag::warn_self_move) << LHSExpr->getType() << 0 << LHSExpr->getSourceRange() << RHSExpr->getSourceRange();"}}, | [j]={{x,17998,"/// DiagnoseSelfMove - Emits a warning if a value is moved to itself.\nvoid Sema::DiagnoseSelfMove(const Expr *LHSExpr, const Expr *RHSExpr, SourceLocation OpLoc) {\n // ...\n // Two DeclRefExpr\'s, check that the decls are the same.\n if (LHSDeclRef && RHSDeclRef) {\n // ...\n auto D = Diag(OpLoc, diag::warn_self_move) << LHSExpr->getType() << LHSExpr->getSourceRange() << RHSExpr->getSourceRange();"},{x,18041,"/// DiagnoseSelfMove - Emits a warning if a value is moved to itself.\nvoid Sema::DiagnoseSelfMove(const Expr *LHSExpr, const Expr *RHSExpr, SourceLocation OpLoc) {\n // ...\n if (LHSDeclRef && RHSDeclRef) {\n // ...\n Diag(OpLoc, diag::warn_self_move) << LHSExpr->getType() << 0 << LHSExpr->getSourceRange() << RHSExpr->getSourceRange();"},{x,18048,"/// DiagnoseSelfMove - Emits a warning if a value is moved to itself.\nvoid Sema::DiagnoseSelfMove(const Expr *LHSExpr, const Expr *RHSExpr, SourceLocation OpLoc) {\n // ...\n if (isa<CXXThisExpr>(LHSBase) && isa<CXXThisExpr>(RHSBase))\n Diag(OpLoc, diag::warn_self_move) << LHSExpr->getType() << 0 << LHSExpr->getSourceRange() << RHSExpr->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-self-move.cpp"]={"clang/test/SemaCXX/warn-self-move.cpp:16:5: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:17:7: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:20:5: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:26:10: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:27:12: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:30:10: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:37:7: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:40:13: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:43:7: warning: explicitly moving variable of type \'int\' to itself; did you mean to move to member \'x\'? [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:52:5: warning: explicitly moving variable of type \'A\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:55:5: warning: explicitly moving variable of type \'B\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:56:7: warning: explicitly moving variable of type \'A\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:59:5: warning: explicitly moving variable of type \'C\' to itself [-Wself-move]"} | ["clang/test/SemaCXX/warn-self-move.cpp"]={"clang/test/SemaCXX/warn-self-move.cpp:16:5: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:17:7: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:20:5: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:26:10: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:27:12: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:30:10: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:37:7: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:40:13: warning: explicitly moving variable of type \'int\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:43:7: warning: explicitly moving variable of type \'int\' to itself; did you mean to move to member \'x\'? [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:52:5: warning: explicitly moving variable of type \'A\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:55:5: warning: explicitly moving variable of type \'B\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:56:7: warning: explicitly moving variable of type \'A\' to itself [-Wself-move]","clang/test/SemaCXX/warn-self-move.cpp:59:5: warning: explicitly moving variable of type \'C\' to itself [-Wself-move]"} | ||
Line 6,301: | Line 6,301: | ||
[h]=B, | [h]=B, | ||
[i]={"f9a28abe8d1e",1257891389,"Make -Wsemicolon-before-method-body opt-in (and part of -Wextra). Addresses <rdar://problem/7381735...","Make -Wsemicolon-before-method-body opt-in (and part of -Wextra). Addresses <rdar://problem/7381735>."}, | [i]={"f9a28abe8d1e",1257891389,"Make -Wsemicolon-before-method-body opt-in (and part of -Wextra). Addresses <rdar://problem/7381735...","Make -Wsemicolon-before-method-body opt-in (and part of -Wextra). Addresses <rdar://problem/7381735>."}, | ||
[j]={{"clang/lib/Parse/ParseObjc.cpp",2759,"/// objc-method-def: objc-method-proto \';\'[opt] \'{\' body \'}\'\n///\nDecl *Parser::ParseObjCMethodDefinition() {\n // parse optional \';\'\n if (Tok.is(tok::semi)) {\n if (CurParsedObjCImpl) {\n Diag(Tok, diag::warn_semicolon_before_method_body) << FixItHint::CreateRemoval(Tok.getLocation());"}}, | [j]={{"clang/lib/Parse/ParseObjc.cpp",2759,"/// objc-method-def: objc-method-proto \';\'[opt] \'{\' body \'}\'\n///\nDecl *Parser::ParseObjCMethodDefinition() {\n // ...\n // parse optional \';\'\n if (Tok.is(tok::semi)) {\n if (CurParsedObjCImpl) {\n Diag(Tok, diag::warn_semicolon_before_method_body) << FixItHint::CreateRemoval(Tok.getLocation());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/objc-string-constant.m"]={"clang/test/SemaObjC/objc-string-constant.m:32:20: warning: semicolon before method body is ignored [-Wsemicolon-before-method-body]"} | ["clang/test/SemaObjC/objc-string-constant.m"]={"clang/test/SemaObjC/objc-string-constant.m:32:20: warning: semicolon before method body is ignored [-Wsemicolon-before-method-body]"} | ||
Line 6,318: | Line 6,318: | ||
[h]=q, | [h]=q, | ||
[i]={"6c6aea914ab0",1239750921,"Diagnose properties which have no implementations;","Diagnose properties which have no implementations;"}, | [i]={"6c6aea914ab0",1239750921,"Diagnose properties which have no implementations;","Diagnose properties which have no implementations;"}, | ||
[j]={{V,2019,"static void DiagnoseUnimplementedAccessor(Sema &S, ObjCInterfaceDecl *PrimaryClass, Selector Method, ObjCImplDecl *IMPDecl, ObjCContainerDecl *CDecl, ObjCCategoryDecl *C, ObjCPropertyDecl *Prop, llvm::SmallPtrSet<const ObjCMethodDecl *, 8> &SMap) {\n // When reporting on missing property setter/getter implementation in\n // categories, do not report when they are declared in primary class,\n // class\'s protocol, or one of it super classes. This is because,\n // the class is going to implement them.\n if (I == SMap.end() && (PrimaryClass == nullptr || !PrimaryClass->lookupPropertyAccessor(Method, C, Prop->isClassProperty()))) {\n unsigned diag = isa<ObjCCategoryDecl>(CDecl) ? (Prop->isClassProperty() ? diag::warn_impl_required_in_category_for_class_property : diag::warn_setter_getter_impl_required_in_category) : (Prop->isClassProperty() ? diag::warn_impl_required_for_class_property : diag::warn_setter_getter_impl_required);"}}, | [j]={{V,2019,"static void DiagnoseUnimplementedAccessor(Sema &S, ObjCInterfaceDecl *PrimaryClass, Selector Method, ObjCImplDecl *IMPDecl, ObjCContainerDecl *CDecl, ObjCCategoryDecl *C, ObjCPropertyDecl *Prop, llvm::SmallPtrSet<const ObjCMethodDecl *, 8> &SMap) {\n // ...\n // When reporting on missing property setter/getter implementation in\n // categories, do not report when they are declared in primary class,\n // class\'s protocol, or one of it super classes. This is because,\n // the class is going to implement them.\n if (I == SMap.end() && (PrimaryClass == nullptr || !PrimaryClass->lookupPropertyAccessor(Method, C, Prop->isClassProperty()))) {\n unsigned diag = isa<ObjCCategoryDecl>(CDecl) ? (Prop->isClassProperty() ? diag::warn_impl_required_in_category_for_class_property : diag::warn_setter_getter_impl_required_in_category) : (Prop->isClassProperty() ? diag::warn_impl_required_for_class_property : diag::warn_setter_getter_impl_required);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property-category-1.m"]={"clang/test/SemaObjC/property-category-1.m:49:17: warning: property \'p0\' requires method \'p0\' to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation [-Wobjc-property-implementation]"} | ["clang/test/SemaObjC/property-category-1.m"]={"clang/test/SemaObjC/property-category-1.m:49:17: warning: property \'p0\' requires method \'p0\' to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation [-Wobjc-property-implementation]"} | ||
Line 6,335: | Line 6,335: | ||
[h]=q, | [h]=q, | ||
[i]={"4f8a57112f13",1264016181,"Settled rule on warning on unimplemented property in","Settled rule on warning on unimplemented property in"}, | [i]={"4f8a57112f13",1264016181,"Settled rule on warning on unimplemented property in","Settled rule on warning on unimplemented property in"}, | ||
[j]={{V,2016,"static void DiagnoseUnimplementedAccessor(Sema &S, ObjCInterfaceDecl *PrimaryClass, Selector Method, ObjCImplDecl *IMPDecl, ObjCContainerDecl *CDecl, ObjCCategoryDecl *C, ObjCPropertyDecl *Prop, llvm::SmallPtrSet<const ObjCMethodDecl *, 8> &SMap) {\n // When reporting on missing property setter/getter implementation in\n // categories, do not report when they are declared in primary class,\n // class\'s protocol, or one of it super classes. This is because,\n // the class is going to implement them.\n if (I == SMap.end() && (PrimaryClass == nullptr || !PrimaryClass->lookupPropertyAccessor(Method, C, Prop->isClassProperty()))) {\n unsigned diag = isa<ObjCCategoryDecl>(CDecl) ? (Prop->isClassProperty() ? diag::warn_impl_required_in_category_for_class_property : diag::warn_setter_getter_impl_required_in_category) : (Prop->isClassProperty() ? diag::warn_impl_required_for_class_property : diag::warn_setter_getter_impl_required);"}}, | [j]={{V,2016,"static void DiagnoseUnimplementedAccessor(Sema &S, ObjCInterfaceDecl *PrimaryClass, Selector Method, ObjCImplDecl *IMPDecl, ObjCContainerDecl *CDecl, ObjCCategoryDecl *C, ObjCPropertyDecl *Prop, llvm::SmallPtrSet<const ObjCMethodDecl *, 8> &SMap) {\n // ...\n // When reporting on missing property setter/getter implementation in\n // categories, do not report when they are declared in primary class,\n // class\'s protocol, or one of it super classes. This is because,\n // the class is going to implement them.\n if (I == SMap.end() && (PrimaryClass == nullptr || !PrimaryClass->lookupPropertyAccessor(Method, C, Prop->isClassProperty()))) {\n unsigned diag = isa<ObjCCategoryDecl>(CDecl) ? (Prop->isClassProperty() ? diag::warn_impl_required_in_category_for_class_property : diag::warn_setter_getter_impl_required_in_category) : (Prop->isClassProperty() ? diag::warn_impl_required_for_class_property : diag::warn_setter_getter_impl_required);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/default-synthesize.m"]={"clang/test/SemaObjC/default-synthesize.m:110:17: warning: property \'p\' requires method \'p\' to be defined - use @dynamic or provide a method implementation in this category [-Wobjc-property-implementation]","clang/test/SemaObjC/default-synthesize.m:110:17: warning: property \'p\' requires method \'setP:\' to be defined - use @dynamic or provide a method implementation in this category [-Wobjc-property-implementation]"} | ["clang/test/SemaObjC/default-synthesize.m"]={"clang/test/SemaObjC/default-synthesize.m:110:17: warning: property \'p\' requires method \'p\' to be defined - use @dynamic or provide a method implementation in this category [-Wobjc-property-implementation]","clang/test/SemaObjC/default-synthesize.m:110:17: warning: property \'p\' requires method \'setP:\' to be defined - use @dynamic or provide a method implementation in this category [-Wobjc-property-implementation]"} | ||
Line 6,353: | Line 6,353: | ||
[h]=y, | [h]=y, | ||
[i]={"a6ae060db4fd",1486524613,"Sema: add warning for c++ member variable shadowing","Sema: add warning for c++ member variable shadowing"}, | [i]={"a6ae060db4fd",1486524613,"Sema: add warning for c++ member variable shadowing","Sema: add warning for c++ member variable shadowing"}, | ||
[j]={{db,3353,"// Check if there is a field shadowing.\nvoid Sema::CheckShadowInheritedFields(const SourceLocation &Loc, DeclarationName FieldName, const CXXRecordDecl *RD, bool DeclIsField) {\n if (Diags.isIgnored(diag::warn_shadow_field, Loc))"},{db,3391,"// Check if there is a field shadowing.\nvoid Sema::CheckShadowInheritedFields(const SourceLocation &Loc, DeclarationName FieldName, const CXXRecordDecl *RD, bool DeclIsField) {\n for (const auto &P : Paths) {\n if (AS_none != CXXRecordDecl::MergeAccess(P.Access, BaseField->getAccess())) {\n Diag(Loc, diag::warn_shadow_field) << FieldName << RD << Base << DeclIsField;"}}, | [j]={{db,3353,"// Check if there is a field shadowing.\nvoid Sema::CheckShadowInheritedFields(const SourceLocation &Loc, DeclarationName FieldName, const CXXRecordDecl *RD, bool DeclIsField) {\n if (Diags.isIgnored(diag::warn_shadow_field, Loc))"},{db,3391,"// Check if there is a field shadowing.\nvoid Sema::CheckShadowInheritedFields(const SourceLocation &Loc, DeclarationName FieldName, const CXXRecordDecl *RD, bool DeclIsField) {\n // ...\n for (const auto &P : Paths) {\n // ...\n if (AS_none != CXXRecordDecl::MergeAccess(P.Access, BaseField->getAccess())) {\n Diag(Loc, diag::warn_shadow_field) << FieldName << RD << Base << DeclIsField;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/class.derived/class.member.lookup/p10.cpp"]={"clang/test/CXX/class.derived/class.member.lookup/p10.cpp:39:12: warning: non-static data member \'x\' of \'E\' shadows member inherited from type \'A\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:40:8: warning: non-static data member \'y\' of \'E\' shadows member inherited from type \'A\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:42:8: warning: non-static data member \'w\' of \'E\' shadows member inherited from type \'D\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:42:8: warning: non-static data member \'w\' of \'E\' shadows member inherited from type \'W\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:53:7: warning: non-static data member \'x\' of \'H\' shadows member inherited from type \'A\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:54:7: warning: non-static data member \'y\' of \'H\' shadows member inherited from type \'A\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:67:7: warning: non-static data member \'x\' of \'J\' shadows member inherited from type \'I\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:110:7: warning: non-static data member \'x\' of \'E1\' shadows member inherited from type \'A1\' [-Wshadow-field]"} | ["clang/test/CXX/class.derived/class.member.lookup/p10.cpp"]={"clang/test/CXX/class.derived/class.member.lookup/p10.cpp:39:12: warning: non-static data member \'x\' of \'E\' shadows member inherited from type \'A\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:40:8: warning: non-static data member \'y\' of \'E\' shadows member inherited from type \'A\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:42:8: warning: non-static data member \'w\' of \'E\' shadows member inherited from type \'D\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:42:8: warning: non-static data member \'w\' of \'E\' shadows member inherited from type \'W\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:53:7: warning: non-static data member \'x\' of \'H\' shadows member inherited from type \'A\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:54:7: warning: non-static data member \'y\' of \'H\' shadows member inherited from type \'A\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:67:7: warning: non-static data member \'x\' of \'J\' shadows member inherited from type \'I\' [-Wshadow-field]","clang/test/CXX/class.derived/class.member.lookup/p10.cpp:110:7: warning: non-static data member \'x\' of \'E1\' shadows member inherited from type \'A1\' [-Wshadow-field]"} | ||
Line 6,370: | Line 6,370: | ||
[h]=q, | [h]=q, | ||
[i]={"f53fab87d80b",1249662020,"PR3333: warn when shifting by invalid amount","PR3333: warn when shifting by invalid amount"}, | [i]={"f53fab87d80b",1249662020,"PR3333: warn when shifting by invalid amount","PR3333: warn when shifting by invalid amount"}, | ||
[j]={{A,12034,"static void DiagnoseBadShiftValues(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, BinaryOperatorKind Opc, QualType LHSType) {\n if (Right.uge(LeftBits)) {\n S.DiagRuntimeBehavior(Loc, RHS.get(), S.PDiag(diag::warn_shift_gt_typewidth) << RHS.get()->getSourceRange());"}}, | [j]={{A,12034,"static void DiagnoseBadShiftValues(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, BinaryOperatorKind Opc, QualType LHSType) {\n // ...\n if (Right.uge(LeftBits)) {\n S.DiagRuntimeBehavior(Loc, RHS.get(), S.PDiag(diag::warn_shift_gt_typewidth) << RHS.get()->getSourceRange());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/runtimediag-ppe.cpp"]={"clang/test/SemaCXX/runtimediag-ppe.cpp:16:33: warning: shift count >= width of type [-Wshift-count-overflow]"} | ["clang/test/SemaCXX/runtimediag-ppe.cpp"]={"clang/test/SemaCXX/runtimediag-ppe.cpp:16:33: warning: shift count >= width of type [-Wshift-count-overflow]"} | ||
Line 6,387: | Line 6,387: | ||
[h]=q, | [h]=q, | ||
[i]={"bf0f7757e242",1436205729,"[Sema] Warn when shifting a negative value.","[Sema] Warn when shifting a negative value."}, | [i]={"bf0f7757e242",1436205729,"[Sema] Warn when shifting a negative value.","[Sema] Warn when shifting a negative value."}, | ||
[j]={{A,12056,"static void DiagnoseBadShiftValues(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, BinaryOperatorKind Opc, QualType LHSType) {\n // If LHS does not have a non-negative value then, the\n // behavior is undefined before C++2a. Warn about it.\n if (Left.isNegative()) {\n S.DiagRuntimeBehavior(Loc, LHS.get(), S.PDiag(diag::warn_shift_lhs_negative) << LHS.get()->getSourceRange());"}}, | [j]={{A,12056,"static void DiagnoseBadShiftValues(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, BinaryOperatorKind Opc, QualType LHSType) {\n // ...\n // If LHS does not have a non-negative value then, the\n // behavior is undefined before C++2a. Warn about it.\n if (Left.isNegative()) {\n S.DiagRuntimeBehavior(Loc, LHS.get(), S.PDiag(diag::warn_shift_lhs_negative) << LHS.get()->getSourceRange());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/shift.c"]={"clang/test/Sema/shift.c:45:10: warning: shifting a negative signed value is undefined [-Wshift-negative-value]","clang/test/Sema/shift.c:46:10: warning: shifting a negative signed value is undefined [-Wshift-negative-value]","clang/test/Sema/shift.c:55:17: warning: shifting a negative signed value is undefined [-Wshift-negative-value]"} | ["clang/test/Sema/shift.c"]={"clang/test/Sema/shift.c:45:10: warning: shifting a negative signed value is undefined [-Wshift-negative-value]","clang/test/Sema/shift.c:46:10: warning: shifting a negative signed value is undefined [-Wshift-negative-value]","clang/test/Sema/shift.c:55:17: warning: shifting a negative signed value is undefined [-Wshift-negative-value]"} | ||
Line 6,404: | Line 6,404: | ||
[h]=q, | [h]=q, | ||
[i]={"f53fab87d80b",1249662020,"PR3333: warn when shifting by invalid amount","PR3333: warn when shifting by invalid amount"}, | [i]={"f53fab87d80b",1249662020,"PR3333: warn when shifting by invalid amount","PR3333: warn when shifting by invalid amount"}, | ||
[j]={{A,12001,"static void DiagnoseBadShiftValues(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, BinaryOperatorKind Opc, QualType LHSType) {\n if (Right.isNegative()) {\n S.DiagRuntimeBehavior(Loc, RHS.get(), S.PDiag(diag::warn_shift_negative) << RHS.get()->getSourceRange());"}}, | [j]={{A,12001,"static void DiagnoseBadShiftValues(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, BinaryOperatorKind Opc, QualType LHSType) {\n // ...\n if (Right.isNegative()) {\n S.DiagRuntimeBehavior(Loc, RHS.get(), S.PDiag(diag::warn_shift_negative) << RHS.get()->getSourceRange());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/shift.c"]={"clang/test/Sema/shift.c:21:9: warning: shift count is negative [-Wshift-count-negative]","clang/test/Sema/shift.c:22:9: warning: shift count is negative [-Wshift-count-negative]","clang/test/Sema/shift.c:31:5: warning: shift count is negative [-Wshift-count-negative]","clang/test/Sema/shift.c:32:5: warning: shift count is negative [-Wshift-count-negative]"} | ["clang/test/Sema/shift.c"]={"clang/test/Sema/shift.c:21:9: warning: shift count is negative [-Wshift-count-negative]","clang/test/Sema/shift.c:22:9: warning: shift count is negative [-Wshift-count-negative]","clang/test/Sema/shift.c:31:5: warning: shift count is negative [-Wshift-count-negative]","clang/test/Sema/shift.c:32:5: warning: shift count is negative [-Wshift-count-negative]"} | ||
Line 6,421: | Line 6,421: | ||
[h]=q, | [h]=q, | ||
[i]={"4c6fdca03573",1298504051,"Implement a warning for known shift overflows on constant shift","Implement a warning for known shift overflows on constant shift"}, | [i]={"4c6fdca03573",1298504051,"Implement a warning for known shift overflows on constant shift","Implement a warning for known shift overflows on constant shift"}, | ||
[j]={{A,12075,"static void DiagnoseBadShiftValues(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, BinaryOperatorKind Opc, QualType LHSType) {\n S.Diag(Loc, diag::warn_shift_result_gt_typewidth) << HexResult.str() << Result.getSignificantBits() << LHSType << Left.getBitWidth() << LHS.get()->getSourceRange() << RHS.get()->getSourceRange();"}}, | [j]={{A,12075,"static void DiagnoseBadShiftValues(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, BinaryOperatorKind Opc, QualType LHSType) {\n // ...\n S.Diag(Loc, diag::warn_shift_result_gt_typewidth) << HexResult.str() << Result.getSignificantBits() << LHSType << Left.getBitWidth() << LHS.get()->getSourceRange() << RHS.get()->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/shift.c"]={"clang/test/Sema/shift.c:43:9: warning: signed shift result (0x100000000) requires 34 bits to represent, but \'int\' only has 32 bits [-Wshift-overflow]"} | ["clang/test/Sema/shift.c"]={"clang/test/Sema/shift.c:43:9: warning: signed shift result (0x100000000) requires 34 bits to represent, but \'int\' only has 32 bits [-Wshift-overflow]"} | ||
Line 6,439: | Line 6,439: | ||
[h]=q, | [h]=q, | ||
[i]={"70f05fdfeebd",1308099292,"Sema: show shift result in hexadecimal","Sema: show shift result in hexadecimal"}, | [i]={"70f05fdfeebd",1308099292,"Sema: show shift result in hexadecimal","Sema: show shift result in hexadecimal"}, | ||
[j]={{A,12062,"static void DiagnoseBadShiftValues(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, BinaryOperatorKind Opc, QualType LHSType) {\n // If we are only missing a sign bit, this is less likely to result in actual\n // bugs -- if the result is cast back to an unsigned type, it will have the\n // expected value. Thus we place this behind a different warning that can be\n // turned off separately if needed.\n if (LeftBits == ResultBits - 1) {\n S.Diag(Loc, diag::warn_shift_result_sets_sign_bit) << HexResult << LHSType << LHS.get()->getSourceRange() << RHS.get()->getSourceRange();"}}, | [j]={{A,12062,"static void DiagnoseBadShiftValues(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, BinaryOperatorKind Opc, QualType LHSType) {\n // ...\n // If we are only missing a sign bit, this is less likely to result in actual\n // bugs -- if the result is cast back to an unsigned type, it will have the\n // expected value. Thus we place this behind a different warning that can be\n // turned off separately if needed.\n if (LeftBits == ResultBits - 1) {\n S.Diag(Loc, diag::warn_shift_result_sets_sign_bit) << HexResult << LHSType << LHS.get()->getSourceRange() << RHS.get()->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/shift.c"]={"clang/test/Sema/shift.c:44:9: warning: signed shift result (0x80000000) sets the sign bit of the shift expression\'s type (\'int\') and becomes negative [-Wshift-sign-overflow]"} | ["clang/test/Sema/shift.c"]={"clang/test/Sema/shift.c:44:9: warning: signed shift result (0x80000000) sets the sign bit of the shift expression\'s type (\'int\') and becomes negative [-Wshift-sign-overflow]"} | ||
Line 6,456: | Line 6,456: | ||
[h]=Y, | [h]=Y, | ||
[i]={"6c93b3e29c56",1418853437,"Adding a -Wunused-value warning for expressions with side effects used in an unevaluated expression ...","Adding a -Wunused-value warning for expressions with side effects used in an unevaluated expression context, such as sizeof(), or decltype(). Also adds a similar warning when the expression passed to typeid() *is* evaluated, since it is equally likely that the user would expect the expression operand to be unevaluated in that case."}, | [i]={"6c93b3e29c56",1418853437,"Adding a -Wunused-value warning for expressions with side effects used in an unevaluated expression ...","Adding a -Wunused-value warning for expressions with side effects used in an unevaluated expression context, such as sizeof(), or decltype(). Also adds a similar warning when the expression passed to typeid() *is* evaluated, since it is equally likely that the user would expect the expression operand to be unevaluated in that case."}, | ||
[j]={{kc,641,"/// Build a C++ typeid expression with an expression operand.\nExprResult Sema::BuildCXXTypeId(QualType TypeInfoType, SourceLocation TypeidLoc, Expr *E, SourceLocation RParenLoc) {\n if (E->getType()->isVariablyModifiedType())\n else if (!inTemplateInstantiation() && E->HasSideEffects(Context, WasEvaluated)) {\n Diag(E->getExprLoc(), WasEvaluated ? diag::warn_side_effects_typeid : diag::warn_side_effects_unevaluated_context);"}}, | [j]={{kc,641,"/// Build a C++ typeid expression with an expression operand.\nExprResult Sema::BuildCXXTypeId(QualType TypeInfoType, SourceLocation TypeidLoc, Expr *E, SourceLocation RParenLoc) {\n // ...\n if (E->getType()->isVariablyModifiedType())\n // ...\n else if (!inTemplateInstantiation() && E->HasSideEffects(Context, WasEvaluated)) {\n // ...\n Diag(E->getExprLoc(), WasEvaluated ? diag::warn_side_effects_typeid : diag::warn_side_effects_unevaluated_context);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp"]={"clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp:20:35: warning: expression with side effects will be evaluated despite being used as an operand to \'typeid\' [-Wpotentially-evaluated-expression]"} | ["clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp"]={"clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp:20:35: warning: expression with side effects will be evaluated despite being used as an operand to \'typeid\' [-Wpotentially-evaluated-expression]"} | ||
Line 6,473: | Line 6,473: | ||
[h]=Y, | [h]=Y, | ||
[i]={"6c93b3e29c56",1418853437,"Adding a -Wunused-value warning for expressions with side effects used in an unevaluated expression ...","Adding a -Wunused-value warning for expressions with side effects used in an unevaluated expression context, such as sizeof(), or decltype(). Also adds a similar warning when the expression passed to typeid() *is* evaluated, since it is equally likely that the user would expect the expression operand to be unevaluated in that case."}, | [i]={"6c93b3e29c56",1418853437,"Adding a -Wunused-value warning for expressions with side effects used in an unevaluated expression ...","Adding a -Wunused-value warning for expressions with side effects used in an unevaluated expression context, such as sizeof(), or decltype(). Also adds a similar warning when the expression passed to typeid() *is* evaluated, since it is equally likely that the user would expect the expression operand to be unevaluated in that case."}, | ||
[j]={{A,1701,"ExprResult Sema::CreateGenericSelectionExpr(SourceLocation KeyLoc, SourceLocation DefaultLoc, SourceLocation RParenLoc, bool PredicateIsExpr, void *ControllingExprOrType, ArrayRef<TypeSourceInfo *> Types, ArrayRef<Expr *> Exprs) {\n // The controlling expression is an unevaluated operand, so side effects are\n // likely unintended.\n if (!inTemplateInstantiation() && !IsResultDependent && ControllingExpr && ControllingExpr->HasSideEffects(Context, false))\n Diag(ControllingExpr->getExprLoc(), diag::warn_side_effects_unevaluated_context);"},{A,4399,"/// Check the constraints on expression operands to unary type expression\n/// and type traits.\n///\n/// Completes any types necessary and validates the constraints on the operand\n/// expression. The logic mostly mirrors the type-based overload, but may modify\n/// the expression as it completes the type for that expression through template\n/// instantiation, etc.\nbool Sema::CheckUnaryExprOrTypeTraitOperand(Expr *E, UnaryExprOrTypeTrait ExprKind) {\n // The operand for sizeof and alignof is in an unevaluated expression context,\n // so side effects could result in unintended consequences.\n // Exclude instantiation-dependent expressions, because \'sizeof\' is sometimes\n // used to build SFINAE gadgets.\n // FIXME: Should we consider instantiation-dependent operands to \'alignof\'?\n if (IsUnevaluatedOperand && !inTemplateInstantiation() && !E->isInstantiationDependent() && !E->getType()->isVariableArrayType() && E->HasSideEffects(Context, false))\n Diag(E->getExprLoc(), diag::warn_side_effects_unevaluated_context);"},{kc,642,"/// Build a C++ typeid expression with an expression operand.\nExprResult Sema::BuildCXXTypeId(QualType TypeInfoType, SourceLocation TypeidLoc, Expr *E, SourceLocation RParenLoc) {\n if (E->getType()->isVariablyModifiedType())\n else if (!inTemplateInstantiation() && E->HasSideEffects(Context, WasEvaluated)) {\n Diag(E->getExprLoc(), WasEvaluated ? diag::warn_side_effects_typeid : diag::warn_side_effects_unevaluated_context);"},{kc,8124,"ExprResult Sema::BuildCXXNoexceptExpr(SourceLocation KeyLoc, Expr *Operand, SourceLocation RParen) {\n if (!inTemplateInstantiation() && !Operand->isInstantiationDependent() && Operand->HasSideEffects(Context, false)) {\n Diag(Operand->getExprLoc(), diag::warn_side_effects_unevaluated_context);"},{T,9500,"QualType Sema::BuildDecltypeType(Expr *E, bool AsUnevaluated) {\n if (AsUnevaluated && CodeSynthesisContexts.empty() && !E->isInstantiationDependent() && E->HasSideEffects(Context, false)) {\n Diag(E->getExprLoc(), diag::warn_side_effects_unevaluated_context);"}}, | [j]={{A,1701,"ExprResult Sema::CreateGenericSelectionExpr(SourceLocation KeyLoc, SourceLocation DefaultLoc, SourceLocation RParenLoc, bool PredicateIsExpr, void *ControllingExprOrType, ArrayRef<TypeSourceInfo *> Types, ArrayRef<Expr *> Exprs) {\n // ...\n // The controlling expression is an unevaluated operand, so side effects are\n // likely unintended.\n if (!inTemplateInstantiation() && !IsResultDependent && ControllingExpr && ControllingExpr->HasSideEffects(Context, false))\n Diag(ControllingExpr->getExprLoc(), diag::warn_side_effects_unevaluated_context);"},{A,4399,"/// Check the constraints on expression operands to unary type expression\n/// and type traits.\n///\n/// Completes any types necessary and validates the constraints on the operand\n/// expression. The logic mostly mirrors the type-based overload, but may modify\n/// the expression as it completes the type for that expression through template\n/// instantiation, etc.\nbool Sema::CheckUnaryExprOrTypeTraitOperand(Expr *E, UnaryExprOrTypeTrait ExprKind) {\n // ...\n // The operand for sizeof and alignof is in an unevaluated expression context,\n // so side effects could result in unintended consequences.\n // Exclude instantiation-dependent expressions, because \'sizeof\' is sometimes\n // used to build SFINAE gadgets.\n // FIXME: Should we consider instantiation-dependent operands to \'alignof\'?\n if (IsUnevaluatedOperand && !inTemplateInstantiation() && !E->isInstantiationDependent() && !E->getType()->isVariableArrayType() && E->HasSideEffects(Context, false))\n Diag(E->getExprLoc(), diag::warn_side_effects_unevaluated_context);"},{kc,642,"/// Build a C++ typeid expression with an expression operand.\nExprResult Sema::BuildCXXTypeId(QualType TypeInfoType, SourceLocation TypeidLoc, Expr *E, SourceLocation RParenLoc) {\n // ...\n if (E->getType()->isVariablyModifiedType())\n // ...\n else if (!inTemplateInstantiation() && E->HasSideEffects(Context, WasEvaluated)) {\n // ...\n Diag(E->getExprLoc(), WasEvaluated ? diag::warn_side_effects_typeid : diag::warn_side_effects_unevaluated_context);"},{kc,8124,"ExprResult Sema::BuildCXXNoexceptExpr(SourceLocation KeyLoc, Expr *Operand, SourceLocation RParen) {\n // ...\n if (!inTemplateInstantiation() && !Operand->isInstantiationDependent() && Operand->HasSideEffects(Context, false)) {\n // ...\n Diag(Operand->getExprLoc(), diag::warn_side_effects_unevaluated_context);"},{T,9500,"QualType Sema::BuildDecltypeType(Expr *E, bool AsUnevaluated) {\n // ...\n if (AsUnevaluated && CodeSynthesisContexts.empty() && !E->isInstantiationDependent() && E->HasSideEffects(Context, false)) {\n // ...\n Diag(E->getExprLoc(), diag::warn_side_effects_unevaluated_context);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaOpenCL/vec_step.cl"]={"clang/test/SemaOpenCL/vec_step.cl:33:37: warning: expression with side effects has no effect in an unevaluated context [-Wunevaluated-expression]"} | ["clang/test/SemaOpenCL/vec_step.cl"]={"clang/test/SemaOpenCL/vec_step.cl:33:37: warning: expression with side effects has no effect in an unevaluated context [-Wunevaluated-expression]"} | ||
Line 6,491: | Line 6,491: | ||
[h]=Zb, | [h]=Zb, | ||
[i]={"329f24d6f6e7",1489514462,"Warn on enum assignment to bitfields that can\'t fit all values","Warn on enum assignment to bitfields that can\'t fit all values"}, | [i]={"329f24d6f6e7",1489514462,"Warn on enum assignment to bitfields that can\'t fit all values","Warn on enum assignment to bitfields that can\'t fit all values"}, | ||
[j]={{x,14087,"/// Analyzes an attempt to assign the given value to a bitfield.\n///\n/// Returns true if there was something fishy about the attempt.\nstatic bool AnalyzeBitFieldAssignment(Sema &S, FieldDecl *Bitfield, Expr *Init, SourceLocation InitLoc) {\n if (!OriginalInit->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects)) {\n // The RHS is not constant. If the RHS has an enum type, make sure the\n // bitfield is wide enough to hold all the values of the enum without\n // truncation.\n if (const auto *EnumTy = OriginalInit->getType()->getAs<EnumType>()) {\n if (SignedEnum && !SignedBitfield) {\n } else if (SignedBitfield && !SignedEnum && ED->getNumPositiveBits() == FieldWidth) {\n DiagID = diag::warn_signed_bitfield_enum_conversion;"}}, | [j]={{x,14087,"/// Analyzes an attempt to assign the given value to a bitfield.\n///\n/// Returns true if there was something fishy about the attempt.\nstatic bool AnalyzeBitFieldAssignment(Sema &S, FieldDecl *Bitfield, Expr *Init, SourceLocation InitLoc) {\n // ...\n if (!OriginalInit->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects)) {\n // The RHS is not constant. If the RHS has an enum type, make sure the\n // bitfield is wide enough to hold all the values of the enum without\n // truncation.\n if (const auto *EnumTy = OriginalInit->getType()->getAs<EnumType>()) {\n // ...\n if (SignedEnum && !SignedBitfield) {\n // ...\n } else if (SignedBitfield && !SignedEnum && ED->getNumPositiveBits() == FieldWidth) {\n DiagID = diag::warn_signed_bitfield_enum_conversion;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp"]={"clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp:32:21: warning: signed bit-field \'two_bits_signed\' needs an extra bit to represent the largest positive enumerators of \'TwoBits\' [-Wbitfield-enum-conversion]","clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp:44:23: warning: signed bit-field \'three_bits_signed\' needs an extra bit to represent the largest positive enumerators of \'ThreeBits\' [-Wbitfield-enum-conversion]"} | ["clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp"]={"clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp:32:21: warning: signed bit-field \'two_bits_signed\' needs an extra bit to represent the largest positive enumerators of \'TwoBits\' [-Wbitfield-enum-conversion]","clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp:44:23: warning: signed bit-field \'three_bits_signed\' needs an extra bit to represent the largest positive enumerators of \'ThreeBits\' [-Wbitfield-enum-conversion]"} | ||
Line 6,508: | Line 6,508: | ||
[h]=q, | [h]=q, | ||
[i]={"054faa5a4883",1364593401,"Sema: Warn on sizeof on binary ops on decayed arrays.","Sema: Warn on sizeof on binary ops on decayed arrays."}, | [i]={"054faa5a4883",1364593401,"Sema: Warn on sizeof on binary ops on decayed arrays.","Sema: Warn on sizeof on binary ops on decayed arrays."}, | ||
[j]={{A,4384,"/// Check whether E is a pointer from a decayed array type (the decayed\n/// pointer type is equal to T) and emit a warning if it is.\nstatic void warnOnSizeofOnArrayDecay(Sema &S, SourceLocation Loc, QualType T, const Expr *E) {\n S.Diag(Loc, diag::warn_sizeof_array_decay) << ICE->getSourceRange() << ICE->getType() << ICE->getSubExpr()->getType();"}}, | [j]={{A,4384,"/// Check whether E is a pointer from a decayed array type (the decayed\n/// pointer type is equal to T) and emit a warning if it is.\nstatic void warnOnSizeofOnArrayDecay(Sema &S, SourceLocation Loc, QualType T, const Expr *E) {\n // ...\n S.Diag(Loc, diag::warn_sizeof_array_decay) << ICE->getSourceRange() << ICE->getType() << ICE->getSubExpr()->getType();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-sizeof-array-decay.c"]={"clang/test/Sema/warn-sizeof-array-decay.c:8:20: warning: sizeof on pointer operation will return size of \'int *\' instead of \'int[20]\' [-Wsizeof-array-decay]","clang/test/Sema/warn-sizeof-array-decay.c:9:20: warning: sizeof on pointer operation will return size of \'char *\' instead of \'char[10]\' [-Wsizeof-array-decay]","clang/test/Sema/warn-sizeof-array-decay.c:10:20: warning: sizeof on pointer operation will return size of \'int *\' instead of \'int[20]\' [-Wsizeof-array-decay]","clang/test/Sema/warn-sizeof-array-decay.c:11:20: warning: sizeof on pointer operation will return size of \'char *\' instead of \'char[10]\' [-Wsizeof-array-decay]","clang/test/Sema/warn-sizeof-array-decay.c:17:17: warning: sizeof on pointer operation will return size of \'char *\' instead of \'char[10]\' [-Wsizeof-array-decay]"} | ["clang/test/Sema/warn-sizeof-array-decay.c"]={"clang/test/Sema/warn-sizeof-array-decay.c:8:20: warning: sizeof on pointer operation will return size of \'int *\' instead of \'int[20]\' [-Wsizeof-array-decay]","clang/test/Sema/warn-sizeof-array-decay.c:9:20: warning: sizeof on pointer operation will return size of \'char *\' instead of \'char[10]\' [-Wsizeof-array-decay]","clang/test/Sema/warn-sizeof-array-decay.c:10:20: warning: sizeof on pointer operation will return size of \'int *\' instead of \'int[20]\' [-Wsizeof-array-decay]","clang/test/Sema/warn-sizeof-array-decay.c:11:20: warning: sizeof on pointer operation will return size of \'char *\' instead of \'char[10]\' [-Wsizeof-array-decay]","clang/test/Sema/warn-sizeof-array-decay.c:17:17: warning: sizeof on pointer operation will return size of \'char *\' instead of \'char[10]\' [-Wsizeof-array-decay]"} | ||
Line 6,525: | Line 6,525: | ||
[h]=q, | [h]=q, | ||
[i]={"0870debb8b31",1308106023,"Warn on \"void f(int a[10]) { sizeof(a); }\"","Warn on \"void f(int a[10]) { sizeof(a); }\""}, | [i]={"0870debb8b31",1308106023,"Warn on \"void f(int a[10]) { sizeof(a); }\"","Warn on \"void f(int a[10]) { sizeof(a); }\""}, | ||
[j]={{A,4443,"/// Check the constraints on expression operands to unary type expression\n/// and type traits.\n///\n/// Completes any types necessary and validates the constraints on the operand\n/// expression. The logic mostly mirrors the type-based overload, but may modify\n/// the expression as it completes the type for that expression through template\n/// instantiation, etc.\nbool Sema::CheckUnaryExprOrTypeTraitOperand(Expr *E, UnaryExprOrTypeTrait ExprKind) {\n if (ExprKind == UETT_SizeOf) {\n if (const auto *DeclRef = dyn_cast<DeclRefExpr>(E->IgnoreParens())) {\n if (const auto *PVD = dyn_cast<ParmVarDecl>(DeclRef->getFoundDecl())) {\n if (Type->isPointerType() && OType->isArrayType()) {\n Diag(E->getExprLoc(), diag::warn_sizeof_array_param) << Type << OType;"}}, | [j]={{A,4443,"/// Check the constraints on expression operands to unary type expression\n/// and type traits.\n///\n/// Completes any types necessary and validates the constraints on the operand\n/// expression. The logic mostly mirrors the type-based overload, but may modify\n/// the expression as it completes the type for that expression through template\n/// instantiation, etc.\nbool Sema::CheckUnaryExprOrTypeTraitOperand(Expr *E, UnaryExprOrTypeTrait ExprKind) {\n // ...\n if (ExprKind == UETT_SizeOf) {\n if (const auto *DeclRef = dyn_cast<DeclRefExpr>(E->IgnoreParens())) {\n if (const auto *PVD = dyn_cast<ParmVarDecl>(DeclRef->getFoundDecl())) {\n // ...\n if (Type->isPointerType() && OType->isArrayType()) {\n Diag(E->getExprLoc(), diag::warn_sizeof_array_param) << Type << OType;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-sizeof-arrayarg.c"]={"clang/test/Sema/warn-sizeof-arrayarg.c:10:15: warning: sizeof on array function parameter will return size of \'int *\' instead of \'int[10]\' [-Wsizeof-array-argument]","clang/test/Sema/warn-sizeof-arrayarg.c:12:15: warning: sizeof on array function parameter will return size of \'int *\' instead of \'int[10]\' [-Wsizeof-array-argument]","clang/test/Sema/warn-sizeof-arrayarg.c:14:16: warning: sizeof on array function parameter will return size of \'int *\' instead of \'int[10]\' [-Wsizeof-array-argument]","clang/test/Sema/warn-sizeof-arrayarg.c:16:16: warning: sizeof on array function parameter will return size of \'int *\' instead of \'Arr\' (aka \'int[10]\') [-Wsizeof-array-argument]"} | ["clang/test/Sema/warn-sizeof-arrayarg.c"]={"clang/test/Sema/warn-sizeof-arrayarg.c:10:15: warning: sizeof on array function parameter will return size of \'int *\' instead of \'int[10]\' [-Wsizeof-array-argument]","clang/test/Sema/warn-sizeof-arrayarg.c:12:15: warning: sizeof on array function parameter will return size of \'int *\' instead of \'int[10]\' [-Wsizeof-array-argument]","clang/test/Sema/warn-sizeof-arrayarg.c:14:16: warning: sizeof on array function parameter will return size of \'int *\' instead of \'int[10]\' [-Wsizeof-array-argument]","clang/test/Sema/warn-sizeof-arrayarg.c:16:16: warning: sizeof on array function parameter will return size of \'int *\' instead of \'Arr\' (aka \'int[10]\') [-Wsizeof-array-argument]"} | ||
Line 6,542: | Line 6,542: | ||
[h]=q, | [h]=q, | ||
[i]={"8b9e5a72cb12",1308215380,"Rework the warning for \'memset(p, 0, sizeof(p))\' where \'p\' is a pointer","Rework the warning for \'memset(p, 0, sizeof(p))\' where \'p\' is a pointer"}, | [i]={"8b9e5a72cb12",1308215380,"Rework the warning for \'memset(p, 0, sizeof(p))\' where \'p\' is a pointer","Rework the warning for \'memset(p, 0, sizeof(p))\' where \'p\' is a pointer"}, | ||
[j]={{x,12478,"/// Check for dangerous or invalid arguments to memset().\n///\n/// This issues warnings on known problematic, dangerous or unspecified\n/// arguments to the standard \'memset\', \'memcpy\', \'memmove\', and \'memcmp\'\n/// function calls.\n///\n/// \\param Call The call expression to diagnose.\nvoid Sema::CheckMemaccessArguments(const CallExpr *Call, unsigned BId, IdentifierInfo *FnName) {\n for (unsigned ArgIdx = 0; ArgIdx != LastArg; ++ArgIdx) {\n if (const PointerType *DestPtrTy = DestTy->getAs<PointerType>()) {\n if (SizeOfArg && !Diags.isIgnored(diag::warn_sizeof_pointer_expr_memaccess, SizeOfArg->getExprLoc())) {"},{x,12517,"/// Check for dangerous or invalid arguments to memset().\n///\n/// This issues warnings on known problematic, dangerous or unspecified\n/// arguments to the standard \'memset\', \'memcpy\', \'memmove\', and \'memcmp\'\n/// function calls.\n///\n/// \\param Call The call expression to diagnose.\nvoid Sema::CheckMemaccessArguments(const CallExpr *Call, unsigned BId, IdentifierInfo *FnName) {\n for (unsigned ArgIdx = 0; ArgIdx != LastArg; ++ArgIdx) {\n if (const PointerType *DestPtrTy = DestTy->getAs<PointerType>()) {\n // Catch \"memset(p, 0, sizeof(p))\" -- needs to be sizeof(*p). Do this by\n // actually comparing the expressions for equality. Because computing the\n // expression IDs can be expensive, we only do this if the diagnostic is\n // enabled.\n if (SizeOfArg && !Diags.isIgnored(diag::warn_sizeof_pointer_expr_memaccess, SizeOfArg->getExprLoc())) {\n if (DestID == SizeOfArgID) {\n DiagRuntimeBehavior(SL, SizeOfArg, PDiag(diag::warn_sizeof_pointer_expr_memaccess) << ReadableName << PointeeTy << DestTy << DSR << SSR);"},{x,17965,"/// DiagnoseSelfMove - Emits a warning if a value is moved to itself.\nvoid Sema::DiagnoseSelfMove(const Expr *LHSExpr, const Expr *RHSExpr, SourceLocation OpLoc) {\n if (Diags.isIgnored(diag::warn_sizeof_pointer_expr_memaccess, OpLoc))"}}, | [j]={{x,12478,"/// Check for dangerous or invalid arguments to memset().\n///\n/// This issues warnings on known problematic, dangerous or unspecified\n/// arguments to the standard \'memset\', \'memcpy\', \'memmove\', and \'memcmp\'\n/// function calls.\n///\n/// \\param Call The call expression to diagnose.\nvoid Sema::CheckMemaccessArguments(const CallExpr *Call, unsigned BId, IdentifierInfo *FnName) {\n // ...\n for (unsigned ArgIdx = 0; ArgIdx != LastArg; ++ArgIdx) {\n // ...\n if (const PointerType *DestPtrTy = DestTy->getAs<PointerType>()) {\n // ...\n if (SizeOfArg && !Diags.isIgnored(diag::warn_sizeof_pointer_expr_memaccess, SizeOfArg->getExprLoc())) {"},{x,12517,"/// Check for dangerous or invalid arguments to memset().\n///\n/// This issues warnings on known problematic, dangerous or unspecified\n/// arguments to the standard \'memset\', \'memcpy\', \'memmove\', and \'memcmp\'\n/// function calls.\n///\n/// \\param Call The call expression to diagnose.\nvoid Sema::CheckMemaccessArguments(const CallExpr *Call, unsigned BId, IdentifierInfo *FnName) {\n // ...\n for (unsigned ArgIdx = 0; ArgIdx != LastArg; ++ArgIdx) {\n // ...\n if (const PointerType *DestPtrTy = DestTy->getAs<PointerType>()) {\n // ...\n // Catch \"memset(p, 0, sizeof(p))\" -- needs to be sizeof(*p). Do this by\n // actually comparing the expressions for equality. Because computing the\n // expression IDs can be expensive, we only do this if the diagnostic is\n // enabled.\n if (SizeOfArg && !Diags.isIgnored(diag::warn_sizeof_pointer_expr_memaccess, SizeOfArg->getExprLoc())) {\n // ...\n if (DestID == SizeOfArgID) {\n // ...\n DiagRuntimeBehavior(SL, SizeOfArg, PDiag(diag::warn_sizeof_pointer_expr_memaccess) << ReadableName << PointeeTy << DestTy << DSR << SSR);"},{x,17965,"/// DiagnoseSelfMove - Emits a warning if a value is moved to itself.\nvoid Sema::DiagnoseSelfMove(const Expr *LHSExpr, const Expr *RHSExpr, SourceLocation OpLoc) {\n if (Diags.isIgnored(diag::warn_sizeof_pointer_expr_memaccess, OpLoc))"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/memset-invalid-1.c"]={"clang/test/Sema/memset-invalid-1.c:12:26: warning: \'memset\' call operates on objects of type \'struct __incomplete\' while the size is based on a different type \'incomplete\' (aka \'struct __incomplete *\') [-Wsizeof-pointer-memaccess]"} | ["clang/test/Sema/memset-invalid-1.c"]={"clang/test/Sema/memset-invalid-1.c:12:26: warning: \'memset\' call operates on objects of type \'struct __incomplete\' while the size is based on a different type \'incomplete\' (aka \'struct __incomplete *\') [-Wsizeof-pointer-memaccess]"} | ||
Line 6,557: | Line 6,557: | ||
[h]=q, | [h]=q, | ||
[i]={"d08d9159c289",1338419692,"Change wording of \'memcpy\' type mismatch warning and remove fixit.","Change wording of \'memcpy\' type mismatch warning and remove fixit."}, | [i]={"d08d9159c289",1338419692,"Change wording of \'memcpy\' type mismatch warning and remove fixit.","Change wording of \'memcpy\' type mismatch warning and remove fixit."}, | ||
[j]={{x,12524,"/// Check for dangerous or invalid arguments to memset().\n///\n/// This issues warnings on known problematic, dangerous or unspecified\n/// arguments to the standard \'memset\', \'memcpy\', \'memmove\', and \'memcmp\'\n/// function calls.\n///\n/// \\param Call The call expression to diagnose.\nvoid Sema::CheckMemaccessArguments(const CallExpr *Call, unsigned BId, IdentifierInfo *FnName) {\n for (unsigned ArgIdx = 0; ArgIdx != LastArg; ++ArgIdx) {\n if (const PointerType *DestPtrTy = DestTy->getAs<PointerType>()) {\n // Catch \"memset(p, 0, sizeof(p))\" -- needs to be sizeof(*p). Do this by\n // actually comparing the expressions for equality. Because computing the\n // expression IDs can be expensive, we only do this if the diagnostic is\n // enabled.\n if (SizeOfArg && !Diags.isIgnored(diag::warn_sizeof_pointer_expr_memaccess, SizeOfArg->getExprLoc())) {\n if (DestID == SizeOfArgID) {\n DiagRuntimeBehavior(SL, SizeOfArg, PDiag(diag::warn_sizeof_pointer_expr_memaccess_note) << ActionIdx << SSR);"}}, | [j]={{x,12524,"/// Check for dangerous or invalid arguments to memset().\n///\n/// This issues warnings on known problematic, dangerous or unspecified\n/// arguments to the standard \'memset\', \'memcpy\', \'memmove\', and \'memcmp\'\n/// function calls.\n///\n/// \\param Call The call expression to diagnose.\nvoid Sema::CheckMemaccessArguments(const CallExpr *Call, unsigned BId, IdentifierInfo *FnName) {\n // ...\n for (unsigned ArgIdx = 0; ArgIdx != LastArg; ++ArgIdx) {\n // ...\n if (const PointerType *DestPtrTy = DestTy->getAs<PointerType>()) {\n // ...\n // Catch \"memset(p, 0, sizeof(p))\" -- needs to be sizeof(*p). Do this by\n // actually comparing the expressions for equality. Because computing the\n // expression IDs can be expensive, we only do this if the diagnostic is\n // enabled.\n if (SizeOfArg && !Diags.isIgnored(diag::warn_sizeof_pointer_expr_memaccess, SizeOfArg->getExprLoc())) {\n // ...\n if (DestID == SizeOfArgID) {\n // ...\n DiagRuntimeBehavior(SL, SizeOfArg, PDiag(diag::warn_sizeof_pointer_expr_memaccess_note) << ActionIdx << SSR);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/memset-invalid-1.c"]={"clang/test/Sema/memset-invalid-1.c:12:26: note: did you mean to dereference the argument to \'sizeof\' (and multiply it by the number of elements)?"} | ["clang/test/Sema/memset-invalid-1.c"]={"clang/test/Sema/memset-invalid-1.c:12:26: note: did you mean to dereference the argument to \'sizeof\' (and multiply it by the number of elements)?"} | ||
Line 6,574: | Line 6,574: | ||
[h]=q, | [h]=q, | ||
[i]={"8b9e5a72cb12",1308215380,"Rework the warning for \'memset(p, 0, sizeof(p))\' where \'p\' is a pointer","Rework the warning for \'memset(p, 0, sizeof(p))\' where \'p\' is a pointer"}, | [i]={"8b9e5a72cb12",1308215380,"Rework the warning for \'memset(p, 0, sizeof(p))\' where \'p\' is a pointer","Rework the warning for \'memset(p, 0, sizeof(p))\' where \'p\' is a pointer"}, | ||
[j]={{x,12539,"/// Check for dangerous or invalid arguments to memset().\n///\n/// This issues warnings on known problematic, dangerous or unspecified\n/// arguments to the standard \'memset\', \'memcpy\', \'memmove\', and \'memcmp\'\n/// function calls.\n///\n/// \\param Call The call expression to diagnose.\nvoid Sema::CheckMemaccessArguments(const CallExpr *Call, unsigned BId, IdentifierInfo *FnName) {\n for (unsigned ArgIdx = 0; ArgIdx != LastArg; ++ArgIdx) {\n if (const PointerType *DestPtrTy = DestTy->getAs<PointerType>()) {\n // Also check for cases where the sizeof argument is the exact same\n // type as the memory argument, and where it points to a user-defined\n // record type.\n if (SizeOfArgTy != QualType()) {\n if (PointeeTy->isRecordType() && Context.typesAreCompatible(SizeOfArgTy, DestTy)) {\n DiagRuntimeBehavior(LenExpr->getExprLoc(), Dest, PDiag(diag::warn_sizeof_pointer_type_memaccess) << FnName << SizeOfArgTy << ArgIdx << PointeeTy << Dest->getSourceRange() << LenExpr->getSourceRange());"}}, | [j]={{x,12539,"/// Check for dangerous or invalid arguments to memset().\n///\n/// This issues warnings on known problematic, dangerous or unspecified\n/// arguments to the standard \'memset\', \'memcpy\', \'memmove\', and \'memcmp\'\n/// function calls.\n///\n/// \\param Call The call expression to diagnose.\nvoid Sema::CheckMemaccessArguments(const CallExpr *Call, unsigned BId, IdentifierInfo *FnName) {\n // ...\n for (unsigned ArgIdx = 0; ArgIdx != LastArg; ++ArgIdx) {\n // ...\n if (const PointerType *DestPtrTy = DestTy->getAs<PointerType>()) {\n // ...\n // Also check for cases where the sizeof argument is the exact same\n // type as the memory argument, and where it points to a user-defined\n // record type.\n if (SizeOfArgTy != QualType()) {\n if (PointeeTy->isRecordType() && Context.typesAreCompatible(SizeOfArgTy, DestTy)) {\n DiagRuntimeBehavior(LenExpr->getExprLoc(), Dest, PDiag(diag::warn_sizeof_pointer_type_memaccess) << FnName << SizeOfArgTy << ArgIdx << PointeeTy << Dest->getSourceRange() << LenExpr->getSourceRange());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-memset-bad-sizeof.cpp"]={"clang/test/SemaCXX/warn-memset-bad-sizeof.cpp:44:18: warning: argument to \'sizeof\' in \'memset\' call is the same pointer type \'typeof (ps2)\' (aka \'S *\') as the destination; expected \'S\' or an explicit length [-Wsizeof-pointer-memaccess]","clang/test/SemaCXX/warn-memset-bad-sizeof.cpp:46:18: warning: argument to \'sizeof\' in \'memset\' call is the same pointer type \'PS\' (aka \'S *\') as the destination; expected \'S\' or an explicit length [-Wsizeof-pointer-memaccess]","clang/test/SemaCXX/warn-memset-bad-sizeof.cpp:57:14: warning: argument to \'sizeof\' in \'bzero\' call is the same pointer type \'typeof (ps2)\' (aka \'S *\') as the destination; expected \'S\' or an explicit length [-Wsizeof-pointer-memaccess]","clang/test/SemaCXX/warn-memset-bad-sizeof.cpp:59:14: warning: argument to \'sizeof\' in \'bzero\' call is the same pointer type \'PS\' (aka \'S *\') as the destination; expected \'S\' or an explicit length [-Wsizeof-pointer-memaccess]"} | ["clang/test/SemaCXX/warn-memset-bad-sizeof.cpp"]={"clang/test/SemaCXX/warn-memset-bad-sizeof.cpp:44:18: warning: argument to \'sizeof\' in \'memset\' call is the same pointer type \'typeof (ps2)\' (aka \'S *\') as the destination; expected \'S\' or an explicit length [-Wsizeof-pointer-memaccess]","clang/test/SemaCXX/warn-memset-bad-sizeof.cpp:46:18: warning: argument to \'sizeof\' in \'memset\' call is the same pointer type \'PS\' (aka \'S *\') as the destination; expected \'S\' or an explicit length [-Wsizeof-pointer-memaccess]","clang/test/SemaCXX/warn-memset-bad-sizeof.cpp:57:14: warning: argument to \'sizeof\' in \'bzero\' call is the same pointer type \'typeof (ps2)\' (aka \'S *\') as the destination; expected \'S\' or an explicit length [-Wsizeof-pointer-memaccess]","clang/test/SemaCXX/warn-memset-bad-sizeof.cpp:59:14: warning: argument to \'sizeof\' in \'bzero\' call is the same pointer type \'PS\' (aka \'S *\') as the destination; expected \'S\' or an explicit length [-Wsizeof-pointer-memaccess]"} | ||
Line 6,591: | Line 6,591: | ||
[h]=y, | [h]=y, | ||
[i]={"091f1b6ef314",1485536981,"clang-cl: Warn about /U flags that look like filenames (PR31662)","clang-cl: Warn about /U flags that look like filenames (PR31662)"}, | [i]={"091f1b6ef314",1485536981,"clang-cl: Warn about /U flags that look like filenames (PR31662)","clang-cl: Warn about /U flags that look like filenames (PR31662)"}, | ||
[j]={{"clang/lib/Driver/Driver.cpp",2793,"// Construct a the list of inputs and their types.\nvoid Driver::BuildInputs(const ToolChain &TC, DerivedArgList &Args, InputList &Inputs) const {\n for (Arg *A : Args) {\n if (A->getOption().getKind() == Option::InputClass) {\n } else if (A->getOption().matches(options::OPT__SLASH_Tc)) {\n } else if (A->getOption().matches(options::OPT__SLASH_Tp)) {\n } else if (A->getOption().hasFlag(options::LinkerInput)) {\n } else if (A->getOption().matches(options::OPT_x)) {\n } else if (A->getOption().getID() == options::OPT_U) {\n if (Val.find_first_of(\"/\\\\\") != StringRef::npos) {\n Diag(diag::warn_slash_u_filename) << Val;"}} | [j]={{"clang/lib/Driver/Driver.cpp",2793,"// Construct a the list of inputs and their types.\nvoid Driver::BuildInputs(const ToolChain &TC, DerivedArgList &Args, InputList &Inputs) const {\n // ...\n for (Arg *A : Args) {\n if (A->getOption().getKind() == Option::InputClass) {\n // ...\n } else if (A->getOption().matches(options::OPT__SLASH_Tc)) {\n // ...\n } else if (A->getOption().matches(options::OPT__SLASH_Tp)) {\n // ...\n } else if (A->getOption().hasFlag(options::LinkerInput)) {\n // ...\n } else if (A->getOption().matches(options::OPT_x)) {\n // ...\n } else if (A->getOption().getID() == options::OPT_U) {\n // ...\n if (Val.find_first_of(\"/\\\\\") != StringRef::npos) {\n // ...\n Diag(diag::warn_slash_u_filename) << Val;"}} | ||
}, | }, | ||
["warn_slh_does_not_support_asm_goto"]={ | ["warn_slh_does_not_support_asm_goto"]={ | ||
Line 6,605: | Line 6,605: | ||
[h]="Inline Assembly Issue", | [h]="Inline Assembly Issue", | ||
[i]={"60ee88599098",1589228634,"[clang][asm goto][slh] Warn if asm goto + SLH","[clang][asm goto][slh] Warn if asm goto + SLH"}, | [i]={"60ee88599098",1589228634,"[clang][asm goto][slh] Warn if asm goto + SLH","[clang][asm goto][slh] Warn if asm goto + SLH"}, | ||
[j]={{"clang/lib/Parse/ParseStmtAsm.cpp",737,"/// 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 if (GAQ.isGoto() && getLangOpts().SpeculativeLoadHardening)\n Diag(Loc, diag::warn_slh_does_not_support_asm_goto);"}}, | [j]={{"clang/lib/Parse/ParseStmtAsm.cpp",737,"/// 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 // ...\n if (GAQ.isGoto() && getLangOpts().SpeculativeLoadHardening)\n Diag(Loc, diag::warn_slh_does_not_support_asm_goto);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/slh-asm-goto.cpp"]={"clang/test/Parser/slh-asm-goto.cpp:4:9: warning: speculative load hardening does not protect functions with asm goto [-Wslh-asm-goto]"} | ["clang/test/Parser/slh-asm-goto.cpp"]={"clang/test/Parser/slh-asm-goto.cpp:4:9: warning: speculative load hardening does not protect functions with asm goto [-Wslh-asm-goto]"} | ||
Line 6,623: | Line 6,623: | ||
[h]=q, | [h]=q, | ||
[i]={"61d065e21ff3",1590001902,Wc,Wc}, | [i]={"61d065e21ff3",1590001902,Wc,Wc}, | ||
[j]={{db,5587,"static void DiagnoseBaseOrMemInitializerOrder(Sema &SemaRef, const CXXConstructorDecl *Constructor, ArrayRef<CXXCtorInitializer *> Inits) {\n // Introduce a new scope as SemaDiagnosticBuilder needs to be destroyed to\n // emit the diagnostic before we can try adding notes.\n {\n Sema::SemaDiagnosticBuilder D = SemaRef.Diag(Inits[WarnIndexes.front() - 1]->getSourceLocation(), WarnIndexes.size() == 1 ? diag::warn_initializer_out_of_order : diag::warn_some_initializers_out_of_order);"}}, | [j]={{db,5587,"static void DiagnoseBaseOrMemInitializerOrder(Sema &SemaRef, const CXXConstructorDecl *Constructor, ArrayRef<CXXCtorInitializer *> Inits) {\n // ...\n // Introduce a new scope as SemaDiagnosticBuilder needs to be destroyed to\n // emit the diagnostic before we can try adding notes.\n {\n Sema::SemaDiagnosticBuilder D = SemaRef.Diag(Inits[WarnIndexes.front() - 1]->getSourceLocation(), WarnIndexes.size() == 1 ? diag::warn_initializer_out_of_order : diag::warn_some_initializers_out_of_order);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-reorder-ctor-initialization.cpp"]={"clang/test/SemaCXX/warn-reorder-ctor-initialization.cpp:10:9: warning: initializer order does not match the declaration order [-Wreorder-ctor]"} | ["clang/test/SemaCXX/warn-reorder-ctor-initialization.cpp"]={"clang/test/SemaCXX/warn-reorder-ctor-initialization.cpp:10:9: warning: initializer order does not match the declaration order [-Wreorder-ctor]"} | ||
Line 6,641: | Line 6,641: | ||
[h]=q, | [h]=q, | ||
[i]={"4323bf8e2e51",1337912229,"Split a chunk of -Wconditional-uninitialized warnings out into a separate flag,","Split a chunk of -Wconditional-uninitialized warnings out into a separate flag,"}, | [i]={"4323bf8e2e51",1337912229,"Split a chunk of -Wconditional-uninitialized warnings out into a separate flag,","Split a chunk of -Wconditional-uninitialized warnings out into a separate flag,"}, | ||
[j]={{E,841,"/// DiagUninitUse -- Helper function to produce a diagnostic for an\n/// uninitialized use of a variable.\nstatic void DiagUninitUse(Sema &S, const VarDecl *VD, const UninitUse &Use, bool IsCapturedByBlock) {\n case UninitUse::AfterCall:\n S.Diag(VD->getLocation(), diag::warn_sometimes_uninit_var) << VD->getDeclName() << IsCapturedByBlock << (Use.getKind() == UninitUse::AfterDecl ? 4 : 5) << const_cast<DeclContext *>(VD->getLexicalDeclContext()) << VD->getSourceRange();"},{E,977,"/// DiagUninitUse -- Helper function to produce a diagnostic for an\n/// uninitialized use of a variable.\nstatic void DiagUninitUse(Sema &S, const VarDecl *VD, const UninitUse &Use, bool IsCapturedByBlock) {\n // Diagnose each branch which leads to a sometimes-uninitialized use.\n for (UninitUse::branch_iterator I = Use.branch_begin(), E = Use.branch_end(); I != E; ++I) {\n S.Diag(Range.getBegin(), diag::warn_sometimes_uninit_var) << VD->getDeclName() << IsCapturedByBlock << DiagKind << Str << I->Output << Range;"},{E,2630,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n if (!Diags.isIgnored(diag::warn_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_sometimes_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_maybe_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_uninit_const_reference, D->getBeginLoc())) {"}}, | [j]={{E,841,"/// DiagUninitUse -- Helper function to produce a diagnostic for an\n/// uninitialized use of a variable.\nstatic void DiagUninitUse(Sema &S, const VarDecl *VD, const UninitUse &Use, bool IsCapturedByBlock) {\n // ...\n case UninitUse::AfterDecl:\n case UninitUse::AfterCall:\n S.Diag(VD->getLocation(), diag::warn_sometimes_uninit_var) << VD->getDeclName() << IsCapturedByBlock << (Use.getKind() == UninitUse::AfterDecl ? 4 : 5) << const_cast<DeclContext *>(VD->getLexicalDeclContext()) << VD->getSourceRange();"},{E,977,"/// DiagUninitUse -- Helper function to produce a diagnostic for an\n/// uninitialized use of a variable.\nstatic void DiagUninitUse(Sema &S, const VarDecl *VD, const UninitUse &Use, bool IsCapturedByBlock) {\n // ...\n // Diagnose each branch which leads to a sometimes-uninitialized use.\n for (UninitUse::branch_iterator I = Use.branch_begin(), E = Use.branch_end(); I != E; ++I) {\n // ...\n S.Diag(Range.getBegin(), diag::warn_sometimes_uninit_var) << VD->getDeclName() << IsCapturedByBlock << DiagKind << Str << I->Output << Range;"},{E,2630,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n // ...\n if (!Diags.isIgnored(diag::warn_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_sometimes_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_maybe_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_uninit_const_reference, D->getBeginLoc())) {"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/uninit-variables.c"]={"clang/test/Sema/uninit-variables.c:43:7: warning: variable \'x\' is used uninitialized whenever \'if\' condition is false [-Wsometimes-uninitialized]","clang/test/Sema/uninit-variables.c:156:7: warning: variable \'z\' is used uninitialized whenever \'||\' condition is true [-Wsometimes-uninitialized]","clang/test/Sema/uninit-variables.c:163:7: warning: variable \'z\' is used uninitialized whenever \'||\' condition is true [-Wsometimes-uninitialized]","clang/test/Sema/uninit-variables.c:299:7: warning: variable \'y\' is used uninitialized whenever \'if\' condition is false [-Wsometimes-uninitialized]"} | ["clang/test/Sema/uninit-variables.c"]={"clang/test/Sema/uninit-variables.c:43:7: warning: variable \'x\' is used uninitialized whenever \'if\' condition is false [-Wsometimes-uninitialized]","clang/test/Sema/uninit-variables.c:156:7: warning: variable \'z\' is used uninitialized whenever \'||\' condition is true [-Wsometimes-uninitialized]","clang/test/Sema/uninit-variables.c:163:7: warning: variable \'z\' is used uninitialized whenever \'||\' condition is true [-Wsometimes-uninitialized]","clang/test/Sema/uninit-variables.c:299:7: warning: variable \'y\' is used uninitialized whenever \'if\' condition is false [-Wsometimes-uninitialized]"} | ||
Line 6,659: | Line 6,659: | ||
[h]="Documentation Issue", | [h]="Documentation Issue", | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{Z,2415,"void Sema::ActOnComment(SourceRange Comment) {\n if (RC.isAlmostTrailingComment() || RC.hasUnsupportedSplice(SourceMgr)) {\n case RawComment::RCK_Invalid:\n Diag(Comment.getBegin(), diag::warn_splice_in_doxygen_comment);"}}, | [j]={{Z,2415,"void Sema::ActOnComment(SourceRange Comment) {\n // ...\n if (RC.isAlmostTrailingComment() || RC.hasUnsupportedSplice(SourceMgr)) {\n // ...\n case RawComment::RCK_Invalid:\n // ...\n Diag(Comment.getBegin(), diag::warn_splice_in_doxygen_comment);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Lexer/comment-escape.c"]={"clang/test/Lexer/comment-escape.c:9:1: warning: line splicing in Doxygen comments are not supported [-Wdocumentation]","clang/test/Lexer/comment-escape.c:14:1: warning: line splicing in Doxygen comments are not supported [-Wdocumentation]","clang/test/Lexer/comment-escape.c:21:1: warning: line splicing in Doxygen comments are not supported [-Wdocumentation]","clang/test/Lexer/comment-escape.c:26:1: warning: line splicing in Doxygen comments are not supported [-Wdocumentation]","clang/test/Lexer/comment-escape.c:32:1: warning: line splicing in Doxygen comments are not supported [-Wdocumentation]","clang/test/Lexer/comment-escape.c:36:1: warning: line splicing in Doxygen comments are not supported [-Wdocumentation]"} | ["clang/test/Lexer/comment-escape.c"]={"clang/test/Lexer/comment-escape.c:9:1: warning: line splicing in Doxygen comments are not supported [-Wdocumentation]","clang/test/Lexer/comment-escape.c:14:1: warning: line splicing in Doxygen comments are not supported [-Wdocumentation]","clang/test/Lexer/comment-escape.c:21:1: warning: line splicing in Doxygen comments are not supported [-Wdocumentation]","clang/test/Lexer/comment-escape.c:26:1: warning: line splicing in Doxygen comments are not supported [-Wdocumentation]","clang/test/Lexer/comment-escape.c:32:1: warning: line splicing in Doxygen comments are not supported [-Wdocumentation]","clang/test/Lexer/comment-escape.c:36:1: warning: line splicing in Doxygen comments are not supported [-Wdocumentation]"} | ||
Line 6,676: | Line 6,676: | ||
[h]="Inline Assembly Issue", | [h]="Inline Assembly Issue", | ||
[i]={"39f50da2a357",1568041174,"Support -fstack-clash-protection for x86","Support -fstack-clash-protection for x86"}, | [i]={"39f50da2a357",1568041174,"Support -fstack-clash-protection for x86","Support -fstack-clash-protection for x86"}, | ||
[j]={{"clang/lib/CodeGen/CGStmt.cpp",2751,"void CodeGenFunction::EmitAsmStmt(const AsmStmt &S) {\n // Clobbers\n for (unsigned i = 0, e = S.getNumClobbers(); i != e; i++) {\n if (Clobber == \"memory\")\n else if (Clobber == \"unwind\") {\n } else if (Clobber != \"cc\") {\n if (CGM.getCodeGenOpts().StackClashProtector && getTarget().isSPRegName(Clobber)) {\n CGM.getDiags().Report(S.getAsmLoc(), diag::warn_stack_clash_protection_inline_asm);"}}, | [j]={{"clang/lib/CodeGen/CGStmt.cpp",2751,"void CodeGenFunction::EmitAsmStmt(const AsmStmt &S) {\n // ...\n // Clobbers\n for (unsigned i = 0, e = S.getNumClobbers(); i != e; i++) {\n // ...\n if (Clobber == \"memory\")\n // ...\n else if (Clobber == \"unwind\") {\n // ...\n } else if (Clobber != \"cc\") {\n // ...\n if (CGM.getCodeGenOpts().StackClashProtector && getTarget().isSPRegName(Clobber)) {\n CGM.getDiags().Report(S.getAsmLoc(), diag::warn_stack_clash_protection_inline_asm);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Driver/stack-clash-protection-02.c"]={"clang/test/Driver/stack-clash-protection-02.c:8:3: warning: unable to protect inline asm that clobbers stack pointer against stack clash [-Wstack-protector]"} | ["clang/test/Driver/stack-clash-protection-02.c"]={"clang/test/Driver/stack-clash-protection-02.c:8:3: warning: unable to protect inline asm that clobbers stack pointer against stack clash [-Wstack-protector]"} | ||
Line 6,710: | Line 6,710: | ||
[h]=q, | [h]=q, | ||
[i]={"aa017377827f",1300834804,"Warn about unused declaration-specifiers on tag declarations.","Warn about unused declaration-specifiers on tag declarations."}, | [i]={"aa017377827f",1300834804,"Warn about unused declaration-specifiers on tag declarations.","Warn about unused declaration-specifiers on tag declarations."}, | ||
[j]={{H,5279,"/// 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 unsigned DiagID = diag::warn_standalone_specifier;"}}, | [j]={{H,5279,"/// 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 // ...\n unsigned DiagID = diag::warn_standalone_specifier;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/struct-decl.c"]={"clang/test/Sema/struct-decl.c:51:1: warning: \'static\' ignored on this declaration [-Wmissing-declarations]","clang/test/Sema/struct-decl.c:54:1: warning: \'const\' ignored on this declaration [-Wmissing-declarations]"} | ["clang/test/Sema/struct-decl.c"]={"clang/test/Sema/struct-decl.c:51:1: warning: \'static\' ignored on this declaration [-Wmissing-declarations]","clang/test/Sema/struct-decl.c:54:1: warning: \'const\' ignored on this declaration [-Wmissing-declarations]"} | ||
Line 6,727: | Line 6,727: | ||
[h]=q, | [h]=q, | ||
[i]={"5aa6ecb619bc",1318799852,"Add sema checks for calls to functions taking static array parameters","Add sema checks for calls to functions taking static array parameters"}, | [i]={"5aa6ecb619bc",1318799852,"Add sema checks for calls to functions taking static array parameters","Add sema checks for calls to functions taking static array parameters"}, | ||
[j]={{A,6714,"/// CheckStaticArrayArgument - If the given argument corresponds to a static\n/// array parameter, check that it is non-null, and that if it is formed by\n/// array-to-pointer decay, the underlying array is sufficiently large.\n///\n/// C99 6.7.5.3p7: If the keyword static also appears within the [ and ] of the\n/// array type derivation, then for each call to the function, the value of the\n/// corresponding actual argument shall provide access to the first element of\n/// an array with at least as many elements as specified by the size expression.\nvoid Sema::CheckStaticArrayArgument(SourceLocation CallLoc, ParmVarDecl *Param, const Expr *ArgExpr) {\n if (getASTContext().hasSameUnqualifiedType(CAT->getElementType(), ArgCAT->getElementType())) {\n if (ArgCAT->getSize().ult(CAT->getSize())) {\n Diag(CallLoc, diag::warn_static_array_too_small) << ArgExpr->getSourceRange() << (unsigned)ArgCAT->getSize().getZExtValue() << (unsigned)CAT->getSize().getZExtValue() << 0;"},{A,6906,"/// CheckStaticArrayArgument - If the given argument corresponds to a static\n/// array parameter, check that it is non-null, and that if it is formed by\n/// array-to-pointer decay, the underlying array is sufficiently large.\n///\n/// C99 6.7.5.3p7: If the keyword static also appears within the [ and ] of the\n/// array type derivation, then for each call to the function, the value of the\n/// corresponding actual argument shall provide access to the first element of\n/// an array with at least as many elements as specified by the size expression.\nvoid Sema::CheckStaticArrayArgument(SourceLocation CallLoc, ParmVarDecl *Param, const Expr *ArgExpr) {\n if (ArgSize && ParmSize && *ArgSize < *ParmSize) {\n Diag(CallLoc, diag::warn_static_array_too_small) << ArgExpr->getSourceRange() << (unsigned)ArgSize->getQuantity() << (unsigned)ParmSize->getQuantity() << 1;"}}, | [j]={{A,6714,"/// CheckStaticArrayArgument - If the given argument corresponds to a static\n/// array parameter, check that it is non-null, and that if it is formed by\n/// array-to-pointer decay, the underlying array is sufficiently large.\n///\n/// C99 6.7.5.3p7: If the keyword static also appears within the [ and ] of the\n/// array type derivation, then for each call to the function, the value of the\n/// corresponding actual argument shall provide access to the first element of\n/// an array with at least as many elements as specified by the size expression.\nvoid Sema::CheckStaticArrayArgument(SourceLocation CallLoc, ParmVarDecl *Param, const Expr *ArgExpr) {\n // ...\n if (getASTContext().hasSameUnqualifiedType(CAT->getElementType(), ArgCAT->getElementType())) {\n if (ArgCAT->getSize().ult(CAT->getSize())) {\n Diag(CallLoc, diag::warn_static_array_too_small) << ArgExpr->getSourceRange() << (unsigned)ArgCAT->getSize().getZExtValue() << (unsigned)CAT->getSize().getZExtValue() << 0;"},{A,6906,"/// CheckStaticArrayArgument - If the given argument corresponds to a static\n/// array parameter, check that it is non-null, and that if it is formed by\n/// array-to-pointer decay, the underlying array is sufficiently large.\n///\n/// C99 6.7.5.3p7: If the keyword static also appears within the [ and ] of the\n/// array type derivation, then for each call to the function, the value of the\n/// corresponding actual argument shall provide access to the first element of\n/// an array with at least as many elements as specified by the size expression.\nvoid Sema::CheckStaticArrayArgument(SourceLocation CallLoc, ParmVarDecl *Param, const Expr *ArgExpr) {\n // ...\n if (ArgSize && ParmSize && *ArgSize < *ParmSize) {\n Diag(CallLoc, diag::warn_static_array_too_small) << ArgExpr->getSourceRange() << (unsigned)ArgSize->getQuantity() << (unsigned)ParmSize->getQuantity() << 1;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/static-array.c"]={"clang/test/Sema/static-array.c:16:3: warning: array argument is too small; contains 2 elements, callee requires at least 3 [-Warray-bounds]","clang/test/Sema/static-array.c:25:3: warning: array argument is too small; is of size 4, callee requires at least 12 [-Warray-bounds]","clang/test/Sema/static-array.c:26:3: warning: array argument is too small; is of size 4, callee requires at least 12 [-Warray-bounds]"} | ["clang/test/Sema/static-array.c"]={"clang/test/Sema/static-array.c:16:3: warning: array argument is too small; contains 2 elements, callee requires at least 3 [-Warray-bounds]","clang/test/Sema/static-array.c:25:3: warning: array argument is too small; is of size 4, callee requires at least 12 [-Warray-bounds]","clang/test/Sema/static-array.c:26:3: warning: array argument is too small; is of size 4, callee requires at least 12 [-Warray-bounds]"} | ||
Line 6,744: | Line 6,744: | ||
[h]=q, | [h]=q, | ||
[i]={"47ccfd7a89e2",1667306232,"[Clang] Implement P2741R3 - user-generated static_assert messages","[Clang] Implement P2741R3 - user-generated static_assert messages"}, | [i]={"47ccfd7a89e2",1667306232,"[Clang] Implement P2741R3 - user-generated static_assert messages","[Clang] Implement P2741R3 - user-generated static_assert messages"}, | ||
[j]={{db,17049,"bool Sema::EvaluateStaticAssertMessageAsString(Expr *Message, std::string &Result, ASTContext &Ctx, bool ErrorOnInvalidMessage) {\n if (!ErrorOnInvalidMessage && Diags.isIgnored(diag::warn_static_assert_message_constexpr, Loc))"},{db,17060,"bool Sema::EvaluateStaticAssertMessageAsString(Expr *Message, std::string &Result, ASTContext &Ctx, bool ErrorOnInvalidMessage) {\n if (!Message->EvaluateCharRangeAsString(Result, EvaluatedSize.get(), EvaluatedData.get(), Ctx, Status) || !Notes.empty()) {\n Diag(Message->getBeginLoc(), ErrorOnInvalidMessage ? diag::err_static_assert_message_constexpr : diag::warn_static_assert_message_constexpr);"}}, | [j]={{db,17049,"bool Sema::EvaluateStaticAssertMessageAsString(Expr *Message, std::string &Result, ASTContext &Ctx, bool ErrorOnInvalidMessage) {\n // ...\n if (!ErrorOnInvalidMessage && Diags.isIgnored(diag::warn_static_assert_message_constexpr, Loc))"},{db,17060,"bool Sema::EvaluateStaticAssertMessageAsString(Expr *Message, std::string &Result, ASTContext &Ctx, bool ErrorOnInvalidMessage) {\n // ...\n if (!Message->EvaluateCharRangeAsString(Result, EvaluatedSize.get(), EvaluatedData.get(), Ctx, Status) || !Notes.empty()) {\n Diag(Message->getBeginLoc(), ErrorOnInvalidMessage ? diag::err_static_assert_message_constexpr : diag::warn_static_assert_message_constexpr);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/static-assert-cxx26.cpp"]={"clang/test/SemaCXX/static-assert-cxx26.cpp:34:21: error: the message in this static assertion is not a constant expression [-Winvalid-static-assert-message]","clang/test/SemaCXX/static-assert-cxx26.cpp:48:21: error: the message in this static assertion is not a constant expression [-Winvalid-static-assert-message]"} | ["clang/test/SemaCXX/static-assert-cxx26.cpp"]={"clang/test/SemaCXX/static-assert-cxx26.cpp:34:21: error: the message in this static assertion is not a constant expression [-Winvalid-static-assert-message]","clang/test/SemaCXX/static-assert-cxx26.cpp:48:21: error: the message in this static assertion is not a constant expression [-Winvalid-static-assert-message]"} | ||
Line 6,761: | Line 6,761: | ||
[h]=B, | [h]=B, | ||
[i]={"aa49ecc4586a",1291235540,"Not content to implement just \"extern\" explicit template","Not content to implement just \"extern\" explicit template"}, | [i]={"aa49ecc4586a",1291235540,"Not content to implement just \"extern\" explicit template","Not content to implement just \"extern\" explicit template"}, | ||
[j]={{"clang/lib/Parse/Parser.cpp",974,"/// 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_static:\n // Parse (then ignore) \'static\' prior to a template instantiation. This is\n // a GCC extension that we intentionally do not support.\n if (getLangOpts().CPlusPlus && NextToken().is(tok::kw_template)) {\n Diag(ConsumeToken(), diag::warn_static_inline_explicit_inst_ignored) << 0;"},{"clang/lib/Parse/Parser.cpp",996,"/// 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_inline:\n if (getLangOpts().CPlusPlus) {\n // Parse (then ignore) \'inline\' prior to a template instantiation. This is\n // a GCC extension that we intentionally do not support.\n if (NextKind == tok::kw_template) {\n Diag(ConsumeToken(), diag::warn_static_inline_explicit_inst_ignored) << 1;"}}, | [j]={{"clang/lib/Parse/Parser.cpp",974,"/// 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 // ...\n case tok::kw_static:\n // Parse (then ignore) \'static\' prior to a template instantiation. This is\n // a GCC extension that we intentionally do not support.\n if (getLangOpts().CPlusPlus && NextToken().is(tok::kw_template)) {\n Diag(ConsumeToken(), diag::warn_static_inline_explicit_inst_ignored) << 0;"},{"clang/lib/Parse/Parser.cpp",996,"/// 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 // ...\n case tok::kw_inline:\n if (getLangOpts().CPlusPlus) {\n // ...\n // Parse (then ignore) \'inline\' prior to a template instantiation. This is\n // a GCC extension that we intentionally do not support.\n if (NextKind == tok::kw_template) {\n Diag(ConsumeToken(), diag::warn_static_inline_explicit_inst_ignored) << 1;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaTemplate/explicit-instantiation.cpp"]={"clang/test/SemaTemplate/explicit-instantiation.cpp:89:1: warning: ignoring \'inline\' keyword on explicit template instantiation [-Wstatic-inline-explicit-instantiation]","clang/test/SemaTemplate/explicit-instantiation.cpp:90:1: warning: ignoring \'static\' keyword on explicit template instantiation [-Wstatic-inline-explicit-instantiation]"} | ["clang/test/SemaTemplate/explicit-instantiation.cpp"]={"clang/test/SemaTemplate/explicit-instantiation.cpp:89:1: warning: ignoring \'inline\' keyword on explicit template instantiation [-Wstatic-inline-explicit-instantiation]","clang/test/SemaTemplate/explicit-instantiation.cpp:90:1: warning: ignoring \'static\' keyword on explicit template instantiation [-Wstatic-inline-explicit-instantiation]"} | ||
Line 6,778: | Line 6,778: | ||
[h]=q, | [h]=q, | ||
[i]={"c87d97231d12",1364870938,"Add -Wstatic-local-in-inline, which warns about using a static local","Add -Wstatic-local-in-inline, which warns about using a static local"}, | [i]={"c87d97231d12",1364870938,"Add -Wstatic-local-in-inline, which warns about using a static local","Add -Wstatic-local-in-inline, which warns about using a static local"}, | ||
[j]={{H,7830,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n // C99 6.7.4p3\n // An inline definition of a function with external linkage shall\n // not contain a definition of a modifiable object with static or\n // thread storage duration...\n // We only apply this when the function is required to be defined\n // elsewhere, i.e. when the function is not \'extern inline\'. Note\n // that a local variable with thread storage duration still has to\n // be marked \'static\'. Also note that it\'s possible to get these\n // semantics in C++ using __attribute__((gnu_inline)).\n if (SC == SC_Static && S->getFnParent() != nullptr && !NewVD->getType().isConstQualified()) {\n if (CurFD && isFunctionDefinitionDiscarded(*this, CurFD)) {\n Diag(D.getDeclSpec().getStorageClassSpecLoc(), diag::warn_static_local_in_extern_inline);"}}, | [j]={{H,7830,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n // ...\n // C99 6.7.4p3\n // An inline definition of a function with external linkage shall\n // not contain a definition of a modifiable object with static or\n // thread storage duration...\n // We only apply this when the function is required to be defined\n // elsewhere, i.e. when the function is not \'extern inline\'. Note\n // that a local variable with thread storage duration still has to\n // be marked \'static\'. Also note that it\'s possible to get these\n // semantics in C++ using __attribute__((gnu_inline)).\n if (SC == SC_Static && S->getFnParent() != nullptr && !NewVD->getType().isConstQualified()) {\n // ...\n if (CurFD && isFunctionDefinitionDiscarded(*this, CurFD)) {\n Diag(D.getDeclSpec().getStorageClassSpecLoc(), diag::warn_static_local_in_extern_inline);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/inline.c"]={"clang/test/Sema/inline.c:78:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]"} | ["clang/test/Sema/inline.c"]={"clang/test/Sema/inline.c:78:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]"} | ||
Line 6,812: | Line 6,812: | ||
[h]=q, | [h]=q, | ||
[i]={"e07d167a5016",1358556540,"Reword warning about using a *static* variable within its own initialization.","Reword warning about using a *static* variable within its own initialization."}, | [i]={"e07d167a5016",1358556540,"Reword warning about using a *static* variable within its own initialization.","Reword warning about using a *static* variable within its own initialization."}, | ||
[j]={{H,12619,"// Visits an initialization expression to see if OrigDecl is evaluated in\n// its own initialization and throws a warning if it does.\nclass SelfReferenceChecker : public EvaluatedExprVisitor<SelfReferenceChecker> {\n void HandleDeclRefExpr(DeclRefExpr *DRE) {\n if (isReferenceType) {\n } else if (cast<VarDecl>(OrigDecl)->isStaticLocal()) {\n diag = diag::warn_static_self_reference_in_init;"}}, | [j]={{H,12619,"// Visits an initialization expression to see if OrigDecl is evaluated in\n// its own initialization and throws a warning if it does.\nclass SelfReferenceChecker : public EvaluatedExprVisitor<SelfReferenceChecker> {\n // ...\n void HandleDeclRefExpr(DeclRefExpr *DRE) {\n // ...\n if (isReferenceType) {\n // ...\n } else if (cast<VarDecl>(OrigDecl)->isStaticLocal()) {\n diag = diag::warn_static_self_reference_in_init;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/uninitialized.cpp"]={ | ["clang/test/SemaCXX/uninitialized.cpp"]={ | ||
Line 6,882: | Line 6,882: | ||
[h]=B, | [h]=B, | ||
[i]={"5c63ae156e96",1597298751,"[OpenMP] Support nested OpenMP context selectors (declare variant)","[OpenMP] Support nested OpenMP context selectors (declare variant)"}, | [i]={"5c63ae156e96",1597298751,"[OpenMP] Support nested OpenMP context selectors (declare variant)","[OpenMP] Support nested OpenMP context selectors (declare variant)"}, | ||
[j]={{s,3379,"void PragmaSTDC_FENV_ROUNDHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n PP.Diag(Tok.getLocation(), diag::warn_stdc_fenv_round_not_supported);"}}, | [j]={{s,3379,"void PragmaSTDC_FENV_ROUNDHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n PP.Diag(Tok.getLocation(), diag::warn_stdc_fenv_round_not_supported);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/AST/ast-dump-pragma-json.c"]={"clang/test/AST/ast-dump-pragma-json.c:4:40: warning: pragma STDC FENV_ROUND is not supported [-Wunknown-pragmas]","clang/test/AST/ast-dump-pragma-json.c:6:38: warning: pragma STDC FENV_ROUND is not supported [-Wunknown-pragmas]"} | ["clang/test/AST/ast-dump-pragma-json.c"]={"clang/test/AST/ast-dump-pragma-json.c:4:40: warning: pragma STDC FENV_ROUND is not supported [-Wunknown-pragmas]","clang/test/AST/ast-dump-pragma-json.c:6:38: warning: pragma STDC FENV_ROUND is not supported [-Wunknown-pragmas]"} | ||
Line 6,899: | Line 6,899: | ||
[h]=B, | [h]=B, | ||
[i]={"5c63ae156e96",1597298751,"[OpenMP] Support nested OpenMP context selectors (declare variant)","[OpenMP] Support nested OpenMP context selectors (declare variant)"}, | [i]={"5c63ae156e96",1597298751,"[OpenMP] Support nested OpenMP context selectors (declare variant)","[OpenMP] Support nested OpenMP context selectors (declare variant)"}, | ||
[j]={{s,3367,"void PragmaSTDC_FENV_ROUNDHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n if (RM == llvm::RoundingMode::Invalid) {\n PP.Diag(Tok.getLocation(), diag::warn_stdc_unknown_rounding_mode);"}}, | [j]={{s,3367,"void PragmaSTDC_FENV_ROUNDHandler::HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {\n // ...\n if (RM == llvm::RoundingMode::Invalid) {\n PP.Diag(Tok.getLocation(), diag::warn_stdc_unknown_rounding_mode);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/pragma-fenv_round.c"]={"clang/test/Parser/pragma-fenv_round.c:3:25: warning: invalid or unsupported rounding mode in \'#pragma STDC FENV_ROUND\' - ignored [-Wignored-pragmas]"} | ["clang/test/Parser/pragma-fenv_round.c"]={"clang/test/Parser/pragma-fenv_round.c:3:25: warning: invalid or unsupported rounding mode in \'#pragma STDC FENV_ROUND\' - ignored [-Wignored-pragmas]"} | ||
Line 6,917: | Line 6,917: | ||
[h]=q, | [h]=q, | ||
[i]={"3337b2e8dd0e",1281396478,"Implements gcc\'s -Wstrict-selector-match.","Implements gcc\'s -Wstrict-selector-match."}, | [i]={"3337b2e8dd0e",1281396478,"Implements gcc\'s -Wstrict-selector-match.","Implements gcc\'s -Wstrict-selector-match."}, | ||
[j]={{P,3607,"void Sema::DiagnoseMultipleMethodInGlobalPool(SmallVectorImpl<ObjCMethodDecl *> &Methods, Selector Sel, SourceRange R, bool receiverIdOrClass) {\n bool strictSelectorMatch = receiverIdOrClass && !Diags.isIgnored(diag::warn_strict_multiple_method_decl, R.getBegin());"},{P,3637,"void Sema::DiagnoseMultipleMethodInGlobalPool(SmallVectorImpl<ObjCMethodDecl *> &Methods, Selector Sel, SourceRange R, bool receiverIdOrClass) {\n if (issueDiagnostic) {\n if (issueError)\n else if (strictSelectorMatch)\n Diag(R.getBegin(), diag::warn_strict_multiple_method_decl) << Sel << R;"}}, | [j]={{P,3607,"void Sema::DiagnoseMultipleMethodInGlobalPool(SmallVectorImpl<ObjCMethodDecl *> &Methods, Selector Sel, SourceRange R, bool receiverIdOrClass) {\n // ...\n bool strictSelectorMatch = receiverIdOrClass && !Diags.isIgnored(diag::warn_strict_multiple_method_decl, R.getBegin());"},{P,3637,"void Sema::DiagnoseMultipleMethodInGlobalPool(SmallVectorImpl<ObjCMethodDecl *> &Methods, Selector Sel, SourceRange R, bool receiverIdOrClass) {\n // ...\n if (issueDiagnostic) {\n if (issueError)\n // ...\n else if (strictSelectorMatch)\n Diag(R.getBegin(), diag::warn_strict_multiple_method_decl) << Sel << R;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/warn-strict-selector-match.m"]={"clang/test/SemaObjC/warn-strict-selector-match.m:11:18: warning: multiple methods named \'method\' found [-Wstrict-selector-match]","clang/test/SemaObjC/warn-strict-selector-match.m:26:3: warning: multiple methods named \'setWindow:\' found [-Wstrict-selector-match]","clang/test/SemaObjC/warn-strict-selector-match.m:28:3: warning: multiple methods named \'setWindow:\' found [-Wstrict-selector-match]","clang/test/SemaObjC/warn-strict-selector-match.m:57:32: warning: multiple methods named \'initWithData:\' found [-Wstrict-selector-match]","clang/test/SemaObjC/warn-strict-selector-match.m:93:12: warning: multiple methods named \'initWithType:\' found [-Wstrict-selector-match]"} | ["clang/test/SemaObjC/warn-strict-selector-match.m"]={"clang/test/SemaObjC/warn-strict-selector-match.m:11:18: warning: multiple methods named \'method\' found [-Wstrict-selector-match]","clang/test/SemaObjC/warn-strict-selector-match.m:26:3: warning: multiple methods named \'setWindow:\' found [-Wstrict-selector-match]","clang/test/SemaObjC/warn-strict-selector-match.m:28:3: warning: multiple methods named \'setWindow:\' found [-Wstrict-selector-match]","clang/test/SemaObjC/warn-strict-selector-match.m:57:32: warning: multiple methods named \'initWithData:\' found [-Wstrict-selector-match]","clang/test/SemaObjC/warn-strict-selector-match.m:93:12: warning: multiple methods named \'initWithType:\' found [-Wstrict-selector-match]"} | ||
Line 6,935: | Line 6,935: | ||
[h]=q, | [h]=q, | ||
[i]={Yb,1582847864,tb,tb}, | [i]={Yb,1582847864,tb,tb}, | ||
[j]={{cb,1341,"ExprResult Sema::ParseObjCSelectorExpression(Selector Sel, SourceLocation AtLoc, SourceLocation SelLoc, SourceLocation LParenLoc, SourceLocation RParenLoc, bool WarnMultipleSelectors) {\n if (!Method) {\n } else {\n if (onlyDirect) {\n } else if (anyDirect) {\n if (LikelyTargetMethod && LikelyTargetMethod->isDirectMethod()) {\n } else if (!LikelyTargetMethod) {\n Diag(AtLoc, diag::warn_strict_potentially_direct_selector_expression) << Sel;"}}, | [j]={{cb,1341,"ExprResult Sema::ParseObjCSelectorExpression(Selector Sel, SourceLocation AtLoc, SourceLocation SelLoc, SourceLocation LParenLoc, SourceLocation RParenLoc, bool WarnMultipleSelectors) {\n // ...\n if (!Method) {\n // ...\n } else {\n // ...\n if (onlyDirect) {\n // ...\n } else if (anyDirect) {\n // ...\n if (LikelyTargetMethod && LikelyTargetMethod->isDirectMethod()) {\n // ...\n } else if (!LikelyTargetMethod) {\n // ...\n Diag(AtLoc, diag::warn_strict_potentially_direct_selector_expression) << Sel;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/potentially-direct-selector.m"]={"clang/test/SemaObjC/potentially-direct-selector.m:83:9: warning: @selector expression formed with potentially direct selector \'inBase\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:84:9: warning: @selector expression formed with potentially direct selector \'inBaseImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:85:9: warning: @selector expression formed with potentially direct selector \'inBaseCat\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:86:9: warning: @selector expression formed with potentially direct selector \'inBaseCatImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:87:9: warning: @selector expression formed with potentially direct selector \'inDerived\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:88:9: warning: @selector expression formed with potentially direct selector \'inDerivedImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:89:9: warning: @selector expression formed with potentially direct selector \'inDerivedCat\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:90:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:91:9: warning: @selector expression formed with potentially direct selector \'inDerivedClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:92:9: warning: @selector expression formed with potentially direct selector \'inBaseClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:93:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:103:9: warning: @selector expression formed with potentially direct selector \'inDerived\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:104:9: warning: @selector expression formed with potentially direct selector \'inDerivedImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:105:9: warning: @selector expression formed with potentially direct selector \'inDerivedCat\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:106:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:107:9: warning: @selector expression formed with potentially direct selector \'inDerivedClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:109:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:117:9: warning: @selector expression formed with potentially direct selector \'inBase\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:118:9: warning: @selector expression formed with potentially direct selector \'inBaseImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:119:9: warning: @selector expression formed with potentially direct selector \'inBaseCat\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:120:9: warning: @selector expression formed with potentially direct selector \'inBaseCatImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:121:9: warning: @selector expression formed with potentially direct selector \'inDerived\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:122:9: warning: @selector expression formed with potentially direct selector \'inDerivedImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:123:9: warning: @selector expression formed with potentially direct selector \'inDerivedCat\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:124:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:125:9: warning: @selector expression formed with potentially direct selector \'inDerivedClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:126:9: warning: @selector expression formed with potentially direct selector \'inBaseClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:127:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatClass\' [-Wstrict-potentially-direct-selector]"} | ["clang/test/SemaObjC/potentially-direct-selector.m"]={"clang/test/SemaObjC/potentially-direct-selector.m:83:9: warning: @selector expression formed with potentially direct selector \'inBase\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:84:9: warning: @selector expression formed with potentially direct selector \'inBaseImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:85:9: warning: @selector expression formed with potentially direct selector \'inBaseCat\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:86:9: warning: @selector expression formed with potentially direct selector \'inBaseCatImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:87:9: warning: @selector expression formed with potentially direct selector \'inDerived\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:88:9: warning: @selector expression formed with potentially direct selector \'inDerivedImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:89:9: warning: @selector expression formed with potentially direct selector \'inDerivedCat\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:90:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:91:9: warning: @selector expression formed with potentially direct selector \'inDerivedClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:92:9: warning: @selector expression formed with potentially direct selector \'inBaseClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:93:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:103:9: warning: @selector expression formed with potentially direct selector \'inDerived\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:104:9: warning: @selector expression formed with potentially direct selector \'inDerivedImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:105:9: warning: @selector expression formed with potentially direct selector \'inDerivedCat\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:106:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:107:9: warning: @selector expression formed with potentially direct selector \'inDerivedClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:109:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:117:9: warning: @selector expression formed with potentially direct selector \'inBase\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:118:9: warning: @selector expression formed with potentially direct selector \'inBaseImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:119:9: warning: @selector expression formed with potentially direct selector \'inBaseCat\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:120:9: warning: @selector expression formed with potentially direct selector \'inBaseCatImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:121:9: warning: @selector expression formed with potentially direct selector \'inDerived\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:122:9: warning: @selector expression formed with potentially direct selector \'inDerivedImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:123:9: warning: @selector expression formed with potentially direct selector \'inDerivedCat\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:124:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatImpl\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:125:9: warning: @selector expression formed with potentially direct selector \'inDerivedClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:126:9: warning: @selector expression formed with potentially direct selector \'inBaseClass\' [-Wstrict-potentially-direct-selector]","clang/test/SemaObjC/potentially-direct-selector.m:127:9: warning: @selector expression formed with potentially direct selector \'inDerivedCatClass\' [-Wstrict-potentially-direct-selector]"} | ||
Line 6,953: | Line 6,953: | ||
[h]=q, | [h]=q, | ||
[i]={"840f8df67759",1481107938,"Implement the -Wstrict-prototypes warning","Implement the -Wstrict-prototypes warning"}, | [i]={"840f8df67759",1481107938,"Implement the -Wstrict-prototypes warning","Implement the -Wstrict-prototypes warning"}, | ||
[j]={{T,5767,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n // GNU warning -Wstrict-prototypes\n // Warn if a function declaration or definition is without a prototype.\n // This warning is issued for all kinds of unprototyped function\n // declarations (i.e. function type typedef, function pointer etc.)\n // C99 6.7.5.3p14:\n // The empty list in a function declarator that is not part of a definition\n // of that function specifies that no information about the number or types\n // of the parameters is supplied.\n // See ActOnFinishFunctionBody() and MergeFunctionDecl() for handling of\n // function declarations whose behavior changes in C2x.\n if (!LangOpts.requiresStrictPrototypes()) {\n for (const DeclaratorChunk &DeclType : D.type_objects()) {\n case DeclaratorChunk::Function: {\n // We suppress the warning when there\'s no LParen location, as this\n // indicates the declaration was an implicit declaration, which gets\n // warned about separately via -Wimplicit-function-declaration. We also\n // suppress the warning when we know the function has a prototype.\n if (!FTI.hasPrototype && FTI.NumParams == 0 && !FTI.isVariadic && FTI.getLParenLoc().isValid())\n S.Diag(DeclType.Loc, diag::warn_strict_prototypes) << IsBlock << FixItHint::CreateInsertion(FTI.getRParenLoc(), \"void\");"}}, | [j]={{T,5767,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n // ...\n // GNU warning -Wstrict-prototypes\n // Warn if a function declaration or definition is without a prototype.\n // This warning is issued for all kinds of unprototyped function\n // declarations (i.e. function type typedef, function pointer etc.)\n // C99 6.7.5.3p14:\n // The empty list in a function declarator that is not part of a definition\n // of that function specifies that no information about the number or types\n // of the parameters is supplied.\n // See ActOnFinishFunctionBody() and MergeFunctionDecl() for handling of\n // function declarations whose behavior changes in C2x.\n if (!LangOpts.requiresStrictPrototypes()) {\n // ...\n for (const DeclaratorChunk &DeclType : D.type_objects()) {\n // ...\n case DeclaratorChunk::Function: {\n // ...\n // We suppress the warning when there\'s no LParen location, as this\n // indicates the declaration was an implicit declaration, which gets\n // warned about separately via -Wimplicit-function-declaration. We also\n // suppress the warning when we know the function has a prototype.\n if (!FTI.hasPrototype && FTI.NumParams == 0 && !FTI.isVariadic && FTI.getLParenLoc().isValid())\n S.Diag(DeclType.Loc, diag::warn_strict_prototypes) << IsBlock << FixItHint::CreateInsertion(FTI.getRParenLoc(), \"void\");"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/declarators.c"]={"clang/test/Parser/declarators.c:5:8: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]","clang/test/Parser/declarators.c:47:10: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]"} | ["clang/test/Parser/declarators.c"]={"clang/test/Parser/declarators.c:5:8: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]","clang/test/Parser/declarators.c:47:10: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]"} | ||
Line 6,970: | Line 6,970: | ||
[h]=q, | [h]=q, | ||
[i]={pd,1620530452,Rb,Rb}, | [i]={pd,1620530452,Rb,Rb}, | ||
[j]={{A,7557,"/// 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 (Proto) {\n } else {\n if (!Proto && !Args.empty() && (!FDecl || (!FDecl->isImplicit() && !Diags.isIgnored(diag::warn_strict_uses_without_prototype, FDecl->getLocation()))))"},{A,7584,"/// 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 (Proto) {\n } else {\n // If we still haven\'t found a prototype to use but there are arguments to\n // the call, diagnose this as calling a function without a prototype.\n // However, if we found a function declaration, check to see if\n // -Wdeprecated-non-prototype was disabled where the function was declared.\n // If so, we will silence the diagnostic here on the assumption that this\n // interface is intentional and the user knows what they\'re doing. We will\n // also silence the diagnostic if there is a function declaration but it\n // was implicitly defined (the user already gets diagnostics about the\n // creation of the implicit function declaration, so the additional warning\n // is not helpful).\n if (!Proto && !Args.empty() && (!FDecl || (!FDecl->isImplicit() && !Diags.isIgnored(diag::warn_strict_uses_without_prototype, FDecl->getLocation()))))\n Diag(LParenLoc, diag::warn_strict_uses_without_prototype) << (FDecl != nullptr) << FDecl;"}}, | [j]={{A,7557,"/// 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 // ...\n if (Proto) {\n // ...\n } else {\n // ...\n if (!Proto && !Args.empty() && (!FDecl || (!FDecl->isImplicit() && !Diags.isIgnored(diag::warn_strict_uses_without_prototype, FDecl->getLocation()))))"},{A,7584,"/// 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 // ...\n if (Proto) {\n // ...\n } else {\n // ...\n // If we still haven\'t found a prototype to use but there are arguments to\n // the call, diagnose this as calling a function without a prototype.\n // However, if we found a function declaration, check to see if\n // -Wdeprecated-non-prototype was disabled where the function was declared.\n // If so, we will silence the diagnostic here on the assumption that this\n // interface is intentional and the user knows what they\'re doing. We will\n // also silence the diagnostic if there is a function declaration but it\n // was implicitly defined (the user already gets diagnostics about the\n // creation of the implicit function declaration, so the additional warning\n // is not helpful).\n if (!Proto && !Args.empty() && (!FDecl || (!FDecl->isImplicit() && !Diags.isIgnored(diag::warn_strict_uses_without_prototype, FDecl->getLocation()))))\n Diag(LParenLoc, diag::warn_strict_uses_without_prototype) << (FDecl != nullptr) << FDecl;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGen/avr/address-space-avr.c"]={"<stdin>:27:6: warning: passing arguments to \'foo\' without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]","<stdin>:28:6: warning: passing arguments to \'foo\' without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]"} | ["clang/test/CodeGen/avr/address-space-avr.c"]={"<stdin>:27:6: warning: passing arguments to \'foo\' without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]","<stdin>:28:6: warning: passing arguments to \'foo\' without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]"} | ||
Line 6,987: | Line 6,987: | ||
[h]=q, | [h]=q, | ||
[i]={"5565941effbe",1382719920,"Add -Wstring-plus-char, which warns when adding char literals to C strings.","Add -Wstring-plus-char, which warns when adding char literals to C strings."}, | [i]={"5565941effbe",1382719920,"Add -Wstring-plus-char, which warns when adding char literals to C strings.","Add -Wstring-plus-char, which warns when adding char literals to C strings."}, | ||
[j]={{A,11680,"/// Emit a warning when adding a char literal to a string.\nstatic void diagnoseStringPlusChar(Sema &Self, SourceLocation OpLoc, Expr *LHSExpr, Expr *RHSExpr) {\n if (!CharType->isAnyCharacterType() && CharType->isIntegerType() && llvm::isUIntN(Ctx.getCharWidth(), CharExpr->getValue())) {\n Self.Diag(OpLoc, diag::warn_string_plus_char) << DiagRange << Ctx.CharTy;"},{A,11687,"/// Emit a warning when adding a char literal to a string.\nstatic void diagnoseStringPlusChar(Sema &Self, SourceLocation OpLoc, Expr *LHSExpr, Expr *RHSExpr) {\n if (!CharType->isAnyCharacterType() && CharType->isIntegerType() && llvm::isUIntN(Ctx.getCharWidth(), CharExpr->getValue())) {\n } else {\n Self.Diag(OpLoc, diag::warn_string_plus_char) << DiagRange << CharExpr->getType();"}}, | [j]={{A,11680,"/// Emit a warning when adding a char literal to a string.\nstatic void diagnoseStringPlusChar(Sema &Self, SourceLocation OpLoc, Expr *LHSExpr, Expr *RHSExpr) {\n // ...\n if (!CharType->isAnyCharacterType() && CharType->isIntegerType() && llvm::isUIntN(Ctx.getCharWidth(), CharExpr->getValue())) {\n Self.Diag(OpLoc, diag::warn_string_plus_char) << DiagRange << Ctx.CharTy;"},{A,11687,"/// Emit a warning when adding a char literal to a string.\nstatic void diagnoseStringPlusChar(Sema &Self, SourceLocation OpLoc, Expr *LHSExpr, Expr *RHSExpr) {\n // ...\n if (!CharType->isAnyCharacterType() && CharType->isIntegerType() && llvm::isUIntN(Ctx.getCharWidth(), CharExpr->getValue())) {\n // ...\n } else {\n Self.Diag(OpLoc, diag::warn_string_plus_char) << DiagRange << CharExpr->getType();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/string-plus-char.c"]={"clang/test/Sema/string-plus-char.c:6:16: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]","clang/test/Sema/string-plus-char.c:11:20: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]","clang/test/Sema/string-plus-char.c:13:28: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]","clang/test/Sema/string-plus-char.c:15:13: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]","clang/test/Sema/string-plus-char.c:18:16: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]","clang/test/Sema/string-plus-char.c:20:20: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]","clang/test/Sema/string-plus-char.c:24:23: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]"} | ["clang/test/Sema/string-plus-char.c"]={"clang/test/Sema/string-plus-char.c:6:16: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]","clang/test/Sema/string-plus-char.c:11:20: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]","clang/test/Sema/string-plus-char.c:13:28: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]","clang/test/Sema/string-plus-char.c:15:13: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]","clang/test/Sema/string-plus-char.c:18:16: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]","clang/test/Sema/string-plus-char.c:20:20: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]","clang/test/Sema/string-plus-char.c:24:23: warning: adding \'char\' to a string pointer does not append to the string [-Wstring-plus-char]"} | ||
Line 7,004: | Line 7,004: | ||
[h]=q, | [h]=q, | ||
[i]={"ccec40d9b756",1330725682,"Add -Wstring-plus-int, which warns on \"str\" + int and int + \"str\".","Add -Wstring-plus-int, which warns on \"str\" + int and int + \"str\"."}, | [i]={"ccec40d9b756",1330725682,"Add -Wstring-plus-int, which warns on \"str\" + int and int + \"str\".","Add -Wstring-plus-int, which warns on \"str\" + int and int + \"str\"."}, | ||
[j]={{A,11637,"/// diagnoseStringPlusInt - Emit a warning when adding an integer to a string\n/// literal.\nstatic void diagnoseStringPlusInt(Sema &Self, SourceLocation OpLoc, Expr *LHSExpr, Expr *RHSExpr) {\n Self.Diag(OpLoc, diag::warn_string_plus_int) << DiagRange << IndexExpr->IgnoreImpCasts()->getType();"}}, | [j]={{A,11637,"/// diagnoseStringPlusInt - Emit a warning when adding an integer to a string\n/// literal.\nstatic void diagnoseStringPlusInt(Sema &Self, SourceLocation OpLoc, Expr *LHSExpr, Expr *RHSExpr) {\n // ...\n Self.Diag(OpLoc, diag::warn_string_plus_int) << DiagRange << IndexExpr->IgnoreImpCasts()->getType();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/string-plus-int.cpp"]={"clang/test/SemaCXX/string-plus-int.cpp:31:17: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:32:17: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:33:17: warning: adding \'MyEnum\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:34:17: warning: adding \'MyEnum\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:36:13: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:37:17: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:38:19: warning: adding \'MyEnum\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:39:24: warning: adding \'MyEnum\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:42:23: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:43:19: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:45:18: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:46:18: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:48:17: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:49:17: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:50:19: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:54:15: warning: adding \'unsigned long\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:68:20: warning: adding \'unsigned long\' to a string does not append to the string [-Wstring-plus-int]"} | ["clang/test/SemaCXX/string-plus-int.cpp"]={"clang/test/SemaCXX/string-plus-int.cpp:31:17: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:32:17: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:33:17: warning: adding \'MyEnum\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:34:17: warning: adding \'MyEnum\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:36:13: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:37:17: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:38:19: warning: adding \'MyEnum\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:39:24: warning: adding \'MyEnum\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:42:23: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:43:19: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:45:18: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:46:18: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:48:17: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:49:17: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:50:19: warning: adding \'int\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:54:15: warning: adding \'unsigned long\' to a string does not append to the string [-Wstring-plus-int]","clang/test/SemaCXX/string-plus-int.cpp:68:20: warning: adding \'unsigned long\' to a string does not append to the string [-Wstring-plus-int]"} | ||
Line 7,021: | Line 7,021: | ||
[h]=q, | [h]=q, | ||
[i]={Fc,1237025389,Fb,Fb}, | [i]={Fc,1237025389,Fb,Fb}, | ||
[j]={{A,12771,"/// Diagnose some forms of syntactically-obvious tautological comparison.\nstatic void diagnoseTautologicalComparison(Sema &S, SourceLocation Loc, Expr *LHS, Expr *RHS, BinaryOperatorKind Opc) {\n if (LiteralString) {\n S.DiagRuntimeBehavior(Loc, nullptr, S.PDiag(diag::warn_stringcompare) << isa<ObjCEncodeExpr>(LiteralStringStripped) << LiteralString->getSourceRange());"}}, | [j]={{A,12771,"/// Diagnose some forms of syntactically-obvious tautological comparison.\nstatic void diagnoseTautologicalComparison(Sema &S, SourceLocation Loc, Expr *LHS, Expr *RHS, BinaryOperatorKind Opc) {\n // ...\n if (LiteralString) {\n S.DiagRuntimeBehavior(Loc, nullptr, S.PDiag(diag::warn_stringcompare) << isa<ObjCEncodeExpr>(LiteralStringStripped) << LiteralString->getSourceRange());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/exprs.m"]={"clang/test/SemaObjC/exprs.m:20:20: warning: result of comparison against @encode is unspecified (use an explicit string comparison function instead) [-Wstring-compare]"} | ["clang/test/SemaObjC/exprs.m"]={"clang/test/SemaObjC/exprs.m:20:20: warning: result of comparison against @encode is unspecified (use an explicit string comparison function instead) [-Wstring-compare]"} | ||
Line 7,038: | Line 7,038: | ||
[h]=q, | [h]=q, | ||
[i]={"d5fe9e4d9741",1313624436,"Add experimental -Wstrlcpy-size warning that looks to see if the size argument for strlcpy/strlcat i...","Add experimental -Wstrlcpy-size warning that looks to see if the size argument for strlcpy/strlcat is the size of the *source*, and not the size of the *destination*. This warning is off by default (for now)."}, | [i]={"d5fe9e4d9741",1313624436,"Add experimental -Wstrlcpy-size warning that looks to see if the size argument for strlcpy/strlcat i...","Add experimental -Wstrlcpy-size warning that looks to see if the size argument for strlcpy/strlcat is the size of the *source*, and not the size of the *destination*. This warning is off by default (for now)."}, | ||
[j]={{x,12695,"// Warn if the user has made the \'size\' argument to strlcpy or strlcat\n// be the size of the source, instead of the destination.\nvoid Sema::CheckStrlcpycatArguments(const CallExpr *Call, IdentifierInfo *FnName) {\n Diag(CompareWithSrcDRE->getBeginLoc(), diag::warn_strlcpycat_wrong_size) << OriginalSizeArg->getSourceRange() << FnName;"}}, | [j]={{x,12695,"// Warn if the user has made the \'size\' argument to strlcpy or strlcat\n// be the size of the source, instead of the destination.\nvoid Sema::CheckStrlcpycatArguments(const CallExpr *Call, IdentifierInfo *FnName) {\n // ...\n Diag(CompareWithSrcDRE->getBeginLoc(), diag::warn_strlcpycat_wrong_size) << OriginalSizeArg->getSourceRange() << FnName;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-strlcpycat-size.c"]={"clang/test/Sema/warn-strlcpycat-size.c:22:26: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:23:26: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:24:26: warning: size argument in \'strlcat\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:25:29: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:26:36: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:27:28: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:38:29: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:46:26: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:54:26: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]"} | ["clang/test/Sema/warn-strlcpycat-size.c"]={"clang/test/Sema/warn-strlcpycat-size.c:22:26: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:23:26: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:24:26: warning: size argument in \'strlcat\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:25:29: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:26:36: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:27:28: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:38:29: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:46:26: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]","clang/test/Sema/warn-strlcpycat-size.c:54:26: warning: size argument in \'strlcpy\' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]"} | ||
Line 7,055: | Line 7,055: | ||
[h]=q, | [h]=q, | ||
[i]={"314cd09b5c79",1328123337,"Add a new compiler warning, which flags anti-patterns used as the size","Add a new compiler warning, which flags anti-patterns used as the size"}, | [i]={"314cd09b5c79",1328123337,"Add a new compiler warning, which flags anti-patterns used as the size","Add a new compiler warning, which flags anti-patterns used as the size"}, | ||
[j]={{x,12803,"// Warn on anti-patterns as the \'size\' argument to strncat.\n// The correct size argument should look like following:\n// strncat(dst, src, sizeof(dst) - strlen(dest) - 1);\nvoid Sema::CheckStrncatArguments(const CallExpr *CE, IdentifierInfo *FnName) {\n if (PatternType == 1)\n Diag(SL, diag::warn_strncat_large_size) << SR;"}}, | [j]={{x,12803,"// Warn on anti-patterns as the \'size\' argument to strncat.\n// The correct size argument should look like following:\n// strncat(dst, src, sizeof(dst) - strlen(dest) - 1);\nvoid Sema::CheckStrncatArguments(const CallExpr *CE, IdentifierInfo *FnName) {\n // ...\n if (PatternType == 1)\n Diag(SL, diag::warn_strncat_large_size) << SR;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-strncat-size.c"]={"clang/test/Sema/warn-strncat-size.c:37:48: warning: the value of the size argument in \'strncat\' is too large, might lead to a buffer overflow [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:39:52: warning: the value of the size argument in \'strncat\' is too large, might lead to a buffer overflow [-Wstrncat-size]"} | ["clang/test/Sema/warn-strncat-size.c"]={"clang/test/Sema/warn-strncat-size.c:37:48: warning: the value of the size argument in \'strncat\' is too large, might lead to a buffer overflow [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:39:52: warning: the value of the size argument in \'strncat\' is too large, might lead to a buffer overflow [-Wstrncat-size]"} | ||
Line 7,072: | Line 7,072: | ||
[h]=q, | [h]=q, | ||
[i]={"314cd09b5c79",1328123337,"Add a new compiler warning, which flags anti-patterns used as the size","Add a new compiler warning, which flags anti-patterns used as the size"}, | [i]={"314cd09b5c79",1328123337,"Add a new compiler warning, which flags anti-patterns used as the size","Add a new compiler warning, which flags anti-patterns used as the size"}, | ||
[j]={{x,12798,"// Warn on anti-patterns as the \'size\' argument to strncat.\n// The correct size argument should look like following:\n// strncat(dst, src, sizeof(dst) - strlen(dest) - 1);\nvoid Sema::CheckStrncatArguments(const CallExpr *CE, IdentifierInfo *FnName) {\n if (!isKnownSizeArray) {\n if (PatternType == 1)\n else\n Diag(SL, diag::warn_strncat_src_size) << SR;"},{x,12805,"// Warn on anti-patterns as the \'size\' argument to strncat.\n// The correct size argument should look like following:\n// strncat(dst, src, sizeof(dst) - strlen(dest) - 1);\nvoid Sema::CheckStrncatArguments(const CallExpr *CE, IdentifierInfo *FnName) {\n if (PatternType == 1)\n else\n Diag(SL, diag::warn_strncat_src_size) << SR;"}}, | [j]={{x,12798,"// Warn on anti-patterns as the \'size\' argument to strncat.\n// The correct size argument should look like following:\n// strncat(dst, src, sizeof(dst) - strlen(dest) - 1);\nvoid Sema::CheckStrncatArguments(const CallExpr *CE, IdentifierInfo *FnName) {\n // ...\n if (!isKnownSizeArray) {\n if (PatternType == 1)\n // ...\n else\n Diag(SL, diag::warn_strncat_src_size) << SR;"},{x,12805,"// Warn on anti-patterns as the \'size\' argument to strncat.\n// The correct size argument should look like following:\n// strncat(dst, src, sizeof(dst) - strlen(dest) - 1);\nvoid Sema::CheckStrncatArguments(const CallExpr *CE, IdentifierInfo *FnName) {\n // ...\n if (PatternType == 1)\n // ...\n else\n Diag(SL, diag::warn_strncat_src_size) << SR;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-strncat-size.c"]={"clang/test/Sema/warn-strncat-size.c:33:22: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:35:22: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:41:29: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:42:21: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:43:22: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:54:23: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:70:19: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]"} | ["clang/test/Sema/warn-strncat-size.c"]={"clang/test/Sema/warn-strncat-size.c:33:22: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:35:22: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:41:29: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:42:21: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:43:22: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:54:23: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:70:19: warning: size argument in \'strncat\' call appears to be size of the source [-Wstrncat-size]"} | ||
Line 7,089: | Line 7,089: | ||
[h]=q, | [h]=q, | ||
[i]={"13b0857ad084",1344462143,"Address code review comments for Wstrncat-size warning (r161440).","Address code review comments for Wstrncat-size warning (r161440)."}, | [i]={"13b0857ad084",1344462143,"Address code review comments for Wstrncat-size warning (r161440).","Address code review comments for Wstrncat-size warning (r161440)."}, | ||
[j]={{x,12796,"// Warn on anti-patterns as the \'size\' argument to strncat.\n// The correct size argument should look like following:\n// strncat(dst, src, sizeof(dst) - strlen(dest) - 1);\nvoid Sema::CheckStrncatArguments(const CallExpr *CE, IdentifierInfo *FnName) {\n if (!isKnownSizeArray) {\n if (PatternType == 1)\n Diag(SL, diag::warn_strncat_wrong_size) << SR;"}}, | [j]={{x,12796,"// Warn on anti-patterns as the \'size\' argument to strncat.\n// The correct size argument should look like following:\n// strncat(dst, src, sizeof(dst) - strlen(dest) - 1);\nvoid Sema::CheckStrncatArguments(const CallExpr *CE, IdentifierInfo *FnName) {\n // ...\n if (!isKnownSizeArray) {\n if (PatternType == 1)\n Diag(SL, diag::warn_strncat_wrong_size) << SR;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-strncat-size.c"]={"clang/test/Sema/warn-strncat-size.c:62:19: warning: the value of the size argument to \'strncat\' is wrong [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:75:17: warning: the value of the size argument to \'strncat\' is wrong [-Wstrncat-size]"} | ["clang/test/Sema/warn-strncat-size.c"]={"clang/test/Sema/warn-strncat-size.c:62:19: warning: the value of the size argument to \'strncat\' is wrong [-Wstrncat-size]","clang/test/Sema/warn-strncat-size.c:75:17: warning: the value of the size argument to \'strncat\' is wrong [-Wstrncat-size]"} | ||
Line 7,107: | Line 7,107: | ||
[h]=q, | [h]=q, | ||
[i]={"caa33d36fb3f",1307675486,"Made changes to how \'struct\'/\'class\' mismatches are handled in -Wmismatched-tags.","Made changes to how \'struct\'/\'class\' mismatches are handled in -Wmismatched-tags."}, | [i]={"caa33d36fb3f",1307675486,"Made changes to how \'struct\'/\'class\' mismatches are handled in -Wmismatched-tags.","Made changes to how \'struct\'/\'class\' mismatches are handled in -Wmismatched-tags."}, | ||
[j]={{H,16652,"/// Determine whether a tag with a given kind is acceptable\n/// as a redeclaration of the given tag declaration.\n///\n/// \\returns true if the new tag kind is acceptable, false otherwise.\nbool Sema::isAcceptableTagRedeclaration(const TagDecl *Previous, TagTypeKind NewTag, bool isDefinition, SourceLocation NewTagLoc, const IdentifierInfo *Name) {\n if (isDefinition) {\n for (const TagDecl *I : Previous->redecls()) {\n if (I->getTagKind() != NewTag) {\n if (!previousMismatch) {\n Diag(NewTagLoc, diag::warn_struct_class_previous_tag_mismatch) << getRedeclDiagFromTagKind(NewTag) << isTemplate << Name << getRedeclDiagFromTagKind(I->getTagKind());"}}, | [j]={{H,16652,"/// Determine whether a tag with a given kind is acceptable\n/// as a redeclaration of the given tag declaration.\n///\n/// \\returns true if the new tag kind is acceptable, false otherwise.\nbool Sema::isAcceptableTagRedeclaration(const TagDecl *Previous, TagTypeKind NewTag, bool isDefinition, SourceLocation NewTagLoc, const IdentifierInfo *Name) {\n // ...\n if (isDefinition) {\n // ...\n for (const TagDecl *I : Previous->redecls()) {\n if (I->getTagKind() != NewTag) {\n // ...\n if (!previousMismatch) {\n // ...\n Diag(NewTagLoc, diag::warn_struct_class_previous_tag_mismatch) << getRedeclDiagFromTagKind(NewTag) << isTemplate << Name << getRedeclDiagFromTagKind(I->getTagKind());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/struct-class-redecl.cpp"]={"clang/test/SemaCXX/struct-class-redecl.cpp:8:19: warning: \'Y\' defined as a class template here but previously declared as a struct template; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:24:1: warning: \'B\' defined as a struct here but previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:34:1: warning: \'C\' defined as a class here but previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:57:19: warning: \'G\' defined as a struct template here but previously declared as a class template; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]"} | ["clang/test/SemaCXX/struct-class-redecl.cpp"]={"clang/test/SemaCXX/struct-class-redecl.cpp:8:19: warning: \'Y\' defined as a class template here but previously declared as a struct template; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:24:1: warning: \'B\' defined as a struct here but previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:34:1: warning: \'C\' defined as a class here but previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:57:19: warning: \'G\' defined as a struct template here but previously declared as a class template; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]"} | ||
Line 7,125: | Line 7,125: | ||
[h]=q, | [h]=q, | ||
[i]={"d9034f0b8970",1242319291,"In C++, warn when something previously declared as a \"struct\" is later","In C++, warn when something previously declared as a \"struct\" is later"}, | [i]={"d9034f0b8970",1242319291,"In C++, warn when something previously declared as a \"struct\" is later","In C++, warn when something previously declared as a \"struct\" is later"}, | ||
[j]={{H,16603,"/// Determine whether a tag with a given kind is acceptable\n/// as a redeclaration of the given tag declaration.\n///\n/// \\returns true if the new tag kind is acceptable, false otherwise.\nbool Sema::isAcceptableTagRedeclaration(const TagDecl *Previous, TagTypeKind NewTag, bool isDefinition, SourceLocation NewTagLoc, const IdentifierInfo *Name) {\n auto IsIgnoredLoc = [&](SourceLocation Loc) { return getDiagnostics().isIgnored(diag::warn_struct_class_tag_mismatch, Loc); };"},{H,16627,"/// Determine whether a tag with a given kind is acceptable\n/// as a redeclaration of the given tag declaration.\n///\n/// \\returns true if the new tag kind is acceptable, false otherwise.\nbool Sema::isAcceptableTagRedeclaration(const TagDecl *Previous, TagTypeKind NewTag, bool isDefinition, SourceLocation NewTagLoc, const IdentifierInfo *Name) {\n if (inTemplateInstantiation()) {\n if (OldTag != NewTag) {\n Diag(NewTagLoc, diag::warn_struct_class_tag_mismatch) << getRedeclDiagFromTagKind(NewTag) << isTemplate << Name << getRedeclDiagFromTagKind(OldTag);"},{H,16673,"/// Determine whether a tag with a given kind is acceptable\n/// as a redeclaration of the given tag declaration.\n///\n/// \\returns true if the new tag kind is acceptable, false otherwise.\nbool Sema::isAcceptableTagRedeclaration(const TagDecl *Previous, TagTypeKind NewTag, bool isDefinition, SourceLocation NewTagLoc, const IdentifierInfo *Name) {\n if (Redecl->getTagKind() != NewTag) {\n Diag(NewTagLoc, diag::warn_struct_class_tag_mismatch) << getRedeclDiagFromTagKind(NewTag) << isTemplate << Name << getRedeclDiagFromTagKind(OldTag);"}}, | [j]={{H,16603,"/// Determine whether a tag with a given kind is acceptable\n/// as a redeclaration of the given tag declaration.\n///\n/// \\returns true if the new tag kind is acceptable, false otherwise.\nbool Sema::isAcceptableTagRedeclaration(const TagDecl *Previous, TagTypeKind NewTag, bool isDefinition, SourceLocation NewTagLoc, const IdentifierInfo *Name) {\n // ...\n auto IsIgnoredLoc = [&](SourceLocation Loc) { return getDiagnostics().isIgnored(diag::warn_struct_class_tag_mismatch, Loc); };"},{H,16627,"/// Determine whether a tag with a given kind is acceptable\n/// as a redeclaration of the given tag declaration.\n///\n/// \\returns true if the new tag kind is acceptable, false otherwise.\nbool Sema::isAcceptableTagRedeclaration(const TagDecl *Previous, TagTypeKind NewTag, bool isDefinition, SourceLocation NewTagLoc, const IdentifierInfo *Name) {\n // ...\n if (inTemplateInstantiation()) {\n if (OldTag != NewTag) {\n // ...\n Diag(NewTagLoc, diag::warn_struct_class_tag_mismatch) << getRedeclDiagFromTagKind(NewTag) << isTemplate << Name << getRedeclDiagFromTagKind(OldTag);"},{H,16673,"/// Determine whether a tag with a given kind is acceptable\n/// as a redeclaration of the given tag declaration.\n///\n/// \\returns true if the new tag kind is acceptable, false otherwise.\nbool Sema::isAcceptableTagRedeclaration(const TagDecl *Previous, TagTypeKind NewTag, bool isDefinition, SourceLocation NewTagLoc, const IdentifierInfo *Name) {\n // ...\n if (Redecl->getTagKind() != NewTag) {\n Diag(NewTagLoc, diag::warn_struct_class_tag_mismatch) << getRedeclDiagFromTagKind(NewTag) << isTemplate << Name << getRedeclDiagFromTagKind(OldTag);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/struct-class-redecl.cpp"]={"clang/test/SemaCXX/struct-class-redecl.cpp:4:9: warning: struct \'X\' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:18:1: warning: struct \'A\' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:23:1: warning: struct \'B\' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:27:1: warning: struct \'C\' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:30:1: warning: class \'C\' was previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:32:1: warning: struct \'C\' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:40:1: warning: class \'D\' was previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:52:1: warning: class \'F\' was previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:56:19: warning: struct template \'G\' was previously declared as a class template; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:77:1: warning: struct \'H\' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:80:1: warning: class \'I\' was previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:83:1: warning: class \'K\' was previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:85:1: warning: class \'M\' was previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]"} | ["clang/test/SemaCXX/struct-class-redecl.cpp"]={"clang/test/SemaCXX/struct-class-redecl.cpp:4:9: warning: struct \'X\' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:18:1: warning: struct \'A\' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:23:1: warning: struct \'B\' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:27:1: warning: struct \'C\' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:30:1: warning: class \'C\' was previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:32:1: warning: struct \'C\' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:40:1: warning: class \'D\' was previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:52:1: warning: class \'F\' was previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:56:19: warning: struct template \'G\' was previously declared as a class template; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:77:1: warning: struct \'H\' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:80:1: warning: class \'I\' was previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:83:1: warning: class \'K\' was previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]","clang/test/SemaCXX/struct-class-redecl.cpp:85:1: warning: class \'M\' was previously declared as a struct; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Wmismatched-tags]"} | ||
Line 7,142: | Line 7,142: | ||
[h]=q, | [h]=q, | ||
[i]={"84c6b3d293d9",1378848854,"PR5683: Issue a warning when subtracting pointers to types of zero size, and","PR5683: Issue a warning when subtracting pointers to types of zero size, and"}, | [i]={"84c6b3d293d9",1378848854,"PR5683: Issue a warning when subtracting pointers to types of zero size, and","PR5683: Issue a warning when subtracting pointers to types of zero size, and"}, | ||
[j]={{A,11985,"// C99 6.5.6\nQualType Sema::CheckSubtractionOperands(ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, QualType *CompLHSTy) {\n // Either ptr - int or ptr - ptr.\n if (LHS.get()->getType()->isAnyPointerType()) {\n // Handle pointer-pointer subtractions.\n if (const PointerType *RHSPTy = RHS.get()->getType()->getAs<PointerType>()) {\n // The pointee type may have zero size. As an extension, a structure or\n // union may have zero size or an array may have zero length. In this\n // case subtraction does not make sense.\n if (!rpointee->isVoidType() && !rpointee->isFunctionType()) {\n if (ElementSize.isZero()) {\n Diag(Loc, diag::warn_sub_ptr_zero_size_types) << rpointee.getUnqualifiedType() << LHS.get()->getSourceRange() << RHS.get()->getSourceRange();"}}, | [j]={{A,11985,"// C99 6.5.6\nQualType Sema::CheckSubtractionOperands(ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, QualType *CompLHSTy) {\n // ...\n // Either ptr - int or ptr - ptr.\n if (LHS.get()->getType()->isAnyPointerType()) {\n // ...\n // Handle pointer-pointer subtractions.\n if (const PointerType *RHSPTy = RHS.get()->getType()->getAs<PointerType>()) {\n // ...\n // The pointee type may have zero size. As an extension, a structure or\n // union may have zero size or an array may have zero length. In this\n // case subtraction does not make sense.\n if (!rpointee->isVoidType() && !rpointee->isFunctionType()) {\n // ...\n if (ElementSize.isZero()) {\n Diag(Loc, diag::warn_sub_ptr_zero_size_types) << rpointee.getUnqualifiedType() << LHS.get()->getSourceRange() << RHS.get()->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/empty1.c"]={"clang/test/Sema/empty1.c:47:12: warning: subtraction of pointers to type \'struct emp_1\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:51:16: warning: subtraction of pointers to type \'struct emp_1\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:55:12: warning: subtraction of pointers to type \'struct emp_1\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:59:12: warning: subtraction of pointers to type \'struct emp_1\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:63:12: warning: subtraction of pointers to type \'struct emp_1\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:68:12: warning: subtraction of pointers to type \'union emp_2\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:78:12: warning: subtraction of pointers to type \'struct emp_1[10]\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:86:12: warning: subtraction of pointers to type \'int[0]\' of zero size has undefined behavior [-Wpointer-arith]"} | ["clang/test/Sema/empty1.c"]={"clang/test/Sema/empty1.c:47:12: warning: subtraction of pointers to type \'struct emp_1\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:51:16: warning: subtraction of pointers to type \'struct emp_1\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:55:12: warning: subtraction of pointers to type \'struct emp_1\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:59:12: warning: subtraction of pointers to type \'struct emp_1\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:63:12: warning: subtraction of pointers to type \'struct emp_1\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:68:12: warning: subtraction of pointers to type \'union emp_2\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:78:12: warning: subtraction of pointers to type \'struct emp_1[10]\' of zero size has undefined behavior [-Wpointer-arith]","clang/test/Sema/empty1.c:86:12: warning: subtraction of pointers to type \'int[0]\' of zero size has undefined behavior [-Wpointer-arith]"} | ||
Line 7,160: | Line 7,160: | ||
[h]=q, | [h]=q, | ||
[i]={"914244e7b0c6",1252893538,"Add support for -Wchar-subscripts. Fixes PR4801.","Add support for -Wchar-subscripts. Fixes PR4801."}, | [i]={"914244e7b0c6",1252893538,"Add support for -Wchar-subscripts. Fixes PR4801.","Add support for -Wchar-subscripts. Fixes PR4801."}, | ||
[j]={{A,5963,"ExprResult Sema::CreateBuiltinArraySubscriptExpr(Expr *Base, SourceLocation LLoc, Expr *Idx, SourceLocation RLoc) {\n if ((IndexExpr->getType()->isSpecificBuiltinType(BuiltinType::Char_S) || IndexExpr->getType()->isSpecificBuiltinType(BuiltinType::Char_U)) && !IndexExpr->isTypeDependent())\n Diag(LLoc, diag::warn_subscript_is_char) << IndexExpr->getSourceRange();"}}, | [j]={{A,5963,"ExprResult Sema::CreateBuiltinArraySubscriptExpr(Expr *Base, SourceLocation LLoc, Expr *Idx, SourceLocation RLoc) {\n // ...\n if ((IndexExpr->getType()->isSpecificBuiltinType(BuiltinType::Char_S) || IndexExpr->getType()->isSpecificBuiltinType(BuiltinType::Char_U)) && !IndexExpr->isTypeDependent())\n Diag(LLoc, diag::warn_subscript_is_char) << IndexExpr->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-char-subscripts.c"]={"clang/test/Sema/warn-char-subscripts.c:6:18: warning: array subscript is of type \'char\' [-Wchar-subscripts]","clang/test/Sema/warn-char-subscripts.c:12:22: warning: array subscript is of type \'char\' [-Wchar-subscripts]","clang/test/Sema/warn-char-subscripts.c:18:18: warning: array subscript is of type \'char\' [-Wchar-subscripts]","clang/test/Sema/warn-char-subscripts.c:24:22: warning: array subscript is of type \'char\' [-Wchar-subscripts]","clang/test/Sema/warn-char-subscripts.c:30:18: warning: array subscript is of type \'char\' [-Wchar-subscripts]","clang/test/Sema/warn-char-subscripts.c:49:18: warning: array subscript is of type \'char\' [-Wchar-subscripts]"} | ["clang/test/Sema/warn-char-subscripts.c"]={"clang/test/Sema/warn-char-subscripts.c:6:18: warning: array subscript is of type \'char\' [-Wchar-subscripts]","clang/test/Sema/warn-char-subscripts.c:12:22: warning: array subscript is of type \'char\' [-Wchar-subscripts]","clang/test/Sema/warn-char-subscripts.c:18:18: warning: array subscript is of type \'char\' [-Wchar-subscripts]","clang/test/Sema/warn-char-subscripts.c:24:22: warning: array subscript is of type \'char\' [-Wchar-subscripts]","clang/test/Sema/warn-char-subscripts.c:30:18: warning: array subscript is of type \'char\' [-Wchar-subscripts]","clang/test/Sema/warn-char-subscripts.c:49:18: warning: array subscript is of type \'char\' [-Wchar-subscripts]"} | ||
Line 7,178: | Line 7,178: | ||
[h]=q, | [h]=q, | ||
[i]={Yb,1582847864,tb,tb}, | [i]={Yb,1582847864,tb,tb}, | ||
[j]={{db,3315,"void Sema::DiagnoseAbsenceOfOverrideControl(NamedDecl *D, bool Inconsistent) {\n if (MD->size_overridden_methods() > 0) {\n if (isa<CXXDestructorDecl>(MD))\n EmitDiag(diag::warn_inconsistent_destructor_marked_not_override_overriding, diag::warn_suggest_destructor_marked_not_override_overriding);"}} | [j]={{db,3315,"void Sema::DiagnoseAbsenceOfOverrideControl(NamedDecl *D, bool Inconsistent) {\n // ...\n if (MD->size_overridden_methods() > 0) {\n // ...\n if (isa<CXXDestructorDecl>(MD))\n EmitDiag(diag::warn_inconsistent_destructor_marked_not_override_overriding, diag::warn_suggest_destructor_marked_not_override_overriding);"}} | ||
}, | }, | ||
["warn_suggest_function_marked_not_override_overriding"]={ | ["warn_suggest_function_marked_not_override_overriding"]={ | ||
Line 7,193: | Line 7,193: | ||
[h]=q, | [h]=q, | ||
[i]={Yb,1582847864,tb,tb}, | [i]={Yb,1582847864,tb,tb}, | ||
[j]={{db,3318,"void Sema::DiagnoseAbsenceOfOverrideControl(NamedDecl *D, bool Inconsistent) {\n if (MD->size_overridden_methods() > 0) {\n if (isa<CXXDestructorDecl>(MD))\n else\n EmitDiag(diag::warn_inconsistent_function_marked_not_override_overriding, diag::warn_suggest_function_marked_not_override_overriding);"}} | [j]={{db,3318,"void Sema::DiagnoseAbsenceOfOverrideControl(NamedDecl *D, bool Inconsistent) {\n // ...\n if (MD->size_overridden_methods() > 0) {\n // ...\n if (isa<CXXDestructorDecl>(MD))\n // ...\n else\n EmitDiag(diag::warn_inconsistent_function_marked_not_override_overriding, diag::warn_suggest_function_marked_not_override_overriding);"}} | ||
}, | }, | ||
["warn_suggest_noreturn_block"]={ | ["warn_suggest_noreturn_block"]={ | ||
Line 7,208: | Line 7,208: | ||
[h]=q, | [h]=q, | ||
[i]={"bce7a27d222a",1248822672,"Add support for -Wmissing-noreturn.","Add support for -Wmissing-noreturn."}, | [i]={"bce7a27d222a",1248822672,"Add support for -Wmissing-noreturn.","Add support for -Wmissing-noreturn."}, | ||
[j]={{E,634,"struct CheckFallThroughDiagnostics {\n bool checkDiagnostics(DiagnosticsEngine &D, bool ReturnsVoid, bool HasNoReturn) const {\n if (funMode == Function) {\n return (ReturnsVoid || D.isIgnored(diag::warn_maybe_falloff_nonvoid_function, FuncLoc)) && (!HasNoReturn || D.isIgnored(diag::warn_noreturn_function_has_return_expr, FuncLoc)) && (!ReturnsVoid || D.isIgnored(diag::warn_suggest_noreturn_block, FuncLoc));"}} | [j]={{E,634,"struct CheckFallThroughDiagnostics {\n // ...\n bool checkDiagnostics(DiagnosticsEngine &D, bool ReturnsVoid, bool HasNoReturn) const {\n if (funMode == Function) {\n return (ReturnsVoid || D.isIgnored(diag::warn_maybe_falloff_nonvoid_function, FuncLoc)) && (!HasNoReturn || D.isIgnored(diag::warn_noreturn_function_has_return_expr, FuncLoc)) && (!ReturnsVoid || D.isIgnored(diag::warn_suggest_noreturn_block, FuncLoc));"}} | ||
}, | }, | ||
["warn_suggest_noreturn_function"]={ | ["warn_suggest_noreturn_function"]={ | ||
Line 7,223: | Line 7,223: | ||
[h]=q, | [h]=q, | ||
[i]={"bce7a27d222a",1248822672,"Add support for -Wmissing-noreturn.","Add support for -Wmissing-noreturn."}, | [i]={"bce7a27d222a",1248822672,"Add support for -Wmissing-noreturn.","Add support for -Wmissing-noreturn."}, | ||
[j]={{E,572,"struct CheckFallThroughDiagnostics {\n static CheckFallThroughDiagnostics MakeForFunction(const Decl *Func) {\n if (!isVirtualMethod && !isTemplateInstantiation)\n D.diag_NeverFallThroughOrReturn = diag::warn_suggest_noreturn_function;"}}, | [j]={{E,572,"struct CheckFallThroughDiagnostics {\n // ...\n static CheckFallThroughDiagnostics MakeForFunction(const Decl *Func) {\n // ...\n if (!isVirtualMethod && !isTemplateInstantiation)\n D.diag_NeverFallThroughOrReturn = diag::warn_suggest_noreturn_function;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/return.m"]={"clang/test/SemaObjC/return.m:17:19: warning: function \'test3\' could be declared with attribute \'noreturn\' [-Wmissing-noreturn]","clang/test/SemaObjC/return.m:47:16: warning: method \'method\' could be declared with attribute \'noreturn\' [-Wmissing-noreturn]"} | ["clang/test/SemaObjC/return.m"]={"clang/test/SemaObjC/return.m:17:19: warning: function \'test3\' could be declared with attribute \'noreturn\' [-Wmissing-noreturn]","clang/test/SemaObjC/return.m:47:16: warning: method \'method\' could be declared with attribute \'noreturn\' [-Wmissing-noreturn]"} | ||
Line 7,240: | Line 7,240: | ||
[h]=q, | [h]=q, | ||
[i]={"30680e943735",1508796101,"[Sema] Add support for flexible array members in Obj-C.","[Sema] Add support for flexible array members in Obj-C."}, | [i]={"30680e943735",1508796101,"[Sema] Add support for flexible array members in Obj-C.","[Sema] Add support for flexible array members in Obj-C."}, | ||
[j]={{P,3922,"static void DiagnoseVariableSizedIvars(Sema &S, ObjCContainerDecl *OCD) {\n if (FirstIvar && (FirstIvar == IntfDecl->all_declared_ivar_begin())) {\n if (SuperClass) {\n if (IsVariableSizedType(LastIvar->getType())) {\n S.Diag(FirstIvar->getLocation(), diag::warn_superclass_variable_sized_type_not_at_end) << FirstIvar->getDeclName() << LastIvar->getDeclName() << LastIvar->getType() << SuperClass->getDeclName();"}}, | [j]={{P,3922,"static void DiagnoseVariableSizedIvars(Sema &S, ObjCContainerDecl *OCD) {\n // ...\n if (FirstIvar && (FirstIvar == IntfDecl->all_declared_ivar_begin())) {\n // ...\n if (SuperClass) {\n // ...\n if (IsVariableSizedType(LastIvar->getType())) {\n S.Diag(FirstIvar->getLocation(), diag::warn_superclass_variable_sized_type_not_at_end) << FirstIvar->getDeclName() << LastIvar->getDeclName() << LastIvar->getType() << SuperClass->getDeclName();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/flexible-array.m"]={"clang/test/SemaObjC/flexible-array.m:247:7: warning: field \'last\' can overwrite instance variable \'flexible\' with variable sized type \'char[]\' in superclass \'FlexibleArrayMemberBase\' [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:254:7: warning: field \'last\' can overwrite instance variable \'flexible\' with variable sized type \'char[]\' in superclass \'FlexibleArrayMemberBase\' [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:261:7: warning: field \'last\' can overwrite instance variable \'flexible\' with variable sized type \'char[]\' in superclass \'FlexibleArrayMemberBase\' [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:269:13: warning: field \'count\' can overwrite instance variable \'flexible\' with variable sized type \'char[]\' in superclass \'FlexibleArrayMemberBase\' [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:273:7: warning: field \'last\' can overwrite instance variable \'flexible\' with variable sized type \'char[]\' in superclass \'FlexibleArrayMemberBase\' [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:286:7: warning: field \'last\' can overwrite instance variable \'flexible\' with variable sized type \'char[]\' in superclass \'FlexibleArrayMemberBase\' [-Wobjc-flexible-array]"} | ["clang/test/SemaObjC/flexible-array.m"]={"clang/test/SemaObjC/flexible-array.m:247:7: warning: field \'last\' can overwrite instance variable \'flexible\' with variable sized type \'char[]\' in superclass \'FlexibleArrayMemberBase\' [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:254:7: warning: field \'last\' can overwrite instance variable \'flexible\' with variable sized type \'char[]\' in superclass \'FlexibleArrayMemberBase\' [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:261:7: warning: field \'last\' can overwrite instance variable \'flexible\' with variable sized type \'char[]\' in superclass \'FlexibleArrayMemberBase\' [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:269:13: warning: field \'count\' can overwrite instance variable \'flexible\' with variable sized type \'char[]\' in superclass \'FlexibleArrayMemberBase\' [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:273:7: warning: field \'last\' can overwrite instance variable \'flexible\' with variable sized type \'char[]\' in superclass \'FlexibleArrayMemberBase\' [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:286:7: warning: field \'last\' can overwrite instance variable \'flexible\' with variable sized type \'char[]\' in superclass \'FlexibleArrayMemberBase\' [-Wobjc-flexible-array]"} | ||
Line 7,257: | Line 7,257: | ||
[h]=q, | [h]=q, | ||
[i]={"d1cf276621a7",1532018775,"[Sema] Add a new warning, -Wmemset-transposed-args","[Sema] Add a new warning, -Wmemset-transposed-args"}, | [i]={"d1cf276621a7",1532018775,"[Sema] Add a new warning, -Wmemset-transposed-args","[Sema] Add a new warning, -Wmemset-transposed-args"}, | ||
[j]={{x,12393,"/// Diagnose cases like \'memset(buf, sizeof(buf), 0)\', which should have the\n/// last two arguments transposed.\nstatic void CheckMemaccessSize(Sema &S, unsigned BId, const CallExpr *Call) {\n if (isLiteralZero(SizeArg) && !isArgumentExpandedFromMacro(SM, CallLoc, SizeArg->getExprLoc())) {\n // Some platforms #define bzero to __builtin_memset. See if this is the\n // case, and if so, emit a better diagnostic.\n if (BId == Builtin::BIbzero || (CallLoc.isMacroID() && Lexer::getImmediateMacroName(CallLoc, SM, S.getLangOpts()) == \"bzero\")) {\n S.Diag(DiagLoc, diag::warn_suspicious_bzero_size);"}}, | [j]={{x,12393,"/// Diagnose cases like \'memset(buf, sizeof(buf), 0)\', which should have the\n/// last two arguments transposed.\nstatic void CheckMemaccessSize(Sema &S, unsigned BId, const CallExpr *Call) {\n // ...\n if (isLiteralZero(SizeArg) && !isArgumentExpandedFromMacro(SM, CallLoc, SizeArg->getExprLoc())) {\n // ...\n // Some platforms #define bzero to __builtin_memset. See if this is the\n // case, and if so, emit a better diagnostic.\n if (BId == Builtin::BIbzero || (CallLoc.isMacroID() && Lexer::getImmediateMacroName(CallLoc, SM, S.getLangOpts()) == \"bzero\")) {\n S.Diag(DiagLoc, diag::warn_suspicious_bzero_size);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/transpose-memset.c"]={"clang/test/Sema/transpose-memset.c:29:14: warning: \'size\' argument to bzero is \'0\' [-Wsuspicious-bzero]","clang/test/Sema/transpose-memset.c:30:19: warning: \'size\' argument to bzero is \'0\' [-Wsuspicious-bzero]","clang/test/Sema/transpose-memset.c:51:3: warning: \'size\' argument to bzero is \'0\' [-Wsuspicious-bzero]","clang/test/Sema/transpose-memset.c:62:26: warning: \'size\' argument to bzero is \'0\' [-Wsuspicious-bzero]"} | ["clang/test/Sema/transpose-memset.c"]={"clang/test/Sema/transpose-memset.c:29:14: warning: \'size\' argument to bzero is \'0\' [-Wsuspicious-bzero]","clang/test/Sema/transpose-memset.c:30:19: warning: \'size\' argument to bzero is \'0\' [-Wsuspicious-bzero]","clang/test/Sema/transpose-memset.c:51:3: warning: \'size\' argument to bzero is \'0\' [-Wsuspicious-bzero]","clang/test/Sema/transpose-memset.c:62:26: warning: \'size\' argument to bzero is \'0\' [-Wsuspicious-bzero]"} | ||
Line 7,274: | Line 7,274: | ||
[h]=q, | [h]=q, | ||
[i]={"d1cf276621a7",1532018775,"[Sema] Add a new warning, -Wmemset-transposed-args","[Sema] Add a new warning, -Wmemset-transposed-args"}, | [i]={"d1cf276621a7",1532018775,"[Sema] Add a new warning, -Wmemset-transposed-args","[Sema] Add a new warning, -Wmemset-transposed-args"}, | ||
[j]={{x,12396,"/// Diagnose cases like \'memset(buf, sizeof(buf), 0)\', which should have the\n/// last two arguments transposed.\nstatic void CheckMemaccessSize(Sema &S, unsigned BId, const CallExpr *Call) {\n if (isLiteralZero(SizeArg) && !isArgumentExpandedFromMacro(SM, CallLoc, SizeArg->getExprLoc())) {\n // Some platforms #define bzero to __builtin_memset. See if this is the\n // case, and if so, emit a better diagnostic.\n if (BId == Builtin::BIbzero || (CallLoc.isMacroID() && Lexer::getImmediateMacroName(CallLoc, SM, S.getLangOpts()) == \"bzero\")) {\n } else if (!isLiteralZero(Call->getArg(1)->IgnoreImpCasts())) {\n S.Diag(DiagLoc, diag::warn_suspicious_sizeof_memset) << 0;"},{x,12409,"/// Diagnose cases like \'memset(buf, sizeof(buf), 0)\', which should have the\n/// last two arguments transposed.\nstatic void CheckMemaccessSize(Sema &S, unsigned BId, const CallExpr *Call) {\n // If the second argument to a memset is a sizeof expression and the third\n // isn\'t, this is also likely an error. This should catch\n // \'memset(buf, sizeof(buf), 0xff)\'.\n if (BId == Builtin::BImemset && doesExprLikelyComputeSize(Call->getArg(1)) && !doesExprLikelyComputeSize(Call->getArg(2))) {\n S.Diag(DiagLoc, diag::warn_suspicious_sizeof_memset) << 1;"}}, | [j]={{x,12396,"/// Diagnose cases like \'memset(buf, sizeof(buf), 0)\', which should have the\n/// last two arguments transposed.\nstatic void CheckMemaccessSize(Sema &S, unsigned BId, const CallExpr *Call) {\n // ...\n if (isLiteralZero(SizeArg) && !isArgumentExpandedFromMacro(SM, CallLoc, SizeArg->getExprLoc())) {\n // ...\n // Some platforms #define bzero to __builtin_memset. See if this is the\n // case, and if so, emit a better diagnostic.\n if (BId == Builtin::BIbzero || (CallLoc.isMacroID() && Lexer::getImmediateMacroName(CallLoc, SM, S.getLangOpts()) == \"bzero\")) {\n // ...\n } else if (!isLiteralZero(Call->getArg(1)->IgnoreImpCasts())) {\n S.Diag(DiagLoc, diag::warn_suspicious_sizeof_memset) << 0;"},{x,12409,"/// Diagnose cases like \'memset(buf, sizeof(buf), 0)\', which should have the\n/// last two arguments transposed.\nstatic void CheckMemaccessSize(Sema &S, unsigned BId, const CallExpr *Call) {\n // ...\n // If the second argument to a memset is a sizeof expression and the third\n // isn\'t, this is also likely an error. This should catch\n // \'memset(buf, sizeof(buf), 0xff)\'.\n if (BId == Builtin::BImemset && doesExprLikelyComputeSize(Call->getArg(1)) && !doesExprLikelyComputeSize(Call->getArg(2))) {\n // ...\n S.Diag(DiagLoc, diag::warn_suspicious_sizeof_memset) << 1;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/transpose-memset.c"]={"clang/test/Sema/transpose-memset.c:12:32: warning: \'size\' argument to memset is \'0\'; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:13:17: warning: setting buffer to a \'sizeof\' expression; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:14:32: warning: \'size\' argument to memset is \'0\'; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:15:28: warning: \'size\' argument to memset is \'0\'; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:16:15: warning: setting buffer to a \'sizeof\' expression; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:17:28: warning: \'size\' argument to memset is \'0\'; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:18:15: warning: setting buffer to a \'sizeof\' expression; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:19:15: warning: setting buffer to a \'sizeof\' expression; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:20:15: warning: setting buffer to a \'sizeof\' expression; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:38:17: warning: setting buffer to a \'sizeof\' expression; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:51:3: warning: \'size\' argument to memset is \'0\'; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:61:30: warning: \'size\' argument to memset is \'0\'; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]"} | ["clang/test/Sema/transpose-memset.c"]={"clang/test/Sema/transpose-memset.c:12:32: warning: \'size\' argument to memset is \'0\'; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:13:17: warning: setting buffer to a \'sizeof\' expression; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:14:32: warning: \'size\' argument to memset is \'0\'; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:15:28: warning: \'size\' argument to memset is \'0\'; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:16:15: warning: setting buffer to a \'sizeof\' expression; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:17:28: warning: \'size\' argument to memset is \'0\'; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:18:15: warning: setting buffer to a \'sizeof\' expression; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:19:15: warning: setting buffer to a \'sizeof\' expression; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:20:15: warning: setting buffer to a \'sizeof\' expression; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:38:17: warning: setting buffer to a \'sizeof\' expression; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:51:3: warning: \'size\' argument to memset is \'0\'; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]","clang/test/Sema/transpose-memset.c:61:30: warning: \'size\' argument to memset is \'0\'; did you mean to transpose the last two arguments? [-Wmemset-transposed-args]"} | ||
Line 7,291: | Line 7,291: | ||
[h]=y, | [h]=y, | ||
[i]={Kc,1573050950,Hb,Hb}, | [i]={Kc,1573050950,Hb,Hb}, | ||
[j]={{C,8407,"static void handleSYCLKernelAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // Template parameters must be typenames.\n for (unsigned I = 0; I < 2; ++I) {\n if (isa<NonTypeTemplateParmDecl>(TParam)) {\n S.Diag(FT->getLocation(), diag::warn_sycl_kernel_invalid_template_param_type);"}}, | [j]={{C,8407,"static void handleSYCLKernelAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n // Template parameters must be typenames.\n for (unsigned I = 0; I < 2; ++I) {\n // ...\n if (isa<NonTypeTemplateParmDecl>(TParam)) {\n S.Diag(FT->getLocation(), diag::warn_sycl_kernel_invalid_template_param_type);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaSYCL/kernel-attribute.cpp"]={"clang/test/SemaSYCL/kernel-attribute.cpp:24:35: warning: template parameter of a function template with the \'sycl_kernel\' attribute cannot be a non-type template parameter [-Wignored-attributes]","clang/test/SemaSYCL/kernel-attribute.cpp:26:29: warning: template parameter of a function template with the \'sycl_kernel\' attribute cannot be a non-type template parameter [-Wignored-attributes]"} | ["clang/test/SemaSYCL/kernel-attribute.cpp"]={"clang/test/SemaSYCL/kernel-attribute.cpp:24:35: warning: template parameter of a function template with the \'sycl_kernel\' attribute cannot be a non-type template parameter [-Wignored-attributes]","clang/test/SemaSYCL/kernel-attribute.cpp:26:29: warning: template parameter of a function template with the \'sycl_kernel\' attribute cannot be a non-type template parameter [-Wignored-attributes]"} | ||
Line 7,308: | Line 7,308: | ||
[h]=y, | [h]=y, | ||
[i]={Kc,1573050950,Hb,Hb}, | [i]={Kc,1573050950,Hb,Hb}, | ||
[j]={{C,8414,"static void handleSYCLKernelAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // Function must have at least one argument.\n if (getFunctionOrMethodNumParams(D) != 1) {\n S.Diag(FT->getLocation(), diag::warn_sycl_kernel_num_of_function_params);"}}, | [j]={{C,8414,"static void handleSYCLKernelAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n // Function must have at least one argument.\n if (getFunctionOrMethodNumParams(D) != 1) {\n S.Diag(FT->getLocation(), diag::warn_sycl_kernel_num_of_function_params);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaSYCL/kernel-attribute.cpp"]={"clang/test/SemaSYCL/kernel-attribute.cpp:36:35: warning: function template with \'sycl_kernel\' attribute must have a single parameter [-Wignored-attributes]","clang/test/SemaSYCL/kernel-attribute.cpp:38:29: warning: function template with \'sycl_kernel\' attribute must have a single parameter [-Wignored-attributes]"} | ["clang/test/SemaSYCL/kernel-attribute.cpp"]={"clang/test/SemaSYCL/kernel-attribute.cpp:36:35: warning: function template with \'sycl_kernel\' attribute must have a single parameter [-Wignored-attributes]","clang/test/SemaSYCL/kernel-attribute.cpp:38:29: warning: function template with \'sycl_kernel\' attribute must have a single parameter [-Wignored-attributes]"} | ||
Line 7,325: | Line 7,325: | ||
[h]=y, | [h]=y, | ||
[i]={Kc,1573050950,Hb,Hb}, | [i]={Kc,1573050950,Hb,Hb}, | ||
[j]={{C,8398,"static void handleSYCLKernelAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (TL->size() < 2) {\n S.Diag(FT->getLocation(), diag::warn_sycl_kernel_num_of_template_params);"}}, | [j]={{C,8398,"static void handleSYCLKernelAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n if (TL->size() < 2) {\n S.Diag(FT->getLocation(), diag::warn_sycl_kernel_num_of_template_params);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaSYCL/kernel-attribute.cpp"]={"clang/test/SemaSYCL/kernel-attribute.cpp:18:35: warning: \'sycl_kernel\' attribute only applies to a function template with at least two template parameters [-Wignored-attributes]","clang/test/SemaSYCL/kernel-attribute.cpp:20:29: warning: \'sycl_kernel\' attribute only applies to a function template with at least two template parameters [-Wignored-attributes]"} | ["clang/test/SemaSYCL/kernel-attribute.cpp"]={"clang/test/SemaSYCL/kernel-attribute.cpp:18:35: warning: \'sycl_kernel\' attribute only applies to a function template with at least two template parameters [-Wignored-attributes]","clang/test/SemaSYCL/kernel-attribute.cpp:20:29: warning: \'sycl_kernel\' attribute only applies to a function template with at least two template parameters [-Wignored-attributes]"} | ||
Line 7,342: | Line 7,342: | ||
[h]=y, | [h]=y, | ||
[i]={Kc,1573050950,Hb,Hb}, | [i]={Kc,1573050950,Hb,Hb}, | ||
[j]={{C,8421,"static void handleSYCLKernelAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (!RetTy->isVoidType()) {\n S.Diag(FT->getLocation(), diag::warn_sycl_kernel_return_type);"}}, | [j]={{C,8421,"static void handleSYCLKernelAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n if (!RetTy->isVoidType()) {\n S.Diag(FT->getLocation(), diag::warn_sycl_kernel_return_type);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaSYCL/kernel-attribute.cpp"]={"clang/test/SemaSYCL/kernel-attribute.cpp:30:34: warning: function template with \'sycl_kernel\' attribute must have a \'void\' return type [-Wignored-attributes]","clang/test/SemaSYCL/kernel-attribute.cpp:32:28: warning: function template with \'sycl_kernel\' attribute must have a \'void\' return type [-Wignored-attributes]"} | ["clang/test/SemaSYCL/kernel-attribute.cpp"]={"clang/test/SemaSYCL/kernel-attribute.cpp:30:34: warning: function template with \'sycl_kernel\' attribute must have a \'void\' return type [-Wignored-attributes]","clang/test/SemaSYCL/kernel-attribute.cpp:32:28: warning: function template with \'sycl_kernel\' attribute must have a \'void\' return type [-Wignored-attributes]"} | ||
Line 7,359: | Line 7,359: | ||
[h]=q, | [h]=q, | ||
[i]={"d2208b59cfaa",1412283230,"Add __sync_fetch_and_nand (again)","Add __sync_fetch_and_nand (again)"}, | [i]={"d2208b59cfaa",1412283230,"Add __sync_fetch_and_nand (again)","Add __sync_fetch_and_nand (again)"}, | ||
[j]={{x,7821,"/// We have a call to a function like __sync_fetch_and_add, which is an\n/// overloaded function based on the pointer type of its first argument.\n/// The main BuildCallExpr routines have already promoted the types of\n/// arguments because all of these calls are prototyped as void(...).\n///\n/// This function goes through and does final semantic checking for these\n/// builtins, as well as generating any warnings.\nExprResult Sema::SemaBuiltinAtomicOverloaded(ExprResult TheCallResult) {\n if (WarnAboutSemanticsChange) {\n Diag(TheCall->getEndLoc(), diag::warn_sync_fetch_and_nand_semantics_change) << Callee->getSourceRange();"}}, | [j]={{x,7821,"/// We have a call to a function like __sync_fetch_and_add, which is an\n/// overloaded function based on the pointer type of its first argument.\n/// The main BuildCallExpr routines have already promoted the types of\n/// arguments because all of these calls are prototyped as void(...).\n///\n/// This function goes through and does final semantic checking for these\n/// builtins, as well as generating any warnings.\nExprResult Sema::SemaBuiltinAtomicOverloaded(ExprResult TheCallResult) {\n // ...\n if (WarnAboutSemanticsChange) {\n Diag(TheCall->getEndLoc(), diag::warn_sync_fetch_and_nand_semantics_change) << Callee->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGen/atomic.c"]={"clang/test/CodeGen/atomic.c:60:40: warning: the semantics of this intrinsic changed with GCC version 4.4 - the newer semantics are provided here [-Wsync-fetch-and-nand-semantics-changed]","clang/test/CodeGen/atomic.c:78:39: warning: the semantics of this intrinsic changed with GCC version 4.4 - the newer semantics are provided here [-Wsync-fetch-and-nand-semantics-changed]"} | ["clang/test/CodeGen/atomic.c"]={"clang/test/CodeGen/atomic.c:60:40: warning: the semantics of this intrinsic changed with GCC version 4.4 - the newer semantics are provided here [-Wsync-fetch-and-nand-semantics-changed]","clang/test/CodeGen/atomic.c:78:39: warning: the semantics of this intrinsic changed with GCC version 4.4 - the newer semantics are provided here [-Wsync-fetch-and-nand-semantics-changed]"} | ||
Line 7,376: | Line 7,376: | ||
[h]=y, | [h]=y, | ||
[i]={"ba6e747f9b05",1670524276,"[clang] Set ShowInSystemHeader for module-build and module-import remarks","[clang] Set ShowInSystemHeader for module-build and module-import remarks"}, | [i]={"ba6e747f9b05",1670524276,"[clang] Set ShowInSystemHeader for module-build and module-import remarks","[clang] Set ShowInSystemHeader for module-build and module-import remarks"}, | ||
[j]={{"clang/lib/CodeGen/CGBuiltin.cpp",201,"static llvm::Value *CheckAtomicAlignment(CodeGenFunction &CGF, const CallExpr *E) {\n if (Align % Bytes != 0) {\n Diags.Report(E->getBeginLoc(), diag::warn_sync_op_misaligned);"}}, | [j]={{"clang/lib/CodeGen/CGBuiltin.cpp",201,"static llvm::Value *CheckAtomicAlignment(CodeGenFunction &CGF, const CallExpr *E) {\n // ...\n if (Align % Bytes != 0) {\n // ...\n Diags.Report(E->getBeginLoc(), diag::warn_sync_op_misaligned);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGen/SystemZ/sync-builtins-i128-8Al.c"]={"clang/test/CodeGen/SystemZ/sync-builtins-i128-8Al.c:11:10: warning: __sync builtin operation MUST have natural alignment (consider using __atomic). [-Wsync-alignment]","clang/test/CodeGen/SystemZ/sync-builtins-i128-8Al.c:16:10: warning: __sync builtin operation MUST have natural alignment (consider using __atomic). [-Wsync-alignment]","clang/test/CodeGen/SystemZ/sync-builtins-i128-8Al.c:21:10: warning: __sync builtin operation MUST have natural alignment (consider using __atomic). [-Wsync-alignment]","clang/test/CodeGen/SystemZ/sync-builtins-i128-8Al.c:26:3: warning: __sync builtin operation MUST have natural alignment (consider using __atomic). [-Wsync-alignment]"} | ["clang/test/CodeGen/SystemZ/sync-builtins-i128-8Al.c"]={"clang/test/CodeGen/SystemZ/sync-builtins-i128-8Al.c:11:10: warning: __sync builtin operation MUST have natural alignment (consider using __atomic). [-Wsync-alignment]","clang/test/CodeGen/SystemZ/sync-builtins-i128-8Al.c:16:10: warning: __sync builtin operation MUST have natural alignment (consider using __atomic). [-Wsync-alignment]","clang/test/CodeGen/SystemZ/sync-builtins-i128-8Al.c:21:10: warning: __sync builtin operation MUST have natural alignment (consider using __atomic). [-Wsync-alignment]","clang/test/CodeGen/SystemZ/sync-builtins-i128-8Al.c:26:3: warning: __sync builtin operation MUST have natural alignment (consider using __atomic). [-Wsync-alignment]"} | ||
Line 7,393: | Line 7,393: | ||
[h]=q, | [h]=q, | ||
[i]={"ac6617b288ed",1465832500,"Warn when taking address of a packed member","Warn when taking address of a packed member"}, | [i]={"ac6617b288ed",1465832500,"Warn when taking address of a packed member","Warn when taking address of a packed member"}, | ||
[j]={{x,18481,"void Sema::DiagnoseMisalignedMembers() {\n for (MisalignedMember &m : MisalignedMembers) {\n Diag(m.E->getBeginLoc(), diag::warn_taking_address_of_packed_member) << m.MD << ND << m.E->getSourceRange();"}}, | [j]={{x,18481,"void Sema::DiagnoseMisalignedMembers() {\n for (MisalignedMember &m : MisalignedMembers) {\n // ...\n Diag(m.E->getBeginLoc(), diag::warn_taking_address_of_packed_member) << m.MD << ND << m.E->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/address-packed.c"]={"clang/test/Sema/address-packed.c:40:9: warning: taking address of packed member \'x\' of class or structure \'Arguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:52:9: warning: taking address of packed member \'x\' of class or structure \'UnionArguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:61:9: warning: taking address of packed member \'x\' of class or structure \'Arguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:71:9: warning: taking address of packed member \'x\' of class or structure \'Arguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:81:10: warning: taking address of packed member \'x\' of class or structure \'Arguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:96:11: warning: taking address of packed member \'i\' of class or structure \'S1\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:108:11: warning: taking address of packed member \'inner\' of class or structure \'S2\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:117:11: warning: taking address of packed member \'inner\' of class or structure \'S2_a\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:128:11: warning: taking address of packed member \'inner\' of class or structure \'S3\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:139:11: warning: taking address of packed member \'i\' of class or structure \'S4::struct (unnamed at clang/test/Sema/address-packed.c:133:3)\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:151:11: warning: taking address of packed member \'i\' of class or structure \'S5::struct (unnamed at clang/test/Sema/address-packed.c:144:3)\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:184:13: warning: taking address of packed member \'x\' of class or structure \'TypedefStructArguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:188:13: warning: taking address of packed member \'x\' of class or structure \'TypedefStructArguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:192:13: warning: taking address of packed member \'x\' of class or structure \'TypedefUnionArguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:203:11: warning: taking address of packed member \'x\' of class or structure \'S6::union (anonymous at clang/test/Sema/address-packed.c:196:3)\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:218:9: warning: taking address of packed member \'d\' of class or structure \'S6a\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:282:10: warning: taking address of packed member \'x\' of class or structure \'S9\' may result in an unaligned pointer value [-Waddress-of-packed-member]"} | ["clang/test/Sema/address-packed.c"]={"clang/test/Sema/address-packed.c:40:9: warning: taking address of packed member \'x\' of class or structure \'Arguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:52:9: warning: taking address of packed member \'x\' of class or structure \'UnionArguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:61:9: warning: taking address of packed member \'x\' of class or structure \'Arguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:71:9: warning: taking address of packed member \'x\' of class or structure \'Arguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:81:10: warning: taking address of packed member \'x\' of class or structure \'Arguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:96:11: warning: taking address of packed member \'i\' of class or structure \'S1\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:108:11: warning: taking address of packed member \'inner\' of class or structure \'S2\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:117:11: warning: taking address of packed member \'inner\' of class or structure \'S2_a\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:128:11: warning: taking address of packed member \'inner\' of class or structure \'S3\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:139:11: warning: taking address of packed member \'i\' of class or structure \'S4::struct (unnamed at clang/test/Sema/address-packed.c:133:3)\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:151:11: warning: taking address of packed member \'i\' of class or structure \'S5::struct (unnamed at clang/test/Sema/address-packed.c:144:3)\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:184:13: warning: taking address of packed member \'x\' of class or structure \'TypedefStructArguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:188:13: warning: taking address of packed member \'x\' of class or structure \'TypedefStructArguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:192:13: warning: taking address of packed member \'x\' of class or structure \'TypedefUnionArguable\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:203:11: warning: taking address of packed member \'x\' of class or structure \'S6::union (anonymous at clang/test/Sema/address-packed.c:196:3)\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:218:9: warning: taking address of packed member \'d\' of class or structure \'S6a\' may result in an unaligned pointer value [-Waddress-of-packed-member]","clang/test/Sema/address-packed.c:282:10: warning: taking address of packed member \'x\' of class or structure \'S9\' may result in an unaligned pointer value [-Waddress-of-packed-member]"} | ||
Line 7,410: | Line 7,410: | ||
[h]=y, | [h]=y, | ||
[i]={"f9c3310d32c6",1616787805,dc,dc}, | [i]={"f9c3310d32c6",1616787805,dc,dc}, | ||
[j]={{C,3549,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n while (!Parts.second.empty()) {\n if (TInfo.getTriple().isAArch64()) {\n // AArch64 target clones specific\n if (Cur == \"default\") {\n if (llvm::is_contained(StringsBuffer, Cur) || DefaultIsDupe)\n Diag(CurLoc, diag::warn_target_clone_duplicate_options);"},{C,3576,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n while (!Parts.second.empty()) {\n if (TInfo.getTriple().isAArch64()) {\n // AArch64 target clones specific\n if (Cur == \"default\") {\n } else {\n if (llvm::is_contained(StringsBuffer, Res) || DefaultIsDupe)\n Diag(CurLoc, diag::warn_target_clone_duplicate_options);"},{C,3601,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n while (!Parts.second.empty()) {\n if (TInfo.getTriple().isAArch64()) {\n } else {\n if (llvm::is_contained(StringsBuffer, Cur) || DefaultIsDupe)\n Diag(CurLoc, diag::warn_target_clone_duplicate_options);"}}, | [j]={{C,3549,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n // ...\n while (!Parts.second.empty()) {\n // ...\n if (TInfo.getTriple().isAArch64()) {\n // AArch64 target clones specific\n if (Cur == \"default\") {\n // ...\n if (llvm::is_contained(StringsBuffer, Cur) || DefaultIsDupe)\n Diag(CurLoc, diag::warn_target_clone_duplicate_options);"},{C,3576,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n // ...\n while (!Parts.second.empty()) {\n // ...\n if (TInfo.getTriple().isAArch64()) {\n // AArch64 target clones specific\n if (Cur == \"default\") {\n // ...\n } else {\n // ...\n if (llvm::is_contained(StringsBuffer, Res) || DefaultIsDupe)\n Diag(CurLoc, diag::warn_target_clone_duplicate_options);"},{C,3601,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n // ...\n while (!Parts.second.empty()) {\n // ...\n if (TInfo.getTriple().isAArch64()) {\n // ...\n } else {\n // ...\n if (llvm::is_contained(StringsBuffer, Cur) || DefaultIsDupe)\n Diag(CurLoc, diag::warn_target_clone_duplicate_options);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-target-clones-aarch64.c"]={"clang/test/Sema/attr-target-clones-aarch64.c:41:50: warning: version list contains duplicate entries [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:43:58: warning: version list contains duplicate entries [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:45:55: warning: version list contains duplicate entries [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:48:41: warning: version list contains duplicate entries [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:48:62: warning: version list contains duplicate entries [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:51:50: warning: version list contains duplicate entries [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:72:52: warning: version list contains duplicate entries [-Wfunction-multiversion]"} | ["clang/test/Sema/attr-target-clones-aarch64.c"]={"clang/test/Sema/attr-target-clones-aarch64.c:41:50: warning: version list contains duplicate entries [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:43:58: warning: version list contains duplicate entries [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:45:55: warning: version list contains duplicate entries [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:48:41: warning: version list contains duplicate entries [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:48:62: warning: version list contains duplicate entries [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:51:50: warning: version list contains duplicate entries [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:72:52: warning: version list contains duplicate entries [-Wfunction-multiversion]"} | ||
Line 7,427: | Line 7,427: | ||
[h]=y, | [h]=y, | ||
[i]={"f9c3310d32c6",1616787805,dc,dc}, | [i]={"f9c3310d32c6",1616787805,dc,dc}, | ||
[j]={{C,3645,"static void handleTargetClonesAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (HasCommas && AL.getNumArgs() > 1)\n S.Diag(AL.getLoc(), diag::warn_target_clone_mixed_values);"}}, | [j]={{C,3645,"static void handleTargetClonesAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n if (HasCommas && AL.getNumArgs() > 1)\n S.Diag(AL.getLoc(), diag::warn_target_clone_mixed_values);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-target-clones.c"]={"clang/test/Sema/attr-target-clones.c:49:20: warning: mixing \'target_clones\' specifier mechanisms is permitted for GCC compatibility; use a comma separated sequence of string literals, or a string literal containing a comma-separated list of versions [-Wtarget-clones-mixed-specifiers]"} | ["clang/test/Sema/attr-target-clones.c"]={"clang/test/Sema/attr-target-clones.c:49:20: warning: mixing \'target_clones\' specifier mechanisms is permitted for GCC compatibility; use a comma separated sequence of string literals, or a string literal containing a comma-separated list of versions [-Wtarget-clones-mixed-specifiers]"} | ||
Line 7,444: | Line 7,444: | ||
[h]=y, | [h]=y, | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{C,3580,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n while (!Parts.second.empty()) {\n if (TInfo.getTriple().isAArch64()) {\n // AArch64 target clones specific\n if (Cur == \"default\") {\n } else {\n if (llvm::is_contained(StringsBuffer, Res) || DefaultIsDupe)\n else if (!HasCodeGenImpact)\n Diag(CurLoc, diag::warn_target_clone_no_impact_options);"}}, | [j]={{C,3580,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n // ...\n while (!Parts.second.empty()) {\n // ...\n if (TInfo.getTriple().isAArch64()) {\n // AArch64 target clones specific\n if (Cur == \"default\") {\n // ...\n } else {\n // ...\n if (llvm::is_contained(StringsBuffer, Res) || DefaultIsDupe)\n // ...\n else if (!HasCodeGenImpact)\n // ...\n Diag(CurLoc, diag::warn_target_clone_no_impact_options);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-target-clones-aarch64.c"]={"clang/test/Sema/attr-target-clones-aarch64.c:8:36: warning: version list contains entries that don\'t impact code generation [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:27:35: warning: version list contains entries that don\'t impact code generation [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:59:36: warning: version list contains entries that don\'t impact code generation [-Wfunction-multiversion]"} | ["clang/test/Sema/attr-target-clones-aarch64.c"]={"clang/test/Sema/attr-target-clones-aarch64.c:8:36: warning: version list contains entries that don\'t impact code generation [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:27:35: warning: version list contains entries that don\'t impact code generation [-Wfunction-multiversion]","clang/test/Sema/attr-target-clones-aarch64.c:59:36: warning: version list contains entries that don\'t impact code generation [-Wfunction-multiversion]"} | ||
Line 7,461: | Line 7,461: | ||
[h]=y, | [h]=y, | ||
[i]={"b0fff3db6ada",1664803233,"[ARM64EC][clang-cl] Add /arm64EC flag","[ARM64EC][clang-cl] Add /arm64EC flag"}, | [i]={"b0fff3db6ada",1664803233,"[ARM64EC][clang-cl] Add /arm64EC flag","[ARM64EC][clang-cl] Add /arm64EC flag"}, | ||
[j]={{"clang/lib/Driver/Driver.cpp",1447,"Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {\n // Report warning when arm64EC option is overridden by specified target\n if ((TC.getTriple().getArch() != llvm::Triple::aarch64 || TC.getTriple().getSubArch() != llvm::Triple::AArch64SubArch_arm64ec) && UArgs->hasArg(options::OPT__SLASH_arm64EC)) {\n getDiags().Report(clang::diag::warn_target_override_arm64ec) << TC.getTriple().str();"}} | [j]={{"clang/lib/Driver/Driver.cpp",1447,"Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {\n // ...\n // Report warning when arm64EC option is overridden by specified target\n if ((TC.getTriple().getArch() != llvm::Triple::aarch64 || TC.getTriple().getSubArch() != llvm::Triple::AArch64SubArch_arm64ec) && UArgs->hasArg(options::OPT__SLASH_arm64EC)) {\n getDiags().Report(clang::diag::warn_target_override_arm64ec) << TC.getTriple().str();"}} | ||
}, | }, | ||
["warn_target_unrecognized_env"]={ | ["warn_target_unrecognized_env"]={ | ||
Line 7,475: | Line 7,475: | ||
[h]=y, | [h]=y, | ||
[i]={"041ffc155fd7",1687355349,"[Clang][Driver] Warn on invalid Arm or AArch64 baremetal target triple","[Clang][Driver] Warn on invalid Arm or AArch64 baremetal target triple"}, | [i]={"041ffc155fd7",1687355349,"[Clang][Driver] Warn on invalid Arm or AArch64 baremetal target triple","[Clang][Driver] Warn on invalid Arm or AArch64 baremetal target triple"}, | ||
[j]={{"clang/lib/Driver/Driver.cpp",1462,"Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {\n // A common user mistake is specifying a target of aarch64-none-eabi or\n // arm-none-elf whereas the correct names are aarch64-none-elf &\n // arm-none-eabi. Detect these cases and issue a warning.\n if (TC.getTriple().getOS() == llvm::Triple::UnknownOS && TC.getTriple().getVendor() == llvm::Triple::UnknownVendor) {\n case llvm::Triple::thumbeb:\n if (TC.getTriple().getEnvironmentName() == \"elf\") {\n Diag(diag::warn_target_unrecognized_env) << TargetTriple << (TC.getTriple().getArchName().str() + \"-none-eabi\");"},{"clang/lib/Driver/Driver.cpp",1471,"Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {\n // A common user mistake is specifying a target of aarch64-none-eabi or\n // arm-none-elf whereas the correct names are aarch64-none-elf &\n // arm-none-eabi. Detect these cases and issue a warning.\n if (TC.getTriple().getOS() == llvm::Triple::UnknownOS && TC.getTriple().getVendor() == llvm::Triple::UnknownVendor) {\n case llvm::Triple::aarch64_32:\n if (TC.getTriple().getEnvironmentName().startswith(\"eabi\")) {\n Diag(diag::warn_target_unrecognized_env) << TargetTriple << (TC.getTriple().getArchName().str() + \"-none-elf\");"}} | [j]={{"clang/lib/Driver/Driver.cpp",1462,"Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {\n // ...\n // A common user mistake is specifying a target of aarch64-none-eabi or\n // arm-none-elf whereas the correct names are aarch64-none-elf &\n // arm-none-eabi. Detect these cases and issue a warning.\n if (TC.getTriple().getOS() == llvm::Triple::UnknownOS && TC.getTriple().getVendor() == llvm::Triple::UnknownVendor) {\n // ...\n case llvm::Triple::arm:\n case llvm::Triple::armeb:\n case llvm::Triple::thumb:\n case llvm::Triple::thumbeb:\n if (TC.getTriple().getEnvironmentName() == \"elf\") {\n Diag(diag::warn_target_unrecognized_env) << TargetTriple << (TC.getTriple().getArchName().str() + \"-none-eabi\");"},{"clang/lib/Driver/Driver.cpp",1471,"Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {\n // ...\n // A common user mistake is specifying a target of aarch64-none-eabi or\n // arm-none-elf whereas the correct names are aarch64-none-elf &\n // arm-none-eabi. Detect these cases and issue a warning.\n if (TC.getTriple().getOS() == llvm::Triple::UnknownOS && TC.getTriple().getVendor() == llvm::Triple::UnknownVendor) {\n // ...\n case llvm::Triple::aarch64:\n case llvm::Triple::aarch64_be:\n case llvm::Triple::aarch64_32:\n if (TC.getTriple().getEnvironmentName().startswith(\"eabi\")) {\n Diag(diag::warn_target_unrecognized_env) << TargetTriple << (TC.getTriple().getArchName().str() + \"-none-elf\");"}} | ||
}, | }, | ||
["warn_target_unsupported_abs2008"]={ | ["warn_target_unsupported_abs2008"]={ | ||
Line 7,489: | Line 7,489: | ||
[h]=y, | [h]=y, | ||
[i]={"5076511ed6bd",1503590790,"[mips] Introducing option -mabs=[legacy/2008]","[mips] Introducing option -mabs=[legacy/2008]"}, | [i]={"5076511ed6bd",1503590790,"[mips] Introducing option -mabs=[legacy/2008]","[mips] Introducing option -mabs=[legacy/2008]"}, | ||
[j]={{"clang/lib/Driver/ToolChains/Arch/Mips.cpp",314,"void mips::getMIPSTargetFeatures(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector<StringRef> &Features) {\n if (Arg *A = Args.getLastArg(options::OPT_mabs_EQ)) {\n if (Val == \"2008\") {\n if (mips::getIEEE754Standard(CPUName) & mips::Std2008) {\n } else {\n D.Diag(diag::warn_target_unsupported_abs2008) << CPUName;"}}, | [j]={{"clang/lib/Driver/ToolChains/Arch/Mips.cpp",314,"void mips::getMIPSTargetFeatures(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector<StringRef> &Features) {\n // ...\n if (Arg *A = Args.getLastArg(options::OPT_mabs_EQ)) {\n // ...\n if (Val == \"2008\") {\n if (mips::getIEEE754Standard(CPUName) & mips::Std2008) {\n // ...\n } else {\n // ...\n D.Diag(diag::warn_target_unsupported_abs2008) << CPUName;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Driver/mips-mabs-warning.c"]={"clang: warning: ignoring \'-mabs=2008\' option because the \'mips32\' architecture does not support it [-Wunsupported-abs]"} | ["clang/test/Driver/mips-mabs-warning.c"]={"clang: warning: ignoring \'-mabs=2008\' option because the \'mips32\' architecture does not support it [-Wunsupported-abs]"} | ||
Line 7,506: | Line 7,506: | ||
[h]=y, | [h]=y, | ||
[i]={"5076511ed6bd",1503590790,"[mips] Introducing option -mabs=[legacy/2008]","[mips] Introducing option -mabs=[legacy/2008]"}, | [i]={"5076511ed6bd",1503590790,"[mips] Introducing option -mabs=[legacy/2008]","[mips] Introducing option -mabs=[legacy/2008]"}, | ||
[j]={{"clang/lib/Driver/ToolChains/Arch/Mips.cpp",321,"void mips::getMIPSTargetFeatures(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector<StringRef> &Features) {\n if (Arg *A = Args.getLastArg(options::OPT_mabs_EQ)) {\n if (Val == \"2008\") {\n } else if (Val == \"legacy\") {\n if (mips::getIEEE754Standard(CPUName) & mips::Legacy) {\n } else {\n D.Diag(diag::warn_target_unsupported_abslegacy) << CPUName;"}}, | [j]={{"clang/lib/Driver/ToolChains/Arch/Mips.cpp",321,"void mips::getMIPSTargetFeatures(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector<StringRef> &Features) {\n // ...\n if (Arg *A = Args.getLastArg(options::OPT_mabs_EQ)) {\n // ...\n if (Val == \"2008\") {\n // ...\n } else if (Val == \"legacy\") {\n if (mips::getIEEE754Standard(CPUName) & mips::Legacy) {\n // ...\n } else {\n // ...\n D.Diag(diag::warn_target_unsupported_abslegacy) << CPUName;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Driver/mips-mabs-warning.c"]={"clang: warning: ignoring \'-mabs=legacy\' option because the \'mips32r6\' architecture does not support it [-Wunsupported-abs]"} | ["clang/test/Driver/mips-mabs-warning.c"]={"clang: warning: ignoring \'-mabs=legacy\' option because the \'mips32r6\' architecture does not support it [-Wunsupported-abs]"} | ||
Line 7,523: | Line 7,523: | ||
[h]=Ub, | [h]=Ub, | ||
[i]={"4bafe65c2b2f",1634659977,"Add support for floating-point option `ffp-eval-method` and for","Add support for floating-point option `ffp-eval-method` and for"}, | [i]={"4bafe65c2b2f",1634659977,"Add support for floating-point option `ffp-eval-method` and for","Add support for floating-point option `ffp-eval-method` and for"}, | ||
[j]={{"clang/lib/CodeGen/Targets/ARM.cpp",153,"class ARMTargetCodeGenInfo : public TargetCodeGenInfo {\n void setTargetAttributes(const Decl *D, llvm::GlobalValue *GV, CodeGen::CodeGenModule &CGM) const override {\n if (const auto *TA = FD->getAttr<TargetAttr>()) {\n if (!Attr.BranchProtection.empty()) {\n if (!CGM.getTarget().validateBranchProtection(Attr.BranchProtection, Arch, BPI, DiagMsg)) {\n CGM.getDiags().Report(D->getLocation(), diag::warn_target_unsupported_branch_protection_attribute) << Arch;"},{"clang/lib/CodeGen/Targets/ARM.cpp",174,"class ARMTargetCodeGenInfo : public TargetCodeGenInfo {\n void setTargetAttributes(const Decl *D, llvm::GlobalValue *GV, CodeGen::CodeGenModule &CGM) const override {\n if (const auto *TA = FD->getAttr<TargetAttr>()) {\n if (!Attr.BranchProtection.empty()) {\n } else if (CGM.getLangOpts().BranchTargetEnforcement || CGM.getLangOpts().hasSignReturnAddress()) {\n // If the Branch Protection attribute is missing, validate the target\n // Architecture attribute against Branch Protection command line\n // settings.\n if (!CGM.getTarget().isBranchProtectionSupportedArch(Attr.CPU))\n CGM.getDiags().Report(D->getLocation(), diag::warn_target_unsupported_branch_protection_attribute) << Attr.CPU;"}}, | [j]={{"clang/lib/CodeGen/Targets/ARM.cpp",153,"class ARMTargetCodeGenInfo : public TargetCodeGenInfo {\n // ...\n void setTargetAttributes(const Decl *D, llvm::GlobalValue *GV, CodeGen::CodeGenModule &CGM) const override {\n // ...\n if (const auto *TA = FD->getAttr<TargetAttr>()) {\n // ...\n if (!Attr.BranchProtection.empty()) {\n // ...\n if (!CGM.getTarget().validateBranchProtection(Attr.BranchProtection, Arch, BPI, DiagMsg)) {\n CGM.getDiags().Report(D->getLocation(), diag::warn_target_unsupported_branch_protection_attribute) << Arch;"},{"clang/lib/CodeGen/Targets/ARM.cpp",174,"class ARMTargetCodeGenInfo : public TargetCodeGenInfo {\n // ...\n void setTargetAttributes(const Decl *D, llvm::GlobalValue *GV, CodeGen::CodeGenModule &CGM) const override {\n // ...\n if (const auto *TA = FD->getAttr<TargetAttr>()) {\n // ...\n if (!Attr.BranchProtection.empty()) {\n // ...\n } else if (CGM.getLangOpts().BranchTargetEnforcement || CGM.getLangOpts().hasSignReturnAddress()) {\n // If the Branch Protection attribute is missing, validate the target\n // Architecture attribute against Branch Protection command line\n // settings.\n if (!CGM.getTarget().isBranchProtectionSupportedArch(Attr.CPU))\n CGM.getDiags().Report(D->getLocation(), diag::warn_target_unsupported_branch_protection_attribute) << Attr.CPU;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Frontend/arm-ignore-branch-protection-option.c"]={"clang/test/Frontend/arm-ignore-branch-protection-option.c:6:48: warning: ignoring the \'branch-protection\' attribute because the \'cortex-m0\' architecture does not support it [-Wbranch-protection]"} | ["clang/test/Frontend/arm-ignore-branch-protection-option.c"]={"clang/test/Frontend/arm-ignore-branch-protection-option.c:6:48: warning: ignoring the \'branch-protection\' attribute because the \'cortex-m0\' architecture does not support it [-Wbranch-protection]"} | ||
Line 7,540: | Line 7,540: | ||
[h]=y, | [h]=y, | ||
[i]={"d0e83bad13b1",1464362011,"[mips] Compact branch policy setting.","[mips] Compact branch policy setting."}, | [i]={"d0e83bad13b1",1464362011,"[mips] Compact branch policy setting.","[mips] Compact branch policy setting."}, | ||
[j]={{"clang/lib/Driver/ToolChains/Clang.cpp",2007,"void Clang::AddMIPSTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const {\n if (Arg *A = Args.getLastArg(options::OPT_mcompact_branches_EQ)) {\n if (mips::hasCompactBranches(CPUName)) {\n } else\n D.Diag(diag::warn_target_unsupported_compact_branches) << CPUName;"}} | [j]={{"clang/lib/Driver/ToolChains/Clang.cpp",2007,"void Clang::AddMIPSTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const {\n // ...\n if (Arg *A = Args.getLastArg(options::OPT_mcompact_branches_EQ)) {\n // ...\n if (mips::hasCompactBranches(CPUName)) {\n // ...\n } else\n D.Diag(diag::warn_target_unsupported_compact_branches) << CPUName;"}} | ||
}, | }, | ||
["warn_target_unsupported_extension"]={ | ["warn_target_unsupported_extension"]={ | ||
Line 7,554: | Line 7,554: | ||
[h]=y, | [h]=y, | ||
[i]={"4593e4131aff",1534346725,"AMDGPU: Teach toolchain to link rocm device libs","AMDGPU: Teach toolchain to link rocm device libs"}, | [i]={"4593e4131aff",1534346725,"AMDGPU: Teach toolchain to link rocm device libs","AMDGPU: Teach toolchain to link rocm device libs"}, | ||
[j]={{"clang/lib/Driver/ToolChains/Arch/ARM.cpp",772,"llvm::ARM::FPUKind arm::getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector<StringRef> &Features, bool ForAS, bool ForMultilib) {\n if (HasSHA2 || HasAES) {\n if (!((llvm::ARM::parseArchVersion(ArchSuffix) >= 8) && (ArchProfile == llvm::ARM::ProfileKind::A || ArchProfile == llvm::ARM::ProfileKind::R))) {\n if (HasSHA2)\n D.Diag(clang::diag::warn_target_unsupported_extension) << \"sha2\" << llvm::ARM::getArchName(llvm::ARM::parseArch(ArchSuffix));"},{"clang/lib/Driver/ToolChains/Arch/ARM.cpp",776,"llvm::ARM::FPUKind arm::getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector<StringRef> &Features, bool ForAS, bool ForMultilib) {\n if (HasSHA2 || HasAES) {\n if (!((llvm::ARM::parseArchVersion(ArchSuffix) >= 8) && (ArchProfile == llvm::ARM::ProfileKind::A || ArchProfile == llvm::ARM::ProfileKind::R))) {\n if (HasAES)\n D.Diag(clang::diag::warn_target_unsupported_extension) << \"aes\" << llvm::ARM::getArchName(llvm::ARM::parseArch(ArchSuffix));"}}, | [j]={{"clang/lib/Driver/ToolChains/Arch/ARM.cpp",772,"llvm::ARM::FPUKind arm::getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector<StringRef> &Features, bool ForAS, bool ForMultilib) {\n // ...\n if (HasSHA2 || HasAES) {\n // ...\n if (!((llvm::ARM::parseArchVersion(ArchSuffix) >= 8) && (ArchProfile == llvm::ARM::ProfileKind::A || ArchProfile == llvm::ARM::ProfileKind::R))) {\n if (HasSHA2)\n D.Diag(clang::diag::warn_target_unsupported_extension) << \"sha2\" << llvm::ARM::getArchName(llvm::ARM::parseArch(ArchSuffix));"},{"clang/lib/Driver/ToolChains/Arch/ARM.cpp",776,"llvm::ARM::FPUKind arm::getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector<StringRef> &Features, bool ForAS, bool ForMultilib) {\n // ...\n if (HasSHA2 || HasAES) {\n // ...\n if (!((llvm::ARM::parseArchVersion(ArchSuffix) >= 8) && (ArchProfile == llvm::ARM::ProfileKind::A || ArchProfile == llvm::ARM::ProfileKind::R))) {\n // ...\n if (HasAES)\n D.Diag(clang::diag::warn_target_unsupported_extension) << \"aes\" << llvm::ARM::getArchName(llvm::ARM::parseArch(ArchSuffix));"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/arm-acle-6.5.c"]={"clang: warning: ignoring extension \'sha2\' because the \'armv7-a\' architecture does not support it [-Winvalid-command-line-argument]","clang: warning: ignoring extension \'aes\' because the \'armv7-a\' architecture does not support it [-Winvalid-command-line-argument]"} | ["clang/test/Preprocessor/arm-acle-6.5.c"]={"clang: warning: ignoring extension \'sha2\' because the \'armv7-a\' architecture does not support it [-Winvalid-command-line-argument]","clang: warning: ignoring extension \'aes\' because the \'armv7-a\' architecture does not support it [-Winvalid-command-line-argument]"} | ||
Line 7,571: | Line 7,571: | ||
[h]=y, | [h]=y, | ||
[i]={"1dbc317736ce",1429015748,"[Mips] Generate warning for invalid \'-mnan\' and \'-march\' combinations","[Mips] Generate warning for invalid \'-mnan\' and \'-march\' combinations"}, | [i]={"1dbc317736ce",1429015748,"[Mips] Generate warning for invalid \'-mnan\' and \'-march\' combinations","[Mips] Generate warning for invalid \'-mnan\' and \'-march\' combinations"}, | ||
[j]={{"clang/lib/Driver/ToolChains/Arch/Mips.cpp",293,"void mips::getMIPSTargetFeatures(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector<StringRef> &Features) {\n if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) {\n if (Val == \"2008\") {\n if (mips::getIEEE754Standard(CPUName) & mips::Std2008)\n else {\n D.Diag(diag::warn_target_unsupported_nan2008) << CPUName;"}}, | [j]={{"clang/lib/Driver/ToolChains/Arch/Mips.cpp",293,"void mips::getMIPSTargetFeatures(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector<StringRef> &Features) {\n // ...\n if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) {\n // ...\n if (Val == \"2008\") {\n if (mips::getIEEE754Standard(CPUName) & mips::Std2008)\n // ...\n else {\n // ...\n D.Diag(diag::warn_target_unsupported_nan2008) << CPUName;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGen/mips-unsupported-nan.c"]={"clang: warning: ignoring \'-mnan=2008\' option because the \'mips64\' architecture does not support it [-Wunsupported-nan]"} | ["clang/test/CodeGen/mips-unsupported-nan.c"]={"clang: warning: ignoring \'-mnan=2008\' option because the \'mips64\' architecture does not support it [-Wunsupported-nan]"} | ||
Line 7,588: | Line 7,588: | ||
[h]=y, | [h]=y, | ||
[i]={"1dbc317736ce",1429015748,"[Mips] Generate warning for invalid \'-mnan\' and \'-march\' combinations","[Mips] Generate warning for invalid \'-mnan\' and \'-march\' combinations"}, | [i]={"1dbc317736ce",1429015748,"[Mips] Generate warning for invalid \'-mnan\' and \'-march\' combinations","[Mips] Generate warning for invalid \'-mnan\' and \'-march\' combinations"}, | ||
[j]={{"clang/lib/Driver/ToolChains/Arch/Mips.cpp",300,"void mips::getMIPSTargetFeatures(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector<StringRef> &Features) {\n if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) {\n if (Val == \"2008\") {\n } else if (Val == \"legacy\") {\n if (mips::getIEEE754Standard(CPUName) & mips::Legacy)\n else {\n D.Diag(diag::warn_target_unsupported_nanlegacy) << CPUName;"}}, | [j]={{"clang/lib/Driver/ToolChains/Arch/Mips.cpp",300,"void mips::getMIPSTargetFeatures(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector<StringRef> &Features) {\n // ...\n if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) {\n // ...\n if (Val == \"2008\") {\n // ...\n } else if (Val == \"legacy\") {\n if (mips::getIEEE754Standard(CPUName) & mips::Legacy)\n // ...\n else {\n // ...\n D.Diag(diag::warn_target_unsupported_nanlegacy) << CPUName;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGen/mips-unsupported-nan.c"]={"clang: warning: ignoring \'-mnan=legacy\' option because the \'mips64r6\' architecture does not support it [-Wunsupported-nan]"} | ["clang/test/CodeGen/mips-unsupported-nan.c"]={"clang: warning: ignoring \'-mnan=legacy\' option because the \'mips64r6\' architecture does not support it [-Wunsupported-nan]"} | ||
Line 7,605: | Line 7,605: | ||
[h]=q, | [h]=q, | ||
[i]={"692f66ab626b",1512588199,"Delete special-case \"out-of-range\" handling for bools, and just use the normal","Delete special-case \"out-of-range\" handling for bools, and just use the normal"}, | [i]={"692f66ab626b",1512588199,"Delete special-case \"out-of-range\" handling for bools, and just use the normal","Delete special-case \"out-of-range\" handling for bools, and just use the normal"}, | ||
[j]={{x,13737,"static int classifyConstantValue(Expr *Constant) {\n // diag::warn_out_of_range_compare and diag::warn_tautological_bool_compare."},{x,13879,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // FIXME: We use a somewhat different formatting for the in-range cases and\n // cases involving boolean values for historical reasons. We should pick a\n // consistent way of presenting these diagnostics.\n if (!InRange || Other->isKnownToHaveBooleanValue()) {\n S.DiagRuntimeBehavior(E->getOperatorLoc(), E, S.PDiag(!InRange ? diag::warn_out_of_range_compare : diag::warn_tautological_bool_compare) << OS.str() << classifyConstantValue(Constant) << OtherT << OtherIsBooleanDespiteType << *Result << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange());"}}, | [j]={{x,13737,"static int classifyConstantValue(Expr *Constant) {\n // ...\n // diag::warn_out_of_range_compare and diag::warn_tautological_bool_compare."},{x,13879,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // ...\n // FIXME: We use a somewhat different formatting for the in-range cases and\n // cases involving boolean values for historical reasons. We should pick a\n // consistent way of presenting these diagnostics.\n if (!InRange || Other->isKnownToHaveBooleanValue()) {\n S.DiagRuntimeBehavior(E->getOperatorLoc(), E, S.PDiag(!InRange ? diag::warn_out_of_range_compare : diag::warn_tautological_bool_compare) << OS.str() << classifyConstantValue(Constant) << OtherT << OtherIsBooleanDespiteType << *Result << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/atomic-compare.c"]={"clang/test/Sema/atomic-compare.c:17:10: warning: result of comparison of constant 1 with boolean expression is always false [-Wtautological-constant-compare]"} | ["clang/test/Sema/atomic-compare.c"]={"clang/test/Sema/atomic-compare.c:17:10: warning: result of comparison of constant 1 with boolean expression is always false [-Wtautological-constant-compare]"} | ||
Line 7,622: | Line 7,622: | ||
[h]=q, | [h]=q, | ||
[i]={"fa591c370d24",1562629372,"[ObjC] Add a -Wtautological-compare warning for BOOL","[ObjC] Add a -Wtautological-compare warning for BOOL"}, | [i]={"fa591c370d24",1562629372,"[ObjC] Add a -Wtautological-compare warning for BOOL","[ObjC] Add a -Wtautological-compare warning for BOOL"}, | ||
[j]={{x,13866,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n if (IsObjCSignedCharBool) {\n S.DiagRuntimeBehavior(E->getOperatorLoc(), E, S.PDiag(diag::warn_tautological_compare_objc_bool) << OS.str() << *Result);"}}, | [j]={{x,13866,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // ...\n if (IsObjCSignedCharBool) {\n S.DiagRuntimeBehavior(E->getOperatorLoc(), E, S.PDiag(diag::warn_tautological_compare_objc_bool) << OS.str() << *Result);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/tautological-objc-bool-compare.m"]={"clang/test/Sema/tautological-objc-bool-compare.m:12:9: warning: result of comparison of constant 1 with expression of type \'BOOL\' is always false, as the only well defined values for \'BOOL\' are YES and NO [-Wtautological-objc-bool-compare]","clang/test/Sema/tautological-objc-bool-compare.m:14:9: warning: result of comparison of constant 0 with expression of type \'BOOL\' is always false, as the only well defined values for \'BOOL\' are YES and NO [-Wtautological-objc-bool-compare]","clang/test/Sema/tautological-objc-bool-compare.m:15:9: warning: result of comparison of constant 0 with expression of type \'BOOL\' is always true, as the only well defined values for \'BOOL\' are YES and NO [-Wtautological-objc-bool-compare]","clang/test/Sema/tautological-objc-bool-compare.m:18:9: warning: result of comparison of constant YES with expression of type \'BOOL\' is always false, as the only well defined values for \'BOOL\' are YES and NO [-Wtautological-objc-bool-compare]","clang/test/Sema/tautological-objc-bool-compare.m:20:9: warning: result of comparison of constant NO with expression of type \'BOOL\' is always false, as the only well defined values for \'BOOL\' are YES and NO [-Wtautological-objc-bool-compare]","clang/test/Sema/tautological-objc-bool-compare.m:22:9: warning: result of comparison of constant NO with expression of type \'BOOL\' is always true, as the only well defined values for \'BOOL\' are YES and NO [-Wtautological-objc-bool-compare]"} | ["clang/test/Sema/tautological-objc-bool-compare.m"]={"clang/test/Sema/tautological-objc-bool-compare.m:12:9: warning: result of comparison of constant 1 with expression of type \'BOOL\' is always false, as the only well defined values for \'BOOL\' are YES and NO [-Wtautological-objc-bool-compare]","clang/test/Sema/tautological-objc-bool-compare.m:14:9: warning: result of comparison of constant 0 with expression of type \'BOOL\' is always false, as the only well defined values for \'BOOL\' are YES and NO [-Wtautological-objc-bool-compare]","clang/test/Sema/tautological-objc-bool-compare.m:15:9: warning: result of comparison of constant 0 with expression of type \'BOOL\' is always true, as the only well defined values for \'BOOL\' are YES and NO [-Wtautological-objc-bool-compare]","clang/test/Sema/tautological-objc-bool-compare.m:18:9: warning: result of comparison of constant YES with expression of type \'BOOL\' is always false, as the only well defined values for \'BOOL\' are YES and NO [-Wtautological-objc-bool-compare]","clang/test/Sema/tautological-objc-bool-compare.m:20:9: warning: result of comparison of constant NO with expression of type \'BOOL\' is always false, as the only well defined values for \'BOOL\' are YES and NO [-Wtautological-objc-bool-compare]","clang/test/Sema/tautological-objc-bool-compare.m:22:9: warning: result of comparison of constant NO with expression of type \'BOOL\' is always true, as the only well defined values for \'BOOL\' are YES and NO [-Wtautological-objc-bool-compare]"} | ||
Line 7,640: | Line 7,640: | ||
[h]=q, | [h]=q, | ||
[i]={Yb,1582847864,tb,tb}, | [i]={Yb,1582847864,tb,tb}, | ||
[j]={{x,13857,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n if (!TautologicalTypeCompare) {\n S.Diag(E->getOperatorLoc(), diag::warn_tautological_compare_value_range) << RhsConstant << OtherValueRange.Width << OtherValueRange.NonNegative << E->getOpcodeStr() << OS.str() << *Result << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange();"}}, | [j]={{x,13857,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // ...\n if (!TautologicalTypeCompare) {\n S.Diag(E->getOperatorLoc(), diag::warn_tautological_compare_value_range) << RhsConstant << OtherValueRange.Width << OtherValueRange.NonNegative << E->getOpcodeStr() << OS.str() << *Result << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/tautological-constant-compare.c"]={"clang/test/Sema/tautological-constant-compare.c:560:11: warning: result of comparison of 3-bit signed value < 4 is always true [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:562:11: warning: result of comparison of 3-bit unsigned value < 8 is always true [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:564:11: warning: result of comparison of 3-bit signed value < 4 is always true [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:566:11: warning: result of comparison of 3-bit unsigned value < 8 is always true [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:574:18: warning: result of comparison of 8-bit unsigned value < 0 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:593:34: warning: result of comparison of 2-bit unsigned value > 3 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:608:32: warning: result of comparison of 15-bit unsigned value > 32767 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:614:17: warning: result of comparison of 6-bit signed value > 31 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:621:21: warning: result of comparison of 4-bit signed value < -8 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:623:21: warning: result of comparison of 4-bit signed value > 7 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:628:21: warning: result of comparison of 5-bit signed value < -16 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:629:21: warning: result of comparison of 5-bit signed value > 15 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:632:21: warning: result of comparison of 4-bit signed value > 7 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:633:21: warning: result of comparison of 4-bit signed value < -8 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:635:22: warning: result of comparison of 5-bit signed value < -16 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:648:15: warning: result of comparison of 3-bit signed value > 3 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:652:15: warning: result of comparison of 3-bit signed value < -4 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:656:15: warning: result of comparison of 2-bit unsigned value > 3 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:657:15: warning: result of comparison of 2-bit unsigned value < 0 is always false [-Wtautological-value-range-compare]"} | ["clang/test/Sema/tautological-constant-compare.c"]={"clang/test/Sema/tautological-constant-compare.c:560:11: warning: result of comparison of 3-bit signed value < 4 is always true [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:562:11: warning: result of comparison of 3-bit unsigned value < 8 is always true [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:564:11: warning: result of comparison of 3-bit signed value < 4 is always true [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:566:11: warning: result of comparison of 3-bit unsigned value < 8 is always true [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:574:18: warning: result of comparison of 8-bit unsigned value < 0 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:593:34: warning: result of comparison of 2-bit unsigned value > 3 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:608:32: warning: result of comparison of 15-bit unsigned value > 32767 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:614:17: warning: result of comparison of 6-bit signed value > 31 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:621:21: warning: result of comparison of 4-bit signed value < -8 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:623:21: warning: result of comparison of 4-bit signed value > 7 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:628:21: warning: result of comparison of 5-bit signed value < -16 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:629:21: warning: result of comparison of 5-bit signed value > 15 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:632:21: warning: result of comparison of 4-bit signed value > 7 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:633:21: warning: result of comparison of 4-bit signed value < -8 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:635:22: warning: result of comparison of 5-bit signed value < -16 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:648:15: warning: result of comparison of 3-bit signed value > 3 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:652:15: warning: result of comparison of 3-bit signed value < -4 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:656:15: warning: result of comparison of 2-bit unsigned value > 3 is always false [-Wtautological-value-range-compare]","clang/test/Sema/tautological-constant-compare.c:657:15: warning: result of comparison of 2-bit unsigned value < 0 is always false [-Wtautological-value-range-compare]"} | ||
Line 7,658: | Line 7,658: | ||
[h]=q, | [h]=q, | ||
[i]={"bd1fc22043b7",1507839411,cd,cd}, | [i]={"bd1fc22043b7",1507839411,cd,cd}, | ||
[j]={{x,13891,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // FIXME: We use a somewhat different formatting for the in-range cases and\n // cases involving boolean values for historical reasons. We should pick a\n // consistent way of presenting these diagnostics.\n if (!InRange || Other->isKnownToHaveBooleanValue()) {\n } else {\n unsigned Diag = (isKnownToHaveUnsignedValue(OriginalOther) && Value == 0) ? (HasEnumType(OriginalOther) ? diag::warn_unsigned_enum_always_true_comparison : IsCharTy ? diag::warn_unsigned_char_always_true_comparison : diag::warn_unsigned_always_true_comparison) : diag::warn_tautological_constant_compare;"}}, | [j]={{x,13891,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // ...\n // FIXME: We use a somewhat different formatting for the in-range cases and\n // cases involving boolean values for historical reasons. We should pick a\n // consistent way of presenting these diagnostics.\n if (!InRange || Other->isKnownToHaveBooleanValue()) {\n // ...\n } else {\n // ...\n unsigned Diag = (isKnownToHaveUnsignedValue(OriginalOther) && Value == 0) ? (HasEnumType(OriginalOther) ? diag::warn_unsigned_enum_always_true_comparison : IsCharTy ? diag::warn_unsigned_char_always_true_comparison : diag::warn_unsigned_always_true_comparison) : diag::warn_tautological_constant_compare;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/compare.cpp"]={"clang/test/SemaCXX/compare.cpp:249:11: warning: result of comparison \'short\' > 4294967295 is always false [-Wtautological-type-limit-compare]","clang/test/SemaCXX/compare.cpp:250:11: warning: result of comparison \'short\' <= 4294967295 is always true [-Wtautological-type-limit-compare]"} | ["clang/test/SemaCXX/compare.cpp"]={"clang/test/SemaCXX/compare.cpp:249:11: warning: result of comparison \'short\' > 4294967295 is always false [-Wtautological-type-limit-compare]","clang/test/SemaCXX/compare.cpp:250:11: warning: result of comparison \'short\' <= 4294967295 is always true [-Wtautological-type-limit-compare]"} | ||
Line 7,676: | Line 7,676: | ||
[h]=q, | [h]=q, | ||
[i]={"f935b562b9a7",1396675021,"Add a new subgroup to -Wtautological-compare, -Wtautological-overlap-compare,","Add a new subgroup to -Wtautological-compare, -Wtautological-overlap-compare,"}, | [i]={"f935b562b9a7",1396675021,"Add a new subgroup to -Wtautological-compare, -Wtautological-overlap-compare,","Add a new subgroup to -Wtautological-compare, -Wtautological-overlap-compare,"}, | ||
[j]={{E,167,"/// Warn on logical operator errors in CFGBuilder\nclass LogicalErrorHandler : public CFGCallback {\n void compareAlwaysTrue(const BinaryOperator *B, bool isAlwaysTrue) override {\n S.Diag(B->getExprLoc(), diag::warn_tautological_overlap_comparison) << DiagRange << isAlwaysTrue;"},{E,191,"/// Warn on logical operator errors in CFGBuilder\nclass LogicalErrorHandler : public CFGCallback {\n static bool hasActiveDiagnostics(DiagnosticsEngine &Diags, SourceLocation Loc) { return !Diags.isIgnored(diag::warn_tautological_overlap_comparison, Loc) || !Diags.isIgnored(diag::warn_comparison_bitwise_or, Loc); }"}}, | [j]={{E,167,"/// Warn on logical operator errors in CFGBuilder\nclass LogicalErrorHandler : public CFGCallback {\n // ...\n void compareAlwaysTrue(const BinaryOperator *B, bool isAlwaysTrue) override {\n // ...\n S.Diag(B->getExprLoc(), diag::warn_tautological_overlap_comparison) << DiagRange << isAlwaysTrue;"},{E,191,"/// Warn on logical operator errors in CFGBuilder\nclass LogicalErrorHandler : public CFGCallback {\n // ...\n static bool hasActiveDiagnostics(DiagnosticsEngine &Diags, SourceLocation Loc) { return !Diags.isIgnored(diag::warn_tautological_overlap_comparison, Loc) || !Diags.isIgnored(diag::warn_comparison_bitwise_or, Loc); }"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-overlap.c"]={ | ["clang/test/Sema/warn-overlap.c"]={ | ||
Line 7,745: | Line 7,745: | ||
[h]=y, | [h]=y, | ||
[i]={"61d065e21ff3",1590001902,Wc,Wc}, | [i]={"61d065e21ff3",1590001902,Wc,Wc}, | ||
[j]={{x,19186,"/// \\brief Enforce the bounds of a TCB\n/// CheckTCBEnforcement - Enforces that every function in a named TCB only\n/// directly calls other functions in the same TCB as marked by the enforce_tcb\n/// and enforce_tcb_leaf attributes.\nvoid Sema::CheckTCBEnforcement(const SourceLocation CallExprLoc, const NamedDecl *Callee) {\n // Go through the TCBs the caller is a part of and emit warnings if Caller\n // is in a TCB that the Callee is not.\n for (const auto *A : Caller->specific_attrs<EnforceTCBAttr>()) {\n if (CalleeTCBs.count(CallerTCB) == 0) {\n this->Diag(CallExprLoc, diag::warn_tcb_enforcement_violation) << Callee << CallerTCB;"}}, | [j]={{x,19186,"/// \\brief Enforce the bounds of a TCB\n/// CheckTCBEnforcement - Enforces that every function in a named TCB only\n/// directly calls other functions in the same TCB as marked by the enforce_tcb\n/// and enforce_tcb_leaf attributes.\nvoid Sema::CheckTCBEnforcement(const SourceLocation CallExprLoc, const NamedDecl *Callee) {\n // ...\n // Go through the TCBs the caller is a part of and emit warnings if Caller\n // is in a TCB that the Callee is not.\n for (const auto *A : Caller->specific_attrs<EnforceTCBAttr>()) {\n // ...\n if (CalleeTCBs.count(CallerTCB) == 0) {\n this->Diag(CallExprLoc, diag::warn_tcb_enforcement_violation) << Callee << CallerTCB;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-enforce-tcb.c"]={"clang/test/Sema/attr-enforce-tcb.c:18:5: warning: calling \'foo3\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:19:5: warning: calling \'foo4\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:22:5: warning: calling \'foo7\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:39:5: warning: calling \'foo1\' is a violation of trusted computing base \'bar2\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:40:5: warning: calling \'foo4\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:42:5: warning: calling \'foo7\' is a violation of trusted computing base \'bar2\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:42:5: warning: calling \'foo7\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:52:3: warning: calling \'foo1\' is a violation of trusted computing base \'bar2\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:52:3: warning: calling \'foo1\' is a violation of trusted computing base \'bar3\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:55:3: warning: calling \'foo3\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:55:3: warning: calling \'foo3\' is a violation of trusted computing base \'bar2\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:55:3: warning: calling \'foo3\' is a violation of trusted computing base \'bar3\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:59:3: warning: calling \'foo4\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:59:3: warning: calling \'foo4\' is a violation of trusted computing base \'bar3\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:62:3: warning: calling \'foo7\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:62:3: warning: calling \'foo7\' is a violation of trusted computing base \'bar2\' [-Wtcb-enforcement]"} | ["clang/test/Sema/attr-enforce-tcb.c"]={"clang/test/Sema/attr-enforce-tcb.c:18:5: warning: calling \'foo3\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:19:5: warning: calling \'foo4\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:22:5: warning: calling \'foo7\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:39:5: warning: calling \'foo1\' is a violation of trusted computing base \'bar2\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:40:5: warning: calling \'foo4\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:42:5: warning: calling \'foo7\' is a violation of trusted computing base \'bar2\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:42:5: warning: calling \'foo7\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:52:3: warning: calling \'foo1\' is a violation of trusted computing base \'bar2\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:52:3: warning: calling \'foo1\' is a violation of trusted computing base \'bar3\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:55:3: warning: calling \'foo3\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:55:3: warning: calling \'foo3\' is a violation of trusted computing base \'bar2\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:55:3: warning: calling \'foo3\' is a violation of trusted computing base \'bar3\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:59:3: warning: calling \'foo4\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:59:3: warning: calling \'foo4\' is a violation of trusted computing base \'bar3\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:62:3: warning: calling \'foo7\' is a violation of trusted computing base \'bar\' [-Wtcb-enforcement]","clang/test/Sema/attr-enforce-tcb.c:62:3: warning: calling \'foo7\' is a violation of trusted computing base \'bar2\' [-Wtcb-enforcement]"} | ||
Line 7,763: | Line 7,763: | ||
[h]=Zb, | [h]=Zb, | ||
[i]={"63eed63312c1",1269555664,"Warn when the conversion of an integral non-type template argument to","Warn when the conversion of an integral non-type template argument to"}, | [i]={"63eed63312c1",1269555664,"Warn when the conversion of an integral non-type template argument to","Warn when the conversion of an integral non-type template argument to"}, | ||
[j]={{td,7566,"/// 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 // C++ [temp.arg.nontype]p5:\n // The following conversions are performed on each expression used\n // as a non-type template-argument. If a non-type\n // template-argument cannot be converted to the type of the\n // corresponding template-parameter then the program is\n // ill-formed.\n if (ParamType->isIntegralOrEnumerationType()) {\n if (ParamType->isBooleanType()) {\n } else {\n // Complain if an unsigned parameter received a negative value.\n if (IntegerType->isUnsignedIntegerOrEnumerationType() && (OldValue.isSigned() && OldValue.isNegative())) {\n Diag(Arg->getBeginLoc(), diag::warn_template_arg_negative) << toString(OldValue, 10) << toString(Value, 10) << Param->getType() << Arg->getSourceRange();"}}, | [j]={{td,7566,"/// 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 // ...\n // C++ [temp.arg.nontype]p5:\n // The following conversions are performed on each expression used\n // as a non-type template-argument. If a non-type\n // template-argument cannot be converted to the type of the\n // corresponding template-parameter then the program is\n // ill-formed.\n if (ParamType->isIntegralOrEnumerationType()) {\n // ...\n if (ParamType->isBooleanType()) {\n // ...\n } else {\n // ...\n // Complain if an unsigned parameter received a negative value.\n if (IntegerType->isUnsignedIntegerOrEnumerationType() && (OldValue.isSigned() && OldValue.isNegative())) {\n Diag(Arg->getBeginLoc(), diag::warn_template_arg_negative) << toString(OldValue, 10) << toString(Value, 10) << Param->getType() << Arg->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaTemplate/temp_arg_nontype.cpp"]={"clang/test/SemaTemplate/temp_arg_nontype.cpp:105:12: warning: non-type template argument with value \'-10\' converted to \'4294967286\' for unsigned template parameter of type \'unsigned int\' [-Wconversion]"} | ["clang/test/SemaTemplate/temp_arg_nontype.cpp"]={"clang/test/SemaTemplate/temp_arg_nontype.cpp:105:12: warning: non-type template argument with value \'-10\' converted to \'4294967286\' for unsigned template parameter of type \'unsigned int\' [-Wconversion]"} | ||
Line 7,781: | Line 7,781: | ||
[h]=Zb, | [h]=Zb, | ||
[i]={"63eed63312c1",1269555664,"Warn when the conversion of an integral non-type template argument to","Warn when the conversion of an integral non-type template argument to"}, | [i]={"63eed63312c1",1269555664,"Warn when the conversion of an integral non-type template argument to","Warn when the conversion of an integral non-type template argument to"}, | ||
[j]={{td,7581,"/// 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 // C++ [temp.arg.nontype]p5:\n // The following conversions are performed on each expression used\n // as a non-type template-argument. If a non-type\n // template-argument cannot be converted to the type of the\n // corresponding template-parameter then the program is\n // ill-formed.\n if (ParamType->isIntegralOrEnumerationType()) {\n if (ParamType->isBooleanType()) {\n } else {\n if (RequiredBits > AllowedBits) {\n Diag(Arg->getBeginLoc(), diag::warn_template_arg_too_large) << toString(OldValue, 10) << toString(Value, 10) << Param->getType() << Arg->getSourceRange();"}}, | [j]={{td,7581,"/// 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 // ...\n // C++ [temp.arg.nontype]p5:\n // The following conversions are performed on each expression used\n // as a non-type template-argument. If a non-type\n // template-argument cannot be converted to the type of the\n // corresponding template-parameter then the program is\n // ill-formed.\n if (ParamType->isIntegralOrEnumerationType()) {\n // ...\n if (ParamType->isBooleanType()) {\n // ...\n } else {\n // ...\n if (RequiredBits > AllowedBits) {\n Diag(Arg->getBeginLoc(), diag::warn_template_arg_too_large) << toString(OldValue, 10) << toString(Value, 10) << Param->getType() << Arg->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaTemplate/temp_arg_nontype.cpp"]={"clang/test/SemaTemplate/temp_arg_nontype.cpp:100:10: warning: non-type template argument value \'256\' truncated to \'0\' for template parameter of type \'unsigned char\' [-Wconversion]","clang/test/SemaTemplate/temp_arg_nontype.cpp:111:16: warning: non-type template argument value \'-129\' truncated to \'127\' for template parameter of type \'signed char\' [-Wconversion]","clang/test/SemaTemplate/temp_arg_nontype.cpp:113:16: warning: non-type template argument value \'128\' truncated to \'-128\' for template parameter of type \'signed char\' [-Wconversion]","clang/test/SemaTemplate/temp_arg_nontype.cpp:114:16: warning: non-type template argument value \'128\' truncated to \'-128\' for template parameter of type \'signed char\' [-Wconversion]","clang/test/SemaTemplate/temp_arg_nontype.cpp:207:34: warning: non-type template argument value \'9223372036854775807\' truncated to \'-1\' for template parameter of type \'int\' [-Wconversion]","clang/test/SemaTemplate/temp_arg_nontype.cpp:258:21: warning: non-type template argument value \'2147483648\' truncated to \'-2147483648\' for template parameter of type \'int\' [-Wconversion]"} | ["clang/test/SemaTemplate/temp_arg_nontype.cpp"]={"clang/test/SemaTemplate/temp_arg_nontype.cpp:100:10: warning: non-type template argument value \'256\' truncated to \'0\' for template parameter of type \'unsigned char\' [-Wconversion]","clang/test/SemaTemplate/temp_arg_nontype.cpp:111:16: warning: non-type template argument value \'-129\' truncated to \'127\' for template parameter of type \'signed char\' [-Wconversion]","clang/test/SemaTemplate/temp_arg_nontype.cpp:113:16: warning: non-type template argument value \'128\' truncated to \'-128\' for template parameter of type \'signed char\' [-Wconversion]","clang/test/SemaTemplate/temp_arg_nontype.cpp:114:16: warning: non-type template argument value \'128\' truncated to \'-128\' for template parameter of type \'signed char\' [-Wconversion]","clang/test/SemaTemplate/temp_arg_nontype.cpp:207:34: warning: non-type template argument value \'9223372036854775807\' truncated to \'-1\' for template parameter of type \'int\' [-Wconversion]","clang/test/SemaTemplate/temp_arg_nontype.cpp:258:21: warning: non-type template argument value \'2147483648\' truncated to \'-2147483648\' for template parameter of type \'int\' [-Wconversion]"} | ||
Line 7,813: | Line 7,813: | ||
[h]=q, | [h]=q, | ||
[i]={"cd556eb26580",1383937196,"Issue a diagnostic if we see a templated friend declaration that we do not","Issue a diagnostic if we see a templated friend declaration that we do not"}, | [i]={"cd556eb26580",1383937196,"Issue a diagnostic if we see a templated friend declaration that we do not","Issue a diagnostic if we see a templated friend declaration that we do not"}, | ||
[j]={{td,1861,"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.isNotEmpty() && !SS.isInvalid()) {\n if (!SemanticContext) {\n Diag(NameLoc, TUK == TUK_Friend ? diag::warn_template_qualified_friend_ignored : diag::err_template_qualified_declarator_no_match) << SS.getScopeRep() << SS.getRange();"}}, | [j]={{td,1861,"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 // ...\n if (SS.isNotEmpty() && !SS.isInvalid()) {\n // ...\n if (!SemanticContext) {\n // ...\n Diag(NameLoc, TUK == TUK_Friend ? diag::warn_template_qualified_friend_ignored : diag::err_template_qualified_declarator_no_match) << SS.getScopeRep() << SS.getRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaTemplate/friend-template.cpp"]={"clang/test/SemaTemplate/friend-template.cpp:238:62: warning: dependent nested name specifier \'A<S>::\' for friend template declaration is not supported; ignoring this friend declaration [-Wunsupported-friend]"} | ["clang/test/SemaTemplate/friend-template.cpp"]={"clang/test/SemaTemplate/friend-template.cpp:238:62: warning: dependent nested name specifier \'A<S>::\' for friend template declaration is not supported; ignoring this friend declaration [-Wunsupported-friend]"} | ||
Line 7,830: | Line 7,830: | ||
[h]=q, | [h]=q, | ||
[i]={"cd556eb26580",1383937196,"Issue a diagnostic if we see a templated friend declaration that we do not","Issue a diagnostic if we see a templated friend declaration that we do not"}, | [i]={"cd556eb26580",1383937196,"Issue a diagnostic if we see a templated friend declaration that we do not","Issue a diagnostic if we see a templated friend declaration that we do not"}, | ||
[j]={{db,17351,"/// Handle a friend tag declaration where the scope specifier was\n/// templated.\nDeclResult Sema::ActOnTemplatedFriendTag(Scope *S, SourceLocation FriendLoc, unsigned TagSpec, SourceLocation TagLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, const ParsedAttributesView &Attr, MultiTemplateParamsArg TempParamLists) {\n Diag(NameLoc, diag::warn_template_qualified_friend_unsupported) << SS.getScopeRep() << SS.getRange() << cast<CXXRecordDecl>(CurContext);"},{db,17782,"NamedDecl *Sema::ActOnFriendFunctionDecl(Scope *S, Declarator &D, MultiTemplateParamsArg TemplateParams) {\n if (ND->isInvalidDecl()) {\n } else {\n // Mark templated-scope function declarations as unsupported.\n if (FD->getNumTemplateParameterLists() && SS.isValid()) {\n Diag(FD->getLocation(), diag::warn_template_qualified_friend_unsupported) << SS.getScopeRep() << SS.getRange() << cast<CXXRecordDecl>(CurContext);"}}, | [j]={{db,17351,"/// Handle a friend tag declaration where the scope specifier was\n/// templated.\nDeclResult Sema::ActOnTemplatedFriendTag(Scope *S, SourceLocation FriendLoc, unsigned TagSpec, SourceLocation TagLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, const ParsedAttributesView &Attr, MultiTemplateParamsArg TempParamLists) {\n // ...\n Diag(NameLoc, diag::warn_template_qualified_friend_unsupported) << SS.getScopeRep() << SS.getRange() << cast<CXXRecordDecl>(CurContext);"},{db,17782,"NamedDecl *Sema::ActOnFriendFunctionDecl(Scope *S, Declarator &D, MultiTemplateParamsArg TemplateParams) {\n // ...\n if (ND->isInvalidDecl()) {\n // ...\n } else {\n // ...\n // Mark templated-scope function declarations as unsupported.\n if (FD->getNumTemplateParameterLists() && SS.isValid()) {\n Diag(FD->getLocation(), diag::warn_template_qualified_friend_unsupported) << SS.getScopeRep() << SS.getRange() << cast<CXXRecordDecl>(CurContext);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/class.access/class.friend/p3-cxx0x.cpp"]={"clang/test/CXX/class.access/class.friend/p3-cxx0x.cpp:39:44: warning: dependent nested name specifier \'B<S>::\' for friend class declaration is not supported; turning off access control for \'A\' [-Wunsupported-friend]","clang/test/CXX/class.access/class.friend/p3-cxx0x.cpp:77:43: warning: dependent nested name specifier \'A<T>::\' for friend class declaration is not supported; turning off access control for \'(unnamed struct at clang/test/CXX/class.access/class.friend/p3-cxx0x.cpp:51:1)\' [-Wunsupported-friend]"} | ["clang/test/CXX/class.access/class.friend/p3-cxx0x.cpp"]={"clang/test/CXX/class.access/class.friend/p3-cxx0x.cpp:39:44: warning: dependent nested name specifier \'B<S>::\' for friend class declaration is not supported; turning off access control for \'A\' [-Wunsupported-friend]","clang/test/CXX/class.access/class.friend/p3-cxx0x.cpp:77:43: warning: dependent nested name specifier \'A<T>::\' for friend class declaration is not supported; turning off access control for \'(unnamed struct at clang/test/CXX/class.access/class.friend/p3-cxx0x.cpp:51:1)\' [-Wunsupported-friend]"} | ||
Line 7,845: | Line 7,845: | ||
[h]=q, | [h]=q, | ||
[i]={"65911498eff3",1258978305,"Tolerate extraneous \"template<>\" headers better, downgrading the","Tolerate extraneous \"template<>\" headers better, downgrading the"}, | [i]={"65911498eff3",1258978305,"Tolerate extraneous \"template<>\" headers better, downgrading the","Tolerate extraneous \"template<>\" headers better, downgrading the"}, | ||
[j]={{td,3580,"/// Match the given template parameter lists to the given scope\n/// specifier, returning the template parameter list that applies to the\n/// name.\n///\n/// \\param DeclStartLoc the start of the declaration that has a scope\n/// specifier or a template parameter list.\n///\n/// \\param DeclLoc The location of the declaration itself.\n///\n/// \\param SS the scope specifier that will be matched to the given template\n/// parameter lists. This scope specifier precedes a qualified name that is\n/// being declared.\n///\n/// \\param TemplateId The template-id following the scope specifier, if there\n/// is one. Used to check for a missing \'template<>\'.\n///\n/// \\param ParamLists the template parameter lists, from the outermost to the\n/// innermost template parameter lists.\n///\n/// \\param IsFriend Whether to apply the slightly different rules for\n/// matching template parameters to scope specifiers in friend\n/// declarations.\n///\n/// \\param IsMemberSpecialization will be set true if the scope specifier\n/// denotes a fully-specialized type, and therefore this is a declaration of\n/// a member specialization.\n///\n/// \\returns the template parameter list, if any, that corresponds to the\n/// name that is preceded by the scope specifier @p SS. This template\n/// parameter list may have template parameters (if we\'re declaring a\n/// template) or may have no template parameters (if we\'re declaring a\n/// template specialization), or may be NULL (if what we\'re declaring isn\'t\n/// itself a template).\nTemplateParameterList *Sema::MatchTemplateParametersToScopeSpecifier(SourceLocation DeclStartLoc, SourceLocation DeclLoc, const CXXScopeSpec &SS, TemplateIdAnnotation *TemplateId, ArrayRef<TemplateParameterList *> ParamLists, bool IsFriend, bool &IsMemberSpecialization, bool &Invalid, bool SuppressDiagnostic) {\n // If there were too many template parameter lists, complain about that now.\n if (ParamIdx < ParamLists.size() - 1) {\n if (!SuppressDiagnostic)\n Diag(ParamLists[ParamIdx]->getTemplateLoc(), AllExplicitSpecHeaders ? diag::warn_template_spec_extra_headers : diag::err_template_spec_extra_headers) << SourceRange(ParamLists[ParamIdx]->getTemplateLoc(), ParamLists[ParamLists.size() - 2]->getRAngleLoc());"}}, | [j]={{td,3580,"/// Match the given template parameter lists to the given scope\n/// specifier, returning the template parameter list that applies to the\n/// name.\n///\n/// \\param DeclStartLoc the start of the declaration that has a scope\n/// specifier or a template parameter list.\n///\n/// \\param DeclLoc The location of the declaration itself.\n///\n/// \\param SS the scope specifier that will be matched to the given template\n/// parameter lists. This scope specifier precedes a qualified name that is\n/// being declared.\n///\n/// \\param TemplateId The template-id following the scope specifier, if there\n/// is one. Used to check for a missing \'template<>\'.\n///\n/// \\param ParamLists the template parameter lists, from the outermost to the\n/// innermost template parameter lists.\n///\n/// \\param IsFriend Whether to apply the slightly different rules for\n/// matching template parameters to scope specifiers in friend\n/// declarations.\n///\n/// \\param IsMemberSpecialization will be set true if the scope specifier\n/// denotes a fully-specialized type, and therefore this is a declaration of\n/// a member specialization.\n///\n/// \\returns the template parameter list, if any, that corresponds to the\n/// name that is preceded by the scope specifier @p SS. This template\n/// parameter list may have template parameters (if we\'re declaring a\n/// template) or may have no template parameters (if we\'re declaring a\n/// template specialization), or may be NULL (if what we\'re declaring isn\'t\n/// itself a template).\nTemplateParameterList *Sema::MatchTemplateParametersToScopeSpecifier(SourceLocation DeclStartLoc, SourceLocation DeclLoc, const CXXScopeSpec &SS, TemplateIdAnnotation *TemplateId, ArrayRef<TemplateParameterList *> ParamLists, bool IsFriend, bool &IsMemberSpecialization, bool &Invalid, bool SuppressDiagnostic) {\n // ...\n // If there were too many template parameter lists, complain about that now.\n if (ParamIdx < ParamLists.size() - 1) {\n // ...\n if (!SuppressDiagnostic)\n Diag(ParamLists[ParamIdx]->getTemplateLoc(), AllExplicitSpecHeaders ? diag::warn_template_spec_extra_headers : diag::err_template_spec_extra_headers) << SourceRange(ParamLists[ParamIdx]->getTemplateLoc(), ParamLists[ParamLists.size() - 2]->getRAngleLoc());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaTemplate/temp_explicit.cpp"]={"clang/test/SemaTemplate/temp_explicit.cpp:131:1: warning: extraneous template parameter list in template specialization"} | ["clang/test/SemaTemplate/temp_explicit.cpp"]={"clang/test/SemaTemplate/temp_explicit.cpp:131:1: warning: extraneous template parameter list in template specialization"} | ||
Line 7,860: | Line 7,860: | ||
[h]=q, | [h]=q, | ||
[i]={"c7ba5333782f",1239831327,"Add warning when a tentative array definition is assumed to have one element.","Add warning when a tentative array definition is assumed to have one element."}, | [i]={"c7ba5333782f",1239831327,"Add warning when a tentative array definition is assumed to have one element.","Add warning when a tentative array definition is assumed to have one element."}, | ||
[j]={{Z,1308,"/// 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 for (TentativeDefinitionsType::iterator T = TentativeDefinitions.begin(ExternalSource.get()), TEnd = TentativeDefinitions.end(); T != TEnd; ++T) {\n if (const IncompleteArrayType *ArrayT = Context.getAsIncompleteArrayType(VD->getType())) {\n Diag(VD->getLocation(), diag::warn_tentative_incomplete_array);"}}, | [j]={{Z,1308,"/// 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 // ...\n for (TentativeDefinitionsType::iterator T = TentativeDefinitions.begin(ExternalSource.get()), TEnd = TentativeDefinitions.end(); T != TEnd; ++T) {\n // ...\n if (const IncompleteArrayType *ArrayT = Context.getAsIncompleteArrayType(VD->getType())) {\n // ...\n Diag(VD->getLocation(), diag::warn_tentative_incomplete_array);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/extern-redecl.c"]={"clang/test/Sema/extern-redecl.c:4:12: warning: tentative array definition assumed to have one element","clang/test/Sema/extern-redecl.c:23:12: warning: tentative array definition assumed to have one element"} | ["clang/test/Sema/extern-redecl.c"]={"clang/test/Sema/extern-redecl.c:4:12: warning: tentative array definition assumed to have one element","clang/test/Sema/extern-redecl.c:23:12: warning: tentative array definition assumed to have one element"} | ||
Line 7,877: | Line 7,877: | ||
[h]=Zb, | [h]=Zb, | ||
[i]={"f7432755d0c0",1402090766,"Add -Wtautological-undefined-compare and -Wundefined-bool-conversion warnings","Add -Wtautological-undefined-compare and -Wundefined-bool-conversion warnings"}, | [i]={"f7432755d0c0",1402090766,"Add -Wtautological-undefined-compare and -Wundefined-bool-conversion warnings","Add -Wtautological-undefined-compare and -Wundefined-bool-conversion warnings"}, | ||
[j]={{x,15459,"/// Diagnose pointers that are always non-null.\n/// \\param E the expression containing the pointer\n/// \\param NullKind NPCK_NotNull if E is a cast to bool, otherwise, E is\n/// compared to a null pointer\n/// \\param IsEqual True when the comparison is equal to a null pointer\n/// \\param Range Extra SourceRange to highlight in the diagnostic\nvoid Sema::DiagnoseAlwaysNonNullPointer(Expr *E, Expr::NullPointerConstantKind NullKind, bool IsEqual, SourceRange Range) {\n if (isa<CXXThisExpr>(E)) {\n unsigned DiagID = IsCompare ? diag::warn_this_null_compare : diag::warn_this_bool_conversion;"}}, | [j]={{x,15459,"/// Diagnose pointers that are always non-null.\n/// \\param E the expression containing the pointer\n/// \\param NullKind NPCK_NotNull if E is a cast to bool, otherwise, E is\n/// compared to a null pointer\n/// \\param IsEqual True when the comparison is equal to a null pointer\n/// \\param Range Extra SourceRange to highlight in the diagnostic\nvoid Sema::DiagnoseAlwaysNonNullPointer(Expr *E, Expr::NullPointerConstantKind NullKind, bool IsEqual, SourceRange Range) {\n // ...\n if (isa<CXXThisExpr>(E)) {\n unsigned DiagID = IsCompare ? diag::warn_this_null_compare : diag::warn_this_bool_conversion;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-undefined-bool-conversion.cpp"]={"clang/test/SemaCXX/warn-undefined-bool-conversion.cpp:19:9: warning: \'this\' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Wundefined-bool-conversion]","clang/test/SemaCXX/warn-undefined-bool-conversion.cpp:22:10: warning: \'this\' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Wundefined-bool-conversion]","clang/test/SemaCXX/warn-undefined-bool-conversion.cpp:117:14: warning: \'this\' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Wundefined-bool-conversion]"} | ["clang/test/SemaCXX/warn-undefined-bool-conversion.cpp"]={"clang/test/SemaCXX/warn-undefined-bool-conversion.cpp:19:9: warning: \'this\' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Wundefined-bool-conversion]","clang/test/SemaCXX/warn-undefined-bool-conversion.cpp:22:10: warning: \'this\' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Wundefined-bool-conversion]","clang/test/SemaCXX/warn-undefined-bool-conversion.cpp:117:14: warning: \'this\' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Wundefined-bool-conversion]"} | ||
Line 7,894: | Line 7,894: | ||
[h]=q, | [h]=q, | ||
[i]={"f7432755d0c0",1402090766,"Add -Wtautological-undefined-compare and -Wundefined-bool-conversion warnings","Add -Wtautological-undefined-compare and -Wundefined-bool-conversion warnings"}, | [i]={"f7432755d0c0",1402090766,"Add -Wtautological-undefined-compare and -Wundefined-bool-conversion warnings","Add -Wtautological-undefined-compare and -Wundefined-bool-conversion warnings"}, | ||
[j]={{x,15458,"/// Diagnose pointers that are always non-null.\n/// \\param E the expression containing the pointer\n/// \\param NullKind NPCK_NotNull if E is a cast to bool, otherwise, E is\n/// compared to a null pointer\n/// \\param IsEqual True when the comparison is equal to a null pointer\n/// \\param Range Extra SourceRange to highlight in the diagnostic\nvoid Sema::DiagnoseAlwaysNonNullPointer(Expr *E, Expr::NullPointerConstantKind NullKind, bool IsEqual, SourceRange Range) {\n if (isa<CXXThisExpr>(E)) {\n unsigned DiagID = IsCompare ? diag::warn_this_null_compare : diag::warn_this_bool_conversion;"}}, | [j]={{x,15458,"/// Diagnose pointers that are always non-null.\n/// \\param E the expression containing the pointer\n/// \\param NullKind NPCK_NotNull if E is a cast to bool, otherwise, E is\n/// compared to a null pointer\n/// \\param IsEqual True when the comparison is equal to a null pointer\n/// \\param Range Extra SourceRange to highlight in the diagnostic\nvoid Sema::DiagnoseAlwaysNonNullPointer(Expr *E, Expr::NullPointerConstantKind NullKind, bool IsEqual, SourceRange Range) {\n // ...\n if (isa<CXXThisExpr>(E)) {\n unsigned DiagID = IsCompare ? diag::warn_this_null_compare : diag::warn_this_bool_conversion;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-tautological-undefined-compare.cpp"]={"clang/test/SemaCXX/warn-tautological-undefined-compare.cpp:18:9: warning: \'this\' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to false [-Wtautological-undefined-compare]","clang/test/SemaCXX/warn-tautological-undefined-compare.cpp:20:9: warning: \'this\' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to true [-Wtautological-undefined-compare]","clang/test/SemaCXX/warn-tautological-undefined-compare.cpp:130:14: warning: \'this\' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to true [-Wtautological-undefined-compare]","clang/test/SemaCXX/warn-tautological-undefined-compare.cpp:132:14: warning: \'this\' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to false [-Wtautological-undefined-compare]","clang/test/SemaCXX/warn-tautological-undefined-compare.cpp:134:14: warning: \'this\' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to true [-Wtautological-undefined-compare]","clang/test/SemaCXX/warn-tautological-undefined-compare.cpp:136:14: warning: \'this\' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to false [-Wtautological-undefined-compare]"} | ["clang/test/SemaCXX/warn-tautological-undefined-compare.cpp"]={"clang/test/SemaCXX/warn-tautological-undefined-compare.cpp:18:9: warning: \'this\' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to false [-Wtautological-undefined-compare]","clang/test/SemaCXX/warn-tautological-undefined-compare.cpp:20:9: warning: \'this\' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to true [-Wtautological-undefined-compare]","clang/test/SemaCXX/warn-tautological-undefined-compare.cpp:130:14: warning: \'this\' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to true [-Wtautological-undefined-compare]","clang/test/SemaCXX/warn-tautological-undefined-compare.cpp:132:14: warning: \'this\' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to false [-Wtautological-undefined-compare]","clang/test/SemaCXX/warn-tautological-undefined-compare.cpp:134:14: warning: \'this\' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to true [-Wtautological-undefined-compare]","clang/test/SemaCXX/warn-tautological-undefined-compare.cpp:136:14: warning: \'this\' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to false [-Wtautological-undefined-compare]"} | ||
Line 7,912: | Line 7,912: | ||
[h]=q, | [h]=q, | ||
[i]={"8d11c797b2b6",1334851844,hc,hc}, | [i]={"8d11c797b2b6",1334851844,hc,hc}, | ||
[j]={{C,679,"/// Checks that all attribute arguments, starting from Sidx, resolve to\n/// a capability object.\n/// \\param Sidx The attribute argument index to start checking with.\n/// \\param ParamIdxOk Whether an argument can be indexing into a function\n/// parameter list.\nstatic void checkAttrArgsAreCapabilityObjs(Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl<Expr *> &Args, unsigned Sidx = 0, bool ParamIdxOk = false) {\n for (unsigned Idx = Sidx; Idx < AL.getNumArgs(); ++Idx) {\n // If the type does not have a capability, see if the components of the\n // expression have capabilities. This allows for writing C code where the\n // capability may be on the type, and the expression is a capability\n // boolean logic expression. Eg) requires_capability(A || B && !C)\n if (!typeHasCapability(S, ArgTy) && !isCapabilityExpr(S, ArgExp))\n S.Diag(AL.getLoc(), diag::warn_thread_attribute_argument_not_lockable) << AL << ArgTy;"}}, | [j]={{C,679,"/// Checks that all attribute arguments, starting from Sidx, resolve to\n/// a capability object.\n/// \\param Sidx The attribute argument index to start checking with.\n/// \\param ParamIdxOk Whether an argument can be indexing into a function\n/// parameter list.\nstatic void checkAttrArgsAreCapabilityObjs(Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl<Expr *> &Args, unsigned Sidx = 0, bool ParamIdxOk = false) {\n // ...\n for (unsigned Idx = Sidx; Idx < AL.getNumArgs(); ++Idx) {\n // ...\n // If the type does not have a capability, see if the components of the\n // expression have capabilities. This allows for writing C code where the\n // capability may be on the type, and the expression is a capability\n // boolean logic expression. Eg) requires_capability(A || B && !C)\n if (!typeHasCapability(S, ArgTy) && !isCapabilityExpr(S, ArgExp))\n S.Diag(AL.getLoc(), diag::warn_thread_attribute_argument_not_lockable) << AL << ArgTy;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-capabilities.cpp"]={"clang/test/Sema/attr-capabilities.cpp:13:31: warning: \'assert_capability\' attribute requires arguments whose type is annotated with \'capability\' attribute; type here is \'NotACapability *\' [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.cpp:14:31: warning: \'assert_capability\' attribute requires arguments whose type is annotated with \'capability\' attribute; type here is \'bool\' [-Wthread-safety-attributes]"} | ["clang/test/Sema/attr-capabilities.cpp"]={"clang/test/Sema/attr-capabilities.cpp:13:31: warning: \'assert_capability\' attribute requires arguments whose type is annotated with \'capability\' attribute; type here is \'NotACapability *\' [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.cpp:14:31: warning: \'assert_capability\' attribute requires arguments whose type is annotated with \'capability\' attribute; type here is \'bool\' [-Wthread-safety-attributes]"} | ||
Line 7,930: | Line 7,930: | ||
[h]=q, | [h]=q, | ||
[i]={"8d11c797b2b6",1334851844,hc,hc}, | [i]={"8d11c797b2b6",1334851844,hc,hc}, | ||
[j]={{C,738,"static bool checkAcquireOrderAttrCommon(Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl<Expr *> &Args) {\n if (!QT->isDependentType() && !typeHasCapability(S, QT)) {\n S.Diag(AL.getLoc(), diag::warn_thread_attribute_decl_not_lockable) << AL;"}}, | [j]={{C,738,"static bool checkAcquireOrderAttrCommon(Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl<Expr *> &Args) {\n // ...\n if (!QT->isDependentType() && !typeHasCapability(S, QT)) {\n S.Diag(AL.getLoc(), diag::warn_thread_attribute_decl_not_lockable) << AL;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-thread-safety-parsing.cpp"]={"clang/test/SemaCXX/warn-thread-safety-parsing.cpp:498:31: warning: \'acquired_after\' attribute can only be applied in a context annotated with \'capability\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:561:31: warning: \'acquired_before\' attribute can only be applied in a context annotated with \'capability\' attribute [-Wthread-safety-attributes]"} | ["clang/test/SemaCXX/warn-thread-safety-parsing.cpp"]={"clang/test/SemaCXX/warn-thread-safety-parsing.cpp:498:31: warning: \'acquired_after\' attribute can only be applied in a context annotated with \'capability\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:561:31: warning: \'acquired_before\' attribute can only be applied in a context annotated with \'capability\' attribute [-Wthread-safety-attributes]"} | ||
Line 7,948: | Line 7,948: | ||
[h]=q, | [h]=q, | ||
[i]={"8d11c797b2b6",1334851844,hc,hc}, | [i]={"8d11c797b2b6",1334851844,hc,hc}, | ||
[j]={{C,490,"/// Check if passed in Decl is a pointer type.\n/// Note that this function may produce an error message.\n/// \\return true if the Decl is a pointer type; false otherwise\nstatic bool threadSafetyCheckIsPointer(Sema &S, const Decl *D, const ParsedAttr &AL) {\n S.Diag(AL.getLoc(), diag::warn_thread_attribute_decl_not_pointer) << AL << QT;"}}, | [j]={{C,490,"/// Check if passed in Decl is a pointer type.\n/// Note that this function may produce an error message.\n/// \\return true if the Decl is a pointer type; false otherwise\nstatic bool threadSafetyCheckIsPointer(Sema &S, const Decl *D, const ParsedAttr &AL) {\n // ...\n S.Diag(AL.getLoc(), diag::warn_thread_attribute_decl_not_pointer) << AL << QT;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-thread-safety-parsing.cpp"]={"clang/test/SemaCXX/warn-thread-safety-parsing.cpp:184:20: warning: \'pt_guarded_var\' only applies to pointer types; type here is \'int\' [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:190:20: warning: \'pt_guarded_var\' only applies to pointer types; type here is \'int\' [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:389:18: warning: \'pt_guarded_by\' only applies to pointer types; type here is \'int\' [-Wthread-safety-attributes]"} | ["clang/test/SemaCXX/warn-thread-safety-parsing.cpp"]={"clang/test/SemaCXX/warn-thread-safety-parsing.cpp:184:20: warning: \'pt_guarded_var\' only applies to pointer types; type here is \'int\' [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:190:20: warning: \'pt_guarded_var\' only applies to pointer types; type here is \'int\' [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:389:18: warning: \'pt_guarded_by\' only applies to pointer types; type here is \'int\' [-Wthread-safety-attributes]"} | ||
Line 7,966: | Line 7,966: | ||
[h]=q, | [h]=q, | ||
[i]={"8d11c797b2b6",1334851844,hc,hc}, | [i]={"8d11c797b2b6",1334851844,hc,hc}, | ||
[j]={{C,637,"/// Checks that all attribute arguments, starting from Sidx, resolve to\n/// a capability object.\n/// \\param Sidx The attribute argument index to start checking with.\n/// \\param ParamIdxOk Whether an argument can be indexing into a function\n/// parameter list.\nstatic void checkAttrArgsAreCapabilityObjs(Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl<Expr *> &Args, unsigned Sidx = 0, bool ParamIdxOk = false) {\n for (unsigned Idx = Sidx; Idx < AL.getNumArgs(); ++Idx) {\n if (const auto *StrLit = dyn_cast<StringLiteral>(ArgExp)) {\n S.Diag(AL.getLoc(), diag::warn_thread_attribute_ignored) << AL;"}}, | [j]={{C,637,"/// Checks that all attribute arguments, starting from Sidx, resolve to\n/// a capability object.\n/// \\param Sidx The attribute argument index to start checking with.\n/// \\param ParamIdxOk Whether an argument can be indexing into a function\n/// parameter list.\nstatic void checkAttrArgsAreCapabilityObjs(Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl<Expr *> &Args, unsigned Sidx = 0, bool ParamIdxOk = false) {\n // ...\n for (unsigned Idx = Sidx; Idx < AL.getNumArgs(); ++Idx) {\n // ...\n if (const auto *StrLit = dyn_cast<StringLiteral>(ArgExp)) {\n // ...\n S.Diag(AL.getLoc(), diag::warn_thread_attribute_ignored) << AL;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-thread-safety-parsing.cpp"]={"clang/test/SemaCXX/warn-thread-safety-parsing.cpp:312:18: warning: ignoring \'guarded_by\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:360:22: warning: ignoring \'guarded_by\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:431:25: warning: ignoring \'pt_guarded_by\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:492:24: warning: ignoring \'acquired_after\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:555:24: warning: ignoring \'acquired_before\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:621:26: warning: ignoring \'exclusive_lock_function\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:694:26: warning: ignoring \'shared_lock_function\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:780:26: warning: ignoring \'exclusive_trylock_function\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:858:26: warning: ignoring \'shared_trylock_function\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:925:25: warning: ignoring \'unlock_function\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1001:25: warning: ignoring \'lock_returned\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1068:25: warning: ignoring \'locks_excluded\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1135:26: warning: ignoring \'exclusive_locks_required\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1203:26: warning: ignoring \'shared_locks_required\' attribute because its argument is invalid [-Wthread-safety-attributes]"} | ["clang/test/SemaCXX/warn-thread-safety-parsing.cpp"]={"clang/test/SemaCXX/warn-thread-safety-parsing.cpp:312:18: warning: ignoring \'guarded_by\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:360:22: warning: ignoring \'guarded_by\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:431:25: warning: ignoring \'pt_guarded_by\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:492:24: warning: ignoring \'acquired_after\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:555:24: warning: ignoring \'acquired_before\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:621:26: warning: ignoring \'exclusive_lock_function\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:694:26: warning: ignoring \'shared_lock_function\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:780:26: warning: ignoring \'exclusive_trylock_function\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:858:26: warning: ignoring \'shared_trylock_function\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:925:25: warning: ignoring \'unlock_function\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1001:25: warning: ignoring \'lock_returned\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1068:25: warning: ignoring \'locks_excluded\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1135:26: warning: ignoring \'exclusive_locks_required\' attribute because its argument is invalid [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1203:26: warning: ignoring \'shared_locks_required\' attribute because its argument is invalid [-Wthread-safety-attributes]"} | ||
Line 7,984: | Line 7,984: | ||
[h]=q, | [h]=q, | ||
[i]={"7ba1ab71ecf4",1537403967,"Thread Safety Analysis: warnings for attributes without arguments","Thread Safety Analysis: warnings for attributes without arguments"}, | [i]={"7ba1ab71ecf4",1537403967,"Thread Safety Analysis: warnings for attributes without arguments","Thread Safety Analysis: warnings for attributes without arguments"}, | ||
[j]={{C,609,"/// Checks that all attribute arguments, starting from Sidx, resolve to\n/// a capability object.\n/// \\param Sidx The attribute argument index to start checking with.\n/// \\param ParamIdxOk Whether an argument can be indexing into a function\n/// parameter list.\nstatic void checkAttrArgsAreCapabilityObjs(Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl<Expr *> &Args, unsigned Sidx = 0, bool ParamIdxOk = false) {\n if (Sidx == AL.getNumArgs()) {\n if (MD && !MD->isStatic()) {\n // FIXME -- need to check this again on template instantiation\n if (!checkRecordDeclForAttr<CapabilityAttr>(RD) && !checkRecordDeclForAttr<ScopedLockableAttr>(RD))\n S.Diag(AL.getLoc(), diag::warn_thread_attribute_not_on_capability_member) << AL << MD->getParent();"}}, | [j]={{C,609,"/// Checks that all attribute arguments, starting from Sidx, resolve to\n/// a capability object.\n/// \\param Sidx The attribute argument index to start checking with.\n/// \\param ParamIdxOk Whether an argument can be indexing into a function\n/// parameter list.\nstatic void checkAttrArgsAreCapabilityObjs(Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl<Expr *> &Args, unsigned Sidx = 0, bool ParamIdxOk = false) {\n if (Sidx == AL.getNumArgs()) {\n // ...\n if (MD && !MD->isStatic()) {\n // ...\n // FIXME -- need to check this again on template instantiation\n if (!checkRecordDeclForAttr<CapabilityAttr>(RD) && !checkRecordDeclForAttr<ScopedLockableAttr>(RD))\n S.Diag(AL.getLoc(), diag::warn_thread_attribute_not_on_capability_member) << AL << MD->getParent();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-thread-safety-parsing.cpp"]={"clang/test/SemaCXX/warn-thread-safety-parsing.cpp:594:22: warning: \'exclusive_lock_function\' attribute without capability arguments refers to \'this\', but \'ElfFoo\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:670:22: warning: \'shared_lock_function\' attribute without capability arguments refers to \'this\', but \'SlfFoo\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:746:22: warning: \'exclusive_trylock_function\' attribute without capability arguments refers to \'this\', but \'EtfFoo\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:827:22: warning: \'shared_trylock_function\' attribute without capability arguments refers to \'this\', but \'StfFoo\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:898:22: warning: \'unlock_function\' attribute without capability arguments refers to \'this\', but \'UfFoo\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1274:25: warning: \'unlock_function\' attribute without capability arguments refers to \'this\', but \'NonSLTemplateClass\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1294:17: warning: \'unlock_function\' attribute without capability arguments refers to \'this\', but \'SLDerived2\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1299:17: warning: \'unlock_function\' attribute without capability arguments refers to \'this\', but \'SLDerived3\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]"} | ["clang/test/SemaCXX/warn-thread-safety-parsing.cpp"]={"clang/test/SemaCXX/warn-thread-safety-parsing.cpp:594:22: warning: \'exclusive_lock_function\' attribute without capability arguments refers to \'this\', but \'ElfFoo\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:670:22: warning: \'shared_lock_function\' attribute without capability arguments refers to \'this\', but \'SlfFoo\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:746:22: warning: \'exclusive_trylock_function\' attribute without capability arguments refers to \'this\', but \'EtfFoo\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:827:22: warning: \'shared_trylock_function\' attribute without capability arguments refers to \'this\', but \'StfFoo\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:898:22: warning: \'unlock_function\' attribute without capability arguments refers to \'this\', but \'UfFoo\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1274:25: warning: \'unlock_function\' attribute without capability arguments refers to \'this\', but \'NonSLTemplateClass\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1294:17: warning: \'unlock_function\' attribute without capability arguments refers to \'this\', but \'SLDerived2\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]","clang/test/SemaCXX/warn-thread-safety-parsing.cpp:1299:17: warning: \'unlock_function\' attribute without capability arguments refers to \'this\', but \'SLDerived3\' isn\'t annotated with \'capability\' or \'scoped_lockable\' attribute [-Wthread-safety-attributes]"} | ||
Line 8,002: | Line 8,002: | ||
[h]=q, | [h]=q, | ||
[i]={"7ba1ab71ecf4",1537403967,"Thread Safety Analysis: warnings for attributes without arguments","Thread Safety Analysis: warnings for attributes without arguments"}, | [i]={"7ba1ab71ecf4",1537403967,"Thread Safety Analysis: warnings for attributes without arguments","Thread Safety Analysis: warnings for attributes without arguments"}, | ||
[j]={{C,612,"/// Checks that all attribute arguments, starting from Sidx, resolve to\n/// a capability object.\n/// \\param Sidx The attribute argument index to start checking with.\n/// \\param ParamIdxOk Whether an argument can be indexing into a function\n/// parameter list.\nstatic void checkAttrArgsAreCapabilityObjs(Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl<Expr *> &Args, unsigned Sidx = 0, bool ParamIdxOk = false) {\n if (Sidx == AL.getNumArgs()) {\n if (MD && !MD->isStatic()) {\n } else {\n S.Diag(AL.getLoc(), diag::warn_thread_attribute_not_on_non_static_member) << AL;"}}, | [j]={{C,612,"/// Checks that all attribute arguments, starting from Sidx, resolve to\n/// a capability object.\n/// \\param Sidx The attribute argument index to start checking with.\n/// \\param ParamIdxOk Whether an argument can be indexing into a function\n/// parameter list.\nstatic void checkAttrArgsAreCapabilityObjs(Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl<Expr *> &Args, unsigned Sidx = 0, bool ParamIdxOk = false) {\n if (Sidx == AL.getNumArgs()) {\n // ...\n if (MD && !MD->isStatic()) {\n // ...\n } else {\n S.Diag(AL.getLoc(), diag::warn_thread_attribute_not_on_non_static_member) << AL;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-capabilities.c"]={"clang/test/Sema/attr-capabilities.c:40:33: warning: \'assert_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:41:34: warning: \'assert_shared_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:46:34: warning: \'acquire_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:47:34: warning: \'acquire_shared_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:53:34: warning: \'release_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:54:34: warning: \'release_shared_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:55:34: warning: \'release_generic_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:57:34: warning: \'try_acquire_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:58:34: warning: \'try_acquire_shared_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]"} | ["clang/test/Sema/attr-capabilities.c"]={"clang/test/Sema/attr-capabilities.c:40:33: warning: \'assert_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:41:34: warning: \'assert_shared_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:46:34: warning: \'acquire_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:47:34: warning: \'acquire_shared_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:53:34: warning: \'release_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:54:34: warning: \'release_shared_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:55:34: warning: \'release_generic_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:57:34: warning: \'try_acquire_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]","clang/test/Sema/attr-capabilities.c:58:34: warning: \'try_acquire_shared_capability\' attribute without capability arguments can only be applied to non-static methods of a class [-Wthread-safety-attributes]"} | ||
Line 8,020: | Line 8,020: | ||
[h]=q, | [h]=q, | ||
[i]={"8edae13dd069",1354665975,"Thread safety analysis: Add a new \"beta\" warning flag: -Wthread-safety-beta.","Thread safety analysis: Add a new \"beta\" warning flag: -Wthread-safety-beta."}, | [i]={"8edae13dd069",1354665975,"Thread safety analysis: Add a new \"beta\" warning flag: -Wthread-safety-beta.","Thread safety analysis: Add a new \"beta\" warning flag: -Wthread-safety-beta."}, | ||
[j]={{E,2612,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n // Check for thread safety violations\n if (P.enableThreadSafetyAnalysis) {\n if (!Diags.isIgnored(diag::warn_thread_safety_beta, D->getBeginLoc()))"}} | [j]={{E,2612,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n // ...\n // Check for thread safety violations\n if (P.enableThreadSafetyAnalysis) {\n // ...\n if (!Diags.isIgnored(diag::warn_thread_safety_beta, D->getBeginLoc()))"}} | ||
}, | }, | ||
["warn_thread_safety_verbose"]={ | ["warn_thread_safety_verbose"]={ | ||
Line 8,035: | Line 8,035: | ||
[h]=q, | [h]=q, | ||
[i]={"eb0ea5f40a48",1408052415,"Thread safety analysis: add -Wthread-safety-verbose flag, which adds additional notes that are helpf...","Thread safety analysis: add -Wthread-safety-verbose flag, which adds additional notes that are helpful when compiling statistics on thread safety warnings."}, | [i]={"eb0ea5f40a48",1408052415,"Thread safety analysis: add -Wthread-safety-verbose flag, which adds additional notes that are helpf...","Thread safety analysis: add -Wthread-safety-verbose flag, which adds additional notes that are helpful when compiling statistics on thread safety warnings."}, | ||
[j]={{E,2614,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n // Check for thread safety violations\n if (P.enableThreadSafetyAnalysis) {\n if (!Diags.isIgnored(diag::warn_thread_safety_verbose, D->getBeginLoc()))"}} | [j]={{E,2614,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n // ...\n // Check for thread safety violations\n if (P.enableThreadSafetyAnalysis) {\n // ...\n if (!Diags.isIgnored(diag::warn_thread_safety_verbose, D->getBeginLoc()))"}} | ||
}, | }, | ||
["warn_throw_in_noexcept_func"]={ | ["warn_throw_in_noexcept_func"]={ | ||
Line 8,049: | Line 8,049: | ||
[h]=q, | [h]=q, | ||
[i]={"89fe9c269a22",1498249339,"Emit warning when throw exception in destruct or dealloc functions which has a ","Emit warning when throw exception in destruct or dealloc functions which has a "}, | [i]={"89fe9c269a22",1498249339,"Emit warning when throw exception in destruct or dealloc functions which has a ","Emit warning when throw exception in destruct or dealloc functions which has a "}, | ||
[j]={{E,358,"static void EmitDiagForCXXThrowInNonThrowingFunc(Sema &S, SourceLocation OpLoc, const FunctionDecl *FD) {\n if (!S.getSourceManager().isInSystemHeader(OpLoc) && FD->getTypeSourceInfo()) {\n S.Diag(OpLoc, diag::warn_throw_in_noexcept_func) << FD;"},{E,2688,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n if (!Diags.isIgnored(diag::warn_throw_in_noexcept_func, D->getBeginLoc()))"}}, | [j]={{E,358,"static void EmitDiagForCXXThrowInNonThrowingFunc(Sema &S, SourceLocation OpLoc, const FunctionDecl *FD) {\n if (!S.getSourceManager().isInSystemHeader(OpLoc) && FD->getTypeSourceInfo()) {\n S.Diag(OpLoc, diag::warn_throw_in_noexcept_func) << FD;"},{E,2688,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n // ...\n if (!Diags.isIgnored(diag::warn_throw_in_noexcept_func, D->getBeginLoc()))"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/except/except.spec/p11.cpp"]={"clang/test/CXX/except/except.spec/p11.cpp:5:3: warning: \'f\' has a non-throwing exception specification but can still throw [-Wexceptions]","clang/test/CXX/except/except.spec/p11.cpp:8:3: warning: \'g\' has a non-throwing exception specification but can still throw [-Wexceptions]"} | ["clang/test/CXX/except/except.spec/p11.cpp"]={"clang/test/CXX/except/except.spec/p11.cpp:5:3: warning: \'f\' has a non-throwing exception specification but can still throw [-Wexceptions]","clang/test/CXX/except/except.spec/p11.cpp:8:3: warning: \'g\' has a non-throwing exception specification but can still throw [-Wexceptions]"} | ||
Line 8,066: | Line 8,066: | ||
[h]=q, | [h]=q, | ||
[i]={"c39a243da651",1557454597,"Assume `__cxa_allocate_exception` returns an under-aligned memory on","Assume `__cxa_allocate_exception` returns an under-aligned memory on"}, | [i]={"c39a243da651",1557454597,"Assume `__cxa_allocate_exception` returns an under-aligned memory on","Assume `__cxa_allocate_exception` returns an under-aligned memory on"}, | ||
[j]={{kc,1091,"/// CheckCXXThrowOperand - Validate the operand of a throw.\nbool Sema::CheckCXXThrowOperand(SourceLocation ThrowLoc, QualType ExceptionObjectTy, Expr *E) {\n // Under the Itanium C++ ABI, memory for the exception object is allocated by\n // the runtime with no ability for the compiler to request additional\n // alignment. Warn if the exception type requires alignment beyond the minimum\n // guaranteed by the target C++ runtime.\n if (Context.getTargetInfo().getCXXABI().isItaniumFamily()) {\n if (ExnObjAlign < TypeAlign) {\n Diag(ThrowLoc, diag::warn_throw_underaligned_obj);"}}, | [j]={{kc,1091,"/// CheckCXXThrowOperand - Validate the operand of a throw.\nbool Sema::CheckCXXThrowOperand(SourceLocation ThrowLoc, QualType ExceptionObjectTy, Expr *E) {\n // ...\n // Under the Itanium C++ ABI, memory for the exception object is allocated by\n // the runtime with no ability for the compiler to request additional\n // alignment. Warn if the exception type requires alignment beyond the minimum\n // guaranteed by the target C++ runtime.\n if (Context.getTargetInfo().getCXXABI().isItaniumFamily()) {\n // ...\n if (ExnObjAlign < TypeAlign) {\n Diag(ThrowLoc, diag::warn_throw_underaligned_obj);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-overaligned-type-thrown.cpp"]={"clang/test/SemaCXX/warn-overaligned-type-thrown.cpp:53:3: warning: underaligned exception object thrown [-Wunderaligned-exception-object]"} | ["clang/test/SemaCXX/warn-overaligned-type-thrown.cpp"]={"clang/test/SemaCXX/warn-overaligned-type-thrown.cpp:53:3: warning: underaligned exception object thrown [-Wunderaligned-exception-object]"} | ||
Line 8,083: | Line 8,083: | ||
[h]=q, | [h]=q, | ||
[i]={"0cfbdab0cf8a",1241043376,"Implement semantic analysis for transparent unions. This is largely","Implement semantic analysis for transparent unions. This is largely"}, | [i]={"0cfbdab0cf8a",1241043376,"Implement semantic analysis for transparent unions. This is largely","Implement semantic analysis for transparent unions. This is largely"}, | ||
[j]={{C,4266,"static void handleTransparentUnionAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n for (; Field != FieldEnd; ++Field) {\n // FIXME: this isn\'t fully correct; we also need to test whether the\n // members of the union would all have the same calling convention as the\n // first member of the union. Checking just the size and alignment isn\'t\n // sufficient (consider structs passed on the stack instead of in registers\n // as an example).\n if (S.Context.getTypeSize(FieldType) != FirstSize || S.Context.getTypeAlign(FieldType) > FirstAlign) {\n S.Diag(Field->getLocation(), diag::warn_transparent_union_attribute_field_size_align) << isSize << *Field << FieldBits;"}}, | [j]={{C,4266,"static void handleTransparentUnionAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n for (; Field != FieldEnd; ++Field) {\n // ...\n // FIXME: this isn\'t fully correct; we also need to test whether the\n // members of the union would all have the same calling convention as the\n // first member of the union. Checking just the size and alignment isn\'t\n // sufficient (consider structs passed on the stack instead of in registers\n // as an example).\n if (S.Context.getTypeSize(FieldType) != FirstSize || S.Context.getTypeAlign(FieldType) > FirstAlign) {\n // ...\n S.Diag(Field->getLocation(), diag::warn_transparent_union_attribute_field_size_align) << isSize << *Field << FieldBits;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/transparent-union.c"]={"clang/test/Sema/transparent-union.c:83:19: warning: alignment of field \'s8\' (64 bits) does not match the alignment of the first field in transparent union; transparent_union attribute ignored [-Wignored-attributes]","clang/test/Sema/transparent-union.c:88:19: warning: alignment of field \'s8\' (64 bits) does not match the alignment of the first field in transparent union; transparent_union attribute ignored [-Wignored-attributes]","clang/test/Sema/transparent-union.c:93:7: warning: size of field \'i\' (32 bits) does not match the size of the first field in transparent union; transparent_union attribute ignored [-Wignored-attributes]","clang/test/Sema/transparent-union.c:98:7: warning: size of field \'i\' (32 bits) does not match the size of the first field in transparent union; transparent_union attribute ignored [-Wignored-attributes]","clang/test/Sema/transparent-union.c:127:3: warning: alignment of field \'\' (64 bits) does not match the alignment of the first field in transparent union; transparent_union attribute ignored [-Wignored-attributes]"} | ["clang/test/Sema/transparent-union.c"]={"clang/test/Sema/transparent-union.c:83:19: warning: alignment of field \'s8\' (64 bits) does not match the alignment of the first field in transparent union; transparent_union attribute ignored [-Wignored-attributes]","clang/test/Sema/transparent-union.c:88:19: warning: alignment of field \'s8\' (64 bits) does not match the alignment of the first field in transparent union; transparent_union attribute ignored [-Wignored-attributes]","clang/test/Sema/transparent-union.c:93:7: warning: size of field \'i\' (32 bits) does not match the size of the first field in transparent union; transparent_union attribute ignored [-Wignored-attributes]","clang/test/Sema/transparent-union.c:98:7: warning: size of field \'i\' (32 bits) does not match the size of the first field in transparent union; transparent_union attribute ignored [-Wignored-attributes]","clang/test/Sema/transparent-union.c:127:3: warning: alignment of field \'\' (64 bits) does not match the alignment of the first field in transparent union; transparent_union attribute ignored [-Wignored-attributes]"} | ||
Line 8,100: | Line 8,100: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{C,4241,"static void handleTransparentUnionAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (FirstType->hasFloatingRepresentation() || FirstType->isVectorType()) {\n S.Diag(FirstField->getLocation(), diag::warn_transparent_union_attribute_floating) << FirstType->isVectorType() << FirstType;"}}, | [j]={{C,4241,"static void handleTransparentUnionAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n if (FirstType->hasFloatingRepresentation() || FirstType->isVectorType()) {\n S.Diag(FirstField->getLocation(), diag::warn_transparent_union_attribute_floating) << FirstType->isVectorType() << FirstType;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/transparent-union.c"]={"clang/test/Sema/transparent-union.c:102:9: warning: first field of a transparent union cannot have floating point type \'float\'; transparent_union attribute ignored [-Wignored-attributes]","clang/test/Sema/transparent-union.c:109:8: warning: first field of a transparent union cannot have vector type \'int4\' (vector of 4 \'int\' values); transparent_union attribute ignored [-Wignored-attributes]"} | ["clang/test/Sema/transparent-union.c"]={"clang/test/Sema/transparent-union.c:102:9: warning: first field of a transparent union cannot have floating point type \'float\'; transparent_union attribute ignored [-Wignored-attributes]","clang/test/Sema/transparent-union.c:109:8: warning: first field of a transparent union cannot have vector type \'int4\' (vector of 4 \'int\' values); transparent_union attribute ignored [-Wignored-attributes]"} | ||
Line 8,117: | Line 8,117: | ||
[h]=q, | [h]=q, | ||
[i]={"0cfbdab0cf8a",1241043376,"Implement semantic analysis for transparent unions. This is largely","Implement semantic analysis for transparent unions. This is largely"}, | [i]={"0cfbdab0cf8a",1241043376,"Implement semantic analysis for transparent unions. This is largely","Implement semantic analysis for transparent unions. This is largely"}, | ||
[j]={{C,4226,"static void handleTransparentUnionAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (!RD->isCompleteDefinition()) {\n if (!RD->isBeingDefined())\n S.Diag(AL.getLoc(), diag::warn_transparent_union_attribute_not_definition);"}} | [j]={{C,4226,"static void handleTransparentUnionAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n if (!RD->isCompleteDefinition()) {\n if (!RD->isBeingDefined())\n S.Diag(AL.getLoc(), diag::warn_transparent_union_attribute_not_definition);"}} | ||
}, | }, | ||
["warn_transparent_union_attribute_zero_fields"]={ | ["warn_transparent_union_attribute_zero_fields"]={ | ||
Line 8,131: | Line 8,131: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{C,4233,"static void handleTransparentUnionAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (Field == FieldEnd) {\n S.Diag(AL.getLoc(), diag::warn_transparent_union_attribute_zero_fields);"}}, | [j]={{C,4233,"static void handleTransparentUnionAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n if (Field == FieldEnd) {\n S.Diag(AL.getLoc(), diag::warn_transparent_union_attribute_zero_fields);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/transparent-union.c"]={"clang/test/Sema/transparent-union.c:105:38: warning: transparent union definition must contain at least one field; transparent_union attribute ignored [-Wignored-attributes]"} | ["clang/test/Sema/transparent-union.c"]={"clang/test/Sema/transparent-union.c:105:38: warning: transparent union definition must contain at least one field; transparent_union attribute ignored [-Wignored-attributes]"} | ||
Line 8,148: | Line 8,148: | ||
[h]=ac, | [h]=ac, | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{C,8783,"/// 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 default:\n if (AL.isTypeAttr()) {\n // According to the C and C++ standards, we should never see a\n // [[]] type attribute on a declaration. However, we have in the past\n // allowed some type attributes to \"slide\" to the `DeclSpec`, so we need\n // to continue to support this legacy behavior. We only do this, however,\n // if\n // - we actually have a `DeclSpec`, i.e. if we\'re looking at a\n // `DeclaratorDecl`, or\n // - we are looking at an alias-declaration, where historically we have\n // allowed type attributes after the identifier to slide to the type.\n if (AL.slidesFromDeclToDeclSpecLegacyBehavior() && isa<DeclaratorDecl, TypeAliasDecl>(D)) {\n // Suggest moving the attribute to the type instead, but only for our\n // own vendor attributes; moving other vendors\' attributes might hurt\n // portability.\n if (AL.isClangScope()) {\n S.Diag(AL.getLoc(), diag::warn_type_attribute_deprecated_on_decl) << AL << D->getLocation();"},{T,1837,"#include \"clang/Basic/OpenCLImageTypes.def\"\n // Apply any type attributes from the decl spec. This may cause the\n // list of type attributes to be temporarily saved while the type\n // attributes are pushed around.\n // pipe attributes will be handled later ( at GetFullTypeForDeclarator )\n if (!DS.isTypeSpecPipe()) {\n for (ParsedAttr &AL : declarator.getDeclarationAttributes()) {\n if (AL.slidesFromDeclToDeclSpecLegacyBehavior()) {\n // For standard syntax attributes, which would normally appertain to the\n // declaration here, suggest moving them to the type instead. But only\n // do this for our own vendor attributes; moving other vendors\'\n // attributes might hurt portability.\n // There\'s one special case that we need to deal with here: The\n // `MatrixType` attribute may only be used in a typedef declaration. If\n // it\'s being used anywhere else, don\'t output the warning as\n // ProcessDeclAttributes() will output an error anyway.\n if (AL.isStandardAttributeSyntax() && AL.isClangScope() && !(AL.getKind() == ParsedAttr::AT_MatrixType && DS.getStorageClassSpec() != DeclSpec::SCS_typedef)) {\n S.Diag(AL.getLoc(), diag::warn_type_attribute_deprecated_on_decl) << AL;"}}, | [j]={{C,8783,"/// 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 // ...\n default:\n // ...\n if (AL.isTypeAttr()) {\n // ...\n // According to the C and C++ standards, we should never see a\n // [[]] type attribute on a declaration. However, we have in the past\n // allowed some type attributes to \"slide\" to the `DeclSpec`, so we need\n // to continue to support this legacy behavior. We only do this, however,\n // if\n // - we actually have a `DeclSpec`, i.e. if we\'re looking at a\n // `DeclaratorDecl`, or\n // - we are looking at an alias-declaration, where historically we have\n // allowed type attributes after the identifier to slide to the type.\n if (AL.slidesFromDeclToDeclSpecLegacyBehavior() && isa<DeclaratorDecl, TypeAliasDecl>(D)) {\n // Suggest moving the attribute to the type instead, but only for our\n // own vendor attributes; moving other vendors\' attributes might hurt\n // portability.\n if (AL.isClangScope()) {\n S.Diag(AL.getLoc(), diag::warn_type_attribute_deprecated_on_decl) << AL << D->getLocation();"},{T,1837,"#include \"clang/Basic/OpenCLImageTypes.def\"\n // ...\n // Apply any type attributes from the decl spec. This may cause the\n // list of type attributes to be temporarily saved while the type\n // attributes are pushed around.\n // pipe attributes will be handled later ( at GetFullTypeForDeclarator )\n if (!DS.isTypeSpecPipe()) {\n // ...\n for (ParsedAttr &AL : declarator.getDeclarationAttributes()) {\n if (AL.slidesFromDeclToDeclSpecLegacyBehavior()) {\n // ...\n // For standard syntax attributes, which would normally appertain to the\n // declaration here, suggest moving them to the type instead. But only\n // do this for our own vendor attributes; moving other vendors\'\n // attributes might hurt portability.\n // There\'s one special case that we need to deal with here: The\n // `MatrixType` attribute may only be used in a typedef declaration. If\n // it\'s being used anywhere else, don\'t output the warning as\n // ProcessDeclAttributes() will output an error anyway.\n if (AL.isStandardAttributeSyntax() && AL.isClangScope() && !(AL.getKind() == ParsedAttr::AT_MatrixType && DS.getStorageClassSpec() != DeclSpec::SCS_typedef)) {\n S.Diag(AL.getLoc(), diag::warn_type_attribute_deprecated_on_decl) << AL;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/attr-objc-gc.m"]={"clang/test/SemaObjC/attr-objc-gc.m:22:3: warning: applying attribute \'objc_gc\' to a declaration is deprecated; apply it to the type instead [-Wdeprecated-attributes]","clang/test/SemaObjC/attr-objc-gc.m:23:15: warning: applying attribute \'objc_gc\' to a declaration is deprecated; apply it to the type instead [-Wdeprecated-attributes]"} | ["clang/test/SemaObjC/attr-objc-gc.m"]={"clang/test/SemaObjC/attr-objc-gc.m:22:3: warning: applying attribute \'objc_gc\' to a declaration is deprecated; apply it to the type instead [-Wdeprecated-attributes]","clang/test/SemaObjC/attr-objc-gc.m:23:15: warning: applying attribute \'objc_gc\' to a declaration is deprecated; apply it to the type instead [-Wdeprecated-attributes]"} | ||
Line 8,165: | Line 8,165: | ||
[h]=q, | [h]=q, | ||
[i]={"db6d85ef9272",1374260024,"Replace some existing type attribute diagnostics with a","Replace some existing type attribute diagnostics with a"}, | [i]={"db6d85ef9272",1374260024,"Replace some existing type attribute diagnostics with a","Replace some existing type attribute diagnostics with a"}, | ||
[j]={{T,109,"/// diagnoseBadTypeAttribute - Diagnoses a type attribute which\n/// doesn\'t apply to the given type.\nstatic void diagnoseBadTypeAttribute(Sema &S, const ParsedAttr &attr, QualType type) {\n S.Diag(loc, attr.isRegularKeywordAttribute() ? diag::err_type_attribute_wrong_type : diag::warn_type_attribute_wrong_type) << name << WhichType << type;"},{T,7004,"/// handleObjCOwnershipTypeAttr - Process an objc_ownership\n/// attribute on the specified type.\n///\n/// Returns \'true\' if the attribute was handled.\nstatic bool handleObjCOwnershipTypeAttr(TypeProcessingState &state, ParsedAttr &attr, QualType &type) {\n if (NonObjCPointer) {\n S.Diag(AttrLoc, diag::warn_type_attribute_wrong_type) << name << TDS_ObjCObjOrBlock << type;"}}, | [j]={{T,109,"/// diagnoseBadTypeAttribute - Diagnoses a type attribute which\n/// doesn\'t apply to the given type.\nstatic void diagnoseBadTypeAttribute(Sema &S, const ParsedAttr &attr, QualType type) {\n // ...\n S.Diag(loc, attr.isRegularKeywordAttribute() ? diag::err_type_attribute_wrong_type : diag::warn_type_attribute_wrong_type) << name << WhichType << type;"},{T,7004,"/// handleObjCOwnershipTypeAttr - Process an objc_ownership\n/// attribute on the specified type.\n///\n/// Returns \'true\' if the attribute was handled.\nstatic bool handleObjCOwnershipTypeAttr(TypeProcessingState &state, ParsedAttr &attr, QualType &type) {\n // ...\n if (NonObjCPointer) {\n // ...\n S.Diag(AttrLoc, diag::warn_type_attribute_wrong_type) << name << TDS_ObjCObjOrBlock << type;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/stdcall-fastcall-x64.c"]={"clang/test/Sema/stdcall-fastcall-x64.c:4:20: warning: \'stdcall\' only applies to function types; type here is \'int\' [-Wignored-attributes]","clang/test/Sema/stdcall-fastcall-x64.c:5:20: warning: \'fastcall\' only applies to function types; type here is \'int\' [-Wignored-attributes]"} | ["clang/test/Sema/stdcall-fastcall-x64.c"]={"clang/test/Sema/stdcall-fastcall-x64.c:4:20: warning: \'stdcall\' only applies to function types; type here is \'int\' [-Wignored-attributes]","clang/test/Sema/stdcall-fastcall-x64.c:5:20: warning: \'fastcall\' only applies to function types; type here is \'int\' [-Wignored-attributes]"} | ||
Line 8,182: | Line 8,182: | ||
[h]=q, | [h]=q, | ||
[i]={"e4a5a90e8d6b",1345162118,dd,dd}, | [i]={"e4a5a90e8d6b",1345162118,dd,dd}, | ||
[j]={{x,18427,"void Sema::CheckArgumentWithTypeTag(const ArgumentWithTypeTagAttr *Attr, const ArrayRef<const Expr *> ExprArgs, SourceLocation CallSiteLoc) {\n if (TypeInfo.MustBeNull) {\n // Type tag with matching void type requires a null pointer.\n if (!ArgumentExpr->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull)) {\n Diag(ArgumentExpr->getExprLoc(), diag::warn_type_safety_null_pointer_required) << ArgumentKind->getName() << ArgumentExpr->getSourceRange() << TypeTagExpr->getSourceRange();"}}, | [j]={{x,18427,"void Sema::CheckArgumentWithTypeTag(const ArgumentWithTypeTagAttr *Attr, const ArrayRef<const Expr *> ExprArgs, SourceLocation CallSiteLoc) {\n // ...\n if (TypeInfo.MustBeNull) {\n // Type tag with matching void type requires a null pointer.\n if (!ArgumentExpr->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull)) {\n Diag(ArgumentExpr->getExprLoc(), diag::warn_type_safety_null_pointer_required) << ArgumentKind->getName() << ArgumentExpr->getSourceRange() << TypeTagExpr->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-type-safety-mpi-hdf5.c"]={"clang/test/Sema/warn-type-safety-mpi-hdf5.c:191:14: warning: specified mpi type tag requires a null pointer [-Wtype-safety]"} | ["clang/test/Sema/warn-type-safety-mpi-hdf5.c"]={"clang/test/Sema/warn-type-safety-mpi-hdf5.c:191:14: warning: specified mpi type tag requires a null pointer [-Wtype-safety]"} | ||
Line 8,199: | Line 8,199: | ||
[h]=q, | [h]=q, | ||
[i]={"e4a5a90e8d6b",1345162118,dd,dd}, | [i]={"e4a5a90e8d6b",1345162118,dd,dd}, | ||
[j]={{x,18462,"void Sema::CheckArgumentWithTypeTag(const ArgumentWithTypeTagAttr *Attr, const ArrayRef<const Expr *> ExprArgs, SourceLocation CallSiteLoc) {\n if (mismatch)\n Diag(ArgumentExpr->getExprLoc(), diag::warn_type_safety_type_mismatch) << ArgumentType << ArgumentKind << TypeInfo.LayoutCompatible << RequiredType << ArgumentExpr->getSourceRange() << TypeTagExpr->getSourceRange();"}}, | [j]={{x,18462,"void Sema::CheckArgumentWithTypeTag(const ArgumentWithTypeTagAttr *Attr, const ArrayRef<const Expr *> ExprArgs, SourceLocation CallSiteLoc) {\n // ...\n if (mismatch)\n Diag(ArgumentExpr->getExprLoc(), diag::warn_type_safety_type_mismatch) << ArgumentType << ArgumentKind << TypeInfo.LayoutCompatible << RequiredType << ArgumentExpr->getSourceRange() << TypeTagExpr->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-type-safety.cpp"]={"clang/test/Sema/warn-type-safety.cpp:54:15: warning: argument type \'int *\' doesn\'t match specified \'mpi\' type tag that requires \'float *\' [-Wtype-safety]","clang/test/Sema/warn-type-safety.cpp:60:15: warning: argument type \'int *\' doesn\'t match specified \'mpi\' type tag that requires \'float *\' [-Wtype-safety]"} | ["clang/test/Sema/warn-type-safety.cpp"]={"clang/test/Sema/warn-type-safety.cpp:54:15: warning: argument type \'int *\' doesn\'t match specified \'mpi\' type tag that requires \'float *\' [-Wtype-safety]","clang/test/Sema/warn-type-safety.cpp:60:15: warning: argument type \'int *\' doesn\'t match specified \'mpi\' type tag that requires \'float *\' [-Wtype-safety]"} | ||
Line 8,216: | Line 8,216: | ||
[h]=q, | [h]=q, | ||
[i]={"e4a5a90e8d6b",1345162118,dd,dd}, | [i]={"e4a5a90e8d6b",1345162118,dd,dd}, | ||
[j]={{x,18396,"void Sema::CheckArgumentWithTypeTag(const ArgumentWithTypeTagAttr *Attr, const ArrayRef<const Expr *> ExprArgs, SourceLocation CallSiteLoc) {\n if (!GetMatchingCType(ArgumentKind, TypeTagExpr, Context, TypeTagForDatatypeMagicValues.get(), FoundWrongKind, TypeInfo, isConstantEvaluated())) {\n if (FoundWrongKind)\n Diag(TypeTagExpr->getExprLoc(), diag::warn_type_tag_for_datatype_wrong_kind) << TypeTagExpr->getSourceRange();"}}, | [j]={{x,18396,"void Sema::CheckArgumentWithTypeTag(const ArgumentWithTypeTagAttr *Attr, const ArrayRef<const Expr *> ExprArgs, SourceLocation CallSiteLoc) {\n // ...\n if (!GetMatchingCType(ArgumentKind, TypeTagExpr, Context, TypeTagForDatatypeMagicValues.get(), FoundWrongKind, TypeInfo, isConstantEvaluated())) {\n if (FoundWrongKind)\n Diag(TypeTagExpr->getExprLoc(), diag::warn_type_tag_for_datatype_wrong_kind) << TypeTagExpr->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-type-safety.c"]={"clang/test/Sema/warn-type-safety.c:82:15: warning: this type tag was not designed to be used with this function [-Wtype-safety]","clang/test/Sema/warn-type-safety.c:84:15: warning: this type tag was not designed to be used with this function [-Wtype-safety]"} | ["clang/test/Sema/warn-type-safety.c"]={"clang/test/Sema/warn-type-safety.c:82:15: warning: this type tag was not designed to be used with this function [-Wtype-safety]","clang/test/Sema/warn-type-safety.c:84:15: warning: this type tag was not designed to be used with this function [-Wtype-safety]"} | ||
Line 8,234: | Line 8,234: | ||
[h]=q, | [h]=q, | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{A,10068,"// checkPointerTypesForAssignment - This is a very tricky routine (despite\n// being closely modeled after the C99 spec:-). The odd characteristic of this\n// routine is it effectively iqnores the qualifiers on the top level pointee.\n// This circumvents the usual type rules specified in 6.2.7p1 & 6.7.5.[1-3].\n// FIXME: add a couple examples in this comment.\nstatic Sema::AssignConvertType checkPointerTypesForAssignment(Sema &S, QualType LHSType, QualType RHSType, SourceLocation Loc) {\n if (!S.Diags.isIgnored(diag::warn_typecheck_convert_incompatible_function_pointer_strict, Loc) && RHSType->isFunctionPointerType() && LHSType->isFunctionPointerType() && !S.IsFunctionConversion(RHSType, LHSType, RHSType))"},{A,17551,"bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, SourceLocation Loc, QualType DstType, QualType SrcType, Expr *SrcExpr, AssignmentAction Action, bool *Complained) {\n case IncompatibleFunctionPointerStrict:\n DiagKind = diag::warn_typecheck_convert_incompatible_function_pointer_strict;"}}, | [j]={{A,10068,"// checkPointerTypesForAssignment - This is a very tricky routine (despite\n// being closely modeled after the C99 spec:-). The odd characteristic of this\n// routine is it effectively iqnores the qualifiers on the top level pointee.\n// This circumvents the usual type rules specified in 6.2.7p1 & 6.7.5.[1-3].\n// FIXME: add a couple examples in this comment.\nstatic Sema::AssignConvertType checkPointerTypesForAssignment(Sema &S, QualType LHSType, QualType RHSType, SourceLocation Loc) {\n // ...\n if (!S.Diags.isIgnored(diag::warn_typecheck_convert_incompatible_function_pointer_strict, Loc) && RHSType->isFunctionPointerType() && LHSType->isFunctionPointerType() && !S.IsFunctionConversion(RHSType, LHSType, RHSType))"},{A,17551,"bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, SourceLocation Loc, QualType DstType, QualType SrcType, Expr *SrcExpr, AssignmentAction Action, bool *Complained) {\n // ...\n case IncompatibleFunctionPointerStrict:\n DiagKind = diag::warn_typecheck_convert_incompatible_function_pointer_strict;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/incompatible-function-pointer-types-strict.c"]={"clang/test/Sema/incompatible-function-pointer-types-strict.c:17:6: error: incompatible function pointer types passing \'int (*)(void)\' to parameter of type \'fn_a_t\' (aka \'enum E (*)(void)\') [-Werror,-Wincompatible-function-pointer-types-strict]"} | ["clang/test/Sema/incompatible-function-pointer-types-strict.c"]={"clang/test/Sema/incompatible-function-pointer-types-strict.c:17:6: error: incompatible function pointer types passing \'int (*)(void)\' to parameter of type \'fn_a_t\' (aka \'enum E (*)(void)\') [-Werror,-Wincompatible-function-pointer-types-strict]"} | ||
Line 8,251: | Line 8,251: | ||
[h]=q, | [h]=q, | ||
[i]={"a462b4c9acd1",1431630642,"DR295: cv-qualifiers on function types are ignored in C++.","DR295: cv-qualifiers on function types are ignored in C++."}, | [i]={"a462b4c9acd1",1431630642,"DR295: cv-qualifiers on function types are ignored in C++.","DR295: cv-qualifiers on function types are ignored in C++."}, | ||
[j]={{T,1867,"#include \"clang/Basic/OpenCLImageTypes.def\"\n // Apply const/volatile/restrict qualifiers to T.\n if (unsigned TypeQuals = DS.getTypeQualifiers()) {\n // Warn about CV qualifiers on function types.\n // C99 6.7.3p8:\n // If the specification of a function type includes any type qualifiers,\n // the behavior is undefined.\n // C++11 [dcl.fct]p7:\n // The effect of a cv-qualifier-seq in a function declarator is not the\n // same as adding cv-qualification on top of the function type. In the\n // latter case, the cv-qualifiers are ignored.\n if (Result->isFunctionType()) {\n diagnoseAndRemoveTypeQualifiers(S, DS, TypeQuals, Result, DeclSpec::TQ_const | DeclSpec::TQ_volatile, S.getLangOpts().CPlusPlus ? diag::warn_typecheck_function_qualifiers_ignored : diag::warn_typecheck_function_qualifiers_unspecified);"}}, | [j]={{T,1867,"#include \"clang/Basic/OpenCLImageTypes.def\"\n // ...\n // Apply const/volatile/restrict qualifiers to T.\n if (unsigned TypeQuals = DS.getTypeQualifiers()) {\n // Warn about CV qualifiers on function types.\n // C99 6.7.3p8:\n // If the specification of a function type includes any type qualifiers,\n // the behavior is undefined.\n // C++11 [dcl.fct]p7:\n // The effect of a cv-qualifier-seq in a function declarator is not the\n // same as adding cv-qualification on top of the function type. In the\n // latter case, the cv-qualifiers are ignored.\n if (Result->isFunctionType()) {\n diagnoseAndRemoveTypeQualifiers(S, DS, TypeQuals, Result, DeclSpec::TQ_const | DeclSpec::TQ_volatile, S.getLangOpts().CPlusPlus ? diag::warn_typecheck_function_qualifiers_ignored : diag::warn_typecheck_function_qualifiers_unspecified);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/drs/dr2xx.cpp"]={"clang/test/CXX/drs/dr2xx.cpp:1094:3: warning: \'const\' qualifier on function type \'f\' (aka \'int ()\') has no effect [-Wignored-qualifiers]","clang/test/CXX/drs/dr2xx.cpp:1102:11: warning: \'const\' qualifier on function type \'U\' (aka \'int ()\') has no effect [-Wignored-qualifiers]","clang/test/CXX/drs/dr2xx.cpp:1105:11: warning: \'volatile\' qualifier on function type \'U\' (aka \'int ()\') has no effect [-Wignored-qualifiers]"} | ["clang/test/CXX/drs/dr2xx.cpp"]={"clang/test/CXX/drs/dr2xx.cpp:1094:3: warning: \'const\' qualifier on function type \'f\' (aka \'int ()\') has no effect [-Wignored-qualifiers]","clang/test/CXX/drs/dr2xx.cpp:1102:11: warning: \'const\' qualifier on function type \'U\' (aka \'int ()\') has no effect [-Wignored-qualifiers]","clang/test/CXX/drs/dr2xx.cpp:1105:11: warning: \'volatile\' qualifier on function type \'U\' (aka \'int ()\') has no effect [-Wignored-qualifiers]"} | ||
Line 8,266: | Line 8,266: | ||
[h]=q, | [h]=q, | ||
[i]={"a462b4c9acd1",1431630642,"DR295: cv-qualifiers on function types are ignored in C++.","DR295: cv-qualifiers on function types are ignored in C++."}, | [i]={"a462b4c9acd1",1431630642,"DR295: cv-qualifiers on function types are ignored in C++.","DR295: cv-qualifiers on function types are ignored in C++."}, | ||
[j]={{T,1868,"#include \"clang/Basic/OpenCLImageTypes.def\"\n // Apply const/volatile/restrict qualifiers to T.\n if (unsigned TypeQuals = DS.getTypeQualifiers()) {\n // Warn about CV qualifiers on function types.\n // C99 6.7.3p8:\n // If the specification of a function type includes any type qualifiers,\n // the behavior is undefined.\n // C++11 [dcl.fct]p7:\n // The effect of a cv-qualifier-seq in a function declarator is not the\n // same as adding cv-qualification on top of the function type. In the\n // latter case, the cv-qualifiers are ignored.\n if (Result->isFunctionType()) {\n diagnoseAndRemoveTypeQualifiers(S, DS, TypeQuals, Result, DeclSpec::TQ_const | DeclSpec::TQ_volatile, S.getLangOpts().CPlusPlus ? diag::warn_typecheck_function_qualifiers_ignored : diag::warn_typecheck_function_qualifiers_unspecified);"}}, | [j]={{T,1868,"#include \"clang/Basic/OpenCLImageTypes.def\"\n // ...\n // Apply const/volatile/restrict qualifiers to T.\n if (unsigned TypeQuals = DS.getTypeQualifiers()) {\n // Warn about CV qualifiers on function types.\n // C99 6.7.3p8:\n // If the specification of a function type includes any type qualifiers,\n // the behavior is undefined.\n // C++11 [dcl.fct]p7:\n // The effect of a cv-qualifier-seq in a function declarator is not the\n // same as adding cv-qualification on top of the function type. In the\n // latter case, the cv-qualifiers are ignored.\n if (Result->isFunctionType()) {\n diagnoseAndRemoveTypeQualifiers(S, DS, TypeQuals, Result, DeclSpec::TQ_const | DeclSpec::TQ_volatile, S.getLangOpts().CPlusPlus ? diag::warn_typecheck_function_qualifiers_ignored : diag::warn_typecheck_function_qualifiers_unspecified);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/declspec.c"]={"clang/test/Sema/declspec.c:21:1: warning: \'const\' qualifier on function type \'f\' (aka \'int (void)\') has unspecified behavior"} | ["clang/test/Sema/declspec.c"]={"clang/test/Sema/declspec.c:21:1: warning: \'const\' qualifier on function type \'f\' (aka \'int (void)\') has unspecified behavior"} | ||
Line 8,283: | Line 8,283: | ||
[h]=q, | [h]=q, | ||
[i]={Xb,1615397021,qb,qb}, | [i]={Xb,1615397021,qb,qb}, | ||
[j]={{A,13040,"// C99 6.5.8, C++ [expr.rel]\nQualType Sema::CheckCompareOperands(ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, BinaryOperatorKind Opc) {\n if (IsOrdered && LHSType->isFunctionPointerType() && RHSType->isFunctionPointerType()) {\n auto DiagID = IsError ? diag::err_typecheck_ordered_comparison_of_function_pointers : getLangOpts().CPlusPlus ? diag::warn_typecheck_ordered_comparison_of_function_pointers : diag::ext_typecheck_ordered_comparison_of_function_pointers;"}}, | [j]={{A,13040,"// C99 6.5.8, C++ [expr.rel]\nQualType Sema::CheckCompareOperands(ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, BinaryOperatorKind Opc) {\n // ...\n if (IsOrdered && LHSType->isFunctionPointerType() && RHSType->isFunctionPointerType()) {\n // ...\n auto DiagID = IsError ? diag::err_typecheck_ordered_comparison_of_function_pointers : getLangOpts().CPlusPlus ? diag::warn_typecheck_ordered_comparison_of_function_pointers : diag::ext_typecheck_ordered_comparison_of_function_pointers;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/compare-function-pointer.cpp"]={"clang/test/SemaCXX/compare-function-pointer.cpp:11:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp0_t\') [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:12:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp0_t\') [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:13:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp0_t\') [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:14:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp0_t\') [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:19:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp1_t\' (aka \'int (*)()\')) [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:21:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp1_t\' (aka \'int (*)()\')) [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:23:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp1_t\' (aka \'int (*)()\')) [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:25:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp1_t\' (aka \'int (*)()\')) [-Wordered-compare-function-pointers]"} | ["clang/test/SemaCXX/compare-function-pointer.cpp"]={"clang/test/SemaCXX/compare-function-pointer.cpp:11:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp0_t\') [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:12:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp0_t\') [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:13:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp0_t\') [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:14:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp0_t\') [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:19:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp1_t\' (aka \'int (*)()\')) [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:21:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp1_t\' (aka \'int (*)()\')) [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:23:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp1_t\' (aka \'int (*)()\')) [-Wordered-compare-function-pointers]","clang/test/SemaCXX/compare-function-pointer.cpp:25:14: warning: ordered comparison of function pointers (\'fp0_t\' (aka \'void (*)()\') and \'fp1_t\' (aka \'int (*)()\')) [-Wordered-compare-function-pointers]"} | ||
Line 8,300: | Line 8,300: | ||
[h]=q, | [h]=q, | ||
[i]={"40259443073b",1392768807,"PR13110: Add a -Wignored-qualifiers warning when ignoring a const, volatile, or","PR13110: Add a -Wignored-qualifiers warning when ignoring a const, volatile, or"}, | [i]={"40259443073b",1392768807,"PR13110: Add a -Wignored-qualifiers warning when ignoring a const, volatile, or","PR13110: Add a -Wignored-qualifiers warning when ignoring a const, volatile, or"}, | ||
[j]={{T,1885,"#include \"clang/Basic/OpenCLImageTypes.def\"\n // Apply const/volatile/restrict qualifiers to T.\n if (unsigned TypeQuals = DS.getTypeQualifiers()) {\n // C++11 [dcl.ref]p1:\n // Cv-qualified references are ill-formed except when the\n // cv-qualifiers are introduced through the use of a typedef-name\n // or decltype-specifier, in which case the cv-qualifiers are ignored.\n //\n // There don\'t appear to be any other contexts in which a cv-qualified\n // reference type could be formed, so the \'ill-formed\' clause here appears\n // to never happen.\n if (TypeQuals && Result->isReferenceType()) {\n diagnoseAndRemoveTypeQualifiers(S, DS, TypeQuals, Result, DeclSpec::TQ_const | DeclSpec::TQ_volatile | DeclSpec::TQ_atomic, diag::warn_typecheck_reference_qualifiers);"}}, | [j]={{T,1885,"#include \"clang/Basic/OpenCLImageTypes.def\"\n // ...\n // Apply const/volatile/restrict qualifiers to T.\n if (unsigned TypeQuals = DS.getTypeQualifiers()) {\n // ...\n // C++11 [dcl.ref]p1:\n // Cv-qualified references are ill-formed except when the\n // cv-qualifiers are introduced through the use of a typedef-name\n // or decltype-specifier, in which case the cv-qualifiers are ignored.\n //\n // There don\'t appear to be any other contexts in which a cv-qualified\n // reference type could be formed, so the \'ill-formed\' clause here appears\n // to never happen.\n if (TypeQuals && Result->isReferenceType()) {\n diagnoseAndRemoveTypeQualifiers(S, DS, TypeQuals, Result, DeclSpec::TQ_const | DeclSpec::TQ_volatile | DeclSpec::TQ_atomic, diag::warn_typecheck_reference_qualifiers);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/cxx0x-rvalue-reference.cpp"]={"clang/test/Parser/cxx0x-rvalue-reference.cpp:6:9: warning: \'const\' qualifier on reference type \'R\' (aka \'int &&\') has no effect [-Wignored-reference-qualifiers]"} | ["clang/test/Parser/cxx0x-rvalue-reference.cpp"]={"clang/test/Parser/cxx0x-rvalue-reference.cpp:6:9: warning: \'const\' qualifier on reference type \'R\' (aka \'int &&\') has no effect [-Wignored-reference-qualifiers]"} | ||
Line 8,317: | Line 8,317: | ||
[h]=q, | [h]=q, | ||
[i]={"9941ca8af6b4",1476878770,"[Sema] Gcc compatibility of vector shift","[Sema] Gcc compatibility of vector shift"}, | [i]={"9941ca8af6b4",1476878770,"[Sema] Gcc compatibility of vector shift","[Sema] Gcc compatibility of vector shift"}, | ||
[j]={{A,12192,"/// Return the resulting type when a vector is shifted\n/// by a scalar or vector shift amount.\nstatic QualType checkVectorShift(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, bool IsCompAssign) {\n if (!LHSVecTy) {\n } else if (RHSVecTy) {\n if (!S.LangOpts.OpenCL && !S.LangOpts.ZVector) {\n if (LHSBT != RHSBT && S.Context.getTypeSize(LHSBT) != S.Context.getTypeSize(RHSBT)) {\n S.Diag(Loc, diag::warn_typecheck_vector_element_sizes_not_equal) << LHS.get()->getType() << RHS.get()->getType() << LHS.get()->getSourceRange() << RHS.get()->getSourceRange();"}}, | [j]={{A,12192,"/// Return the resulting type when a vector is shifted\n/// by a scalar or vector shift amount.\nstatic QualType checkVectorShift(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, bool IsCompAssign) {\n // ...\n if (!LHSVecTy) {\n // ...\n } else if (RHSVecTy) {\n // ...\n if (!S.LangOpts.OpenCL && !S.LangOpts.ZVector) {\n // ...\n if (LHSBT != RHSBT && S.Context.getTypeSize(LHSBT) != S.Context.getTypeSize(RHSBT)) {\n S.Diag(Loc, diag::warn_typecheck_vector_element_sizes_not_equal) << LHS.get()->getType() << RHS.get()->getType() << LHS.get()->getSourceRange() << RHS.get()->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGen/vecshift.c"]={"clang/test/CodeGen/vecshift.c:113:13: warning: vector operands do not have the same elements sizes (\'vector_int8\' (vector of 8 \'int\' values) and \'vector_uchar8\' (vector of 8 \'unsigned char\' values)) [-Wvec-elem-size]","clang/test/CodeGen/vecshift.c:118:15: warning: vector operands do not have the same elements sizes (\'vector_uchar8\' (vector of 8 \'unsigned char\' values) and \'vector_int8\' (vector of 8 \'int\' values)) [-Wvec-elem-size]","clang/test/CodeGen/vecshift.c:123:15: warning: vector operands do not have the same elements sizes (\'vector_ushort8\' (vector of 8 \'unsigned short\' values) and \'vector_uint8\' (vector of 8 \'unsigned int\' values)) [-Wvec-elem-size]","clang/test/CodeGen/vecshift.c:128:15: warning: vector operands do not have the same elements sizes (\'vector_uint8\' (vector of 8 \'unsigned int\' values) and \'vector_short8\' (vector of 8 \'short\' values)) [-Wvec-elem-size]"} | ["clang/test/CodeGen/vecshift.c"]={"clang/test/CodeGen/vecshift.c:113:13: warning: vector operands do not have the same elements sizes (\'vector_int8\' (vector of 8 \'int\' values) and \'vector_uchar8\' (vector of 8 \'unsigned char\' values)) [-Wvec-elem-size]","clang/test/CodeGen/vecshift.c:118:15: warning: vector operands do not have the same elements sizes (\'vector_uchar8\' (vector of 8 \'unsigned char\' values) and \'vector_int8\' (vector of 8 \'int\' values)) [-Wvec-elem-size]","clang/test/CodeGen/vecshift.c:123:15: warning: vector operands do not have the same elements sizes (\'vector_ushort8\' (vector of 8 \'unsigned short\' values) and \'vector_uint8\' (vector of 8 \'unsigned int\' values)) [-Wvec-elem-size]","clang/test/CodeGen/vecshift.c:128:15: warning: vector operands do not have the same elements sizes (\'vector_uint8\' (vector of 8 \'unsigned int\' values) and \'vector_short8\' (vector of 8 \'short\' values)) [-Wvec-elem-size]"} | ||
Line 8,334: | Line 8,334: | ||
[h]=D, | [h]=D, | ||
[i]={"7f43dddae066",1359060646,"Handle universal character names and Unicode characters outside of literals.","Handle universal character names and Unicode characters outside of literals."}, | [i]={"7f43dddae066",1359060646,"Handle universal character names and Unicode characters outside of literals.","Handle universal character names and Unicode characters outside of literals."}, | ||
[j]={{Vb,3340,"std::optional<uint32_t> Lexer::tryReadNumericUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n if (!Delimited && Count != NumHexDigits) {\n if (Diagnose) {\n Diag(SlashLoc, diag::warn_ucn_escape_incomplete);"},{Vb,3389,"std::optional<uint32_t> Lexer::tryReadNamedUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n if (C != \'{\') {\n if (Diagnose)\n Diag(SlashLoc, diag::warn_ucn_escape_incomplete);"}}, | [j]={{Vb,3340,"std::optional<uint32_t> Lexer::tryReadNumericUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n // ...\n if (!Delimited && Count != NumHexDigits) {\n if (Diagnose) {\n Diag(SlashLoc, diag::warn_ucn_escape_incomplete);"},{Vb,3389,"std::optional<uint32_t> Lexer::tryReadNamedUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n // ...\n if (C != \'{\') {\n if (Diagnose)\n Diag(SlashLoc, diag::warn_ucn_escape_incomplete);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/ucn-pp-identifier.c"]={"clang/test/Preprocessor/ucn-pp-identifier.c:26:5: warning: incomplete universal character name; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Preprocessor/ucn-pp-identifier.c:30:5: warning: incomplete universal character name; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Preprocessor/ucn-pp-identifier.c:76:18: warning: incomplete universal character name; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Preprocessor/ucn-pp-identifier.c:114:19: warning: incomplete universal character name; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Preprocessor/ucn-pp-identifier.c:122:9: warning: incomplete universal character name; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Preprocessor/ucn-pp-identifier.c:132:9: warning: incomplete universal character name; treating as \'\\\' followed by identifier [-Wunicode]"} | ["clang/test/Preprocessor/ucn-pp-identifier.c"]={"clang/test/Preprocessor/ucn-pp-identifier.c:26:5: warning: incomplete universal character name; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Preprocessor/ucn-pp-identifier.c:30:5: warning: incomplete universal character name; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Preprocessor/ucn-pp-identifier.c:76:18: warning: incomplete universal character name; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Preprocessor/ucn-pp-identifier.c:114:19: warning: incomplete universal character name; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Preprocessor/ucn-pp-identifier.c:122:9: warning: incomplete universal character name; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Preprocessor/ucn-pp-identifier.c:132:9: warning: incomplete universal character name; treating as \'\\\' followed by identifier [-Wunicode]"} | ||
Line 8,351: | Line 8,351: | ||
[h]=D, | [h]=D, | ||
[i]={"7f43dddae066",1359060646,"Handle universal character names and Unicode characters outside of literals.","Handle universal character names and Unicode characters outside of literals."}, | [i]={"7f43dddae066",1359060646,"Handle universal character names and Unicode characters outside of literals.","Handle universal character names and Unicode characters outside of literals."}, | ||
[j]={{Vb,3327,"std::optional<uint32_t> Lexer::tryReadNumericUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n if (Count == 0) {\n if (Diagnose)\n Diag(SlashLoc, FoundEndDelimiter ? diag::warn_delimited_ucn_empty : diag::warn_ucn_escape_no_digits) << StringRef(KindLoc, 1);"}}, | [j]={{Vb,3327,"std::optional<uint32_t> Lexer::tryReadNumericUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n // ...\n if (Count == 0) {\n if (Diagnose)\n Diag(SlashLoc, FoundEndDelimiter ? diag::warn_delimited_ucn_empty : diag::warn_ucn_escape_no_digits) << StringRef(KindLoc, 1);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/ucn-pp-identifier.c"]={"clang/test/Preprocessor/ucn-pp-identifier.c:28:5: warning: \\u used with no following hex digits; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Preprocessor/ucn-pp-identifier.c:75:18: warning: \\u used with no following hex digits; treating as \'\\\' followed by identifier [-Wunicode]"} | ["clang/test/Preprocessor/ucn-pp-identifier.c"]={"clang/test/Preprocessor/ucn-pp-identifier.c:28:5: warning: \\u used with no following hex digits; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Preprocessor/ucn-pp-identifier.c:75:18: warning: \\u used with no following hex digits; treating as \'\\\' followed by identifier [-Wunicode]"} | ||
Line 8,368: | Line 8,368: | ||
[h]=D, | [h]=D, | ||
[i]={"58c61e006f4d",1360372225,"Properly validate UCNs for C99 and C++03 (both more restrictive than C(++)11).","Properly validate UCNs for C99 and C++03 (both more restrictive than C(++)11)."}, | [i]={"58c61e006f4d",1360372225,"Properly validate UCNs for C99 and C++03 (both more restrictive than C(++)11).","Properly validate UCNs for C99 and C++03 (both more restrictive than C(++)11)."}, | ||
[j]={{Vb,3523,"uint32_t Lexer::tryReadUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n // C++11 [lex.charset]p2: If the hexadecimal value for a\n // universal-character-name corresponds to a surrogate code point (in the\n // range 0xD800-0xDFFF, inclusive), the program is ill-formed. Additionally,\n // if the hexadecimal value for a universal-character-name outside the\n // c-char-sequence, s-char-sequence, or r-char-sequence of a character or\n // string literal corresponds to a control character (in either of the\n // ranges 0x00-0x1F or 0x7F-0x9F, both inclusive) or to a character in the\n // basic source character set, the program is ill-formed.\n if (CodePoint < 0xA0) {\n } else if (CodePoint >= 0xD800 && CodePoint <= 0xDFFF) {\n // C++03 allows UCNs representing surrogate characters. C99 and C++11 don\'t.\n // We don\'t use isLexingRawMode() here because we need to diagnose bad\n // UCNs even when skipping preprocessing tokens in a #if block.\n if (Result && PP) {\n if (LangOpts.CPlusPlus && !LangOpts.CPlusPlus11)\n Diag(BufferPtr, diag::warn_ucn_escape_surrogate);"}}, | [j]={{Vb,3523,"uint32_t Lexer::tryReadUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n // ...\n // C++11 [lex.charset]p2: If the hexadecimal value for a\n // universal-character-name corresponds to a surrogate code point (in the\n // range 0xD800-0xDFFF, inclusive), the program is ill-formed. Additionally,\n // if the hexadecimal value for a universal-character-name outside the\n // c-char-sequence, s-char-sequence, or r-char-sequence of a character or\n // string literal corresponds to a control character (in either of the\n // ranges 0x00-0x1F or 0x7F-0x9F, both inclusive) or to a character in the\n // basic source character set, the program is ill-formed.\n if (CodePoint < 0xA0) {\n // ...\n } else if (CodePoint >= 0xD800 && CodePoint <= 0xDFFF) {\n // C++03 allows UCNs representing surrogate characters. C99 and C++11 don\'t.\n // We don\'t use isLexingRawMode() here because we need to diagnose bad\n // UCNs even when skipping preprocessing tokens in a #if block.\n if (Result && PP) {\n if (LangOpts.CPlusPlus && !LangOpts.CPlusPlus11)\n Diag(BufferPtr, diag::warn_ucn_escape_surrogate);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/ucn-allowed-chars.c"]={"clang/test/Preprocessor/ucn-allowed-chars.c:33:11: warning: universal character name refers to a surrogate character [-Wunicode]"} | ["clang/test/Preprocessor/ucn-allowed-chars.c"]={"clang/test/Preprocessor/ucn-allowed-chars.c:33:11: warning: universal character name refers to a surrogate character [-Wunicode]"} | ||
Line 8,385: | Line 8,385: | ||
[h]=D, | [h]=D, | ||
[i]={"9762e0a2348b",1286341046,"Add support for 4-byte UCNs like \\U12345678. Warn about UCNs in c90 mode.","Add support for 4-byte UCNs like \\U12345678. Warn about UCNs in c90 mode."}, | [i]={"9762e0a2348b",1286341046,"Add support for 4-byte UCNs like \\U12345678. Warn about UCNs in c90 mode.","Add support for 4-byte UCNs like \\U12345678. Warn about UCNs in c90 mode."}, | ||
[j]={{Vb,3280,"std::optional<uint32_t> Lexer::tryReadNumericUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n if (!LangOpts.CPlusPlus && !LangOpts.C99) {\n if (Diagnose)\n Diag(SlashLoc, diag::warn_ucn_not_valid_in_c89);"}}, | [j]={{Vb,3280,"std::optional<uint32_t> Lexer::tryReadNumericUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n // ...\n if (!LangOpts.CPlusPlus && !LangOpts.C99) {\n if (Diagnose)\n Diag(SlashLoc, diag::warn_ucn_not_valid_in_c89);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Lexer/c90.c"]={"clang/test/Lexer/c90.c:43:16: warning: universal character names are only valid in C99 or C++; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Lexer/c90.c:46:21: warning: universal character names are only valid in C99 or C++; treating as \'\\\' followed by identifier [-Wunicode]"} | ["clang/test/Lexer/c90.c"]={"clang/test/Lexer/c90.c:43:16: warning: universal character names are only valid in C99 or C++; treating as \'\\\' followed by identifier [-Wunicode]","clang/test/Lexer/c90.c:46:21: warning: universal character names are only valid in C99 or C++; treating as \'\\\' followed by identifier [-Wunicode]"} | ||
Line 8,402: | Line 8,402: | ||
[h]=D, | [h]=D, | ||
[i]={"c0cba2723060",1359317524,"PR15067: Don\'t assert when a UCN appears in a C90 file.","PR15067: Don\'t assert when a UCN appears in a C90 file."}, | [i]={"c0cba2723060",1359317524,"PR15067: Don\'t assert when a UCN appears in a C90 file.","PR15067: Don\'t assert when a UCN appears in a C90 file."}, | ||
[j]={{"clang/lib/Lex/LiteralSupport.cpp",695,"/// ProcessUCNEscape - Read the Universal Character Name, check constraints and\n/// return the UTF32.\nstatic bool ProcessUCNEscape(const char *ThisTokBegin, const char *&ThisTokBuf, const char *ThisTokEnd, uint32_t &UcnVal, unsigned short &UcnLen, FullSourceLoc Loc, DiagnosticsEngine *Diags, const LangOptions &Features, bool in_char_string_literal = false) {\n if (!Features.CPlusPlus && !Features.C99 && Diags)\n Diag(Diags, Features, Loc, ThisTokBegin, UcnBegin, ThisTokBuf, diag::warn_ucn_not_valid_in_c89_literal);"}}, | [j]={{"clang/lib/Lex/LiteralSupport.cpp",695,"/// ProcessUCNEscape - Read the Universal Character Name, check constraints and\n/// return the UTF32.\nstatic bool ProcessUCNEscape(const char *ThisTokBegin, const char *&ThisTokBuf, const char *ThisTokEnd, uint32_t &UcnVal, unsigned short &UcnLen, FullSourceLoc Loc, DiagnosticsEngine *Diags, const LangOptions &Features, bool in_char_string_literal = false) {\n // ...\n if (!Features.CPlusPlus && !Features.C99 && Diags)\n Diag(Diags, Features, Loc, ThisTokBegin, UcnBegin, ThisTokBuf, diag::warn_ucn_not_valid_in_c89_literal);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Lexer/c90.c"]={"clang/test/Lexer/c90.c:32:11: error: universal character names are only valid in C99 or C++ [-Werror,-Wunicode]","clang/test/Lexer/c90.c:33:11: error: universal character names are only valid in C99 or C++ [-Werror,-Wunicode]"} | ["clang/test/Lexer/c90.c"]={"clang/test/Lexer/c90.c:32:11: error: universal character names are only valid in C99 or C++ [-Werror,-Wunicode]","clang/test/Lexer/c90.c:33:11: error: universal character names are only valid in C99 or C++ [-Werror,-Wunicode]"} | ||
Line 8,420: | Line 8,420: | ||
[h]=y, | [h]=y, | ||
[i]={"683e83c56f98",1633469611,"[Clang][C++2b] P2242R3: Non-literal variables [...] in constexpr","[Clang][C++2b] P2242R3: Non-literal variables [...] in constexpr"}, | [i]={"683e83c56f98",1633469611,"[Clang][C++2b] P2242R3: Non-literal variables [...] in constexpr","[Clang][C++2b] P2242R3: Non-literal variables [...] in constexpr"}, | ||
[j]={{oc,2131,"void ItaniumRecordLayoutBuilder::LayoutField(const FieldDecl *D, bool InsertExtraPadding) {\n // For checking the alignment of inner fields against\n // the alignment of its parent record.\n if (const RecordDecl *RD = D->getParent()) {\n // Check if packed attribute or pragma pack is present.\n if (RD->hasAttr<PackedAttr>() || !MaxFieldAlignment.isZero())\n if (FieldAlign < OriginalFieldAlign)\n if (D->getType()->isRecordType()) {\n // If the offset is a multiple of the alignment of\n // the type, raise the warning.\n // TODO: Takes no account the alignment of the outer struct\n if (FieldOffset % OriginalFieldAlign != 0)\n Diag(D->getLocation(), diag::warn_unaligned_access) << Context.getTypeDeclType(RD) << D->getName() << D->getType();"}}, | [j]={{oc,2131,"void ItaniumRecordLayoutBuilder::LayoutField(const FieldDecl *D, bool InsertExtraPadding) {\n // ...\n // For checking the alignment of inner fields against\n // the alignment of its parent record.\n if (const RecordDecl *RD = D->getParent()) {\n // Check if packed attribute or pragma pack is present.\n if (RD->hasAttr<PackedAttr>() || !MaxFieldAlignment.isZero())\n if (FieldAlign < OriginalFieldAlign)\n if (D->getType()->isRecordType()) {\n // If the offset is a multiple of the alignment of\n // the type, raise the warning.\n // TODO: Takes no account the alignment of the outer struct\n if (FieldOffset % OriginalFieldAlign != 0)\n Diag(D->getLocation(), diag::warn_unaligned_access) << Context.getTypeDeclType(RD) << D->getName() << D->getType();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/test-wunaligned-access.cpp"]={"clang/test/Sema/test-wunaligned-access.cpp:24:6: warning: field b within \'U1\' is less aligned than \'T1\' and is usually due to \'U1\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:48:6: warning: field b within \'U5\' is less aligned than \'T1\' and is usually due to \'U5\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:65:6: warning: field b within \'U7\' is less aligned than \'T1\' and is usually due to \'U7\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:71:6: warning: field b within \'U8\' is less aligned than \'T1\' and is usually due to \'U8\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:77:6: warning: field b within \'U9\' is less aligned than \'T1\' and is usually due to \'U9\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:83:6: warning: field b within \'U10\' is less aligned than \'T1\' and is usually due to \'U10\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:141:6: warning: field b within \'A1\' is less aligned than \'T1\' and is usually due to \'A1\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:157:6: warning: field b within \'U17\' is less aligned than \'A2\' and is usually due to \'U17\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:183:6: warning: field b within \'U19\' is less aligned than \'A4\' and is usually due to \'U19\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:197:6: warning: field b within \'U20\' is less aligned than \'A5\' and is usually due to \'U20\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:209:6: warning: field b within \'U21\' is less aligned than \'A6\' and is usually due to \'U21\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:231:6: warning: field b within \'A8\' is less aligned than \'T1\' and is usually due to \'A8\' being packed, which can lead to unaligned accesses [-Wunaligned-access]"} | ["clang/test/Sema/test-wunaligned-access.cpp"]={"clang/test/Sema/test-wunaligned-access.cpp:24:6: warning: field b within \'U1\' is less aligned than \'T1\' and is usually due to \'U1\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:48:6: warning: field b within \'U5\' is less aligned than \'T1\' and is usually due to \'U5\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:65:6: warning: field b within \'U7\' is less aligned than \'T1\' and is usually due to \'U7\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:71:6: warning: field b within \'U8\' is less aligned than \'T1\' and is usually due to \'U8\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:77:6: warning: field b within \'U9\' is less aligned than \'T1\' and is usually due to \'U9\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:83:6: warning: field b within \'U10\' is less aligned than \'T1\' and is usually due to \'U10\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:141:6: warning: field b within \'A1\' is less aligned than \'T1\' and is usually due to \'A1\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:157:6: warning: field b within \'U17\' is less aligned than \'A2\' and is usually due to \'U17\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:183:6: warning: field b within \'U19\' is less aligned than \'A4\' and is usually due to \'U19\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:197:6: warning: field b within \'U20\' is less aligned than \'A5\' and is usually due to \'U20\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:209:6: warning: field b within \'U21\' is less aligned than \'A6\' and is usually due to \'U21\' being packed, which can lead to unaligned accesses [-Wunaligned-access]","clang/test/Sema/test-wunaligned-access.cpp:231:6: warning: field b within \'A8\' is less aligned than \'T1\' and is usually due to \'A8\' being packed, which can lead to unaligned accesses [-Wunaligned-access]"} | ||
Line 8,438: | Line 8,438: | ||
[h]=q, | [h]=q, | ||
[i]={"84837d5b5aa0",1336069659,"Add -Wimplicit-fallthrough warning flag, which warns on fallthrough between","Add -Wimplicit-fallthrough warning flag, which warns on fallthrough between"}, | [i]={"84837d5b5aa0",1336069659,"Add -Wimplicit-fallthrough warning flag, which warns on fallthrough between","Add -Wimplicit-fallthrough warning flag, which warns on fallthrough between"}, | ||
[j]={{E,1306,"static void DiagnoseSwitchLabelsFallthrough(Sema &S, AnalysisDeclContext &AC, bool PerFunction) {\n for (const CFGBlock *B : llvm::reverse(*Cfg)) {\n S.Diag(Label->getBeginLoc(), PerFunction ? diag::warn_unannotated_fallthrough_per_function : diag::warn_unannotated_fallthrough);"},{E,2666,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n bool FallThroughDiagFull = !Diags.isIgnored(diag::warn_unannotated_fallthrough, D->getBeginLoc());"}}, | [j]={{E,1306,"static void DiagnoseSwitchLabelsFallthrough(Sema &S, AnalysisDeclContext &AC, bool PerFunction) {\n // ...\n for (const CFGBlock *B : llvm::reverse(*Cfg)) {\n // ...\n S.Diag(Label->getBeginLoc(), PerFunction ? diag::warn_unannotated_fallthrough_per_function : diag::warn_unannotated_fallthrough);"},{E,2666,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n // ...\n bool FallThroughDiagFull = !Diags.isIgnored(diag::warn_unannotated_fallthrough, D->getBeginLoc());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/switch-implicit-fallthrough-blocks.cpp"]={"clang/test/SemaCXX/switch-implicit-fallthrough-blocks.cpp:12:5: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]"} | ["clang/test/SemaCXX/switch-implicit-fallthrough-blocks.cpp"]={"clang/test/SemaCXX/switch-implicit-fallthrough-blocks.cpp:12:5: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]"} | ||
Line 8,456: | Line 8,456: | ||
[h]=q, | [h]=q, | ||
[i]={"2178f14c10af",1339795325,"Stop referring to functions as methods in per-function fallthrough-checking.","Stop referring to functions as methods in per-function fallthrough-checking."}, | [i]={"2178f14c10af",1339795325,"Stop referring to functions as methods in per-function fallthrough-checking.","Stop referring to functions as methods in per-function fallthrough-checking."}, | ||
[j]={{E,1305,"static void DiagnoseSwitchLabelsFallthrough(Sema &S, AnalysisDeclContext &AC, bool PerFunction) {\n for (const CFGBlock *B : llvm::reverse(*Cfg)) {\n S.Diag(Label->getBeginLoc(), PerFunction ? diag::warn_unannotated_fallthrough_per_function : diag::warn_unannotated_fallthrough);"},{E,2668,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n bool FallThroughDiagPerFunction = !Diags.isIgnored(diag::warn_unannotated_fallthrough_per_function, D->getBeginLoc());"}}, | [j]={{E,1305,"static void DiagnoseSwitchLabelsFallthrough(Sema &S, AnalysisDeclContext &AC, bool PerFunction) {\n // ...\n for (const CFGBlock *B : llvm::reverse(*Cfg)) {\n // ...\n S.Diag(Label->getBeginLoc(), PerFunction ? diag::warn_unannotated_fallthrough_per_function : diag::warn_unannotated_fallthrough);"},{E,2668,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n // ...\n bool FallThroughDiagPerFunction = !Diags.isIgnored(diag::warn_unannotated_fallthrough_per_function, D->getBeginLoc());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp"]={"clang/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp:15:7: warning: unannotated fall-through between switch labels in partly-annotated function [-Wimplicit-fallthrough-per-function]","clang/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp:8:5: warning: unannotated fall-through between switch labels in partly-annotated function [-Wimplicit-fallthrough-per-function]"} | ["clang/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp"]={"clang/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp:15:7: warning: unannotated fall-through between switch labels in partly-annotated function [-Wimplicit-fallthrough-per-function]","clang/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp:8:5: warning: unannotated fall-through between switch labels in partly-annotated function [-Wimplicit-fallthrough-per-function]"} | ||
Line 8,474: | Line 8,474: | ||
[h]=q, | [h]=q, | ||
[i]={"e1088dc42b3e",1499963831,"Extend -Wdeprecated-implementations to warn about unavailable methods","Extend -Wdeprecated-implementations to warn about unavailable methods"}, | [i]={"e1088dc42b3e",1499963831,"Extend -Wdeprecated-implementations to warn about unavailable methods","Extend -Wdeprecated-implementations to warn about unavailable methods"}, | ||
[j]={{P,302,"static void DiagnoseObjCImplementedDeprecations(Sema &S, const NamedDecl *ND, SourceLocation ImplLoc) {\n if (Availability != AR_Deprecated) {\n if (isa<ObjCMethodDecl>(ND)) {\n S.Diag(ImplLoc, diag::warn_unavailable_def);"}}, | [j]={{P,302,"static void DiagnoseObjCImplementedDeprecations(Sema &S, const NamedDecl *ND, SourceLocation ImplLoc) {\n // ...\n if (Availability != AR_Deprecated) {\n if (isa<ObjCMethodDecl>(ND)) {\n // ...\n S.Diag(ImplLoc, diag::warn_unavailable_def);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/warn-deprecated-implementations.m"]={"clang/test/SemaObjC/warn-deprecated-implementations.m:24:1: warning: implementing unavailable method [-Wdeprecated-implementations]","clang/test/SemaObjC/warn-deprecated-implementations.m:59:1: warning: implementing unavailable method [-Wdeprecated-implementations]"} | ["clang/test/SemaObjC/warn-deprecated-implementations.m"]={"clang/test/SemaObjC/warn-deprecated-implementations.m:24:1: warning: implementing unavailable method [-Wdeprecated-implementations]","clang/test/SemaObjC/warn-deprecated-implementations.m:59:1: warning: implementing unavailable method [-Wdeprecated-implementations]"} | ||
Line 8,491: | Line 8,491: | ||
[h]=q, | [h]=q, | ||
[i]={"7d6e11a1923a",1292892241,"Warn when message is sent to receiver of","Warn when message is sent to receiver of"}, | [i]={"7d6e11a1923a",1292892241,"Warn when message is sent to receiver of","Warn when message is sent to receiver of"}, | ||
[j]={{Tc,450,"/// Actually emit an availability diagnostic for a reference to an unavailable\n/// decl.\n///\n/// \\param Ctx The context that the reference occurred in\n/// \\param ReferringDecl The exact declaration that was referenced.\n/// \\param OffendingDecl A related decl to \\c ReferringDecl that has an\n/// availability attribute corresponding to \\c K attached to it. Note that this\n/// may not be the same as ReferringDecl, i.e. if an EnumDecl is annotated and\n/// we refer to a member EnumConstantDecl, ReferringDecl is the EnumConstantDecl\n/// and OffendingDecl is the EnumDecl.\nstatic void DoEmitAvailabilityWarning(Sema &S, AvailabilityResult K, Decl *Ctx, const NamedDecl *ReferringDecl, const NamedDecl *OffendingDecl, StringRef Message, ArrayRef<SourceLocation> Locs, const ObjCInterfaceDecl *UnknownObjCClass, const ObjCPropertyDecl *ObjCProperty, bool ObjCPropertyAccess) {\n case AR_Unavailable:\n diag_fwdclass_message = diag::warn_unavailable_fwdclass_message;"}}, | [j]={{Tc,450,"/// Actually emit an availability diagnostic for a reference to an unavailable\n/// decl.\n///\n/// \\param Ctx The context that the reference occurred in\n/// \\param ReferringDecl The exact declaration that was referenced.\n/// \\param OffendingDecl A related decl to \\c ReferringDecl that has an\n/// availability attribute corresponding to \\c K attached to it. Note that this\n/// may not be the same as ReferringDecl, i.e. if an EnumDecl is annotated and\n/// we refer to a member EnumConstantDecl, ReferringDecl is the EnumConstantDecl\n/// and OffendingDecl is the EnumDecl.\nstatic void DoEmitAvailabilityWarning(Sema &S, AvailabilityResult K, Decl *Ctx, const NamedDecl *ReferringDecl, const NamedDecl *OffendingDecl, StringRef Message, ArrayRef<SourceLocation> Locs, const ObjCInterfaceDecl *UnknownObjCClass, const ObjCPropertyDecl *ObjCProperty, bool ObjCPropertyAccess) {\n // ...\n case AR_Unavailable:\n // ...\n diag_fwdclass_message = diag::warn_unavailable_fwdclass_message;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/special-dep-unavail-warning.m"]={"clang/test/SemaObjC/special-dep-unavail-warning.m:34:6: warning: \'unavailMeth\' may be unavailable because the receiver type is unknown [-Wunavailable-declarations]","clang/test/SemaObjC/special-dep-unavail-warning.m:36:6: warning: \'unavailMeth1\' may be unavailable because the receiver type is unknown [-Wunavailable-declarations]","clang/test/SemaObjC/special-dep-unavail-warning.m:38:6: warning: \'unavailMeth2\' may be unavailable because the receiver type is unknown [-Wunavailable-declarations]","clang/test/SemaObjC/special-dep-unavail-warning.m:39:6: warning: \'depunavailInA\' may be unavailable because the receiver type is unknown [-Wunavailable-declarations]","clang/test/SemaObjC/special-dep-unavail-warning.m:40:6: warning: \'depunavailInA1\' may be unavailable because the receiver type is unknown [-Wunavailable-declarations]"} | ["clang/test/SemaObjC/special-dep-unavail-warning.m"]={"clang/test/SemaObjC/special-dep-unavail-warning.m:34:6: warning: \'unavailMeth\' may be unavailable because the receiver type is unknown [-Wunavailable-declarations]","clang/test/SemaObjC/special-dep-unavail-warning.m:36:6: warning: \'unavailMeth1\' may be unavailable because the receiver type is unknown [-Wunavailable-declarations]","clang/test/SemaObjC/special-dep-unavail-warning.m:38:6: warning: \'unavailMeth2\' may be unavailable because the receiver type is unknown [-Wunavailable-declarations]","clang/test/SemaObjC/special-dep-unavail-warning.m:39:6: warning: \'depunavailInA\' may be unavailable because the receiver type is unknown [-Wunavailable-declarations]","clang/test/SemaObjC/special-dep-unavail-warning.m:40:6: warning: \'depunavailInA1\' may be unavailable because the receiver type is unknown [-Wunavailable-declarations]"} | ||
Line 8,508: | Line 8,508: | ||
[h]=D, | [h]=D, | ||
[i]={"fe76cfd89c37",1324599839,"When building a module with an umbrella header, warn about any headers","When building a module with an umbrella header, warn about any headers"}, | [i]={"fe76cfd89c37",1324599839,"When building a module with an umbrella header, warn about any headers","When building a module with an umbrella header, warn about any headers"}, | ||
[j]={{"clang/lib/Lex/PPLexerChange.cpp",297,"void Preprocessor::diagnoseMissingHeaderInUmbrellaDir(const Module &Mod) {\n if (getDiagnostics().isIgnored(diag::warn_uncovered_module_header, ExpectedHeadersLoc))"},{"clang/lib/Lex/PPLexerChange.cpp",323,"void Preprocessor::diagnoseMissingHeaderInUmbrellaDir(const Module &Mod) {\n for (llvm::vfs::recursive_directory_iterator Entry(FS, Dir->getName(), EC), End; Entry != End && !EC; Entry.increment(EC)) {\n if (auto Header = getFileManager().getOptionalFileRef(Entry->path()))\n if (!getSourceManager().hasFileInfo(*Header)) {\n if (!ModMap.isHeaderInUnavailableModule(*Header)) {\n Diag(ExpectedHeadersLoc, diag::warn_uncovered_module_header) << Mod.getFullModuleName() << RelativePath;"}}, | [j]={{"clang/lib/Lex/PPLexerChange.cpp",297,"void Preprocessor::diagnoseMissingHeaderInUmbrellaDir(const Module &Mod) {\n // ...\n if (getDiagnostics().isIgnored(diag::warn_uncovered_module_header, ExpectedHeadersLoc))"},{"clang/lib/Lex/PPLexerChange.cpp",323,"void Preprocessor::diagnoseMissingHeaderInUmbrellaDir(const Module &Mod) {\n // ...\n for (llvm::vfs::recursive_directory_iterator Entry(FS, Dir->getName(), EC), End; Entry != End && !EC; Entry.increment(EC)) {\n // ...\n if (auto Header = getFileManager().getOptionalFileRef(Entry->path()))\n if (!getSourceManager().hasFileInfo(*Header)) {\n if (!ModMap.isHeaderInUnavailableModule(*Header)) {\n // ...\n Diag(ExpectedHeadersLoc, diag::warn_uncovered_module_header) << Mod.getFullModuleName() << RelativePath;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Modules/dependency-gen-inferred-map.m"]={"clang/test/Modules/Inputs/Module.framework/Headers/Module.h:38:1: warning: umbrella header for module \'Module\' does not include header \'NotInModule.h\' [-Wincomplete-umbrella]"} | ["clang/test/Modules/dependency-gen-inferred-map.m"]={"clang/test/Modules/Inputs/Module.framework/Headers/Module.h:38:1: warning: umbrella header for module \'Module\' does not include header \'NotInModule.h\' [-Wincomplete-umbrella]"} | ||
Line 8,526: | Line 8,526: | ||
[h]=q, | [h]=q, | ||
[i]={"0571d9bbbaed",1245169500,"Implements -Wundeclared-selector for ObjC.","Implements -Wundeclared-selector for ObjC."}, | [i]={"0571d9bbbaed",1245169500,"Implements -Wundeclared-selector for ObjC.","Implements -Wundeclared-selector for ObjC."}, | ||
[j]={{cb,1313,"ExprResult Sema::ParseObjCSelectorExpression(Selector Sel, SourceLocation AtLoc, SourceLocation SelLoc, SourceLocation LParenLoc, SourceLocation RParenLoc, bool WarnMultipleSelectors) {\n if (!Method) {\n if (const ObjCMethodDecl *OM = SelectorsForTypoCorrection(Sel)) {\n } else\n Diag(SelLoc, diag::warn_undeclared_selector) << Sel;"}} | [j]={{cb,1313,"ExprResult Sema::ParseObjCSelectorExpression(Selector Sel, SourceLocation AtLoc, SourceLocation SelLoc, SourceLocation LParenLoc, SourceLocation RParenLoc, bool WarnMultipleSelectors) {\n // ...\n if (!Method) {\n if (const ObjCMethodDecl *OM = SelectorsForTypoCorrection(Sel)) {\n // ...\n } else\n Diag(SelLoc, diag::warn_undeclared_selector) << Sel;"}} | ||
}, | }, | ||
["warn_undeclared_selector_with_typo"]={ | ["warn_undeclared_selector_with_typo"]={ | ||
Line 8,541: | Line 8,541: | ||
[h]=q, | [h]=q, | ||
[i]={"0c0fc9e14b9c",1370457974,"Objective-C: Provide fixit with suggested spelling correction","Objective-C: Provide fixit with suggested spelling correction"}, | [i]={"0c0fc9e14b9c",1370457974,"Objective-C: Provide fixit with suggested spelling correction","Objective-C: Provide fixit with suggested spelling correction"}, | ||
[j]={{cb,1308,"ExprResult Sema::ParseObjCSelectorExpression(Selector Sel, SourceLocation AtLoc, SourceLocation SelLoc, SourceLocation LParenLoc, SourceLocation RParenLoc, bool WarnMultipleSelectors) {\n if (!Method) {\n if (const ObjCMethodDecl *OM = SelectorsForTypoCorrection(Sel)) {\n Diag(SelLoc, diag::warn_undeclared_selector_with_typo) << Sel << MatchedSel << FixItHint::CreateReplacement(SelectorRange, MatchedSel.getAsString());"}}, | [j]={{cb,1308,"ExprResult Sema::ParseObjCSelectorExpression(Selector Sel, SourceLocation AtLoc, SourceLocation SelLoc, SourceLocation LParenLoc, SourceLocation RParenLoc, bool WarnMultipleSelectors) {\n // ...\n if (!Method) {\n if (const ObjCMethodDecl *OM = SelectorsForTypoCorrection(Sel)) {\n // ...\n Diag(SelLoc, diag::warn_undeclared_selector_with_typo) << Sel << MatchedSel << FixItHint::CreateReplacement(SelectorRange, MatchedSel.getAsString());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/undeclared-selector.m"]={"clang/test/SemaObjC/undeclared-selector.m:40:12: warning: undeclared selector \'methodC\'; did you mean \'methodB\'? [-Wundeclared-selector]"} | ["clang/test/SemaObjC/undeclared-selector.m"]={"clang/test/SemaObjC/undeclared-selector.m:40:12: warning: undeclared selector \'methodC\'; did you mean \'methodB\'? [-Wundeclared-selector]"} | ||
Line 8,556: | Line 8,556: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{P,1178,"/// ActOnCompatibilityAlias - this action is called after complete parsing of\n/// a \\@compatibility_alias declaration. It sets up the alias relationships.\nDecl *Sema::ActOnCompatibilityAlias(SourceLocation AtLoc, IdentifierInfo *AliasName, SourceLocation AliasLocation, IdentifierInfo *ClassName, SourceLocation ClassLocation) {\n if (!CDecl) {\n Diag(ClassLocation, diag::warn_undef_interface) << ClassName;"},{P,1999,"ObjCImplementationDecl *Sema::ActOnStartClassImplementation(SourceLocation AtClassImplLoc, IdentifierInfo *ClassName, SourceLocation ClassLoc, IdentifierInfo *SuperClassname, SourceLocation SuperClassLoc, const ParsedAttributesView &Attrs) {\n if (PrevDecl && !isa<ObjCInterfaceDecl>(PrevDecl)) {\n } else if ((IDecl = dyn_cast_or_null<ObjCInterfaceDecl>(PrevDecl))) {\n RequireCompleteType(ClassLoc, Context.getObjCInterfaceType(IDecl), diag::warn_undef_interface);"},{P,2015,"ObjCImplementationDecl *Sema::ActOnStartClassImplementation(SourceLocation AtClassImplLoc, IdentifierInfo *ClassName, SourceLocation ClassLoc, IdentifierInfo *SuperClassname, SourceLocation SuperClassLoc, const ParsedAttributesView &Attrs) {\n if (PrevDecl && !isa<ObjCInterfaceDecl>(PrevDecl)) {\n } else if ((IDecl = dyn_cast_or_null<ObjCInterfaceDecl>(PrevDecl))) {\n } else {\n if (Corrected.getCorrectionDeclAs<ObjCInterfaceDecl>()) {\n } else {\n Diag(ClassLoc, diag::warn_undef_interface) << ClassName;"}}, | [j]={{P,1178,"/// ActOnCompatibilityAlias - this action is called after complete parsing of\n/// a \\@compatibility_alias declaration. It sets up the alias relationships.\nDecl *Sema::ActOnCompatibilityAlias(SourceLocation AtLoc, IdentifierInfo *AliasName, SourceLocation AliasLocation, IdentifierInfo *ClassName, SourceLocation ClassLocation) {\n // ...\n if (!CDecl) {\n Diag(ClassLocation, diag::warn_undef_interface) << ClassName;"},{P,1999,"ObjCImplementationDecl *Sema::ActOnStartClassImplementation(SourceLocation AtClassImplLoc, IdentifierInfo *ClassName, SourceLocation ClassLoc, IdentifierInfo *SuperClassname, SourceLocation SuperClassLoc, const ParsedAttributesView &Attrs) {\n // ...\n if (PrevDecl && !isa<ObjCInterfaceDecl>(PrevDecl)) {\n // ...\n } else if ((IDecl = dyn_cast_or_null<ObjCInterfaceDecl>(PrevDecl))) {\n // ...\n RequireCompleteType(ClassLoc, Context.getObjCInterfaceType(IDecl), diag::warn_undef_interface);"},{P,2015,"ObjCImplementationDecl *Sema::ActOnStartClassImplementation(SourceLocation AtClassImplLoc, IdentifierInfo *ClassName, SourceLocation ClassLoc, IdentifierInfo *SuperClassname, SourceLocation SuperClassLoc, const ParsedAttributesView &Attrs) {\n // ...\n if (PrevDecl && !isa<ObjCInterfaceDecl>(PrevDecl)) {\n // ...\n } else if ((IDecl = dyn_cast_or_null<ObjCInterfaceDecl>(PrevDecl))) {\n // ...\n } else {\n // ...\n if (Corrected.getCorrectionDeclAs<ObjCInterfaceDecl>()) {\n // ...\n } else {\n Diag(ClassLoc, diag::warn_undef_interface) << ClassName;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/property.m"]={"clang/test/SemaObjC/property.m:30:17: warning: cannot find interface declaration for \'E\'"} | ["clang/test/SemaObjC/property.m"]={"clang/test/SemaObjC/property.m:30:17: warning: cannot find interface declaration for \'E\'"} | ||
Line 8,571: | Line 8,571: | ||
[h]=q, | [h]=q, | ||
[i]={"40f7a007e9d0",1262626032,"When declaring an Objective-C implementation without a corresponding","When declaring an Objective-C implementation without a corresponding"}, | [i]={"40f7a007e9d0",1262626032,"When declaring an Objective-C implementation without a corresponding","When declaring an Objective-C implementation without a corresponding"}, | ||
[j]={{P,2012,"ObjCImplementationDecl *Sema::ActOnStartClassImplementation(SourceLocation AtClassImplLoc, IdentifierInfo *ClassName, SourceLocation ClassLoc, IdentifierInfo *SuperClassname, SourceLocation SuperClassLoc, const ParsedAttributesView &Attrs) {\n if (PrevDecl && !isa<ObjCInterfaceDecl>(PrevDecl)) {\n } else if ((IDecl = dyn_cast_or_null<ObjCInterfaceDecl>(PrevDecl))) {\n } else {\n if (Corrected.getCorrectionDeclAs<ObjCInterfaceDecl>()) {\n diagnoseTypo(Corrected, PDiag(diag::warn_undef_interface_suggest) << ClassName,"}}, | [j]={{P,2012,"ObjCImplementationDecl *Sema::ActOnStartClassImplementation(SourceLocation AtClassImplLoc, IdentifierInfo *ClassName, SourceLocation ClassLoc, IdentifierInfo *SuperClassname, SourceLocation SuperClassLoc, const ParsedAttributesView &Attrs) {\n // ...\n if (PrevDecl && !isa<ObjCInterfaceDecl>(PrevDecl)) {\n // ...\n } else if ((IDecl = dyn_cast_or_null<ObjCInterfaceDecl>(PrevDecl))) {\n // ...\n } else {\n // ...\n if (Corrected.getCorrectionDeclAs<ObjCInterfaceDecl>()) {\n // ...\n diagnoseTypo(Corrected, PDiag(diag::warn_undef_interface_suggest) << ClassName,"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/undef-superclass-1.m"]={"clang/test/SemaObjC/undef-superclass-1.m:35:17: warning: cannot find interface declaration for \'iNTF3\'; did you mean \'INTF3\'?"} | ["clang/test/SemaObjC/undef-superclass-1.m"]={"clang/test/SemaObjC/undef-superclass-1.m:35:17: warning: cannot find interface declaration for \'iNTF3\'; did you mean \'INTF3\'?"} | ||
Line 8,588: | Line 8,588: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{P,2848,"/// MatchAllMethodDeclarations - Check methods declared in interface\n/// or protocol against those declared in their implementations.\n///\nvoid Sema::MatchAllMethodDeclarations(const SelectorSet &InsMap, const SelectorSet &ClsMap, SelectorSet &InsMapSeen, SelectorSet &ClsMapSeen, ObjCImplDecl *IMPDecl, ObjCContainerDecl *CDecl, bool &IncompleteImpl, bool ImmediateClass, bool WarnCategoryMethodImpl) {\n // Check and see if instance methods in class interface have been\n // implemented in the implementation class. If so, their types match.\n for (auto *I : CDecl->instance_methods()) {\n if (!I->isPropertyAccessor() && !InsMap.count(I->getSelector())) {\n if (ImmediateClass)\n WarnUndefinedMethod(*this, IMPDecl, I, IncompleteImpl, diag::warn_undef_method_impl);"},{P,2878,"/// MatchAllMethodDeclarations - Check methods declared in interface\n/// or protocol against those declared in their implementations.\n///\nvoid Sema::MatchAllMethodDeclarations(const SelectorSet &InsMap, const SelectorSet &ClsMap, SelectorSet &InsMapSeen, SelectorSet &ClsMapSeen, ObjCImplDecl *IMPDecl, ObjCContainerDecl *CDecl, bool &IncompleteImpl, bool ImmediateClass, bool WarnCategoryMethodImpl) {\n // Check and see if class methods in class interface have been\n // implemented in the implementation class. If so, their types match.\n for (auto *I : CDecl->class_methods()) {\n if (!I->isPropertyAccessor() && !ClsMap.count(I->getSelector())) {\n if (ImmediateClass)\n WarnUndefinedMethod(*this, IMPDecl, I, IncompleteImpl, diag::warn_undef_method_impl);"}}, | [j]={{P,2848,"/// MatchAllMethodDeclarations - Check methods declared in interface\n/// or protocol against those declared in their implementations.\n///\nvoid Sema::MatchAllMethodDeclarations(const SelectorSet &InsMap, const SelectorSet &ClsMap, SelectorSet &InsMapSeen, SelectorSet &ClsMapSeen, ObjCImplDecl *IMPDecl, ObjCContainerDecl *CDecl, bool &IncompleteImpl, bool ImmediateClass, bool WarnCategoryMethodImpl) {\n // Check and see if instance methods in class interface have been\n // implemented in the implementation class. If so, their types match.\n for (auto *I : CDecl->instance_methods()) {\n // ...\n if (!I->isPropertyAccessor() && !InsMap.count(I->getSelector())) {\n if (ImmediateClass)\n WarnUndefinedMethod(*this, IMPDecl, I, IncompleteImpl, diag::warn_undef_method_impl);"},{P,2878,"/// MatchAllMethodDeclarations - Check methods declared in interface\n/// or protocol against those declared in their implementations.\n///\nvoid Sema::MatchAllMethodDeclarations(const SelectorSet &InsMap, const SelectorSet &ClsMap, SelectorSet &InsMapSeen, SelectorSet &ClsMapSeen, ObjCImplDecl *IMPDecl, ObjCContainerDecl *CDecl, bool &IncompleteImpl, bool ImmediateClass, bool WarnCategoryMethodImpl) {\n // ...\n // Check and see if class methods in class interface have been\n // implemented in the implementation class. If so, their types match.\n for (auto *I : CDecl->class_methods()) {\n // ...\n if (!I->isPropertyAccessor() && !ClsMap.count(I->getSelector())) {\n if (ImmediateClass)\n WarnUndefinedMethod(*this, IMPDecl, I, IncompleteImpl, diag::warn_undef_method_impl);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/method-bad-param.m"]={"clang/test/SemaObjC/method-bad-param.m:61:17: warning: method definition for \'my_method:\' not found [-Wincomplete-implementation]"} | ["clang/test/SemaObjC/method-bad-param.m"]={"clang/test/SemaObjC/method-bad-param.m:61:17: warning: method definition for \'my_method:\' not found [-Wincomplete-implementation]"} | ||
Line 8,603: | Line 8,603: | ||
[h]=q, | [h]=q, | ||
[i]={gb,1236199783,eb,fb}, | [i]={gb,1236199783,eb,fb}, | ||
[j]={{P,1351,"/// FindProtocolDeclaration - This routine looks up protocols and\n/// issues an error if they are not declared. It returns list of\n/// protocol declarations in its \'Protocols\' argument.\nvoid Sema::FindProtocolDeclaration(bool WarnOnDeclarations, bool ForObjCContainer, ArrayRef<IdentifierLocPair> ProtocolId, SmallVectorImpl<Decl *> &Protocols) {\n for (const IdentifierLocPair &Pair : ProtocolId) {\n if (WarnOnDeclarations && NestedProtocolHasNoDefinition(PDecl, UndefinedProtocol)) {\n Diag(Pair.second, diag::warn_undef_protocolref) << Pair.first;"},{P,1487,"void Sema::actOnObjCTypeArgsOrProtocolQualifiers(Scope *S, ParsedType baseType, SourceLocation lAngleLoc, ArrayRef<IdentifierInfo *> identifiers, ArrayRef<SourceLocation> identifierLocs, SourceLocation rAngleLoc, SourceLocation &typeArgsLAngleLoc, SmallVectorImpl<ParsedType> &typeArgs, SourceLocation &typeArgsRAngleLoc, SourceLocation &protocolLAngleLoc, SmallVectorImpl<Decl *> &protocols, SourceLocation &protocolRAngleLoc, bool warnOnIncompleteProtocols) {\n auto resolvedAsProtocols = [&] {\n for (unsigned i = 0, n = protocols.size(); i != n; ++i) {\n if (warnOnIncompleteProtocols && NestedProtocolHasNoDefinition(proto, forwardDecl)) {\n Diag(identifierLocs[i], diag::warn_undef_protocolref) << proto->getDeclName();"}}, | [j]={{P,1351,"/// FindProtocolDeclaration - This routine looks up protocols and\n/// issues an error if they are not declared. It returns list of\n/// protocol declarations in its \'Protocols\' argument.\nvoid Sema::FindProtocolDeclaration(bool WarnOnDeclarations, bool ForObjCContainer, ArrayRef<IdentifierLocPair> ProtocolId, SmallVectorImpl<Decl *> &Protocols) {\n for (const IdentifierLocPair &Pair : ProtocolId) {\n // ...\n if (WarnOnDeclarations && NestedProtocolHasNoDefinition(PDecl, UndefinedProtocol)) {\n Diag(Pair.second, diag::warn_undef_protocolref) << Pair.first;"},{P,1487,"void Sema::actOnObjCTypeArgsOrProtocolQualifiers(Scope *S, ParsedType baseType, SourceLocation lAngleLoc, ArrayRef<IdentifierInfo *> identifiers, ArrayRef<SourceLocation> identifierLocs, SourceLocation rAngleLoc, SourceLocation &typeArgsLAngleLoc, SmallVectorImpl<ParsedType> &typeArgs, SourceLocation &typeArgsRAngleLoc, SourceLocation &protocolLAngleLoc, SmallVectorImpl<Decl *> &protocols, SourceLocation &protocolRAngleLoc, bool warnOnIncompleteProtocols) {\n // ...\n auto resolvedAsProtocols = [&] {\n // ...\n for (unsigned i = 0, n = protocols.size(); i != n; ++i) {\n // ...\n if (warnOnIncompleteProtocols && NestedProtocolHasNoDefinition(proto, forwardDecl)) {\n Diag(identifierLocs[i], diag::warn_undef_protocolref) << proto->getDeclName();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/class-def-test-1.m"]={"clang/test/SemaObjC/class-def-test-1.m:5:19: warning: cannot find protocol definition for \'SUPER\'"} | ["clang/test/SemaObjC/class-def-test-1.m"]={"clang/test/SemaObjC/class-def-test-1.m:5:19: warning: cannot find protocol definition for \'SUPER\'"} | ||
Line 8,620: | Line 8,620: | ||
[h]=q, | [h]=q, | ||
[i]={"9c7eb1d887c1",1359706400,"Add a new -Wundefined-inline warning for inline functions which are used but not","Add a new -Wundefined-inline warning for inline functions which are used but not"}, | [i]={"9c7eb1d887c1",1359706400,"Add a new -Wundefined-inline warning for inline functions which are used but not","Add a new -Wundefined-inline warning for inline functions which are used but not"}, | ||
[j]={{Z,911,"/// checkUndefinedButUsed - Check for undefined objects with internal linkage\n/// or that are inline.\nstatic void checkUndefinedButUsed(Sema &S) {\n for (const auto &Undef : Undefined) {\n if (S.isExternalWithNoLinkageType(VD)) {\n } else if (!VD->isExternallyVisible()) {\n } else if (auto *FD = dyn_cast<FunctionDecl>(VD)) {\n S.Diag(VD->getLocation(), diag::warn_undefined_inline) << VD;"}}, | [j]={{Z,911,"/// checkUndefinedButUsed - Check for undefined objects with internal linkage\n/// or that are inline.\nstatic void checkUndefinedButUsed(Sema &S) {\n // ...\n for (const auto &Undef : Undefined) {\n // ...\n if (S.isExternalWithNoLinkageType(VD)) {\n // ...\n } else if (!VD->isExternallyVisible()) {\n // ...\n } else if (auto *FD = dyn_cast<FunctionDecl>(VD)) {\n // ...\n S.Diag(VD->getLocation(), diag::warn_undefined_inline) << VD;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/basic/basic.def/p4.cpp"]={"clang/test/CXX/basic/basic.def/p4.cpp:3:12: warning: inline function \'f\' is not defined [-Wundefined-inline]"} | ["clang/test/CXX/basic/basic.def/p4.cpp"]={"clang/test/CXX/basic/basic.def/p4.cpp:3:12: warning: inline function \'f\' is not defined [-Wundefined-inline]"} | ||
Line 8,637: | Line 8,637: | ||
[h]=q, | [h]=q, | ||
[i]={"837796754391",1298084021,"Warn about code that uses variables and functions with internal linkage","Warn about code that uses variables and functions with internal linkage"}, | [i]={"837796754391",1298084021,"Warn about code that uses variables and functions with internal linkage","Warn about code that uses variables and functions with internal linkage"}, | ||
[j]={{Z,904,"/// checkUndefinedButUsed - Check for undefined objects with internal linkage\n/// or that are inline.\nstatic void checkUndefinedButUsed(Sema &S) {\n for (const auto &Undef : Undefined) {\n if (S.isExternalWithNoLinkageType(VD)) {\n } else if (!VD->isExternallyVisible()) {\n if (!S.getLangOpts().OpenMP || !IsImplicitBase)\n S.Diag(VD->getLocation(), diag::warn_undefined_internal) << isa<VarDecl>(VD) << VD;"}}, | [j]={{Z,904,"/// checkUndefinedButUsed - Check for undefined objects with internal linkage\n/// or that are inline.\nstatic void checkUndefinedButUsed(Sema &S) {\n // ...\n for (const auto &Undef : Undefined) {\n // ...\n if (S.isExternalWithNoLinkageType(VD)) {\n // ...\n } else if (!VD->isExternallyVisible()) {\n // ...\n if (!S.getLangOpts().OpenMP || !IsImplicitBase)\n S.Diag(VD->getLocation(), diag::warn_undefined_internal) << isa<VarDecl>(VD) << VD;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/declare_variant.cpp"]={"clang/test/OpenMP/declare_variant.cpp:15:13: warning: function \'baz\' has internal linkage but is not defined [-Wundefined-internal]","clang/test/OpenMP/declare_variant.cpp:6:6: warning: function \'(anonymous namespace)::bar\' has internal linkage but is not defined [-Wundefined-internal]"} | ["clang/test/OpenMP/declare_variant.cpp"]={"clang/test/OpenMP/declare_variant.cpp:15:13: warning: function \'baz\' has internal linkage but is not defined [-Wundefined-internal]","clang/test/OpenMP/declare_variant.cpp:6:6: warning: function \'(anonymous namespace)::bar\' has internal linkage but is not defined [-Wundefined-internal]"} | ||
Line 8,672: | Line 8,672: | ||
[h]=D, | [h]=D, | ||
[i]={"82343aa9cf9c",1690639424,"[Clang] Backport static_assert messages fixes","[Clang] Backport static_assert messages fixes"}, | [i]={"82343aa9cf9c",1690639424,"[Clang] Backport static_assert messages fixes","[Clang] Backport static_assert messages fixes"}, | ||
[j]={{"clang/lib/Lex/LiteralSupport.cpp",1954,"void StringLiteralParser::init(ArrayRef<Token> StringToks) {\n /// (C99 5.1.1.2p1). The common case is only one string fragment.\n for (const Token &Tok : StringToks) {\n // Remember if we see any wide or utf-8/16/32 strings.\n // Also check for illegal concatenations.\n if (isUnevaluated() && Tok.getKind() != tok::string_literal) {\n if (Diags) {\n Diags->Report(Tok.getLocation(), Features.CPlusPlus26 ? diag::err_unevaluated_string_prefix : diag::warn_unevaluated_string_prefix) << Prefix << Features.CPlusPlus << FixItHint::CreateRemoval(Range);"}}, | [j]={{"clang/lib/Lex/LiteralSupport.cpp",1954,"void StringLiteralParser::init(ArrayRef<Token> StringToks) {\n // ...\n /// (C99 5.1.1.2p1). The common case is only one string fragment.\n for (const Token &Tok : StringToks) {\n // ...\n // Remember if we see any wide or utf-8/16/32 strings.\n // Also check for illegal concatenations.\n if (isUnevaluated() && Tok.getKind() != tok::string_literal) {\n if (Diags) {\n // ...\n Diags->Report(Tok.getLocation(), Features.CPlusPlus26 ? diag::err_unevaluated_string_prefix : diag::warn_unevaluated_string_prefix) << Prefix << Features.CPlusPlus << FixItHint::CreateRemoval(Range);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/dcl.dcl/dcl.link/p2.cpp"]={"clang/test/CXX/dcl.dcl/dcl.link/p2.cpp:11:8: warning: encoding prefix \'u8\' on an unevaluated string literal has no effect and is incompatible with c++2c [-Winvalid-unevaluated-string]","clang/test/CXX/dcl.dcl/dcl.link/p2.cpp:12:8: warning: encoding prefix \'L\' on an unevaluated string literal has no effect and is incompatible with c++2c [-Winvalid-unevaluated-string]","clang/test/CXX/dcl.dcl/dcl.link/p2.cpp:13:8: warning: encoding prefix \'u\' on an unevaluated string literal has no effect and is incompatible with c++2c [-Winvalid-unevaluated-string]","clang/test/CXX/dcl.dcl/dcl.link/p2.cpp:14:8: warning: encoding prefix \'U\' on an unevaluated string literal has no effect and is incompatible with c++2c [-Winvalid-unevaluated-string]"} | ["clang/test/CXX/dcl.dcl/dcl.link/p2.cpp"]={"clang/test/CXX/dcl.dcl/dcl.link/p2.cpp:11:8: warning: encoding prefix \'u8\' on an unevaluated string literal has no effect and is incompatible with c++2c [-Winvalid-unevaluated-string]","clang/test/CXX/dcl.dcl/dcl.link/p2.cpp:12:8: warning: encoding prefix \'L\' on an unevaluated string literal has no effect and is incompatible with c++2c [-Winvalid-unevaluated-string]","clang/test/CXX/dcl.dcl/dcl.link/p2.cpp:13:8: warning: encoding prefix \'u\' on an unevaluated string literal has no effect and is incompatible with c++2c [-Winvalid-unevaluated-string]","clang/test/CXX/dcl.dcl/dcl.link/p2.cpp:14:8: warning: encoding prefix \'U\' on an unevaluated string literal has no effect and is incompatible with c++2c [-Winvalid-unevaluated-string]"} | ||
Line 8,690: | Line 8,690: | ||
[h]=q, | [h]=q, | ||
[i]={"5cd57177a51a",1471369451,"[ObjC] Warn on unguarded use of partial declaration","[ObjC] Warn on unguarded use of partial declaration"}, | [i]={"5cd57177a51a",1471369451,"[ObjC] Warn on unguarded use of partial declaration","[ObjC] Warn on unguarded use of partial declaration"}, | ||
[j]={{Tc,387,"/// Actually emit an availability diagnostic for a reference to an unavailable\n/// decl.\n///\n/// \\param Ctx The context that the reference occurred in\n/// \\param ReferringDecl The exact declaration that was referenced.\n/// \\param OffendingDecl A related decl to \\c ReferringDecl that has an\n/// availability attribute corresponding to \\c K attached to it. Note that this\n/// may not be the same as ReferringDecl, i.e. if an EnumDecl is annotated and\n/// we refer to a member EnumConstantDecl, ReferringDecl is the EnumConstantDecl\n/// and OffendingDecl is the EnumDecl.\nstatic void DoEmitAvailabilityWarning(Sema &S, AvailabilityResult K, Decl *Ctx, const NamedDecl *ReferringDecl, const NamedDecl *OffendingDecl, StringRef Message, ArrayRef<SourceLocation> Locs, const ObjCInterfaceDecl *UnknownObjCClass, const ObjCPropertyDecl *ObjCProperty, bool ObjCPropertyAccess) {\n case AR_NotYetIntroduced: {\n unsigned Warning = UseNewWarning ? diag::warn_unguarded_availability_new : diag::warn_unguarded_availability;"},{Tc,772,"void DiagnoseUnguardedAvailability::DiagnoseDeclAvailability(NamedDecl *D, SourceRange Range, ObjCInterfaceDecl *ReceiverClass) {\n if (Result != AR_Available) {\n unsigned DiagKind = shouldDiagnoseAvailabilityByDefault(SemaRef.Context, SemaRef.Context.getTargetInfo().getPlatformMinVersion(), Introduced) ? diag::warn_unguarded_availability_new : diag::warn_unguarded_availability;"}}, | [j]={{Tc,387,"/// Actually emit an availability diagnostic for a reference to an unavailable\n/// decl.\n///\n/// \\param Ctx The context that the reference occurred in\n/// \\param ReferringDecl The exact declaration that was referenced.\n/// \\param OffendingDecl A related decl to \\c ReferringDecl that has an\n/// availability attribute corresponding to \\c K attached to it. Note that this\n/// may not be the same as ReferringDecl, i.e. if an EnumDecl is annotated and\n/// we refer to a member EnumConstantDecl, ReferringDecl is the EnumConstantDecl\n/// and OffendingDecl is the EnumDecl.\nstatic void DoEmitAvailabilityWarning(Sema &S, AvailabilityResult K, Decl *Ctx, const NamedDecl *ReferringDecl, const NamedDecl *OffendingDecl, StringRef Message, ArrayRef<SourceLocation> Locs, const ObjCInterfaceDecl *UnknownObjCClass, const ObjCPropertyDecl *ObjCProperty, bool ObjCPropertyAccess) {\n // ...\n case AR_NotYetIntroduced: {\n // ...\n unsigned Warning = UseNewWarning ? diag::warn_unguarded_availability_new : diag::warn_unguarded_availability;"},{Tc,772,"void DiagnoseUnguardedAvailability::DiagnoseDeclAvailability(NamedDecl *D, SourceRange Range, ObjCInterfaceDecl *ReceiverClass) {\n // ...\n if (Result != AR_Available) {\n // ...\n unsigned DiagKind = shouldDiagnoseAvailabilityByDefault(SemaRef.Context, SemaRef.Context.getTargetInfo().getPlatformMinVersion(), Introduced) ? diag::warn_unguarded_availability_new : diag::warn_unguarded_availability;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/objc-implementation-attrs.m"]={"clang/test/Parser/objc-implementation-attrs.m:29:3: warning: \'unavail_int\' is only available on macOS 1000 or newer [-Wunguarded-availability-new]"} | ["clang/test/Parser/objc-implementation-attrs.m"]={"clang/test/Parser/objc-implementation-attrs.m:29:3: warning: \'unavail_int\' is only available on macOS 1000 or newer [-Wunguarded-availability-new]"} | ||
Line 8,707: | Line 8,707: | ||
[h]=q, | [h]=q, | ||
[i]={"c9a369fbecd5",1498150944,"[Sema] Add -Wunguarded-availability-new","[Sema] Add -Wunguarded-availability-new"}, | [i]={"c9a369fbecd5",1498150944,"[Sema] Add -Wunguarded-availability-new","[Sema] Add -Wunguarded-availability-new"}, | ||
[j]={{Tc,386,"/// Actually emit an availability diagnostic for a reference to an unavailable\n/// decl.\n///\n/// \\param Ctx The context that the reference occurred in\n/// \\param ReferringDecl The exact declaration that was referenced.\n/// \\param OffendingDecl A related decl to \\c ReferringDecl that has an\n/// availability attribute corresponding to \\c K attached to it. Note that this\n/// may not be the same as ReferringDecl, i.e. if an EnumDecl is annotated and\n/// we refer to a member EnumConstantDecl, ReferringDecl is the EnumConstantDecl\n/// and OffendingDecl is the EnumDecl.\nstatic void DoEmitAvailabilityWarning(Sema &S, AvailabilityResult K, Decl *Ctx, const NamedDecl *ReferringDecl, const NamedDecl *OffendingDecl, StringRef Message, ArrayRef<SourceLocation> Locs, const ObjCInterfaceDecl *UnknownObjCClass, const ObjCPropertyDecl *ObjCProperty, bool ObjCPropertyAccess) {\n case AR_NotYetIntroduced: {\n unsigned Warning = UseNewWarning ? diag::warn_unguarded_availability_new : diag::warn_unguarded_availability;"},{Tc,771,"void DiagnoseUnguardedAvailability::DiagnoseDeclAvailability(NamedDecl *D, SourceRange Range, ObjCInterfaceDecl *ReceiverClass) {\n if (Result != AR_Available) {\n unsigned DiagKind = shouldDiagnoseAvailabilityByDefault(SemaRef.Context, SemaRef.Context.getTargetInfo().getPlatformMinVersion(), Introduced) ? diag::warn_unguarded_availability_new : diag::warn_unguarded_availability;"}} | [j]={{Tc,386,"/// Actually emit an availability diagnostic for a reference to an unavailable\n/// decl.\n///\n/// \\param Ctx The context that the reference occurred in\n/// \\param ReferringDecl The exact declaration that was referenced.\n/// \\param OffendingDecl A related decl to \\c ReferringDecl that has an\n/// availability attribute corresponding to \\c K attached to it. Note that this\n/// may not be the same as ReferringDecl, i.e. if an EnumDecl is annotated and\n/// we refer to a member EnumConstantDecl, ReferringDecl is the EnumConstantDecl\n/// and OffendingDecl is the EnumDecl.\nstatic void DoEmitAvailabilityWarning(Sema &S, AvailabilityResult K, Decl *Ctx, const NamedDecl *ReferringDecl, const NamedDecl *OffendingDecl, StringRef Message, ArrayRef<SourceLocation> Locs, const ObjCInterfaceDecl *UnknownObjCClass, const ObjCPropertyDecl *ObjCProperty, bool ObjCPropertyAccess) {\n // ...\n case AR_NotYetIntroduced: {\n // ...\n unsigned Warning = UseNewWarning ? diag::warn_unguarded_availability_new : diag::warn_unguarded_availability;"},{Tc,771,"void DiagnoseUnguardedAvailability::DiagnoseDeclAvailability(NamedDecl *D, SourceRange Range, ObjCInterfaceDecl *ReceiverClass) {\n // ...\n if (Result != AR_Available) {\n // ...\n unsigned DiagKind = shouldDiagnoseAvailabilityByDefault(SemaRef.Context, SemaRef.Context.getTargetInfo().getPlatformMinVersion(), Introduced) ? diag::warn_unguarded_availability_new : diag::warn_unguarded_availability;"}} | ||
}, | }, | ||
["warn_unhandled_ms_attribute_ignored"]={ | ["warn_unhandled_ms_attribute_ignored"]={ | ||
Line 8,721: | Line 8,721: | ||
[h]=q, | [h]=q, | ||
[i]={"38c9ad9e725c",1340113766,"Improves parsing and semantic analysis for MS __declspec attributes. This includes support for the ...","Improves parsing and semantic analysis for MS __declspec attributes. This includes support for the align (which fixes PR12631)."}, | [i]={"38c9ad9e725c",1340113766,"Improves parsing and semantic analysis for MS __declspec attributes. This includes support for the ...","Improves parsing and semantic analysis for MS __declspec attributes. This includes support for the align (which fixes PR12631)."}, | ||
[j]={{C,8734,"/// 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",497,"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();"}}, | [j]={{C,8734,"/// 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 // ...\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",497,"static Attr *ProcessStmtAttribute(Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range) {\n // ...\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();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/MicrosoftExtensions.c"]={"clang/test/Parser/MicrosoftExtensions.c:67:19: warning: __declspec attribute \'frobble\' is not supported [-Wignored-attributes]","clang/test/Parser/MicrosoftExtensions.c:69:19: warning: __declspec attribute \'\"testing\"\' is not supported [-Wignored-attributes]","clang/test/Parser/MicrosoftExtensions.c:81:30: warning: __declspec attribute \'frobble\' is not supported [-Wignored-attributes]","clang/test/Parser/MicrosoftExtensions.c:81:38: warning: __declspec attribute \'\"testing\"\' is not supported [-Wignored-attributes]","clang/test/Parser/MicrosoftExtensions.c:82:19: warning: __declspec attribute \'unknown\' is not supported [-Wignored-attributes]"} | ["clang/test/Parser/MicrosoftExtensions.c"]={"clang/test/Parser/MicrosoftExtensions.c:67:19: warning: __declspec attribute \'frobble\' is not supported [-Wignored-attributes]","clang/test/Parser/MicrosoftExtensions.c:69:19: warning: __declspec attribute \'\"testing\"\' is not supported [-Wignored-attributes]","clang/test/Parser/MicrosoftExtensions.c:81:30: warning: __declspec attribute \'frobble\' is not supported [-Wignored-attributes]","clang/test/Parser/MicrosoftExtensions.c:81:38: warning: __declspec attribute \'\"testing\"\' is not supported [-Wignored-attributes]","clang/test/Parser/MicrosoftExtensions.c:82:19: warning: __declspec attribute \'unknown\' is not supported [-Wignored-attributes]"} | ||
Line 8,738: | Line 8,738: | ||
[h]=q, | [h]=q, | ||
[i]={"c1fb862fda60",1270059813,"Patch implements gcc\'s -Wno-protocol option to suppress warning","Patch implements gcc\'s -Wno-protocol option to suppress warning"}, | [i]={"c1fb862fda60",1270059813,"Patch implements gcc\'s -Wno-protocol option to suppress warning","Patch implements gcc\'s -Wno-protocol option to suppress warning"}, | ||
[j]={{P,2793,"/// CheckProtocolMethodDefs - This routine checks unimplemented methods\n/// Declared in protocol, and those referenced by it.\nstatic void CheckProtocolMethodDefs(Sema &S, ObjCImplDecl *Impl, ObjCProtocolDecl *PDecl, bool &IncompleteImpl, const Sema::SelectorSet &InsMap, const Sema::SelectorSet &ClsMap, ObjCContainerDecl *CDecl, LazyProtocolNameSet &ProtocolsExplictImpl) {\n // check unimplemented instance methods.\n if (!NSIDecl)\n for (auto *method : PDecl->instance_methods()) {\n if (method->getImplementationControl() != ObjCMethodDecl::Optional && !method->isPropertyAccessor() && !InsMap.count(method->getSelector()) && (!Super || !Super->lookupMethod(method->getSelector(), true /* instance */, false /* shallowCategory */, true /* followsSuper */, nullptr /* category */))) {\n unsigned DIAG = diag::warn_unimplemented_protocol_method;"},{P,2815,"/// CheckProtocolMethodDefs - This routine checks unimplemented methods\n/// Declared in protocol, and those referenced by it.\nstatic void CheckProtocolMethodDefs(Sema &S, ObjCImplDecl *Impl, ObjCProtocolDecl *PDecl, bool &IncompleteImpl, const Sema::SelectorSet &InsMap, const Sema::SelectorSet &ClsMap, ObjCContainerDecl *CDecl, LazyProtocolNameSet &ProtocolsExplictImpl) {\n // check unimplemented class methods\n for (auto *method : PDecl->class_methods()) {\n if (method->getImplementationControl() != ObjCMethodDecl::Optional && !ClsMap.count(method->getSelector()) && (!Super || !Super->lookupMethod(method->getSelector(), false /* class method */, false /* shallowCategoryLookup */, true /* followSuper */, nullptr /* category */))) {\n unsigned DIAG = diag::warn_unimplemented_protocol_method;"}}, | [j]={{P,2793,"/// CheckProtocolMethodDefs - This routine checks unimplemented methods\n/// Declared in protocol, and those referenced by it.\nstatic void CheckProtocolMethodDefs(Sema &S, ObjCImplDecl *Impl, ObjCProtocolDecl *PDecl, bool &IncompleteImpl, const Sema::SelectorSet &InsMap, const Sema::SelectorSet &ClsMap, ObjCContainerDecl *CDecl, LazyProtocolNameSet &ProtocolsExplictImpl) {\n // ...\n // check unimplemented instance methods.\n if (!NSIDecl)\n for (auto *method : PDecl->instance_methods()) {\n if (method->getImplementationControl() != ObjCMethodDecl::Optional && !method->isPropertyAccessor() && !InsMap.count(method->getSelector()) && (!Super || !Super->lookupMethod(method->getSelector(), true /* instance */, false /* shallowCategory */, true /* followsSuper */, nullptr /* category */))) {\n // ...\n unsigned DIAG = diag::warn_unimplemented_protocol_method;"},{P,2815,"/// CheckProtocolMethodDefs - This routine checks unimplemented methods\n/// Declared in protocol, and those referenced by it.\nstatic void CheckProtocolMethodDefs(Sema &S, ObjCImplDecl *Impl, ObjCProtocolDecl *PDecl, bool &IncompleteImpl, const Sema::SelectorSet &InsMap, const Sema::SelectorSet &ClsMap, ObjCContainerDecl *CDecl, LazyProtocolNameSet &ProtocolsExplictImpl) {\n // ...\n // check unimplemented class methods\n for (auto *method : PDecl->class_methods()) {\n if (method->getImplementationControl() != ObjCMethodDecl::Optional && !ClsMap.count(method->getSelector()) && (!Super || !Super->lookupMethod(method->getSelector(), false /* class method */, false /* shallowCategoryLookup */, true /* followSuper */, nullptr /* category */))) {\n // ...\n unsigned DIAG = diag::warn_unimplemented_protocol_method;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/undef-protocol-methods-1.m"]={"clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'meth\' in protocol \'PROTO\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'meth:\' in protocol \'PROTO\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'cls_meth:\' in protocol \'PROTO\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'P1proto\' in protocol \'P1\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'ClsP1Proto\' in protocol \'P1\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'P3proto\' in protocol \'P3\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'ClsP3Proto\' in protocol \'P3\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'P2proto\' in protocol \'P2\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'ClsP2Proto\' in protocol \'P2\' not implemented [-Wprotocol]"} | ["clang/test/SemaObjC/undef-protocol-methods-1.m"]={"clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'meth\' in protocol \'PROTO\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'meth:\' in protocol \'PROTO\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'cls_meth:\' in protocol \'PROTO\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'P1proto\' in protocol \'P1\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'ClsP1Proto\' in protocol \'P1\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'P3proto\' in protocol \'P3\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'ClsP3Proto\' in protocol \'P3\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'P2proto\' in protocol \'P2\' not implemented [-Wprotocol]","clang/test/SemaObjC/undef-protocol-methods-1.m:28:17: warning: method \'ClsP2Proto\' in protocol \'P2\' not implemented [-Wprotocol]"} | ||
Line 8,756: | Line 8,756: | ||
[h]=q, | [h]=q, | ||
[i]={"6e7e8cc19d05",1279823060,"atch for implementation of objective-c\'s -Wselector","atch for implementation of objective-c\'s -Wselector"}, | [i]={"6e7e8cc19d05",1279823060,"atch for implementation of objective-c\'s -Wselector","atch for implementation of objective-c\'s -Wselector"}, | ||
[j]={{P,5274,"void Sema::DiagnoseUseOfUnimplementedSelectors() {\n for (auto &SelectorAndLocation : ReferencedSelectors) {\n if (!LookupImplementedMethodInGlobalPool(Sel))\n Diag(Loc, diag::warn_unimplemented_selector) << Sel;"}}, | [j]={{P,5274,"void Sema::DiagnoseUseOfUnimplementedSelectors() {\n // ...\n for (auto &SelectorAndLocation : ReferencedSelectors) {\n // ...\n if (!LookupImplementedMethodInGlobalPool(Sel))\n Diag(Loc, diag::warn_unimplemented_selector) << Sel;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/selector-3.m"]={"clang/test/SemaObjC/selector-3.m:28:13: warning: no method with selector \'length\' is implemented in this translation unit [-Wselector]"} | ["clang/test/SemaObjC/selector-3.m"]={"clang/test/SemaObjC/selector-3.m:28:13: warning: no method with selector \'length\' is implemented in this translation unit [-Wselector]"} | ||
Line 8,774: | Line 8,774: | ||
[h]=q, | [h]=q, | ||
[i]={"429fadb8e262",1331166170,"improve on diagnostic and provide a fixit hint when","improve on diagnostic and provide a fixit hint when"}, | [i]={"429fadb8e262",1331166170,"improve on diagnostic and provide a fixit hint when","improve on diagnostic and provide a fixit hint when"}, | ||
[j]={{E,1041,"/// DiagnoseUninitializedUse -- Helper function for diagnosing uses of an\n/// uninitialized variable. This manages the different forms of diagnostic\n/// emitted for particular types of uses. Returns true if the use was diagnosed\n/// as a warning. If a particular use is one we omit warnings for, returns\n/// false.\nstatic bool DiagnoseUninitializedUse(Sema &S, const VarDecl *VD, const UninitUse &Use, bool alwaysReportSelfInit = false) {\n if (const DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(Use.getUser())) {\n } else {\n if (VD->getType()->isBlockPointerType() && !VD->hasAttr<BlocksAttr>())\n S.Diag(BE->getBeginLoc(), diag::warn_uninit_byref_blockvar_captured_by_block) << VD->getDeclName() << VD->getType().getQualifiers().hasObjCLifetime();"}}, | [j]={{E,1041,"/// DiagnoseUninitializedUse -- Helper function for diagnosing uses of an\n/// uninitialized variable. This manages the different forms of diagnostic\n/// emitted for particular types of uses. Returns true if the use was diagnosed\n/// as a warning. If a particular use is one we omit warnings for, returns\n/// false.\nstatic bool DiagnoseUninitializedUse(Sema &S, const VarDecl *VD, const UninitUse &Use, bool alwaysReportSelfInit = false) {\n if (const DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(Use.getUser())) {\n // ...\n } else {\n // ...\n if (VD->getType()->isBlockPointerType() && !VD->hasAttr<BlocksAttr>())\n S.Diag(BE->getBeginLoc(), diag::warn_uninit_byref_blockvar_captured_by_block) << VD->getDeclName() << VD->getType().getQualifiers().hasObjCLifetime();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/FixIt/fixit-recursive-block.c"]={"clang/test/FixIt/fixit-recursive-block.c:8:30: warning: block pointer variable \'arc_fail\' is null when captured by block [-Wuninitialized]"} | ["clang/test/FixIt/fixit-recursive-block.c"]={"clang/test/FixIt/fixit-recursive-block.c:8:30: warning: block pointer variable \'arc_fail\' is null when captured by block [-Wuninitialized]"} | ||
Line 8,792: | Line 8,792: | ||
[h]=q, | [h]=q, | ||
[i]={rc,1576908663,xb,xb}, | [i]={rc,1576908663,xb,xb}, | ||
[j]={{E,998,"/// Diagnose uninitialized const reference usages.\nstatic bool DiagnoseUninitializedConstRefUse(Sema &S, const VarDecl *VD, const UninitUse &Use) {\n S.Diag(Use.getUser()->getBeginLoc(), diag::warn_uninit_const_reference) << VD->getDeclName() << Use.getUser()->getSourceRange();"},{E,2632,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n if (!Diags.isIgnored(diag::warn_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_sometimes_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_maybe_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_uninit_const_reference, D->getBeginLoc())) {"}}, | [j]={{E,998,"/// Diagnose uninitialized const reference usages.\nstatic bool DiagnoseUninitializedConstRefUse(Sema &S, const VarDecl *VD, const UninitUse &Use) {\n S.Diag(Use.getUser()->getBeginLoc(), diag::warn_uninit_const_reference) << VD->getDeclName() << Use.getUser()->getSourceRange();"},{E,2632,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n // ...\n if (!Diags.isIgnored(diag::warn_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_sometimes_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_maybe_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_uninit_const_reference, D->getBeginLoc())) {"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-uninitialized-const-reference.cpp"]={"clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:50:25: warning: variable \'l\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:52:21: warning: variable \'l1\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:54:45: warning: variable \'l2\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:29:17: warning: variable \'i\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:30:29: warning: variable \'j\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:31:26: warning: variable \'a1\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:34:24: warning: variable \'a3\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:35:16: warning: variable \'a4\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]"} | ["clang/test/SemaCXX/warn-uninitialized-const-reference.cpp"]={"clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:50:25: warning: variable \'l\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:52:21: warning: variable \'l1\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:54:45: warning: variable \'l2\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:29:17: warning: variable \'i\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:30:29: warning: variable \'j\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:31:26: warning: variable \'a1\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:34:24: warning: variable \'a3\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:35:16: warning: variable \'a4\' is uninitialized when passed as a const reference argument here [-Wuninitialized-const-reference]"} | ||
Line 8,809: | Line 8,809: | ||
[h]=q, | [h]=q, | ||
[i]={"33bf3e758d1d",1301219216,"Diagnose uninitialized uses of a variable within its own initializer.","Diagnose uninitialized uses of a variable within its own initializer."}, | [i]={"33bf3e758d1d",1301219216,"Diagnose uninitialized uses of a variable within its own initializer.","Diagnose uninitialized uses of a variable within its own initializer."}, | ||
[j]={{E,1030,"/// DiagnoseUninitializedUse -- Helper function for diagnosing uses of an\n/// uninitialized variable. This manages the different forms of diagnostic\n/// emitted for particular types of uses. Returns true if the use was diagnosed\n/// as a warning. If a particular use is one we omit warnings for, returns\n/// false.\nstatic bool DiagnoseUninitializedUse(Sema &S, const VarDecl *VD, const UninitUse &Use, bool alwaysReportSelfInit = false) {\n if (const DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(Use.getUser())) {\n // Inspect the initializer of the variable declaration which is\n // being referenced prior to its initialization. We emit\n // specialized diagnostics for self-initialization, and we\n // specifically avoid warning about self references which take the\n // form of:\n //\n // int x = x;\n //\n // This is used to indicate to GCC that \'x\' is intentionally left\n // uninitialized. Proven code paths which access \'x\' in\n // an uninitialized state after this will still warn.\n if (const Expr *Initializer = VD->getInit()) {\n if (CR.doesContainReference()) {\n S.Diag(DRE->getBeginLoc(), diag::warn_uninit_self_reference_in_init) << VD->getDeclName() << VD->getLocation() << DRE->getSourceRange();"},{H,12623,"// Visits an initialization expression to see if OrigDecl is evaluated in\n// its own initialization and throws a warning if it does.\nclass SelfReferenceChecker : public EvaluatedExprVisitor<SelfReferenceChecker> {\n void HandleDeclRefExpr(DeclRefExpr *DRE) {\n if (isReferenceType) {\n } else if (cast<VarDecl>(OrigDecl)->isStaticLocal()) {\n } else if (isa<TranslationUnitDecl>(OrigDecl->getDeclContext()) || isa<NamespaceDecl>(OrigDecl->getDeclContext()) || DRE->getDecl()->getType()->isRecordType()) {\n diag = diag::warn_uninit_self_reference_in_init;"}}, | [j]={{E,1030,"/// DiagnoseUninitializedUse -- Helper function for diagnosing uses of an\n/// uninitialized variable. This manages the different forms of diagnostic\n/// emitted for particular types of uses. Returns true if the use was diagnosed\n/// as a warning. If a particular use is one we omit warnings for, returns\n/// false.\nstatic bool DiagnoseUninitializedUse(Sema &S, const VarDecl *VD, const UninitUse &Use, bool alwaysReportSelfInit = false) {\n if (const DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(Use.getUser())) {\n // Inspect the initializer of the variable declaration which is\n // being referenced prior to its initialization. We emit\n // specialized diagnostics for self-initialization, and we\n // specifically avoid warning about self references which take the\n // form of:\n //\n // int x = x;\n //\n // This is used to indicate to GCC that \'x\' is intentionally left\n // uninitialized. Proven code paths which access \'x\' in\n // an uninitialized state after this will still warn.\n if (const Expr *Initializer = VD->getInit()) {\n // ...\n if (CR.doesContainReference()) {\n S.Diag(DRE->getBeginLoc(), diag::warn_uninit_self_reference_in_init) << VD->getDeclName() << VD->getLocation() << DRE->getSourceRange();"},{H,12623,"// Visits an initialization expression to see if OrigDecl is evaluated in\n// its own initialization and throws a warning if it does.\nclass SelfReferenceChecker : public EvaluatedExprVisitor<SelfReferenceChecker> {\n // ...\n void HandleDeclRefExpr(DeclRefExpr *DRE) {\n // ...\n if (isReferenceType) {\n // ...\n } else if (cast<VarDecl>(OrigDecl)->isStaticLocal()) {\n // ...\n } else if (isa<TranslationUnitDecl>(OrigDecl->getDeclContext()) || isa<NamespaceDecl>(OrigDecl->getDeclContext()) || DRE->getDecl()->getType()->isRecordType()) {\n diag = diag::warn_uninit_self_reference_in_init;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-uninitialized-const-reference.cpp"]={"clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:33:22: warning: variable \'a2\' is uninitialized when used within its own initialization [-Wuninitialized]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:35:16: warning: variable \'a4\' is uninitialized when used within its own initialization [-Wuninitialized]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:30:11: warning: variable \'j\' is uninitialized when used within its own initialization [-Wuninitialized]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:32:21: warning: variable \'k\' is uninitialized when used within its own initialization [-Wuninitialized]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:36:11: warning: variable \'n\' is uninitialized when used within its own initialization [-Wuninitialized]"} | ["clang/test/SemaCXX/warn-uninitialized-const-reference.cpp"]={"clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:33:22: warning: variable \'a2\' is uninitialized when used within its own initialization [-Wuninitialized]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:35:16: warning: variable \'a4\' is uninitialized when used within its own initialization [-Wuninitialized]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:30:11: warning: variable \'j\' is uninitialized when used within its own initialization [-Wuninitialized]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:32:21: warning: variable \'k\' is uninitialized when used within its own initialization [-Wuninitialized]","clang/test/SemaCXX/warn-uninitialized-const-reference.cpp:36:11: warning: variable \'n\' is uninitialized when used within its own initialization [-Wuninitialized]"} | ||
Line 8,826: | Line 8,826: | ||
[h]=q, | [h]=q, | ||
[i]={"d799a2b3b91f",1345452742,"Better wording for reference self-initialization warning.","Better wording for reference self-initialization warning."}, | [i]={"d799a2b3b91f",1345452742,"Better wording for reference self-initialization warning.","Better wording for reference self-initialization warning."}, | ||
[j]={{H,12617,"// Visits an initialization expression to see if OrigDecl is evaluated in\n// its own initialization and throws a warning if it does.\nclass SelfReferenceChecker : public EvaluatedExprVisitor<SelfReferenceChecker> {\n void HandleDeclRefExpr(DeclRefExpr *DRE) {\n if (isReferenceType) {\n diag = diag::warn_uninit_self_reference_in_reference_init;"}}, | [j]={{H,12617,"// Visits an initialization expression to see if OrigDecl is evaluated in\n// its own initialization and throws a warning if it does.\nclass SelfReferenceChecker : public EvaluatedExprVisitor<SelfReferenceChecker> {\n // ...\n void HandleDeclRefExpr(DeclRefExpr *DRE) {\n // ...\n if (isReferenceType) {\n diag = diag::warn_uninit_self_reference_in_reference_init;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Analysis/stack-addr-ps.cpp"]={"clang/test/Analysis/stack-addr-ps.cpp:94:12: warning: reference \'i\' is not yet bound to a value when used within its own initialization [-Wuninitialized]"} | ["clang/test/Analysis/stack-addr-ps.cpp"]={"clang/test/Analysis/stack-addr-ps.cpp:94:12: warning: reference \'i\' is not yet bound to a value when used within its own initialization [-Wuninitialized]"} | ||
Line 8,844: | Line 8,844: | ||
[h]=q, | [h]=q, | ||
[i]={"bcf848f70a42",1295982828,"Teach -Wuninitialized-experimental to also warn","Teach -Wuninitialized-experimental to also warn"}, | [i]={"bcf848f70a42",1295982828,"Teach -Wuninitialized-experimental to also warn","Teach -Wuninitialized-experimental to also warn"}, | ||
[j]={{E,834,"/// DiagUninitUse -- Helper function to produce a diagnostic for an\n/// uninitialized use of a variable.\nstatic void DiagUninitUse(Sema &S, const VarDecl *VD, const UninitUse &Use, bool IsCapturedByBlock) {\n case UninitUse::Always:\n S.Diag(Use.getUser()->getBeginLoc(), diag::warn_uninit_var) << VD->getDeclName() << IsCapturedByBlock << Use.getUser()->getSourceRange();"},{E,2629,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n if (!Diags.isIgnored(diag::warn_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_sometimes_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_maybe_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_uninit_const_reference, D->getBeginLoc())) {"}}, | [j]={{E,834,"/// DiagUninitUse -- Helper function to produce a diagnostic for an\n/// uninitialized use of a variable.\nstatic void DiagUninitUse(Sema &S, const VarDecl *VD, const UninitUse &Use, bool IsCapturedByBlock) {\n // ...\n case UninitUse::Always:\n S.Diag(Use.getUser()->getBeginLoc(), diag::warn_uninit_var) << VD->getDeclName() << IsCapturedByBlock << Use.getUser()->getSourceRange();"},{E,2629,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, sema::FunctionScopeInfo *fscope, const Decl *D, QualType BlockType) {\n // ...\n if (!Diags.isIgnored(diag::warn_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_sometimes_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_maybe_uninit_var, D->getBeginLoc()) || !Diags.isIgnored(diag::warn_uninit_const_reference, D->getBeginLoc())) {"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Analysis/uninit-asm-goto.cpp"]={"clang/test/Analysis/uninit-asm-goto.cpp:108:10: warning: variable \'y\' is uninitialized when used here [-Wuninitialized]"} | ["clang/test/Analysis/uninit-asm-goto.cpp"]={"clang/test/Analysis/uninit-asm-goto.cpp:108:10: warning: variable \'y\' is uninitialized when used here [-Wuninitialized]"} | ||
Line 8,861: | Line 8,861: | ||
[h]=y, | [h]=y, | ||
[i]={"dd1bc0f1b5a6",1278582146,"Add support for differentiating between attributes ignored when handled and","Add support for differentiating between attributes ignored when handled and"}, | [i]={"dd1bc0f1b5a6",1278582146,"Add support for differentiating between attributes ignored when handled and","Add support for differentiating between attributes ignored when handled and"}, | ||
[j]={{"clang/lib/Parse/ParseDecl.cpp",1769,"void Parser::ProhibitCXX11Attributes(ParsedAttributes &Attrs, unsigned AttrDiagID, unsigned KeywordDiagID, bool DiagnoseEmptyAttrs, bool WarnOnUnknownAttrs) {\n for (const ParsedAttr &AL : Attrs) {\n if (AL.getKind() == ParsedAttr::UnknownAttribute) {\n if (WarnOnUnknownAttrs)\n Diag(AL.getLoc(), diag::warn_unknown_attribute_ignored) << AL << AL.getRange();"},{C,2231,"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();"},{C,8735,"/// 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();"},{C,9618,"/// checkUnusedDeclAttributes - Check a list of attributes to see if it\n/// contains any decl attributes that we should warn about.\nstatic void checkUnusedDeclAttributes(Sema &S, const ParsedAttributesView &A) {\n for (const ParsedAttr &AL : A) {\n if (AL.getKind() == ParsedAttr::UnknownAttribute) {\n S.Diag(AL.getLoc(), diag::warn_unknown_attribute_ignored) << AL << AL.getRange();"},{db,2824,"/// ActOnBaseSpecifier - Parsed a base specifier. A base specifier is\n/// one entry in the base class list of a class specifier, for\n/// example:\n/// class foo : public bar, virtual private baz {\n/// \'public bar\' and \'virtual private baz\' are each base-specifiers.\nBaseResult Sema::ActOnBaseSpecifier(Decl *classdecl, SourceRange SpecifierRange, const ParsedAttributesView &Attributes, bool Virtual, AccessSpecifier Access, ParsedType basetype, SourceLocation BaseLoc, SourceLocation EllipsisLoc) {\n // We do not support any C++11 attributes on base-specifiers yet.\n // Diagnose any attributes we see.\n for (const ParsedAttr &AL : Attributes) {\n if (AL.getKind() == ParsedAttr::UnknownAttribute)\n Diag(AL.getLoc(), diag::warn_unknown_attribute_ignored) << AL << AL.getRange();"},{"clang/lib/Sema/SemaStmtAttr.cpp",498,"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();"},{T,8580,"static void processTypeAttrs(TypeProcessingState &state, QualType &type, TypeAttrLocation TAL, const ParsedAttributesView &attrs) {\n for (ParsedAttr &attr : AttrsCopy) {\n case ParsedAttr::UnknownAttribute:\n if (attr.isStandardAttributeSyntax()) {\n state.getSema().Diag(attr.getLoc(), diag::warn_unknown_attribute_ignored) << attr << attr.getRange();"}}, | [j]={{"clang/lib/Parse/ParseDecl.cpp",1769,"void Parser::ProhibitCXX11Attributes(ParsedAttributes &Attrs, unsigned AttrDiagID, unsigned KeywordDiagID, bool DiagnoseEmptyAttrs, bool WarnOnUnknownAttrs) {\n // ...\n for (const ParsedAttr &AL : Attrs) {\n // ...\n if (AL.getKind() == ParsedAttr::UnknownAttribute) {\n if (WarnOnUnknownAttrs)\n Diag(AL.getLoc(), diag::warn_unknown_attribute_ignored) << AL << AL.getRange();"},{C,2231,"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();"},{C,8735,"/// 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 // ...\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();"},{C,9618,"/// checkUnusedDeclAttributes - Check a list of attributes to see if it\n/// contains any decl attributes that we should warn about.\nstatic void checkUnusedDeclAttributes(Sema &S, const ParsedAttributesView &A) {\n for (const ParsedAttr &AL : A) {\n // ...\n if (AL.getKind() == ParsedAttr::UnknownAttribute) {\n S.Diag(AL.getLoc(), diag::warn_unknown_attribute_ignored) << AL << AL.getRange();"},{db,2824,"/// ActOnBaseSpecifier - Parsed a base specifier. A base specifier is\n/// one entry in the base class list of a class specifier, for\n/// example:\n/// class foo : public bar, virtual private baz {\n/// \'public bar\' and \'virtual private baz\' are each base-specifiers.\nBaseResult Sema::ActOnBaseSpecifier(Decl *classdecl, SourceRange SpecifierRange, const ParsedAttributesView &Attributes, bool Virtual, AccessSpecifier Access, ParsedType basetype, SourceLocation BaseLoc, SourceLocation EllipsisLoc) {\n // ...\n // We do not support any C++11 attributes on base-specifiers yet.\n // Diagnose any attributes we see.\n for (const ParsedAttr &AL : Attributes) {\n // ...\n if (AL.getKind() == ParsedAttr::UnknownAttribute)\n Diag(AL.getLoc(), diag::warn_unknown_attribute_ignored) << AL << AL.getRange();"},{"clang/lib/Sema/SemaStmtAttr.cpp",498,"static Attr *ProcessStmtAttribute(Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range) {\n // ...\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();"},{T,8580,"static void processTypeAttrs(TypeProcessingState &state, QualType &type, TypeAttrLocation TAL, const ParsedAttributesView &attrs) {\n // ...\n for (ParsedAttr &attr : AttrsCopy) {\n // ...\n case ParsedAttr::UnknownAttribute:\n if (attr.isStandardAttributeSyntax()) {\n state.getSema().Diag(attr.getLoc(), diag::warn_unknown_attribute_ignored) << attr << attr.getRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p2-1z.cpp"]={"clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p2-1z.cpp:3:3: warning: unknown attribute \'disable_tail_calls\' ignored [-Wunknown-attributes]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p2-1z.cpp:3:23: warning: unknown attribute \'noduplicate\' ignored [-Wunknown-attributes]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p2-1z.cpp:15:9: warning: unknown attribute \'unknown_attr\' ignored [-Wunknown-attributes]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p2-1z.cpp:16:9: warning: unknown attribute \'something\' ignored [-Wunknown-attributes]"} | ["clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p2-1z.cpp"]={"clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p2-1z.cpp:3:3: warning: unknown attribute \'disable_tail_calls\' ignored [-Wunknown-attributes]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p2-1z.cpp:3:23: warning: unknown attribute \'noduplicate\' ignored [-Wunknown-attributes]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p2-1z.cpp:15:9: warning: unknown attribute \'unknown_attr\' ignored [-Wunknown-attributes]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p2-1z.cpp:16:9: warning: unknown attribute \'something\' ignored [-Wunknown-attributes]"} | ||
Line 8,879: | Line 8,879: | ||
[h]="Documentation Issue", | [h]="Documentation Issue", | ||
[i]={"5b637078e1ab",1367622920,"[Doc parsing] Provide diagnostics for unknown documentation ","[Doc parsing] Provide diagnostics for unknown documentation "}, | [i]={"5b637078e1ab",1367622920,"[Doc parsing] Provide diagnostics for unknown documentation ","[Doc parsing] Provide diagnostics for unknown documentation "}, | ||
[j]={{"clang/lib/AST/CommentLexer.cpp",417,"void Lexer::lexCommentText(Token &T) {\n case \'@\': {\n if (!Info) {\n if ((Info = Traits.getTypoCorrectCommandInfo(CommandName))) {\n } else {\n Diag(T.getLocation(), diag::warn_unknown_comment_command_name) << SourceRange(T.getLocation(), T.getEndLocation());"},{H,14660,"void Sema::ActOnDocumentableDecls(ArrayRef<Decl *> Group) {\n if (Diags.isIgnored(diag::warn_doc_param_not_found, Group[0]->getLocation()) && Diags.isIgnored(diag::warn_unknown_comment_command_name, Group[0]->getLocation()))"}}, | [j]={{"clang/lib/AST/CommentLexer.cpp",417,"void Lexer::lexCommentText(Token &T) {\n // ...\n case \'\\\\\':\n case \'@\': {\n // ...\n if (!Info) {\n if ((Info = Traits.getTypoCorrectCommandInfo(CommandName))) {\n // ...\n } else {\n // ...\n Diag(T.getLocation(), diag::warn_unknown_comment_command_name) << SourceRange(T.getLocation(), T.getEndLocation());"},{H,14660,"void Sema::ActOnDocumentableDecls(ArrayRef<Decl *> Group) {\n // ...\n if (Diags.isIgnored(diag::warn_doc_param_not_found, Group[0]->getLocation()) && Diags.isIgnored(diag::warn_unknown_comment_command_name, Group[0]->getLocation()))"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-documentation.m"]={"clang/test/Sema/warn-documentation.m:156:1: warning: unknown command tag name [-Wdocumentation-unknown-command]","clang/test/Sema/warn-documentation.m:178:5: warning: unknown command tag name [-Wdocumentation-unknown-command]"} | ["clang/test/Sema/warn-documentation.m"]={"clang/test/Sema/warn-documentation.m:156:1: warning: unknown command tag name [-Wdocumentation-unknown-command]","clang/test/Sema/warn-documentation.m:178:5: warning: unknown command tag name [-Wdocumentation-unknown-command]"} | ||
Line 8,896: | Line 8,896: | ||
[h]=B, | [h]=B, | ||
[i]={Yb,1582847864,tb,tb}, | [i]={Yb,1582847864,tb,tb}, | ||
[j]={{O,2244,"/// Parsing of declarative OpenMP directives.\n///\n/// threadprivate-directive:\n/// annot_pragma_openmp \'threadprivate\' simple-variable-list\n/// annot_pragma_openmp_end\n///\n/// allocate-directive:\n/// annot_pragma_openmp \'allocate\' simple-variable-list [<clause>]\n/// annot_pragma_openmp_end\n///\n/// declare-reduction-directive:\n/// annot_pragma_openmp \'declare\' \'reduction\' [...]\n/// annot_pragma_openmp_end\n///\n/// declare-mapper-directive:\n/// annot_pragma_openmp \'declare\' \'mapper\' \'(\' [<mapper-identifer> \':\']\n/// <type> <var> \')\' [<clause>[[,] <clause>] ... ]\n/// annot_pragma_openmp_end\n///\n/// declare-simd-directive:\n/// annot_pragma_openmp \'declare simd\' {<clause> [,]}\n/// annot_pragma_openmp_end\n/// <function declaration/definition>\n///\n/// requires directive:\n/// annot_pragma_openmp \'requires\' <clause> [[[,] <clause>] ... ]\n/// annot_pragma_openmp_end\n///\n/// assumes directive:\n/// annot_pragma_openmp \'assumes\' <clause> [[[,] <clause>] ... ]\n/// annot_pragma_openmp_end\n/// or\n/// annot_pragma_openmp \'begin assumes\' <clause> [[[,] <clause>] ... ]\n/// annot_pragma_openmp \'end assumes\'\n/// annot_pragma_openmp_end\n///\nParser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl(AccessSpecifier &AS, ParsedAttributes &Attrs, bool Delayed, DeclSpec::TST TagType, Decl *Tag) {\n case OMPD_begin_declare_variant: {\n std::function<void(StringRef)> DiagUnknownTrait = [this, Loc](StringRef ISATrait) {\n Diag(Loc, diag::warn_unknown_declare_variant_isa_trait) << ISATrait;"},{O,2604,"/// Parsing of declarative or executable OpenMP directives.\n///\n/// threadprivate-directive:\n/// annot_pragma_openmp \'threadprivate\' simple-variable-list\n/// annot_pragma_openmp_end\n///\n/// allocate-directive:\n/// annot_pragma_openmp \'allocate\' simple-variable-list\n/// annot_pragma_openmp_end\n///\n/// declare-reduction-directive:\n/// annot_pragma_openmp \'declare\' \'reduction\' \'(\' <reduction_id> \':\'\n/// <type> {\',\' <type>} \':\' <expression> \')\' [\'initializer\' \'(\'\n/// (\'omp_priv\' \'=\' <expression>|<function_call>) \')\']\n/// annot_pragma_openmp_end\n///\n/// declare-mapper-directive:\n/// annot_pragma_openmp \'declare\' \'mapper\' \'(\' [<mapper-identifer> \':\']\n/// <type> <var> \')\' [<clause>[[,] <clause>] ... ]\n/// annot_pragma_openmp_end\n///\n/// executable-directive:\n/// annot_pragma_openmp \'parallel\' | \'simd\' | \'for\' | \'sections\' |\n/// \'section\' | \'single\' | \'master\' | \'critical\' [ \'(\' <name> \')\' ] |\n/// \'parallel for\' | \'parallel sections\' | \'parallel master\' | \'task\' |\n/// \'taskyield\' | \'barrier\' | \'taskwait\' | \'flush\' | \'ordered\' | \'error\'\n/// | \'atomic\' | \'for simd\' | \'parallel for simd\' | \'target\' | \'target\n/// data\' | \'taskgroup\' | \'teams\' | \'taskloop\' | \'taskloop simd\' |\n/// \'master taskloop\' | \'master taskloop simd\' | \'parallel master\n/// taskloop\' | \'parallel master taskloop simd\' | \'distribute\' | \'target\n/// enter data\' | \'target exit data\' | \'target parallel\' | \'target\n/// parallel for\' | \'target update\' | \'distribute parallel for\' |\n/// \'distribute paralle for simd\' | \'distribute simd\' | \'target parallel\n/// for simd\' | \'target simd\' | \'teams distribute\' | \'teams distribute\n/// simd\' | \'teams distribute parallel for simd\' | \'teams distribute\n/// parallel for\' | \'target teams\' | \'target teams distribute\' | \'target\n/// teams distribute parallel for\' | \'target teams distribute parallel\n/// for simd\' | \'target teams distribute simd\' | \'masked\' |\n/// \'parallel masked\' {clause} annot_pragma_openmp_end\n///\nStmtResult Parser::ParseOpenMPDeclarativeOrExecutableDirective(ParsedStmtContext StmtCtx, bool ReadDirectiveWithinMetadirective) {\n case OMPD_metadirective: {\n std::function<void(StringRef)> DiagUnknownTrait = [this, Loc](StringRef ISATrait) {\n Diag(Loc, diag::warn_unknown_declare_variant_isa_trait) << ISATrait;"},{rb,7264,"ExprResult Sema::ActOnOpenMPCall(ExprResult Call, Scope *Scope, SourceLocation LParenLoc, MultiExprArg ArgExprs, SourceLocation RParenLoc, Expr *ExecConfig) {\n std::function<void(StringRef)> DiagUnknownTrait = [this, CE](StringRef ISATrait) {\n Diag(CE->getBeginLoc(), diag::warn_unknown_declare_variant_isa_trait) << ISATrait;"}}, | [j]={{O,2244,"/// Parsing of declarative OpenMP directives.\n///\n/// threadprivate-directive:\n/// annot_pragma_openmp \'threadprivate\' simple-variable-list\n/// annot_pragma_openmp_end\n///\n/// allocate-directive:\n/// annot_pragma_openmp \'allocate\' simple-variable-list [<clause>]\n/// annot_pragma_openmp_end\n///\n/// declare-reduction-directive:\n/// annot_pragma_openmp \'declare\' \'reduction\' [...]\n/// annot_pragma_openmp_end\n///\n/// declare-mapper-directive:\n/// annot_pragma_openmp \'declare\' \'mapper\' \'(\' [<mapper-identifer> \':\']\n/// <type> <var> \')\' [<clause>[[,] <clause>] ... ]\n/// annot_pragma_openmp_end\n///\n/// declare-simd-directive:\n/// annot_pragma_openmp \'declare simd\' {<clause> [,]}\n/// annot_pragma_openmp_end\n/// <function declaration/definition>\n///\n/// requires directive:\n/// annot_pragma_openmp \'requires\' <clause> [[[,] <clause>] ... ]\n/// annot_pragma_openmp_end\n///\n/// assumes directive:\n/// annot_pragma_openmp \'assumes\' <clause> [[[,] <clause>] ... ]\n/// annot_pragma_openmp_end\n/// or\n/// annot_pragma_openmp \'begin assumes\' <clause> [[[,] <clause>] ... ]\n/// annot_pragma_openmp \'end assumes\'\n/// annot_pragma_openmp_end\n///\nParser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl(AccessSpecifier &AS, ParsedAttributes &Attrs, bool Delayed, DeclSpec::TST TagType, Decl *Tag) {\n // ...\n case OMPD_begin_declare_variant: {\n // ...\n std::function<void(StringRef)> DiagUnknownTrait = [this, Loc](StringRef ISATrait) {\n // ...\n Diag(Loc, diag::warn_unknown_declare_variant_isa_trait) << ISATrait;"},{O,2604,"/// Parsing of declarative or executable OpenMP directives.\n///\n/// threadprivate-directive:\n/// annot_pragma_openmp \'threadprivate\' simple-variable-list\n/// annot_pragma_openmp_end\n///\n/// allocate-directive:\n/// annot_pragma_openmp \'allocate\' simple-variable-list\n/// annot_pragma_openmp_end\n///\n/// declare-reduction-directive:\n/// annot_pragma_openmp \'declare\' \'reduction\' \'(\' <reduction_id> \':\'\n/// <type> {\',\' <type>} \':\' <expression> \')\' [\'initializer\' \'(\'\n/// (\'omp_priv\' \'=\' <expression>|<function_call>) \')\']\n/// annot_pragma_openmp_end\n///\n/// declare-mapper-directive:\n/// annot_pragma_openmp \'declare\' \'mapper\' \'(\' [<mapper-identifer> \':\']\n/// <type> <var> \')\' [<clause>[[,] <clause>] ... ]\n/// annot_pragma_openmp_end\n///\n/// executable-directive:\n/// annot_pragma_openmp \'parallel\' | \'simd\' | \'for\' | \'sections\' |\n/// \'section\' | \'single\' | \'master\' | \'critical\' [ \'(\' <name> \')\' ] |\n/// \'parallel for\' | \'parallel sections\' | \'parallel master\' | \'task\' |\n/// \'taskyield\' | \'barrier\' | \'taskwait\' | \'flush\' | \'ordered\' | \'error\'\n/// | \'atomic\' | \'for simd\' | \'parallel for simd\' | \'target\' | \'target\n/// data\' | \'taskgroup\' | \'teams\' | \'taskloop\' | \'taskloop simd\' |\n/// \'master taskloop\' | \'master taskloop simd\' | \'parallel master\n/// taskloop\' | \'parallel master taskloop simd\' | \'distribute\' | \'target\n/// enter data\' | \'target exit data\' | \'target parallel\' | \'target\n/// parallel for\' | \'target update\' | \'distribute parallel for\' |\n/// \'distribute paralle for simd\' | \'distribute simd\' | \'target parallel\n/// for simd\' | \'target simd\' | \'teams distribute\' | \'teams distribute\n/// simd\' | \'teams distribute parallel for simd\' | \'teams distribute\n/// parallel for\' | \'target teams\' | \'target teams distribute\' | \'target\n/// teams distribute parallel for\' | \'target teams distribute parallel\n/// for simd\' | \'target teams distribute simd\' | \'masked\' |\n/// \'parallel masked\' {clause} annot_pragma_openmp_end\n///\nStmtResult Parser::ParseOpenMPDeclarativeOrExecutableDirective(ParsedStmtContext StmtCtx, bool ReadDirectiveWithinMetadirective) {\n // ...\n case OMPD_metadirective: {\n // ...\n std::function<void(StringRef)> DiagUnknownTrait = [this, Loc](StringRef ISATrait) {\n // ...\n Diag(Loc, diag::warn_unknown_declare_variant_isa_trait) << ISATrait;"},{rb,7264,"ExprResult Sema::ActOnOpenMPCall(ExprResult Call, Scope *Scope, SourceLocation LParenLoc, MultiExprArg ArgExprs, SourceLocation RParenLoc, Expr *ExecConfig) {\n // ...\n std::function<void(StringRef)> DiagUnknownTrait = [this, CE](StringRef ISATrait) {\n // ...\n Diag(CE->getBeginLoc(), diag::warn_unknown_declare_variant_isa_trait) << ISATrait;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/OpenMP/metadirective_messages.cpp"]={"clang/test/OpenMP/metadirective_messages.cpp:20:1: warning: isa trait \'some-unsupported-feature\' is not known to the current target; verify the spelling or consider restricting the context selector with the \'arch\' selector further [-Wsource-uses-openmp]"} | ["clang/test/OpenMP/metadirective_messages.cpp"]={"clang/test/OpenMP/metadirective_messages.cpp:20:1: warning: isa trait \'some-unsupported-feature\' is not known to the current target; verify the spelling or consider restricting the context selector with the \'arch\' selector further [-Wsource-uses-openmp]"} | ||
Line 8,913: | Line 8,913: | ||
[h]=y, | [h]=y, | ||
[i]={"3be1cb294f32",1407371061,"Use -Rblah, not -Wblah, to control remark diagnostics. This was always the","Use -Rblah, not -Wblah, to control remark diagnostics. This was always the"}, | [i]={"3be1cb294f32",1407371061,"Use -Rblah, not -Wblah, to control remark diagnostics. This was always the","Use -Rblah, not -Wblah, to control remark diagnostics. This was always the"}, | ||
[j]={{"clang/lib/Basic/Warnings.cpp",39,"// EmitUnknownDiagWarning - Emit a warning and typo hint for unknown warning\n// opts\nstatic void EmitUnknownDiagWarning(DiagnosticsEngine &Diags, diag::Flavor Flavor, StringRef Prefix, StringRef Opt) {\n Diags.Report(diag::warn_unknown_diag_option) << (Flavor == diag::Flavor::WarningOrError ? 0 : 1) << (Prefix.str() += std::string(Opt)) << !Suggestion.empty() << (Prefix.str() += std::string(Suggestion));"}}, | [j]={{"clang/lib/Basic/Warnings.cpp",39,"// EmitUnknownDiagWarning - Emit a warning and typo hint for unknown warning\n// opts\nstatic void EmitUnknownDiagWarning(DiagnosticsEngine &Diags, diag::Flavor Flavor, StringRef Prefix, StringRef Opt) {\n // ...\n Diags.Report(diag::warn_unknown_diag_option) << (Flavor == diag::Flavor::WarningOrError ? 0 : 1) << (Prefix.str() += std::string(Opt)) << !Suggestion.empty() << (Prefix.str() += std::string(Suggestion));"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Frontend/warning-options.cpp"]={"warning: unknown warning option \'-Wmonkey\'; did you mean \'-Wmove\'? [-Wunknown-warning-option]","warning: unknown warning option \'-Wno-monkey\'; did you mean \'-Wno-move\'? [-Wunknown-warning-option]","warning: unknown warning option \'-Wno-unused-command-line-arguments\'; did you mean \'-Wno-unused-command-line-argument\'? [-Wunknown-warning-option]","warning: unknown warning option \'-Wmodule-build\'; did you mean \'-Wmodule-conflict\'? [-Wunknown-warning-option]","warning: unknown remark option \'-Rmodule-built\'; did you mean \'-Rmodule-build\'? [-Wunknown-warning-option]"} | ["clang/test/Frontend/warning-options.cpp"]={"warning: unknown warning option \'-Wmonkey\'; did you mean \'-Wmove\'? [-Wunknown-warning-option]","warning: unknown warning option \'-Wno-monkey\'; did you mean \'-Wno-move\'? [-Wunknown-warning-option]","warning: unknown warning option \'-Wno-unused-command-line-arguments\'; did you mean \'-Wno-unused-command-line-argument\'? [-Wunknown-warning-option]","warning: unknown warning option \'-Wmodule-build\'; did you mean \'-Wmodule-conflict\'? [-Wunknown-warning-option]","warning: unknown remark option \'-Rmodule-built\'; did you mean \'-Rmodule-build\'? [-Wunknown-warning-option]"} | ||
Line 8,930: | Line 8,930: | ||
[h]=q, | [h]=q, | ||
[i]={"915df9968b65",1431714812,"Implement no_sanitize attribute.","Implement no_sanitize attribute."}, | [i]={"915df9968b65",1431714812,"Implement no_sanitize attribute.","Implement no_sanitize attribute."}, | ||
[j]={{C,8232,"static void handleNoSanitizeAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n for (unsigned I = 0, E = AL.getNumArgs(); I != E; ++I) {\n if (parseSanitizerValue(SanitizerName, /*AllowGroups=*/true) == SanitizerMask() && SanitizerName != \"coverage\")\n S.Diag(LiteralLoc, diag::warn_unknown_sanitizer_ignored) << SanitizerName;"}}, | [j]={{C,8232,"static void handleNoSanitizeAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n for (unsigned I = 0, E = AL.getNumArgs(); I != E; ++I) {\n // ...\n if (parseSanitizerValue(SanitizerName, /*AllowGroups=*/true) == SanitizerMask() && SanitizerName != \"coverage\")\n S.Diag(LiteralLoc, diag::warn_unknown_sanitizer_ignored) << SanitizerName;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/attr-no-sanitize.cpp"]={"clang/test/SemaCXX/attr-no-sanitize.cpp:10:28: warning: unknown sanitizer \'unknown\' ignored [-Wunknown-sanitizers]","clang/test/SemaCXX/attr-no-sanitize.cpp:35:37: warning: unknown sanitizer \'unknown\' ignored [-Wunknown-sanitizers]"} | ["clang/test/SemaCXX/attr-no-sanitize.cpp"]={"clang/test/SemaCXX/attr-no-sanitize.cpp:10:28: warning: unknown sanitizer \'unknown\' ignored [-Wunknown-sanitizers]","clang/test/SemaCXX/attr-no-sanitize.cpp:35:37: warning: unknown sanitizer \'unknown\' ignored [-Wunknown-sanitizers]"} | ||
Line 8,947: | Line 8,947: | ||
[h]=y, | [h]=y, | ||
[i]={"b089c1de5521",1261594417,"switch -Werror/-Wfatal-errors error conditions to use diagnostics instead","switch -Werror/-Wfatal-errors error conditions to use diagnostics instead"}, | [i]={"b089c1de5521",1261594417,"switch -Werror/-Wfatal-errors error conditions to use diagnostics instead","switch -Werror/-Wfatal-errors error conditions to use diagnostics instead"}, | ||
[j]={{"clang/lib/Basic/Warnings.cpp",143,"void clang::ProcessWarningOptions(DiagnosticsEngine &Diags, const DiagnosticOptions &Opts, bool ReportDiags) {\n // We parse the warning options twice. The first pass sets diagnostic state,\n // while the second pass reports warnings/errors. This has the effect that\n // we follow the more canonical \"last option wins\" paradigm when there are\n // conflicting options.\n for (unsigned Report = 0, ReportEnd = 2; Report != ReportEnd; ++Report) {\n for (unsigned i = 0, e = Opts.Warnings.size(); i != e; ++i) {\n // -Werror/-Wno-error is a special case, not controlled by the option\n // table. It also has the \"specifier\" form of -Werror=foo. GCC supports\n // the deprecated -Werror-implicit-function-declaration which is used by\n // a few projects.\n if (Opt.startswith(\"error\")) {\n if (Opt.size() > 5) { // Specifier must be present.\n if (Opt[5] != \'=\' && Opt.substr(5) != \"-implicit-function-declaration\") {\n if (Report)\n Diags.Report(diag::warn_unknown_warning_specifier) << \"-Werror\" << (\"-W\" + OrigOpt.str());"},{"clang/lib/Basic/Warnings.cpp",171,"void clang::ProcessWarningOptions(DiagnosticsEngine &Diags, const DiagnosticOptions &Opts, bool ReportDiags) {\n // We parse the warning options twice. The first pass sets diagnostic state,\n // while the second pass reports warnings/errors. This has the effect that\n // we follow the more canonical \"last option wins\" paradigm when there are\n // conflicting options.\n for (unsigned Report = 0, ReportEnd = 2; Report != ReportEnd; ++Report) {\n for (unsigned i = 0, e = Opts.Warnings.size(); i != e; ++i) {\n // -Wfatal-errors is yet another special case.\n if (Opt.startswith(\"fatal-errors\")) {\n if (Opt.size() != 12) {\n if ((Opt[12] != \'=\' && Opt[12] != \'-\') || Opt.size() == 13) {\n if (Report)\n Diags.Report(diag::warn_unknown_warning_specifier) << \"-Wfatal-errors\" << (\"-W\" + OrigOpt.str());"}}, | [j]={{"clang/lib/Basic/Warnings.cpp",143,"void clang::ProcessWarningOptions(DiagnosticsEngine &Diags, const DiagnosticOptions &Opts, bool ReportDiags) {\n // ...\n // We parse the warning options twice. The first pass sets diagnostic state,\n // while the second pass reports warnings/errors. This has the effect that\n // we follow the more canonical \"last option wins\" paradigm when there are\n // conflicting options.\n for (unsigned Report = 0, ReportEnd = 2; Report != ReportEnd; ++Report) {\n // ...\n for (unsigned i = 0, e = Opts.Warnings.size(); i != e; ++i) {\n // ...\n // -Werror/-Wno-error is a special case, not controlled by the option\n // table. It also has the \"specifier\" form of -Werror=foo. GCC supports\n // the deprecated -Werror-implicit-function-declaration which is used by\n // a few projects.\n if (Opt.startswith(\"error\")) {\n // ...\n if (Opt.size() > 5) { // Specifier must be present.\n if (Opt[5] != \'=\' && Opt.substr(5) != \"-implicit-function-declaration\") {\n if (Report)\n Diags.Report(diag::warn_unknown_warning_specifier) << \"-Werror\" << (\"-W\" + OrigOpt.str());"},{"clang/lib/Basic/Warnings.cpp",171,"void clang::ProcessWarningOptions(DiagnosticsEngine &Diags, const DiagnosticOptions &Opts, bool ReportDiags) {\n // ...\n // We parse the warning options twice. The first pass sets diagnostic state,\n // while the second pass reports warnings/errors. This has the effect that\n // we follow the more canonical \"last option wins\" paradigm when there are\n // conflicting options.\n for (unsigned Report = 0, ReportEnd = 2; Report != ReportEnd; ++Report) {\n // ...\n for (unsigned i = 0, e = Opts.Warnings.size(); i != e; ++i) {\n // ...\n // -Wfatal-errors is yet another special case.\n if (Opt.startswith(\"fatal-errors\")) {\n // ...\n if (Opt.size() != 12) {\n if ((Opt[12] != \'=\' && Opt[12] != \'-\') || Opt.size() == 13) {\n if (Report)\n Diags.Report(diag::warn_unknown_warning_specifier) << \"-Wfatal-errors\" << (\"-W\" + OrigOpt.str());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Frontend/warning-options.cpp"]={"warning: unknown -Werror warning specifier: \'-Werror-vla\' [-Wunknown-warning-option]"} | ["clang/test/Frontend/warning-options.cpp"]={"warning: unknown -Werror warning specifier: \'-Werror-vla\' [-Wunknown-warning-option]"} | ||
Line 8,965: | Line 8,965: | ||
[h]=q, | [h]=q, | ||
[i]={"ee5db8b5c4ab",1315518770,"Thread Safety: In C++0x Mutexes are the objects that control access to shared variables, while Lock...","Thread Safety: In C++0x Mutexes are the objects that control access to shared variables, while Locks are the objects that acquire and release Mutexes. We switch to this new terminology."}, | [i]={"ee5db8b5c4ab",1315518770,"Thread Safety: In C++0x Mutexes are the objects that control access to shared variables, while Lock...","Thread Safety: In C++0x Mutexes are the objects that control access to shared variables, while Locks are the objects that acquire and release Mutexes. We switch to this new terminology."}, | ||
[j]={{E,1873,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n void handleUnmatchedUnlock(StringRef Kind, Name LockName, SourceLocation Loc, SourceLocation LocPreviousUnlock) override {\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_unlock_but_no_lock) << Kind << LockName);"}}, | [j]={{E,1873,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n // ...\n void handleUnmatchedUnlock(StringRef Kind, Name LockName, SourceLocation Loc, SourceLocation LocPreviousUnlock) override {\n // ...\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_unlock_but_no_lock) << Kind << LockName);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-thread-safety-analysis.c"]={"clang/test/Sema/warn-thread-safety-analysis.c:123:3: warning: releasing mutex \'mu1\' that was not held [-Wthread-safety-analysis]","clang/test/Sema/warn-thread-safety-analysis.c:128:3: warning: releasing mutex \'mu1\' that was not held [-Wthread-safety-analysis]"} | ["clang/test/Sema/warn-thread-safety-analysis.c"]={"clang/test/Sema/warn-thread-safety-analysis.c:123:3: warning: releasing mutex \'mu1\' that was not held [-Wthread-safety-analysis]","clang/test/Sema/warn-thread-safety-analysis.c:128:3: warning: releasing mutex \'mu1\' that was not held [-Wthread-safety-analysis]"} | ||
Line 8,983: | Line 8,983: | ||
[h]=q, | [h]=q, | ||
[i]={"df115d9bf354",1395413328,"The release_capability, release_shared_capability and release_generic_capability functions are now f...","The release_capability, release_shared_capability and release_generic_capability functions are now functionally distinct for capability analysis. The unlock_function attribute maps directly to release_generic_capability."}, | [i]={"df115d9bf354",1395413328,"The release_capability, release_shared_capability and release_generic_capability functions are now f...","The release_capability, release_shared_capability and release_generic_capability functions are now functionally distinct for capability analysis. The unlock_function attribute maps directly to release_generic_capability."}, | ||
[j]={{E,1886,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n void handleIncorrectUnlockKind(StringRef Kind, Name LockName, LockKind Expected, LockKind Received, SourceLocation LocLocked, SourceLocation LocUnlock) override {\n PartialDiagnosticAt Warning(LocUnlock, S.PDiag(diag::warn_unlock_kind_mismatch) << Kind << LockName << Received << Expected);"}}, | [j]={{E,1886,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n // ...\n void handleIncorrectUnlockKind(StringRef Kind, Name LockName, LockKind Expected, LockKind Received, SourceLocation LocLocked, SourceLocation LocUnlock) override {\n // ...\n PartialDiagnosticAt Warning(LocUnlock, S.PDiag(diag::warn_unlock_kind_mismatch) << Kind << LockName << Received << Expected);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-thread-safety-analysis.c"]={"clang/test/Sema/warn-thread-safety-analysis.c:121:3: warning: releasing mutex \'mu1\' using shared access, expected exclusive access [-Wthread-safety-analysis]","clang/test/Sema/warn-thread-safety-analysis.c:126:3: warning: releasing mutex \'mu1\' using exclusive access, expected shared access [-Wthread-safety-analysis]"} | ["clang/test/Sema/warn-thread-safety-analysis.c"]={"clang/test/Sema/warn-thread-safety-analysis.c:121:3: warning: releasing mutex \'mu1\' using shared access, expected exclusive access [-Wthread-safety-analysis]","clang/test/Sema/warn-thread-safety-analysis.c:126:3: warning: releasing mutex \'mu1\' using exclusive access, expected shared access [-Wthread-safety-analysis]"} | ||
Line 9,001: | Line 9,001: | ||
[h]=y, | [h]=y, | ||
[i]={"ca0d0cd3b993",1285165944,jc,jc}, | [i]={"ca0d0cd3b993",1285165944,jc,jc}, | ||
[j]={{oc,2215,"void ItaniumRecordLayoutBuilder::FinishLayout(const NamedDecl *D) {\n if (const RecordDecl *RD = dyn_cast<RecordDecl>(D)) {\n // Warn if we packed it unnecessarily, when the unpacked alignment is not\n // greater than the one after packing, the size in bits doesn\'t change and\n // the offset of each field is identical.\n // Unless the type is non-POD (for Clang ABI > 15), where the packed\n // attribute on such a type does allow the type to be packed into other\n // structures that use the packed attribute.\n if (Packed && UnpackedAlignment <= Alignment && UnpackedSizeInBits == getSizeInBits() && !HasPackedField && (!CXXRD || CXXRD->isPOD() || Context.getLangOpts().getClangABICompat() <= LangOptions::ClangABI::Ver15))\n Diag(D->getLocation(), diag::warn_unnecessary_packed) << Context.getTypeDeclType(RD);"}}, | [j]={{oc,2215,"void ItaniumRecordLayoutBuilder::FinishLayout(const NamedDecl *D) {\n // ...\n if (const RecordDecl *RD = dyn_cast<RecordDecl>(D)) {\n // ...\n // Warn if we packed it unnecessarily, when the unpacked alignment is not\n // greater than the one after packing, the size in bits doesn\'t change and\n // the offset of each field is identical.\n // Unless the type is non-POD (for Clang ABI > 15), where the packed\n // attribute on such a type does allow the type to be packed into other\n // structures that use the packed attribute.\n if (Packed && UnpackedAlignment <= Alignment && UnpackedSizeInBits == getSizeInBits() && !HasPackedField && (!CXXRD || CXXRD->isPOD() || Context.getLangOpts().getClangABICompat() <= LangOptions::ClangABI::Ver15))\n Diag(D->getLocation(), diag::warn_unnecessary_packed) << Context.getTypeDeclType(RD);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp"]={"clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:180:8: warning: packed attribute is unnecessary for \'S30_use\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:66:8: warning: packed attribute is unnecessary for \'S11\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:81:8: warning: packed attribute is unnecessary for \'S14\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:85:8: warning: packed attribute is unnecessary for \'S15\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:90:8: warning: packed attribute is unnecessary for \'S16\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:99:8: warning: packed attribute is unnecessary for \'S18\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:104:8: warning: packed attribute is unnecessary for \'S19\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:119:8: warning: packed attribute is unnecessary for \'S22\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:124:8: warning: packed attribute is unnecessary for \'S23\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:140:8: warning: packed attribute is unnecessary for \'S25\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:145:8: warning: packed attribute is unnecessary for \'S26\' [-Wpacked]"} | ["clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp"]={"clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:180:8: warning: packed attribute is unnecessary for \'S30_use\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:66:8: warning: packed attribute is unnecessary for \'S11\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:81:8: warning: packed attribute is unnecessary for \'S14\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:85:8: warning: packed attribute is unnecessary for \'S15\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:90:8: warning: packed attribute is unnecessary for \'S16\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:99:8: warning: packed attribute is unnecessary for \'S18\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:104:8: warning: packed attribute is unnecessary for \'S19\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:119:8: warning: packed attribute is unnecessary for \'S22\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:124:8: warning: packed attribute is unnecessary for \'S23\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:140:8: warning: packed attribute is unnecessary for \'S25\' [-Wpacked]","clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:145:8: warning: packed attribute is unnecessary for \'S26\' [-Wpacked]"} | ||
Line 9,019: | Line 9,019: | ||
[h]=Y, | [h]=Y, | ||
[i]={"1618023018cd",1303242670,"We regard a function as \'unused\' from the codegen perspective, so our warnings diverge from","We regard a function as \'unused\' from the codegen perspective, so our warnings diverge from"}, | [i]={"1618023018cd",1303242670,"We regard a function as \'unused\' from the codegen perspective, so our warnings diverge from","We regard a function as \'unused\' from the codegen perspective, so our warnings diverge from"}, | ||
[j]={{Z,1368,"/// 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 there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n if (DiagD->isReferenced()) {\n if (isa<CXXMethodDecl>(DiagD))\n else {\n if (FD->getStorageClass() == SC_Static && !FD->isInlineSpecified() && !SourceMgr.isInMainFile(SourceMgr.getExpansionLoc(FD->getLocation())))\n else\n Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl) << /*function=*/0 << DiagD << DiagRange;"},{Z,1392,"/// 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 there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n } else {\n if (DiagD->isReferenced()) {\n Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl) << /*variable=*/1 << DiagD << DiagRange;"}}, | [j]={{Z,1368,"/// 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 // ...\n // If there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n // ...\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n // ...\n if (DiagD->isReferenced()) {\n if (isa<CXXMethodDecl>(DiagD))\n // ...\n else {\n if (FD->getStorageClass() == SC_Static && !FD->isInlineSpecified() && !SourceMgr.isInMainFile(SourceMgr.getExpansionLoc(FD->getLocation())))\n // ...\n else\n Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl) << /*function=*/0 << DiagD << DiagRange;"},{Z,1392,"/// 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 // ...\n // If there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n // ...\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n // ...\n } else {\n // ...\n if (DiagD->isReferenced()) {\n Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl) << /*variable=*/1 << DiagD << DiagRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-func-not-needed.cpp"]={"clang/test/SemaCXX/warn-func-not-needed.cpp:4:13: warning: function \'f\' is not needed and will not be emitted [-Wunneeded-internal-declaration]","clang/test/SemaCXX/warn-func-not-needed.cpp:14:18: warning: function \'f<int>\' is not needed and will not be emitted [-Wunneeded-internal-declaration]"} | ["clang/test/SemaCXX/warn-func-not-needed.cpp"]={"clang/test/SemaCXX/warn-func-not-needed.cpp:4:13: warning: function \'f\' is not needed and will not be emitted [-Wunneeded-internal-declaration]","clang/test/SemaCXX/warn-func-not-needed.cpp:14:18: warning: function \'f<int>\' is not needed and will not be emitted [-Wunneeded-internal-declaration]"} | ||
Line 9,037: | Line 9,037: | ||
[h]=q, | [h]=q, | ||
[i]={"1618023018cd",1303242670,"We regard a function as \'unused\' from the codegen perspective, so our warnings diverge from","We regard a function as \'unused\' from the codegen perspective, so our warnings diverge from"}, | [i]={"1618023018cd",1303242670,"We regard a function as \'unused\' from the codegen perspective, so our warnings diverge from","We regard a function as \'unused\' from the codegen perspective, so our warnings diverge from"}, | ||
[j]={{Z,1357,"/// 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 there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n if (DiagD->isReferenced()) {\n if (isa<CXXMethodDecl>(DiagD))\n Diag(DiagD->getLocation(), diag::warn_unneeded_member_function) << DiagD << DiagRange;"}}, | [j]={{Z,1357,"/// 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 // ...\n // If there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n // ...\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n // ...\n if (DiagD->isReferenced()) {\n if (isa<CXXMethodDecl>(DiagD))\n Diag(DiagD->getLocation(), diag::warn_unneeded_member_function) << DiagD << DiagRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-member-not-needed.cpp"]={"clang/test/SemaCXX/warn-member-not-needed.cpp:5:10: warning: member function \'g\' is not needed and will not be emitted [-Wunneeded-member-function]","clang/test/SemaCXX/warn-member-not-needed.cpp:7:22: warning: member function \'gt<int>\' is not needed and will not be emitted [-Wunneeded-member-function]","clang/test/SemaCXX/warn-member-not-needed.cpp:8:22: warning: member function \'gt<float>\' is not needed and will not be emitted [-Wunneeded-member-function]"} | ["clang/test/SemaCXX/warn-member-not-needed.cpp"]={"clang/test/SemaCXX/warn-member-not-needed.cpp:5:10: warning: member function \'g\' is not needed and will not be emitted [-Wunneeded-member-function]","clang/test/SemaCXX/warn-member-not-needed.cpp:7:22: warning: member function \'gt<int>\' is not needed and will not be emitted [-Wunneeded-member-function]","clang/test/SemaCXX/warn-member-not-needed.cpp:8:22: warning: member function \'gt<float>\' is not needed and will not be emitted [-Wunneeded-member-function]"} | ||
Line 9,055: | Line 9,055: | ||
[h]=Y, | [h]=Y, | ||
[i]={"91fc39e31324",1340826209,"patch to suggest \'static\' function should be \'static inline\' ","patch to suggest \'static\' function should be \'static inline\' "}, | [i]={"91fc39e31324",1340826209,"patch to suggest \'static\' function should be \'static inline\' ","patch to suggest \'static\' function should be \'static inline\' "}, | ||
[j]={{Z,1365,"/// 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 there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n if (DiagD->isReferenced()) {\n if (isa<CXXMethodDecl>(DiagD))\n else {\n if (FD->getStorageClass() == SC_Static && !FD->isInlineSpecified() && !SourceMgr.isInMainFile(SourceMgr.getExpansionLoc(FD->getLocation())))\n Diag(DiagD->getLocation(), diag::warn_unneeded_static_internal_decl) << DiagD << DiagRange;"}}, | [j]={{Z,1365,"/// 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 // ...\n // If there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n // ...\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n // ...\n if (DiagD->isReferenced()) {\n if (isa<CXXMethodDecl>(DiagD))\n // ...\n else {\n if (FD->getStorageClass() == SC_Static && !FD->isInlineSpecified() && !SourceMgr.isInMainFile(SourceMgr.getExpansionLoc(FD->getLocation())))\n Diag(DiagD->getLocation(), diag::warn_unneeded_static_internal_decl) << DiagD << DiagRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-static-function-inheader.cpp"]={"clang/test/SemaCXX/warn-static-function-inheader.h:1:13: warning: \'static\' function \'thing\' declared in header file should be declared \'static inline\' [-Wunneeded-internal-declaration]"} | ["clang/test/SemaCXX/warn-static-function-inheader.cpp"]={"clang/test/SemaCXX/warn-static-function-inheader.h:1:13: warning: \'static\' function \'thing\' declared in header file should be declared \'static inline\' [-Wunneeded-internal-declaration]"} | ||
Line 9,135: | Line 9,135: | ||
[h]=y, | [h]=y, | ||
[i]={"ec273d3e3a8c",1643408541,"Add a warning for not packing non-POD members in packed structs","Add a warning for not packing non-POD members in packed structs"}, | [i]={"ec273d3e3a8c",1643408541,"Add a warning for not packing non-POD members in packed structs","Add a warning for not packing non-POD members in packed structs"}, | ||
[j]={{oc,2137,"void ItaniumRecordLayoutBuilder::LayoutField(const FieldDecl *D, bool InsertExtraPadding) {\n if (Packed && !FieldPacked && PackedFieldAlign < FieldAlign)\n Diag(D->getLocation(), diag::warn_unpacked_field) << D;"}}, | [j]={{oc,2137,"void ItaniumRecordLayoutBuilder::LayoutField(const FieldDecl *D, bool InsertExtraPadding) {\n // ...\n if (Packed && !FieldPacked && PackedFieldAlign < FieldAlign)\n Diag(D->getLocation(), diag::warn_unpacked_field) << D;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp"]={"clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:163:15: warning: not packing field \'p1\' as it is non-POD for the purposes of layout [-Wpacked-non-pod]"} | ["clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp"]={"clang/test/CodeGenCXX/warn-all-padded-packed-packed-non-pod.cpp:163:15: warning: not packing field \'p1\' as it is non-POD for the purposes of layout [-Wpacked-non-pod]"} | ||
Line 9,152: | Line 9,152: | ||
[h]=q, | [h]=q, | ||
[i]={"f60dc3caa673",1620118562,"[C++20][Modules] Adjust handling of exports of namespaces and using-decls.","[C++20][Modules] Adjust handling of exports of namespaces and using-decls."}, | [i]={"f60dc3caa673",1620118562,"[C++20][Modules] Adjust handling of exports of namespaces and using-decls.","[C++20][Modules] Adjust handling of exports of namespaces and using-decls."}, | ||
[j]={{A,7043,"// Once a call is fully resolved, warn for unqualified calls to specific\n// C++ standard functions, like move and forward.\nstatic void DiagnosedUnqualifiedCallsToStdFunctions(Sema &S, CallExpr *Call) {\n S.Diag(DRE->getLocation(), diag::warn_unqualified_call_to_std_cast_function) << FD->getQualifiedNameAsString() << FixItHint::CreateInsertion(DRE->getLocation(), \"std::\");"}}, | [j]={{A,7043,"// Once a call is fully resolved, warn for unqualified calls to specific\n// C++ standard functions, like move and forward.\nstatic void DiagnosedUnqualifiedCallsToStdFunctions(Sema &S, CallExpr *Call) {\n // ...\n S.Diag(DRE->getLocation(), diag::warn_unqualified_call_to_std_cast_function) << FD->getQualifiedNameAsString() << FixItHint::CreateInsertion(DRE->getLocation(), \"std::\");"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/unqualified-std-call.cpp"]={"clang/test/SemaCXX/unqualified-std-call.cpp:28:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:29:4: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:34:3: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:62:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:64:3: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:93:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:102:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:103:3: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:113:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:115:3: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:41:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:44:3: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:69:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:70:3: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:71:4: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]"} | ["clang/test/SemaCXX/unqualified-std-call.cpp"]={"clang/test/SemaCXX/unqualified-std-call.cpp:28:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:29:4: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:34:3: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:62:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:64:3: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:93:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:102:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:103:3: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:113:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:115:3: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:41:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:44:3: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:69:3: warning: unqualified call to \'std::move\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:70:3: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]","clang/test/SemaCXX/unqualified-std-call.cpp:71:4: warning: unqualified call to \'std::forward\' [-Wunqualified-std-cast-call]"} | ||
Line 9,170: | Line 9,170: | ||
[h]=q, | [h]=q, | ||
[i]={"1bacb81d6f61",1263351594,"Add an unreachable code checker.","Add an unreachable code checker."}, | [i]={"1bacb81d6f61",1263351594,"Add an unreachable code checker.","Add an unreachable code checker."}, | ||
[j]={{E,94,"class UnreachableCodeHandler : public reachable_code::Callback {\n void HandleUnreachable(reachable_code::UnreachableKind UK, SourceLocation L, SourceRange SilenceableCondVal, SourceRange R1, SourceRange R2, bool HasFallThroughAttr) override {\n unsigned diag = diag::warn_unreachable;"}}, | [j]={{E,94,"class UnreachableCodeHandler : public reachable_code::Callback {\n // ...\n void HandleUnreachable(reachable_code::UnreachableKind UK, SourceLocation L, SourceRange SilenceableCondVal, SourceRange R1, SourceRange R2, bool HasFallThroughAttr) override {\n // ...\n unsigned diag = diag::warn_unreachable;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-unreachable.mm"]={"clang/test/Sema/warn-unreachable.mm:10:7: warning: code will never be executed [-Wunreachable-code]"} | ["clang/test/Sema/warn-unreachable.mm"]={"clang/test/Sema/warn-unreachable.mm:10:7: warning: code will never be executed [-Wunreachable-code]"} | ||
Line 9,187: | Line 9,187: | ||
[h]=q, | [h]=q, | ||
[i]={pd,1620530452,Rb,Rb}, | [i]={pd,1620530452,Rb,Rb}, | ||
[j]={{A,1760,"ExprResult Sema::CreateGenericSelectionExpr(SourceLocation KeyLoc, SourceLocation DefaultLoc, SourceLocation RParenLoc, bool PredicateIsExpr, void *ControllingExprOrType, ArrayRef<TypeSourceInfo *> Types, ArrayRef<Expr *> Exprs) {\n for (unsigned i = 0; i < NumAssocs; ++i) {\n if (Types[i]) {\n if (Types[i]->getType()->isDependentType()) {\n } else {\n if (ControllingExpr && Types[i]->getType()->isIncompleteType())\n else if (ControllingExpr && !Types[i]->getType()->isObjectType())\n else if (Types[i]->getType()->isVariablyModifiedType())\n else if (ControllingExpr) {\n if (Reason)\n Diag(Types[i]->getTypeLoc().getBeginLoc(), diag::warn_unreachable_association) << QT << (Reason - 1);"}}, | [j]={{A,1760,"ExprResult Sema::CreateGenericSelectionExpr(SourceLocation KeyLoc, SourceLocation DefaultLoc, SourceLocation RParenLoc, bool PredicateIsExpr, void *ControllingExprOrType, ArrayRef<TypeSourceInfo *> Types, ArrayRef<Expr *> Exprs) {\n // ...\n for (unsigned i = 0; i < NumAssocs; ++i) {\n // ...\n if (Types[i]) {\n // ...\n if (Types[i]->getType()->isDependentType()) {\n // ...\n } else {\n // ...\n if (ControllingExpr && Types[i]->getType()->isIncompleteType())\n // ...\n else if (ControllingExpr && !Types[i]->getType()->isObjectType())\n // ...\n else if (Types[i]->getType()->isVariablyModifiedType())\n // ...\n else if (ControllingExpr) {\n // ...\n if (Reason)\n Diag(Types[i]->getTypeLoc().getBeginLoc(), diag::warn_unreachable_association) << QT << (Reason - 1);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/generic-selection.cpp"]={"clang/test/SemaCXX/generic-selection.cpp:59:13: warning: due to lvalue conversion of the controlling expression, association of type \'const int\' will never be selected because it is qualified [-Wunreachable-code-generic-assoc]","clang/test/SemaCXX/generic-selection.cpp:60:16: warning: due to lvalue conversion of the controlling expression, association of type \'volatile int\' will never be selected because it is qualified [-Wunreachable-code-generic-assoc]","clang/test/SemaCXX/generic-selection.cpp:61:7: warning: due to lvalue conversion of the controlling expression, association of type \'int[12]\' will never be selected because it is of array type [-Wunreachable-code-generic-assoc]"} | ["clang/test/SemaCXX/generic-selection.cpp"]={"clang/test/SemaCXX/generic-selection.cpp:59:13: warning: due to lvalue conversion of the controlling expression, association of type \'const int\' will never be selected because it is qualified [-Wunreachable-code-generic-assoc]","clang/test/SemaCXX/generic-selection.cpp:60:16: warning: due to lvalue conversion of the controlling expression, association of type \'volatile int\' will never be selected because it is qualified [-Wunreachable-code-generic-assoc]","clang/test/SemaCXX/generic-selection.cpp:61:7: warning: due to lvalue conversion of the controlling expression, association of type \'int[12]\' will never be selected because it is of array type [-Wunreachable-code-generic-assoc]"} | ||
Line 9,205: | Line 9,205: | ||
[h]=q, | [h]=q, | ||
[i]={"1a8641c1e772",1394846792,"Start breaking -Wunreachable-code up into different diagnostic groups.","Start breaking -Wunreachable-code up into different diagnostic groups."}, | [i]={"1a8641c1e772",1394846792,"Start breaking -Wunreachable-code up into different diagnostic groups.","Start breaking -Wunreachable-code up into different diagnostic groups."}, | ||
[j]={{E,97,"class UnreachableCodeHandler : public reachable_code::Callback {\n void HandleUnreachable(reachable_code::UnreachableKind UK, SourceLocation L, SourceRange SilenceableCondVal, SourceRange R1, SourceRange R2, bool HasFallThroughAttr) override {\n case reachable_code::UK_Break:\n diag = diag::warn_unreachable_break;"}}, | [j]={{E,97,"class UnreachableCodeHandler : public reachable_code::Callback {\n // ...\n void HandleUnreachable(reachable_code::UnreachableKind UK, SourceLocation L, SourceRange SilenceableCondVal, SourceRange R1, SourceRange R2, bool HasFallThroughAttr) override {\n // ...\n case reachable_code::UK_Break:\n diag = diag::warn_unreachable_break;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-unreachable.c"]={"clang/test/Sema/warn-unreachable.c:165:7: warning: \'break\' will never be executed [-Wunreachable-code-break]","clang/test/Sema/warn-unreachable.c:162:7: warning: \'break\' will never be executed [-Wunreachable-code-break]","clang/test/Sema/warn-unreachable.c:158:7: warning: \'break\' will never be executed [-Wunreachable-code-break]","clang/test/Sema/warn-unreachable.c:155:7: warning: \'break\' will never be executed [-Wunreachable-code-break]"} | ["clang/test/Sema/warn-unreachable.c"]={"clang/test/Sema/warn-unreachable.c:165:7: warning: \'break\' will never be executed [-Wunreachable-code-break]","clang/test/Sema/warn-unreachable.c:162:7: warning: \'break\' will never be executed [-Wunreachable-code-break]","clang/test/Sema/warn-unreachable.c:158:7: warning: \'break\' will never be executed [-Wunreachable-code-break]","clang/test/Sema/warn-unreachable.c:155:7: warning: \'break\' will never be executed [-Wunreachable-code-break]"} | ||
Line 9,223: | Line 9,223: | ||
[h]=q, | [h]=q, | ||
[i]={"645ae0ce10cb",1327169527,"Add -Wswitch-enum-redundant-default.","Add -Wswitch-enum-redundant-default."}, | [i]={"645ae0ce10cb",1327169527,"Add -Wswitch-enum-redundant-default.","Add -Wswitch-enum-redundant-default."}, | ||
[j]={{U,1599,"StmtResult Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, Stmt *BodyStmt) {\n if (!HasDependentValue) {\n // If switch has default case, then ignore it.\n if (!CaseListIsErroneous && !CaseListIsIncomplete && !HasConstantCond && ET && ET->getDecl()->isCompleteDefinition() && !ET->getDecl()->enumerators().empty()) {\n if (TheDefaultStmt && UnhandledNames.empty() && ED->isClosedNonFlag())\n Diag(TheDefaultStmt->getDefaultLoc(), diag::warn_unreachable_default);"}}, | [j]={{U,1599,"StmtResult Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, Stmt *BodyStmt) {\n // ...\n if (!HasDependentValue) {\n // ...\n // If switch has default case, then ignore it.\n if (!CaseListIsErroneous && !CaseListIsIncomplete && !HasConstantCond && ET && ET->getDecl()->isCompleteDefinition() && !ET->getDecl()->enumerators().empty()) {\n // ...\n if (TheDefaultStmt && UnhandledNames.empty() && ED->isClosedNonFlag())\n Diag(TheDefaultStmt->getDefaultLoc(), diag::warn_unreachable_default);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/enum-attr.cpp"]={"clang/test/SemaCXX/enum-attr.cpp:38:3: warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]","clang/test/SemaCXX/enum-attr.cpp:51:3: warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]"} | ["clang/test/SemaCXX/enum-attr.cpp"]={"clang/test/SemaCXX/enum-attr.cpp:38:3: warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]","clang/test/SemaCXX/enum-attr.cpp:51:3: warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]"} | ||
Line 9,241: | Line 9,241: | ||
[h]=q, | [h]=q, | ||
[i]={Xb,1615397021,qb,qb}, | [i]={Xb,1615397021,qb,qb}, | ||
[j]={{E,82,"class UnreachableCodeHandler : public reachable_code::Callback {\n void HandleUnreachable(reachable_code::UnreachableKind UK, SourceLocation L, SourceRange SilenceableCondVal, SourceRange R1, SourceRange R2, bool HasFallThroughAttr) override {\n if (HasFallThroughAttr && !S.getDiagnostics().isIgnored(diag::warn_unreachable_fallthrough_attr, SourceLocation()))"},{E,1140,"class FallthroughMapper : public RecursiveASTVisitor<FallthroughMapper> {\n bool checkFallThroughIntoBlock(const CFGBlock &B, int &AnnotatedCnt, bool IsTemplateInstantiation) {\n while (!BlockQueue.empty()) {\n if (!ReachableBlocks.count(P)) {\n for (const CFGElement &Elem : llvm::reverse(*P)) {\n if (std::optional<CFGStmt> CS = Elem.getAs<CFGStmt>()) {\n if (const AttributedStmt *AS = asFallThroughAttr(CS->getStmt())) {\n // Don\'t issue a warning for an unreachable fallthrough\n // attribute in template instantiations as it may not be\n // unreachable in all instantiations of the template.\n if (!IsTemplateInstantiation)\n S.Diag(AS->getBeginLoc(), diag::warn_unreachable_fallthrough_attr);"}}, | [j]={{E,82,"class UnreachableCodeHandler : public reachable_code::Callback {\n // ...\n void HandleUnreachable(reachable_code::UnreachableKind UK, SourceLocation L, SourceRange SilenceableCondVal, SourceRange R1, SourceRange R2, bool HasFallThroughAttr) override {\n // ...\n if (HasFallThroughAttr && !S.getDiagnostics().isIgnored(diag::warn_unreachable_fallthrough_attr, SourceLocation()))"},{E,1140,"class FallthroughMapper : public RecursiveASTVisitor<FallthroughMapper> {\n // ...\n bool checkFallThroughIntoBlock(const CFGBlock &B, int &AnnotatedCnt, bool IsTemplateInstantiation) {\n // ...\n while (!BlockQueue.empty()) {\n // ...\n if (!ReachableBlocks.count(P)) {\n for (const CFGElement &Elem : llvm::reverse(*P)) {\n if (std::optional<CFGStmt> CS = Elem.getAs<CFGStmt>()) {\n if (const AttributedStmt *AS = asFallThroughAttr(CS->getStmt())) {\n // Don\'t issue a warning for an unreachable fallthrough\n // attribute in template instantiations as it may not be\n // unreachable in all instantiations of the template.\n if (!IsTemplateInstantiation)\n S.Diag(AS->getBeginLoc(), diag::warn_unreachable_fallthrough_attr);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/switch-implicit-fallthrough.cpp"]={"clang/test/SemaCXX/switch-implicit-fallthrough.cpp:187:7: warning: fallthrough annotation in unreachable code [-Wunreachable-code-fallthrough]","clang/test/SemaCXX/switch-implicit-fallthrough.cpp:190:7: warning: fallthrough annotation in unreachable code [-Wunreachable-code-fallthrough]","clang/test/SemaCXX/switch-implicit-fallthrough.cpp:193:7: warning: fallthrough annotation in unreachable code [-Wunreachable-code-fallthrough]","clang/test/SemaCXX/switch-implicit-fallthrough.cpp:311:7: warning: fallthrough annotation in unreachable code [-Wunreachable-code-fallthrough]"} | ["clang/test/SemaCXX/switch-implicit-fallthrough.cpp"]={"clang/test/SemaCXX/switch-implicit-fallthrough.cpp:187:7: warning: fallthrough annotation in unreachable code [-Wunreachable-code-fallthrough]","clang/test/SemaCXX/switch-implicit-fallthrough.cpp:190:7: warning: fallthrough annotation in unreachable code [-Wunreachable-code-fallthrough]","clang/test/SemaCXX/switch-implicit-fallthrough.cpp:193:7: warning: fallthrough annotation in unreachable code [-Wunreachable-code-fallthrough]","clang/test/SemaCXX/switch-implicit-fallthrough.cpp:311:7: warning: fallthrough annotation in unreachable code [-Wunreachable-code-fallthrough]"} | ||
Line 9,259: | Line 9,259: | ||
[h]=q, | [h]=q, | ||
[i]={"1421037ece1f",1395381756,"[-Wunreachable-code] add a specialized diagnostic for unreachable increment expressions of loops.","[-Wunreachable-code] add a specialized diagnostic for unreachable increment expressions of loops."}, | [i]={"1421037ece1f",1395381756,"[-Wunreachable-code] add a specialized diagnostic for unreachable increment expressions of loops.","[-Wunreachable-code] add a specialized diagnostic for unreachable increment expressions of loops."}, | ||
[j]={{E,103,"class UnreachableCodeHandler : public reachable_code::Callback {\n void HandleUnreachable(reachable_code::UnreachableKind UK, SourceLocation L, SourceRange SilenceableCondVal, SourceRange R1, SourceRange R2, bool HasFallThroughAttr) override {\n case reachable_code::UK_Loop_Increment:\n diag = diag::warn_unreachable_loop_increment;"}}, | [j]={{E,103,"class UnreachableCodeHandler : public reachable_code::Callback {\n // ...\n void HandleUnreachable(reachable_code::UnreachableKind UK, SourceLocation L, SourceRange SilenceableCondVal, SourceRange R1, SourceRange R2, bool HasFallThroughAttr) override {\n // ...\n case reachable_code::UK_Loop_Increment:\n diag = diag::warn_unreachable_loop_increment;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/unreachable-code.cpp"]={"clang/test/SemaCXX/unreachable-code.cpp:8:8: warning: loop will run at most once (loop increment never executed) [-Wunreachable-code-loop-increment]","clang/test/SemaCXX/unreachable-code.cpp:20:8: warning: loop will run at most once (loop increment never executed) [-Wunreachable-code-loop-increment]"} | ["clang/test/SemaCXX/unreachable-code.cpp"]={"clang/test/SemaCXX/unreachable-code.cpp:8:8: warning: loop will run at most once (loop increment never executed) [-Wunreachable-code-loop-increment]","clang/test/SemaCXX/unreachable-code.cpp:20:8: warning: loop will run at most once (loop increment never executed) [-Wunreachable-code-loop-increment]"} | ||
Line 9,277: | Line 9,277: | ||
[h]=q, | [h]=q, | ||
[i]={"ad8753c00eac",1394862426,"Further refine -Wunreachable-code groups so that -Wno-unreachable-code-break doesn\'t turn off all un...","Further refine -Wunreachable-code groups so that -Wno-unreachable-code-break doesn\'t turn off all unreachable code warnings."}, | [i]={"ad8753c00eac",1394862426,"Further refine -Wunreachable-code groups so that -Wno-unreachable-code-break doesn\'t turn off all un...","Further refine -Wunreachable-code groups so that -Wno-unreachable-code-break doesn\'t turn off all unreachable code warnings."}, | ||
[j]={{E,100,"class UnreachableCodeHandler : public reachable_code::Callback {\n void HandleUnreachable(reachable_code::UnreachableKind UK, SourceLocation L, SourceRange SilenceableCondVal, SourceRange R1, SourceRange R2, bool HasFallThroughAttr) override {\n case reachable_code::UK_Return:\n diag = diag::warn_unreachable_return;"}}, | [j]={{E,100,"class UnreachableCodeHandler : public reachable_code::Callback {\n // ...\n void HandleUnreachable(reachable_code::UnreachableKind UK, SourceLocation L, SourceRange SilenceableCondVal, SourceRange R1, SourceRange R2, bool HasFallThroughAttr) override {\n // ...\n case reachable_code::UK_Return:\n diag = diag::warn_unreachable_return;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/warn-unreachable.m"]={"clang/test/SemaObjC/warn-unreachable.m:15:3: warning: \'return\' will never be executed [-Wunreachable-code-return]","clang/test/SemaObjC/warn-unreachable.m:25:12: warning: \'return\' will never be executed [-Wunreachable-code-return]","clang/test/SemaObjC/warn-unreachable.m:34:12: warning: \'return\' will never be executed [-Wunreachable-code-return]"} | ["clang/test/SemaObjC/warn-unreachable.m"]={"clang/test/SemaObjC/warn-unreachable.m:15:3: warning: \'return\' will never be executed [-Wunreachable-code-return]","clang/test/SemaObjC/warn-unreachable.m:25:12: warning: \'return\' will never be executed [-Wunreachable-code-return]","clang/test/SemaObjC/warn-unreachable.m:34:12: warning: \'return\' will never be executed [-Wunreachable-code-return]"} | ||
Line 9,295: | Line 9,295: | ||
[h]=y, | [h]=y, | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{E,2215,"class UnsafeBufferUsageReporter : public UnsafeBufferUsageHandler {\n void handleUnsafeOperation(const Stmt *Operation, bool IsRelatedToDecl) override {\n if (IsRelatedToDecl) {\n } else {\n S.Diag(Loc, diag::warn_unsafe_buffer_operation) << MsgParam << Range;"},{E,2447,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(TranslationUnitDecl *TU) {\n // The Callback function that performs analyses:\n auto CallAnalyzers = [&](const Decl *Node) -> void {\n if (!Diags.isIgnored(diag::warn_unsafe_buffer_operation, Node->getBeginLoc()) || !Diags.isIgnored(diag::warn_unsafe_buffer_variable, Node->getBeginLoc())) {"},{E,2459,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(TranslationUnitDecl *TU) {\n if (!Diags.isIgnored(diag::warn_unsafe_buffer_operation, SourceLocation()) || !Diags.isIgnored(diag::warn_unsafe_buffer_variable, SourceLocation())) {"}}, | [j]={{E,2215,"class UnsafeBufferUsageReporter : public UnsafeBufferUsageHandler {\n // ...\n void handleUnsafeOperation(const Stmt *Operation, bool IsRelatedToDecl) override {\n // ...\n if (IsRelatedToDecl) {\n // ...\n } else {\n S.Diag(Loc, diag::warn_unsafe_buffer_operation) << MsgParam << Range;"},{E,2447,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(TranslationUnitDecl *TU) {\n // ...\n // The Callback function that performs analyses:\n auto CallAnalyzers = [&](const Decl *Node) -> void {\n // ...\n if (!Diags.isIgnored(diag::warn_unsafe_buffer_operation, Node->getBeginLoc()) || !Diags.isIgnored(diag::warn_unsafe_buffer_variable, Node->getBeginLoc())) {"},{E,2459,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(TranslationUnitDecl *TU) {\n // ...\n if (!Diags.isIgnored(diag::warn_unsafe_buffer_operation, SourceLocation()) || !Diags.isIgnored(diag::warn_unsafe_buffer_variable, SourceLocation())) {"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-unsafe-buffer-usage-c-linkage.cpp"]={"clang/test/SemaCXX/warn-unsafe-buffer-usage-c-linkage.cpp:5:3: warning: unsafe buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/warn-unsafe-buffer-usage-c-linkage.cpp:16:3: warning: unsafe buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/warn-unsafe-buffer-usage-c-linkage.cpp:22:3: warning: unsafe buffer access [-Wunsafe-buffer-usage]"} | ["clang/test/SemaCXX/warn-unsafe-buffer-usage-c-linkage.cpp"]={"clang/test/SemaCXX/warn-unsafe-buffer-usage-c-linkage.cpp:5:3: warning: unsafe buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/warn-unsafe-buffer-usage-c-linkage.cpp:16:3: warning: unsafe buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/warn-unsafe-buffer-usage-c-linkage.cpp:22:3: warning: unsafe buffer access [-Wunsafe-buffer-usage]"} | ||
Line 9,313: | Line 9,313: | ||
[h]=y, | [h]=y, | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{E,2227,"class UnsafeBufferUsageReporter : public UnsafeBufferUsageHandler {\n void handleUnsafeVariableGroup(const VarDecl *Variable, const DefMapTy &VarGrpMap, FixItList &&Fixes) override {\n S.Diag(Variable->getLocation(), diag::warn_unsafe_buffer_variable) << Variable << (Variable->getType()->isPointerType() ? 0 : 1) << Variable->getSourceRange();"},{E,2449,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(TranslationUnitDecl *TU) {\n // The Callback function that performs analyses:\n auto CallAnalyzers = [&](const Decl *Node) -> void {\n if (!Diags.isIgnored(diag::warn_unsafe_buffer_operation, Node->getBeginLoc()) || !Diags.isIgnored(diag::warn_unsafe_buffer_variable, Node->getBeginLoc())) {"},{E,2460,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(TranslationUnitDecl *TU) {\n if (!Diags.isIgnored(diag::warn_unsafe_buffer_operation, SourceLocation()) || !Diags.isIgnored(diag::warn_unsafe_buffer_variable, SourceLocation())) {"}}, | [j]={{E,2227,"class UnsafeBufferUsageReporter : public UnsafeBufferUsageHandler {\n // ...\n void handleUnsafeVariableGroup(const VarDecl *Variable, const DefMapTy &VarGrpMap, FixItList &&Fixes) override {\n // ...\n S.Diag(Variable->getLocation(), diag::warn_unsafe_buffer_variable) << Variable << (Variable->getType()->isPointerType() ? 0 : 1) << Variable->getSourceRange();"},{E,2449,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(TranslationUnitDecl *TU) {\n // ...\n // The Callback function that performs analyses:\n auto CallAnalyzers = [&](const Decl *Node) -> void {\n // ...\n if (!Diags.isIgnored(diag::warn_unsafe_buffer_operation, Node->getBeginLoc()) || !Diags.isIgnored(diag::warn_unsafe_buffer_variable, Node->getBeginLoc())) {"},{E,2460,"void clang::sema::AnalysisBasedWarnings::IssueWarnings(TranslationUnitDecl *TU) {\n // ...\n if (!Diags.isIgnored(diag::warn_unsafe_buffer_operation, SourceLocation()) || !Diags.isIgnored(diag::warn_unsafe_buffer_variable, SourceLocation())) {"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp"]={"clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:6:9: warning: \'ptr\' is an unsafe pointer used for buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:12:7: warning: \'array\' is an unsafe buffer that does not perform bounds checks [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:18:7: warning: \'ptr\' is an unsafe pointer used for buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:24:5: warning: \'array\' is an unsafe buffer that does not perform bounds checks [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:31:37: warning: \'ptr\' is an unsafe pointer used for buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:38:37: warning: \'array\' is an unsafe pointer used for buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:87:16: warning: \'ptr\' is an unsafe pointer used for buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:96:14: warning: \'array\' is an unsafe buffer that does not perform bounds checks [-Wunsafe-buffer-usage]"} | ["clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp"]={"clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:6:9: warning: \'ptr\' is an unsafe pointer used for buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:12:7: warning: \'array\' is an unsafe buffer that does not perform bounds checks [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:18:7: warning: \'ptr\' is an unsafe pointer used for buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:24:5: warning: \'array\' is an unsafe buffer that does not perform bounds checks [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:31:37: warning: \'ptr\' is an unsafe pointer used for buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:38:37: warning: \'array\' is an unsafe pointer used for buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:87:16: warning: \'ptr\' is an unsafe pointer used for buffer access [-Wunsafe-buffer-usage]","clang/test/SemaCXX/unsafe-buffer-usage-diag-type.cpp:96:14: warning: \'array\' is an unsafe buffer that does not perform bounds checks [-Wunsafe-buffer-usage]"} | ||
Line 9,330: | Line 9,330: | ||
[h]=q, | [h]=q, | ||
[i]={"c406cb736484",1358385476,"Add -Wunsequenced (with compatibility alias -Wsequence-point) to warn on","Add -Wunsequenced (with compatibility alias -Wsequence-point) to warn on"}, | [i]={"c406cb736484",1358385476,"Add -Wunsequenced (with compatibility alias -Wsequence-point) to warn on","Add -Wunsequenced (with compatibility alias -Wsequence-point) to warn on"}, | ||
[j]={{x,15948,"/// Visitor for expressions which looks for unsequenced operations on the\n/// same object.\nclass SequenceChecker : public ConstEvaluatedExprVisitor<SequenceChecker> {\n /// Check whether a modification or use of an object \\p O in an expression\n /// \\p UsageExpr conflicts with a prior usage of kind \\p OtherKind. \\p UI is\n /// the \\p UsageInfo for the object \\p O as obtained via the \\p UsageMap.\n /// \\p IsModMod is true when we are checking for a mod-mod unsequenced\n /// usage and false we are checking for a mod-use unsequenced usage.\n void checkUsage(Object O, UsageInfo &UI, const Expr *UsageExpr, UsageKind OtherKind, bool IsModMod) {\n SemaRef.DiagRuntimeBehavior(Mod->getExprLoc(), {Mod, ModOrUse}, SemaRef.PDiag(IsModMod ? diag::warn_unsequenced_mod_mod : diag::warn_unsequenced_mod_use) << O << SourceRange(ModOrUse->getExprLoc()));"}}, | [j]={{x,15948,"/// Visitor for expressions which looks for unsequenced operations on the\n/// same object.\nclass SequenceChecker : public ConstEvaluatedExprVisitor<SequenceChecker> {\n // ...\n /// Check whether a modification or use of an object \\p O in an expression\n /// \\p UsageExpr conflicts with a prior usage of kind \\p OtherKind. \\p UI is\n /// the \\p UsageInfo for the object \\p O as obtained via the \\p UsageMap.\n /// \\p IsModMod is true when we are checking for a mod-mod unsequenced\n /// usage and false we are checking for a mod-use unsequenced usage.\n void checkUsage(Object O, UsageInfo &UI, const Expr *UsageExpr, UsageKind OtherKind, bool IsModMod) {\n // ...\n SemaRef.DiagRuntimeBehavior(Mod->getExprLoc(), {Mod, ModOrUse}, SemaRef.PDiag(IsModMod ? diag::warn_unsequenced_mod_mod : diag::warn_unsequenced_mod_use) << O << SourceRange(ModOrUse->getExprLoc()));"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-unsequenced.c"]={"clang/test/Sema/warn-unsequenced.c:13:7: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:15:8: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:17:3: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:18:4: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:19:10: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:20:11: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:21:13: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:22:13: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:23:14: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:27:7: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:30:9: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:32:3: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:33:5: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:34:4: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:35:6: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:37:7: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:40:15: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:80:13: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:84:11: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:85:15: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:88:13: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:89:13: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:93:21: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]"} | ["clang/test/Sema/warn-unsequenced.c"]={"clang/test/Sema/warn-unsequenced.c:13:7: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:15:8: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:17:3: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:18:4: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:19:10: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:20:11: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:21:13: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:22:13: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:23:14: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:27:7: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:30:9: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:32:3: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:33:5: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:34:4: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:35:6: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:37:7: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:40:15: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:80:13: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:84:11: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:85:15: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:88:13: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:89:13: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:93:21: warning: multiple unsequenced modifications to \'a\' [-Wunsequenced]"} | ||
Line 9,347: | Line 9,347: | ||
[h]=q, | [h]=q, | ||
[i]={"c406cb736484",1358385476,"Add -Wunsequenced (with compatibility alias -Wsequence-point) to warn on","Add -Wunsequenced (with compatibility alias -Wsequence-point) to warn on"}, | [i]={"c406cb736484",1358385476,"Add -Wunsequenced (with compatibility alias -Wsequence-point) to warn on","Add -Wunsequenced (with compatibility alias -Wsequence-point) to warn on"}, | ||
[j]={{x,15949,"/// Visitor for expressions which looks for unsequenced operations on the\n/// same object.\nclass SequenceChecker : public ConstEvaluatedExprVisitor<SequenceChecker> {\n /// Check whether a modification or use of an object \\p O in an expression\n /// \\p UsageExpr conflicts with a prior usage of kind \\p OtherKind. \\p UI is\n /// the \\p UsageInfo for the object \\p O as obtained via the \\p UsageMap.\n /// \\p IsModMod is true when we are checking for a mod-mod unsequenced\n /// usage and false we are checking for a mod-use unsequenced usage.\n void checkUsage(Object O, UsageInfo &UI, const Expr *UsageExpr, UsageKind OtherKind, bool IsModMod) {\n SemaRef.DiagRuntimeBehavior(Mod->getExprLoc(), {Mod, ModOrUse}, SemaRef.PDiag(IsModMod ? diag::warn_unsequenced_mod_mod : diag::warn_unsequenced_mod_use) << O << SourceRange(ModOrUse->getExprLoc()));"}}, | [j]={{x,15949,"/// Visitor for expressions which looks for unsequenced operations on the\n/// same object.\nclass SequenceChecker : public ConstEvaluatedExprVisitor<SequenceChecker> {\n // ...\n /// Check whether a modification or use of an object \\p O in an expression\n /// \\p UsageExpr conflicts with a prior usage of kind \\p OtherKind. \\p UI is\n /// the \\p UsageInfo for the object \\p O as obtained via the \\p UsageMap.\n /// \\p IsModMod is true when we are checking for a mod-mod unsequenced\n /// usage and false we are checking for a mod-use unsequenced usage.\n void checkUsage(Object O, UsageInfo &UI, const Expr *UsageExpr, UsageKind OtherKind, bool IsModMod) {\n // ...\n SemaRef.DiagRuntimeBehavior(Mod->getExprLoc(), {Mod, ModOrUse}, SemaRef.PDiag(IsModMod ? diag::warn_unsequenced_mod_mod : diag::warn_unsequenced_mod_use) << O << SourceRange(ModOrUse->getExprLoc()));"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-unsequenced.c"]={"clang/test/Sema/warn-unsequenced.c:12:7: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:14:8: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:25:7: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:26:10: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:38:8: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:41:15: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:43:16: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:45:12: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:47:16: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:48:12: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:51:16: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:52:12: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:54:18: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:56:4: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:60:10: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:67:6: warning: unsequenced modification and access to \'q\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:77:10: warning: unsequenced modification and access to \'a\' [-Wunsequenced]"} | ["clang/test/Sema/warn-unsequenced.c"]={"clang/test/Sema/warn-unsequenced.c:12:7: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:14:8: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:25:7: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:26:10: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:38:8: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:41:15: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:43:16: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:45:12: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:47:16: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:48:12: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:51:16: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:52:12: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:54:18: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:56:4: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:60:10: warning: unsequenced modification and access to \'a\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:67:6: warning: unsequenced modification and access to \'q\' [-Wunsequenced]","clang/test/Sema/warn-unsequenced.c:77:10: warning: unsequenced modification and access to \'a\' [-Wunsequenced]"} | ||
Line 9,364: | Line 9,364: | ||
[h]=q, | [h]=q, | ||
[i]={"7eb0b2c1819c",1393377448,"Add -Wabsolute-value, warnings about absolute value functions.","Add -Wabsolute-value, warnings about absolute value functions."}, | [i]={"7eb0b2c1819c",1393377448,"Add -Wabsolute-value, warnings about absolute value functions.","Add -Wabsolute-value, warnings about absolute value functions."}, | ||
[j]={{x,12025,"// Warn when using the wrong abs() function.\nvoid Sema::CheckAbsoluteValueFunction(const CallExpr *Call, const FunctionDecl *FDecl) {\n // Unsigned types cannot be negative. Suggest removing the absolute value\n // function call.\n if (ArgType->isUnsignedIntegerType()) {\n Diag(Call->getExprLoc(), diag::warn_unsigned_abs) << ArgType << ParamType;"},{"clang/utils/TableGen/ClangDiagnosticsEmitter.cpp",1410,"/// diag::warn_unsigned_abs,"}}, | [j]={{x,12025,"// Warn when using the wrong abs() function.\nvoid Sema::CheckAbsoluteValueFunction(const CallExpr *Call, const FunctionDecl *FDecl) {\n // ...\n // Unsigned types cannot be negative. Suggest removing the absolute value\n // function call.\n if (ArgType->isUnsignedIntegerType()) {\n // ...\n Diag(Call->getExprLoc(), diag::warn_unsigned_abs) << ArgType << ParamType;"},{"clang/utils/TableGen/ClangDiagnosticsEmitter.cpp",1410,"/// diag::warn_unsigned_abs,"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-absolute-value-header.c"]={"clang/test/Sema/warn-absolute-value-header.c:15:9: warning: taking the absolute value of unsigned type \'unsigned int\' has no effect [-Wabsolute-value]"} | ["clang/test/Sema/warn-absolute-value-header.c"]={"clang/test/Sema/warn-absolute-value-header.c:15:9: warning: taking the absolute value of unsigned type \'unsigned int\' has no effect [-Wabsolute-value]"} | ||
Line 9,382: | Line 9,382: | ||
[h]=q, | [h]=q, | ||
[i]={"bd1fc22043b7",1507839411,cd,cd}, | [i]={"bd1fc22043b7",1507839411,cd,cd}, | ||
[j]={{x,13890,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // FIXME: We use a somewhat different formatting for the in-range cases and\n // cases involving boolean values for historical reasons. We should pick a\n // consistent way of presenting these diagnostics.\n if (!InRange || Other->isKnownToHaveBooleanValue()) {\n } else {\n unsigned Diag = (isKnownToHaveUnsignedValue(OriginalOther) && Value == 0) ? (HasEnumType(OriginalOther) ? diag::warn_unsigned_enum_always_true_comparison : IsCharTy ? diag::warn_unsigned_char_always_true_comparison : diag::warn_unsigned_always_true_comparison) : diag::warn_tautological_constant_compare;"}}, | [j]={{x,13890,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // ...\n // FIXME: We use a somewhat different formatting for the in-range cases and\n // cases involving boolean values for historical reasons. We should pick a\n // consistent way of presenting these diagnostics.\n if (!InRange || Other->isKnownToHaveBooleanValue()) {\n // ...\n } else {\n // ...\n unsigned Diag = (isKnownToHaveUnsignedValue(OriginalOther) && Value == 0) ? (HasEnumType(OriginalOther) ? diag::warn_unsigned_enum_always_true_comparison : IsCharTy ? diag::warn_unsigned_char_always_true_comparison : diag::warn_unsigned_always_true_comparison) : diag::warn_tautological_constant_compare;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/compare.c"]={"clang/test/Sema/compare.c:90:19: warning: result of comparison of unsigned expression < 0 is always false [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:89:20: warning: result of comparison of unsigned expression < 0 is always false [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:81:13: warning: result of comparison of unsigned expression < 0 is always false [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:285:11: warning: result of comparison of 0 <= unsigned expression is always true [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:284:11: warning: result of comparison of unsigned expression >= 0 is always true [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:283:11: warning: result of comparison of 0 > unsigned expression is always false [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:282:13: warning: result of comparison of unsigned expression < 0 is always false [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:297:11: warning: result of comparison of unsigned expression < 0 is always false [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:299:11: warning: result of comparison of unsigned expression < 0 is always false [-Wtautological-unsigned-zero-compare]"} | ["clang/test/Sema/compare.c"]={"clang/test/Sema/compare.c:90:19: warning: result of comparison of unsigned expression < 0 is always false [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:89:20: warning: result of comparison of unsigned expression < 0 is always false [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:81:13: warning: result of comparison of unsigned expression < 0 is always false [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:285:11: warning: result of comparison of 0 <= unsigned expression is always true [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:284:11: warning: result of comparison of unsigned expression >= 0 is always true [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:283:11: warning: result of comparison of 0 > unsigned expression is always false [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:282:13: warning: result of comparison of unsigned expression < 0 is always false [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:297:11: warning: result of comparison of unsigned expression < 0 is always false [-Wtautological-unsigned-zero-compare]","clang/test/Sema/compare.c:299:11: warning: result of comparison of unsigned expression < 0 is always false [-Wtautological-unsigned-zero-compare]"} | ||
Line 9,400: | Line 9,400: | ||
[h]=Zb, | [h]=Zb, | ||
[i]={"329f24d6f6e7",1489514462,"Warn on enum assignment to bitfields that can\'t fit all values","Warn on enum assignment to bitfields that can\'t fit all values"}, | [i]={"329f24d6f6e7",1489514462,"Warn on enum assignment to bitfields that can\'t fit all values","Warn on enum assignment to bitfields that can\'t fit all values"}, | ||
[j]={{x,14084,"/// Analyzes an attempt to assign the given value to a bitfield.\n///\n/// Returns true if there was something fishy about the attempt.\nstatic bool AnalyzeBitFieldAssignment(Sema &S, FieldDecl *Bitfield, Expr *Init, SourceLocation InitLoc) {\n if (!OriginalInit->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects)) {\n // The RHS is not constant. If the RHS has an enum type, make sure the\n // bitfield is wide enough to hold all the values of the enum without\n // truncation.\n if (const auto *EnumTy = OriginalInit->getType()->getAs<EnumType>()) {\n if (SignedEnum && !SignedBitfield) {\n DiagID = diag::warn_unsigned_bitfield_assigned_signed_enum;"}}, | [j]={{x,14084,"/// Analyzes an attempt to assign the given value to a bitfield.\n///\n/// Returns true if there was something fishy about the attempt.\nstatic bool AnalyzeBitFieldAssignment(Sema &S, FieldDecl *Bitfield, Expr *Init, SourceLocation InitLoc) {\n // ...\n if (!OriginalInit->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects)) {\n // The RHS is not constant. If the RHS has an enum type, make sure the\n // bitfield is wide enough to hold all the values of the enum without\n // truncation.\n if (const auto *EnumTy = OriginalInit->getType()->getAs<EnumType>()) {\n // ...\n if (SignedEnum && !SignedBitfield) {\n DiagID = diag::warn_unsigned_bitfield_assigned_signed_enum;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp"]={"clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp:27:14: warning: assigning value of signed enum type \'TwoBitsSigned\' to unsigned bit-field \'two_bits\'; negative enumerators of enum \'TwoBitsSigned\' will be converted to positive values [-Wbitfield-enum-conversion]","clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp:29:14: warning: assigning value of signed enum type \'ThreeBitsSigned\' to unsigned bit-field \'two_bits\'; negative enumerators of enum \'ThreeBitsSigned\' will be converted to positive values [-Wbitfield-enum-conversion]","clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp:38:16: warning: assigning value of signed enum type \'TwoBitsSigned\' to unsigned bit-field \'three_bits\'; negative enumerators of enum \'TwoBitsSigned\' will be converted to positive values [-Wbitfield-enum-conversion]","clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp:40:16: warning: assigning value of signed enum type \'ThreeBitsSigned\' to unsigned bit-field \'three_bits\'; negative enumerators of enum \'ThreeBitsSigned\' will be converted to positive values [-Wbitfield-enum-conversion]"} | ["clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp"]={"clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp:27:14: warning: assigning value of signed enum type \'TwoBitsSigned\' to unsigned bit-field \'two_bits\'; negative enumerators of enum \'TwoBitsSigned\' will be converted to positive values [-Wbitfield-enum-conversion]","clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp:29:14: warning: assigning value of signed enum type \'ThreeBitsSigned\' to unsigned bit-field \'two_bits\'; negative enumerators of enum \'ThreeBitsSigned\' will be converted to positive values [-Wbitfield-enum-conversion]","clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp:38:16: warning: assigning value of signed enum type \'TwoBitsSigned\' to unsigned bit-field \'three_bits\'; negative enumerators of enum \'TwoBitsSigned\' will be converted to positive values [-Wbitfield-enum-conversion]","clang/test/SemaCXX/warn-bitfield-enum-conversion.cpp:40:16: warning: assigning value of signed enum type \'ThreeBitsSigned\' to unsigned bit-field \'three_bits\'; negative enumerators of enum \'ThreeBitsSigned\' will be converted to positive values [-Wbitfield-enum-conversion]"} | ||
Line 9,418: | Line 9,418: | ||
[h]=q, | [h]=q, | ||
[i]={"b83b23275b74",1607502387,"Introduce -Wreserved-identifier","Introduce -Wreserved-identifier"}, | [i]={"b83b23275b74",1607502387,"Introduce -Wreserved-identifier","Introduce -Wreserved-identifier"}, | ||
[j]={{x,13889,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // FIXME: We use a somewhat different formatting for the in-range cases and\n // cases involving boolean values for historical reasons. We should pick a\n // consistent way of presenting these diagnostics.\n if (!InRange || Other->isKnownToHaveBooleanValue()) {\n } else {\n unsigned Diag = (isKnownToHaveUnsignedValue(OriginalOther) && Value == 0) ? (HasEnumType(OriginalOther) ? diag::warn_unsigned_enum_always_true_comparison : IsCharTy ? diag::warn_unsigned_char_always_true_comparison : diag::warn_unsigned_always_true_comparison) : diag::warn_tautological_constant_compare;"}} | [j]={{x,13889,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // ...\n // FIXME: We use a somewhat different formatting for the in-range cases and\n // cases involving boolean values for historical reasons. We should pick a\n // consistent way of presenting these diagnostics.\n if (!InRange || Other->isKnownToHaveBooleanValue()) {\n // ...\n } else {\n // ...\n unsigned Diag = (isKnownToHaveUnsignedValue(OriginalOther) && Value == 0) ? (HasEnumType(OriginalOther) ? diag::warn_unsigned_enum_always_true_comparison : IsCharTy ? diag::warn_unsigned_char_always_true_comparison : diag::warn_unsigned_always_true_comparison) : diag::warn_tautological_constant_compare;"}} | ||
}, | }, | ||
["warn_unsigned_enum_always_true_comparison"]={ | ["warn_unsigned_enum_always_true_comparison"]={ | ||
Line 9,433: | Line 9,433: | ||
[h]=q, | [h]=q, | ||
[i]={"bd1fc22043b7",1507839411,cd,cd}, | [i]={"bd1fc22043b7",1507839411,cd,cd}, | ||
[j]={{x,13888,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // FIXME: We use a somewhat different formatting for the in-range cases and\n // cases involving boolean values for historical reasons. We should pick a\n // consistent way of presenting these diagnostics.\n if (!InRange || Other->isKnownToHaveBooleanValue()) {\n } else {\n unsigned Diag = (isKnownToHaveUnsignedValue(OriginalOther) && Value == 0) ? (HasEnumType(OriginalOther) ? diag::warn_unsigned_enum_always_true_comparison : IsCharTy ? diag::warn_unsigned_char_always_true_comparison : diag::warn_unsigned_always_true_comparison) : diag::warn_tautological_constant_compare;"}}, | [j]={{x,13888,"static bool CheckTautologicalComparison(Sema &S, BinaryOperator *E, Expr *Constant, Expr *Other, const llvm::APSInt &Value, bool RhsConstant) {\n // ...\n // FIXME: We use a somewhat different formatting for the in-range cases and\n // cases involving boolean values for historical reasons. We should pick a\n // consistent way of presenting these diagnostics.\n if (!InRange || Other->isKnownToHaveBooleanValue()) {\n // ...\n } else {\n // ...\n unsigned Diag = (isKnownToHaveUnsignedValue(OriginalOther) && Value == 0) ? (HasEnumType(OriginalOther) ? diag::warn_unsigned_enum_always_true_comparison : IsCharTy ? diag::warn_unsigned_char_always_true_comparison : diag::warn_unsigned_always_true_comparison) : diag::warn_tautological_constant_compare;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/compare.c"]={"clang/test/Sema/compare.c:331:9: warning: result of comparison of unsigned enum expression < 0 is always false [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:337:9: warning: result of comparison of unsigned enum expression >= 0 is always true [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:346:9: warning: result of comparison of 0 <= unsigned enum expression is always true [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:348:9: warning: result of comparison of 0 > unsigned enum expression is always false [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:357:9: warning: result of comparison of unsigned enum expression < 0 is always false [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:363:9: warning: result of comparison of unsigned enum expression >= 0 is always true [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:372:10: warning: result of comparison of 0 <= unsigned enum expression is always true [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:374:10: warning: result of comparison of 0 > unsigned enum expression is always false [-Wtautological-unsigned-enum-zero-compare]"} | ["clang/test/Sema/compare.c"]={"clang/test/Sema/compare.c:331:9: warning: result of comparison of unsigned enum expression < 0 is always false [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:337:9: warning: result of comparison of unsigned enum expression >= 0 is always true [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:346:9: warning: result of comparison of 0 <= unsigned enum expression is always true [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:348:9: warning: result of comparison of 0 > unsigned enum expression is always false [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:357:9: warning: result of comparison of unsigned enum expression < 0 is always false [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:363:9: warning: result of comparison of unsigned enum expression >= 0 is always true [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:372:10: warning: result of comparison of 0 <= unsigned enum expression is always true [-Wtautological-unsigned-enum-zero-compare]","clang/test/Sema/compare.c:374:10: warning: result of comparison of 0 > unsigned enum expression is always false [-Wtautological-unsigned-enum-zero-compare]"} | ||
Line 9,450: | Line 9,450: | ||
[h]=y, | [h]=y, | ||
[i]={"0687578728ea",1610286626,"[C++20][Modules][HU 2/5] Support searching Header Units in user or system search paths.","[C++20][Modules][HU 2/5] Support searching Header Units in user or system search paths."}, | [i]={"0687578728ea",1610286626,"[C++20][Modules][HU 2/5] Support searching Header Units in user or system search paths.","[C++20][Modules][HU 2/5] Support searching Header Units in user or system search paths."}, | ||
[j]={{"clang/lib/Driver/ToolChains/Clang.cpp",1618,"static void CollectARMPACBTIOptions(const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs, bool isAArch64) {\n if (A->getOption().matches(options::OPT_msign_return_address_EQ)) {\n } else {\n if (!isAArch64 && PBP.Key == \"b_key\")\n D.Diag(diag::warn_unsupported_branch_protection) << \"b-key\" << A->getAsString(Args);"}}, | [j]={{"clang/lib/Driver/ToolChains/Clang.cpp",1618,"static void CollectARMPACBTIOptions(const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs, bool isAArch64) {\n // ...\n if (A->getOption().matches(options::OPT_msign_return_address_EQ)) {\n // ...\n } else {\n // ...\n if (!isAArch64 && PBP.Key == \"b_key\")\n D.Diag(diag::warn_unsupported_branch_protection) << \"b-key\" << A->getAsString(Args);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Preprocessor/arm-target-features.c"]={"clang: warning: invalid branch protection option \'b-key\' in \'-mbranch-protection=bti+pac-ret+b-key+leaf\' [-Wbranch-protection]"} | ["clang/test/Preprocessor/arm-target-features.c"]={"clang: warning: invalid branch protection option \'b-key\' in \'-mbranch-protection=bti+pac-ret+b-key+leaf\' [-Wbranch-protection]"} | ||
Line 9,467: | Line 9,467: | ||
[h]=q, | [h]=q, | ||
[i]={"f9c3310d32c6",1616787805,dc,dc}, | [i]={"f9c3310d32c6",1616787805,dc,dc}, | ||
[j]={{C,3463,"// 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 (!DiagMsg.empty())\n Diag(LiteralLoc, diag::warn_unsupported_branch_protection_spec) << DiagMsg;"}}, | [j]={{C,3463,"// 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 // ...\n if (!DiagMsg.empty())\n Diag(LiteralLoc, diag::warn_unsupported_branch_protection_spec) << DiagMsg;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/arm-branch-protection-attr-err.c"]={"clang/test/Sema/arm-branch-protection-attr-err.c:19:23: warning: unsupported branch protection specification \'b-key\' [-Wbranch-protection]"} | ["clang/test/Sema/arm-branch-protection-attr-err.c"]={"clang/test/Sema/arm-branch-protection-attr-err.c:19:23: warning: unsupported branch protection specification \'b-key\' [-Wbranch-protection]"} | ||
Line 9,484: | Line 9,484: | ||
[h]=q, | [h]=q, | ||
[i]={"0e3102d1dc04",1532393708,"Warn if a local variable\'s initializer retains a pointer/reference to a","Warn if a local variable\'s initializer retains a pointer/reference to a"}, | [i]={"0e3102d1dc04",1532393708,"Warn if a local variable\'s initializer retains a pointer/reference to a","Warn if a local variable\'s initializer retains a pointer/reference to a"}, | ||
[j]={{Bb,8143,"void Sema::checkInitializerLifetime(const InitializedEntity &Entity, Expr *Init) {\n auto TemporaryVisitor = [&](IndirectLocalPath &Path, Local L, ReferenceKind RK) -> bool {\n case LK_Extended: {\n case PathLifetimeKind::ShouldExtend:\n Diag(DiagLoc, diag::warn_unsupported_lifetime_extension) << RK << DiagRange;"}}, | [j]={{Bb,8143,"void Sema::checkInitializerLifetime(const InitializedEntity &Entity, Expr *Init) {\n // ...\n auto TemporaryVisitor = [&](IndirectLocalPath &Path, Local L, ReferenceKind RK) -> bool {\n // ...\n case LK_Extended: {\n // ...\n case PathLifetimeKind::ShouldExtend:\n // ...\n Diag(DiagLoc, diag::warn_unsupported_lifetime_extension) << RK << DiagRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/eval-crashes.cpp"]={"clang/test/SemaCXX/eval-crashes.cpp:32:10: warning: sorry, lifetime extension of temporary created by aggregate initialization using default member initializer is not supported; lifetime of temporary will end at the end of the full-expression [-Wdangling]","clang/test/SemaCXX/eval-crashes.cpp:32:10: warning: sorry, lifetime extension of temporary created by aggregate initialization using default member initializer is not supported; lifetime of temporary will end at the end of the full-expression [-Wdangling]"} | ["clang/test/SemaCXX/eval-crashes.cpp"]={"clang/test/SemaCXX/eval-crashes.cpp:32:10: warning: sorry, lifetime extension of temporary created by aggregate initialization using default member initializer is not supported; lifetime of temporary will end at the end of the full-expression [-Wdangling]","clang/test/SemaCXX/eval-crashes.cpp:32:10: warning: sorry, lifetime extension of temporary created by aggregate initialization using default member initializer is not supported; lifetime of temporary will end at the end of the full-expression [-Wdangling]"} | ||
Line 9,501: | Line 9,501: | ||
[h]=q, | [h]=q, | ||
[i]={"789a7ad1a855",1434072965,"Add a warning for unsupported elements of the target attribute.","Add a warning for unsupported elements of the target attribute."}, | [i]={"789a7ad1a855",1434072965,"Add a warning for unsupported elements of the target attribute.","Add a warning for unsupported elements of the target attribute."}, | ||
[j]={{C,3417,"// 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 (AttrStr.contains(\"fpmath=\"))\n return Diag(LiteralLoc, diag::warn_unsupported_target_attribute) << Unsupported << None << \"fpmath=\" << Target;"},{C,3423,"// 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 // Diagnose use of tune if target doesn\'t support it.\n if (!Context.getTargetInfo().supportsTargetAttributeTune() && AttrStr.contains(\"tune=\"))\n return Diag(LiteralLoc, diag::warn_unsupported_target_attribute) << Unsupported << None << \"tune=\" << Target;"},{C,3431,"// 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 (!ParsedAttrs.CPU.empty() && !Context.getTargetInfo().isValidCPUName(ParsedAttrs.CPU))\n return Diag(LiteralLoc, diag::warn_unsupported_target_attribute) << Unknown << CPU << ParsedAttrs.CPU << Target;"},{C,3436,"// 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 | [j]={{C,3417,"// 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 // ...\n if (AttrStr.contains(\"fpmath=\"))\n return Diag(LiteralLoc, diag::warn_unsupported_target_attribute) << Unsupported << None << \"fpmath=\" << Target;"},{C,3423,"// 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 // ...\n // Diagnose use of tune if target doesn\'t support it.\n if (!Context.getTargetInfo().supportsTargetAttributeTune() && AttrStr.contains(\"tune=\"))\n return Diag(LiteralLoc, diag::warn_unsupported_target_attribute) << Unsupported << None << \"tune=\" << Target;"},{C,3431,"// 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 // ...\n if (!ParsedAttrs.CPU.empty() && !Context.getTargetInfo().isValidCPUName(ParsedAttrs.CPU))\n return Diag(LiteralLoc, diag::warn_unsupported_target_attribute) << Unknown << CPU << ParsedAttrs.CPU << Target;"},{C,3436,"// 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 // ...\n if (!ParsedAttrs.Tune.empty() && !Context.getTargetInfo().isValidCPUName(ParsedAttrs.Tune))\n return Diag(LiteralLoc, diag::warn_unsupported_target_attribute) << Unknown << Tune << ParsedAttrs.Tune << Target;"},{C,3440,"// 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 // ...\n if (ParsedAttrs.Duplicate != \"\")\n return Diag(LiteralLoc, diag::warn_unsupported_target_attribute) << Duplicate << None << ParsedAttrs.Duplicate << Target;"},{C,3446,"// 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 // ...\n for (const auto &Feature : ParsedAttrs.Features) {\n // ...\n if (!Context.getTargetInfo().isValidFeatureName(CurFeature))\n return Diag(LiteralLoc, diag::warn_unsupported_target_attribute) << Unsupported << None << CurFeature << Target;"},{C,3457,"// 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 // ...\n if (!Context.getTargetInfo().validateBranchProtection(ParsedAttrs.BranchProtection, ParsedAttrs.CPU, BPI, DiagMsg)) {\n if (DiagMsg.empty())\n return Diag(LiteralLoc, diag::warn_unsupported_target_attribute) << Unsupported << None << \"branch-protection\" << Target;"},{C,3483,"// Check Target Version attrs\nbool Sema::checkTargetVersionAttr(SourceLocation LiteralLoc, StringRef &AttrStr, bool &isDefault) {\n // ...\n for (auto &CurFeature : Features) {\n // ...\n if (!Context.getTargetInfo().validateCpuSupports(CurFeature))\n return Diag(LiteralLoc, diag::warn_unsupported_target_attribute) << Unsupported << None << CurFeature << TargetVersion;"},{C,3526,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n // ...\n // Warn on empty at the beginning of a string.\n if (Str.size() == 0)\n return Diag(LiteralLoc, diag::warn_unsupported_target_attribute) << Unsupported << None << \"\" << TargetClones;"},{C,3540,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n // ...\n while (!Parts.second.empty()) {\n // ...\n if (Cur.empty())\n return Diag(CurLoc, diag::warn_unsupported_target_attribute) << Unsupported << None << \"\" << TargetClones;"},{C,3559,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n // ...\n while (!Parts.second.empty()) {\n // ...\n if (TInfo.getTriple().isAArch64()) {\n // AArch64 target clones specific\n if (Cur == \"default\") {\n // ...\n } else {\n // ...\n while (!CurParts.second.empty()) {\n // ...\n if (!TInfo.validateCpuSupports(CurFeature)) {\n Diag(CurLoc, diag::warn_unsupported_target_attribute) << Unsupported << None << CurFeature << TargetClones;"},{C,3591,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n // ...\n while (!Parts.second.empty()) {\n // ...\n if (TInfo.getTriple().isAArch64()) {\n // ...\n } else {\n // Other targets ( currently X86 )\n if (Cur.startswith(\"arch=\")) {\n if (!Context.getTargetInfo().isValidCPUName(Cur.drop_front(sizeof(\"arch=\") - 1)))\n return Diag(CurLoc, diag::warn_unsupported_target_attribute) << Unsupported << CPU << Cur.drop_front(sizeof(\"arch=\") - 1) << TargetClones;"},{C,3598,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n // ...\n while (!Parts.second.empty()) {\n // ...\n if (TInfo.getTriple().isAArch64()) {\n // ...\n } else {\n // Other targets ( currently X86 )\n if (Cur.startswith(\"arch=\")) {\n // ...\n } else if (Cur == \"default\") {\n // ...\n } else if (!Context.getTargetInfo().isValidFeatureName(Cur))\n return Diag(CurLoc, diag::warn_unsupported_target_attribute) << Unsupported << None << Cur << TargetClones;"},{C,3607,"bool Sema::checkTargetClonesAttrString(SourceLocation LiteralLoc, StringRef Str, const StringLiteral *Literal, bool &HasDefault, bool &HasCommas, bool &HasNotDefault, SmallVectorImpl<SmallString<64>> &StringsBuffer) {\n // ...\n if (Str.rtrim().endswith(\",\"))\n return Diag(LiteralLoc, diag::warn_unsupported_target_attribute) << Unsupported << None << \"\" << TargetClones;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-target-clones-aarch64.c"]={"clang/test/Sema/attr-target-clones-aarch64.c:6:36: warning: unsupported \'default\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]","clang/test/Sema/attr-target-clones-aarch64.c:55:35: warning: unsupported \'\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]","clang/test/Sema/attr-target-clones-aarch64.c:59:36: warning: unsupported \'default\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]","clang/test/Sema/attr-target-clones-aarch64.c:59:36: warning: unsupported \'default\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]","clang/test/Sema/attr-target-clones-aarch64.c:61:36: warning: unsupported \'\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]","clang/test/Sema/attr-target-clones-aarch64.c:64:36: warning: unsupported \'bs\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]","clang/test/Sema/attr-target-clones-aarch64.c:68:46: warning: unsupported \'\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]"} | ["clang/test/Sema/attr-target-clones-aarch64.c"]={"clang/test/Sema/attr-target-clones-aarch64.c:6:36: warning: unsupported \'default\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]","clang/test/Sema/attr-target-clones-aarch64.c:55:35: warning: unsupported \'\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]","clang/test/Sema/attr-target-clones-aarch64.c:59:36: warning: unsupported \'default\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]","clang/test/Sema/attr-target-clones-aarch64.c:59:36: warning: unsupported \'default\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]","clang/test/Sema/attr-target-clones-aarch64.c:61:36: warning: unsupported \'\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]","clang/test/Sema/attr-target-clones-aarch64.c:64:36: warning: unsupported \'bs\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]","clang/test/Sema/attr-target-clones-aarch64.c:68:46: warning: unsupported \'\' in the \'target_clones\' attribute string; \'target_clones\' attribute ignored [-Wignored-attributes]"} | ||
Line 9,519: | Line 9,519: | ||
[h]=q, | [h]=q, | ||
[i]={Xb,1615397021,qb,qb}, | [i]={Xb,1615397021,qb,qb}, | ||
[j]={{H,2205,"void Sema::DiagnoseUnusedButSetDecl(const VarDecl *VD, DiagReceiverTy DiagReceiver) {\n unsigned DiagID = isa<ParmVarDecl>(VD) ? diag::warn_unused_but_set_parameter : diag::warn_unused_but_set_variable;"}}, | [j]={{H,2205,"void Sema::DiagnoseUnusedButSetDecl(const VarDecl *VD, DiagReceiverTy DiagReceiver) {\n // ...\n unsigned DiagID = isa<ParmVarDecl>(VD) ? diag::warn_unused_but_set_parameter : diag::warn_unused_but_set_variable;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-unused-but-set-parameters-cpp.cpp"]={"clang/test/SemaCXX/warn-unused-but-set-parameters-cpp.cpp:4:12: warning: parameter \'y\' set but not used [-Wunused-but-set-parameter]","clang/test/SemaCXX/warn-unused-but-set-parameters-cpp.cpp:12:15: warning: parameter \'y\' set but not used [-Wunused-but-set-parameter]"} | ["clang/test/SemaCXX/warn-unused-but-set-parameters-cpp.cpp"]={"clang/test/SemaCXX/warn-unused-but-set-parameters-cpp.cpp:4:12: warning: parameter \'y\' set but not used [-Wunused-but-set-parameter]","clang/test/SemaCXX/warn-unused-but-set-parameters-cpp.cpp:12:15: warning: parameter \'y\' set but not used [-Wunused-but-set-parameter]"} | ||
Line 9,537: | Line 9,537: | ||
[h]=Y, | [h]=Y, | ||
[i]={Xb,1615397021,qb,qb}, | [i]={Xb,1615397021,qb,qb}, | ||
[j]={{H,2206,"void Sema::DiagnoseUnusedButSetDecl(const VarDecl *VD, DiagReceiverTy DiagReceiver) {\n unsigned DiagID = isa<ParmVarDecl>(VD) ? diag::warn_unused_but_set_parameter : diag::warn_unused_but_set_variable;"}}, | [j]={{H,2206,"void Sema::DiagnoseUnusedButSetDecl(const VarDecl *VD, DiagReceiverTy DiagReceiver) {\n // ...\n unsigned DiagID = isa<ParmVarDecl>(VD) ? diag::warn_unused_but_set_parameter : diag::warn_unused_but_set_variable;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/objc-precise-lifetime-unused-variable.m"]={"clang/test/SemaObjC/objc-precise-lifetime-unused-variable.m:17:8: warning: variable \'y2\' set but not used [-Wunused-but-set-variable]","clang/test/SemaObjC/objc-precise-lifetime-unused-variable.m:10:6: warning: variable \'x2\' set but not used [-Wunused-but-set-variable]"} | ["clang/test/SemaObjC/objc-precise-lifetime-unused-variable.m"]={"clang/test/SemaObjC/objc-precise-lifetime-unused-variable.m:17:8: warning: variable \'y2\' set but not used [-Wunused-but-set-variable]","clang/test/SemaObjC/objc-precise-lifetime-unused-variable.m:10:6: warning: variable \'x2\' set but not used [-Wunused-but-set-variable]"} | ||
Line 9,554: | Line 9,554: | ||
[h]=Y, | [h]=Y, | ||
[i]={"1a6babf1f41c",1255409628,"make the diagnostic in the \'unused result\' warning more precise","make the diagnostic in the \'unused result\' warning more precise"}, | [i]={"1a6babf1f41c",1255409628,"make the diagnostic in the \'unused result\' warning more precise","make the diagnostic in the \'unused result\' warning more precise"}, | ||
[j]={{U,300,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n if (const CallExpr *CE = dyn_cast<CallExpr>(E)) {\n // If the callee has attribute pure, const, or warn_unused_result, warn with\n // a more specific message to make it clear what is happening. If the call\n // is written in a macro body, only warn if it has the warn_unused_result\n // attribute.\n if (const Decl *FD = CE->getCalleeDecl()) {\n if (FD->hasAttr<PureAttr>()) {\n Diag(Loc, diag::warn_unused_call) << R1 << R2 << \"pure\";"},{U,304,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n if (const CallExpr *CE = dyn_cast<CallExpr>(E)) {\n // If the callee has attribute pure, const, or warn_unused_result, warn with\n // a more specific message to make it clear what is happening. If the call\n // is written in a macro body, only warn if it has the warn_unused_result\n // attribute.\n if (const Decl *FD = CE->getCalleeDecl()) {\n if (FD->hasAttr<ConstAttr>()) {\n Diag(Loc, diag::warn_unused_call) << R1 << R2 << \"const\";"}}, | [j]={{U,300,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n // ...\n if (const CallExpr *CE = dyn_cast<CallExpr>(E)) {\n // ...\n // If the callee has attribute pure, const, or warn_unused_result, warn with\n // a more specific message to make it clear what is happening. If the call\n // is written in a macro body, only warn if it has the warn_unused_result\n // attribute.\n if (const Decl *FD = CE->getCalleeDecl()) {\n // ...\n if (FD->hasAttr<PureAttr>()) {\n Diag(Loc, diag::warn_unused_call) << R1 << R2 << \"pure\";"},{U,304,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n // ...\n if (const CallExpr *CE = dyn_cast<CallExpr>(E)) {\n // ...\n // If the callee has attribute pure, const, or warn_unused_result, warn with\n // a more specific message to make it clear what is happening. If the call\n // is written in a macro body, only warn if it has the warn_unused_result\n // attribute.\n if (const Decl *FD = CE->getCalleeDecl()) {\n // ...\n if (FD->hasAttr<ConstAttr>()) {\n Diag(Loc, diag::warn_unused_call) << R1 << R2 << \"const\";"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/unused-expr.c"]={"clang/test/Sema/unused-expr.c:28:3: warning: ignoring return value of function declared with const attribute [-Wunused-value]","clang/test/Sema/unused-expr.c:92:3: warning: ignoring return value of function declared with pure attribute [-Wunused-value]","clang/test/Sema/unused-expr.c:93:3: warning: ignoring return value of function declared with const attribute [-Wunused-value]","clang/test/Sema/unused-expr.c:94:3: warning: ignoring return value of function declared with const attribute [-Wunused-value]","clang/test/Sema/unused-expr.c:143:15: warning: ignoring return value of function declared with pure attribute [-Wunused-value]"} | ["clang/test/Sema/unused-expr.c"]={"clang/test/Sema/unused-expr.c:28:3: warning: ignoring return value of function declared with const attribute [-Wunused-value]","clang/test/Sema/unused-expr.c:92:3: warning: ignoring return value of function declared with pure attribute [-Wunused-value]","clang/test/Sema/unused-expr.c:93:3: warning: ignoring return value of function declared with const attribute [-Wunused-value]","clang/test/Sema/unused-expr.c:94:3: warning: ignoring return value of function declared with const attribute [-Wunused-value]","clang/test/Sema/unused-expr.c:143:15: warning: ignoring return value of function declared with pure attribute [-Wunused-value]"} | ||
Line 9,571: | Line 9,571: | ||
[h]=Y, | [h]=Y, | ||
[i]={Xb,1615397021,qb,qb}, | [i]={Xb,1615397021,qb,qb}, | ||
[j]={{A,14667,"// C99 6.5.17\nstatic QualType CheckCommaOperands(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc) {\n S.DiagnoseUnusedExprResult(LHS.get(), diag::warn_unused_comma_left_operand);"},{U,386,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n if (DiagID != diag::warn_unused_comma_left_operand || !isSFINAEContext())"}}, | [j]={{A,14667,"// C99 6.5.17\nstatic QualType CheckCommaOperands(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc) {\n // ...\n S.DiagnoseUnusedExprResult(LHS.get(), diag::warn_unused_comma_left_operand);"},{U,386,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n // ...\n if (DiagID != diag::warn_unused_comma_left_operand || !isSFINAEContext())"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/objc-messaging-1.m"]={"clang/test/Parser/objc-messaging-1.m:9:26: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:9:28: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:11:26: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:11:28: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:13:26: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:13:28: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:13:35: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:13:37: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:15:34: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:15:37: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:17:33: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:17:36: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:19:37: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:19:40: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:23:3: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:23:6: warning: left operand of comma operator has no effect [-Wunused-value]"} | ["clang/test/Parser/objc-messaging-1.m"]={"clang/test/Parser/objc-messaging-1.m:9:26: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:9:28: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:11:26: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:11:28: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:13:26: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:13:28: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:13:35: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:13:37: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:15:34: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:15:37: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:17:33: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:17:36: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:19:37: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:19:40: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:23:3: warning: left operand of comma operator has no effect [-Wunused-value]","clang/test/Parser/objc-messaging-1.m:23:6: warning: left operand of comma operator has no effect [-Wunused-value]"} | ||
Line 9,588: | Line 9,588: | ||
[h]=Y, | [h]=Y, | ||
[i]={"e2669397f1cf",1313573677,"Treating the unused equality comparisons as something other than part of","Treating the unused equality comparisons as something other than part of"}, | [i]={"e2669397f1cf",1313573677,"Treating the unused equality comparisons as something other than part of","Treating the unused equality comparisons as something other than part of"}, | ||
[j]={{U,185,"/// Diagnose unused comparisons, both builtin and overloaded operators.\n/// For \'==\' and \'!=\', suggest fixits for \'=\' or \'|=\'.\n///\n/// Adding a cast to void (or other expression wrappers) will prevent the\n/// warning from firing.\nstatic bool DiagnoseUnusedComparison(Sema &S, const Expr *E) {\n S.Diag(Loc, diag::warn_unused_comparison) << (unsigned)Kind << E->getSourceRange();"}}, | [j]={{U,185,"/// Diagnose unused comparisons, both builtin and overloaded operators.\n/// For \'==\' and \'!=\', suggest fixits for \'=\' or \'|=\'.\n///\n/// Adding a cast to void (or other expression wrappers) will prevent the\n/// warning from firing.\nstatic bool DiagnoseUnusedComparison(Sema &S, const Expr *E) {\n // ...\n S.Diag(Loc, diag::warn_unused_comparison) << (unsigned)Kind << E->getSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/unused-expr.c"]={"clang/test/Sema/unused-expr.c:10:6: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:14:5: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:57:7: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:59:7: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:62:7: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:65:7: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:69:7: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:71:10: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:73:12: warning: relational comparison result unused [-Wunused-comparison]"} | ["clang/test/Sema/unused-expr.c"]={"clang/test/Sema/unused-expr.c:10:6: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:14:5: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:57:7: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:59:7: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:62:7: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:65:7: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:69:7: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:71:10: warning: relational comparison result unused [-Wunused-comparison]","clang/test/Sema/unused-expr.c:73:12: warning: relational comparison result unused [-Wunused-comparison]"} | ||
Line 9,606: | Line 9,606: | ||
[h]=Y, | [h]=Y, | ||
[i]={"c531daefd9cc",1378895855,"Split -Wunused-variable warning.","Split -Wunused-variable warning."}, | [i]={"c531daefd9cc",1378895855,"Split -Wunused-variable warning.","Split -Wunused-variable warning."}, | ||
[j]={{Z,1401,"/// 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 there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n } else {\n if (DiagD->isReferenced()) {\n } else if (DiagD->getDescribedVarTemplate()) {\n } else if (DiagD->getType().isConstQualified()) {\n if (SM.getMainFileID() != SM.getFileID(DiagD->getLocation()) || !PP.getLangOpts().IsHeaderFile)\n Diag(DiagD->getLocation(), diag::warn_unused_const_variable) << DiagD << DiagRange;"}}, | [j]={{Z,1401,"/// 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 // ...\n // If there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n // ...\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n // ...\n } else {\n // ...\n if (DiagD->isReferenced()) {\n // ...\n } else if (DiagD->getDescribedVarTemplate()) {\n // ...\n } else if (DiagD->getType().isConstQualified()) {\n // ...\n if (SM.getMainFileID() != SM.getFileID(DiagD->getLocation()) || !PP.getLangOpts().IsHeaderFile)\n Diag(DiagD->getLocation(), diag::warn_unused_const_variable) << DiagD << DiagRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Misc/diag-unused-source-ranges.cpp"]={"clang/test/Misc/diag-unused-source-ranges.cpp:124:15:{124:15-124:27}: warning: unused variable \'const_unused\' [-Wunused-const-variable]"} | ["clang/test/Misc/diag-unused-source-ranges.cpp"]={"clang/test/Misc/diag-unused-source-ranges.cpp:124:15:{124:15-124:27}: warning: unused variable \'const_unused\' [-Wunused-const-variable]"} | ||
Line 9,623: | Line 9,623: | ||
[h]=Y, | [h]=Y, | ||
[i]={"46441fdb3c1d",1564067456,"Implement P1771","Implement P1771"}, | [i]={"46441fdb3c1d",1564067456,"Implement P1771","Implement P1771"}, | ||
[j]={{U,211,"static bool DiagnoseNoDiscard(Sema &S, const WarnUnusedResultAttr *A, SourceLocation Loc, SourceRange R1, SourceRange R2, bool IsCtor) {\n if (Msg.empty()) {\n if (IsCtor)\n return S.Diag(Loc, diag::warn_unused_constructor) << A << R1 << R2;"}}, | [j]={{U,211,"static bool DiagnoseNoDiscard(Sema &S, const WarnUnusedResultAttr *A, SourceLocation Loc, SourceRange R1, SourceRange R2, bool IsCtor) {\n // ...\n if (Msg.empty()) {\n if (IsCtor)\n return S.Diag(Loc, diag::warn_unused_constructor) << A << R1 << R2;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp"]={"clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp:98:3: warning: ignoring temporary created by a constructor declared with \'nodiscard\' attribute [-Wunused-value]"} | ["clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp"]={"clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp:98:3: warning: ignoring temporary created by a constructor declared with \'nodiscard\' attribute [-Wunused-value]"} | ||
Line 9,640: | Line 9,640: | ||
[h]=Y, | [h]=Y, | ||
[i]={"46441fdb3c1d",1564067456,"Implement P1771","Implement P1771"}, | [i]={"46441fdb3c1d",1564067456,"Implement P1771","Implement P1771"}, | ||
[j]={{U,216,"static bool DiagnoseNoDiscard(Sema &S, const WarnUnusedResultAttr *A, SourceLocation Loc, SourceRange R1, SourceRange R2, bool IsCtor) {\n if (IsCtor)\n return S.Diag(Loc, diag::warn_unused_constructor_msg) << A << Msg << R1 << R2;"}}, | [j]={{U,216,"static bool DiagnoseNoDiscard(Sema &S, const WarnUnusedResultAttr *A, SourceLocation Loc, SourceRange R1, SourceRange R2, bool IsCtor) {\n // ...\n if (IsCtor)\n return S.Diag(Loc, diag::warn_unused_constructor_msg) << A << Msg << R1 << R2;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp"]={"clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp:99:3: warning: ignoring temporary created by a constructor declared with \'nodiscard\' attribute: Don\'t let that S-Char go! [-Wunused-value]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp:102:3: warning: ignoring temporary created by a constructor declared with \'nodiscard\' attribute: Don\'t throw me away either! [-Wunused-value]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp:113:3: warning: ignoring temporary created by a constructor declared with \'nodiscard\' attribute: Don\'t throw me away! [-Wunused-value]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp:115:3: warning: ignoring temporary created by a constructor declared with \'nodiscard\' attribute: Don\'t let that S-Char go! [-Wunused-value]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp:121:3: warning: ignoring temporary created by a constructor declared with \'nodiscard\' attribute: Don\'t throw me away! [-Wunused-value]"} | ["clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp"]={"clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp:99:3: warning: ignoring temporary created by a constructor declared with \'nodiscard\' attribute: Don\'t let that S-Char go! [-Wunused-value]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp:102:3: warning: ignoring temporary created by a constructor declared with \'nodiscard\' attribute: Don\'t throw me away either! [-Wunused-value]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp:113:3: warning: ignoring temporary created by a constructor declared with \'nodiscard\' attribute: Don\'t throw me away! [-Wunused-value]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp:115:3: warning: ignoring temporary created by a constructor declared with \'nodiscard\' attribute: Don\'t let that S-Char go! [-Wunused-value]","clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.nodiscard/p2.cpp:121:3: warning: ignoring temporary created by a constructor declared with \'nodiscard\' attribute: Don\'t throw me away! [-Wunused-value]"} | ||
Line 9,657: | Line 9,657: | ||
[h]=Y, | [h]=Y, | ||
[i]={"e65b086e07a6",1331064356,"Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,","Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,"}, | [i]={"e65b086e07a6",1331064356,"Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,","Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,"}, | ||
[j]={{U,345,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n if (const ObjCMessageExpr *ME = dyn_cast<ObjCMessageExpr>(E)) {\n } else if (const PseudoObjectExpr *POE = dyn_cast<PseudoObjectExpr>(E)) {\n if (isa<ObjCSubscriptRefExpr>(Source))\n DiagID = diag::warn_unused_container_subscript_expr;"}}, | [j]={{U,345,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n // ...\n if (const ObjCMessageExpr *ME = dyn_cast<ObjCMessageExpr>(E)) {\n // ...\n } else if (const PseudoObjectExpr *POE = dyn_cast<PseudoObjectExpr>(E)) {\n // ...\n if (isa<ObjCSubscriptRefExpr>(Source))\n DiagID = diag::warn_unused_container_subscript_expr;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/objc-container-subscripting-2.m"]={"clang/test/SemaObjC/objc-container-subscripting-2.m:25:3: warning: container access result unused - container access should not be used for side effects [-Wunused-value]","clang/test/SemaObjC/objc-container-subscripting-2.m:28:3: warning: container access result unused - container access should not be used for side effects [-Wunused-value]"} | ["clang/test/SemaObjC/objc-container-subscripting-2.m"]={"clang/test/SemaObjC/objc-container-subscripting-2.m:25:3: warning: container access result unused - container access should not be used for side effects [-Wunused-value]","clang/test/SemaObjC/objc-container-subscripting-2.m:28:3: warning: container access result unused - container access should not be used for side effects [-Wunused-value]"} | ||
Line 9,675: | Line 9,675: | ||
[h]=q, | [h]=q, | ||
[i]={"3f324d569bfc",1272912674,"Diagnose unused exception parameters under a different warning group","Diagnose unused exception parameters under a different warning group"}, | [i]={"3f324d569bfc",1272912674,"Diagnose unused exception parameters under a different warning group","Diagnose unused exception parameters under a different warning group"}, | ||
[j]={{H,2150,"/// DiagnoseUnusedDecl - Emit warnings about declarations that are not used\n/// unless they are marked attr(unused).\nvoid Sema::DiagnoseUnusedDecl(const NamedDecl *D, DiagReceiverTy DiagReceiver) {\n if (isa<VarDecl>(D) && cast<VarDecl>(D)->isExceptionVariable())\n DiagID = diag::warn_unused_exception_param;"}}, | [j]={{H,2150,"/// DiagnoseUnusedDecl - Emit warnings about declarations that are not used\n/// unless they are marked attr(unused).\nvoid Sema::DiagnoseUnusedDecl(const NamedDecl *D, DiagReceiverTy DiagReceiver) {\n // ...\n if (isa<VarDecl>(D) && cast<VarDecl>(D)->isExceptionVariable())\n DiagID = diag::warn_unused_exception_param;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/warn-unused-exception-param.m"]={"clang/test/SemaObjC/warn-unused-exception-param.m:3:21: warning: unused exception parameter \'a\' [-Wunused-exception-parameter]"} | ["clang/test/SemaObjC/warn-unused-exception-param.m"]={"clang/test/SemaObjC/warn-unused-exception-param.m:3:21: warning: unused exception parameter \'a\' [-Wunused-exception-parameter]"} | ||
Line 9,692: | Line 9,692: | ||
[h]=Y, | [h]=Y, | ||
[i]={Fc,1237025389,Fb,Fb}, | [i]={Fc,1237025389,Fb,Fb}, | ||
[j]={{"clang/lib/Interpreter/Interpreter.cpp",360,"llvm::Expected<PartialTranslationUnit &> Interpreter::Parse(llvm::StringRef Code) {\n getCompilerInstance()->getDiagnostics().setSeverity(clang::diag::warn_unused_expr, diag::Severity::Ignored, SourceLocation());"},{kc,8843,"ExprResult Sema::ActOnFinishFullExpr(Expr *FE, SourceLocation CC, bool DiscardedValue, bool IsConstexpr, bool IsTemplateArgument) {\n if (DiscardedValue) {\n DiagnoseUnusedExprResult(FullExpr.get(), diag::warn_unused_expr);"}}, | [j]={{"clang/lib/Interpreter/Interpreter.cpp",360,"llvm::Expected<PartialTranslationUnit &> Interpreter::Parse(llvm::StringRef Code) {\n // ...\n getCompilerInstance()->getDiagnostics().setSeverity(clang::diag::warn_unused_expr, diag::Severity::Ignored, SourceLocation());"},{kc,8843,"ExprResult Sema::ActOnFinishFullExpr(Expr *FE, SourceLocation CC, bool DiscardedValue, bool IsConstexpr, bool IsTemplateArgument) {\n // ...\n if (DiscardedValue) {\n // ...\n DiagnoseUnusedExprResult(FullExpr.get(), diag::warn_unused_expr);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGen/2004-06-08-OpaqueStructArg.c"]={"clang/test/CodeGen/2004-06-08-OpaqueStructArg.c:6:7: warning: expression result unused [-Wunused-value]"} | ["clang/test/CodeGen/2004-06-08-OpaqueStructArg.c"]={"clang/test/CodeGen/2004-06-08-OpaqueStructArg.c:6:7: warning: expression result unused [-Wunused-value]"} | ||
Line 9,710: | Line 9,710: | ||
[h]=Y, | [h]=Y, | ||
[i]={"90073804fb1c",1265933250,"Implementing unused function warning.","Implementing unused function warning."}, | [i]={"90073804fb1c",1265933250,"Implementing unused function warning.","Implementing unused function warning."}, | ||
[j]={{Z,1378,"/// 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 there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n if (DiagD->isReferenced()) {\n } else {\n if (FD->getDescribedFunctionTemplate())\n else\n Diag(DiagD->getLocation(), isa<CXXMethodDecl>(DiagD) ? diag::warn_unused_member_function : diag::warn_unused_function) << DiagD << DiagRange;"}}, | [j]={{Z,1378,"/// 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 // ...\n // If there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n // ...\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n // ...\n if (DiagD->isReferenced()) {\n // ...\n } else {\n if (FD->getDescribedFunctionTemplate())\n // ...\n else\n Diag(DiagD->getLocation(), isa<CXXMethodDecl>(DiagD) ? diag::warn_unused_member_function : diag::warn_unused_function) << DiagD << DiagRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Misc/diag-unused-source-ranges.cpp"]={"clang/test/Misc/diag-unused-source-ranges.cpp:52:12:{52:12-52:23}: warning: unused function \'unused_func\' [-Wunused-function]","clang/test/Misc/diag-unused-source-ranges.cpp:69:6:{69:6-69:21}: warning: unused function \'arrow_decl<int>\' [-Wunused-function]"} | ["clang/test/Misc/diag-unused-source-ranges.cpp"]={"clang/test/Misc/diag-unused-source-ranges.cpp:52:12:{52:12-52:23}: warning: unused function \'unused_func\' [-Wunused-function]","clang/test/Misc/diag-unused-source-ranges.cpp:69:6:{69:6-69:21}: warning: unused function \'arrow_decl<int>\' [-Wunused-function]"} | ||
Line 9,728: | Line 9,728: | ||
[h]=Y, | [h]=Y, | ||
[i]={"72664df10386",1284931285,"Implement -Wunused-label.","Implement -Wunused-label."}, | [i]={"72664df10386",1284931285,"Implement -Wunused-label.","Implement -Wunused-label."}, | ||
[j]={{H,2152,"/// DiagnoseUnusedDecl - Emit warnings about declarations that are not used\n/// unless they are marked attr(unused).\nvoid Sema::DiagnoseUnusedDecl(const NamedDecl *D, DiagReceiverTy DiagReceiver) {\n if (isa<VarDecl>(D) && cast<VarDecl>(D)->isExceptionVariable())\n else if (isa<LabelDecl>(D))\n DiagID = diag::warn_unused_label;"}}, | [j]={{H,2152,"/// DiagnoseUnusedDecl - Emit warnings about declarations that are not used\n/// unless they are marked attr(unused).\nvoid Sema::DiagnoseUnusedDecl(const NamedDecl *D, DiagReceiverTy DiagReceiver) {\n // ...\n if (isa<VarDecl>(D) && cast<VarDecl>(D)->isExceptionVariable())\n // ...\n else if (isa<LabelDecl>(D))\n DiagID = diag::warn_unused_label;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-unused-label-error.cpp"]={"clang/test/SemaCXX/warn-unused-label-error.cpp:7:5: warning: unused label \'A\' [-Wunused-label]"} | ["clang/test/SemaCXX/warn-unused-label-error.cpp"]={"clang/test/SemaCXX/warn-unused-label-error.cpp:7:5: warning: unused label \'A\' [-Wunused-label]"} | ||
Line 9,746: | Line 9,746: | ||
[h]=Y, | [h]=Y, | ||
[i]={"87a036259bb4",1484319666,"[Sema] Add warning for unused lambda captures","[Sema] Add warning for unused lambda captures"}, | [i]={"87a036259bb4",1484319666,"[Sema] Add warning for unused lambda captures","[Sema] Add warning for unused lambda captures"}, | ||
[j]={{"clang/lib/Sema/SemaLambda.cpp",1879,"bool Sema::DiagnoseUnusedLambdaCapture(SourceRange CaptureRange, const Capture &From) {\n auto diag = Diag(From.getLocation(), diag::warn_unused_lambda_capture);"}}, | [j]={{"clang/lib/Sema/SemaLambda.cpp",1879,"bool Sema::DiagnoseUnusedLambdaCapture(SourceRange CaptureRange, const Capture &From) {\n // ...\n auto diag = Diag(From.getLocation(), diag::warn_unused_lambda_capture);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-unused-lambda-capture.cpp"]={"clang/test/SemaCXX/warn-unused-lambda-capture.cpp:43:36: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:44:43: warning: lambda capture \'i\' is not required to be captured for this use [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:45:45: warning: lambda capture \'i\' is not required to be captured for this use [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:46:42: warning: lambda capture \'k\' is not required to be captured for this use [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:49:41: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:52:50: warning: lambda capture \'j\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:55:45: warning: lambda capture \'j\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:58:51: warning: lambda capture \'j\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:64:38: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:68:37: warning: lambda capture \'trivial\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:71:53: warning: lambda capture \'cons\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:87:34: warning: lambda capture \'this\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:90:39: warning: lambda capture \'this\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:99:34: warning: lambda capture \'this\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:102:39: warning: lambda capture \'this\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:111:34: warning: lambda capture \'this\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:123:34: warning: lambda capture \'this\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:200:23: warning: lambda capture \'c\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:148:36: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:149:43: warning: lambda capture \'i\' is not required to be captured for this use [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:150:45: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:151:42: warning: lambda capture \'k\' is not required to be captured for this use [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:152:50: warning: lambda capture \'k\' is not required to be captured for this use [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:155:41: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:158:50: warning: lambda capture \'j\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:161:45: warning: lambda capture \'j\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:164:51: warning: lambda capture \'j\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:168:53: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:172:38: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:176:37: warning: lambda capture \'trivial\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:179:53: warning: lambda capture \'cons\' is not used [-Wunused-lambda-capture]"} | ["clang/test/SemaCXX/warn-unused-lambda-capture.cpp"]={"clang/test/SemaCXX/warn-unused-lambda-capture.cpp:43:36: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:44:43: warning: lambda capture \'i\' is not required to be captured for this use [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:45:45: warning: lambda capture \'i\' is not required to be captured for this use [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:46:42: warning: lambda capture \'k\' is not required to be captured for this use [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:49:41: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:52:50: warning: lambda capture \'j\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:55:45: warning: lambda capture \'j\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:58:51: warning: lambda capture \'j\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:64:38: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:68:37: warning: lambda capture \'trivial\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:71:53: warning: lambda capture \'cons\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:87:34: warning: lambda capture \'this\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:90:39: warning: lambda capture \'this\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:99:34: warning: lambda capture \'this\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:102:39: warning: lambda capture \'this\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:111:34: warning: lambda capture \'this\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:123:34: warning: lambda capture \'this\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:200:23: warning: lambda capture \'c\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:148:36: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:149:43: warning: lambda capture \'i\' is not required to be captured for this use [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:150:45: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:151:42: warning: lambda capture \'k\' is not required to be captured for this use [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:152:50: warning: lambda capture \'k\' is not required to be captured for this use [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:155:41: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:158:50: warning: lambda capture \'j\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:161:45: warning: lambda capture \'j\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:164:51: warning: lambda capture \'j\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:168:53: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:172:38: warning: lambda capture \'i\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:176:37: warning: lambda capture \'trivial\' is not used [-Wunused-lambda-capture]","clang/test/SemaCXX/warn-unused-lambda-capture.cpp:179:53: warning: lambda capture \'cons\' is not used [-Wunused-lambda-capture]"} | ||
Line 9,764: | Line 9,764: | ||
[h]=Y, | [h]=Y, | ||
[i]={"728894340f2a",1409966755,"Add -Wunused-local-typedef, a warning that finds unused local typedefs.","Add -Wunused-local-typedef, a warning that finds unused local typedefs."}, | [i]={"728894340f2a",1409966755,"Add -Wunused-local-typedef, a warning that finds unused local typedefs.","Add -Wunused-local-typedef, a warning that finds unused local typedefs."}, | ||
[j]={{Z,1022,"void Sema::emitAndClearUnusedLocalTypedefWarnings() {\n for (const TypedefNameDecl *TD : UnusedLocalTypedefNameCandidates) {\n Diag(TD->getLocation(), diag::warn_unused_local_typedef) << isa<TypeAliasDecl>(TD) << TD->getDeclName();"}}, | [j]={{Z,1022,"void Sema::emitAndClearUnusedLocalTypedefWarnings() {\n // ...\n for (const TypedefNameDecl *TD : UnusedLocalTypedefNameCandidates) {\n // ...\n Diag(TD->getLocation(), diag::warn_unused_local_typedef) << isa<TypeAliasDecl>(TD) << TD->getDeclName();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/c2x-maybe_unused.c"]={"clang/test/Sema/c2x-maybe_unused.c:21:15: warning: unused typedef \'I\' [-Wunused-local-typedef]"} | ["clang/test/Sema/c2x-maybe_unused.c"]={"clang/test/Sema/c2x-maybe_unused.c:21:15: warning: unused typedef \'I\' [-Wunused-local-typedef]"} | ||
Line 9,782: | Line 9,782: | ||
[h]=q, | [h]=q, | ||
[i]={"beb71b315a89",1282082804,"Rename -Wunused-method -> -Wunused-member-function.","Rename -Wunused-method -> -Wunused-member-function."}, | [i]={"beb71b315a89",1282082804,"Rename -Wunused-method -> -Wunused-member-function.","Rename -Wunused-method -> -Wunused-member-function."}, | ||
[j]={{Z,1377,"/// 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 there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n if (DiagD->isReferenced()) {\n } else {\n if (FD->getDescribedFunctionTemplate())\n else\n Diag(DiagD->getLocation(), isa<CXXMethodDecl>(DiagD) ? diag::warn_unused_member_function : diag::warn_unused_function) << DiagD << DiagRange;"}}, | [j]={{Z,1377,"/// 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 // ...\n // If there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n // ...\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n // ...\n if (DiagD->isReferenced()) {\n // ...\n } else {\n if (FD->getDescribedFunctionTemplate())\n // ...\n else\n Diag(DiagD->getLocation(), isa<CXXMethodDecl>(DiagD) ? diag::warn_unused_member_function : diag::warn_unused_function) << DiagD << DiagRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Misc/diag-unused-source-ranges.cpp"]={"clang/test/Misc/diag-unused-source-ranges.cpp:106:8:{106:8-106:11}: warning: unused member function \'fun\' [-Wunused-member-function]"} | ["clang/test/Misc/diag-unused-source-ranges.cpp"]={"clang/test/Misc/diag-unused-source-ranges.cpp:106:8:{106:8-106:11}: warning: unused member function \'fun\' [-Wunused-member-function]"} | ||
Line 9,800: | Line 9,800: | ||
[h]=q, | [h]=q, | ||
[i]={"c9c02ed8f499",1245455562,"Keep track of when declarations are \"used\" according to C and","Keep track of when declarations are \"used\" according to C and"}, | [i]={"c9c02ed8f499",1245455562,"Keep track of when declarations are \"used\" according to C and","Keep track of when declarations are \"used\" according to C and"}, | ||
[j]={{H,14854,"void Sema::DiagnoseUnusedParameters(ArrayRef<ParmVarDecl *> Parameters) {\n for (const ParmVarDecl *Parameter : Parameters) {\n if (!Parameter->isReferenced() && Parameter->getDeclName() && !Parameter->hasAttr<UnusedAttr>()) {\n Diag(Parameter->getLocation(), diag::warn_unused_parameter) << Parameter->getDeclName();"}}, | [j]={{H,14854,"void Sema::DiagnoseUnusedParameters(ArrayRef<ParmVarDecl *> Parameters) {\n // ...\n for (const ParmVarDecl *Parameter : Parameters) {\n if (!Parameter->isReferenced() && Parameter->getDeclName() && !Parameter->hasAttr<UnusedAttr>()) {\n Diag(Parameter->getLocation(), diag::warn_unused_parameter) << Parameter->getDeclName();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-unused.c"]={"clang/test/Sema/attr-unused.c:29:12: warning: unused parameter \'x\' [-Wunused-parameter]"} | ["clang/test/Sema/attr-unused.c"]={"clang/test/Sema/attr-unused.c:29:12: warning: unused parameter \'x\' [-Wunused-parameter]"} | ||
Line 9,818: | Line 9,818: | ||
[h]=Y, | [h]=Y, | ||
[i]={"0baec549a3f4",1338971524,"Introduce -Wunused-private-field. If enabled, this warning detects","Introduce -Wunused-private-field. If enabled, this warning detects"}, | [i]={"0baec549a3f4",1338971524,"Introduce -Wunused-private-field. If enabled, this warning detects","Introduce -Wunused-private-field. If enabled, this warning detects"}, | ||
[j]={{Z,1413,"/// 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 (!Diags.isIgnored(diag::warn_unused_private_field, SourceLocation())) {"},{Z,1422,"/// 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 (!Diags.isIgnored(diag::warn_unused_private_field, SourceLocation())) {\n for (const NamedDecl *D : UnusedPrivateFields) {\n if (RD && !RD->isUnion() && IsRecordFullyDefined(RD, RecordsComplete, MNCComplete)) {\n Diag(D->getLocation(), diag::warn_unused_private_field) << D->getDeclName();"},{db,3704,"/// 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 (!Diags.isIgnored(diag::warn_unused_private_field, FD->getLocation())) {"}}, | [j]={{Z,1413,"/// 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 // ...\n if (!Diags.isIgnored(diag::warn_unused_private_field, SourceLocation())) {"},{Z,1422,"/// 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 // ...\n if (!Diags.isIgnored(diag::warn_unused_private_field, SourceLocation())) {\n // ...\n for (const NamedDecl *D : UnusedPrivateFields) {\n // ...\n if (RD && !RD->isUnion() && IsRecordFullyDefined(RD, RecordsComplete, MNCComplete)) {\n Diag(D->getLocation(), diag::warn_unused_private_field) << D->getDeclName();"},{db,3704,"/// 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 // ...\n if (isInstField) {\n // ...\n if (!Diags.isIgnored(diag::warn_unused_private_field, FD->getLocation())) {"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-unused-private-field.cpp"]={"clang/test/SemaCXX/warn-unused-private-field.cpp:45:7: warning: private field \'unused_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:63:7: warning: private field \'unused_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:124:7: warning: private field \'primitive_type_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:125:6: warning: private field \'pointer_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:126:7: warning: private field \'no_initializer_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:127:7: warning: private field \'default_initializer_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:128:7: warning: private field \'other_initializer_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:129:14: warning: private field \'unused_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:130:7: warning: private field \'in_class_initializer_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:132:11: warning: private field \'trivial_initializer_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:137:11: warning: private field \'trivial_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:173:7: warning: private field \'unused_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:205:7: warning: private field \'d\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:240:9: warning: private field \'p_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:241:8: warning: private field \'b_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:242:6: warning: private field \'a_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:243:9: warning: private field \'p2_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:253:12: warning: private field \'p\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:262:7: warning: private field \'a\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:277:7: warning: private field \'n\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:285:7: warning: private field \'n\' is not used [-Wunused-private-field]"} | ["clang/test/SemaCXX/warn-unused-private-field.cpp"]={"clang/test/SemaCXX/warn-unused-private-field.cpp:45:7: warning: private field \'unused_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:63:7: warning: private field \'unused_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:124:7: warning: private field \'primitive_type_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:125:6: warning: private field \'pointer_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:126:7: warning: private field \'no_initializer_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:127:7: warning: private field \'default_initializer_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:128:7: warning: private field \'other_initializer_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:129:14: warning: private field \'unused_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:130:7: warning: private field \'in_class_initializer_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:132:11: warning: private field \'trivial_initializer_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:137:11: warning: private field \'trivial_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:173:7: warning: private field \'unused_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:205:7: warning: private field \'d\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:240:9: warning: private field \'p_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:241:8: warning: private field \'b_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:242:6: warning: private field \'a_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:243:9: warning: private field \'p2_\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:253:12: warning: private field \'p\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:262:7: warning: private field \'a\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:277:7: warning: private field \'n\' is not used [-Wunused-private-field]","clang/test/SemaCXX/warn-unused-private-field.cpp:285:7: warning: private field \'n\' is not used [-Wunused-private-field]"} | ||
Line 9,836: | Line 9,836: | ||
[h]=Y, | [h]=Y, | ||
[i]={"5e3429c39583",1382737490,"ObjectiveC: under -Wunused-property-ivar warn if property\'s","ObjectiveC: under -Wunused-property-ivar warn if property\'s"}, | [i]={"5e3429c39583",1382737490,"ObjectiveC: under -Wunused-property-ivar warn if property\'s","ObjectiveC: under -Wunused-property-ivar warn if property\'s"}, | ||
[j]={{P,5346,"void Sema::DiagnoseUnusedBackingIvarInAccessor(Scope *S, const ObjCImplementationDecl *ImplD) {\n for (const auto *CurMethod : ImplD->instance_methods()) {\n unsigned DIAG = diag::warn_unused_property_backing_ivar;"}}, | [j]={{P,5346,"void Sema::DiagnoseUnusedBackingIvarInAccessor(Scope *S, const ObjCImplementationDecl *ImplD) {\n // ...\n for (const auto *CurMethod : ImplD->instance_methods()) {\n unsigned DIAG = diag::warn_unused_property_backing_ivar;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/unused-backing-ivar-warning.m"]={"clang/test/SemaObjC/unused-backing-ivar-warning.m:18:1: warning: ivar \'_x\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:21:1: warning: ivar \'_y\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:25:1: warning: ivar \'_v\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:38:1: warning: ivar \'_u\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:48:1: warning: ivar \'tIvar\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:122:1: warning: ivar \'q\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:123:1: warning: ivar \'q\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:124:1: warning: ivar \'r\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:145:1: warning: ivar \'_p2\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:200:1: warning: ivar \'_cidURL1\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]"} | ["clang/test/SemaObjC/unused-backing-ivar-warning.m"]={"clang/test/SemaObjC/unused-backing-ivar-warning.m:18:1: warning: ivar \'_x\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:21:1: warning: ivar \'_y\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:25:1: warning: ivar \'_v\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:38:1: warning: ivar \'_u\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:48:1: warning: ivar \'tIvar\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:122:1: warning: ivar \'q\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:123:1: warning: ivar \'q\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:124:1: warning: ivar \'r\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:145:1: warning: ivar \'_p2\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]","clang/test/SemaObjC/unused-backing-ivar-warning.m:200:1: warning: ivar \'_cidURL1\' which backs the property is not referenced in this property\'s accessor [-Wunused-property-ivar]"} | ||
Line 9,853: | Line 9,853: | ||
[h]=q, | [h]=q, | ||
[i]={"2ba5ca9d4fd5",1250441847,"Improve the diagnostic emitted when an unused ObjC property getter","Improve the diagnostic emitted when an unused ObjC property getter"}, | [i]={"2ba5ca9d4fd5",1250441847,"Improve the diagnostic emitted when an unused ObjC property getter","Improve the diagnostic emitted when an unused ObjC property getter"}, | ||
[j]={{U,347,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n if (const ObjCMessageExpr *ME = dyn_cast<ObjCMessageExpr>(E)) {\n } else if (const PseudoObjectExpr *POE = dyn_cast<PseudoObjectExpr>(E)) {\n if (isa<ObjCSubscriptRefExpr>(Source))\n else if (isa<ObjCPropertyRefExpr>(Source))\n DiagID = diag::warn_unused_property_expr;"}}, | [j]={{U,347,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n // ...\n if (const ObjCMessageExpr *ME = dyn_cast<ObjCMessageExpr>(E)) {\n // ...\n } else if (const PseudoObjectExpr *POE = dyn_cast<PseudoObjectExpr>(E)) {\n // ...\n if (isa<ObjCSubscriptRefExpr>(Source))\n // ...\n else if (isa<ObjCPropertyRefExpr>(Source))\n DiagID = diag::warn_unused_property_expr;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/access-property-getter.m"]={"clang/test/SemaObjC/access-property-getter.m:8:5: warning: property access result unused - getters should not be used for side effects [-Wunused-getter-return-value]"} | ["clang/test/SemaObjC/access-property-getter.m"]={"clang/test/SemaObjC/access-property-getter.m:8:5: warning: property access result unused - getters should not be used for side effects [-Wunused-getter-return-value]"} | ||
Line 9,870: | Line 9,870: | ||
[h]=Y, | [h]=Y, | ||
[i]={"a17cf6330fb7",1312499464,"Specialize diag::warn_unused_call for the \"warn_unused_result\" attribute, so","Specialize diag::warn_unused_call for the \"warn_unused_result\" attribute, so"}, | [i]={"a17cf6330fb7",1312499464,"Specialize diag::warn_unused_call for the \"warn_unused_result\" attribute, so","Specialize diag::warn_unused_call for the \"warn_unused_result\" attribute, so"}, | ||
[j]={{U,212,"static bool DiagnoseNoDiscard(Sema &S, const WarnUnusedResultAttr *A, SourceLocation Loc, SourceRange R1, SourceRange R2, bool IsCtor) {\n if (Msg.empty()) {\n return S.Diag(Loc, diag::warn_unused_result) << A << R1 << R2;"}}, | [j]={{U,212,"static bool DiagnoseNoDiscard(Sema &S, const WarnUnusedResultAttr *A, SourceLocation Loc, SourceRange R1, SourceRange R2, bool IsCtor) {\n // ...\n if (Msg.empty()) {\n // ...\n return S.Diag(Loc, diag::warn_unused_result) << A << R1 << R2;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/unused-expr.c"]={"clang/test/Sema/unused-expr.c:79:3: warning: ignoring return value of function declared with \'warn_unused_result\' attribute [-Wunused-result]","clang/test/Sema/unused-expr.c:91:3: warning: ignoring return value of function declared with \'warn_unused_result\' attribute [-Wunused-result]","clang/test/Sema/unused-expr.c:95:12: warning: ignoring return value of function declared with \'warn_unused_result\' attribute [-Wunused-result]","clang/test/Sema/unused-expr.c:104:3: warning: ignoring return value of function declared with \'warn_unused_result\' attribute [-Wunused-result]","clang/test/Sema/unused-expr.c:148:3: warning: ignoring return value of function declared with \'warn_unused_result\' attribute [-Wunused-result]"} | ["clang/test/Sema/unused-expr.c"]={"clang/test/Sema/unused-expr.c:79:3: warning: ignoring return value of function declared with \'warn_unused_result\' attribute [-Wunused-result]","clang/test/Sema/unused-expr.c:91:3: warning: ignoring return value of function declared with \'warn_unused_result\' attribute [-Wunused-result]","clang/test/Sema/unused-expr.c:95:12: warning: ignoring return value of function declared with \'warn_unused_result\' attribute [-Wunused-result]","clang/test/Sema/unused-expr.c:104:3: warning: ignoring return value of function declared with \'warn_unused_result\' attribute [-Wunused-result]","clang/test/Sema/unused-expr.c:148:3: warning: ignoring return value of function declared with \'warn_unused_result\' attribute [-Wunused-result]"} | ||
Line 9,887: | Line 9,887: | ||
[h]=Y, | [h]=Y, | ||
[i]={"3bef014e7d79",1563609394,"Implement P1301R4, which allows specifying an optional message on the [[nodiscard]] attribute.","Implement P1301R4, which allows specifying an optional message on the [[nodiscard]] attribute."}, | [i]={"3bef014e7d79",1563609394,"Implement P1301R4, which allows specifying an optional message on the [[nodiscard]] attribute.","Implement P1301R4, which allows specifying an optional message on the [[nodiscard]] attribute."}, | ||
[j]={{U,218,"static bool DiagnoseNoDiscard(Sema &S, const WarnUnusedResultAttr *A, SourceLocation Loc, SourceRange R1, SourceRange R2, bool IsCtor) {\n return S.Diag(Loc, diag::warn_unused_result_msg) << A << Msg << R1 << R2;"}}, | [j]={{U,218,"static bool DiagnoseNoDiscard(Sema &S, const WarnUnusedResultAttr *A, SourceLocation Loc, SourceRange R1, SourceRange R2, bool IsCtor) {\n // ...\n return S.Diag(Loc, diag::warn_unused_result_msg) << A << Msg << R1 << R2;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/c2x-nodiscard.c"]={"clang/test/Sema/c2x-nodiscard.c:35:3: warning: ignoring return value of function declared with \'nodiscard\' attribute: Wrong [-Wunused-result]"} | ["clang/test/Sema/c2x-nodiscard.c"]={"clang/test/Sema/c2x-nodiscard.c:35:3: warning: ignoring return value of function declared with \'nodiscard\' attribute: Wrong [-Wunused-result]"} | ||
Line 9,904: | Line 9,904: | ||
[h]=q, | [h]=q, | ||
[i]={pd,1620530452,Rb,Rb}, | [i]={pd,1620530452,Rb,Rb}, | ||
[j]={{C,3182,"static void handleWarnUnusedResult(Sema &S, Decl *D, const ParsedAttr &AL) {\n if ((!AL.isGNUAttribute() && !(AL.isStandardAttributeSyntax() && AL.isClangScope())) && isa<TypedefNameDecl>(D)) {\n S.Diag(AL.getLoc(), diag::warn_unused_result_typedef_unsupported_spelling) << AL.isGNUScope();"}}, | [j]={{C,3182,"static void handleWarnUnusedResult(Sema &S, Decl *D, const ParsedAttr &AL) {\n // ...\n if ((!AL.isGNUAttribute() && !(AL.isStandardAttributeSyntax() && AL.isClangScope())) && isa<TypedefNameDecl>(D)) {\n S.Diag(AL.getLoc(), diag::warn_unused_result_typedef_unsupported_spelling) << AL.isGNUScope();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-unused-result.cpp"]={"clang/test/SemaCXX/warn-unused-result.cpp:271:3: warning: \'[[nodiscard]]\' attribute ignored when applied to a typedef; consider using \'__attribute__((warn_unused_result))\' or \'[[clang::warn_unused_result]]\' instead [-Wignored-attributes]","clang/test/SemaCXX/warn-unused-result.cpp:272:3: warning: \'[[gnu::warn_unused_result]]\' attribute ignored when applied to a typedef; consider using \'__attribute__((warn_unused_result))\' or \'[[clang::warn_unused_result]]\' instead [-Wignored-attributes]"} | ["clang/test/SemaCXX/warn-unused-result.cpp"]={"clang/test/SemaCXX/warn-unused-result.cpp:271:3: warning: \'[[nodiscard]]\' attribute ignored when applied to a typedef; consider using \'__attribute__((warn_unused_result))\' or \'[[clang::warn_unused_result]]\' instead [-Wignored-attributes]","clang/test/SemaCXX/warn-unused-result.cpp:272:3: warning: \'[[gnu::warn_unused_result]]\' attribute ignored when applied to a typedef; consider using \'__attribute__((warn_unused_result))\' or \'[[clang::warn_unused_result]]\' instead [-Wignored-attributes]"} | ||
Line 9,922: | Line 9,922: | ||
[h]=q, | [h]=q, | ||
[i]={"64e1e1ea0a27",1494329141,"Reland \"Warn about unused static file scope function template declarations.\"","Reland \"Warn about unused static file scope function template declarations.\""}, | [i]={"64e1e1ea0a27",1494329141,"Reland \"Warn about unused static file scope function template declarations.\"","Reland \"Warn about unused static file scope function template declarations.\""}, | ||
[j]={{Z,1373,"/// 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 there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n if (DiagD->isReferenced()) {\n } else {\n if (FD->getDescribedFunctionTemplate())\n Diag(DiagD->getLocation(), diag::warn_unused_template) << /*function=*/0 << DiagD << DiagRange;"},{Z,1395,"/// 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 there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n } else {\n if (DiagD->isReferenced()) {\n } else if (DiagD->getDescribedVarTemplate()) {\n Diag(DiagD->getLocation(), diag::warn_unused_template) << /*variable=*/1 << DiagD << DiagRange;"}}, | [j]={{Z,1373,"/// 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 // ...\n // If there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n // ...\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n // ...\n if (DiagD->isReferenced()) {\n // ...\n } else {\n if (FD->getDescribedFunctionTemplate())\n Diag(DiagD->getLocation(), diag::warn_unused_template) << /*function=*/0 << DiagD << DiagRange;"},{Z,1395,"/// 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 // ...\n // If there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n // ...\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n // ...\n } else {\n // ...\n if (DiagD->isReferenced()) {\n // ...\n } else if (DiagD->getDescribedVarTemplate()) {\n Diag(DiagD->getLocation(), diag::warn_unused_template) << /*variable=*/1 << DiagD << DiagRange;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Misc/diag-unused-source-ranges.cpp"]={"clang/test/Misc/diag-unused-source-ranges.cpp:28:32:{28:32-28:37}: warning: unused function template \'templ\' [-Wunused-template]","clang/test/Misc/diag-unused-source-ranges.cpp:42:10:{42:10-42:13}: warning: unused function template \'foo\' [-Wunused-template]","clang/test/Misc/diag-unused-source-ranges.cpp:63:6:{63:6-63:16}: warning: unused function template \'arrow_decl\' [-Wunused-template]","clang/test/Misc/diag-unused-source-ranges.cpp:76:10:{76:10-76:20}: warning: unused function template \'func_templ\' [-Wunused-template]","clang/test/Misc/diag-unused-source-ranges.cpp:90:35:{90:35-90:47}: warning: unused function template \'never_called\' [-Wunused-template]","clang/test/Misc/diag-unused-source-ranges.cpp:97:22:{97:22-97:31}: warning: unused variable template \'var_templ\' [-Wunused-template]"} | ["clang/test/Misc/diag-unused-source-ranges.cpp"]={"clang/test/Misc/diag-unused-source-ranges.cpp:28:32:{28:32-28:37}: warning: unused function template \'templ\' [-Wunused-template]","clang/test/Misc/diag-unused-source-ranges.cpp:42:10:{42:10-42:13}: warning: unused function template \'foo\' [-Wunused-template]","clang/test/Misc/diag-unused-source-ranges.cpp:63:6:{63:6-63:16}: warning: unused function template \'arrow_decl\' [-Wunused-template]","clang/test/Misc/diag-unused-source-ranges.cpp:76:10:{76:10-76:20}: warning: unused function template \'func_templ\' [-Wunused-template]","clang/test/Misc/diag-unused-source-ranges.cpp:90:35:{90:35-90:47}: warning: unused function template \'never_called\' [-Wunused-template]","clang/test/Misc/diag-unused-source-ranges.cpp:97:22:{97:22-97:31}: warning: unused variable template \'var_templ\' [-Wunused-template]"} | ||
Line 9,940: | Line 9,940: | ||
[h]=Y, | [h]=Y, | ||
[i]={"3beaf9bbcdb3",1255037742,"Implement support for -Wunused-variable, from Oscar Bonilla!","Implement support for -Wunused-variable, from Oscar Bonilla!"}, | [i]={"3beaf9bbcdb3",1255037742,"Implement support for -Wunused-variable, from Oscar Bonilla!","Implement support for -Wunused-variable, from Oscar Bonilla!"}, | ||
[j]={{Z,1404,"/// 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 there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n } else {\n if (DiagD->isReferenced()) {\n } else if (DiagD->getDescribedVarTemplate()) {\n } else if (DiagD->getType().isConstQualified()) {\n } else {\n Diag(DiagD->getLocation(), diag::warn_unused_variable) << DiagD << DiagRange;"},{H,2154,"/// DiagnoseUnusedDecl - Emit warnings about declarations that are not used\n/// unless they are marked attr(unused).\nvoid Sema::DiagnoseUnusedDecl(const NamedDecl *D, DiagReceiverTy DiagReceiver) {\n if (isa<VarDecl>(D) && cast<VarDecl>(D)->isExceptionVariable())\n else if (isa<LabelDecl>(D))\n else\n DiagID = diag::warn_unused_variable;"}}, | [j]={{Z,1404,"/// 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 // ...\n // If there were errors, disable \'unused\' warnings since they will mostly be\n // noise. Don\'t warn for a use from a module: either we should warn on all\n // file-scope declarations in modules or not at all, but whether the\n // declaration is used is immaterial.\n if (!Diags.hasErrorOccurred() && TUKind != TU_Module) {\n // Output warning for unused file scoped decls.\n for (UnusedFileScopedDeclsType::iterator I = UnusedFileScopedDecls.begin(ExternalSource.get()), E = UnusedFileScopedDecls.end(); I != E; ++I) {\n // ...\n if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {\n // ...\n } else {\n // ...\n if (DiagD->isReferenced()) {\n // ...\n } else if (DiagD->getDescribedVarTemplate()) {\n // ...\n } else if (DiagD->getType().isConstQualified()) {\n // ...\n } else {\n Diag(DiagD->getLocation(), diag::warn_unused_variable) << DiagD << DiagRange;"},{H,2154,"/// DiagnoseUnusedDecl - Emit warnings about declarations that are not used\n/// unless they are marked attr(unused).\nvoid Sema::DiagnoseUnusedDecl(const NamedDecl *D, DiagReceiverTy DiagReceiver) {\n // ...\n if (isa<VarDecl>(D) && cast<VarDecl>(D)->isExceptionVariable())\n // ...\n else if (isa<LabelDecl>(D))\n // ...\n else\n DiagID = diag::warn_unused_variable;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaTemplate/unused-variables.cpp"]={"clang/test/SemaTemplate/unused-variables.cpp:12:6: warning: unused variable \'x1\' [-Wunused-variable]","clang/test/SemaTemplate/unused-variables.cpp:18:5: warning: unused variable \'u\' [-Wunused-variable]"} | ["clang/test/SemaTemplate/unused-variables.cpp"]={"clang/test/SemaTemplate/unused-variables.cpp:12:6: warning: unused variable \'x1\' [-Wunused-variable]","clang/test/SemaTemplate/unused-variables.cpp:18:5: warning: unused variable \'u\' [-Wunused-variable]"} | ||
Line 9,957: | Line 9,957: | ||
[h]=Y, | [h]=Y, | ||
[i]={"2351cb9139a4",1270592654,"Devote a special diagnostic to the typo","Devote a special diagnostic to the typo"}, | [i]={"2351cb9139a4",1270592654,"Devote a special diagnostic to the typo","Devote a special diagnostic to the typo"}, | ||
[j]={{U,369,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n }\n // Diagnose \"(void*) blah\" as a typo for \"(void) blah\".\n else if (const CStyleCastExpr *CE = dyn_cast<CStyleCastExpr>(E)) {\n // We really do want to use the non-canonical type here.\n if (T == Context.VoidPtrTy) {\n Diag(Loc, diag::warn_unused_voidptr) << FixItHint::CreateRemoval(TL.getStarLoc());"}}, | [j]={{U,369,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n // ...\n }\n // Diagnose \"(void*) blah\" as a typo for \"(void) blah\".\n else if (const CStyleCastExpr *CE = dyn_cast<CStyleCastExpr>(E)) {\n // ...\n // We really do want to use the non-canonical type here.\n if (T == Context.VoidPtrTy) {\n // ...\n Diag(Loc, diag::warn_unused_voidptr) << FixItHint::CreateRemoval(TL.getStarLoc());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/unused-expr.c"]={"clang/test/Sema/unused-expr.c:112:3: warning: expression result unused; should this cast be to \'void\'? [-Wunused-value]"} | ["clang/test/Sema/unused-expr.c"]={"clang/test/Sema/unused-expr.c:112:3: warning: expression result unused; should this cast be to \'void\'? [-Wunused-value]"} | ||
Line 9,974: | Line 9,974: | ||
[h]=q, | [h]=q, | ||
[i]={"c11535c248cf",1337820425,"Add a warning to diagnose statements in C++ like \"*(volatile int*)x;\". Conceptually, this is part o...","Add a warning to diagnose statements in C++ like \"*(volatile int*)x;\". Conceptually, this is part of -Wunused-value, but I added a separate flag -Wunused-volatile-lvalue so it doesn\'t get turned off by accident with -Wno-unused-value. I also made a few minor improvements to existing unused value warnings in the process. <rdar://problem/11516811>."}, | [i]={"c11535c248cf",1337820425,"Add a warning to diagnose statements in C++ like \"*(volatile int*)x;\". Conceptually, this is part o...","Add a warning to diagnose statements in C++ like \"*(volatile int*)x;\". Conceptually, this is part of -Wunused-value, but I added a separate flag -Wunused-volatile-lvalue so it doesn\'t get turned off by accident with -Wno-unused-value. I also made a few minor improvements to existing unused value warnings in the process. <rdar://problem/11516811>."}, | ||
[j]={{U,379,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n // Tell the user to assign it into a variable to force a volatile load if this\n // isn\'t an array.\n if (E->isGLValue() && E->getType().isVolatileQualified() && !E->getType()->isArrayType()) {\n Diag(Loc, diag::warn_unused_volatile) << R1 << R2;"}}, | [j]={{U,379,"void Sema::DiagnoseUnusedExprResult(const Stmt *S, unsigned DiagID) {\n // ...\n // Tell the user to assign it into a variable to force a volatile load if this\n // isn\'t an array.\n if (E->isGLValue() && E->getType().isVolatileQualified() && !E->getType()->isArrayType()) {\n Diag(Loc, diag::warn_unused_volatile) << R1 << R2;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGen/exprs.c"]={"clang/test/CodeGen/exprs.c:166:3: warning: expression result unused; assign into a variable to force a volatile load [-Wunused-volatile-lvalue]","clang/test/CodeGen/exprs.c:166:14: warning: expression result unused; assign into a variable to force a volatile load [-Wunused-volatile-lvalue]","clang/test/CodeGen/exprs.c:166:25: warning: expression result unused; assign into a variable to force a volatile load [-Wunused-volatile-lvalue]","clang/test/CodeGen/exprs.c:166:59: warning: expression result unused; assign into a variable to force a volatile load [-Wunused-volatile-lvalue]"} | ["clang/test/CodeGen/exprs.c"]={"clang/test/CodeGen/exprs.c:166:3: warning: expression result unused; assign into a variable to force a volatile load [-Wunused-volatile-lvalue]","clang/test/CodeGen/exprs.c:166:14: warning: expression result unused; assign into a variable to force a volatile load [-Wunused-volatile-lvalue]","clang/test/CodeGen/exprs.c:166:25: warning: expression result unused; assign into a variable to force a volatile load [-Wunused-volatile-lvalue]","clang/test/CodeGen/exprs.c:166:59: warning: expression result unused; assign into a variable to force a volatile load [-Wunused-volatile-lvalue]"} | ||
Line 9,992: | Line 9,992: | ||
[h]=q, | [h]=q, | ||
[i]={"210791a021a1",1380922086,"Consumed Analysis: Change callable_when so that it can take a list of states","Consumed Analysis: Change callable_when so that it can take a list of states"}, | [i]={"210791a021a1",1380922086,"Consumed Analysis: Change callable_when so that it can take a list of states","Consumed Analysis: Change callable_when so that it can take a list of states"}, | ||
[j]={{E,2148,"class ConsumedWarningsHandler : public ConsumedWarningsHandlerBase {\n void warnUseInInvalidState(StringRef MethodName, StringRef VariableName, StringRef State, SourceLocation Loc) override {\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_use_in_invalid_state) << MethodName << VariableName << State);"}}, | [j]={{E,2148,"class ConsumedWarningsHandler : public ConsumedWarningsHandlerBase {\n // ...\n void warnUseInInvalidState(StringRef MethodName, StringRef VariableName, StringRef State, SourceLocation Loc) override {\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_use_in_invalid_state) << MethodName << VariableName << State);"}}, | ||
[p]={ | [p]={ | ||
[qd]={ | [qd]={ | ||
Line 10,104: | Line 10,104: | ||
[h]=D, | [h]=D, | ||
[i]={"11152dd55f7a",1424304628,"Allow errors on use of a private module header to be disabled, to better support incremental transit...","Allow errors on use of a private module header to be disabled, to better support incremental transition to modules."}, | [i]={"11152dd55f7a",1424304628,"Allow errors on use of a private module header to be disabled, to better support incremental transit...","Allow errors on use of a private module header to be disabled, to better support incremental transition to modules."}, | ||
[j]={{"clang/lib/Lex/ModuleMap.cpp",521,"void ModuleMap::diagnoseHeaderInclusion(Module *RequestingModule, bool RequestingModuleIsModuleInterface, SourceLocation FilenameLoc, StringRef Filename, FileEntryRef File) {\n // We have found a header, but it is private.\n if (Private) {\n Diags.Report(FilenameLoc, diag::warn_use_of_private_header_outside_module) << Filename;"}}, | [j]={{"clang/lib/Lex/ModuleMap.cpp",521,"void ModuleMap::diagnoseHeaderInclusion(Module *RequestingModule, bool RequestingModuleIsModuleInterface, SourceLocation FilenameLoc, StringRef Filename, FileEntryRef File) {\n // ...\n // We have found a header, but it is private.\n if (Private) {\n Diags.Report(FilenameLoc, diag::warn_use_of_private_header_outside_module) << Filename;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Modules/modulemaps-nomodules.cpp"]={"clang/test/Modules/modulemaps-nomodules.cpp:7:10: error: use of private header from outside its module: \'header.h\' [-Wprivate-header]"} | ["clang/test/Modules/modulemaps-nomodules.cpp"]={"clang/test/Modules/modulemaps-nomodules.cpp:7:10: error: use of private header from outside its module: \'header.h\' [-Wprivate-header]"} | ||
Line 10,122: | Line 10,122: | ||
[h]=q, | [h]=q, | ||
[i]={"210791a021a1",1380922086,"Consumed Analysis: Change callable_when so that it can take a list of states","Consumed Analysis: Change callable_when so that it can take a list of states"}, | [i]={"210791a021a1",1380922086,"Consumed Analysis: Change callable_when so that it can take a list of states","Consumed Analysis: Change callable_when so that it can take a list of states"}, | ||
[j]={{E,2140,"class ConsumedWarningsHandler : public ConsumedWarningsHandlerBase {\n void warnUseOfTempInInvalidState(StringRef MethodName, StringRef State, SourceLocation Loc) override {\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_use_of_temp_in_invalid_state) << MethodName << State);"}}, | [j]={{E,2140,"class ConsumedWarningsHandler : public ConsumedWarningsHandlerBase {\n // ...\n void warnUseOfTempInInvalidState(StringRef MethodName, StringRef State, SourceLocation Loc) override {\n PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_use_of_temp_in_invalid_state) << MethodName << State);"}}, | ||
[p]={ | [p]={ | ||
[qd]={"clang/test/SemaCXX/warn-consumed-analysis.cpp:138:27: warning: invalid invocation of method \'~DestructorTester\' on a temporary object while it is in the \'unconsumed\' state [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:143:3: warning: invalid invocation of method \'operator*\' on a temporary object while it is in the \'consumed\' state [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:764:3: warning: invalid invocation of method \'~Status\' on a temporary object while it is in the \'unconsumed\' state [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:780:21: warning: invalid invocation of method \'~Status\' on a temporary object while it is in the \'unconsumed\' state [-Wconsumed]"} | [qd]={"clang/test/SemaCXX/warn-consumed-analysis.cpp:138:27: warning: invalid invocation of method \'~DestructorTester\' on a temporary object while it is in the \'unconsumed\' state [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:143:3: warning: invalid invocation of method \'operator*\' on a temporary object while it is in the \'consumed\' state [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:764:3: warning: invalid invocation of method \'~Status\' on a temporary object while it is in the \'unconsumed\' state [-Wconsumed]","clang/test/SemaCXX/warn-consumed-analysis.cpp:780:21: warning: invalid invocation of method \'~Status\' on a temporary object while it is in the \'unconsumed\' state [-Wconsumed]"} | ||
Line 10,140: | Line 10,140: | ||
[h]=q, | [h]=q, | ||
[i]={"73067a02db9a",1287790628,"Warn if a variable marked with the \"unused\" attribute is used. Patch by Darin Adler!","Warn if a variable marked with the \"unused\" attribute is used. Patch by Darin Adler!"}, | [i]={"73067a02db9a",1287790628,"Warn if a variable marked with the \"unused\" attribute is used. Patch by Darin Adler!","Warn if a variable marked with the \"unused\" attribute is used. Patch by Darin Adler!"}, | ||
[j]={{mb,846,"void Sema::ActOnPragmaUnused(const Token &IdTok, Scope *curScope, SourceLocation PragmaLoc) {\n // Warn if this was used before being marked unused.\n if (VD->isUsed())\n Diag(PragmaLoc, diag::warn_used_but_marked_unused) << Name;"},{A,111,"static void DiagnoseUnusedOfDecl(Sema &S, NamedDecl *D, SourceLocation Loc) {\n // Warn if this is used but marked unused.\n if (const auto *A = D->getAttr<UnusedAttr>()) {\n // [[maybe_unused]] should not diagnose uses, but __attribute__((unused))\n // should diagnose them.\n if (A->getSemanticSpelling() != UnusedAttr::CXX11_maybe_unused && A->getSemanticSpelling() != UnusedAttr::C2x_maybe_unused) {\n if (DC && !DC->hasAttr<UnusedAttr>())\n S.Diag(Loc, diag::warn_used_but_marked_unused) << D;"}}, | [j]={{mb,846,"void Sema::ActOnPragmaUnused(const Token &IdTok, Scope *curScope, SourceLocation PragmaLoc) {\n // ...\n // Warn if this was used before being marked unused.\n if (VD->isUsed())\n Diag(PragmaLoc, diag::warn_used_but_marked_unused) << Name;"},{A,111,"static void DiagnoseUnusedOfDecl(Sema &S, NamedDecl *D, SourceLocation Loc) {\n // Warn if this is used but marked unused.\n if (const auto *A = D->getAttr<UnusedAttr>()) {\n // [[maybe_unused]] should not diagnose uses, but __attribute__((unused))\n // should diagnose them.\n if (A->getSemanticSpelling() != UnusedAttr::CXX11_maybe_unused && A->getSemanticSpelling() != UnusedAttr::C2x_maybe_unused) {\n // ...\n if (DC && !DC->hasAttr<UnusedAttr>())\n S.Diag(Loc, diag::warn_used_but_marked_unused) << D;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-unused.c"]={"clang/test/Sema/attr-unused.c:23:3: warning: \'Int_unused\' was marked unused but was used [-Wused-but-marked-unused]","clang/test/Sema/attr-unused.c:26:10: warning: \'Test0_unused\' was marked unused but was used [-Wused-but-marked-unused]","clang/test/Sema/attr-unused.c:42:10: warning: \'x\' was marked unused but was used [-Wused-but-marked-unused]"} | ["clang/test/Sema/attr-unused.c"]={"clang/test/Sema/attr-unused.c:23:3: warning: \'Int_unused\' was marked unused but was used [-Wused-but-marked-unused]","clang/test/Sema/attr-unused.c:26:10: warning: \'Test0_unused\' was marked unused but was used [-Wused-but-marked-unused]","clang/test/Sema/attr-unused.c:42:10: warning: \'x\' was marked unused but was used [-Wused-but-marked-unused]"} | ||
Line 10,157: | Line 10,157: | ||
[h]=q, | [h]=q, | ||
[i]={"86325ad2b521",1314744035,"Allow C99 hexfloats in C++0x mode. This change resolves the standards","Allow C99 hexfloats in C++0x mode. This change resolves the standards"}, | [i]={"86325ad2b521",1314744035,"Allow C99 hexfloats in C++0x mode. This change resolves the standards","Allow C99 hexfloats in C++0x mode. This change resolves the standards"}, | ||
[j]={{db,16507,"/// 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 (Status != ReservedLiteralSuffixIdStatus::NotReserved && !getSourceManager().isInSystemHeader(FnDecl->getLocation())) {\n Diag(FnDecl->getLocation(), diag::warn_user_literal_reserved) << static_cast<int>(Status) << StringLiteralParser::isValidUDSuffix(getLangOpts(), II->getName());"}}, | [j]={{db,16507,"/// 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 // ...\n if (Status != ReservedLiteralSuffixIdStatus::NotReserved && !getSourceManager().isInSystemHeader(FnDecl->getLocation())) {\n // ...\n Diag(FnDecl->getLocation(), diag::warn_user_literal_reserved) << static_cast<int>(Status) << StringLiteralParser::isValidUDSuffix(getLangOpts(), II->getName());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/lex/lex.literal/lex.ext/p10.cpp"]={"clang/test/CXX/lex/lex.literal/lex.ext/p10.cpp:4:6: warning: user-defined literal suffixes not starting with \'_\' are reserved; no literal will invoke this operator [-Wuser-defined-literals]","clang/test/CXX/lex/lex.literal/lex.ext/p10.cpp:5:6: warning: user-defined literal suffixes not starting with \'_\' are reserved; no literal will invoke this operator [-Wuser-defined-literals]"} | ["clang/test/CXX/lex/lex.literal/lex.ext/p10.cpp"]={"clang/test/CXX/lex/lex.literal/lex.ext/p10.cpp:4:6: warning: user-defined literal suffixes not starting with \'_\' are reserved; no literal will invoke this operator [-Wuser-defined-literals]","clang/test/CXX/lex/lex.literal/lex.ext/p10.cpp:5:6: warning: user-defined literal suffixes not starting with \'_\' are reserved; no literal will invoke this operator [-Wuser-defined-literals]"} | ||
Line 10,175: | Line 10,175: | ||
[h]=q, | [h]=q, | ||
[i]={"96a4bddefbfc",1300464652,"Add an opt-in -Wheader-hygiene, which current diagnoses the use of","Add an opt-in -Wheader-hygiene, which current diagnoses the use of"}, | [i]={"96a4bddefbfc",1300464652,"Add an opt-in -Wheader-hygiene, which current diagnoses the use of","Add an opt-in -Wheader-hygiene, which current diagnoses the use of"}, | ||
[j]={{db,11986,"Decl *Sema::ActOnUsingDirective(Scope *S, SourceLocation UsingLoc, SourceLocation NamespcLoc, CXXScopeSpec &SS, SourceLocation IdentLoc, IdentifierInfo *NamespcName, const ParsedAttributesView &AttrList) {\n if (!R.empty()) {\n if (IsUsingDirectiveInToplevelContext(CurContext) && !SourceMgr.isInMainFile(SourceMgr.getExpansionLoc(IdentLoc))) {\n Diag(IdentLoc, diag::warn_using_directive_in_header);"}} | [j]={{db,11986,"Decl *Sema::ActOnUsingDirective(Scope *S, SourceLocation UsingLoc, SourceLocation NamespcLoc, CXXScopeSpec &SS, SourceLocation IdentLoc, IdentifierInfo *NamespcName, const ParsedAttributesView &AttrList) {\n // ...\n if (!R.empty()) {\n // ...\n if (IsUsingDirectiveInToplevelContext(CurContext) && !SourceMgr.isInMainFile(SourceMgr.getExpansionLoc(IdentLoc))) {\n Diag(IdentLoc, diag::warn_using_directive_in_header);"}} | ||
}, | }, | ||
["warn_utf8_symbol_homoglyph"]={ | ["warn_utf8_symbol_homoglyph"]={ | ||
Line 10,189: | Line 10,189: | ||
[h]=D, | [h]=D, | ||
[i]={"77091b167fd9",1513257308,"Warn if we find a Unicode homoglyph for a symbol in an identifier.","Warn if we find a Unicode homoglyph for a symbol in an identifier."}, | [i]={"77091b167fd9",1513257308,"Warn if we find a Unicode homoglyph for a symbol in an identifier.","Warn if we find a Unicode homoglyph for a symbol in an identifier."}, | ||
[j]={{Vb,1661,"/// After encountering UTF-8 character C and interpreting it as an identifier\n/// character, check whether it\'s a homoglyph for a common non-identifier\n/// source character that is unlikely to be an intentional identifier\n/// character and warn if so.\nstatic void maybeDiagnoseUTF8Homoglyph(DiagnosticsEngine &Diags, uint32_t C, CharSourceRange Range) {\n if (Homoglyph->Character == C) {\n if (Homoglyph->LooksLike) {\n Diags.Report(Range.getBegin(), diag::warn_utf8_symbol_homoglyph) << Range << codepointAsHexString(C) << LooksLikeStr;"}}, | [j]={{Vb,1661,"/// After encountering UTF-8 character C and interpreting it as an identifier\n/// character, check whether it\'s a homoglyph for a common non-identifier\n/// source character that is unlikely to be an intentional identifier\n/// character and warn if so.\nstatic void maybeDiagnoseUTF8Homoglyph(DiagnosticsEngine &Diags, uint32_t C, CharSourceRange Range) {\n // ...\n if (Homoglyph->Character == C) {\n if (Homoglyph->LooksLike) {\n // ...\n Diags.Report(Range.getBegin(), diag::warn_utf8_symbol_homoglyph) << Range << codepointAsHexString(C) << LooksLikeStr;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Lexer/unicode.c"]={"clang/test/Lexer/unicode.c:89:6: warning: treating Unicode character <U+037E> as an identifier character rather than as \';\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:90:7: warning: treating Unicode character <U+A789> as an identifier character rather than as \':\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:90:10: warning: treating Unicode character <U+A789> as an identifier character rather than as \':\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:90:19: warning: treating Unicode character <U+037E> as an identifier character rather than as \';\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:6: warning: treating Unicode character <U+FF1D> as an identifier character rather than as \'=\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:9: warning: treating Unicode character <U+FF3B> as an identifier character rather than as \'[\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:12: warning: treating Unicode character <U+FF1D> as an identifier character rather than as \'=\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:15: warning: treating Unicode character <U+FF3D> as an identifier character rather than as \']\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:18: warning: treating Unicode character <U+FF08> as an identifier character rather than as \'(\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:25: warning: treating Unicode character <U+FF09> as an identifier character rather than as \')\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:28: warning: treating Unicode character <U+FF5B> as an identifier character rather than as \'{\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:37: warning: treating Unicode character <U+FF5E> as an identifier character rather than as \'~\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:41: warning: treating Unicode character <U+FF1B> as an identifier character rather than as \';\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:44: warning: treating Unicode character <U+FF5D> as an identifier character rather than as \'}\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:47: warning: treating Unicode character <U+FF08> as an identifier character rather than as \'(\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:50: warning: treating Unicode character <U+FF09> as an identifier character rather than as \')\' symbol [-Wunicode-homoglyph]"} | ["clang/test/Lexer/unicode.c"]={"clang/test/Lexer/unicode.c:89:6: warning: treating Unicode character <U+037E> as an identifier character rather than as \';\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:90:7: warning: treating Unicode character <U+A789> as an identifier character rather than as \':\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:90:10: warning: treating Unicode character <U+A789> as an identifier character rather than as \':\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:90:19: warning: treating Unicode character <U+037E> as an identifier character rather than as \';\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:6: warning: treating Unicode character <U+FF1D> as an identifier character rather than as \'=\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:9: warning: treating Unicode character <U+FF3B> as an identifier character rather than as \'[\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:12: warning: treating Unicode character <U+FF1D> as an identifier character rather than as \'=\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:15: warning: treating Unicode character <U+FF3D> as an identifier character rather than as \']\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:18: warning: treating Unicode character <U+FF08> as an identifier character rather than as \'(\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:25: warning: treating Unicode character <U+FF09> as an identifier character rather than as \')\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:28: warning: treating Unicode character <U+FF5B> as an identifier character rather than as \'{\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:37: warning: treating Unicode character <U+FF5E> as an identifier character rather than as \'~\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:41: warning: treating Unicode character <U+FF1B> as an identifier character rather than as \';\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:44: warning: treating Unicode character <U+FF5D> as an identifier character rather than as \'}\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:47: warning: treating Unicode character <U+FF08> as an identifier character rather than as \'(\' symbol [-Wunicode-homoglyph]","clang/test/Lexer/unicode.c:92:50: warning: treating Unicode character <U+FF09> as an identifier character rather than as \')\' symbol [-Wunicode-homoglyph]"} | ||
Line 10,206: | Line 10,206: | ||
[h]=D, | [h]=D, | ||
[i]={"8ed7776bc404",1536348339,"PR38870: Add warning for zero-width unicode characters appearing in","PR38870: Add warning for zero-width unicode characters appearing in"}, | [i]={"8ed7776bc404",1536348339,"PR38870: Add warning for zero-width unicode characters appearing in","PR38870: Add warning for zero-width unicode characters appearing in"}, | ||
[j]={{Vb,1664,"/// After encountering UTF-8 character C and interpreting it as an identifier\n/// character, check whether it\'s a homoglyph for a common non-identifier\n/// source character that is unlikely to be an intentional identifier\n/// character and warn if so.\nstatic void maybeDiagnoseUTF8Homoglyph(DiagnosticsEngine &Diags, uint32_t C, CharSourceRange Range) {\n if (Homoglyph->Character == C) {\n if (Homoglyph->LooksLike) {\n } else {\n Diags.Report(Range.getBegin(), diag::warn_utf8_symbol_zero_width) << Range << codepointAsHexString(C);"}}, | [j]={{Vb,1664,"/// After encountering UTF-8 character C and interpreting it as an identifier\n/// character, check whether it\'s a homoglyph for a common non-identifier\n/// source character that is unlikely to be an intentional identifier\n/// character and warn if so.\nstatic void maybeDiagnoseUTF8Homoglyph(DiagnosticsEngine &Diags, uint32_t C, CharSourceRange Range) {\n // ...\n if (Homoglyph->Character == C) {\n if (Homoglyph->LooksLike) {\n // ...\n } else {\n Diags.Report(Range.getBegin(), diag::warn_utf8_symbol_zero_width) << Range << codepointAsHexString(C);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Lexer/unicode.c"]={"clang/test/Lexer/unicode.c:94:9: warning: identifier contains Unicode character <U+FEFF> that is invisible in some environments [-Wunicode-zero-width]","clang/test/Lexer/unicode.c:94:13: warning: identifier contains Unicode character <U+200D> that is invisible in some environments [-Wunicode-zero-width]","clang/test/Lexer/unicode.c:98:8: warning: identifier contains Unicode character <U+200B> that is invisible in some environments [-Wunicode-zero-width]"} | ["clang/test/Lexer/unicode.c"]={"clang/test/Lexer/unicode.c:94:9: warning: identifier contains Unicode character <U+FEFF> that is invisible in some environments [-Wunicode-zero-width]","clang/test/Lexer/unicode.c:94:13: warning: identifier contains Unicode character <U+200D> that is invisible in some environments [-Wunicode-zero-width]","clang/test/Lexer/unicode.c:98:8: warning: identifier contains Unicode character <U+200B> that is invisible in some environments [-Wunicode-zero-width]"} | ||
Line 10,223: | Line 10,223: | ||
[h]=q, | [h]=q, | ||
[i]={"1de59c5d92b9",1461504621,"Improve diagnostic checking for va_start to also warn on other instances of undefined behavior, such...","Improve diagnostic checking for va_start to also warn on other instances of undefined behavior, such as a parameter declared with the register keyword in C, or a parameter of a type that undergoes default argument promotion."}, | [i]={"1de59c5d92b9",1461504621,"Improve diagnostic checking for va_start to also warn on other instances of undefined behavior, such...","Improve diagnostic checking for va_start to also warn on other instances of undefined behavior, such as a parameter declared with the register keyword in C, or a parameter of a type that undergoes default argument promotion."}, | ||
[j]={{x,8171,"/// Check the arguments to \'__builtin_va_start\' or \'__builtin_ms_va_start\'\n/// for validity. Emit an error and return true on failure; return false\n/// on success.\nbool Sema::SemaBuiltinVAStart(unsigned BuiltinID, CallExpr *TheCall) {\n if (!SecondArgIsLastNamedArgument)\n else if (IsCRegister || Type->isReferenceType() || Type->isSpecificBuiltinType(BuiltinType::Float) || [=] {\n Diag(Arg->getBeginLoc(), diag::warn_va_start_type_is_undefined) << Reason;"}}, | [j]={{x,8171,"/// Check the arguments to \'__builtin_va_start\' or \'__builtin_ms_va_start\'\n/// for validity. Emit an error and return true on failure; return false\n/// on success.\nbool Sema::SemaBuiltinVAStart(unsigned BuiltinID, CallExpr *TheCall) {\n // ...\n if (!SecondArgIsLastNamedArgument)\n // ...\n else if (IsCRegister || Type->isReferenceType() || Type->isSpecificBuiltinType(BuiltinType::Float) || [=] {\n // ...\n Diag(Arg->getBeginLoc(), diag::warn_va_start_type_is_undefined) << Reason;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/varargs-x86-64.c"]={"clang/test/Sema/varargs-x86-64.c:32:29: warning: passing an object that undergoes default argument promotion to \'va_start\' has undefined behavior [-Wvarargs]","clang/test/Sema/varargs-x86-64.c:33:30: warning: passing an object that undergoes default argument promotion to \'va_start\' has undefined behavior [-Wvarargs]"} | ["clang/test/Sema/varargs-x86-64.c"]={"clang/test/Sema/varargs-x86-64.c:32:29: warning: passing an object that undergoes default argument promotion to \'va_start\' has undefined behavior [-Wvarargs]","clang/test/Sema/varargs-x86-64.c:33:30: warning: passing an object that undergoes default argument promotion to \'va_start\' has undefined behavior [-Wvarargs]"} | ||
Line 10,240: | Line 10,240: | ||
[h]=q, | [h]=q, | ||
[i]={wb,1625925174,R,R}, | [i]={wb,1625925174,R,R}, | ||
[j]={{H,7438,"// This function emits warning and a corresponding note based on the\n// ReadOnlyPlacementAttr attribute. The warning checks that all global variable\n// declarations of an annotated type must be const qualified.\nvoid emitReadOnlyPlacementAttrWarning(Sema &S, const VarDecl *VD) {\n if (const auto *ConstDecl = RD->getAttr<ReadOnlyPlacementAttr>()) {\n S.Diag(VD->getLocation(), diag::warn_var_decl_not_read_only) << RD;"}}, | [j]={{H,7438,"// This function emits warning and a corresponding note based on the\n// ReadOnlyPlacementAttr attribute. The warning checks that all global variable\n// declarations of an annotated type must be const qualified.\nvoid emitReadOnlyPlacementAttrWarning(Sema &S, const VarDecl *VD) {\n // ...\n if (const auto *ConstDecl = RD->getAttr<ReadOnlyPlacementAttr>()) {\n S.Diag(VD->getLocation(), diag::warn_var_decl_not_read_only) << RD;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-read-only-placement.cpp"]={"clang/test/Sema/attr-read-only-placement.cpp:8:3: warning: object of type \'A\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:11:3: warning: object of type \'A\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:20:3: warning: object of type \'B\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:24:3: warning: object of type \'B\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:26:3: warning: object of type \'B\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:28:3: warning: object of type \'B\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:33:14: warning: object of type \'B\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:44:3: warning: object of type \'C\' cannot be placed in read-only memory [-Wread-only-types]"} | ["clang/test/Sema/attr-read-only-placement.cpp"]={"clang/test/Sema/attr-read-only-placement.cpp:8:3: warning: object of type \'A\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:11:3: warning: object of type \'A\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:20:3: warning: object of type \'B\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:24:3: warning: object of type \'B\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:26:3: warning: object of type \'B\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:28:3: warning: object of type \'B\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:33:14: warning: object of type \'B\' cannot be placed in read-only memory [-Wread-only-types]","clang/test/Sema/attr-read-only-placement.cpp:44:3: warning: object of type \'C\' cannot be placed in read-only memory [-Wread-only-types]"} | ||
Line 10,258: | Line 10,258: | ||
[h]=q, | [h]=q, | ||
[i]={"dd5fd87a6dfe",1314656871,"Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identif...","Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identify situations where we are accessing (reading or writing) guarded variables, and report an error if the appropriate locks are not held."}, | [i]={"dd5fd87a6dfe",1314656871,"Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identif...","Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identify situations where we are accessing (reading or writing) guarded variables, and report an error if the appropriate locks are not held."}, | ||
[j]={{E,1947,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n void handleNoMutexHeld(const NamedDecl *D, ProtectedOperationKind POK, AccessKind AK, SourceLocation Loc) override {\n unsigned DiagID = POK == POK_VarAccess ? diag::warn_variable_requires_any_lock : diag::warn_var_deref_requires_any_lock;"}}, | [j]={{E,1947,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n // ...\n void handleNoMutexHeld(const NamedDecl *D, ProtectedOperationKind POK, AccessKind AK, SourceLocation Loc) override {\n // ...\n unsigned DiagID = POK == POK_VarAccess ? diag::warn_variable_requires_any_lock : diag::warn_var_deref_requires_any_lock;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-thread-safety-analysis.c"]={"clang/test/Sema/warn-thread-safety-analysis.c:114:11: warning: reading the value pointed to by \'d_\' requires holding any mutex [-Wthread-safety-analysis]"} | ["clang/test/Sema/warn-thread-safety-analysis.c"]={"clang/test/Sema/warn-thread-safety-analysis.c:114:11: warning: reading the value pointed to by \'d_\' requires holding any mutex [-Wthread-safety-analysis]"} | ||
Line 10,276: | Line 10,276: | ||
[h]=q, | [h]=q, | ||
[i]={"dd5fd87a6dfe",1314656871,"Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identif...","Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identify situations where we are accessing (reading or writing) guarded variables, and report an error if the appropriate locks are not held."}, | [i]={"dd5fd87a6dfe",1314656871,"Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identif...","Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identify situations where we are accessing (reading or writing) guarded variables, and report an error if the appropriate locks are not held."}, | ||
[j]={{E,1994,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n void handleMutexNotHeld(StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, Name LockName, LockKind LK, SourceLocation Loc, Name *PossibleMatch) override {\n if (PossibleMatch) {\n } else {\n case POK_VarDereference:\n DiagID = diag::warn_var_deref_requires_lock;"}}, | [j]={{E,1994,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n // ...\n void handleMutexNotHeld(StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, Name LockName, LockKind LK, SourceLocation Loc, Name *PossibleMatch) override {\n // ...\n if (PossibleMatch) {\n // ...\n } else {\n // ...\n case POK_VarDereference:\n DiagID = diag::warn_var_deref_requires_lock;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-thread-safety-analysis.cpp"]={ | ["clang/test/SemaCXX/warn-thread-safety-analysis.cpp"]={ | ||
Line 10,349: | Line 10,349: | ||
[h]=q, | [h]=q, | ||
[i]={"5ff1644e624e",1347307103,"Thread-safety analysis: differentiate between two forms of analysis; a precise","Thread-safety analysis: differentiate between two forms of analysis; a precise"}, | [i]={"5ff1644e624e",1347307103,"Thread-safety analysis: differentiate between two forms of analysis; a precise","Thread-safety analysis: differentiate between two forms of analysis; a precise"}, | ||
[j]={{E,1964,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n void handleMutexNotHeld(StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, Name LockName, LockKind LK, SourceLocation Loc, Name *PossibleMatch) override {\n if (PossibleMatch) {\n case POK_VarDereference:\n DiagID = diag::warn_var_deref_requires_lock_precise;"}} | [j]={{E,1964,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n // ...\n void handleMutexNotHeld(StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, Name LockName, LockKind LK, SourceLocation Loc, Name *PossibleMatch) override {\n // ...\n if (PossibleMatch) {\n // ...\n case POK_VarDereference:\n DiagID = diag::warn_var_deref_requires_lock_precise;"}} | ||
}, | }, | ||
["warn_var_template_missing"]={ | ["warn_var_template_missing"]={ | ||
Line 10,363: | Line 10,363: | ||
[h]=q, | [h]=q, | ||
[i]={"7dcc97e7ac0a",1461046792,"Warn if function or variable cannot be implicitly instantiated","Warn if function or variable cannot be implicitly instantiated"}, | [i]={"7dcc97e7ac0a",1461046792,"Warn if function or variable cannot be implicitly instantiated","Warn if function or variable cannot be implicitly instantiated"}, | ||
[j]={{"clang/lib/Sema/SemaTemplateInstantiateDecl.cpp",5527,"/// Instantiate the definition of the given variable from its\n/// template.\n///\n/// \\param PointOfInstantiation the point at which the instantiation was\n/// required. Note that this is not precisely a \"point of instantiation\"\n/// for the variable, but it\'s close.\n///\n/// \\param Var the already-instantiated declaration of a templated variable.\n///\n/// \\param Recursive if true, recursively instantiates any functions that\n/// are required by this instantiation.\n///\n/// \\param DefinitionRequired if true, then we are performing an explicit\n/// instantiation where a definition of the variable is required. Complain\n/// if there is no such definition.\nvoid Sema::InstantiateVariableDefinition(SourceLocation PointOfInstantiation, VarDecl *Var, bool Recursive, bool DefinitionRequired, bool AtEndOfTU) {\n // If we don\'t have a definition of the variable template, we won\'t perform\n // any instantiation. Rather, we rely on the user to instantiate this\n // definition (or provide a specialization for it) in another translation\n // unit.\n if (!Def && !DefinitionRequired) {\n if (TSK == TSK_ExplicitInstantiationDefinition) {\n } else if (TSK == TSK_ImplicitInstantiation) {\n // Warn about missing definition at the end of translation unit.\n if (AtEndOfTU && !getDiagnostics().hasErrorOccurred() && !getSourceManager().isInSystemHeader(PatternDecl->getBeginLoc())) {\n Diag(PointOfInstantiation, diag::warn_var_template_missing) << Var;"}}, | [j]={{"clang/lib/Sema/SemaTemplateInstantiateDecl.cpp",5527,"/// Instantiate the definition of the given variable from its\n/// template.\n///\n/// \\param PointOfInstantiation the point at which the instantiation was\n/// required. Note that this is not precisely a \"point of instantiation\"\n/// for the variable, but it\'s close.\n///\n/// \\param Var the already-instantiated declaration of a templated variable.\n///\n/// \\param Recursive if true, recursively instantiates any functions that\n/// are required by this instantiation.\n///\n/// \\param DefinitionRequired if true, then we are performing an explicit\n/// instantiation where a definition of the variable is required. Complain\n/// if there is no such definition.\nvoid Sema::InstantiateVariableDefinition(SourceLocation PointOfInstantiation, VarDecl *Var, bool Recursive, bool DefinitionRequired, bool AtEndOfTU) {\n // ...\n // If we don\'t have a definition of the variable template, we won\'t perform\n // any instantiation. Rather, we rely on the user to instantiate this\n // definition (or provide a specialization for it) in another translation\n // unit.\n if (!Def && !DefinitionRequired) {\n if (TSK == TSK_ExplicitInstantiationDefinition) {\n // ...\n } else if (TSK == TSK_ImplicitInstantiation) {\n // Warn about missing definition at the end of translation unit.\n if (AtEndOfTU && !getDiagnostics().hasErrorOccurred() && !getSourceManager().isInSystemHeader(PatternDecl->getBeginLoc())) {\n Diag(PointOfInstantiation, diag::warn_var_template_missing) << Var;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/temp/temp.spec/temp.explicit/p1-emit.cpp"]={"clang/test/CXX/temp/temp.spec/temp.explicit/p1-emit.cpp:28:26: warning: instantiation of variable \'X<long>::member3\' required here, but no definition is available [-Wundefined-var-template]"} | ["clang/test/CXX/temp/temp.spec/temp.explicit/p1-emit.cpp"]={"clang/test/CXX/temp/temp.spec/temp.explicit/p1-emit.cpp:28:26: warning: instantiation of variable \'X<long>::member3\' required here, but no definition is available [-Wundefined-var-template]"} | ||
Line 10,381: | Line 10,381: | ||
[h]=q, | [h]=q, | ||
[i]={"dd5fd87a6dfe",1314656871,"Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identif...","Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identify situations where we are accessing (reading or writing) guarded variables, and report an error if the appropriate locks are not held."}, | [i]={"dd5fd87a6dfe",1314656871,"Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identif...","Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identify situations where we are accessing (reading or writing) guarded variables, and report an error if the appropriate locks are not held."}, | ||
[j]={{E,1946,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n void handleNoMutexHeld(const NamedDecl *D, ProtectedOperationKind POK, AccessKind AK, SourceLocation Loc) override {\n unsigned DiagID = POK == POK_VarAccess ? diag::warn_variable_requires_any_lock : diag::warn_var_deref_requires_any_lock;"}}, | [j]={{E,1946,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n // ...\n void handleNoMutexHeld(const NamedDecl *D, ProtectedOperationKind POK, AccessKind AK, SourceLocation Loc) override {\n // ...\n unsigned DiagID = POK == POK_VarAccess ? diag::warn_variable_requires_any_lock : diag::warn_var_deref_requires_any_lock;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-thread-safety-analysis.c"]={"clang/test/Sema/warn-thread-safety-analysis.c:113:3: warning: writing variable \'c_\' requires holding any mutex exclusively [-Wthread-safety-analysis]"} | ["clang/test/Sema/warn-thread-safety-analysis.c"]={"clang/test/Sema/warn-thread-safety-analysis.c:113:3: warning: writing variable \'c_\' requires holding any mutex exclusively [-Wthread-safety-analysis]"} | ||
Line 10,399: | Line 10,399: | ||
[h]=q, | [h]=q, | ||
[i]={"dd5fd87a6dfe",1314656871,"Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identif...","Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identify situations where we are accessing (reading or writing) guarded variables, and report an error if the appropriate locks are not held."}, | [i]={"dd5fd87a6dfe",1314656871,"Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identif...","Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identify situations where we are accessing (reading or writing) guarded variables, and report an error if the appropriate locks are not held."}, | ||
[j]={{E,1991,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n void handleMutexNotHeld(StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, Name LockName, LockKind LK, SourceLocation Loc, Name *PossibleMatch) override {\n if (PossibleMatch) {\n } else {\n case POK_VarAccess:\n DiagID = diag::warn_variable_requires_lock;"}}, | [j]={{E,1991,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n // ...\n void handleMutexNotHeld(StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, Name LockName, LockKind LK, SourceLocation Loc, Name *PossibleMatch) override {\n // ...\n if (PossibleMatch) {\n // ...\n } else {\n // ...\n case POK_VarAccess:\n DiagID = diag::warn_variable_requires_lock;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-thread-safety-verbose.cpp"]={"clang/test/SemaCXX/warn-thread-safety-verbose.cpp:31:5: warning: writing variable \'a\' requires holding mutex \'mu\' exclusively [-Wthread-safety-analysis]","clang/test/SemaCXX/warn-thread-safety-verbose.cpp:35:13: warning: reading variable \'a\' requires holding mutex \'mu\' [-Wthread-safety-analysis]","clang/test/SemaCXX/warn-thread-safety-verbose.cpp:54:5: warning: writing variable \'a\' requires holding mutex \'mu\' exclusively [-Wthread-safety-analysis]"} | ["clang/test/SemaCXX/warn-thread-safety-verbose.cpp"]={"clang/test/SemaCXX/warn-thread-safety-verbose.cpp:31:5: warning: writing variable \'a\' requires holding mutex \'mu\' exclusively [-Wthread-safety-analysis]","clang/test/SemaCXX/warn-thread-safety-verbose.cpp:35:13: warning: reading variable \'a\' requires holding mutex \'mu\' [-Wthread-safety-analysis]","clang/test/SemaCXX/warn-thread-safety-verbose.cpp:54:5: warning: writing variable \'a\' requires holding mutex \'mu\' exclusively [-Wthread-safety-analysis]"} | ||
Line 10,417: | Line 10,417: | ||
[h]=q, | [h]=q, | ||
[i]={"5ff1644e624e",1347307103,"Thread-safety analysis: differentiate between two forms of analysis; a precise","Thread-safety analysis: differentiate between two forms of analysis; a precise"}, | [i]={"5ff1644e624e",1347307103,"Thread-safety analysis: differentiate between two forms of analysis; a precise","Thread-safety analysis: differentiate between two forms of analysis; a precise"}, | ||
[j]={{E,1961,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n void handleMutexNotHeld(StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, Name LockName, LockKind LK, SourceLocation Loc, Name *PossibleMatch) override {\n if (PossibleMatch) {\n case POK_VarAccess:\n DiagID = diag::warn_variable_requires_lock_precise;"}}, | [j]={{E,1961,"class ThreadSafetyReporter : public clang::threadSafety::ThreadSafetyHandler {\n // ...\n void handleMutexNotHeld(StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, Name LockName, LockKind LK, SourceLocation Loc, Name *PossibleMatch) override {\n // ...\n if (PossibleMatch) {\n // ...\n case POK_VarAccess:\n DiagID = diag::warn_variable_requires_lock_precise;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-thread-safety-analysis.cpp"]={"clang/test/SemaCXX/warn-thread-safety-analysis.cpp:583:8: warning: writing variable \'a\' requires holding mutex \'fooB.mu\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:604:12: warning: writing variable \'a\' requires holding mutex \'BarA.Foo.mu\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:613:20: warning: writing variable \'a\' requires holding mutex \'BarA.FooPointer->mu\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:622:13: warning: writing variable \'a\' requires holding mutex \'BarA.Foo2.mu\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:1338:7: warning: writing variable \'a_\' requires holding mutex \'b2->mu1_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:1369:12: warning: reading variable \'a_\' requires holding mutex \'b1.mu1_\' [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:1374:6: warning: writing variable \'a_\' requires holding mutex \'b1.mu1_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:1404:13: warning: writing variable \'a_\' requires holding mutex \'child->lock_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:2461:18: warning: writing variable \'a\' requires holding mutex \'bar.getFooey().mu_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:2467:18: warning: writing variable \'a\' requires holding mutex \'bar.getFoo2(b).mu_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:2473:21: warning: writing variable \'a\' requires holding mutex \'bar.getFoo3(a, c).mu_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:2479:21: warning: writing variable \'a\' requires holding mutex \'getBarFoo(bar, b).mu_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:2485:39: warning: writing variable \'a\' requires holding mutex \'((0 < a) ? fooArray[b] : fooArray[c]).mu_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:5200:31: warning: reading variable \'val\' requires holding mutex \'b.mu\' [-Wthread-safety-precise]"} | ["clang/test/SemaCXX/warn-thread-safety-analysis.cpp"]={"clang/test/SemaCXX/warn-thread-safety-analysis.cpp:583:8: warning: writing variable \'a\' requires holding mutex \'fooB.mu\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:604:12: warning: writing variable \'a\' requires holding mutex \'BarA.Foo.mu\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:613:20: warning: writing variable \'a\' requires holding mutex \'BarA.FooPointer->mu\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:622:13: warning: writing variable \'a\' requires holding mutex \'BarA.Foo2.mu\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:1338:7: warning: writing variable \'a_\' requires holding mutex \'b2->mu1_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:1369:12: warning: reading variable \'a_\' requires holding mutex \'b1.mu1_\' [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:1374:6: warning: writing variable \'a_\' requires holding mutex \'b1.mu1_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:1404:13: warning: writing variable \'a_\' requires holding mutex \'child->lock_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:2461:18: warning: writing variable \'a\' requires holding mutex \'bar.getFooey().mu_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:2467:18: warning: writing variable \'a\' requires holding mutex \'bar.getFoo2(b).mu_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:2473:21: warning: writing variable \'a\' requires holding mutex \'bar.getFoo3(a, c).mu_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:2479:21: warning: writing variable \'a\' requires holding mutex \'getBarFoo(bar, b).mu_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:2485:39: warning: writing variable \'a\' requires holding mutex \'((0 < a) ? fooArray[b] : fooArray[c]).mu_\' exclusively [-Wthread-safety-precise]","clang/test/SemaCXX/warn-thread-safety-analysis.cpp:5200:31: warning: reading variable \'val\' requires holding mutex \'b.mu\' [-Wthread-safety-precise]"} | ||
Line 10,434: | Line 10,434: | ||
[h]=q, | [h]=q, | ||
[i]={"30680e943735",1508796101,"[Sema] Add support for flexible array members in Obj-C.","[Sema] Add support for flexible array members in Obj-C."}, | [i]={"30680e943735",1508796101,"[Sema] Add support for flexible array members in Obj-C.","[Sema] Add support for flexible array members in Obj-C."}, | ||
[j]={{P,3869,"static void DiagnoseVariableSizedIvars(Sema &S, ObjCContainerDecl *OCD) {\n // Check if variable sized ivar is in interface and visible to subclasses.\n if (!isa<ObjCInterfaceDecl>(OCD)) {\n for (auto *ivar : Ivars) {\n if (!ivar->isInvalidDecl() && IsVariableSizedType(ivar->getType())) {\n S.Diag(ivar->getLocation(), diag::warn_variable_sized_ivar_visibility) << ivar->getDeclName() << ivar->getType();"}}, | [j]={{P,3869,"static void DiagnoseVariableSizedIvars(Sema &S, ObjCContainerDecl *OCD) {\n // ...\n // Check if variable sized ivar is in interface and visible to subclasses.\n if (!isa<ObjCInterfaceDecl>(OCD)) {\n for (auto *ivar : Ivars) {\n if (!ivar->isInvalidDecl() && IsVariableSizedType(ivar->getType())) {\n S.Diag(ivar->getLocation(), diag::warn_variable_sized_ivar_visibility) << ivar->getDeclName() << ivar->getType();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaObjC/flexible-array.m"]={"clang/test/SemaObjC/flexible-array.m:20:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:27:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:34:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:62:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:69:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:94:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:102:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:189:17: warning: field \'flexible\' with variable sized type \'struct Packet\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:196:17: warning: field \'flexible\' with variable sized type \'struct Packet\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]"} | ["clang/test/SemaObjC/flexible-array.m"]={"clang/test/SemaObjC/flexible-array.m:20:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:27:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:34:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:62:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:69:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:94:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:102:8: warning: field \'flexible\' with variable sized type \'char[]\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:189:17: warning: field \'flexible\' with variable sized type \'struct Packet\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]","clang/test/SemaObjC/flexible-array.m:196:17: warning: field \'flexible\' with variable sized type \'struct Packet\' is not visible to subclasses and can conflict with their instance variables [-Wobjc-flexible-array]"} | ||
Line 10,452: | Line 10,452: | ||
[h]=q, | [h]=q, | ||
[i]={"451a5db01baf",1335808890,"Add -Wloop-analysis. This warning will fire on for loops which the variables","Add -Wloop-analysis. This warning will fire on for loops which the variables"}, | [i]={"451a5db01baf",1335808890,"Add -Wloop-analysis. This warning will fire on for loops which the variables","Add -Wloop-analysis. This warning will fire on for loops which the variables"}, | ||
[j]={{U,1904,"void CheckForLoopConditionalStatement(Sema &S, Expr *Second, Expr *Third, Stmt *Body) {\n if (S.Diags.isIgnored(diag::warn_variables_not_in_loop_body, Second->getBeginLoc()))"},{U,1908,"void CheckForLoopConditionalStatement(Sema &S, Expr *Second, Expr *Third, Stmt *Body) {\n PartialDiagnostic PDiag = S.PDiag(diag::warn_variables_not_in_loop_body);"}}, | [j]={{U,1904,"void CheckForLoopConditionalStatement(Sema &S, Expr *Second, Expr *Third, Stmt *Body) {\n // ...\n if (S.Diags.isIgnored(diag::warn_variables_not_in_loop_body, Second->getBeginLoc()))"},{U,1908,"void CheckForLoopConditionalStatement(Sema &S, Expr *Second, Expr *Third, Stmt *Body) {\n // ...\n PartialDiagnostic PDiag = S.PDiag(diag::warn_variables_not_in_loop_body);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-loop-analysis.cpp"]={"clang/test/SemaCXX/warn-loop-analysis.cpp:17:15: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:24:15: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:31:17: warning: variable \'j\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:34:17: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:38:20: warning: variables \'i\' and \'j\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:49:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:53:10: warning: variables \'i\' and \'j\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:58:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:62:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:66:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:70:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:74:10: warning: variable \'ptr\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:78:11: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:82:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:86:10: warning: variables \'i\', \'j\', and \'k\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:90:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:95:10: warning: variables \'i\' and \'j\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:98:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:101:11: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:105:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:106:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:114:9: warning: variable \'x\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:125:10: warning: variable \'a\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:126:10: warning: variables \'a\' and \'b\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:127:10: warning: variables \'a\', \'b\', and \'c\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:128:10: warning: variables \'a\', \'b\', \'c\', and \'d\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:129:10: warning: variables used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:130:10: warning: variables used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:131:10: warning: variables \'a\', \'c\', \'d\', and \'b\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:132:10: warning: variables \'d\', \'c\', \'b\', and \'a\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:138:15: warning: variable \'a\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:140:15: warning: variable \'a\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:142:15: warning: variable \'a\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:144:15: warning: variable \'a\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:294:29: warning: variables \'a\' and \'b\' used in loop condition not modified in loop body [-Wfor-loop-analysis]"} | ["clang/test/SemaCXX/warn-loop-analysis.cpp"]={"clang/test/SemaCXX/warn-loop-analysis.cpp:17:15: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:24:15: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:31:17: warning: variable \'j\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:34:17: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:38:20: warning: variables \'i\' and \'j\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:49:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:53:10: warning: variables \'i\' and \'j\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:58:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:62:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:66:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:70:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:74:10: warning: variable \'ptr\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:78:11: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:82:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:86:10: warning: variables \'i\', \'j\', and \'k\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:90:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:95:10: warning: variables \'i\' and \'j\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:98:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:101:11: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:105:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:106:10: warning: variable \'i\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:114:9: warning: variable \'x\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:125:10: warning: variable \'a\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:126:10: warning: variables \'a\' and \'b\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:127:10: warning: variables \'a\', \'b\', and \'c\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:128:10: warning: variables \'a\', \'b\', \'c\', and \'d\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:129:10: warning: variables used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:130:10: warning: variables used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:131:10: warning: variables \'a\', \'c\', \'d\', and \'b\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:132:10: warning: variables \'d\', \'c\', \'b\', and \'a\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:138:15: warning: variable \'a\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:140:15: warning: variable \'a\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:142:15: warning: variable \'a\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:144:15: warning: variable \'a\' used in loop condition not modified in loop body [-Wfor-loop-analysis]","clang/test/SemaCXX/warn-loop-analysis.cpp:294:29: warning: variables \'a\' and \'b\' used in loop condition not modified in loop body [-Wfor-loop-analysis]"} | ||
Line 10,469: | Line 10,469: | ||
[h]=q, | [h]=q, | ||
[i]={"b2504bdc0d0e",1383539174,"Issue a diagnostic if an implicitly-defined move assignment operator would move","Issue a diagnostic if an implicitly-defined move assignment operator would move"}, | [i]={"b2504bdc0d0e",1383539174,"Issue a diagnostic if an implicitly-defined move assignment operator would move","Issue a diagnostic if an implicitly-defined move assignment operator would move"}, | ||
[j]={{db,15083,"/// Check if we\'re implicitly defining a move assignment operator for a class\n/// with virtual bases. Such a move assignment might move-assign the virtual\n/// base multiple times.\nstatic void checkMoveAssignmentForRepeatedMove(Sema &S, CXXRecordDecl *Class, SourceLocation CurrentLocation) {\n for (auto &BI : Class->bases()) {\n while (!Worklist.empty()) {\n if (BaseSpec->isVirtual()) {\n if (Existing && Existing != &BI) {\n S.Diag(CurrentLocation, diag::warn_vbase_moved_multiple_times) << Class << Base;"}}, | [j]={{db,15083,"/// Check if we\'re implicitly defining a move assignment operator for a class\n/// with virtual bases. Such a move assignment might move-assign the virtual\n/// base multiple times.\nstatic void checkMoveAssignmentForRepeatedMove(Sema &S, CXXRecordDecl *Class, SourceLocation CurrentLocation) {\n // ...\n for (auto &BI : Class->bases()) {\n // ...\n while (!Worklist.empty()) {\n // ...\n if (BaseSpec->isVirtual()) {\n // ...\n if (Existing && Existing != &BI) {\n S.Diag(CurrentLocation, diag::warn_vbase_moved_multiple_times) << Class << Base;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CXX/special/class.copy/implicit-move.cpp"]={"clang/test/CXX/special/class.copy/implicit-move.cpp:278:45: warning: defaulted move assignment operator of \'F<DR1402::VbaseMove::B>\' will move assign virtual base class \'B\' multiple times [-Wmultiple-move-vbase]","clang/test/CXX/special/class.copy/implicit-move.cpp:278:45: warning: defaulted move assignment operator of \'F<DR1402::VbaseMove::D>\' will move assign virtual base class \'D\' multiple times [-Wmultiple-move-vbase]","clang/test/CXX/special/class.copy/implicit-move.cpp:278:45: warning: defaulted move assignment operator of \'J<DR1402::VbaseMove::B>\' will move assign virtual base class \'B\' multiple times [-Wmultiple-move-vbase]","clang/test/CXX/special/class.copy/implicit-move.cpp:278:45: warning: defaulted move assignment operator of \'J<DR1402::VbaseMove::D>\' will move assign virtual base class \'D\' multiple times [-Wmultiple-move-vbase]"} | ["clang/test/CXX/special/class.copy/implicit-move.cpp"]={"clang/test/CXX/special/class.copy/implicit-move.cpp:278:45: warning: defaulted move assignment operator of \'F<DR1402::VbaseMove::B>\' will move assign virtual base class \'B\' multiple times [-Wmultiple-move-vbase]","clang/test/CXX/special/class.copy/implicit-move.cpp:278:45: warning: defaulted move assignment operator of \'F<DR1402::VbaseMove::D>\' will move assign virtual base class \'D\' multiple times [-Wmultiple-move-vbase]","clang/test/CXX/special/class.copy/implicit-move.cpp:278:45: warning: defaulted move assignment operator of \'J<DR1402::VbaseMove::B>\' will move assign virtual base class \'B\' multiple times [-Wmultiple-move-vbase]","clang/test/CXX/special/class.copy/implicit-move.cpp:278:45: warning: defaulted move assignment operator of \'J<DR1402::VbaseMove::D>\' will move assign virtual base class \'D\' multiple times [-Wmultiple-move-vbase]"} | ||
Line 10,486: | Line 10,486: | ||
[h]=ac, | [h]=ac, | ||
[i]={"2233460de6ed",1265328742,"First stage of adding AltiVec support","First stage of adding AltiVec support"}, | [i]={"2233460de6ed",1265328742,"First stage of adding AltiVec support","First stage of adding AltiVec support"}, | ||
[j]={{"clang/lib/Sema/DeclSpec.cpp",1241,"/// 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 else\n S.Diag(TSWRange.getBegin(), diag::warn_vector_long_decl_spec_combination) << getSpecifierName((TST)TypeSpecType, Policy);"}}, | [j]={{"clang/lib/Sema/DeclSpec.cpp",1241,"/// 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 // ...\n // Validate and finalize AltiVec vector declspec.\n if (TypeAltiVecVector) {\n // ...\n if (TypeAltiVecBool) {\n // ...\n } else if (TypeSpecType == TST_double) {\n // ...\n } else if (TypeSpecType == TST_float) {\n // ...\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 // ...\n else\n S.Diag(TSWRange.getBegin(), diag::warn_vector_long_decl_spec_combination) << getSpecifierName((TST)TypeSpecType, Policy);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/altivec.c"]={"clang/test/Parser/altivec.c:59:10: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:62:17: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:65:19: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:68:10: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:71:17: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:74:19: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:77:8: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:80:15: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:83:17: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:86:8: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:89:15: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:92:17: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]"} | ["clang/test/Parser/altivec.c"]={"clang/test/Parser/altivec.c:59:10: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:62:17: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:65:19: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:68:10: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:71:17: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:74:19: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:77:8: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:80:15: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:83:17: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:86:8: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:89:15: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]","clang/test/Parser/altivec.c:92:17: warning: Use of \'long\' with \'__vector\' is deprecated [-Wdeprecated]"} | ||
Line 10,503: | Line 10,503: | ||
[h]=ac, | [h]=ac, | ||
[i]={"f278eb10b7da",1447927991,"PR10235: support for vector mode attributes + warning, by Dmitry Polukhin.","PR10235: support for vector mode attributes + warning, by Dmitry Polukhin."}, | [i]={"f278eb10b7da",1447927991,"PR10235: support for vector mode attributes + warning, by Dmitry Polukhin.","PR10235: support for vector mode attributes + warning, by Dmitry Polukhin."}, | ||
[j]={{C,4761,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n if (Str.size() >= 4 && Str[0] == \'V\') {\n if (VectorStringLength && !Str.substr(1, VectorStringLength).getAsInteger(10, VectorSize) && VectorSize.isPowerOf2()) {\n // Avoid duplicate warning from template instantiation.\n if (!InInstantiation)\n Diag(AttrLoc, diag::warn_vector_mode_deprecated);"}}, | [j]={{C,4761,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n // ...\n if (Str.size() >= 4 && Str[0] == \'V\') {\n // ...\n if (VectorStringLength && !Str.substr(1, VectorStringLength).getAsInteger(10, VectorSize) && VectorSize.isPowerOf2()) {\n // ...\n // Avoid duplicate warning from template instantiation.\n if (!InInstantiation)\n Diag(AttrLoc, diag::warn_vector_mode_deprecated);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-mode-enums.c"]={"clang/test/Sema/attr-mode-enums.c:12:38: warning: specifying vector types with the \'mode\' attribute is deprecated; use the \'vector_size\' attribute instead [-Wdeprecated-attributes]","clang/test/Sema/attr-mode-enums.c:14:31: warning: specifying vector types with the \'mode\' attribute is deprecated; use the \'vector_size\' attribute instead [-Wdeprecated-attributes]","clang/test/Sema/attr-mode-enums.c:16:34: warning: specifying vector types with the \'mode\' attribute is deprecated; use the \'vector_size\' attribute instead [-Wdeprecated-attributes]","clang/test/Sema/attr-mode-enums.c:18:35: warning: specifying vector types with the \'mode\' attribute is deprecated; use the \'vector_size\' attribute instead [-Wdeprecated-attributes]","clang/test/Sema/attr-mode-enums.c:20:30: warning: specifying vector types with the \'mode\' attribute is deprecated; use the \'vector_size\' attribute instead [-Wdeprecated-attributes]","clang/test/Sema/attr-mode-enums.c:22:23: warning: specifying vector types with the \'mode\' attribute is deprecated; use the \'vector_size\' attribute instead [-Wdeprecated-attributes]"} | ["clang/test/Sema/attr-mode-enums.c"]={"clang/test/Sema/attr-mode-enums.c:12:38: warning: specifying vector types with the \'mode\' attribute is deprecated; use the \'vector_size\' attribute instead [-Wdeprecated-attributes]","clang/test/Sema/attr-mode-enums.c:14:31: warning: specifying vector types with the \'mode\' attribute is deprecated; use the \'vector_size\' attribute instead [-Wdeprecated-attributes]","clang/test/Sema/attr-mode-enums.c:16:34: warning: specifying vector types with the \'mode\' attribute is deprecated; use the \'vector_size\' attribute instead [-Wdeprecated-attributes]","clang/test/Sema/attr-mode-enums.c:18:35: warning: specifying vector types with the \'mode\' attribute is deprecated; use the \'vector_size\' attribute instead [-Wdeprecated-attributes]","clang/test/Sema/attr-mode-enums.c:20:30: warning: specifying vector types with the \'mode\' attribute is deprecated; use the \'vector_size\' attribute instead [-Wdeprecated-attributes]","clang/test/Sema/attr-mode-enums.c:22:23: warning: specifying vector types with the \'mode\' attribute is deprecated; use the \'vector_size\' attribute instead [-Wdeprecated-attributes]"} | ||
Line 10,521: | Line 10,521: | ||
[h]="Documentation Issue", | [h]="Documentation Issue", | ||
[i]={"76b91c343111",1353198631,"Documentation parsing: propely handle a lone \'\\endverbatim\' and emit a warning.","Documentation parsing: propely handle a lone \'\\endverbatim\' and emit a warning."}, | [i]={"76b91c343111",1353198631,"Documentation parsing: propely handle a lone \'\\endverbatim\' and emit a warning.","Documentation parsing: propely handle a lone \'\\endverbatim\' and emit a warning."}, | ||
[j]={{"clang/lib/AST/CommentParser.cpp",571,"BlockContentComment *Parser::parseParagraphOrBlockCommand() {\n while (true) {\n case tok::at_command: {\n if (Info->IsVerbatimBlockEndCommand) {\n Diag(Tok.getLocation(), diag::warn_verbatim_block_end_without_start) << Tok.is(tok::at_command) << Info->Name << SourceRange(Tok.getLocation(), Tok.getEndLocation());"}}, | [j]={{"clang/lib/AST/CommentParser.cpp",571,"BlockContentComment *Parser::parseParagraphOrBlockCommand() {\n // ...\n while (true) {\n // ...\n case tok::backslash_command:\n case tok::at_command: {\n // ...\n if (Info->IsVerbatimBlockEndCommand) {\n Diag(Tok.getLocation(), diag::warn_verbatim_block_end_without_start) << Tok.is(tok::at_command) << Info->Name << SourceRange(Tok.getLocation(), Tok.getEndLocation());"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-documentation-fixits.cpp"]={"clang/test/Sema/warn-documentation-fixits.cpp:123:5: warning: \'\\endcode\' command does not terminate a verbatim text block [-Wdocumentation]"} | ["clang/test/Sema/warn-documentation-fixits.cpp"]={"clang/test/Sema/warn-documentation-fixits.cpp:123:5: warning: \'\\endcode\' command does not terminate a verbatim text block [-Wdocumentation]"} | ||
Line 10,539: | Line 10,539: | ||
[h]=q, | [h]=q, | ||
[i]={"6c926ccbd2bd",1358971371,"Implement -Wvla correctly","Implement -Wvla correctly"}, | [i]={"6c926ccbd2bd",1358971371,"Implement -Wvla correctly","Implement -Wvla correctly"}, | ||
[j]={{T,2583,"/// 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().OpenCL) {\n } else if (getLangOpts().C99) {\n VLADiag = diag::warn_vla_used;"}}, | [j]={{T,2583,"/// 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 // ...\n if (getLangOpts().OpenCL) {\n // ...\n } else if (getLangOpts().C99) {\n VLADiag = diag::warn_vla_used;"}}, | ||
[p]={ | [p]={ | ||
[vd]={"clang/test/Sema/cast.c:3:11: warning: variable length array used [-Wvla]"} | [vd]={"clang/test/Sema/cast.c:3:11: warning: variable length array used [-Wvla]"} | ||
Line 10,556: | Line 10,556: | ||
[h]=q, | [h]=q, | ||
[i]={rc,1576908663,xb,xb}, | [i]={rc,1576908663,xb,xb}, | ||
[j]={{Ob,3171,"/// Check the semantics of a C-style cast operation, in C.\nvoid CastOperation::CheckCStyleCast() {\n // If either type is a pointer, the other type has to be either an\n // integer or a pointer.\n if (!DestType->isArithmeticType()) {\n } else if (!SrcType->isArithmeticType()) {\n if ((Self.Context.getTypeSize(SrcType) > Self.Context.getTypeSize(DestType)) && !DestType->isBooleanType()) {\n if (SrcType->isVoidPointerType())\n Diag = DestType->isEnumeralType() ? diag::warn_void_pointer_to_enum_cast : diag::warn_void_pointer_to_int_cast;"}}, | [j]={{Ob,3171,"/// Check the semantics of a C-style cast operation, in C.\nvoid CastOperation::CheckCStyleCast() {\n // ...\n // If either type is a pointer, the other type has to be either an\n // integer or a pointer.\n if (!DestType->isArithmeticType()) {\n // ...\n } else if (!SrcType->isArithmeticType()) {\n // ...\n if ((Self.Context.getTypeSize(SrcType) > Self.Context.getTypeSize(DestType)) && !DestType->isBooleanType()) {\n // ...\n if (SrcType->isVoidPointerType())\n Diag = DestType->isEnumeralType() ? diag::warn_void_pointer_to_enum_cast : diag::warn_void_pointer_to_int_cast;"}}, | ||
[p]={ | [p]={ | ||
[vd]={"clang/test/Sema/cast.c:195:9: warning: cast to smaller integer type \'X\' from \'VoidPtr\' (aka \'void *\') [-Wvoid-pointer-to-enum-cast]"} | [vd]={"clang/test/Sema/cast.c:195:9: warning: cast to smaller integer type \'X\' from \'VoidPtr\' (aka \'void *\') [-Wvoid-pointer-to-enum-cast]"} | ||
Line 10,573: | Line 10,573: | ||
[h]=q, | [h]=q, | ||
[i]={rc,1576908663,xb,xb}, | [i]={rc,1576908663,xb,xb}, | ||
[j]={{Ob,2467,"static TryCastResult TryReinterpretCast(Sema &Self, ExprResult &SrcExpr, QualType DestType, bool CStyle, SourceRange OpRange, unsigned &msg, CastKind &Kind) {\n if (DestType->isIntegralType(Self.Context)) {\n // C++ 5.2.10p4: A pointer can be explicitly converted to any integral\n // type large enough to hold it; except in Microsoft mode, where the\n // integral type size doesn\'t matter (except we don\'t allow bool).\n if ((Self.Context.getTypeSize(SrcType) > Self.Context.getTypeSize(DestType))) {\n if (MicrosoftException) {\n unsigned Diag = SrcType->isVoidPointerType() ? diag::warn_void_pointer_to_int_cast : diag::warn_pointer_to_int_cast;"},{Ob,3172,"/// Check the semantics of a C-style cast operation, in C.\nvoid CastOperation::CheckCStyleCast() {\n // If either type is a pointer, the other type has to be either an\n // integer or a pointer.\n if (!DestType->isArithmeticType()) {\n } else if (!SrcType->isArithmeticType()) {\n if ((Self.Context.getTypeSize(SrcType) > Self.Context.getTypeSize(DestType)) && !DestType->isBooleanType()) {\n if (SrcType->isVoidPointerType())\n Diag = DestType->isEnumeralType() ? diag::warn_void_pointer_to_enum_cast : diag::warn_void_pointer_to_int_cast;"}}, | [j]={{Ob,2467,"static TryCastResult TryReinterpretCast(Sema &Self, ExprResult &SrcExpr, QualType DestType, bool CStyle, SourceRange OpRange, unsigned &msg, CastKind &Kind) {\n // ...\n if (DestType->isIntegralType(Self.Context)) {\n // ...\n // C++ 5.2.10p4: A pointer can be explicitly converted to any integral\n // type large enough to hold it; except in Microsoft mode, where the\n // integral type size doesn\'t matter (except we don\'t allow bool).\n if ((Self.Context.getTypeSize(SrcType) > Self.Context.getTypeSize(DestType))) {\n // ...\n if (MicrosoftException) {\n unsigned Diag = SrcType->isVoidPointerType() ? diag::warn_void_pointer_to_int_cast : diag::warn_pointer_to_int_cast;"},{Ob,3172,"/// Check the semantics of a C-style cast operation, in C.\nvoid CastOperation::CheckCStyleCast() {\n // ...\n // If either type is a pointer, the other type has to be either an\n // integer or a pointer.\n if (!DestType->isArithmeticType()) {\n // ...\n } else if (!SrcType->isArithmeticType()) {\n // ...\n if ((Self.Context.getTypeSize(SrcType) > Self.Context.getTypeSize(DestType)) && !DestType->isBooleanType()) {\n // ...\n if (SrcType->isVoidPointerType())\n Diag = DestType->isEnumeralType() ? diag::warn_void_pointer_to_enum_cast : diag::warn_void_pointer_to_int_cast;"}}, | ||
[p]={ | [p]={ | ||
[vd]={"clang/test/Sema/cast.c:159:10: warning: cast to smaller integer type \'Int\' (aka \'int\') from \'VoidPtr\' (aka \'void *\') [-Wvoid-pointer-to-int-cast]"} | [vd]={"clang/test/Sema/cast.c:159:10: warning: cast to smaller integer type \'Int\' (aka \'int\') from \'VoidPtr\' (aka \'void *\') [-Wvoid-pointer-to-int-cast]"} | ||
Line 10,590: | Line 10,590: | ||
[h]=q, | [h]=q, | ||
[i]={rc,1576908663,xb,xb}, | [i]={rc,1576908663,xb,xb}, | ||
[j]={{"clang/lib/CodeGen/CGException.cpp",498,"void CodeGenFunction::EmitStartEHSpec(const Decl *D) {\n // In C++17 and later, \'throw()\' aka EST_DynamicNone is treated the same way\n // as noexcept. In earlier standards, it is handled in this block, along with\n // \'throw(X...)\'.\n if (EST == EST_Dynamic || (EST == EST_DynamicNone && !getLangOpts().CPlusPlus17)) {\n // In Wasm EH we currently treat \'throw()\' in the same way as \'noexcept\'. In\n // case of throw with types, we ignore it and print a warning for now.\n // TODO Correctly handle exception specification in Wasm EH\n if (CGM.getLangOpts().hasWasmExceptions()) {\n if (EST == EST_DynamicNone)\n else\n CGM.getDiags().Report(D->getLocation(), diag::warn_wasm_dynamic_exception_spec_ignored) << FD->getExceptionSpecSourceRange();"},{"clang/lib/CodeGen/CGException.cpp",512,"void CodeGenFunction::EmitStartEHSpec(const Decl *D) {\n // In C++17 and later, \'throw()\' aka EST_DynamicNone is treated the same way\n // as noexcept. In earlier standards, it is handled in this block, along with\n // \'throw(X...)\'.\n if (EST == EST_Dynamic || (EST == EST_DynamicNone && !getLangOpts().CPlusPlus17)) {\n // Currently Emscripten EH only handles \'throw()\' but not \'throw\' with\n // types. \'throw()\' handling will be done in JS glue code so we don\'t need\n // to do anything in that case. Just print a warning message in case of\n // throw with types.\n // TODO Correctly handle exception specification in Emscripten EH\n if (getTarget().getCXXABI() == TargetCXXABI::WebAssembly && CGM.getLangOpts().getExceptionHandling() == LangOptions::ExceptionHandlingKind::None && EST == EST_Dynamic)\n CGM.getDiags().Report(D->getLocation(), diag::warn_wasm_dynamic_exception_spec_ignored) << FD->getExceptionSpecSourceRange();"}}, | [j]={{"clang/lib/CodeGen/CGException.cpp",498,"void CodeGenFunction::EmitStartEHSpec(const Decl *D) {\n // ...\n // In C++17 and later, \'throw()\' aka EST_DynamicNone is treated the same way\n // as noexcept. In earlier standards, it is handled in this block, along with\n // \'throw(X...)\'.\n if (EST == EST_Dynamic || (EST == EST_DynamicNone && !getLangOpts().CPlusPlus17)) {\n // ...\n // In Wasm EH we currently treat \'throw()\' in the same way as \'noexcept\'. In\n // case of throw with types, we ignore it and print a warning for now.\n // TODO Correctly handle exception specification in Wasm EH\n if (CGM.getLangOpts().hasWasmExceptions()) {\n if (EST == EST_DynamicNone)\n // ...\n else\n CGM.getDiags().Report(D->getLocation(), diag::warn_wasm_dynamic_exception_spec_ignored) << FD->getExceptionSpecSourceRange();"},{"clang/lib/CodeGen/CGException.cpp",512,"void CodeGenFunction::EmitStartEHSpec(const Decl *D) {\n // ...\n // In C++17 and later, \'throw()\' aka EST_DynamicNone is treated the same way\n // as noexcept. In earlier standards, it is handled in this block, along with\n // \'throw(X...)\'.\n if (EST == EST_Dynamic || (EST == EST_DynamicNone && !getLangOpts().CPlusPlus17)) {\n // ...\n // Currently Emscripten EH only handles \'throw()\' but not \'throw\' with\n // types. \'throw()\' handling will be done in JS glue code so we don\'t need\n // to do anything in that case. Just print a warning message in case of\n // throw with types.\n // TODO Correctly handle exception specification in Emscripten EH\n if (getTarget().getCXXABI() == TargetCXXABI::WebAssembly && CGM.getLangOpts().getExceptionHandling() == LangOptions::ExceptionHandlingKind::None && EST == EST_Dynamic)\n CGM.getDiags().Report(D->getLocation(), diag::warn_wasm_dynamic_exception_spec_ignored) << FD->getExceptionSpecSourceRange();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGenCXX/wasm-eh.cpp"]={"clang/test/CodeGenCXX/wasm-eh.cpp:389:6: warning: dynamic exception specifications with types are currently ignored in wasm [-Wwasm-exception-spec]"} | ["clang/test/CodeGenCXX/wasm-eh.cpp"]={"clang/test/CodeGenCXX/wasm-eh.cpp:389:6: warning: dynamic exception specifications with types are currently ignored in wasm [-Wwasm-exception-spec]"} | ||
Line 10,605: | Line 10,605: | ||
[h]=q, | [h]=q, | ||
[i]={"7d470f3466c0",1248923739,"PR3679 - handle #pragma weak","PR3679 - handle #pragma weak"}, | [i]={"7d470f3466c0",1248923739,"PR3679 - handle #pragma weak","PR3679 - handle #pragma weak"}, | ||
[j]={{Z,1190,"/// 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 for (const auto &WeakIDs : WeakUndeclaredIdentifiers) {\n if (PrevDecl != nullptr && !(isa<FunctionDecl>(PrevDecl) || isa<VarDecl>(PrevDecl)))\n else\n for (const auto &WI : WeakIDs.second)\n Diag(WI.getLocation(), diag::warn_weak_identifier_undeclared) << WeakIDs.first;"}}, | [j]={{Z,1190,"/// 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 // ...\n for (const auto &WeakIDs : WeakUndeclaredIdentifiers) {\n // ...\n if (PrevDecl != nullptr && !(isa<FunctionDecl>(PrevDecl) || isa<VarDecl>(PrevDecl)))\n // ...\n else\n for (const auto &WI : WeakIDs.second)\n Diag(WI.getLocation(), diag::warn_weak_identifier_undeclared) << WeakIDs.first;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Parser/pragma-weak.c"]={"clang/test/Parser/pragma-weak.c:13:76: warning: weak identifier \'y\' never declared"} | ["clang/test/Parser/pragma-weak.c"]={"clang/test/Parser/pragma-weak.c:13:76: warning: weak identifier \'y\' never declared"} | ||
Line 10,620: | Line 10,620: | ||
[h]=q, | [h]=q, | ||
[i]={"33e022650ade",1308780530,"Issue warning if weak_import attribute is added to an already","Issue warning if weak_import attribute is added to an already"}, | [i]={"33e022650ade",1308780530,"Issue warning if weak_import attribute is added to an already","Issue warning if weak_import attribute is added to an already"}, | ||
[j]={{H,4592,"/// 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 // Warn if an already-declared variable is made a weak_import in a subsequent\n // declaration\n if (New->hasAttr<WeakImportAttr>() && Old->getStorageClass() == SC_None && !Old->hasAttr<WeakImportAttr>()) {\n Diag(New->getLocation(), diag::warn_weak_import) << New->getDeclName();"}}, | [j]={{H,4592,"/// 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 // ...\n // Warn if an already-declared variable is made a weak_import in a subsequent\n // declaration\n if (New->hasAttr<WeakImportAttr>() && Old->getStorageClass() == SC_None && !Old->hasAttr<WeakImportAttr>()) {\n Diag(New->getLocation(), diag::warn_weak_import) << New->getDeclName();"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/attr-weak.c"]={"clang/test/Sema/attr-weak.c:21:12: warning: an already-declared variable is made a weak_import declaration \'C\'"} | ["clang/test/Sema/attr-weak.c"]={"clang/test/Sema/attr-weak.c:21:12: warning: an already-declared variable is made a weak_import declaration \'C\'"} | ||
Line 10,652: | Line 10,652: | ||
[h]=q, | [h]=q, | ||
[i]={"0da714a3e216",1265423230,"Implement a warning diagnostic for weak vtables. Fixes PR6116.","Implement a warning diagnostic for weak vtables. Fixes PR6116."}, | [i]={"0da714a3e216",1265423230,"Implement a warning diagnostic for weak vtables. Fixes PR6116.","Implement a warning diagnostic for weak vtables. Fixes PR6116."}, | ||
[j]={{db,18396,"bool Sema::DefineUsedVTables() {\n for (unsigned I = 0; I != VTableUses.size(); ++I) {\n // Warn if we\'re emitting a weak vtable. The vtable will be weak if there is\n // no key function or the key function is inlined. Don\'t warn in C++ ABIs\n // that lack key functions, since the user won\'t be able to make one.\n if (Context.getTargetInfo().getCXXABI().hasKeyFunctions() && Class->isExternallyVisible() && ClassTSK != TSK_ImplicitInstantiation && ClassTSK != TSK_ExplicitInstantiationDefinition) {\n if (!KeyFunction || (KeyFunction->hasBody(KeyFunctionDef) && KeyFunctionDef->isInlined()))\n Diag(Class->getLocation(), diag::warn_weak_vtable) << Class;"}}, | [j]={{db,18396,"bool Sema::DefineUsedVTables() {\n // ...\n for (unsigned I = 0; I != VTableUses.size(); ++I) {\n // ...\n // Warn if we\'re emitting a weak vtable. The vtable will be weak if there is\n // no key function or the key function is inlined. Don\'t warn in C++ ABIs\n // that lack key functions, since the user won\'t be able to make one.\n if (Context.getTargetInfo().getCXXABI().hasKeyFunctions() && Class->isExternallyVisible() && ClassTSK != TSK_ImplicitInstantiation && ClassTSK != TSK_ExplicitInstantiationDefinition) {\n // ...\n if (!KeyFunction || (KeyFunction->hasBody(KeyFunctionDef) && KeyFunctionDef->isInlined()))\n Diag(Class->getLocation(), diag::warn_weak_vtable) << Class;"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-weak-vtables.cpp"]={"clang/test/SemaCXX/warn-weak-vtables.cpp:10:8: warning: \'A\' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Wweak-vtables]","clang/test/SemaCXX/warn-weak-vtables.cpp:53:7: warning: \'VeryDerived\' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Wweak-vtables]","clang/test/SemaCXX/warn-weak-vtables.cpp:75:19: warning: \'TemplVirt<long>\' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Wweak-vtables]"} | ["clang/test/SemaCXX/warn-weak-vtables.cpp"]={"clang/test/SemaCXX/warn-weak-vtables.cpp:10:8: warning: \'A\' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Wweak-vtables]","clang/test/SemaCXX/warn-weak-vtables.cpp:53:7: warning: \'VeryDerived\' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Wweak-vtables]","clang/test/SemaCXX/warn-weak-vtables.cpp:75:19: warning: \'TemplVirt<long>\' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Wweak-vtables]"} | ||
Line 10,669: | Line 10,669: | ||
[h]=q, | [h]=q, | ||
[i]={"7eb0b2c1819c",1393377448,"Add -Wabsolute-value, warnings about absolute value functions.","Add -Wabsolute-value, warnings about absolute value functions."}, | [i]={"7eb0b2c1819c",1393377448,"Add -Wabsolute-value, warnings about absolute value functions.","Add -Wabsolute-value, warnings about absolute value functions."}, | ||
[j]={{x,12079,"// Warn when using the wrong abs() function.\nvoid Sema::CheckAbsoluteValueFunction(const CallExpr *Call, const FunctionDecl *FDecl) {\n Diag(Call->getExprLoc(), diag::warn_wrong_absolute_value_type) << FDecl << ParamValueKind << ArgValueKind;"},{"clang/utils/TableGen/ClangDiagnosticsEmitter.cpp",1411,"/// diag::warn_wrong_absolute_value_type,"}}, | [j]={{x,12079,"// Warn when using the wrong abs() function.\nvoid Sema::CheckAbsoluteValueFunction(const CallExpr *Call, const FunctionDecl *FDecl) {\n // ...\n Diag(Call->getExprLoc(), diag::warn_wrong_absolute_value_type) << FDecl << ParamValueKind << ArgValueKind;"},{"clang/utils/TableGen/ClangDiagnosticsEmitter.cpp",1411,"/// diag::warn_wrong_absolute_value_type,"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/warn-absolute-value-header.c"]={"clang/test/Sema/warn-absolute-value-header.c:27:9: warning: using integer absolute value function \'abs\' when argument is of floating point type [-Wabsolute-value]","clang/test/Sema/warn-absolute-value-header.c:31:9: warning: using integer absolute value function \'abs\' when argument is of floating point type [-Wabsolute-value]"} | ["clang/test/Sema/warn-absolute-value-header.c"]={"clang/test/Sema/warn-absolute-value-header.c:27:9: warning: using integer absolute value function \'abs\' when argument is of floating point type [-Wabsolute-value]","clang/test/Sema/warn-absolute-value-header.c:31:9: warning: using integer absolute value function \'abs\' when argument is of floating point type [-Wabsolute-value]"} | ||
Line 10,686: | Line 10,686: | ||
[h]=B, | [h]=B, | ||
[i]={"c44c17424628",1541783985,"Introduce the _Clang scoped attribute token.","Introduce the _Clang scoped attribute token."}, | [i]={"c44c17424628",1541783985,"Introduce the _Clang scoped attribute token.","Introduce the _Clang scoped attribute token."}, | ||
[j]={{"clang/lib/Parse/ParseDeclCXX.cpp",4257,"/// Try to parse an \'identifier\' which appears within an attribute-token.\n///\n/// \\return the parsed identifier on success, and 0 if the next token is not an\n/// attribute-token.\n///\n/// C++11 [dcl.attr.grammar]p3:\n/// If a keyword or an alternative token that satisfies the syntactic\n/// requirements of an identifier is contained in an attribute-token,\n/// it is considered an identifier.\nIdentifierInfo *Parser::TryParseCXX11AttributeIdentifier(SourceLocation &Loc, Sema::AttributeCompletion Completion, const IdentifierInfo *Scope) {\n case tok::numeric_constant: {\n // If we got a numeric constant, check to see if it comes from a macro that\n // corresponds to the predefined __clang__ macro. If it does, warn the user\n // and recover by pretending they said _Clang instead.\n if (Tok.getLocation().isMacroID()) {\n if (Spelling == \"__clang__\") {\n Diag(Tok, diag::warn_wrong_clang_attr_namespace) << FixItHint::CreateReplacement(TokRange, \"_Clang\");"}}, | [j]={{"clang/lib/Parse/ParseDeclCXX.cpp",4257,"/// Try to parse an \'identifier\' which appears within an attribute-token.\n///\n/// \\return the parsed identifier on success, and 0 if the next token is not an\n/// attribute-token.\n///\n/// C++11 [dcl.attr.grammar]p3:\n/// If a keyword or an alternative token that satisfies the syntactic\n/// requirements of an identifier is contained in an attribute-token,\n/// it is considered an identifier.\nIdentifierInfo *Parser::TryParseCXX11AttributeIdentifier(SourceLocation &Loc, Sema::AttributeCompletion Completion, const IdentifierInfo *Scope) {\n // ...\n case tok::numeric_constant: {\n // If we got a numeric constant, check to see if it comes from a macro that\n // corresponds to the predefined __clang__ macro. If it does, warn the user\n // and recover by pretending they said _Clang instead.\n if (Tok.getLocation().isMacroID()) {\n // ...\n if (Spelling == \"__clang__\") {\n // ...\n Diag(Tok, diag::warn_wrong_clang_attr_namespace) << FixItHint::CreateReplacement(TokRange, \"_Clang\");"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/attr-optnone.cpp"]={"clang/test/SemaCXX/attr-optnone.cpp:77:3: warning: \'__clang__\' is a predefined macro name, not an attribute scope specifier; did you mean \'_Clang\' instead? [-Wignored-attributes]"} | ["clang/test/SemaCXX/attr-optnone.cpp"]={"clang/test/SemaCXX/attr-optnone.cpp:77:3: warning: \'__clang__\' is a predefined macro name, not an attribute scope specifier; did you mean \'_Clang\' instead? [-Wignored-attributes]"} | ||
Line 10,703: | Line 10,703: | ||
[h]=q, | [h]=q, | ||
[i]={wc,1567434909,Eb,Eb}, | [i]={wc,1567434909,Eb,Eb}, | ||
[j]={{A,13680,"static void diagnoseXorMisusedAsPow(Sema &S, const ExprResult &XorLHS, const ExprResult &XorRHS, const SourceLocation Loc) {\n if (LeftSideValue == 2 && RightSideIntValue >= 0) {\n if (Overflow) {\n if (RightSideIntValue < 64)\n else if (RightSideIntValue == 64)\n S.Diag(Loc, diag::warn_xor_used_as_pow) << ExprStr << toString(XorValue, 10, true);"}}, | [j]={{A,13680,"static void diagnoseXorMisusedAsPow(Sema &S, const ExprResult &XorLHS, const ExprResult &XorRHS, const SourceLocation Loc) {\n // ...\n if (LeftSideValue == 2 && RightSideIntValue >= 0) {\n // ...\n if (Overflow) {\n if (RightSideIntValue < 64)\n // ...\n else if (RightSideIntValue == 64)\n S.Diag(Loc, diag::warn_xor_used_as_pow) << ExprStr << toString(XorValue, 10, true);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-xor-as-pow.cpp"]={"clang/test/SemaCXX/warn-xor-as-pow.cpp:83:11: warning: result of \'2 ^ 64\' is 66; did you mean exponentiation? [-Wxor-used-as-pow]"} | ["clang/test/SemaCXX/warn-xor-as-pow.cpp"]={"clang/test/SemaCXX/warn-xor-as-pow.cpp:83:11: warning: result of \'2 ^ 64\' is 66; did you mean exponentiation? [-Wxor-used-as-pow]"} | ||
Line 10,720: | Line 10,720: | ||
[h]=q, | [h]=q, | ||
[i]={"920890e26812",1566155654,"[Diagnostics] Diagnose misused xor as pow","[Diagnostics] Diagnose misused xor as pow"}, | [i]={"920890e26812",1566155654,"[Diagnostics] Diagnose misused xor as pow","[Diagnostics] Diagnose misused xor as pow"}, | ||
[j]={{A,13675,"static void diagnoseXorMisusedAsPow(Sema &S, const ExprResult &XorLHS, const ExprResult &XorRHS, const SourceLocation Loc) {\n if (LeftSideValue == 2 && RightSideIntValue >= 0) {\n if (Overflow) {\n if (RightSideIntValue < 64)\n S.Diag(Loc, diag::warn_xor_used_as_pow_base) << ExprStr << toString(XorValue, 10, true) << (\"1LL << \" + RHSStr) << FixItHint::CreateReplacement(ExprRange, \"1LL << \" + RHSStr);"},{A,13694,"static void diagnoseXorMisusedAsPow(Sema &S, const ExprResult &XorLHS, const ExprResult &XorRHS, const SourceLocation Loc) {\n if (LeftSideValue == 2 && RightSideIntValue >= 0) {\n } else if (LeftSideValue == 10) {\n S.Diag(Loc, diag::warn_xor_used_as_pow_base) << ExprStr << toString(XorValue, 10, true) << SuggestedValue << FixItHint::CreateReplacement(ExprRange, SuggestedValue);"}}, | [j]={{A,13675,"static void diagnoseXorMisusedAsPow(Sema &S, const ExprResult &XorLHS, const ExprResult &XorRHS, const SourceLocation Loc) {\n // ...\n if (LeftSideValue == 2 && RightSideIntValue >= 0) {\n // ...\n if (Overflow) {\n if (RightSideIntValue < 64)\n S.Diag(Loc, diag::warn_xor_used_as_pow_base) << ExprStr << toString(XorValue, 10, true) << (\"1LL << \" + RHSStr) << FixItHint::CreateReplacement(ExprRange, \"1LL << \" + RHSStr);"},{A,13694,"static void diagnoseXorMisusedAsPow(Sema &S, const ExprResult &XorLHS, const ExprResult &XorRHS, const SourceLocation Loc) {\n // ...\n if (LeftSideValue == 2 && RightSideIntValue >= 0) {\n // ...\n } else if (LeftSideValue == 10) {\n // ...\n S.Diag(Loc, diag::warn_xor_used_as_pow_base) << ExprStr << toString(XorValue, 10, true) << SuggestedValue << FixItHint::CreateReplacement(ExprRange, SuggestedValue);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-xor-as-pow.cpp"]={"clang/test/SemaCXX/warn-xor-as-pow.cpp:80:11: warning: result of \'2 ^ 32\' is 34; did you mean \'1LL << 32\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:88:12: warning: result of \'10 ^ 0\' is 10; did you mean \'1e0\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:91:12: warning: result of \'10 ^ 1\' is 11; did you mean \'1e1\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:94:12: warning: result of \'10 ^ 2\' is 8; did you mean \'1e2\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:97:12: warning: result of \'10 ^ 4\' is 14; did you mean \'1e4\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:100:12: warning: result of \'10 ^ +4\' is 14; did you mean \'1e4\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:103:12: warning: result of \'10 ^ 10\' is 0; did you mean \'1e10\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:106:13: warning: result of \'TEN ^ 10\' is 0; did you mean \'1e10\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:109:12: warning: result of \'10 ^ TEN\' is 0; did you mean \'1e10\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:112:12: warning: result of \'10 ^ 100\' is 110; did you mean \'1e100\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:116:12: warning: result of \'10 ^ -EXP\' is -9; did you mean \'1e-3\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:119:12: warning: result of \'10 ^ +EXP\' is 9; did you mean \'1e3\'? [-Wxor-used-as-pow]"} | ["clang/test/SemaCXX/warn-xor-as-pow.cpp"]={"clang/test/SemaCXX/warn-xor-as-pow.cpp:80:11: warning: result of \'2 ^ 32\' is 34; did you mean \'1LL << 32\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:88:12: warning: result of \'10 ^ 0\' is 10; did you mean \'1e0\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:91:12: warning: result of \'10 ^ 1\' is 11; did you mean \'1e1\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:94:12: warning: result of \'10 ^ 2\' is 8; did you mean \'1e2\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:97:12: warning: result of \'10 ^ 4\' is 14; did you mean \'1e4\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:100:12: warning: result of \'10 ^ +4\' is 14; did you mean \'1e4\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:103:12: warning: result of \'10 ^ 10\' is 0; did you mean \'1e10\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:106:13: warning: result of \'TEN ^ 10\' is 0; did you mean \'1e10\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:109:12: warning: result of \'10 ^ TEN\' is 0; did you mean \'1e10\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:112:12: warning: result of \'10 ^ 100\' is 110; did you mean \'1e100\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:116:12: warning: result of \'10 ^ -EXP\' is -9; did you mean \'1e-3\'? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:119:12: warning: result of \'10 ^ +EXP\' is 9; did you mean \'1e3\'? [-Wxor-used-as-pow]"} | ||
Line 10,737: | Line 10,737: | ||
[h]=q, | [h]=q, | ||
[i]={"920890e26812",1566155654,"[Diagnostics] Diagnose misused xor as pow","[Diagnostics] Diagnose misused xor as pow"}, | [i]={"920890e26812",1566155654,"[Diagnostics] Diagnose misused xor as pow","[Diagnostics] Diagnose misused xor as pow"}, | ||
[j]={{A,13687,"static void diagnoseXorMisusedAsPow(Sema &S, const ExprResult &XorLHS, const ExprResult &XorRHS, const SourceLocation Loc) {\n if (LeftSideValue == 2 && RightSideIntValue >= 0) {\n if (Overflow) {\n } else {\n S.Diag(Loc, diag::warn_xor_used_as_pow_base_extra) << ExprStr << toString(XorValue, 10, true) << SuggestedExpr << toString(PowValue, 10, true) << FixItHint::CreateReplacement(ExprRange, (RightSideIntValue == 0) ? \"1\" : SuggestedExpr);"}}, | [j]={{A,13687,"static void diagnoseXorMisusedAsPow(Sema &S, const ExprResult &XorLHS, const ExprResult &XorRHS, const SourceLocation Loc) {\n // ...\n if (LeftSideValue == 2 && RightSideIntValue >= 0) {\n // ...\n if (Overflow) {\n // ...\n } else {\n S.Diag(Loc, diag::warn_xor_used_as_pow_base_extra) << ExprStr << toString(XorValue, 10, true) << SuggestedExpr << toString(PowValue, 10, true) << FixItHint::CreateReplacement(ExprRange, (RightSideIntValue == 0) ? \"1\" : SuggestedExpr);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-xor-as-pow.cpp"]={"clang/test/SemaCXX/warn-xor-as-pow.cpp:36:11: warning: result of \'2 ^ 0\' is 2; did you mean \'1 << 0\' (1)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:39:11: warning: result of \'2 ^ 1\' is 3; did you mean \'1 << 1\' (2)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:42:11: warning: result of \'2 ^ 2\' is 0; did you mean \'1 << 2\' (4)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:45:11: warning: result of \'2 ^ 8\' is 10; did you mean \'1 << 8\' (256)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:48:11: warning: result of \'2 ^ +8\' is 10; did you mean \'1 << +8\' (256)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:51:13: warning: result of \'TWO ^ 8\' is 10; did you mean \'1 << 8\' (256)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:54:11: warning: result of \'2 ^ 16\' is 18; did you mean \'1 << 16\' (65536)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:57:11: warning: result of \'2 ^ TEN\' is 8; did you mean \'1 << TEN\' (1024)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:60:18: warning: result of \'2 ^ ALPHA_OFFSET\' is 1; did you mean \'1 << ALPHA_OFFSET\' (8)? [-Wxor-used-as-pow]"} | ["clang/test/SemaCXX/warn-xor-as-pow.cpp"]={"clang/test/SemaCXX/warn-xor-as-pow.cpp:36:11: warning: result of \'2 ^ 0\' is 2; did you mean \'1 << 0\' (1)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:39:11: warning: result of \'2 ^ 1\' is 3; did you mean \'1 << 1\' (2)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:42:11: warning: result of \'2 ^ 2\' is 0; did you mean \'1 << 2\' (4)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:45:11: warning: result of \'2 ^ 8\' is 10; did you mean \'1 << 8\' (256)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:48:11: warning: result of \'2 ^ +8\' is 10; did you mean \'1 << +8\' (256)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:51:13: warning: result of \'TWO ^ 8\' is 10; did you mean \'1 << 8\' (256)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:54:11: warning: result of \'2 ^ 16\' is 18; did you mean \'1 << 16\' (65536)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:57:11: warning: result of \'2 ^ TEN\' is 8; did you mean \'1 << TEN\' (1024)? [-Wxor-used-as-pow]","clang/test/SemaCXX/warn-xor-as-pow.cpp:60:18: warning: result of \'2 ^ ALPHA_OFFSET\' is 1; did you mean \'1 << ALPHA_OFFSET\' (8)? [-Wxor-used-as-pow]"} | ||
Line 10,755: | Line 10,755: | ||
[h]=Ub, | [h]=Ub, | ||
[i]={"d7ba86b6bf54",1494000668,"Introduce Wzero-as-null-pointer-constant.","Introduce Wzero-as-null-pointer-constant."}, | [i]={"d7ba86b6bf54",1494000668,"Introduce Wzero-as-null-pointer-constant.","Introduce Wzero-as-null-pointer-constant."}, | ||
[j]={{Z,598,"void Sema::diagnoseZeroToNullptrConversion(CastKind Kind, const Expr *E) {\n if (Diags.isIgnored(diag::warn_zero_as_null_pointer_constant, E->getBeginLoc()))"},{Z,623,"void Sema::diagnoseZeroToNullptrConversion(CastKind Kind, const Expr *E) {\n Diag(E->getBeginLoc(), diag::warn_zero_as_null_pointer_constant) << FixItHint::CreateReplacement(E->getSourceRange(), \"nullptr\");"}}, | [j]={{Z,598,"void Sema::diagnoseZeroToNullptrConversion(CastKind Kind, const Expr *E) {\n // ...\n if (Diags.isIgnored(diag::warn_zero_as_null_pointer_constant, E->getBeginLoc()))"},{Z,623,"void Sema::diagnoseZeroToNullptrConversion(CastKind Kind, const Expr *E) {\n // ...\n Diag(E->getBeginLoc(), diag::warn_zero_as_null_pointer_constant) << FixItHint::CreateReplacement(E->getSourceRange(), \"nullptr\");"}}, | ||
[p]={ | [p]={ | ||
["clang/test/SemaCXX/warn-zero-nullptr-cxx20.cpp"]={"clang/test/SemaCXX/warn-zero-nullptr-cxx20.cpp:48:14: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant]","clang/test/SemaCXX/warn-zero-nullptr-cxx20.cpp:49:26: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant]","clang/test/SemaCXX/warn-zero-nullptr-cxx20.cpp:50:33: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant]"} | ["clang/test/SemaCXX/warn-zero-nullptr-cxx20.cpp"]={"clang/test/SemaCXX/warn-zero-nullptr-cxx20.cpp:48:14: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant]","clang/test/SemaCXX/warn-zero-nullptr-cxx20.cpp:49:26: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant]","clang/test/SemaCXX/warn-zero-nullptr-cxx20.cpp:50:33: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant]"} | ||
Line 10,773: | Line 10,773: | ||
[h]=q, | [h]=q, | ||
[i]={"89578fd43981",1370698198,"Recognition of empty structures and unions is moved to semantic stage","Recognition of empty structures and unions is moved to semantic stage"}, | [i]={"89578fd43981",1370698198,"Recognition of empty structures and unions is moved to semantic stage","Recognition of empty structures and unions is moved to semantic stage"}, | ||
[j]={{H,19128,"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 (CheckForZeroSize) {\n // Empty structs are an extension in C (C99 6.7.2.1p7). They are\n // allowed in C++, but warn if its declaration is inside\n // extern \"C\" block.\n if (ZeroSize) {\n Diag(RecLoc, getLangOpts().CPlusPlus ? diag::warn_zero_size_struct_union_in_extern_c : diag::warn_zero_size_struct_union_compat) << IsEmpty << Record->isUnion() << (NonBitFields > 1);"}}, | [j]={{H,19128,"void Sema::ActOnFields(Scope *S, SourceLocation RecLoc, Decl *EnclosingDecl, ArrayRef<Decl *> Fields, SourceLocation LBrac, SourceLocation RBrac, const ParsedAttributesView &Attrs) {\n // ...\n // Okay, we successfully defined \'Record\'.\n if (Record) {\n // ...\n if (CheckForZeroSize) {\n // ...\n // Empty structs are an extension in C (C99 6.7.2.1p7). They are\n // allowed in C++, but warn if its declaration is inside\n // extern \"C\" block.\n if (ZeroSize) {\n Diag(RecLoc, getLangOpts().CPlusPlus ? diag::warn_zero_size_struct_union_in_extern_c : diag::warn_zero_size_struct_union_compat) << IsEmpty << Record->isUnion() << (NonBitFields > 1);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/Sema/empty1.c"]={"clang/test/Sema/empty1.c:5:1: warning: empty struct has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:8:1: warning: empty union has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:11:1: warning: struct has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:15:1: warning: union has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:19:1: warning: struct has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:24:1: warning: union has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:29:1: warning: struct has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:33:1: warning: union has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:37:1: warning: struct has size 0 in C, non-zero size in C++ [-Wc++-compat]"} | ["clang/test/Sema/empty1.c"]={"clang/test/Sema/empty1.c:5:1: warning: empty struct has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:8:1: warning: empty union has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:11:1: warning: struct has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:15:1: warning: union has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:19:1: warning: struct has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:24:1: warning: union has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:29:1: warning: struct has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:33:1: warning: union has size 0 in C, size 1 in C++ [-Wc++-compat]","clang/test/Sema/empty1.c:37:1: warning: struct has size 0 in C, non-zero size in C++ [-Wc++-compat]"} | ||
Line 10,790: | Line 10,790: | ||
[h]=q, | [h]=q, | ||
[i]={"3cb8022849b9",1384395183,"Added warning on structures/unions that are empty or contain only","Added warning on structures/unions that are empty or contain only"}, | [i]={"3cb8022849b9",1384395183,"Added warning on structures/unions that are empty or contain only","Added warning on structures/unions that are empty or contain only"}, | ||
[j]={{H,19127,"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 (CheckForZeroSize) {\n // Empty structs are an extension in C (C99 6.7.2.1p7). They are\n // allowed in C++, but warn if its declaration is inside\n // extern \"C\" block.\n if (ZeroSize) {\n Diag(RecLoc, getLangOpts().CPlusPlus ? diag::warn_zero_size_struct_union_in_extern_c : diag::warn_zero_size_struct_union_compat) << IsEmpty << Record->isUnion() << (NonBitFields > 1);"}}, | [j]={{H,19127,"void Sema::ActOnFields(Scope *S, SourceLocation RecLoc, Decl *EnclosingDecl, ArrayRef<Decl *> Fields, SourceLocation LBrac, SourceLocation RBrac, const ParsedAttributesView &Attrs) {\n // ...\n // Okay, we successfully defined \'Record\'.\n if (Record) {\n // ...\n if (CheckForZeroSize) {\n // ...\n // Empty structs are an extension in C (C99 6.7.2.1p7). They are\n // allowed in C++, but warn if its declaration is inside\n // extern \"C\" block.\n if (ZeroSize) {\n Diag(RecLoc, getLangOpts().CPlusPlus ? diag::warn_zero_size_struct_union_in_extern_c : diag::warn_zero_size_struct_union_compat) << IsEmpty << Record->isUnion() << (NonBitFields > 1);"}}, | ||
[p]={ | [p]={ | ||
["clang/test/CodeGenCXX/c-linkage.cpp"]={"clang/test/CodeGenCXX/c-linkage.cpp:29:3: warning: empty struct has size 0 in C, size 1 in C++ [-Wextern-c-compat]"} | ["clang/test/CodeGenCXX/c-linkage.cpp"]={"clang/test/CodeGenCXX/c-linkage.cpp:29:3: warning: empty struct has size 0 in C, size 1 in C++ [-Wextern-c-compat]"} |
edits