diff options
Diffstat (limited to 'gcc-4.4.0/contrib/check_warning_flags.sh')
-rwxr-xr-x | gcc-4.4.0/contrib/check_warning_flags.sh | 180 |
1 files changed, 0 insertions, 180 deletions
diff --git a/gcc-4.4.0/contrib/check_warning_flags.sh b/gcc-4.4.0/contrib/check_warning_flags.sh deleted file mode 100755 index eb5383273..000000000 --- a/gcc-4.4.0/contrib/check_warning_flags.sh +++ /dev/null @@ -1,180 +0,0 @@ -#! /bin/sh -# -# Check that the warning flags documented in invoke.texi match up -# with what the compiler accepts. -# -# Copyright (C) 2008, 2009 Free Software Foundation, Inc. -# Written by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>. -# -# This script is Free Software, and it can be copied, distributed and -# modified as defined in the GNU General Public License. A copy of -# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html -# -# Call this script as -# check_warning_flags.sh path/to/invoke.texi -# with CC set to the compiler to be tested. -# The script scribbles in the current directory. - -progname=`echo "$0" | sed 's,.*/,,'` -usage () -{ - echo "usage: $progname path/to/gcc/doc" - echo "set \$CC to the compiler to be checked" - exit 1 -} - -ret=0 -LC_ALL=C -export LC_ALL -: ${CC=gcc} -test $# = 1 || usage -gcc_docdir=$1 -invoke_texi=$gcc_docdir/invoke.texi -test -r "$invoke_texi" || { - echo "$progname: error: cannot read '$invoke_texi'" >&2 - usage -} -filebase=check_warning_flags_file$$ -stderr=check_warning_flags_stderr$$ - -remove_problematic_flags=' - /-Wlarger-than-/d - /-Wframe-larger-than/d - /-Wdisallowed-function-list/d - /-W[alp],/d - /-Werror/d - /-Wpadded/d - /pedantic-ms-format/d - /=/d' - -# Ensure that indexed warnings are accepted. -set x `sed '/^@opindex W/{ - s/^@opindex /-/ - '"$remove_problematic_flags"' - /-W[alp]$/d - p -} -d' <"$invoke_texi"` -shift -: >$filebase.c -$CC -c $filebase.c "$@" 2>&1 | - grep -v 'command line option.*is valid for.*but not for' >$stderr -if test -s $stderr; then - echo "options listed in @opindex but not accepted by the compiler:" >&2 - cat $stderr >&2 - ret=1 -fi -rm -f $filebase.c $stderr - -# Check documentation of warning options. -for lang in c c++ objc obj-c++; do - case $lang in - c) ext=c; langmatch='[^-]C[^+].*only' ;; - c++) ext=C; langmatch='[^-]C++.*only' ;; - objc) ext=m; langmatch='Objective-C[^+].*only' ;; - obj-c++) ext=M; langmatch='Objective-C++.*only' ;; - esac - file=$filebase.$ext - : >$file - $CC -c $file 2>$stderr - if grep 'not installed on this system' $stderr >/dev/null || - grep 'installation problem, cannot exec' $stderr >/dev/null || - grep 'error trying to exec' $stderr >/dev/null - then - echo "$progname: $CC is not configured for language $lang, skipping checks" >&2 - rm -f $file $filebase.o $filebase.obj $stderr - continue - fi - - # Verify good warning flags. - set x `sed ' - t a - :a - /^@item -W/{ - /'"$langmatch"'/b x - / only)/d - b x - } - d - :x - '"$remove_problematic_flags"' - s/^@item // - s/ .*// - ' <"$invoke_texi"` - shift - $CC -c $file -O "$@" 2>$stderr - if test -s $stderr; then - echo failures: >&2 - cat $stderr >&2 - ret=1 - fi - - # Verify bad warning flags. - set x `sed ' - t a - :a - /^@item -W/{ - / only)/!d - /'"$langmatch"'/d - b x - } - d - :x - '"$remove_problematic_flags"' - s/^@item // - s/ .*// - ' <"$invoke_texi"` - shift - $CC -c $file -O "$@" 2>$stderr - # cat $stderr >&2 - test $# = `grep 'command line option.*valid.*but not for' <$stderr | wc -l` || { - for warning - do - grep "command line option.*$warning.*valid" <$stderr >&2 || - echo "valid for $lang but not annotated as such: $warning" - done - ret=1 - } - 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 |