aboutsummaryrefslogtreecommitdiff
path: root/libcpp/expr.c
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2016-11-23 10:06:07 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2016-11-23 10:06:07 +0000
commitfb2675cb4683a430fb63af44713cd9d2fcd77b97 (patch)
tree08fdcd7bc342d222856765ef9f8cff24381b75a7 /libcpp/expr.c
parentbaf53c4739a68b3307ce28bfeffc903fa641b946 (diff)
downloadgcc-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 'libcpp/expr.c')
-rw-r--r--libcpp/expr.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/libcpp/expr.c b/libcpp/expr.c
index 61bc1b2..a4cf750 100644
--- a/libcpp/expr.c
+++ b/libcpp/expr.c
@@ -1031,9 +1031,11 @@ parse_defined (cpp_reader *pfile)
if (node)
{
- if (pfile->context != initial_context && CPP_PEDANTIC (pfile))
- cpp_error (pfile, CPP_DL_WARNING,
- "this use of \"defined\" may not be portable");
+ if ((pfile->context != initial_context
+ || initial_context != &pfile->base_context)
+ && CPP_OPTION (pfile, warn_expansion_to_defined))
+ cpp_pedwarning (pfile, CPP_W_EXPANSION_TO_DEFINED,
+ "this use of \"defined\" may not be portable");
_cpp_mark_macro_used (node);
if (!(node->flags & NODE_USED))