mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-16 18:40:57 +08:00
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
This commit is contained in:
parent
df1c87913c
commit
e8ff5196a8
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 ())
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
6
gcc/testsuite/g++.dg/warn/wdate-time.C
Normal file
6
gcc/testsuite/g++.dg/warn/wdate-time.C
Normal file
@ -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" } */
|
6
gcc/testsuite/gcc.dg/wdate-time.c
Normal file
6
gcc/testsuite/gcc.dg/wdate-time.c
Normal file
@ -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" } */
|
6
gcc/testsuite/gfortran.dg/wdate-time.F90
Normal file
6
gcc/testsuite/gfortran.dg/wdate-time.F90
Normal file
@ -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
|
@ -1,6 +1,14 @@
|
||||
2013-11-05 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
* 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.
|
||||
|
||||
2013-10-31 Edward Smith-Rowland <3dw4rd@verizon.net>
|
||||
|
||||
Implement C++14 digit separators.
|
||||
Implement C++14 digit separators.
|
||||
* include/cpplib.h (cpp_options): Add digit_separators flag.
|
||||
* internal.h (DIGIT_SEP(c)): New macro.
|
||||
* expr.c (cpp_classify_number): Check improper placement of digit sep;
|
||||
|
@ -337,6 +337,9 @@ struct cpp_options
|
||||
/* Nonzero means warn if slash-star appears in a comment. */
|
||||
unsigned char warn_comments;
|
||||
|
||||
/* Nonzero means to warn about __DATA__, __TIME__ and __TIMESTAMP__ usage. */
|
||||
unsigned char warn_date_time;
|
||||
|
||||
/* Nonzero means warn if a user-supplied include directory does not
|
||||
exist. */
|
||||
unsigned char warn_missing_include_dirs;
|
||||
@ -925,7 +928,8 @@ enum {
|
||||
CPP_W_NORMALIZE,
|
||||
CPP_W_INVALID_PCH,
|
||||
CPP_W_WARNING_DIRECTIVE,
|
||||
CPP_W_LITERAL_SUFFIX
|
||||
CPP_W_LITERAL_SUFFIX,
|
||||
CPP_W_DATE_TIME
|
||||
};
|
||||
|
||||
/* Output a diagnostic of some kind. */
|
||||
|
@ -193,6 +193,7 @@ cpp_create_reader (enum c_lang lang, cpp_hash_table *table,
|
||||
CPP_OPTION (pfile, canonical_system_headers)
|
||||
= ENABLE_CANONICAL_SYSTEM_HEADERS;
|
||||
CPP_OPTION (pfile, ext_numeric_literals) = 1;
|
||||
CPP_OPTION (pfile, warn_date_time) = 0;
|
||||
|
||||
/* Default CPP arithmetic to something sensible for the host for the
|
||||
benefit of dumb users like fix-header. */
|
||||
|
@ -232,6 +232,10 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
|
||||
|
||||
case BT_TIMESTAMP:
|
||||
{
|
||||
if (CPP_OPTION (pfile, warn_date_time))
|
||||
cpp_warning (pfile, CPP_W_DATE_TIME, "Macro \"%s\" might prevent "
|
||||
"reproduce builds", NODE_NAME (node));
|
||||
|
||||
cpp_buffer *pbuffer = cpp_get_buffer (pfile);
|
||||
if (pbuffer->timestamp == NULL)
|
||||
{
|
||||
@ -325,6 +329,9 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
|
||||
|
||||
case BT_DATE:
|
||||
case BT_TIME:
|
||||
if (CPP_OPTION (pfile, warn_date_time))
|
||||
cpp_warning (pfile, CPP_W_DATE_TIME, "Macro \"%s\" might prevent "
|
||||
"reproduce builds", NODE_NAME (node));
|
||||
if (pfile->date == NULL)
|
||||
{
|
||||
/* Allocate __DATE__ and __TIME__ strings from permanent
|
||||
|
Loading…
x
Reference in New Issue
Block a user