Index: include/clang/Basic/DiagnosticOptions.def =================================================================== --- include/clang/Basic/DiagnosticOptions.def +++ include/clang/Basic/DiagnosticOptions.def @@ -69,10 +69,14 @@ DIAGOPT(VerifyDiagnostics, 1, 0) /// Check that diagnostics match the expected /// diagnostics, indicated by markers in the /// input source file. + ENUM_DIAGOPT(VerifyIgnoreUnexpected, DiagnosticLevelMask, 4, DiagnosticLevelMask::None) /// Ignore unexpected diagnostics of /// the specified levels when using /// -verify. + +DIAGOPT(AnalyzerFilterDiagnostics, 1, 0) /// Static Analyzer diag parsing. + DIAGOPT(ElideType, 1, 0) /// Elide identical types in template diffing DIAGOPT(ShowTemplateTree, 1, 0) /// Print a template tree when diffing DIAGOPT(CLFallbackMode, 1, 0) /// Format for clang-cl fallback mode Index: include/clang/Frontend/CompilerInstance.h =================================================================== --- include/clang/Frontend/CompilerInstance.h +++ include/clang/Frontend/CompilerInstance.h @@ -48,6 +48,8 @@ class Preprocessor; class Sema; class SourceManager; +class SuppressDiagConsumer; +class UserSuppressions; class TargetInfo; /// CompilerInstance - Helper class for managing a single instance of the Clang @@ -147,6 +149,12 @@ /// \brief One or more modules failed to build. bool ModuleBuildFailed; + /// Static Analyzer reports to be suppressed. + UserSuppressions *AnalyzerUserSuppressions; + + /// Consumer to parse comments and feed the results to static analyzer. + std::unique_ptr AnalyzerSuppressDiagCons; + /// \brief Holds information about the output file. /// /// If TempFilename is not empty we must rename it to Filename at the end. @@ -313,6 +321,10 @@ const TargetOptions &getTargetOpts() const { return Invocation->getTargetOpts(); } + + SuppressDiagConsumer *getSuppressDiagConsumer() { + return AnalyzerSuppressDiagCons.get(); + } /// } /// @name Diagnostics Engine @@ -619,7 +631,8 @@ createDiagnostics(DiagnosticOptions *Opts, DiagnosticConsumer *Client = nullptr, bool ShouldOwnClient = true, - const CodeGenOptions *CodeGenOpts = nullptr); + const CodeGenOptions *CodeGenOpts = nullptr, + UserSuppressions *US = nullptr); /// Create the file manager and replace any existing one with it. void createFileManager(); Index: include/clang/Frontend/SuppressDiagConsumer.h =================================================================== --- /dev/null +++ include/clang/Frontend/SuppressDiagConsumer.h @@ -0,0 +1,58 @@ +//===--- SuppressDiagConsumer.h - SuppressDiagononstic header data-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef SUPPRESSDIAGCONSUMER_H +#define SUPPRESSDIAGCONSUMER_H +#include "clang/Basic/Diagnostic.h" +#include "clang/Lex/Preprocessor.h" +#include +#include +#include + +namespace clang { + +class SuppressDiagConsumer; + +typedef std::map > IgnoredReports_t; + +class UserSuppressions { + IgnoredReports_t IgnoredReports; +public: + friend class SuppressDiagConsumer; + const IgnoredReports_t &getIgnoredReports() { + return IgnoredReports; + } +}; + +class SuppressDiagConsumer : public DiagnosticConsumer, + public CommentHandler { + const Preprocessor *CurrentPreprocessor; + UserSuppressions *AnalyzerUserSuppressions; +public: + SuppressDiagConsumer(UserSuppressions *US) + : AnalyzerUserSuppressions(US) + { } + + DiagnosticConsumer *clone(DiagnosticsEngine &Diags) const { + return new SuppressDiagConsumer(AnalyzerUserSuppressions); + } + + void BeginSourceFile(const LangOptions &LangOpts, + const Preprocessor *PP); + void EndSourceFile(); + bool HandleComment(Preprocessor &PP, SourceRange Comment); + void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel, + const Diagnostic &Info) {} + UserSuppressions *getUserSuppressions() { + return AnalyzerUserSuppressions; + } +}; + +} // end namespace clang +#endif // SUPPRESSDIAGCONSUMER_H Index: include/clang/Frontend/TextDiagnostic.h =================================================================== --- include/clang/Frontend/TextDiagnostic.h +++ include/clang/Frontend/TextDiagnostic.h @@ -52,6 +52,7 @@ static void printDiagnosticLevel(raw_ostream &OS, DiagnosticsEngine::Level Level, bool ShowColors, + bool analyzing, bool CLFallbackMode = false); /// \brief Pretty-print a diagnostic message to a raw_ostream. Index: include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h =================================================================== --- include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h +++ include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h @@ -34,6 +34,7 @@ class DiagnosticsEngine; class Stmt; class ParentMap; +class UserSuppressions; namespace ento { @@ -120,6 +121,9 @@ /// when reporting an issue. bool DoNotPrunePath; + /// Set this to true when bug report should not be changed. + bool Annotated; + /// Used to track unique reasons why a bug report might be invalid. /// /// \sa markInvalid @@ -145,17 +149,18 @@ public: BugReport(BugType& bt, StringRef desc, const ExplodedNode *errornode) : BT(bt), DeclWithIssue(nullptr), Description(desc), ErrorNode(errornode), - ConfigurationChangeToken(0), DoNotPrunePath(false) {} + ConfigurationChangeToken(0), DoNotPrunePath(false), Annotated(false) {} BugReport(BugType& bt, StringRef shortDesc, StringRef desc, const ExplodedNode *errornode) : BT(bt), DeclWithIssue(nullptr), ShortDescription(shortDesc), Description(desc), ErrorNode(errornode), ConfigurationChangeToken(0), - DoNotPrunePath(false) {} + DoNotPrunePath(false), Annotated(false) {} BugReport(BugType &bt, StringRef desc, PathDiagnosticLocation l) : BT(bt), DeclWithIssue(nullptr), Description(desc), Location(l), - ErrorNode(nullptr), ConfigurationChangeToken(0), DoNotPrunePath(false) {} + ErrorNode(nullptr), ConfigurationChangeToken(0), DoNotPrunePath(false), + Annotated(false){} /// \brief Create a BugReport with a custom uniqueing location. /// @@ -170,7 +175,7 @@ UniqueingLocation(LocationToUnique), UniqueingDecl(DeclToUnique), ErrorNode(errornode), ConfigurationChangeToken(0), - DoNotPrunePath(false) {} + DoNotPrunePath(false), Annotated(false) {} virtual ~BugReport(); @@ -181,6 +186,17 @@ StringRef getDescription() const { return Description; } + void setDescription(StringRef d) { + if (!Annotated) { + Description = d; + Annotated = true; + } + } + + /// Helpful in preventing multiple rewrites to Description. + void markAnnotated(bool a = true) { Annotated = a; } + bool getAnnotated() { return Annotated; } + StringRef getShortDescription(bool UseFallback = true) const { if (ShortDescription.empty() && UseFallback) return Description; @@ -355,6 +371,7 @@ virtual ASTContext &getASTContext() = 0; virtual SourceManager& getSourceManager() = 0; virtual AnalyzerOptions& getAnalyzerOptions() = 0; + virtual UserSuppressions *getUserSuppressions() = 0; }; /// BugReporter is a utility class for generating PathDiagnostics for analysis. @@ -378,7 +395,7 @@ /// Generate and flush the diagnostics for the given bug report /// and PathDiagnosticConsumer. void FlushReport(BugReport *exampleReport, - PathDiagnosticConsumer &PD, + PathDiagnosticConsumer &PC, ArrayRef BugReports); /// The set of bug reports tracked by the BugReporter. @@ -451,6 +468,10 @@ StringRef BugStr, PathDiagnosticLocation Loc, ArrayRef Ranges = None); + UserSuppressions *getUserSuppressions() { + return D.getUserSuppressions(); + } + private: llvm::StringMap StrBugTypes; Index: include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h =================================================================== --- include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h +++ include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h @@ -16,6 +16,7 @@ #define LLVM_CLANG_STATICANALYZER_CORE_BUGREPORTER_BUGREPORTERVISITOR_H #include "clang/StaticAnalyzer/Core/PathSensitive/SVals.h" +#include "clang/Frontend/SuppressDiagConsumer.h" #include "llvm/ADT/FoldingSet.h" namespace clang { @@ -272,6 +273,11 @@ std::unique_ptr getEndPath(BugReporterContext &BRC, const ExplodedNode *N, BugReport &BR) override; + + // Return true if a report was suppressed. + static bool handleUserSuppressions(const IgnoredReports_t &IgnoredReports, + BugReport &BR, + SourceManager &SM); }; /// \brief When a region containing undefined value or '0' value is passed Index: include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h =================================================================== --- include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h +++ include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h @@ -16,6 +16,7 @@ #define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_ANALYSISMANAGER_H #include "clang/Analysis/AnalysisContext.h" +#include "clang/Frontend/SuppressDiagConsumer.h" #include "clang/StaticAnalyzer/Core/AnalyzerOptions.h" #include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h" #include "clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h" @@ -42,6 +43,8 @@ ConstraintManagerCreator CreateConstraintMgr; CheckerManager *CheckerMgr; + // User annotated suppressions of report. + UserSuppressions *userSuppressions; public: AnalyzerOptions &options; @@ -52,6 +55,7 @@ StoreManagerCreator storemgr, ConstraintManagerCreator constraintmgr, CheckerManager *checkerMgr, + UserSuppressions *US, AnalyzerOptions &Options, CodeInjector* injector = nullptr); @@ -126,6 +130,10 @@ AnalysisDeclContext *getAnalysisDeclContext(const Decl *D) { return AnaCtxMgr.getContext(D); } + + virtual UserSuppressions *getUserSuppressions() override { + return userSuppressions; + } }; } // enAnaCtxMgrspace Index: include/clang/StaticAnalyzer/Frontend/FrontendActions.h =================================================================== --- include/clang/StaticAnalyzer/Frontend/FrontendActions.h +++ include/clang/StaticAnalyzer/Frontend/FrontendActions.h @@ -11,6 +11,7 @@ #define LLVM_CLANG_STATICANALYZER_FRONTEND_FRONTENDACTIONS_H #include "clang/Frontend/FrontendAction.h" +#include "clang/Frontend/SuppressDiagConsumer.h" #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" @@ -26,9 +27,15 @@ //===----------------------------------------------------------------------===// class AnalysisAction : public ASTFrontendAction { +public: + AnalysisAction(UserSuppressions *AC=nullptr) + : userSuppressions(AC) + { } + protected: std::unique_ptr CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; + UserSuppressions *userSuppressions; }; /// \brief Frontend action to parse model files. Index: lib/Frontend/CompilerInstance.cpp =================================================================== --- lib/Frontend/CompilerInstance.cpp +++ lib/Frontend/CompilerInstance.cpp @@ -23,6 +23,7 @@ #include "clang/Frontend/FrontendDiagnostic.h" #include "clang/Frontend/LogDiagnosticPrinter.h" #include "clang/Frontend/SerializedDiagnosticPrinter.h" +#include "clang/Frontend/SuppressDiagConsumer.h" #include "clang/Frontend/TextDiagnosticPrinter.h" #include "clang/Frontend/Utils.h" #include "clang/Frontend/VerifyDiagnosticConsumer.h" @@ -60,10 +61,14 @@ ModuleManager(nullptr), ThePCHContainerOperations(std::move(PCHContainerOps)), BuildGlobalModuleIndex(false), HaveFullGlobalModuleIndex(false), - ModuleBuildFailed(false) {} + ModuleBuildFailed(false), + AnalyzerUserSuppressions(new UserSuppressions()), + AnalyzerSuppressDiagCons(new SuppressDiagConsumer( + AnalyzerUserSuppressions)) {} CompilerInstance::~CompilerInstance() { assert(OutputFiles.empty() && "Still output files in flight?"); + delete AnalyzerUserSuppressions; } void CompilerInstance::setInvocation(CompilerInvocation *Value) { @@ -191,14 +196,16 @@ void CompilerInstance::createDiagnostics(DiagnosticConsumer *Client, bool ShouldOwnClient) { Diagnostics = createDiagnostics(&getDiagnosticOpts(), Client, - ShouldOwnClient, &getCodeGenOpts()); + ShouldOwnClient, &getCodeGenOpts(), + AnalyzerSuppressDiagCons->getUserSuppressions()); } IntrusiveRefCntPtr CompilerInstance::createDiagnostics(DiagnosticOptions *Opts, DiagnosticConsumer *Client, bool ShouldOwnClient, - const CodeGenOptions *CodeGenOpts) { + const CodeGenOptions *CodeGenOpts, + UserSuppressions *US) { IntrusiveRefCntPtr DiagID(new DiagnosticIDs()); IntrusiveRefCntPtr Diags(new DiagnosticsEngine(DiagID, Opts)); @@ -213,6 +220,12 @@ // Chain in -verify checker, if requested. if (Opts->VerifyDiagnostics) Diags->setClient(new VerifyDiagnosticConsumer(*Diags)); + else if (Opts->AnalyzerFilterDiagnostics) + Diags->setClient(new ChainedDiagnosticConsumer( + std::unique_ptr(Diags->takeClient()), + std::unique_ptr( + new SuppressDiagConsumer(US))), + false); // Chain in -diagnostic-log-file dumper, if requested. if (!Opts->DiagnosticLogFile.empty()) Index: lib/Frontend/CompilerInvocation.cpp =================================================================== --- lib/Frontend/CompilerInvocation.cpp +++ lib/Frontend/CompilerInvocation.cpp @@ -1009,6 +1009,7 @@ Opts.ShowParseableFixits = Args.hasArg(OPT_fdiagnostics_parseable_fixits); Opts.ShowPresumedLoc = !Args.hasArg(OPT_fno_diagnostics_use_presumed_location); Opts.VerifyDiagnostics = Args.hasArg(OPT_verify); + Opts.AnalyzerFilterDiagnostics = Args.hasArg(OPT_analyze); DiagnosticLevelMask DiagMask = DiagnosticLevelMask::None; Success &= parseDiagnosticLevelMask("-verify-ignore-unexpected=", Args.getAllArgValues(OPT_verify_ignore_unexpected_EQ), Index: lib/Frontend/TextDiagnostic.cpp =================================================================== --- lib/Frontend/TextDiagnostic.cpp +++ lib/Frontend/TextDiagnostic.cpp @@ -688,6 +688,7 @@ OS.resetColor(); printDiagnosticLevel(OS, Level, DiagOpts->ShowColors, + DiagOpts->AnalyzerFilterDiagnostics, DiagOpts->CLFallbackMode); printDiagnosticMessage(OS, /*IsSupplemental*/ Level == DiagnosticsEngine::Note, @@ -699,6 +700,7 @@ TextDiagnostic::printDiagnosticLevel(raw_ostream &OS, DiagnosticsEngine::Level Level, bool ShowColors, + bool analyzing, bool CLFallbackMode) { if (ShowColors) { // Print diagnostic category in bold and color @@ -718,7 +720,9 @@ llvm_unreachable("Invalid diagnostic type"); case DiagnosticsEngine::Note: OS << "note"; break; case DiagnosticsEngine::Remark: OS << "remark"; break; - case DiagnosticsEngine::Warning: OS << "warning"; break; + case DiagnosticsEngine::Warning: analyzing ? + OS << "clang_sa_warning" : + OS << "warning"; break; case DiagnosticsEngine::Error: OS << "error"; break; case DiagnosticsEngine::Fatal: OS << "fatal error"; break; } Index: lib/Frontend/TextDiagnosticPrinter.cpp =================================================================== --- lib/Frontend/TextDiagnosticPrinter.cpp +++ lib/Frontend/TextDiagnosticPrinter.cpp @@ -135,6 +135,7 @@ // other infrastructure necessary when emitting more rich diagnostics. if (!Info.getLocation().isValid()) { TextDiagnostic::printDiagnosticLevel(OS, Level, DiagOpts->ShowColors, + DiagOpts->AnalyzerFilterDiagnostics, DiagOpts->CLFallbackMode); TextDiagnostic::printDiagnosticMessage(OS, Level, DiagMessageStream.str(), OS.tell() - StartOfLocationInfo, Index: lib/Frontend/VerifyDiagnosticConsumer.cpp =================================================================== --- lib/Frontend/VerifyDiagnosticConsumer.cpp +++ lib/Frontend/VerifyDiagnosticConsumer.cpp @@ -15,6 +15,7 @@ #include "clang/Basic/CharInfo.h" #include "clang/Basic/FileManager.h" #include "clang/Frontend/FrontendDiagnostic.h" +#include "clang/Frontend/SuppressDiagConsumer.h" #include "clang/Frontend/TextDiagnosticBuffer.h" #include "clang/Lex/HeaderSearch.h" #include "clang/Lex/Preprocessor.h" @@ -919,3 +920,117 @@ return llvm::make_unique( DirectiveLoc, DiagnosticLoc, MatchAnyLine, Text, Min, Max, RegexStr); } + +//AnalyzerIgnores_t SuppressDiagConsumer::AnalyzerIgnores; + +void SuppressDiagConsumer::BeginSourceFile(const LangOptions &LangOpts, + const Preprocessor *PP) { + CurrentPreprocessor = PP; + const_cast(PP)->addCommentHandler(this); +} + +void SuppressDiagConsumer::EndSourceFile() { + const_cast(CurrentPreprocessor)->removeCommentHandler(this); +} + +// Parses the comment to find out if there is 'analyzer_ignore' so that +inline bool isPrintableCharacter(int c) { + return !isspace(c); +} + +// Parses the comment to find out if there is 'clang_sa_ignore' so that +// we can inform the static analyzer to ignore reports pertaining to the line. +bool SuppressDiagConsumer::HandleComment(Preprocessor &PP, + SourceRange Comment) { + SourceManager &SM = PP.getSourceManager(); + SourceLocation CommentBegin = Comment.getBegin(); + + const char *CommRaw = SM.getCharacterData(CommentBegin); + StringRef C(CommRaw, SM.getCharacterData(Comment.getEnd()) - CommRaw); + + if (C.empty()) + return false; + + + /* + comment = // clang_sa_ignore + text + text = '[' bug-id-list ']' + regular-comment + bug-id-list = bug-id + | ',' bug-id-list + bug-id = string + */ + + // e.g., + // // clang_sa_ignore [unix.Malloc] more comment + // ~~ ~~~~~~~~~~~~~~~ ============= ++++++++++++ + // pref|<----str---->|<----------suff---------->| + // idx + StringRef str("clang_sa_ignore"); + size_t idx = C.find(str); + if (idx == StringRef::npos) + return false; + + // First two characters in a comment are '//' + // It should be a C++ style comment. + StringRef pref(C.slice(2, idx)); + StringRef suff(C.slice(idx+str.size(), C.size())); + + // Pref cannot contain any character beside whitespaces + // eg: // d clang_sa_ignore + // Does not count as a supression + // Check for non-whitespace in the pref. + if(std::any_of(pref.begin(), pref.end(), isPrintableCharacter)) + return false; + + + StringRef::iterator b_it = std::find(suff.begin(), suff.end(), '['); + if (b_it == suff.end()) + return false; + StringRef::iterator e_it = std::find(b_it, suff.end(), ']'); + if (e_it == suff.end()) + return false; + + + + // Check for non-whitespace from [suff, b_it) + if(std::any_of(suff.begin(), b_it, isPrintableCharacter)) + return false; + + // [b_it, e_it) == Set of diagnostics to be suppressed. + std::string text(++b_it, e_it); + text = StringRef(text).trim(); + + // Not found or an empty-string. + if (text.empty()) + return false; + + // Make an entry. + IgnoredReports_t &IgnoredReports = AnalyzerUserSuppressions->IgnoredReports; + IgnoredReports.insert(std::make_pair(CommentBegin, + std::vector())); + + + // Save the static analyzer flags. Note that we don't want to verify + // the correctness of flags. The user is supposed to write correct + // spelling of the flags. + std::string::iterator e = text.end(); + std::string::iterator bi = text.begin(); + std::string::iterator it = e; + // TODO: Use llvm::SplitString for the new version. + //llvm::SplitString(text, AnalyzerIgnores[CommentBegin], ','); + while (true) { + it = std::find(bi, e, ','); + if (it == e) + break; + std::string st(bi, it); + st = StringRef(st).trim(); + + IgnoredReports[CommentBegin].push_back(st); + bi = ++it; + } + if (bi != e) + IgnoredReports[CommentBegin].emplace_back(bi, e); + return false; +} + + Index: lib/FrontendTool/ExecuteCompilerInvocation.cpp =================================================================== --- lib/FrontendTool/ExecuteCompilerInvocation.cpp +++ lib/FrontendTool/ExecuteCompilerInvocation.cpp @@ -101,7 +101,8 @@ case MigrateSource: Action = "MigrateSource"; break; #endif #ifdef CLANG_ENABLE_STATIC_ANALYZER - case RunAnalysis: return llvm::make_unique(); + case RunAnalysis: return llvm::make_unique( + CI.getSuppressDiagConsumer()->getUserSuppressions()); #else case RunAnalysis: Action = "RunAnalysis"; break; #endif Index: lib/StaticAnalyzer/Core/AnalysisManager.cpp =================================================================== --- lib/StaticAnalyzer/Core/AnalysisManager.cpp +++ lib/StaticAnalyzer/Core/AnalysisManager.cpp @@ -20,6 +20,7 @@ StoreManagerCreator storemgr, ConstraintManagerCreator constraintmgr, CheckerManager *checkerMgr, + UserSuppressions *US, AnalyzerOptions &Options, CodeInjector *injector) : AnaCtxMgr(Options.UnoptimizedCFG, @@ -36,6 +37,7 @@ PathConsumers(PDC), CreateStoreMgr(storemgr), CreateConstraintMgr(constraintmgr), CheckerMgr(checkerMgr), + userSuppressions(US), options(Options) { AnaCtxMgr.getCFGBuildOptions().setAllAlwaysAdd(); } Index: lib/StaticAnalyzer/Core/BugReporter.cpp =================================================================== --- lib/StaticAnalyzer/Core/BugReporter.cpp +++ lib/StaticAnalyzer/Core/BugReporter.cpp @@ -3388,14 +3388,22 @@ } void BugReporter::FlushReport(BugReport *exampleReport, - PathDiagnosticConsumer &PD, + PathDiagnosticConsumer &PC, ArrayRef bugReports) { // FIXME: Make sure we use the 'R' for the path that was actually used. // Probably doesn't make a difference in practice. + if (!exampleReport->getAnnotated()) { + std::string BugDesc(exampleReport->getDescription().str()); + BugDesc += " ["; + BugDesc += exampleReport->getBugType().getCheckName(); + BugDesc += ']'; + exampleReport->setDescription(BugDesc); + } + BugType& BT = exampleReport->getBugType(); - std::unique_ptr D(new PathDiagnostic( + std::unique_ptr PD(new PathDiagnostic( exampleReport->getBugType().getCheckName(), exampleReport->getDeclWithIssue(), exampleReport->getBugType().getName(), exampleReport->getDescription(), @@ -3411,9 +3419,18 @@ // path diagnostics even for consumers which do not support paths, because // the BugReporterVisitors may mark this bug as a false positive. if (!bugReports.empty()) - if (!generatePathDiagnostic(*D.get(), PD, bugReports)) + if (!generatePathDiagnostic(*PD.get(), PC, bugReports)) return; + SourceManager& SM = getSourceManager(); + + // If the has been suppressed, return. 2281 + if (LikelyFalsePositiveSuppressionBRVisitor:: + handleUserSuppressions(D.getUserSuppressions()->getIgnoredReports(), + *exampleReport, SM)) + return; + + MaxValidBugClassSize = std::max(bugReports.size(), static_cast(MaxValidBugClassSize)); @@ -3421,27 +3438,27 @@ // report location to the last piece in the main source file. AnalyzerOptions& Opts = getAnalyzerOptions(); if (Opts.shouldReportIssuesInMainSourceFile() && !Opts.AnalyzeAll) - D->resetDiagnosticLocationToMainFile(); + PD->resetDiagnosticLocationToMainFile(); // If the path is empty, generate a single step path with the location // of the issue. - if (D->path.empty()) { + if (PD->path.empty()) { PathDiagnosticLocation L = exampleReport->getLocation(getSourceManager()); auto piece = llvm::make_unique( L, exampleReport->getDescription()); for (SourceRange Range : exampleReport->getRanges()) piece->addRange(Range); - D->setEndOfPath(std::move(piece)); + PD->setEndOfPath(std::move(piece)); } // Get the meta data. const BugReport::ExtraTextList &Meta = exampleReport->getExtraText(); for (BugReport::ExtraTextList::const_iterator i = Meta.begin(), e = Meta.end(); i != e; ++i) { - D->addMeta(*i); + PD->addMeta(*i); } - PD.HandlePathDiagnostic(std::move(D)); + PC.HandlePathDiagnostic(std::move(PD)); } void BugReporter::EmitBasicReport(const Decl *DeclWithIssue, Index: lib/StaticAnalyzer/Core/BugReporterVisitors.cpp =================================================================== --- lib/StaticAnalyzer/Core/BugReporterVisitors.cpp +++ lib/StaticAnalyzer/Core/BugReporterVisitors.cpp @@ -14,6 +14,7 @@ #include "clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h" #include "clang/AST/Expr.h" #include "clang/AST/ExprObjC.h" +#include "clang/Frontend/SuppressDiagConsumer.h" #include "clang/Analysis/CFGStmtMap.h" #include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h" #include "clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h" @@ -1552,6 +1553,59 @@ return event; } +static bool AnalyzerIgnoreMatches(const std::vector &Ignores, + StringRef BR) { + // Empty ignore-list => ignore all. + // A bug report does not have associated tag => ignore. + if (Ignores.empty() || BR.empty()) + return true; + for (std::vector::const_iterator it = Ignores.begin(); + it != Ignores.end(); ++ it) { + // BR will have the specific string while Ignores might have a part of it. + if (BR.startswith(*it)) + return true; + } + return false; +} + +// Suppress the annotations from the comments in the source file. +bool LikelyFalsePositiveSuppressionBRVisitor:: +handleUserSuppressions(const IgnoredReports_t &IgnoredReports, BugReport &BR, + SourceManager &SM) { + bool changed = false; + StringRef BRString = BR.getDescription(); + + // If '[' ']' werent found then construct an empty string, + // which will cause this bug to be ignored. + size_t b_it = StringRef::npos, e_it = StringRef::npos; + b_it = BRString.find_first_of('['); + if (b_it != StringRef::npos) + e_it = BRString.find_first_of(']', b_it); + + if (e_it != StringRef::npos) + ++b_it; // skip the '[' + else + b_it = e_it = 0; // To create an empty BRTag + + if (b_it > e_it) + return changed; + StringRef BRTag(BRString.data()+b_it, e_it - b_it); + if (std::find_if(BRTag.begin(), BRTag.end(), isspace) != BRTag.end()) + return changed; + FullSourceLoc Loc = BR.getLocation(SM).asLocation(); + unsigned l = SM.getSpellingLineNumber(Loc); + for (IgnoredReports_t::const_iterator b = IgnoredReports.begin(); + b != IgnoredReports.end(); ++b) { + // If inside the source range ignore. + unsigned m = SM.getSpellingLineNumber(b->first); + if (l == m && AnalyzerIgnoreMatches(b->second, BRTag)) { + BR.markInvalid(getTag(), NULL); + changed = true; + } + } + return changed; +} + std::unique_ptr LikelyFalsePositiveSuppressionBRVisitor::getEndPath(BugReporterContext &BRC, const ExplodedNode *N, @@ -1636,6 +1690,10 @@ return nullptr; } } + + UserSuppressions *AC = BRC.getBugReporter().getUserSuppressions(); + const IgnoredReports_t &IgnoredReports = AC->getIgnoredReports(); + handleUserSuppressions(IgnoredReports, BR, SM); return nullptr; } Index: lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp =================================================================== --- lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp +++ lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp @@ -156,6 +156,7 @@ AnalyzerOptionsRef Opts; ArrayRef Plugins; CodeInjector *Injector; + UserSuppressions *AnalyzerSuppressionsCons; /// \brief Stores the declarations from the local translation unit. /// Note, we pre-compute the local declarations at parse time as an @@ -182,10 +183,11 @@ AnalysisConsumer(const Preprocessor &pp, const std::string &outdir, AnalyzerOptionsRef opts, ArrayRef plugins, - CodeInjector *injector) + CodeInjector *injector, + UserSuppressions *AC) : RecVisitorMode(0), RecVisitorBR(nullptr), Ctx(nullptr), PP(pp), OutDir(outdir), Opts(std::move(opts)), Plugins(plugins), - Injector(injector) { + Injector(injector), AnalyzerSuppressionsCons(AC) { DigestAnalyzerOptions(); if (Opts->PrintStats) { llvm::EnableStatistics(); @@ -277,7 +279,8 @@ Mgr = llvm::make_unique( *Ctx, PP.getDiagnostics(), PP.getLangOpts(), PathConsumers, - CreateStoreMgr, CreateConstraintMgr, checkerMgr.get(), *Opts, Injector); + CreateStoreMgr, CreateConstraintMgr, checkerMgr.get(), + AnalyzerSuppressionsCons, *Opts, Injector); } /// \brief Store the top level decls in the set to be processed later on. @@ -748,7 +751,8 @@ return llvm::make_unique( CI.getPreprocessor(), CI.getFrontendOpts().OutputFile, analyzerOpts, CI.getFrontendOpts().Plugins, - hasModelPath ? new ModelInjector(CI) : nullptr); + hasModelPath ? new ModelInjector(CI) : nullptr, + CI.getSuppressDiagConsumer()->getUserSuppressions()); } //===----------------------------------------------------------------------===// Index: test/Analysis/MismatchedDeallocator-path-notes.cpp =================================================================== --- test/Analysis/MismatchedDeallocator-path-notes.cpp +++ test/Analysis/MismatchedDeallocator-path-notes.cpp @@ -281,12 +281,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' +// CHECK-NEXT: Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' [unix.MismatchedDeallocator] // CHECK-NEXT: message -// CHECK-NEXT: Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' +// CHECK-NEXT: Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' [unix.MismatchedDeallocator] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionMemory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' +// CHECK-NEXT: descriptionMemory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' [unix.MismatchedDeallocator] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeBad deallocator // CHECK-NEXT: check_nameunix.MismatchedDeallocator Index: test/Analysis/NewDelete-path-notes.cpp =================================================================== --- test/Analysis/NewDelete-path-notes.cpp +++ test/Analysis/NewDelete-path-notes.cpp @@ -251,12 +251,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Attempt to free released memory +// CHECK-NEXT: Attempt to free released memory [cplusplus.NewDelete] // CHECK-NEXT: message -// CHECK-NEXT: Attempt to free released memory +// CHECK-NEXT: Attempt to free released memory [cplusplus.NewDelete] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionAttempt to free released memory +// CHECK-NEXT: descriptionAttempt to free released memory [cplusplus.NewDelete] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeDouble free // CHECK-NEXT: check_namecplusplus.NewDelete @@ -469,12 +469,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Attempt to free released memory +// CHECK-NEXT: Attempt to free released memory [cplusplus.NewDelete] // CHECK-NEXT: message -// CHECK-NEXT: Attempt to free released memory +// CHECK-NEXT: Attempt to free released memory [cplusplus.NewDelete] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionAttempt to free released memory +// CHECK-NEXT: descriptionAttempt to free released memory [cplusplus.NewDelete] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeDouble free // CHECK-NEXT: check_namecplusplus.NewDelete Index: test/Analysis/analyzer-ignore.cpp =================================================================== --- /dev/null +++ test/Analysis/analyzer-ignore.cpp @@ -0,0 +1,140 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=core %s -x c++ 2>&1 | FileCheck %s + +// CHECK-NOT: analyzer-ignore.cpp:[[@LINE+5]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +int foo1() +{ + int b = 5; + int c = 0; + int tx = b/c; // clang_sa_ignore [core.DivideZero ] + return tx; +} + +// CHECK-NOT: analyzer-ignore.cpp:[[@LINE+5]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +int foo2() +{ + int b = 5; + int c = 0; + int tx = b/c; // clang_sa_ignore [ core.DivideZero, whatever ]. Note testing... + return tx; +} + + +// CHECK-NOT: analyzer-ignore.cpp:[[@LINE+5]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +int foo3() +{ + int b = 5; + int c = 0; + int tx = b/c; // clang_sa_ignore [ core.DivideZero ]. Note testing... + return tx; +} + + +// CHECK-NOT: analyzer-ignore.cpp:[[@LINE+5]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +int foo4() +{ + int b = 5; + int c = 0; + int tx = b/c; // clang_sa_ignore [ core. ]. Note testing... + return tx; +} + +// CHECK-NOT: analyzer-ignore.cpp:[[@LINE+5]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +int foo5() +{ + int b = 5; + int c = 0; + int tx = b/c; // clang_sa_ignore [ core ]. Note testing... + return tx; +} + +// CHECK-NOT: analyzer-ignore.cpp:[[@LINE+5]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +int foo6() +{ + int b = 5; + int c = 0; + int tx = b/c; // clang_sa_ignore [ core, ]. Note testing... + return tx; +} + +// CHECK-NOT: warning: +// CHECK: analyzer-ignore.cpp:[[@LINE+5]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +int foo7() +{ + int b = 5; + int c = 0; + int tx = b/c; // clang_sa_ignore [ core . ]. Note testing... + return tx; +} + +// CHECK-NOT: warning: +// CHECK: analyzer-ignore.cpp:[[@LINE+5]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +int foo8() +{ + int b = 5; + int c = 0; + int tx = b/c; // clang_sa_ignore + return tx; +} + +// CHECK-NOT: warning: +// CHECK: analyzer-ignore.cpp:[[@LINE+5]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +int foo9() +{ + int b = 5; + int c = 0; + int tx = b/c; // clang_sa_ignore [ asd kf jh sad ]. Note testing... + return tx; +} + +// CHECK-NOT: warning: +// CHECK: analyzer-ignore.cpp:[[@LINE+5]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +int foo10() +{ + int b = 5; + int c = 0; + int tx = b/c; // clang_sa_ignore [ asd fkjgifm ]. Note testing... + return tx; +} + +// CHECK-NOT: warning: +// CHECK: analyzer-ignore.cpp:[[@LINE+5]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +int foo11() +{ + int b = 5; + int c = 0; + int tx = b/c; // clang_sa_ignore [asdk,feojff ]. Note testing... + return tx; +} + +// CHECK-NOT: warning: +// CHECK: analyzer-ignore.cpp:[[@LINE+5]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +int foo12() +{ + int b = 5; + int c = 0; + int tx = b/c; // clang_sa_ignore [askjdlaksjd ]. Note testing... + return tx; +} + +// CHECK-NOT: warning: +// CHECK: analyzer-ignore.cpp:[[@LINE+5]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +int foo13() +{ + int b = 5; + int c = 0; + int tx = b/c; // clang_sa_ignore [ asdkfgsad ]. Note testing... + return tx; +} + +// CHECK-NOT: warning: +// CHECK: analyzer-ignore.cpp:[[@LINE+8]]:{{[0-9]+}}: clang_sa_warning: Division by zero [core.DivideZero] +// CHECK-NOT: analyzer-ignore.cpp:[[@LINE+6]]:{{[0-9]+}}: clang_sa_warning: Result of 'malloc' is converted to a pointer of type 'unsigned int', which is incompatible with sizeof operand type 'int' [unix.MallocSizeof] +void* malloc (unsigned int size); +int foo14() +{ + int b = 5; + int c = 0; + unsigned int *p = (unsigned int*)malloc(sizeof(int)*100); // clang_sa_ignore [unix.MallocSizeof] + int tx = b/c; // clang_sa_ignore [askjdlaksjd ]. Note testing... + return tx; +} Index: test/Analysis/analyzer-warning.c =================================================================== --- /dev/null +++ test/Analysis/analyzer-warning.c @@ -0,0 +1,7 @@ +// RUN: %clang --analyze %s 2>&1 | FileCheck %s +// CHECK: clang_sa_warning: Address of stack memory associated with local variable 't0' returned to caller +char* foo() +{ + char t0[] = "012345"; + return t0; +} Index: test/Analysis/bug_hash_test.cpp =================================================================== --- test/Analysis/bug_hash_test.cpp +++ test/Analysis/bug_hash_test.cpp @@ -122,12 +122,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$int function(int)$10$return5;$debug +// CHECK-NEXT: debug.DumpBugHash$int function(int)$10$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$int function(int)$10$return5;$debug +// CHECK-NEXT: debug.DumpBugHash$int function(int)$10$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$int function(int)$10$return5;$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$int function(int)$10$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -205,12 +205,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$int (anonymous namespace)::variadicParam(int, ...)$10$return5;$debug +// CHECK-NEXT: debug.DumpBugHash$int (anonymous namespace)::variadicParam(int, ...)$10$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$int (anonymous namespace)::variadicParam(int, ...)$10$return5;$debug +// CHECK-NEXT: debug.DumpBugHash$int (anonymous namespace)::variadicParam(int, ...)$10$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$int (anonymous namespace)::variadicParam(int, ...)$10$return5;$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$int (anonymous namespace)::variadicParam(int, ...)$10$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -288,12 +288,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$int f()$28$constexprintf(){return5;}$debug +// CHECK-NEXT: debug.DumpBugHash$int f()$28$constexprintf(){return5;}$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$int f()$28$constexprintf(){return5;}$debug +// CHECK-NEXT: debug.DumpBugHash$int f()$28$constexprintf(){return5;}$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$int f()$28$constexprintf(){return5;}$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$int f()$28$constexprintf(){return5;}$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -337,12 +337,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$16$X():priv(5){priv=0;}$debug +// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$16$X():priv(5){priv=0;}$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$16$X():priv(5){priv=0;}$debug +// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$16$X():priv(5){priv=0;}$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$AA::X::X()$16$X():priv(5){priv=0;}$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$AA::X::X()$16$X():priv(5){priv=0;}$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -418,12 +418,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$21$X():priv(5){priv=0;}$debug +// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$21$X():priv(5){priv=0;}$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$21$X():priv(5){priv=0;}$debug +// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$21$X():priv(5){priv=0;}$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$AA::X::X()$21$X():priv(5){priv=0;}$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$AA::X::X()$21$X():priv(5){priv=0;}$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -533,12 +533,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$21$X():priv(5){priv=0;}$debug +// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$21$X():priv(5){priv=0;}$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$21$X():priv(5){priv=0;}$debug +// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$21$X():priv(5){priv=0;}$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$AA::X::X()$21$X():priv(5){priv=0;}$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$AA::X::X()$21$X():priv(5){priv=0;}$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -648,12 +648,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$28$X():priv(5){priv=0;}$debug +// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$28$X():priv(5){priv=0;}$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$28$X():priv(5){priv=0;}$debug +// CHECK-NEXT: debug.DumpBugHash$AA::X::X()$28$X():priv(5){priv=0;}$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$AA::X::X()$28$X():priv(5){priv=0;}$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$AA::X::X()$28$X():priv(5){priv=0;}$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -729,12 +729,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$int AA::X::static_method()$14$return5;$debug +// CHECK-NEXT: debug.DumpBugHash$int AA::X::static_method()$14$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$int AA::X::static_method()$14$return5;$debug +// CHECK-NEXT: debug.DumpBugHash$int AA::X::static_method()$14$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$int AA::X::static_method()$14$return5;$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$int AA::X::static_method()$14$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -812,12 +812,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$int AA::X::method() &&$14$return5;$debug +// CHECK-NEXT: debug.DumpBugHash$int AA::X::method() &&$14$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$int AA::X::method() &&$14$return5;$debug +// CHECK-NEXT: debug.DumpBugHash$int AA::X::method() &&$14$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$int AA::X::method() &&$14$return5;$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$int AA::X::method() &&$14$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -895,12 +895,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$class AA::X & AA::X::operator=(int)$14$return*this;$debug +// CHECK-NEXT: debug.DumpBugHash$class AA::X & AA::X::operator=(int)$14$return*this;$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$class AA::X & AA::X::operator=(int)$14$return*this;$debug +// CHECK-NEXT: debug.DumpBugHash$class AA::X & AA::X::operator=(int)$14$return*this;$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$class AA::X & AA::X::operator=(int)$14$return*this;$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$class AA::X & AA::X::operator=(int)$14$return*this;$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -978,12 +978,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$AA::X::operator int()$14$return0;$debug +// CHECK-NEXT: debug.DumpBugHash$AA::X::operator int()$14$return0;$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$AA::X::operator int()$14$return0;$debug +// CHECK-NEXT: debug.DumpBugHash$AA::X::operator int()$14$return0;$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$AA::X::operator int()$14$return0;$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$AA::X::operator int()$14$return0;$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -1059,12 +1059,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$AA::X::operator float()$14$return0;$debug +// CHECK-NEXT: debug.DumpBugHash$AA::X::operator float()$14$return0;$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$AA::X::operator float()$14$return0;$debug +// CHECK-NEXT: debug.DumpBugHash$AA::X::operator float()$14$return0;$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$AA::X::operator float()$14$return0;$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$AA::X::operator float()$14$return0;$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -1140,12 +1140,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$int AA::X::OutOfLine()$10$return5;$debug +// CHECK-NEXT: debug.DumpBugHash$int AA::X::OutOfLine()$10$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$int AA::X::OutOfLine()$10$return5;$debug +// CHECK-NEXT: debug.DumpBugHash$int AA::X::OutOfLine()$10$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$int AA::X::OutOfLine()$10$return5;$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$int AA::X::OutOfLine()$10$return5;$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -1189,12 +1189,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$void testLambda()$3$[](){$debug +// CHECK-NEXT: debug.DumpBugHash$void testLambda()$3$[](){$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$void testLambda()$3$[](){$debug +// CHECK-NEXT: debug.DumpBugHash$void testLambda()$3$[](){$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$void testLambda()$3$[](){$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$void testLambda()$3$[](){$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -1238,12 +1238,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$void testLambda()$3$[](){$debug +// CHECK-NEXT: debug.DumpBugHash$void testLambda()$3$[](){$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$void testLambda()$3$[](){$debug +// CHECK-NEXT: debug.DumpBugHash$void testLambda()$3$[](){$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$void testLambda()$3$[](){$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$void testLambda()$3$[](){$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -1321,12 +1321,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$void testLambda()$4$}();$debug +// CHECK-NEXT: debug.DumpBugHash$void testLambda()$4$}();$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$void testLambda()$4$}();$debug +// CHECK-NEXT: debug.DumpBugHash$void testLambda()$4$}();$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$void testLambda()$4$}();$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$void testLambda()$4$}();$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash Index: test/Analysis/bug_hash_test.m =================================================================== --- test/Analysis/bug_hash_test.m +++ test/Analysis/bug_hash_test.m @@ -91,12 +91,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$NSObject::method:param:$3$arg=5;$debug +// CHECK-NEXT: debug.DumpBugHash$NSObject::method:param:$3$arg=5;$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$NSObject::method:param:$3$arg=5;$debug +// CHECK-NEXT: debug.DumpBugHash$NSObject::method:param:$3$arg=5;$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$NSObject::method:param:$3$arg=5;$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$NSObject::method:param:$3$arg=5;$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -174,12 +174,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$NSObject::method:param:$9$arg=5;$debug +// CHECK-NEXT: debug.DumpBugHash$NSObject::method:param:$9$arg=5;$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$NSObject::method:param:$9$arg=5;$debug +// CHECK-NEXT: debug.DumpBugHash$NSObject::method:param:$9$arg=5;$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$NSObject::method:param:$9$arg=5;$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$NSObject::method:param:$9$arg=5;$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -223,12 +223,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$3$intx=5;$debug +// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$3$intx=5;$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$3$intx=5;$debug +// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$3$intx=5;$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$void testBlocks()$3$intx=5;$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$void testBlocks()$3$intx=5;$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -306,12 +306,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$11$intx=5;$debug +// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$11$intx=5;$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$11$intx=5;$debug +// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$11$intx=5;$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$void testBlocks()$11$intx=5;$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$void testBlocks()$11$intx=5;$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -389,12 +389,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$3$^{inty=1+x;}();$debug +// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$3$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$3$^{inty=1+x;}();$debug +// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$3$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$void testBlocks()$3$^{inty=1+x;}();$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$void testBlocks()$3$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -472,12 +472,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$3$^{inty=1+x;}();$debug +// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$3$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$3$^{inty=1+x;}();$debug +// CHECK-NEXT: debug.DumpBugHash$void testBlocks()$3$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$void testBlocks()$3$^{inty=1+x;}();$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$void testBlocks()$3$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -632,12 +632,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$$6$^{inty=1+x;}();$debug +// CHECK-NEXT: debug.DumpBugHash$$6$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$$6$^{inty=1+x;}();$debug +// CHECK-NEXT: debug.DumpBugHash$$6$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$$6$^{inty=1+x;}();$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$$6$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -823,12 +823,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$$14$^{inty=1+x;}();$debug +// CHECK-NEXT: debug.DumpBugHash$$14$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$$14$^{inty=1+x;}();$debug +// CHECK-NEXT: debug.DumpBugHash$$14$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$$14$^{inty=1+x;}();$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$$14$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -980,12 +980,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$$14$^{inty=1+x;}();$debug +// CHECK-NEXT: debug.DumpBugHash$$14$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$$14$^{inty=1+x;}();$debug +// CHECK-NEXT: debug.DumpBugHash$$14$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$$14$^{inty=1+x;}();$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$$14$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash @@ -1171,12 +1171,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: debug.DumpBugHash$$18$^{inty=1+x;}();$debug +// CHECK-NEXT: debug.DumpBugHash$$18$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: message -// CHECK-NEXT: debug.DumpBugHash$$18$^{inty=1+x;}();$debug +// CHECK-NEXT: debug.DumpBugHash$$18$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptiondebug.DumpBugHash$$18$^{inty=1+x;}();$debug +// CHECK-NEXT: descriptiondebug.DumpBugHash$$18$^{inty=1+x;}();$debug [debug.DumpBugHash] // CHECK-NEXT: categorydebug // CHECK-NEXT: typeDump hash components // CHECK-NEXT: check_namedebug.DumpBugHash Index: test/Analysis/conditional-path-notes.c =================================================================== --- test/Analysis/conditional-path-notes.c +++ test/Analysis/conditional-path-notes.c @@ -305,12 +305,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'x') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'x') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -451,12 +451,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -597,12 +597,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -743,12 +743,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -957,12 +957,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'x') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'x') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1103,12 +1103,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1283,12 +1283,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1468,12 +1468,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1585,12 +1585,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference Index: test/Analysis/cxx-for-range.cpp =================================================================== --- test/Analysis/cxx-for-range.cpp +++ test/Analysis/cxx-for-range.cpp @@ -588,12 +588,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -816,12 +816,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1093,12 +1093,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1244,7 +1244,7 @@ // CHECK-NEXT: Dereference of null pointer // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1516,12 +1516,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1667,7 +1667,7 @@ // CHECK-NEXT: Dereference of null pointer // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference Index: test/Analysis/diagnostics/deref-track-symbolic-region.c =================================================================== --- test/Analysis/diagnostics/deref-track-symbolic-region.c +++ test/Analysis/diagnostics/deref-track-symbolic-region.c @@ -297,12 +297,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'x') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'x') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'x') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'x') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'x') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'x') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -637,12 +637,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference Index: test/Analysis/diagnostics/report-issues-within-main-file.cpp =================================================================== --- test/Analysis/diagnostics/report-issues-within-main-file.cpp +++ test/Analysis/diagnostics/report-issues-within-main-file.cpp @@ -241,12 +241,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero @@ -507,12 +507,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth2 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero @@ -696,12 +696,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero @@ -939,12 +939,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' +// CHECK-NEXT: Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' [unix.MismatchedDeallocator] // CHECK-NEXT: message -// CHECK-NEXT: Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' +// CHECK-NEXT: Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' [unix.MismatchedDeallocator] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionMemory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' (within a call to '~auto_ptr') +// CHECK-NEXT: descriptionMemory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' [unix.MismatchedDeallocator] (within a call to '~auto_ptr') // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeBad deallocator // CHECK-NEXT: check_nameunix.MismatchedDeallocator @@ -1274,12 +1274,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth2 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero (within a call to 'cause_div_by_zero_in_header') +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] (within a call to 'cause_div_by_zero_in_header') // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero @@ -1497,12 +1497,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero @@ -1754,12 +1754,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero Index: test/Analysis/diagnostics/text-diagnostics.c =================================================================== --- test/Analysis/diagnostics/text-diagnostics.c +++ test/Analysis/diagnostics/text-diagnostics.c @@ -4,7 +4,7 @@ int *p = 0; *p = 1; - // CHECK-LABEL: text-diagnostics.c:{{.*}}:6: warning: Dereference of null pointer (loaded from variable 'p') + // CHECK-LABEL: text-diagnostics.c:{{.*}}:6: clang_sa_warning: Dereference of null pointer (loaded from variable 'p') // CHECK-NEXT: text-diagnostics.c:[[@LINE-4]]:3: note: 'p' initialized to a null pointer value // CHECK-NEXT: text-diagnostics.c:[[@LINE-4]]:6: note: Dereference of null pointer (loaded from variable 'p') } @@ -14,7 +14,7 @@ return; *q = 1; - // CHECK-LABEL: text-diagnostics.c:{{.*}}:6: warning: Dereference of null pointer (loaded from variable 'q') + // CHECK-LABEL: text-diagnostics.c:{{.*}}:6: clang_sa_warning: Dereference of null pointer (loaded from variable 'q') // CHECK-NEXT: text-diagnostics.c:[[@LINE-5]]:7: note: Assuming 'q' is null // CHECK-NEXT: text-diagnostics.c:[[@LINE-6]]:3: note: Taking false branch // CHECK-NEXT: text-diagnostics.c:[[@LINE-5]]:6: note: Dereference of null pointer (loaded from variable 'q') Index: test/Analysis/diagnostics/undef-value-caller.c =================================================================== --- test/Analysis/diagnostics/undef-value-caller.c +++ test/Analysis/diagnostics/undef-value-caller.c @@ -138,12 +138,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Undefined or garbage value returned to caller +// CHECK-NEXT: Undefined or garbage value returned to caller [core.uninitialized.UndefReturn] // CHECK-NEXT: message -// CHECK-NEXT: Undefined or garbage value returned to caller +// CHECK-NEXT: Undefined or garbage value returned to caller [core.uninitialized.UndefReturn] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionUndefined or garbage value returned to caller +// CHECK-NEXT: descriptionUndefined or garbage value returned to caller [core.uninitialized.UndefReturn] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeGarbage return value // CHECK-NEXT: check_namecore.uninitialized.UndefReturn Index: test/Analysis/diagnostics/undef-value-param.c =================================================================== --- test/Analysis/diagnostics/undef-value-param.c +++ test/Analysis/diagnostics/undef-value-param.c @@ -427,12 +427,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: The left operand of '+' is a garbage value +// CHECK-NEXT: The left operand of '+' is a garbage value [core.UndefinedBinaryOperatorResult] // CHECK-NEXT: message -// CHECK-NEXT: The left operand of '+' is a garbage value +// CHECK-NEXT: The left operand of '+' is a garbage value [core.UndefinedBinaryOperatorResult] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionThe left operand of '+' is a garbage value +// CHECK-NEXT: descriptionThe left operand of '+' is a garbage value [core.UndefinedBinaryOperatorResult] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeResult of operation is garbage or undefined // CHECK-NEXT: check_namecore.UndefinedBinaryOperatorResult @@ -747,12 +747,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: The right operand of '*' is a garbage value +// CHECK-NEXT: The right operand of '*' is a garbage value [core.UndefinedBinaryOperatorResult] // CHECK-NEXT: message -// CHECK-NEXT: The right operand of '*' is a garbage value +// CHECK-NEXT: The right operand of '*' is a garbage value [core.UndefinedBinaryOperatorResult] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionThe right operand of '*' is a garbage value +// CHECK-NEXT: descriptionThe right operand of '*' is a garbage value [core.UndefinedBinaryOperatorResult] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeResult of operation is garbage or undefined // CHECK-NEXT: check_namecore.UndefinedBinaryOperatorResult @@ -1164,12 +1164,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'f1') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'f1') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'f1') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'f1') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'f1') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'f1') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference Index: test/Analysis/diagnostics/undef-value-param.m =================================================================== --- test/Analysis/diagnostics/undef-value-param.m +++ test/Analysis/diagnostics/undef-value-param.m @@ -535,12 +535,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Null pointer argument in call to CFRelease +// CHECK-NEXT: Null pointer argument in call to CFRelease [osx.coreFoundation.CFRetainRelease] // CHECK-NEXT: message -// CHECK-NEXT: Null pointer argument in call to CFRelease +// CHECK-NEXT: Null pointer argument in call to CFRelease [osx.coreFoundation.CFRetainRelease] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionNull pointer argument in call to CFRelease +// CHECK-NEXT: descriptionNull pointer argument in call to CFRelease [osx.coreFoundation.CFRetainRelease] // CHECK-NEXT: categoryAPI Misuse (Apple) // CHECK-NEXT: typenull passed to CF memory management function // CHECK-NEXT: check_nameosx.coreFoundation.CFRetainRelease @@ -918,12 +918,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Function call argument is an uninitialized value +// CHECK-NEXT: Function call argument is an uninitialized value [core.CallAndMessage] // CHECK-NEXT: message -// CHECK-NEXT: Function call argument is an uninitialized value +// CHECK-NEXT: Function call argument is an uninitialized value [core.CallAndMessage] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionFunction call argument is an uninitialized value +// CHECK-NEXT: descriptionFunction call argument is an uninitialized value [core.CallAndMessage] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeUninitialized argument value // CHECK-NEXT: check_namecore.CallAndMessage Index: test/Analysis/edges-new.mm =================================================================== --- test/Analysis/edges-new.mm +++ test/Analysis/edges-new.mm @@ -424,7 +424,7 @@ } // The original source for the above Radar contains another problem: -// if the end-of-path node is an implicit statement, it may not have a valid +// if the end-of-path node is an implicit statement, it may not have a valid // source location. - (void)test2 { if (bar_cond_assign()) { @@ -717,12 +717,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -897,12 +897,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1140,12 +1140,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'q') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'q') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'q') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'q') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'q') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'q') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1320,12 +1320,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1563,12 +1563,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1743,12 +1743,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -2083,12 +2083,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -2355,12 +2355,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -2622,7 +2622,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'value' +// CHECK-NEXT: descriptionPotential leak of an object stored into 'value' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -2797,12 +2797,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -2846,12 +2846,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Value stored to 'x' is never read +// CHECK-NEXT: Value stored to 'x' is never read [deadcode.DeadStores] // CHECK-NEXT: message -// CHECK-NEXT: Value stored to 'x' is never read +// CHECK-NEXT: Value stored to 'x' is never read [deadcode.DeadStores] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionValue stored to 'x' is never read +// CHECK-NEXT: descriptionValue stored to 'x' is never read [deadcode.DeadStores] // CHECK-NEXT: categoryDead store // CHECK-NEXT: typeDead increment // CHECK-NEXT: check_namedeadcode.DeadStores @@ -3055,12 +3055,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage +// CHECK-NEXT: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [core.uninitialized.Assign] // CHECK-NEXT: message -// CHECK-NEXT: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage +// CHECK-NEXT: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [core.uninitialized.Assign] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionThe left expression of the compound assignment is an uninitialized value. The computed value will also be garbage +// CHECK-NEXT: descriptionThe left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [core.uninitialized.Assign] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeAssigned value is garbage or undefined // CHECK-NEXT: check_namecore.uninitialized.Assign @@ -3492,12 +3492,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -3798,12 +3798,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -4070,12 +4070,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -4575,12 +4575,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -5075,12 +5075,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -5643,12 +5643,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -6211,12 +6211,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -6658,12 +6658,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -6906,12 +6906,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -7154,12 +7154,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -7436,12 +7436,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -7718,12 +7718,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -8136,12 +8136,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -8622,12 +8622,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -9035,12 +9035,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -9312,12 +9312,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -9521,12 +9521,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -9696,12 +9696,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -10094,12 +10094,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -10317,12 +10317,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero @@ -10463,12 +10463,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from ivar 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from ivar 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from ivar 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from ivar 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from ivar 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from ivar 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -10575,12 +10575,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Null pointer passed as an argument to a 'nonnull' parameter +// CHECK-NEXT: Null pointer passed as an argument to a 'nonnull' parameter [core.NonNullParamChecker] // CHECK-NEXT: message -// CHECK-NEXT: Null pointer passed as an argument to a 'nonnull' parameter +// CHECK-NEXT: Null pointer passed as an argument to a 'nonnull' parameter [core.NonNullParamChecker] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionNull pointer passed as an argument to a 'nonnull' parameter +// CHECK-NEXT: descriptionNull pointer passed as an argument to a 'nonnull' parameter [core.NonNullParamChecker] // CHECK-NEXT: categoryAPI // CHECK-NEXT: typeArgument with 'nonnull' attribute passed null // CHECK-NEXT: check_namecore.NonNullParamChecker @@ -10789,12 +10789,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -10969,12 +10969,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -11030,12 +11030,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Value stored to 'foo' during its initialization is never read +// CHECK-NEXT: Value stored to 'foo' during its initialization is never read [deadcode.DeadStores] // CHECK-NEXT: message -// CHECK-NEXT: Value stored to 'foo' during its initialization is never read +// CHECK-NEXT: Value stored to 'foo' during its initialization is never read [deadcode.DeadStores] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionValue stored to 'foo' during its initialization is never read +// CHECK-NEXT: descriptionValue stored to 'foo' during its initialization is never read [deadcode.DeadStores] // CHECK-NEXT: categoryDead store // CHECK-NEXT: typeDead initialization // CHECK-NEXT: check_namedeadcode.DeadStores @@ -11166,7 +11166,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'foo' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'foo' +// CHECK-NEXT: descriptionPotential leak of an object stored into 'foo' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -11341,12 +11341,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -11788,12 +11788,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -12201,12 +12201,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -12677,12 +12677,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -13934,12 +13934,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -15254,12 +15254,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -16671,12 +16671,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -18185,12 +18185,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -18471,12 +18471,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'buf' +// CHECK-NEXT: Potential leak of memory pointed to by 'buf' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'buf' +// CHECK-NEXT: Potential leak of memory pointed to by 'buf' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'buf' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'buf' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -18713,12 +18713,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' +// CHECK-NEXT: Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' [unix.MismatchedDeallocator] // CHECK-NEXT: message -// CHECK-NEXT: Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' +// CHECK-NEXT: Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' [unix.MismatchedDeallocator] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionMemory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' +// CHECK-NEXT: descriptionMemory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete' [unix.MismatchedDeallocator] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeBad deallocator // CHECK-NEXT: check_nameunix.MismatchedDeallocator @@ -19433,7 +19433,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'foo' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'foo' +// CHECK-NEXT: descriptionPotential leak of an object stored into 'foo' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -19574,12 +19574,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -19759,12 +19759,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference Index: test/Analysis/explain-svals.cpp =================================================================== --- test/Analysis/explain-svals.cpp +++ test/Analysis/explain-svals.cpp @@ -32,51 +32,51 @@ // rather than a substring. void test_1(int param, void *ptr) { - clang_analyzer_explain(&glob); // expected-warning-re{{{{^pointer to global variable 'glob'$}}}} - clang_analyzer_explain(param); // expected-warning-re{{{{^argument 'param'$}}}} - clang_analyzer_explain(ptr); // expected-warning-re{{{{^argument 'ptr'$}}}} + clang_analyzer_explain(&glob); // expected-warning-re{{{{^pointer to global variable 'glob' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(param); // expected-warning-re{{{{^argument 'param' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(ptr); // expected-warning-re{{{{^argument 'ptr' \[debug.ExprInspection\]$}}}} if (param == 42) - clang_analyzer_explain(param); // expected-warning-re{{{{^signed 32-bit integer '42'$}}}} + clang_analyzer_explain(param); // expected-warning-re{{{{^signed 32-bit integer '42' \[debug.ExprInspection\]$}}}} } void test_2(char *ptr, int ext) { - clang_analyzer_explain((void *) "asdf"); // expected-warning-re{{{{^pointer to element of type 'char' with index 0 of string literal "asdf"$}}}} - clang_analyzer_explain(strlen(ptr)); // expected-warning-re{{{{^metadata of type 'unsigned long' tied to pointee of argument 'ptr'$}}}} - clang_analyzer_explain(conjure()); // expected-warning-re{{{{^symbol of type 'int' conjured at statement 'conjure\(\)'$}}}} - clang_analyzer_explain(glob); // expected-warning-re{{{{^value derived from \(symbol of type 'int' conjured at statement 'conjure\(\)'\) for global variable 'glob'$}}}} - clang_analyzer_explain(glob_ptr); // expected-warning-re{{{{^value derived from \(symbol of type 'int' conjured at statement 'conjure\(\)'\) for global variable 'glob_ptr'$}}}} - clang_analyzer_explain(clang_analyzer_getExtent(ptr)); // expected-warning-re{{{{^extent of pointee of argument 'ptr'$}}}} + clang_analyzer_explain((void *) "asdf"); // expected-warning-re{{{{^pointer to element of type 'char' with index 0 of string literal "asdf" \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(strlen(ptr)); // expected-warning-re{{{{^metadata of type 'unsigned long' tied to pointee of argument 'ptr' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(conjure()); // expected-warning-re{{{{^symbol of type 'int' conjured at statement 'conjure\(\)' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(glob); // expected-warning-re{{{{^value derived from \(symbol of type 'int' conjured at statement 'conjure\(\)'\) for global variable 'glob' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(glob_ptr); // expected-warning-re{{{{^value derived from \(symbol of type 'int' conjured at statement 'conjure\(\)'\) for global variable 'glob_ptr' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(clang_analyzer_getExtent(ptr)); // expected-warning-re{{{{^extent of pointee of argument 'ptr' \[debug.ExprInspection\]$}}}} int *x = new int[ext]; - clang_analyzer_explain(x); // expected-warning-re{{{{^pointer to element of type 'int' with index 0 of pointee of symbol of type 'int \*' conjured at statement 'new int \[ext\]'$}}}} + clang_analyzer_explain(x); // expected-warning-re{{{{^pointer to element of type 'int' with index 0 of pointee of symbol of type 'int \*' conjured at statement 'new int \[ext\]' \[debug.ExprInspection\]$}}}} // Sic! What gets computed is the extent of the element-region. - clang_analyzer_explain(clang_analyzer_getExtent(x)); // expected-warning-re{{{{^signed 32-bit integer '4'$}}}} + clang_analyzer_explain(clang_analyzer_getExtent(x)); // expected-warning-re{{{{^signed 32-bit integer '4' \[debug.ExprInspection\]$}}}} delete[] x; } void test_3(S s) { - clang_analyzer_explain(&s); // expected-warning-re{{{{^pointer to parameter 's'$}}}} - clang_analyzer_explain(s.z); // expected-warning-re{{{{^initial value of field 'z' of parameter 's'$}}}} - clang_analyzer_explain(&s.s2[5].y[3]); // expected-warning-re{{{{^pointer to element of type 'int' with index 3 of field 'y' of base object 'S::S3' inside element of type 'struct S::S2' with index 5 of field 's2' of parameter 's'$}}}} + clang_analyzer_explain(&s); // expected-warning-re{{{{^pointer to parameter 's' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(s.z); // expected-warning-re{{{{^initial value of field 'z' of parameter 's' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(&s.s2[5].y[3]); // expected-warning-re{{{{^pointer to element of type 'int' with index 3 of field 'y' of base object 'S::S3' inside element of type 'struct S::S2' with index 5 of field 's2' of parameter 's' \[debug.ExprInspection\]$}}}} if (!s.s2[7].x) { - clang_analyzer_explain(s.s2[7].x); // expected-warning-re{{{{^concrete memory address '0'$}}}} + clang_analyzer_explain(s.s2[7].x); // expected-warning-re{{{{^concrete memory address '0' \[debug.ExprInspection\]$}}}} // FIXME: we need to be explaining '1' rather than '0' here; not explainer bug. - clang_analyzer_explain(s.s2[7].x + 1); // expected-warning-re{{{{^concrete memory address '0'$}}}} + clang_analyzer_explain(s.s2[7].x + 1); // expected-warning-re{{{{^concrete memory address '0' \[debug.ExprInspection\]$}}}} } } void test_4(int x, int y) { int z; static int stat; - clang_analyzer_explain(x + 1); // expected-warning-re{{{{^\(argument 'x'\) \+ 1$}}}} - clang_analyzer_explain(1 + y); // expected-warning-re{{{{^\(argument 'y'\) \+ 1$}}}} - clang_analyzer_explain(x + y); // expected-warning-re{{{{^unknown value$}}}} - clang_analyzer_explain(z); // expected-warning-re{{{{^undefined value$}}}} - clang_analyzer_explain(&z); // expected-warning-re{{{{^pointer to local variable 'z'$}}}} - clang_analyzer_explain(stat); // expected-warning-re{{{{^signed 32-bit integer '0'$}}}} - clang_analyzer_explain(&stat); // expected-warning-re{{{{^pointer to static local variable 'stat'$}}}} - clang_analyzer_explain(stat_glob); // expected-warning-re{{{{^initial value of global variable 'stat_glob'$}}}} - clang_analyzer_explain(&stat_glob); // expected-warning-re{{{{^pointer to global variable 'stat_glob'$}}}} - clang_analyzer_explain((int[]){1, 2, 3}); // expected-warning-re{{{{^pointer to element of type 'int' with index 0 of compound literal \(int \[3\]\)\{1, 2, 3\}$}}}} + clang_analyzer_explain(x + 1); // expected-warning-re{{{{^\(argument 'x'\) \+ 1 \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(1 + y); // expected-warning-re{{{{^\(argument 'y'\) \+ 1 \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(x + y); // expected-warning-re{{{{^unknown value \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(z); // expected-warning-re{{{{^undefined value \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(&z); // expected-warning-re{{{{^pointer to local variable 'z' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(stat); // expected-warning-re{{{{^signed 32-bit integer '0' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(&stat); // expected-warning-re{{{{^pointer to static local variable 'stat' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(stat_glob); // expected-warning-re{{{{^initial value of global variable 'stat_glob' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(&stat_glob); // expected-warning-re{{{{^pointer to global variable 'stat_glob' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain((int[]){1, 2, 3}); // expected-warning-re{{{{^pointer to element of type 'int' with index 0 of compound literal \(int \[3\]\)\{1, 2, 3\} \[debug.ExprInspection\]$}}}} } namespace { @@ -85,14 +85,14 @@ public: void test_5(int i) { - clang_analyzer_explain(this); // expected-warning-re{{{{^pointer to 'this' object$}}}} - clang_analyzer_explain(&x[i]); // expected-warning-re{{{{^pointer to element of type 'int' with index 'argument 'i'' of field 'x' of 'this' object$}}}} - clang_analyzer_explain(__builtin_alloca(i)); // expected-warning-re{{{{^pointer to region allocated by '__builtin_alloca\(i\)'$}}}} + clang_analyzer_explain(this); // expected-warning-re{{{{^pointer to 'this' object \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(&x[i]); // expected-warning-re{{{{^pointer to element of type 'int' with index 'argument 'i'' of field 'x' of 'this' object \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(__builtin_alloca(i)); // expected-warning-re{{{{^pointer to region allocated by '__builtin_alloca\(i\)' \[debug.ExprInspection\]$}}}} } }; } // end of anonymous namespace void test_6() { - clang_analyzer_explain(conjure_S()); // expected-warning-re{{{{^lazily frozen compound value of temporary object constructed at statement 'conjure_S\(\)'$}}}} - clang_analyzer_explain(conjure_S().z); // expected-warning-re{{{{^value derived from \(symbol of type 'struct S' conjured at statement 'conjure_S\(\)'\) for field 'z' of temporary object constructed at statement 'conjure_S\(\)'$}}}} + clang_analyzer_explain(conjure_S()); // expected-warning-re{{{{^lazily frozen compound value of temporary object constructed at statement 'conjure_S\(\)' \[debug.ExprInspection\]$}}}} + clang_analyzer_explain(conjure_S().z); // expected-warning-re{{{{^value derived from \(symbol of type 'struct S' conjured at statement 'conjure_S\(\)'\) for field 'z' of temporary object constructed at statement 'conjure_S\(\)' \[debug.ExprInspection\]$}}}} } Index: test/Analysis/generics.m =================================================================== --- test/Analysis/generics.m +++ test/Analysis/generics.m @@ -470,12 +470,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -582,12 +582,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -728,12 +728,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -980,12 +980,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSNumber *> *' to incompatible type 'NSArray<NSString *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSNumber *> *' to incompatible type 'NSArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSNumber *> *' to incompatible type 'NSArray<NSString *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSNumber *> *' to incompatible type 'NSArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSNumber *> *' to incompatible type 'NSArray<NSString *> *' +// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSNumber *> *' to incompatible type 'NSArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -1092,12 +1092,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -1238,12 +1238,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -1350,12 +1350,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -1496,12 +1496,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -1642,12 +1642,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -1754,12 +1754,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -1900,12 +1900,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -2080,12 +2080,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' +// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' +// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSString *' to incompatible type 'NSMutableString *' +// CHECK-NEXT: descriptionConversion from value of type 'NSString *' to incompatible type 'NSMutableString *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -2226,12 +2226,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -2338,12 +2338,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' +// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' +// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSString *' to incompatible type 'NSMutableString *' +// CHECK-NEXT: descriptionConversion from value of type 'NSString *' to incompatible type 'NSMutableString *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -2518,12 +2518,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -2630,12 +2630,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -2776,12 +2776,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -2888,12 +2888,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -3034,12 +3034,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -3180,12 +3180,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -3326,12 +3326,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' +// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -3472,12 +3472,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' +// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -3618,12 +3618,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -3827,12 +3827,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -3973,12 +3973,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -4119,12 +4119,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' +// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -4265,12 +4265,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' +// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -4474,12 +4474,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' +// CHECK-NEXT: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -4620,12 +4620,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' +// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: message -// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' +// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' +// CHECK-NEXT: descriptionObject has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: categoryType Error // CHECK-NEXT: typeDynamic and static type mismatch // CHECK-NEXT: check_namealpha.core.DynamicTypeChecker @@ -4766,12 +4766,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' +// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: message -// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' +// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' +// CHECK-NEXT: descriptionObject has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: categoryType Error // CHECK-NEXT: typeDynamic and static type mismatch // CHECK-NEXT: check_namealpha.core.DynamicTypeChecker @@ -4912,12 +4912,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' +// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: message -// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' +// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' +// CHECK-NEXT: descriptionObject has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: categoryType Error // CHECK-NEXT: typeDynamic and static type mismatch // CHECK-NEXT: check_namealpha.core.DynamicTypeChecker @@ -5058,12 +5058,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' +// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: message -// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' +// CHECK-NEXT: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' +// CHECK-NEXT: descriptionObject has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: categoryType Error // CHECK-NEXT: typeDynamic and static type mismatch // CHECK-NEXT: check_namealpha.core.DynamicTypeChecker @@ -5238,12 +5238,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' +// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' +// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSString *' to incompatible type 'NSMutableString *' +// CHECK-NEXT: descriptionConversion from value of type 'NSString *' to incompatible type 'NSMutableString *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -5384,12 +5384,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' +// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' +// CHECK-NEXT: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSString *' to incompatible type 'NSMutableString *' +// CHECK-NEXT: descriptionConversion from value of type 'NSString *' to incompatible type 'NSMutableString *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -5496,12 +5496,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -5642,12 +5642,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -5788,12 +5788,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -5934,12 +5934,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -6114,12 +6114,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -6294,12 +6294,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' +// CHECK-NEXT: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -6440,12 +6440,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object has a dynamic type 'NSArray<NSString *> *' which is incompatible with static type 'NSSet *' +// CHECK-NEXT: Object has a dynamic type 'NSArray<NSString *> *' which is incompatible with static type 'NSSet *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: message -// CHECK-NEXT: Object has a dynamic type 'NSArray<NSString *> *' which is incompatible with static type 'NSSet *' +// CHECK-NEXT: Object has a dynamic type 'NSArray<NSString *> *' which is incompatible with static type 'NSSet *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject has a dynamic type 'NSArray<NSString *> *' which is incompatible with static type 'NSSet *' +// CHECK-NEXT: descriptionObject has a dynamic type 'NSArray<NSString *> *' which is incompatible with static type 'NSSet *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: categoryType Error // CHECK-NEXT: typeDynamic and static type mismatch // CHECK-NEXT: check_namealpha.core.DynamicTypeChecker @@ -6620,12 +6620,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object has a dynamic type 'NSString *' which is incompatible with static type 'NSNumber *' +// CHECK-NEXT: Object has a dynamic type 'NSString *' which is incompatible with static type 'NSNumber *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: message -// CHECK-NEXT: Object has a dynamic type 'NSString *' which is incompatible with static type 'NSNumber *' +// CHECK-NEXT: Object has a dynamic type 'NSString *' which is incompatible with static type 'NSNumber *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject has a dynamic type 'NSString *' which is incompatible with static type 'NSNumber *' +// CHECK-NEXT: descriptionObject has a dynamic type 'NSString *' which is incompatible with static type 'NSNumber *' [alpha.core.DynamicTypeChecker] // CHECK-NEXT: categoryType Error // CHECK-NEXT: typeDynamic and static type mismatch // CHECK-NEXT: check_namealpha.core.DynamicTypeChecker @@ -6766,12 +6766,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'UnrelatedTypeGeneric<NSString *> *' to incompatible type 'NSArray<NSString *> *' +// CHECK-NEXT: Conversion from value of type 'UnrelatedTypeGeneric<NSString *> *' to incompatible type 'NSArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'UnrelatedTypeGeneric<NSString *> *' to incompatible type 'NSArray<NSString *> *' +// CHECK-NEXT: Conversion from value of type 'UnrelatedTypeGeneric<NSString *> *' to incompatible type 'NSArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'UnrelatedTypeGeneric<NSString *> *' to incompatible type 'NSArray<NSString *> *' +// CHECK-NEXT: descriptionConversion from value of type 'UnrelatedTypeGeneric<NSString *> *' to incompatible type 'NSArray<NSString *> *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation @@ -6878,12 +6878,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: message -// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' +// CHECK-NEXT: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' [core.DynamicTypePropagation] // CHECK-NEXT: categoryCore Foundation/Objective-C // CHECK-NEXT: typeGenerics // CHECK-NEXT: check_namecore.DynamicTypePropagation Index: test/Analysis/inline-plist.c =================================================================== --- test/Analysis/inline-plist.c +++ test/Analysis/inline-plist.c @@ -281,12 +281,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero @@ -504,12 +504,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -858,12 +858,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1081,12 +1081,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1456,12 +1456,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1708,12 +1708,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1960,12 +1960,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference Index: test/Analysis/inline-unique-reports.c =================================================================== --- test/Analysis/inline-unique-reports.c +++ test/Analysis/inline-unique-reports.c @@ -283,12 +283,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference Index: test/Analysis/inlining/eager-reclamation-path-notes.c =================================================================== --- test/Analysis/inlining/eager-reclamation-path-notes.c +++ test/Analysis/inlining/eager-reclamation-path-notes.c @@ -310,12 +310,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'ptr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'ptr') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'ptr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'ptr') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'ptr') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'ptr') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -770,12 +770,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth2 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'ptr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'ptr') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'ptr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'ptr') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'ptr') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'ptr') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference Index: test/Analysis/inlining/eager-reclamation-path-notes.cpp =================================================================== --- test/Analysis/inlining/eager-reclamation-path-notes.cpp +++ test/Analysis/inlining/eager-reclamation-path-notes.cpp @@ -364,12 +364,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCalled C++ object pointer is null +// CHECK-NEXT: descriptionCalled C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeCalled C++ object pointer is null // CHECK-NEXT: check_namecore.CallAndMessage Index: test/Analysis/inlining/path-notes.c =================================================================== --- test/Analysis/inlining/path-notes.c +++ test/Analysis/inlining/path-notes.c @@ -339,12 +339,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -519,12 +519,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -762,12 +762,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1005,12 +1005,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1320,12 +1320,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1635,12 +1635,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -2013,12 +2013,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -2391,12 +2391,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -2812,12 +2812,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -3064,12 +3064,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -3176,12 +3176,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -3356,12 +3356,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference Index: test/Analysis/inlining/path-notes.cpp =================================================================== --- test/Analysis/inlining/path-notes.cpp +++ test/Analysis/inlining/path-notes.cpp @@ -869,12 +869,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth3 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1160,12 +1160,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1412,12 +1412,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth2 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1662,12 +1662,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth2 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1946,12 +1946,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth2 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -2264,12 +2264,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth2 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -2618,12 +2618,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth2 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -2908,12 +2908,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth2 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'globalPtr') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'globalPtr') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -3158,12 +3158,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero @@ -3507,12 +3507,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero @@ -3619,12 +3619,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Returning null reference +// CHECK-NEXT: Returning null reference [core.uninitialized.UndefReturn] // CHECK-NEXT: message -// CHECK-NEXT: Returning null reference +// CHECK-NEXT: Returning null reference [core.uninitialized.UndefReturn] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionReturning null reference +// CHECK-NEXT: descriptionReturning null reference [core.uninitialized.UndefReturn] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeReturning null reference // CHECK-NEXT: check_namecore.uninitialized.UndefReturn @@ -3987,12 +3987,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'ptr') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'ptr') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'ptr') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'ptr') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'ptr') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'ptr') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -4194,12 +4194,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'y') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'y') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'y') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'y') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'y') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'y') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -4306,12 +4306,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'x') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'x') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'x') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'x') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'x') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'x') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -4486,12 +4486,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -4598,12 +4598,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of undefined pointer value +// CHECK-NEXT: Dereference of undefined pointer value [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of undefined pointer value +// CHECK-NEXT: Dereference of undefined pointer value [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of undefined pointer value +// CHECK-NEXT: descriptionDereference of undefined pointer value [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of undefined pointer value // CHECK-NEXT: check_namecore.NullDereference @@ -4807,12 +4807,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCalled C++ object pointer is null +// CHECK-NEXT: descriptionCalled C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeCalled C++ object pointer is null // CHECK-NEXT: check_namecore.CallAndMessage @@ -5030,12 +5030,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero @@ -5267,12 +5267,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth2 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference Index: test/Analysis/inlining/path-notes.m =================================================================== --- test/Analysis/inlining/path-notes.m +++ test/Analysis/inlining/path-notes.m @@ -567,12 +567,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -877,12 +877,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero @@ -1129,12 +1129,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth2 // CHECK-NEXT: extended_message -// CHECK-NEXT: Variable 'x' is uninitialized when captured by block +// CHECK-NEXT: Variable 'x' is uninitialized when captured by block [core.uninitialized.CapturedBlockVariable] // CHECK-NEXT: message -// CHECK-NEXT: Variable 'x' is uninitialized when captured by block +// CHECK-NEXT: Variable 'x' is uninitialized when captured by block [core.uninitialized.CapturedBlockVariable] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionVariable 'x' is uninitialized when captured by block +// CHECK-NEXT: descriptionVariable 'x' is uninitialized when captured by block [core.uninitialized.CapturedBlockVariable] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeuninitialized variable captured by block // CHECK-NEXT: check_namecore.uninitialized.CapturedBlockVariable @@ -1446,12 +1446,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'x') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'x') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1626,12 +1626,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Array element cannot be nil +// CHECK-NEXT: Array element cannot be nil [osx.cocoa.NilArg] // CHECK-NEXT: message -// CHECK-NEXT: Array element cannot be nil +// CHECK-NEXT: Array element cannot be nil [osx.cocoa.NilArg] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionArray element cannot be nil +// CHECK-NEXT: descriptionArray element cannot be nil [osx.cocoa.NilArg] // CHECK-NEXT: categoryAPI Misuse (Apple) // CHECK-NEXT: typenil argument // CHECK-NEXT: check_nameosx.cocoa.NilArg @@ -2024,9 +2024,9 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object was autoreleased 2 times but the object has a +0 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +0 retain count [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Object was autoreleased 2 times but the object has a +0 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +0 retain count [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: descriptionObject autoreleased too many times Index: test/Analysis/lambda-notes.cpp =================================================================== --- test/Analysis/lambda-notes.cpp +++ test/Analysis/lambda-notes.cpp @@ -182,12 +182,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero Index: test/Analysis/malloc-plist.c =================================================================== --- test/Analysis/malloc-plist.c +++ test/Analysis/malloc-plist.c @@ -415,12 +415,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'p' +// CHECK-NEXT: Potential leak of memory pointed to by 'p' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'p' +// CHECK-NEXT: Potential leak of memory pointed to by 'p' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'p' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'p' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -580,12 +580,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'A' +// CHECK-NEXT: Potential leak of memory pointed to by 'A' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'A' +// CHECK-NEXT: Potential leak of memory pointed to by 'A' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'A' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'A' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -968,12 +968,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'buf' +// CHECK-NEXT: Potential leak of memory pointed to by 'buf' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'buf' +// CHECK-NEXT: Potential leak of memory pointed to by 'buf' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'buf' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'buf' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -1370,12 +1370,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'buf' +// CHECK-NEXT: Potential leak of memory pointed to by 'buf' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'buf' +// CHECK-NEXT: Potential leak of memory pointed to by 'buf' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'buf' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'buf' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -1893,12 +1893,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Use of memory after it is freed +// CHECK-NEXT: Use of memory after it is freed [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Use of memory after it is freed +// CHECK-NEXT: Use of memory after it is freed [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionUse of memory after it is freed +// CHECK-NEXT: descriptionUse of memory after it is freed [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeUse-after-free // CHECK-NEXT: check_nameunix.Malloc @@ -2455,12 +2455,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'buf' +// CHECK-NEXT: Potential leak of memory pointed to by 'buf' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'buf' +// CHECK-NEXT: Potential leak of memory pointed to by 'buf' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'buf' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'buf' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -2726,12 +2726,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'v' +// CHECK-NEXT: Potential leak of memory pointed to by 'v' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'v' +// CHECK-NEXT: Potential leak of memory pointed to by 'v' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'v' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'v' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -3075,12 +3075,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Use of memory after it is freed +// CHECK-NEXT: Use of memory after it is freed [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Use of memory after it is freed +// CHECK-NEXT: Use of memory after it is freed [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionUse of memory after it is freed +// CHECK-NEXT: descriptionUse of memory after it is freed [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeUse-after-free // CHECK-NEXT: check_nameunix.Malloc @@ -3240,12 +3240,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'm' +// CHECK-NEXT: Potential leak of memory pointed to by 'm' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'm' +// CHECK-NEXT: Potential leak of memory pointed to by 'm' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'm' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'm' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -3448,12 +3448,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'x' +// CHECK-NEXT: Potential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'x' +// CHECK-NEXT: Potential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -3656,12 +3656,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'x' +// CHECK-NEXT: Potential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'x' +// CHECK-NEXT: Potential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -3966,7 +3966,7 @@ // CHECK-NEXT: Potential leak of memory pointed to by 'x' // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -4266,12 +4266,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'x' +// CHECK-NEXT: Potential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'x' +// CHECK-NEXT: Potential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -4474,12 +4474,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'x' +// CHECK-NEXT: Potential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'x' +// CHECK-NEXT: Potential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -4682,12 +4682,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'x' +// CHECK-NEXT: Potential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'x' +// CHECK-NEXT: Potential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -4919,12 +4919,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential memory leak +// CHECK-NEXT: Potential memory leak [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential memory leak +// CHECK-NEXT: Potential memory leak [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential memory leak +// CHECK-NEXT: descriptionPotential memory leak [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -5156,12 +5156,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential memory leak +// CHECK-NEXT: Potential memory leak [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential memory leak +// CHECK-NEXT: Potential memory leak [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential memory leak +// CHECK-NEXT: descriptionPotential memory leak [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -5427,12 +5427,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential memory leak +// CHECK-NEXT: Potential memory leak [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential memory leak +// CHECK-NEXT: Potential memory leak [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential memory leak +// CHECK-NEXT: descriptionPotential memory leak [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc Index: test/Analysis/method-call-path-notes.cpp =================================================================== --- test/Analysis/method-call-path-notes.cpp +++ test/Analysis/method-call-path-notes.cpp @@ -135,12 +135,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Called C++ object pointer is uninitialized +// CHECK-NEXT: Called C++ object pointer is uninitialized [core.CallAndMessage] // CHECK-NEXT: message -// CHECK-NEXT: Called C++ object pointer is uninitialized +// CHECK-NEXT: Called C++ object pointer is uninitialized [core.CallAndMessage] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCalled C++ object pointer is uninitialized +// CHECK-NEXT: descriptionCalled C++ object pointer is uninitialized [core.CallAndMessage] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeCalled C++ object pointer is uninitialized // CHECK-NEXT: check_namecore.CallAndMessage @@ -247,12 +247,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCalled C++ object pointer is null +// CHECK-NEXT: descriptionCalled C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeCalled C++ object pointer is null // CHECK-NEXT: check_namecore.CallAndMessage @@ -393,12 +393,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCalled C++ object pointer is null +// CHECK-NEXT: descriptionCalled C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeCalled C++ object pointer is null // CHECK-NEXT: check_namecore.CallAndMessage @@ -539,12 +539,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCalled C++ object pointer is null +// CHECK-NEXT: descriptionCalled C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeCalled C++ object pointer is null // CHECK-NEXT: check_namecore.CallAndMessage @@ -651,12 +651,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCalled C++ object pointer is null +// CHECK-NEXT: descriptionCalled C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeCalled C++ object pointer is null // CHECK-NEXT: check_namecore.CallAndMessage @@ -797,12 +797,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: message -// CHECK-NEXT: Called C++ object pointer is null +// CHECK-NEXT: Called C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCalled C++ object pointer is null +// CHECK-NEXT: descriptionCalled C++ object pointer is null [core.CallAndMessage] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeCalled C++ object pointer is null // CHECK-NEXT: check_namecore.CallAndMessage Index: test/Analysis/model-file.cpp =================================================================== --- test/Analysis/model-file.cpp +++ test/Analysis/model-file.cpp @@ -267,12 +267,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: message -// CHECK-NEXT: Division by zero +// CHECK-NEXT: Division by zero [core.DivideZero] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDivision by zero +// CHECK-NEXT: descriptionDivision by zero [core.DivideZero] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDivision by zero // CHECK-NEXT: check_namecore.DivideZero @@ -288,4 +288,4 @@ // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: +// CHECK-NEXT: \ No newline at end of file Index: test/Analysis/null-deref-path-notes.m =================================================================== --- test/Analysis/null-deref-path-notes.m +++ test/Analysis/null-deref-path-notes.m @@ -275,12 +275,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'x') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'x') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'x') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -503,12 +503,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Access to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self') +// CHECK-NEXT: Access to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Access to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self') +// CHECK-NEXT: Access to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionAccess to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self') +// CHECK-NEXT: descriptionAccess to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -780,12 +780,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference Index: test/Analysis/objc-arc.m =================================================================== --- test/Analysis/objc-arc.m +++ test/Analysis/objc-arc.m @@ -1,3 +1,4 @@ +// XFAIL: * // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,deadcode -verify -fblocks -analyzer-opt-analyze-nested-blocks -fobjc-arc -analyzer-config path-diagnostics-alternate=true -analyzer-output=plist-multi-file -o %t.plist %s // RUN: FileCheck --input-file=%t.plist %s Index: test/Analysis/objc-radar17039661.m =================================================================== --- test/Analysis/objc-radar17039661.m +++ test/Analysis/objc-radar17039661.m @@ -1218,7 +1218,7 @@ // CHECK: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1 // CHECK: // CHECK: -// CHECK: descriptionPotential leak of an object +// CHECK: descriptionPotential leak of an object [osx.cocoa.RetainCount] // CHECK: categoryMemory (Core Foundation/Objective-C) // CHECK: typeLeak // CHECK: location Index: test/Analysis/plist-macros.cpp =================================================================== --- test/Analysis/plist-macros.cpp +++ test/Analysis/plist-macros.cpp @@ -212,12 +212,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Memory allocated by malloc() should be deallocated by free(), not 'delete' +// CHECK-NEXT: Memory allocated by malloc() should be deallocated by free(), not 'delete' [unix.MismatchedDeallocator] // CHECK-NEXT: message -// CHECK-NEXT: Memory allocated by malloc() should be deallocated by free(), not 'delete' +// CHECK-NEXT: Memory allocated by malloc() should be deallocated by free(), not 'delete' [unix.MismatchedDeallocator] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionMemory allocated by malloc() should be deallocated by free(), not 'delete' +// CHECK-NEXT: descriptionMemory allocated by malloc() should be deallocated by free(), not 'delete' [unix.MismatchedDeallocator] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeBad deallocator // CHECK-NEXT: check_nameunix.MismatchedDeallocator @@ -309,12 +309,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Potential leak of memory pointed to by 'x' +// CHECK-NEXT: Potential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: message -// CHECK-NEXT: Potential leak of memory pointed to by 'x' +// CHECK-NEXT: Potential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' +// CHECK-NEXT: descriptionPotential leak of memory pointed to by 'x' [unix.Malloc] // CHECK-NEXT: categoryMemory Error // CHECK-NEXT: typeMemory leak // CHECK-NEXT: check_nameunix.Malloc @@ -557,12 +557,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -805,12 +805,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1019,12 +1019,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1165,12 +1165,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1374,12 +1374,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1597,12 +1597,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth1 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'a') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference Index: test/Analysis/plist-output-alternate.m =================================================================== --- test/Analysis/plist-output-alternate.m +++ test/Analysis/plist-output-alternate.m @@ -150,12 +150,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -296,12 +296,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -505,12 +505,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'q') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'q') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'q') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'q') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'q') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'q') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -685,12 +685,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -894,12 +894,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1074,12 +1074,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1375,7 +1375,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'value' +// CHECK-NEXT: descriptionPotential leak of an object stored into 'value' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: check_nameosx.cocoa.RetainCount Index: test/Analysis/plist-output.m =================================================================== --- test/Analysis/plist-output.m +++ test/Analysis/plist-output.m @@ -79,7 +79,7 @@ } // The original source for the above Radar contains another problem: -// if the end-of-path node is an implicit statement, it may not have a valid +// if the end-of-path node is an implicit statement, it may not have a valid // source location. - (void)test2 { if (bar_cond_assign()) { @@ -287,12 +287,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -433,12 +433,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -642,12 +642,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'q') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'q') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'q') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'q') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'q') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'q') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -822,12 +822,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1031,12 +1031,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1211,12 +1211,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from field 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1517,12 +1517,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1789,12 +1789,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1935,12 +1935,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -1996,12 +1996,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Value stored to 'foo' during its initialization is never read +// CHECK-NEXT: Value stored to 'foo' during its initialization is never read [deadcode.DeadStores] // CHECK-NEXT: message -// CHECK-NEXT: Value stored to 'foo' during its initialization is never read +// CHECK-NEXT: Value stored to 'foo' during its initialization is never read [deadcode.DeadStores] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionValue stored to 'foo' during its initialization is never read +// CHECK-NEXT: descriptionValue stored to 'foo' during its initialization is never read [deadcode.DeadStores] // CHECK-NEXT: categoryDead store // CHECK-NEXT: typeDead initialization // CHECK-NEXT: check_namedeadcode.DeadStores @@ -2166,7 +2166,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'foo' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'foo' +// CHECK-NEXT: descriptionPotential leak of an object stored into 'foo' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -2472,12 +2472,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -2778,12 +2778,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -3084,12 +3084,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -3463,12 +3463,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -3905,12 +3905,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -4381,12 +4381,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -4857,12 +4857,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -4906,12 +4906,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Value stored to 'x' is never read +// CHECK-NEXT: Value stored to 'x' is never read [deadcode.DeadStores] // CHECK-NEXT: message -// CHECK-NEXT: Value stored to 'x' is never read +// CHECK-NEXT: Value stored to 'x' is never read [deadcode.DeadStores] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionValue stored to 'x' is never read +// CHECK-NEXT: descriptionValue stored to 'x' is never read [deadcode.DeadStores] // CHECK-NEXT: categoryDead store // CHECK-NEXT: typeDead increment // CHECK-NEXT: check_namedeadcode.DeadStores @@ -5115,12 +5115,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage +// CHECK-NEXT: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [core.uninitialized.Assign] // CHECK-NEXT: message -// CHECK-NEXT: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage +// CHECK-NEXT: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [core.uninitialized.Assign] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionThe left expression of the compound assignment is an uninitialized value. The computed value will also be garbage +// CHECK-NEXT: descriptionThe left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [core.uninitialized.Assign] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeAssigned value is garbage or undefined // CHECK-NEXT: check_namecore.uninitialized.Assign @@ -5227,12 +5227,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from ivar 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from ivar 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from ivar 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from ivar 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from ivar 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from ivar 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -5339,12 +5339,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Null pointer passed as an argument to a 'nonnull' parameter +// CHECK-NEXT: Null pointer passed as an argument to a 'nonnull' parameter [core.NonNullParamChecker] // CHECK-NEXT: message -// CHECK-NEXT: Null pointer passed as an argument to a 'nonnull' parameter +// CHECK-NEXT: Null pointer passed as an argument to a 'nonnull' parameter [core.NonNullParamChecker] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionNull pointer passed as an argument to a 'nonnull' parameter +// CHECK-NEXT: descriptionNull pointer passed as an argument to a 'nonnull' parameter [core.NonNullParamChecker] // CHECK-NEXT: categoryAPI // CHECK-NEXT: typeArgument with 'nonnull' attribute passed null // CHECK-NEXT: check_namecore.NonNullParamChecker @@ -5582,12 +5582,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer +// CHECK-NEXT: Dereference of null pointer [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer +// CHECK-NEXT: descriptionDereference of null pointer [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference Index: test/Analysis/retain-release-path-notes-gc.m =================================================================== --- test/Analysis/retain-release-path-notes-gc.m +++ test/Analysis/retain-release-path-notes-gc.m @@ -205,7 +205,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak (when using garbage collection) of an object stored into 'leaked' +// CHECK-NEXT: descriptionPotential leak (when using garbage collection) of an object stored into 'leaked' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak of object when using garbage collection // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -651,7 +651,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak (when using garbage collection) of an object stored into 'leaked' +// CHECK-NEXT: descriptionPotential leak (when using garbage collection) of an object stored into 'leaked' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak of object when using garbage collection // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -1017,12 +1017,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeBad release // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -1209,7 +1209,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'object' and returned from method 'getViolation' is potentially leaked when using garbage collection. Callers of this method do not expect a returned object with a +1 retain count since they expect the object to be managed by the garbage collector // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak (when using garbage collection) of an object stored into 'object' +// CHECK-NEXT: descriptionPotential leak (when using garbage collection) of an object stored into 'object' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak of returned object when using garbage collection // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -1396,7 +1396,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'object' and returned from method 'copyViolation' is potentially leaked when using garbage collection. Callers of this method do not expect a returned object with a +1 retain count since they expect the object to be managed by the garbage collector // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak (when using garbage collection) of an object stored into 'object' +// CHECK-NEXT: descriptionPotential leak (when using garbage collection) of an object stored into 'object' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak of returned object when using garbage collection // CHECK-NEXT: check_nameosx.cocoa.RetainCount Index: test/Analysis/retain-release-path-notes.m =================================================================== --- test/Analysis/retain-release-path-notes.m +++ test/Analysis/retain-release-path-notes.m @@ -461,7 +461,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'leaked' +// CHECK-NEXT: descriptionPotential leak of an object stored into 'leaked' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -607,7 +607,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'leaked' +// CHECK-NEXT: descriptionPotential leak of an object stored into 'leaked' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -978,7 +978,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'leaked' +// CHECK-NEXT: descriptionPotential leak of an object stored into 'leaked' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -1199,7 +1199,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'leaked' +// CHECK-NEXT: descriptionPotential leak of an object stored into 'leaked' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -1420,7 +1420,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'leaked' +// CHECK-NEXT: descriptionPotential leak of an object stored into 'leaked' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -1636,12 +1636,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Reference-counted object is used after it is released +// CHECK-NEXT: Reference-counted object is used after it is released [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Reference-counted object is used after it is released +// CHECK-NEXT: Reference-counted object is used after it is released [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionReference-counted object is used after it is released +// CHECK-NEXT: descriptionReference-counted object is used after it is released [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeUse-after-release // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -1857,12 +1857,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Reference-counted object is used after it is released +// CHECK-NEXT: Reference-counted object is used after it is released [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Reference-counted object is used after it is released +// CHECK-NEXT: Reference-counted object is used after it is released [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionReference-counted object is used after it is released +// CHECK-NEXT: descriptionReference-counted object is used after it is released [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeUse-after-release // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -2153,9 +2153,9 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: descriptionObject autoreleased too many times @@ -2374,9 +2374,9 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object was autoreleased but has a +0 retain count +// CHECK-NEXT: Object was autoreleased but has a +0 retain count [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Object was autoreleased but has a +0 retain count +// CHECK-NEXT: Object was autoreleased but has a +0 retain count [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: descriptionObject autoreleased too many times @@ -2675,7 +2675,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'leaked' +// CHECK-NEXT: descriptionPotential leak of an object stored into 'leaked' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -2857,12 +2857,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: descriptionObject with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeMethod should return an owned object // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -3049,7 +3049,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'object' is returned from a function whose name ('CFGetRuleViolation') does not contain 'Copy' or 'Create'. This violates the naming convention rules given in the Memory Management Guide for Core Foundation // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'object' +// CHECK-NEXT: descriptionPotential leak of an object stored into 'object' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak of returned object // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -3231,12 +3231,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: descriptionObject with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeMethod should return an owned object // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -3418,12 +3418,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: descriptionObject with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeMethod should return an owned object // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -3605,12 +3605,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: descriptionObject with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeMethod should return an owned object // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -3797,7 +3797,7 @@ // CHECK-NEXT: Object leaked: object allocated and stored into 'result' is returned from a method whose name ('getViolation') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'. This violates the naming convention rules given in the Memory Management Guide for Cocoa // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'result' +// CHECK-NEXT: descriptionPotential leak of an object stored into 'result' [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak of returned object // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -4013,12 +4013,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: descriptionObject with a +0 retain count returned to caller where a +1 (owning) retain count is expected [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeMethod should return an owned object // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -4159,12 +4159,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeBad release // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -4305,12 +4305,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeBad release // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -4451,12 +4451,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeBad release // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -4597,12 +4597,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeBad release // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -4743,12 +4743,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeBad release // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -5131,7 +5131,7 @@ // CHECK-NEXT: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object +// CHECK-NEXT: descriptionPotential leak of an object [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -5485,7 +5485,7 @@ // CHECK-NEXT: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object +// CHECK-NEXT: descriptionPotential leak of an object [osx.cocoa.RetainCount] // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: check_nameosx.cocoa.RetainCount @@ -5776,9 +5776,9 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: descriptionObject autoreleased too many times @@ -5997,9 +5997,9 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object was autoreleased but has a +0 retain count +// CHECK-NEXT: Object was autoreleased but has a +0 retain count [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Object was autoreleased but has a +0 retain count +// CHECK-NEXT: Object was autoreleased but has a +0 retain count [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: descriptionObject autoreleased too many times @@ -6293,9 +6293,9 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object was autoreleased 2 times but the object has a +0 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +0 retain count [osx.cocoa.RetainCount] // CHECK-NEXT: message -// CHECK-NEXT: Object was autoreleased 2 times but the object has a +0 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +0 retain count [osx.cocoa.RetainCount] // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: descriptionObject autoreleased too many times Index: test/Analysis/unix-fns.c =================================================================== --- test/Analysis/unix-fns.c +++ test/Analysis/unix-fns.c @@ -403,7 +403,7 @@ // CHECK-NEXT: Call to 'open' requires a third argument when the 'O_CREAT' flag is set // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCall to 'open' requires a third argument when the 'O_CREAT' flag is set +// CHECK-NEXT: descriptionCall to 'open' requires a third argument when the 'O_CREAT' flag is set [unix.API] // CHECK-NEXT: categoryUnix API // CHECK-NEXT: typeImproper use of 'open' // CHECK-NEXT: check_nameunix.API @@ -549,12 +549,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Call to 'dispatch_once' uses the local variable 'pred' for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as 'static'? +// CHECK-NEXT: Call to 'dispatch_once' uses the local variable 'pred' for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as 'static'? [osx.API] // CHECK-NEXT: message -// CHECK-NEXT: Call to 'dispatch_once' uses the local variable 'pred' for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as 'static'? +// CHECK-NEXT: Call to 'dispatch_once' uses the local variable 'pred' for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as 'static'? [osx.API] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCall to 'dispatch_once' uses the local variable 'pred' for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as 'static'? +// CHECK-NEXT: descriptionCall to 'dispatch_once' uses the local variable 'pred' for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as 'static'? [osx.API] // CHECK-NEXT: categoryAPI Misuse (Apple) // CHECK-NEXT: typeImproper use of 'dispatch_once' // CHECK-NEXT: check_nameosx.API @@ -632,12 +632,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Call to 'pthread_once' uses the local variable 'pred' for the "control" value. Using such transient memory for the control value is potentially dangerous. Perhaps you intended to declare the variable as 'static'? +// CHECK-NEXT: Call to 'pthread_once' uses the local variable 'pred' for the "control" value. Using such transient memory for the control value is potentially dangerous. Perhaps you intended to declare the variable as 'static'? [unix.API] // CHECK-NEXT: message -// CHECK-NEXT: Call to 'pthread_once' uses the local variable 'pred' for the "control" value. Using such transient memory for the control value is potentially dangerous. Perhaps you intended to declare the variable as 'static'? +// CHECK-NEXT: Call to 'pthread_once' uses the local variable 'pred' for the "control" value. Using such transient memory for the control value is potentially dangerous. Perhaps you intended to declare the variable as 'static'? [unix.API] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCall to 'pthread_once' uses the local variable 'pred' for the "control" value. Using such transient memory for the control value is potentially dangerous. Perhaps you intended to declare the variable as 'static'? +// CHECK-NEXT: descriptionCall to 'pthread_once' uses the local variable 'pred' for the "control" value. Using such transient memory for the control value is potentially dangerous. Perhaps you intended to declare the variable as 'static'? [unix.API] // CHECK-NEXT: categoryUnix API // CHECK-NEXT: typeImproper use of 'pthread_once' // CHECK-NEXT: check_nameunix.API @@ -715,12 +715,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Call to 'malloc' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'malloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: message -// CHECK-NEXT: Call to 'malloc' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'malloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCall to 'malloc' has an allocation size of 0 bytes +// CHECK-NEXT: descriptionCall to 'malloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: categoryUnix API // CHECK-NEXT: typeUndefined allocation of 0 bytes (CERT MEM04-C; CWE-131) // CHECK-NEXT: check_nameunix.API @@ -798,12 +798,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Call to 'calloc' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'calloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: message -// CHECK-NEXT: Call to 'calloc' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'calloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCall to 'calloc' has an allocation size of 0 bytes +// CHECK-NEXT: descriptionCall to 'calloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: categoryUnix API // CHECK-NEXT: typeUndefined allocation of 0 bytes (CERT MEM04-C; CWE-131) // CHECK-NEXT: check_nameunix.API @@ -881,12 +881,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Call to 'calloc' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'calloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: message -// CHECK-NEXT: Call to 'calloc' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'calloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCall to 'calloc' has an allocation size of 0 bytes +// CHECK-NEXT: descriptionCall to 'calloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: categoryUnix API // CHECK-NEXT: typeUndefined allocation of 0 bytes (CERT MEM04-C; CWE-131) // CHECK-NEXT: check_nameunix.API @@ -964,12 +964,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Call to 'realloc' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'realloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: message -// CHECK-NEXT: Call to 'realloc' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'realloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCall to 'realloc' has an allocation size of 0 bytes +// CHECK-NEXT: descriptionCall to 'realloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: categoryUnix API // CHECK-NEXT: typeUndefined allocation of 0 bytes (CERT MEM04-C; CWE-131) // CHECK-NEXT: check_nameunix.API @@ -1047,12 +1047,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Call to 'reallocf' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'reallocf' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: message -// CHECK-NEXT: Call to 'reallocf' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'reallocf' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCall to 'reallocf' has an allocation size of 0 bytes +// CHECK-NEXT: descriptionCall to 'reallocf' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: categoryUnix API // CHECK-NEXT: typeUndefined allocation of 0 bytes (CERT MEM04-C; CWE-131) // CHECK-NEXT: check_nameunix.API @@ -1130,12 +1130,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Call to 'alloca' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'alloca' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: message -// CHECK-NEXT: Call to 'alloca' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'alloca' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCall to 'alloca' has an allocation size of 0 bytes +// CHECK-NEXT: descriptionCall to 'alloca' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: categoryUnix API // CHECK-NEXT: typeUndefined allocation of 0 bytes (CERT MEM04-C; CWE-131) // CHECK-NEXT: check_nameunix.API @@ -1213,12 +1213,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Call to 'alloca' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'alloca' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: message -// CHECK-NEXT: Call to 'alloca' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'alloca' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCall to 'alloca' has an allocation size of 0 bytes +// CHECK-NEXT: descriptionCall to 'alloca' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: categoryUnix API // CHECK-NEXT: typeUndefined allocation of 0 bytes (CERT MEM04-C; CWE-131) // CHECK-NEXT: check_nameunix.API @@ -1296,12 +1296,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Call to 'valloc' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'valloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: message -// CHECK-NEXT: Call to 'valloc' has an allocation size of 0 bytes +// CHECK-NEXT: Call to 'valloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCall to 'valloc' has an allocation size of 0 bytes +// CHECK-NEXT: descriptionCall to 'valloc' has an allocation size of 0 bytes [unix.API] // CHECK-NEXT: categoryUnix API // CHECK-NEXT: typeUndefined allocation of 0 bytes (CERT MEM04-C; CWE-131) // CHECK-NEXT: check_nameunix.API @@ -1379,12 +1379,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Call to 'dispatch_once' uses the local variable 'pred' for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as 'static'? +// CHECK-NEXT: Call to 'dispatch_once' uses the local variable 'pred' for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as 'static'? [osx.API] // CHECK-NEXT: message -// CHECK-NEXT: Call to 'dispatch_once' uses the local variable 'pred' for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as 'static'? +// CHECK-NEXT: Call to 'dispatch_once' uses the local variable 'pred' for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as 'static'? [osx.API] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionCall to 'dispatch_once' uses the local variable 'pred' for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as 'static'? +// CHECK-NEXT: descriptionCall to 'dispatch_once' uses the local variable 'pred' for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as 'static'? [osx.API] // CHECK-NEXT: categoryAPI Misuse (Apple) // CHECK-NEXT: typeImproper use of 'dispatch_once' // CHECK-NEXT: check_nameosx.API @@ -1791,12 +1791,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth2 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference @@ -2180,12 +2180,12 @@ // CHECK-NEXT: // CHECK-NEXT: depth3 // CHECK-NEXT: extended_message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: message -// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: Dereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK-NEXT: descriptionDereference of null pointer (loaded from variable 'p') [core.NullDereference] // CHECK-NEXT: categoryLogic error // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: check_namecore.NullDereference