summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kornienko <alexfh@google.com>2014-05-06 08:10:00 +0000
committerAlexander Kornienko <alexfh@google.com>2014-05-06 08:10:00 +0000
commit238795e9c6b3f172fbdb521ed847405cbc7dafe9 (patch)
treeda50cef5b8a2f31c717507a0041a306b6c1e8f27
parentddb2fde175c3a1b0733902a43415f5c86234e389 (diff)
downloadbcm5719-llvm-238795e9c6b3f172fbdb521ed847405cbc7dafe9.tar.gz
bcm5719-llvm-238795e9c6b3f172fbdb521ed847405cbc7dafe9.zip
Fix a crash when diagnostic points to a macro definition on command line.
Reviewers: klimek Reviewed By: klimek Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D3620 llvm-svn: 208068
-rw-r--r--clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp5
-rw-r--r--clang-tools-extra/test/clang-tidy/diagnostic.cpp4
2 files changed, 8 insertions, 1 deletions
diff --git a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
index f32470407ab..fdf1f0c2e6c 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
@@ -239,7 +239,10 @@ bool ClangTidyDiagnosticConsumer::relatesToUserCode(SourceLocation Location) {
if (FID == Sources.getMainFileID())
return true;
- return HeaderFilter.match(Sources.getFileEntryForID(FID)->getName());
+ const FileEntry *File = Sources.getFileEntryForID(FID);
+ // -DMACRO definitions on the command line have locations in a virtual buffer
+ // that doesn't have a FileEntry. Don't skip these as well.
+ return !File || HeaderFilter.match(File->getName());
}
struct LessClangTidyError {
diff --git a/clang-tools-extra/test/clang-tidy/diagnostic.cpp b/clang-tools-extra/test/clang-tidy/diagnostic.cpp
index 67c7901e5e1..e8a17e0e81d 100644
--- a/clang-tools-extra/test/clang-tidy/diagnostic.cpp
+++ b/clang-tools-extra/test/clang-tidy/diagnostic.cpp
@@ -1,6 +1,7 @@
// RUN: clang-tidy -disable-checks='' %s.nonexistent.cpp -- | FileCheck -check-prefix=CHECK1 %s
// RUN: clang-tidy -disable-checks='' %s -- -fan-unknown-option | FileCheck -check-prefix=CHECK2 %s
// RUN: clang-tidy -checks='(google-explicit-constructor|clang-diagnostic-literal-conversion)' -disable-checks='' %s -- -fan-unknown-option | FileCheck -check-prefix=CHECK3 %s
+// RUN: clang-tidy -checks='clang-diagnostic-macro-redefined' -disable-checks='' %s -- -DMACRO_FROM_COMMAND_LINE | FileCheck -check-prefix=CHECK4 %s
// CHECK1-NOT: warning
// CHECK2-NOT: warning
@@ -19,3 +20,6 @@ class A { A(int) {} };
// CHECK2-NOT: warning:
// CHECK3-NOT: warning:
+
+#define MACRO_FROM_COMMAND_LINE
+// CHECK4: :[[@LINE-1]]:9: warning: 'MACRO_FROM_COMMAND_LINE' macro redefined
OpenPOWER on IntegriCloud