aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@gcc.gnu.org>2013-11-05 21:27:22 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2013-11-05 21:27:22 +0100
commite8ff5196a89bdd14deca4ecb5d07d60cfd081b11 (patch)
tree61e37f9572a53a1c03ae93e5c3d39f8427a2be96 /gcc
parentdf1c87913c623004b0ecf24ea37874d9addaa8c9 (diff)
downloadgcc-e8ff5196a89bdd14deca4ecb5d07d60cfd081b11.zip
gcc-e8ff5196a89bdd14deca4ecb5d07d60cfd081b11.tar.gz
gcc-e8ff5196a89bdd14deca4ecb5d07d60cfd081b11.tar.bz2
c.opt (-Wdate-time): New option
2013-11-05 Tobias Burnus <burnus@net-b.de> gcc/c-family/ * c.opt (-Wdate-time): New option * c-opts.c (sanitize_cpp_opts): Pass on to libcpp. gcc/ * doc/invoke.texi (-Wdate-time): Document. gcc/fortran * lang.opt (-Wdate-time): New option * cpp.c (gfc_cpp_option_data): Add warn_date_time. (gfc_cpp_init_options, gfc_cpp_handle_option, gfc_cpp_post_options): Handle it and pass on to libcpp. gcc/testsuite/ * g++.dg/warn/wdate-time.C: New. * gcc.dg/wdate-time.c: New. * gfortran.dg/wdate-time.F90: New. libcpp/ * include/cpplib.h (CPP_W_DATE_TIME): Added. (cpp_options): Add warn_date_time. * init.c (cpp_create_reader): Init it. * macro.c (_cpp_builtin_macro_text): Warn when __DATE__/__TIME__/__TIMESTAMP__ is used. From-SVN: r204420
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-opts.c1
-rw-r--r--gcc/c-family/c.opt4
-rw-r--r--gcc/doc/invoke.texi9
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/cpp.c6
-rw-r--r--gcc/fortran/lang.opt4
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/warn/wdate-time.C6
-rw-r--r--gcc/testsuite/gcc.dg/wdate-time.c6
-rw-r--r--gcc/testsuite/gfortran.dg/wdate-time.F906
12 files changed, 63 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3fe6121..66de2f9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2013-11-05 Tobias Burnus <burnus@net-b.de>
+
+ * doc/invoke.texi (-Wdate-time): Document.
+
2013-11-05 Richard Sandiford <rdsandiford@googlemail.com>
* double-int.c (lshift_double, rshift_double): Remove
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 2de4c39..6892952 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2013-11-05 Tobias Burnus <burnus@net-b.de>
+
+ * c.opt (-Wdate-time): New option
+ * c-opts.c (sanitize_cpp_opts): Pass on to libcpp.
+
2013-11-05 Joseph Myers <joseph@codesourcery.com>
* c-cppbuiltin.c (cpp_iec_559_value): Test
diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
index 702fe1a..2de5425 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -1198,6 +1198,7 @@ sanitize_cpp_opts (void)
cpp_opts->unsigned_char = !flag_signed_char;
cpp_opts->stdc_0_in_system_headers = STDC_0_IN_SYSTEM_HEADERS;
+ cpp_opts->warn_date_time = cpp_warn_date_time;
/* Wlong-long is disabled by default. It is enabled by:
[-Wpedantic | -Wtraditional] -std=[gnu|c]++98 ; or
diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index 22f8939..46391fa 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -640,6 +640,10 @@ Wpragmas
C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
Warn about misuses of pragmas
+Wdate-time
+Common Var(cpp_warn_date_time) Warning
+Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage
+
Wproperty-assign-default
ObjC ObjC++ Var(warn_property_assign_default) Init(1) Warning
Warn if a property for an Objective-C object has no assign semantics specified
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 35f41d9..863e518 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -240,7 +240,7 @@ Objective-C and Objective-C++ Dialects}.
-Wno-attributes -Wno-builtin-macro-redefined @gol
-Wc++-compat -Wc++11-compat -Wcast-align -Wcast-qual @gol
-Wchar-subscripts -Wclobbered -Wcomment -Wconditionally-supported @gol
--Wconversion -Wcoverage-mismatch -Wdelete-incomplete -Wno-cpp @gol
+-Wconversion -Wcoverage-mismatch -Wdate-time -Wdelete-incomplete -Wno-cpp @gol
-Wno-deprecated -Wno-deprecated-declarations -Wdisabled-optimization @gol
-Wno-div-by-zero -Wdouble-promotion -Wempty-body -Wenum-compare @gol
-Wno-endif-labels -Werror -Werror=* @gol
@@ -4526,6 +4526,13 @@ types. @option{-Wconversion-null} is enabled by default.
Warn when a literal '0' is used as null pointer constant. This can
be useful to facilitate the conversion to @code{nullptr} in C++11.
+@item -Wdate-time
+@opindex Wdate-time
+@opindex Wno-date-time
+Warn when macros @code{__TIME__}, @code{__DATE__} or @code{__TIMESTAMP__}
+are encountered as they might prevent bit-wise-identical reproducable
+compilations.
+
@item -Wdelete-incomplete @r{(C++ and Objective-C++ only)}
@opindex Wdelete-incomplete
@opindex Wno-delete-incomplete
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 47b9383..155a653 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2013-11-05 Tobias Burnus <burnus@net-b.de>
+
+ * lang.opt (-Wdate-time): New option
+ * cpp.c (gfc_cpp_option_data): Add warn_date_time.
+ (gfc_cpp_init_options, gfc_cpp_handle_option,
+ gfc_cpp_post_options): Handle it and pass on to libcpp.
+
2013-11-05 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/58989
diff --git a/gcc/fortran/cpp.c b/gcc/fortran/cpp.c
index ea53681..8417ddc 100644
--- a/gcc/fortran/cpp.c
+++ b/gcc/fortran/cpp.c
@@ -100,6 +100,7 @@ struct gfc_cpp_option_data
const char *deps_filename_user; /* -MF <arg> */
int deps_missing_are_generated; /* -MG */
int deps_phony; /* -MP */
+ int warn_date_time; /* -Wdate-time */
const char *multilib; /* -imultilib <dir> */
const char *prefix; /* -iprefix <dir> */
@@ -262,6 +263,7 @@ gfc_cpp_init_options (unsigned int decoded_options_count,
gfc_cpp_option.no_predefined = 0;
gfc_cpp_option.standard_include_paths = 1;
gfc_cpp_option.verbose = 0;
+ gfc_cpp_option.warn_date_time = 0;
gfc_cpp_option.deps = 0;
gfc_cpp_option.deps_skip_system = 0;
gfc_cpp_option.deps_phony = 0;
@@ -359,6 +361,9 @@ gfc_cpp_handle_option (size_t scode, const char *arg, int value ATTRIBUTE_UNUSED
gfc_cpp_option.verbose = value;
break;
+ case OPT_Wdate_time:
+ gfc_cpp_option.warn_date_time = value;
+
case OPT_A:
case OPT_D:
case OPT_U:
@@ -469,6 +474,7 @@ gfc_cpp_post_options (void)
cpp_option->discard_comments_in_macro_exp = gfc_cpp_option.discard_comments_in_macro_exp;
cpp_option->print_include_names = gfc_cpp_option.print_include_names;
cpp_option->preprocessed = gfc_option.flag_preprocessed;
+ cpp_option->warn_date_time = gfc_cpp_option.warn_date_time;
if (gfc_cpp_makedep ())
{
diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
index 49d5f3a..5e09cbd 100644
--- a/gcc/fortran/lang.opt
+++ b/gcc/fortran/lang.opt
@@ -213,6 +213,10 @@ Wc-binding-type
Fortran Warning
Warn if the type of a variable might be not interoperable with C
+Wdate-time
+Fortran
+; Documented in C
+
Wcharacter-truncation
Fortran Warning
Warn about truncated character expressions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2145503..9b5a538 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2013-11-05 Tobias Burnus <burnus@net-b.de>
+
+ * g++.dg/warn/wdate-time.C: New.
+ * gcc.dg/wdate-time.c: New.
+ * gfortran.dg/wdate-time.F90: New.
+
2013-11-05 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/58989
diff --git a/gcc/testsuite/g++.dg/warn/wdate-time.C b/gcc/testsuite/g++.dg/warn/wdate-time.C
new file mode 100644
index 0000000..040dd99
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/wdate-time.C
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-Wdate-time" } */
+
+const char time[] = __TIME__; /* { dg-warning "might prevent reproduce builds" } */
+const char date[] = __DATE__; /* { dg-warning "might prevent reproduce builds" } */
+const char timestamp[] = __TIMESTAMP__; /* { dg-warning "might prevent reproduce builds" } */
diff --git a/gcc/testsuite/gcc.dg/wdate-time.c b/gcc/testsuite/gcc.dg/wdate-time.c
new file mode 100644
index 0000000..040dd99
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/wdate-time.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-Wdate-time" } */
+
+const char time[] = __TIME__; /* { dg-warning "might prevent reproduce builds" } */
+const char date[] = __DATE__; /* { dg-warning "might prevent reproduce builds" } */
+const char timestamp[] = __TIMESTAMP__; /* { dg-warning "might prevent reproduce builds" } */
diff --git a/gcc/testsuite/gfortran.dg/wdate-time.F90 b/gcc/testsuite/gfortran.dg/wdate-time.F90
new file mode 100644
index 0000000..f3a4f46
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/wdate-time.F90
@@ -0,0 +1,6 @@
+! { dg-do compile }
+! { dg-options "-Wdate-time" }
+print *, __TIMESTAMP__ ! { dg-warning "might prevent reproduce builds" }
+print *, __TIME__ ! { dg-warning "might prevent reproduce builds" }
+print *, __DATE__ ! { dg-warning "might prevent reproduce builds" }
+end