summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-09-01 02:35:58 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-09-01 02:35:58 +0000
commitb5aaf5a57a466078100ab8d5f1a9146622403e8c (patch)
tree69258f7eb98595a29b03cff4e169644ff23beacd
parent51d2d0f668ba2e2b52fc20f44fc4d60005c55a13 (diff)
downloadbcm5719-llvm-b5aaf5a57a466078100ab8d5f1a9146622403e8c.tar.gz
bcm5719-llvm-b5aaf5a57a466078100ab8d5f1a9146622403e8c.zip
Don't use fprintf to emit this diagnostic!
llvm-svn: 246526
-rw-r--r--clang/include/clang/Basic/DiagnosticSerializationKinds.td4
-rw-r--r--clang/lib/Serialization/ASTWriter.cpp6
-rw-r--r--clang/test/PCH/datetime.c3
3 files changed, 10 insertions, 3 deletions
diff --git a/clang/include/clang/Basic/DiagnosticSerializationKinds.td b/clang/include/clang/Basic/DiagnosticSerializationKinds.td
index bd81c8041fa..272cc7bf6b0 100644
--- a/clang/include/clang/Basic/DiagnosticSerializationKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSerializationKinds.td
@@ -111,6 +111,10 @@ def note_module_odr_violation_different_definitions : Note<
def err_module_odr_violation_different_instantiations : Error<
"instantiation of %q0 is different in different modules">;
+def warn_module_uses_date_time : Warning<
+ "%select{precompiled header|module}0 uses __DATE__ or __TIME__">,
+ InGroup<DiagGroup<"pch-date-time">>;
+
} // let CategoryName
} // let Component
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
index 29af1be917d..0349378076c 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -43,6 +43,7 @@
#include "clang/Sema/IdentifierResolver.h"
#include "clang/Sema/Sema.h"
#include "clang/Serialization/ASTReader.h"
+#include "clang/Serialization/SerializationDiagnostic.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/Hashing.h"
@@ -2054,10 +2055,9 @@ void ASTWriter::WritePreprocessor(const Preprocessor &PP, bool IsModule) {
Stream.EnterSubblock(PREPROCESSOR_BLOCK_ID, 3);
// If the AST file contains __DATE__ or __TIME__ emit a warning about this.
- // FIXME: use diagnostics subsystem for localization etc.
+ // FIXME: Include a location for the use, and say which one was used.
if (PP.SawDateOrTime())
- fprintf(stderr, "warning: precompiled header used __DATE__ or __TIME__.\n");
-
+ PP.Diag(SourceLocation(), diag::warn_module_uses_date_time) << IsModule;
// Loop over all the macro directives that are live at the end of the file,
// emitting each to the PP section.
diff --git a/clang/test/PCH/datetime.c b/clang/test/PCH/datetime.c
new file mode 100644
index 00000000000..801c0c71048
--- /dev/null
+++ b/clang/test/PCH/datetime.c
@@ -0,0 +1,3 @@
+// RUN: %clang_cc1 -x c-header %s -emit-pch -o %t 2>&1 | FileCheck %s
+// CHECK: precompiled header uses __DATE__ or __TIME__
+const char *p = __DATE__;
OpenPOWER on IntegriCloud