From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31874 invoked by alias); 20 Feb 2008 21:13:12 -0000 Received: (qmail 31857 invoked by uid 22791); 20 Feb 2008 21:13:10 -0000 X-Spam-Check-By: sourceware.org Received: from merkur.ins.uni-bonn.de (HELO merkur.ins.uni-bonn.de) (131.220.223.13) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 20 Feb 2008 21:12:43 +0000 Received: from localhost.localdomain (xdsl-87-78-167-220.netcologne.de [87.78.167.220]) by merkur.ins.uni-bonn.de (Postfix) with ESMTP id 9C447400000BC; Wed, 20 Feb 2008 22:12:40 +0100 (CET) Received: from ralf by localhost.localdomain with local (Exim 4.63) (envelope-from ) id 1JRwF2-00015v-BW; Wed, 20 Feb 2008 22:12:36 +0100 Date: Wed, 20 Feb 2008 21:32:00 -0000 From: Ralf Wildenhues To: gcc-patches@gcc.gnu.org, fortran@gcc.gnu.org Subject: [PATCH] Fix -W* documentation, update to contrib/check_warning_flags.sh Message-ID: <20080220211235.GD3640@ins.uni-bonn.de> Mail-Followup-To: Ralf Wildenhues , gcc-patches@gcc.gnu.org, fortran@gcc.gnu.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.13 (2006-08-11) X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2008-02/txt/msg00884.txt.bz2 The patch below enables check_warning_flags.sh to check that warnings listed by 'gcc -v --help' are indeed accepted by the compiler, and listed in at least one of the compiler manuals. It turned up four warnings that needed treatment: * -Werror-implicit-function-declaration is deprecated in favor of -Werror=implicit-function-declaration, Fixed in the check script by ignoring this flag. * -Wsynth is void of semantics (PR #18644). Fixed by also ignoring, but also adjusting -v --help output to document this as deprecated * warning -Wformat-contains-nul not documented warning -Wline-truncation not documented I have documented these two in the patch below. OK for trunk? Thanks, Ralf contrib/ChangeLog: 2008-02-20 Ralf Wildenhues * check_warning_flags.sh: Instead of invoke.texi, take the path to the doc directory as argument. Check that warnings listed in 'gcc --help' are accepted by the compiler, and listed in the manuals. gcc/ChangeLog: 2008-02-20 Ralf Wildenhues * c.opt (Wsynth): Deprecate. * doc/invoke.texi (Option Summary, Warning Options): Document -Wno-format-contains-nul. gcc/fortran/ChangeLog: 2008-02-20 Ralf Wildenhues * invoke.texi (Error and Warning Options): Document -Wline-truncation. diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 0a67785..b0f4bc4 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -455,6 +455,11 @@ non-whitespace character after the ampersand that initiated the continuation. @cindex warnings, character truncation Warn when a character assignment will truncate the assigned string. +@item -Wline-truncation +@opindex @code{Wline-truncation} +@cindex warnings, line truncation +Warn when a source code line will be truncated. + @item -Wconversion @opindex @code{Wconversion} @cindex warnings, conversion diff --git a/gcc/c.opt b/gcc/c.opt index 3704519..bbe92e8 100644 --- a/gcc/c.opt +++ b/gcc/c.opt @@ -427,7 +427,7 @@ Warn if type signatures of candidate methods do not match exactly Wsynth C++ ObjC++ Var(warn_synth) Warning -Warn when synthesis behavior differs from Cfront +Deprecated. This switch has no effect Wsystem-headers C ObjC C++ ObjC++ Warning diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 1cb14ea..79ddad9 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -235,7 +235,7 @@ Objective-C and Objective-C++ Dialects}. -Wempty-body -Wno-endif-labels @gol -Werror -Werror=* @gol -Wfatal-errors -Wfloat-equal -Wformat -Wformat=2 @gol --Wno-format-extra-args -Wformat-nonliteral @gol +-Wno-format-contains-nul -Wno-format-extra-args -Wformat-nonliteral @gol -Wformat-security -Wformat-y2k -Wignored-qualifiers @gol -Wimplicit -Wimplicit-function-declaration -Wimplicit-int @gol -Wimport -Wno-import -Winit-self -Winline @gol @@ -2808,6 +2808,12 @@ aspects of format checking, the options @option{-Wformat-y2k}, If @option{-Wformat} is specified, also warn about @code{strftime} formats which may yield only a two-digit year. +@item -Wno-format-contains-nul +@opindex Wno-format-contains-nul +@opindex Wformat-contains-nul +If @option{-Wformat} is specified, do not warn about format strings that +contain NUL bytes. + @item -Wno-format-extra-args @opindex Wno-format-extra-args @opindex Wformat-extra-args diff --git a/contrib/check_warning_flags.sh b/contrib/check_warning_flags.sh index 95640f7..fcd0f37 100755 --- a/contrib/check_warning_flags.sh +++ b/contrib/check_warning_flags.sh @@ -18,7 +18,7 @@ progname=`echo "$0" | sed 's,.*/,,'` usage () { - echo "usage: $progname path/to/invoke.texi" + echo "usage: $progname path/to/gcc/doc" echo "set \$CC to the compiler to be checked" exit 1 } @@ -28,7 +28,8 @@ LC_ALL=C export LC_ALL : ${CC=gcc} test $# = 1 || usage -invoke_texi=$1 +gcc_docdir=$1 +invoke_texi=$gcc_docdir/invoke.texi test -r "$invoke_texi" || { echo "$progname: error: cannot read '$invoke_texi'" >&2 usage @@ -133,4 +134,44 @@ for lang in c c++ objc obj-c++; do } rm -f $file $filebase.o $filebase.obj $stderr done + + +remove_problematic_help_flags=' + /^W$/d + /^W[alp]$/d + /^Werror-implicit-function-declaration$/d + /^Wsynth$/d + /-$/d + /=/d' +help_flags=` + $CC --help -v 2>/dev/null | tr ' ' '\n' | + sed -n ' + b a + :a + s/^-\(W[^<,]*\).*/\1/ + t x + d + :x + '"$remove_problematic_help_flags"' + p' | sort -u` +: >$filebase.c +for flag in $help_flags; do + $CC -c $filebase.c -$flag 2>/dev/null || { + echo "warning -$flag not supported" >&2 + ret=1 + } + grep "@item.*$flag" $gcc_docdir/../*/*.texi >/dev/null || { + # For @item, we are satisfied with either -Wfoo or -Wno-foo. + inverted_flag=`echo "$flag" | sed ' + s/^Wno-/W/ + t + s/^W/Wno-/'` + grep "@item.*$inverted_flag" $gcc_docdir/../*/*.texi >/dev/null || { + echo "warning -$flag not documented in $gcc_docdir/../*/*.texi" >&2 + ret=1 + } + } +done +rm -f $filebase.c $filebase.o + exit $ret