diff options
author | Paolo Bonzini <bonzini@gnu.org> | 2016-11-23 10:06:07 +0000 |
---|---|---|
committer | Paolo Bonzini <bonzini@gcc.gnu.org> | 2016-11-23 10:06:07 +0000 |
commit | fb2675cb4683a430fb63af44713cd9d2fcd77b97 (patch) | |
tree | 08fdcd7bc342d222856765ef9f8cff24381b75a7 /gcc/testsuite | |
parent | baf53c4739a68b3307ce28bfeffc903fa641b946 (diff) | |
download | gcc-fb2675cb4683a430fb63af44713cd9d2fcd77b97.zip gcc-fb2675cb4683a430fb63af44713cd9d2fcd77b97.tar.gz gcc-fb2675cb4683a430fb63af44713cd9d2fcd77b97.tar.bz2 |
system.h (HAVE_DESIGNATED_INITIALIZERS, [...]): Do not use "defined" in macros.
gcc:
2016-11-23 Paolo Bonzini <bonzini@gnu.org>
* system.h (HAVE_DESIGNATED_INITIALIZERS,
HAVE_DESIGNATED_UNION_INITIALIZERS): Do not use
"defined" in macros.
* doc/cpp.texi (Defined): Mention -Wexpansion-to-defined.
* doc/cppopts.texi (Invocation): Document -Wexpansion-to-defined.
* doc/invoke.texi (Warning Options): Document -Wexpansion-to-defined.
gcc/c-family:
2016-11-23 Paolo Bonzini <bonzini@gnu.org>
* c.opt (Wexpansion-to-defined): New.
gcc/testsuite:
2016-11-23 Paolo Bonzini <bonzini@gnu.org>
* gcc.dg/cpp/defined.c: Mark newly introduced warnings and
adjust for warning->pedwarn change.
* gcc.dg/cpp/defined-syshdr.c,
gcc.dg/cpp/defined-Wexpansion-to-defined.c,
gcc.dg/cpp/defined-Wextra-Wno-expansion-to-defined.c,
gcc.dg/cpp/defined-Wextra.c,
gcc.dg/cpp/defined-Wno-expansion-to-defined.c: New testcases.
libcpp:
2016-11-23 Paolo Bonzini <bonzini@gnu.org>
* include/cpplib.h (struct cpp_options): Add new member
warn_expansion_to_defined.
(CPP_W_EXPANSION_TO_DEFINED): New enum member.
* expr.c (parse_defined): Warn for all uses of "defined"
in macros, and tie warning to CPP_W_EXPANSION_TO_DEFINED.
Make it a pedwarning instead of a warning.
* system.h (HAVE_DESIGNATED_INITIALIZERS): Do not use
"defined" in macros.
From-SVN: r242743
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/defined-Wexpansion-to-defined.c | 30 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/defined-Wextra-Wno-expansion-to-defined.c | 30 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/defined-Wextra.c | 30 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/defined-Wno-expansion-to-defined.c | 30 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/defined-syshdr.c | 27 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/defined.c | 14 |
7 files changed, 164 insertions, 7 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 55644cd..b9ccccc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2016-11-23 Paolo Bonzini <bonzini@gnu.org> + + * gcc.dg/cpp/defined.c: Mark newly introduced warnings and + adjust for warning->pedwarn change. + * gcc.dg/cpp/defined-syshdr.c, + gcc.dg/cpp/defined-Wexpansion-to-defined.c, + gcc.dg/cpp/defined-Wextra-Wno-expansion-to-defined.c, + gcc.dg/cpp/defined-Wextra.c, + gcc.dg/cpp/defined-Wno-expansion-to-defined.c: New testcases. + 2016-11-23 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> * gcc.dg/uninit-19.c: Add -finline-small-functions for avr. diff --git a/gcc/testsuite/gcc.dg/cpp/defined-Wexpansion-to-defined.c b/gcc/testsuite/gcc.dg/cpp/defined-Wexpansion-to-defined.c new file mode 100644 index 0000000..9823c76 --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/defined-Wexpansion-to-defined.c @@ -0,0 +1,30 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. */ + +/* { dg-do preprocess } */ +/* { dg-options "-Wexpansion-to-defined" } */ + +/* Use of defined in different contexts. */ + +/* Source: Neil Booth, 29 Oct 2000, Zack Weinberg 11 Dec 2000. */ + +#define Z + +#define bad0 defined Z +#if !bad0 /* { dg-warning "may not be portable" } */ +#error Z is defined +#endif + +#define bad1 defined +#if !bad1 Z /* { dg-warning "may not be portable" } */ +#error Z is defined +#endif + +#if !bad1 (Z) /* { dg-warning "may not be portable" } */ +#error Z is defined +#endif + +#define bad2 defined (Z +#if !bad2) /* { dg-warning "may not be portable" } */ +#error Z is defined +#endif + diff --git a/gcc/testsuite/gcc.dg/cpp/defined-Wextra-Wno-expansion-to-defined.c b/gcc/testsuite/gcc.dg/cpp/defined-Wextra-Wno-expansion-to-defined.c new file mode 100644 index 0000000..16a641d --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/defined-Wextra-Wno-expansion-to-defined.c @@ -0,0 +1,30 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. */ + +/* { dg-do preprocess } */ +/* { dg-options "-Wextra -Wno-expansion-to-defined" } */ + +/* Use of defined in different contexts. */ + +/* Source: Neil Booth, 29 Oct 2000, Zack Weinberg 11 Dec 2000. */ + +#define Z + +#define bad0 defined Z +#if !bad0 /* { dg-bogus "may not be portable" } */ +#error Z is defined +#endif + +#define bad1 defined +#if !bad1 Z /* { dg-bogus "may not be portable" } */ +#error Z is defined +#endif + +#if !bad1 (Z) /* { dg-bogus "may not be portable" } */ +#error Z is defined +#endif + +#define bad2 defined (Z +#if !bad2) /* { dg-bogus "may not be portable" } */ +#error Z is defined +#endif + diff --git a/gcc/testsuite/gcc.dg/cpp/defined-Wextra.c b/gcc/testsuite/gcc.dg/cpp/defined-Wextra.c new file mode 100644 index 0000000..460a1cb --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/defined-Wextra.c @@ -0,0 +1,30 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. */ + +/* { dg-do preprocess } */ +/* { dg-options "-Wextra" } */ + +/* Use of defined in different contexts. */ + +/* Source: Neil Booth, 29 Oct 2000, Zack Weinberg 11 Dec 2000. */ + +#define Z + +#define bad0 defined Z +#if !bad0 /* { dg-warning "may not be portable" } */ +#error Z is defined +#endif + +#define bad1 defined +#if !bad1 Z /* { dg-warning "may not be portable" } */ +#error Z is defined +#endif + +#if !bad1 (Z) /* { dg-warning "may not be portable" } */ +#error Z is defined +#endif + +#define bad2 defined (Z +#if !bad2) /* { dg-warning "may not be portable" } */ +#error Z is defined +#endif + diff --git a/gcc/testsuite/gcc.dg/cpp/defined-Wno-expansion-to-defined.c b/gcc/testsuite/gcc.dg/cpp/defined-Wno-expansion-to-defined.c new file mode 100644 index 0000000..ddd015b --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/defined-Wno-expansion-to-defined.c @@ -0,0 +1,30 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. */ + +/* { dg-do preprocess } */ +/* { dg-options "-ansi -pedantic-errors -Wno-expansion-to-defined" } */ + +/* Use of defined in different contexts. */ + +/* Source: Neil Booth, 29 Oct 2000, Zack Weinberg 11 Dec 2000. */ + +#define Z + +#define bad0 defined Z +#if !bad0 /* { dg-bogus "may not be portable" } */ +#error Z is defined +#endif + +#define bad1 defined +#if !bad1 Z /* { dg-bogus "may not be portable" } */ +#error Z is defined +#endif + +#if !bad1 (Z) /* { dg-bogus "may not be portable" } */ +#error Z is defined +#endif + +#define bad2 defined (Z +#if !bad2) /* { dg-bogus "may not be portable" } */ +#error Z is defined +#endif + diff --git a/gcc/testsuite/gcc.dg/cpp/defined-syshdr.c b/gcc/testsuite/gcc.dg/cpp/defined-syshdr.c new file mode 100644 index 0000000..9c3846c --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/defined-syshdr.c @@ -0,0 +1,27 @@ +# 1 "defined-syshdr.c" 1 +/* { dg-do preprocess } */ +/* { dg-options "-Wexpansion-to-defined" } */ + +#define defined_outside_sys_hdr defined FOO + +# 36 "some-system-header.h" 1 3 + +#define defined_inside_sys_hdr defined FOO + +/* In a system header, it's acceptable. */ +#if defined_outside_sys_hdr /* { dg-bogus "may not be portable" } */ +#endif + +# 16 "defined-syshdr.c" 2 + +/* Back to _not_ in a system header */ + +#if defined_outside_sys_hdr /* { dg-message "may not be portable" } */ +#endif + +/* Currently we warn about this, but it is probably a good idea not to. */ + +#if defined_inside_sys_hdr /* { dg-bogus "may not be portable" "" { xfail *-*-* } } */ +#endif + +int x; diff --git a/gcc/testsuite/gcc.dg/cpp/defined.c b/gcc/testsuite/gcc.dg/cpp/defined.c index 9a60bdd..44567e4 100644 --- a/gcc/testsuite/gcc.dg/cpp/defined.c +++ b/gcc/testsuite/gcc.dg/cpp/defined.c @@ -21,7 +21,7 @@ /* The behavior of "defined" when it comes from a macro expansion is now documented. */ -#if is_Z_defined +#if is_Z_defined /* { dg-error "may not be portable" } */ #error Macro expanding into defined operator test 1 #endif @@ -31,7 +31,7 @@ #error Z is defined #endif -#if !is_Z_defined +#if !is_Z_defined /* { dg-error "may not be portable" } */ #error Macro expanding into defined operator test 2 #endif @@ -53,7 +53,7 @@ /* The behavior of "defined" when it comes from a macro expansion is now documented. */ -#if is_Z_defined +#if is_Z_defined /* { dg-error "may not be portable" } */ #error Macro expanding into defined operator test 1 #endif @@ -63,23 +63,23 @@ #error Z is defined #endif -#if !is_Z_defined +#if !is_Z_defined /* { dg-error "may not be portable" } */ #error Macro expanding into defined operator test 2 #endif /* Use of defined in different contexts. */ #define bad1 defined -#if !bad1 Z /* { dg-warning "may not be portable" } */ +#if !bad1 Z /* { dg-error "may not be portable" } */ #error Z is defined #endif -#if !bad1 (Z) /* { dg-warning "may not be portable" } */ +#if !bad1 (Z) /* { dg-error "may not be portable" } */ #error Z is defined #endif #define bad2 defined (Z -#if !bad2) /* { dg-warning "may not be portable" } */ +#if !bad2) /* { dg-error "may not be portable" } */ #error Z is defined #endif |