From 3feb2cd5bbbeeba4a7dba3179ec6f93fc3cbb6c8 Mon Sep 17 00:00:00 2001 From: Anna Zaks Date: Fri, 10 May 2013 18:04:43 +0000 Subject: [PATCH] [analyzer] Do not check if sys/queue.h file is a system header. In most cases it is, by just looking at the name. Also, this check prevents the heuristic from working in strange user settings. radar://13839692 llvm-svn: 181615 --- clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp | 5 ++--- clang/test/Analysis/diagnostics/Inputs/include/sys/queue.h | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp b/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp index a397f33c9928..00c92d8153ea 100644 --- a/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp +++ b/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp @@ -1539,12 +1539,11 @@ LikelyFalsePositiveSuppressionBRVisitor::getEndPath(BugReporterContext &BRC, SourceManager &SM = BRC.getSourceManager(); FullSourceLoc Loc = BR.getLocation(SM).asLocation(); while (Loc.isMacroID()) { - if (SM.isInSystemMacro(Loc) && - (SM.getFilename(SM.getSpellingLoc(Loc)).endswith("sys/queue.h"))) { + Loc = Loc.getSpellingLoc(); + if (SM.getFilename(Loc).endswith("sys/queue.h")) { BR.markInvalid(getTag(), 0); return 0; } - Loc = Loc.getSpellingLoc(); } return 0; diff --git a/clang/test/Analysis/diagnostics/Inputs/include/sys/queue.h b/clang/test/Analysis/diagnostics/Inputs/include/sys/queue.h index e5698ed443b7..2740e174f257 100644 --- a/clang/test/Analysis/diagnostics/Inputs/include/sys/queue.h +++ b/clang/test/Analysis/diagnostics/Inputs/include/sys/queue.h @@ -1,4 +1,3 @@ -#pragma clang system_header void free(void *); #define FREE_POINTER(x) free(x)