aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.2.1/contrib/warn_summary
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.2.1/contrib/warn_summary')
-rwxr-xr-xgcc-4.2.1/contrib/warn_summary210
1 files changed, 0 insertions, 210 deletions
diff --git a/gcc-4.2.1/contrib/warn_summary b/gcc-4.2.1/contrib/warn_summary
deleted file mode 100755
index 253d244c3..000000000
--- a/gcc-4.2.1/contrib/warn_summary
+++ /dev/null
@@ -1,210 +0,0 @@
-#!/bin/sh
-#
-# This script parses the output of a gcc bootstrap when using warning
-# flags and determines various statistics.
-#
-# usage: warn_summary [-llf] [-s stage] [-nosub|-ch|-cp|-f|-fortran|-java|-ada|-intl|-fixinc]
-# [-pass|-wpass] [file(s)]
-#
-# -llf
-# Filter out long lines from the bootstrap output before any other
-# action. This is useful for systems with broken awks/greps which choke
-# on long lines. It is not done by default as it sometimes slows things
-# down.
-#
-# -s number
-# Take warnings from stage "Number". Stage 0 means show warnings from
-# before and after the gcc bootstrap directory. E.g. libraries, etc.
-# This presupposes using "gcc -W*" for the stage1 compiler.
-#
-# -nosub
-# Only show warnings from the gcc top level directory.
-# -ch|-cp|-f|-fortran|-java|-ada|-intl|-fixinc
-# Only show warnings from the specified gcc subdirectory.
-# These override each other so only the last one passed takes effect.
-#
-# -pass
-# Pass through the bootstrap output after filtering stage and subdir
-# (useful for manual inspection.) This is all lines, not just warnings.
-# -wpass
-# Pass through only warnings from the bootstrap output after filtering
-# stage and subdir.
-#
-# By Kaveh Ghazi (ghazi@caip.rutgers.edu) 12/13/97.
-
-
-# Some awks choke on long lines, sed seems to do a better job.
-# Truncate lines > 255 characters. RE '.\{255,\}' doesn't seem to work. :-(
-# Only do this if -llf was specified, because it can really slow things down.
-longLineFilter()
-{
- if test -z "$llf" ; then
- cat
- else
- sed 's/^\(...............................................................................................................................................................................................................................................................\).*/\1/'
- fi
-}
-
-# This function does one of three things. It either passes through
-# all warning data, or passes through gcc toplevel warnings, or passes
-# through a particular subdirectory set of warnings.
-subdirectoryFilter()
-{
- longLineFilter | (
- if test -z "$filter" ; then
- # Pass through all lines.
- cat
- else
- if test "$filter" = nosub ; then
- # Omit all subdirectories.
- egrep -v '/gcc/(ch|cp|f|fortran|java|ada|intl|fixinc)/'
- else
- # Pass through only subdir $filter.
- grep "/gcc/$filter/"
- fi
- fi )
-}
-
-# This function displays all lines from stageN of the bootstrap. If
-# stage==0, then show lines prior to stage1 and lines from after the last
-# stage. I.e. utilities, libraries, etc.
-stageNfilter()
-{
- if test "$stageN" -lt 1 ; then
- # stage "0" means check everything *but* gcc.
- $AWK "BEGIN{t=1} ; /^Bootstrapping the compiler/{t=0} ; /^Building runtime libraries/{t=1} ; {if(t==1)print}"
- else
- if test "$stageN" -eq 1 ; then
- $AWK "/^Bootstrapping the compiler|^Building the C and C\+\+ compiler/{t=1} ; /stage$stageN/{t=0} ; {if(t==1)print}"
- else
- stageNminus1=`expr $stageN - 1`
- $AWK "/stage${stageNminus1}\//{t=1} ; /stage$stageN/{t=0} ; {if(t==1)print}"
- fi
- fi
-}
-
-# This function displays lines containing warnings.
-warningFilter()
-{
- grep ' warning: '
-}
-
-# This function replaces `xxx' with `???', where xxx is usually some
-# variable or function name. This allows similar warnings to be
-# counted together when summarizing. However it avoids replacing
-# certain C keywords which are known appear in various messages.
-
-keywordFilter() {
- sed 's/.*warning: //;
- s/`\(int\)'"'"'/"\1"/g;
- s/`\(long\)'"'"'/"\1"/g;
- s/`\(char\)'"'"'/"\1"/g;
- s/`\(inline\)'"'"'/"\1"/g;
- s/`\(else\)'"'"'/"\1"/g;
- s/`\(return\)'"'"'/"\1"/g;
- s/`\(static\)'"'"'/"\1"/g;
- s/`\(extern\)'"'"'/"\1"/g;
- s/`\(const\)'"'"'/"\1"/g;
- s/`\(noreturn\)'"'"'/"\1"/g;
- s/`\(longjmp\)'"'"' or `\(vfork\)'"'"'/"\1" or "\2"/g;
- s/'"[\`'][^']*'/"'"???"/g;
- s/.*format, .* arg (arg [0-9][0-9]*)/??? format, ??? arg (arg ???)/;
- s/\([( ]\)arg [0-9][0-9]*\([) ]\)/\1arg ???\2/;
- s/"\([^"]*\)"/`\1'"'"'/g'
-}
-
-# This function strips out relative pathnames for source files printed
-# by the warningFilter function. This is done so that as the snapshot
-# directory name changes every week, the output of this program can be
-# compared to previous runs without spurious diffs caused by source
-# directory name changes.
-
-srcdirFilter()
-{
- sed '
-s%^[^ ]*/\(gcc/\)%\1%;
-s%^[^ ]*/\(include/\)%\1%;
-s%^[^ ]*/\(texinfo/\)%\1%;
-s%^[^ ]*/\(fastjar/\)%\1%;
-s%^[^ ]*/\(zlib/\)%\1%;
-s%^[^ ]*/\(lib[a-z23+-]*/\)%\1%;'
-}
-
-# Start the main section.
-
-usage="usage: `basename $0` [-llf] [-s stage] [-nosub|-ch|-cp|-f|-fortran|-java|-ada|-intl|-fixinc] [-pass|-wpass] [file(s)]"
-stageN=3
-tmpfile=/tmp/tmp-warn.$$
-
-# Remove $tmpfile on exit and various signals.
-trap "rm -f $tmpfile" 0
-trap "rm -f $tmpfile ; exit 1" 1 2 3 5 9 13 15
-
-# Find a good awk.
-if test -z "$AWK" ; then
- for AWK in gawk nawk awk ; do
- if type $AWK 2>&1 | grep 'not found' > /dev/null 2>&1 ; then
- :
- else
- break
- fi
- done
-fi
-
-# Parse command line arguments.
-while test -n "$1" ; do
- case "$1" in
- -llf) llf=1 ; shift ;;
- -s) if test -z "$2"; then echo $usage 1>&2; exit 1; fi
- stageN="$2"; shift 2 ;;
- -s*) stageN="`expr $1 : '-s\(.*\)'`" ; shift ;;
- -nosub|-ch|-cp|-f|-fortran|-java|-ada|-intl|-fixinc) filter="`expr $1 : '-\(.*\)'`" ; shift ;;
- -pass) pass=1 ; shift ;;
- -wpass) pass=w ; shift ;;
- -*) echo $usage 1>&2 ; exit 1 ;;
- *) break ;;
- esac
-done
-
-# Check for a valid value of $stageN.
-case "$stageN" in
- [0-9]) ;;
- *) echo "Stage <$stageN> must be in the range [0..9]." 1>&2 ; exit 1 ;;
-esac
-
-for file in "$@" ; do
-
- stageNfilter < $file | subdirectoryFilter > $tmpfile
-
- # (Just) show me the warnings.
- if test "$pass" != '' ; then
- if test "$pass" = w ; then
- warningFilter < $tmpfile
- else
- cat $tmpfile
- fi
- continue
- fi
-
- if test -z "$filter" ; then
- echo "Counting all warnings,"
- else
- if test "$filter" = nosub ; then
- echo "Counting non-subdirectory warnings,"
- else
- echo "Counting warnings in the gcc/$filter subdirectory,"
- fi
- fi
- count=`warningFilter < $tmpfile | wc -l`
- echo there are $count warnings in stage$stageN of this bootstrap.
-
- echo
- echo Number of warnings per file:
- warningFilter < $tmpfile | srcdirFilter | $AWK -F: '{print$1}' | sort | \
- uniq -c | sort -nr
-
- echo
- echo Number of warning types:
- warningFilter < $tmpfile | keywordFilter | sort | uniq -c | sort -nr
-
-done