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 22:56:00 -0000	[thread overview]
Message-ID: <20020702055607.8424.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: Tue, 2 Jul 2002 06:48:15 +0100

 Zack Weinberg wrote:-
 
 > On Mon, Jul 01, 2002 at 10:47:10PM +0100, Neil Booth wrote:
 > > +  /* 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;
 > 
 > This will suppress warnings when -MD or -MF is in use, won't it?  We
 > still want them then (since we're proceeding to do the compilation,
 > and the user will never see them otherwise).
 
 Damn, yes, this area is a right minefield.  The sad thing is that the
 patch bootstrapped without regressions even though the move of
 no_output suffers the same problem.  We have poor coverage of -M
 and friends still, despite Jakub's new testcases.
 
 Neil.
 
 	* cppinit.c (cpp_handle_option):  Suppress warnings with an
 	implicit "-w" for "-M" and "-MM".
 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	2 Jul 2002 05:50:59 -0000
 @@ -1532,10 +1532,12 @@ cpp_handle_option (pfile, argc, argv)
  	     or environment var dependency generation is used.  */
  	  CPP_OPTION (pfile, print_deps) = 2;
  	  CPP_OPTION (pfile, no_output) = 1;
 +	  CPP_OPTION (pfile, inhibit_warnings) = 1;
  	  break;
  	case OPT_MM:
  	  CPP_OPTION (pfile, print_deps) = 1;
  	  CPP_OPTION (pfile, no_output) = 1;
 +	  CPP_OPTION (pfile, inhibit_warnings) = 1;
  	  break;
  	case OPT_MF:
  	  CPP_OPTION (pfile, deps_file) = arg;
 @@ -1794,14 +1796,13 @@ 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.  */
 +  /* -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, 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 +1810,16 @@ 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 not outputting dependencies, complain if other -M
 +     options have been given.  */
 +  if (!CPP_OPTION (pfile, print_deps)
 +      && (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	2 Jul 2002 05:50:59 -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	2 Jul 2002 05:50:59 -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-02  5:56 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-01 22:56 Neil Booth [this message]
  -- strict thread matches above, loose matches on Subject: below --
2002-07-02 15:35 neil
2002-07-01 15:56 Zack Weinberg
2002-07-01 14:56 Neil Booth
2002-07-01 14:36 Zack Weinberg
2002-07-01 14:26 Zack Weinberg
2002-07-01 14:26 Neil Booth
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=20020702055607.8424.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).