public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: Neil Booth <neil@daikokuya.co.uk>
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org,
Subject: Re: preprocessor/7029: preprocessor should ignore #warning with -M
Date: Mon, 01 Jul 2002 14:56:00 -0000	[thread overview]
Message-ID: <20020701215604.1899.qmail@sources.redhat.com> (raw)

The following reply was made to PR preprocessor/7029; it has been noted by GNATS.

From: Neil Booth <neil@daikokuya.co.uk>
To: Zack Weinberg <zack@codesourcery.com>
Cc: wolfgang.bangerth@iwr.uni-heidelberg.de, gcc-gnats@gcc.gnu.org,
	gcc-patches@gcc.gnu.org
Subject: Re: preprocessor/7029: preprocessor should ignore #warning with -M
Date: Mon, 1 Jul 2002 22:47:10 +0100

 Neil Booth wrote:-
 
 > > Well, I think it might be reasonable for -M switches that inhibit
 > > compilation to imply -w.  Presumably the user will get all the
 > > warnings in due course as part of the real compilation.
 > 
 > Fair enough; I'll create a patch.
 
 Here it is.  I'll apply it after a successful bootstrap.  I took
 the opportunity to clarify some comments and move output
 suppression to what I think is a better place than the option handler.
 
 Neil.
 
 	* cppinit.c (cpp_handle_option): Move suppression of output
 	for -M and -MM to...
 	(cpp_post_options): ...here.  If we're outputting dependencies,
 	suppress warnings with an implicit "-w".
 doc:
 	* cppopts.texi: Update.
 testsuite:
 	* gcc.dg/cpp/cmdlne-M.c: New test.
 
 Index: cppinit.c
 ===================================================================
 RCS file: /cvs/gcc/gcc/gcc/cppinit.c,v
 retrieving revision 1.242
 diff -u -p -r1.242 cppinit.c
 --- cppinit.c	19 Jun 2002 05:40:04 -0000	1.242
 +++ cppinit.c	1 Jul 2002 21:44:46 -0000
 @@ -1531,11 +1531,9 @@ cpp_handle_option (pfile, argc, argv)
  	     depends on this.  Preprocessed output occurs if -MD, -MMD
  	     or environment var dependency generation is used.  */
  	  CPP_OPTION (pfile, print_deps) = 2;
 -	  CPP_OPTION (pfile, no_output) = 1;
  	  break;
  	case OPT_MM:
  	  CPP_OPTION (pfile, print_deps) = 1;
 -	  CPP_OPTION (pfile, no_output) = 1;
  	  break;
  	case OPT_MF:
  	  CPP_OPTION (pfile, deps_file) = arg;
 @@ -1794,14 +1792,14 @@ cpp_post_options (pfile)
    if (CPP_OPTION (pfile, traditional))
      CPP_OPTION (pfile, show_column) = 0;
  
 -  /* -dM makes no normal output.  This is set here so that -dM -dD
 -     works as expected.  */
 -  if (CPP_OPTION (pfile, dump_macros) == dump_only)
 +  /* -dM and dependencies suppress normal output; do it here so that
 +     the last -d[MDN] switch overrides earlier ones.  */
 +  if (CPP_OPTION (pfile, dump_macros) == dump_only
 +      || CPP_OPTION (pfile, print_deps))
      CPP_OPTION (pfile, no_output) = 1;
  
 -  /* Disable -dD, -dN and -dI if we should make no normal output
 -     (such as with -M). Allow -M -dM since some software relies on
 -     this.  */
 +  /* Disable -dD, -dN and -dI if normal output is suppressed.  Allow
 +     -dM since at least glibc relies on -M -dM to work.  */
    if (CPP_OPTION (pfile, no_output))
      {
        if (CPP_OPTION (pfile, dump_macros) != dump_only)
 @@ -1809,17 +1807,17 @@ cpp_post_options (pfile)
        CPP_OPTION (pfile, dump_includes) = 0;
      }
  
 -  /* We need to do this after option processing and before
 -     cpp_start_read, as cppmain.c relies on the options->no_output to
 -     set its callbacks correctly before calling cpp_start_read.  */
 +  /* Intialize, and check environment variables for, dependency
 +     output.  */
    init_dependency_output (pfile);
  
 -  /* After checking the environment variables, check if -M or -MM has
 -     not been specified, but other -M options have.  */
 -  if (CPP_OPTION (pfile, print_deps) == 0 &&
 -      (CPP_OPTION (pfile, print_deps_missing_files)
 -       || CPP_OPTION (pfile, deps_file)
 -       || CPP_OPTION (pfile, deps_phony_targets)))
 +  /* If we're outputting dependencies then inhibit warnings, otherwise
 +     complain if other -M options have been given.  */
 +  if (CPP_OPTION (pfile, print_deps))
 +    CPP_OPTION (pfile, inhibit_warnings) = 1;
 +  else if (CPP_OPTION (pfile, print_deps_missing_files)
 +	   || CPP_OPTION (pfile, deps_file)
 +	   || CPP_OPTION (pfile, deps_phony_targets))
      cpp_error (pfile, DL_ERROR,
  	       "you must additionally specify either -M or -MM");
  }
 Index: testsuite/gcc.dg/cpp/cmdlne-M.c
 ===================================================================
 RCS file: testsuite/gcc.dg/cpp/cmdlne-M.c
 diff -N testsuite/gcc.dg/cpp/cmdlne-M.c
 --- /dev/null	1 Jan 1970 00:00:00 -0000
 +++ testsuite/gcc.dg/cpp/cmdlne-M.c	1 Jul 2002 21:44:46 -0000
 @@ -0,0 +1,8 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.  */
 +
 +/* { dg-do preprocess } */
 +/* { dg-options "-M" } */
 +
 +/* Test that dependency output suppresses warnings by implying -w.  */
 +
 +#warning bogus /* { dg-bogus "warning" "warning not suppressed" } */
 Index: doc/cppopts.texi
 ===================================================================
 RCS file: /cvs/gcc/gcc/gcc/doc/cppopts.texi,v
 retrieving revision 1.6
 diff -u -p -r1.6 cppopts.texi
 --- doc/cppopts.texi	8 May 2002 21:21:19 -0000	1.6
 +++ doc/cppopts.texi	1 Jul 2002 21:44:46 -0000
 @@ -178,7 +178,8 @@ rules you should explicitly specify the 
  @env{DEPENDENCIES_OUTPUT} (@pxref{Environment Variables}).  Debug output
  will still be sent to the regular output stream as normal.
  
 -Passing @option{-M} to the driver implies @option{-E}.
 +Passing @option{-M} to the driver implies @option{-E}, and suppresses
 +warnings with an implicit @option{-w}.
  
  @item -MM
  @opindex MM


             reply	other threads:[~2002-07-01 21:56 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-01 14:56 Neil Booth [this message]
  -- strict thread matches above, loose matches on Subject: below --
2002-07-02 15:35 neil
2002-07-01 22:56 Neil Booth
2002-07-01 15:56 Zack Weinberg
2002-07-01 14:36 Zack Weinberg
2002-07-01 14:26 Neil Booth
2002-07-01 14:26 Zack Weinberg
2002-07-01 14:16 Neil Booth
2002-06-14  6:06 wolfgang.bangerth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20020701215604.1899.qmail@sources.redhat.com \
    --to=neil@daikokuya.co.uk \
    --cc=gcc-prs@gcc.gnu.org \
    --cc=nobody@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).