diff options
author | Tobias Burnus <burnus@gcc.gnu.org> | 2013-11-05 21:27:22 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2013-11-05 21:27:22 +0100 |
commit | e8ff5196a89bdd14deca4ecb5d07d60cfd081b11 (patch) | |
tree | 61e37f9572a53a1c03ae93e5c3d39f8427a2be96 /gcc | |
parent | df1c87913c623004b0ecf24ea37874d9addaa8c9 (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/c-family/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-family/c-opts.c | 1 | ||||
-rw-r--r-- | gcc/c-family/c.opt | 4 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 9 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/cpp.c | 6 | ||||
-rw-r--r-- | gcc/fortran/lang.opt | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/wdate-time.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/wdate-time.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/wdate-time.F90 | 6 |
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 |